Compare commits

...

854 Commits
2 ... master

Author SHA1 Message Date
Fabien BOURGEOIS 73f53fdec3 [I18N]GOLEM Member translation issue fixed 2020-01-16 17:01:51 +01:00
Fabien BOURGEOIS a73eafbc02 [IMP]GOLEM Member : analysis with choice between service users and members 2020-01-16 16:53:23 +01:00
Fabien BOURGEOIS 165830363a [FIX]GOLEM Activity Registration Custom Price : model security fix 2019-12-12 04:18:35 +01:00
Fabien BOURGEOIS d0d8d15799 [IMP]GOLEM Member Minor : do not hide minor tab anymoe 2019-12-12 04:17:58 +01:00
Fabien BOURGEOIS 17ddecbbfb [ADD]GOLEM Activity Registration Payment : handle openings
* Open invoices, including those linked to minors ;
* Open payments, including those linked to minors.
2019-07-30 11:53:01 +02:00
Fabien BOURGEOIS 3c4ba1beae [FIX]GOLEM Activity Registration : correct invoice view 2019-07-30 08:53:17 +02:00
Fabien BOURGEOIS 9f36b0a365 [FIX]GOLEM Registration Payment : bad domains
Were made from onchange and not using is_default anymore.
2019-07-29 18:19:21 +02:00
Fabien BOURGEOIS 481ca0994d [IMP]GOLEM : store is_default for members and activities 2019-07-29 18:17:25 +02:00
Fabien BOURGEOIS cd2afd3b22 [FIX]GOLEM Activity Registration : do not allow activity price edit
In activity lines, default price should not be editable : it brings
confusion with registration prices.
2019-02-05 10:17:14 +01:00
Fabien BOURGEOIS cbb4c92b5a [FIX]GOLEM Activity Registration : fix on analysis wizard form 2019-01-21 17:34:40 +01:00
Fabien BOURGEOIS e3f7a6c626 [IMP]GOLEM Analysis : pivot axes, by tag and area.. 2019-01-21 17:06:27 +01:00
Fabien BOURGEOIS 1561a47a83 [FIX]GOLEM Member / Registration analysis fix on reusing current
Current analysis will add / double results with now truncate.
2019-01-21 17:03:36 +01:00
Fabien BOURGEOIS a533a6b7f8 Merge branch 'master' into analysis 2019-01-21 16:46:37 +01:00
Fabien BOURGEOIS 5a4e46f9a5 [ADD]GOLEM Member : service user mailing from tree view 2019-01-21 15:37:44 +01:00
Fabien BOURGEOIS e1ff683494 [IMP]GOLEM Activity Registration Payment : invoice filters
* Last year should not show this year ;
* Translations.
2019-01-21 12:31:37 +01:00
Fabien BOURGEOIS 4898a0d93d [REF][IMP]GOLEM analysis : add flexibility
* On get members ;
* On get registrations and use it for state addon.
2019-01-21 12:20:36 +01:00
Fabien BOURGEOIS 1c3f10ad0a [IMP]GOLEM analysis wizards : use header, not footer in current target 2019-01-21 12:14:43 +01:00
Fabien BOURGEOIS 9705eb0f5a [IMP]GOLEM analysis : use m2o / o2m to avoid full erasal on new analysis 2019-01-21 12:10:22 +01:00
Fabien BOURGEOIS d895203d1a [REF]GOLEM Member : small refactoring on analysis 2019-01-21 11:55:19 +01:00
Fabien BOURGEOIS 9bc6ffd6bb [REF][IMP]GOLEM Activity Registration : analysis small enhancements 2019-01-21 11:52:26 +01:00
Fabien BOURGEOIS fed5da9535 [I18N]GOLEM Activity Registration Custom Price updated translations 2019-01-21 11:21:58 +01:00
Fabien BOURGEOIS 7254c2f737 [ADD]GOLEM Activity Custom Price : service user analysis
* New option for service user analysis with fquotient slices.
2019-01-21 11:19:58 +01:00
Fabien BOURGEOIS 408dc00e1b [REF]GOLEM Member Family Quotient : small refactorings 2019-01-21 11:18:41 +01:00
Fabien BOURGEOIS 6482489aa9 [IMP]GOLEM Member : do not return pivot view per default 2019-01-21 11:16:01 +01:00
Fabien BOURGEOIS 48507f10d6 [ADD][REF]GOLEM Member : sevrice user analysis
* Small / medium refactoring on analysis ;
* Usage of current instead of new ;
* Renamings / typos.
2019-01-21 10:49:28 +01:00
Fabien BOURGEOIS f1725b2096 [REF]GOLEM Member : age range small refactorings 2019-01-21 09:42:06 +01:00
Fabien BOURGEOIS 953d0bca3d Merge branch 'master' into analysis 2019-01-21 05:51:18 +01:00
Fabien BOURGEOIS 5318431970 [IMP]GOLEM Member : better regexp for area street auto completion 2019-01-21 05:46:46 +01:00
Youssef Elouahby 0d5238fca8 [Analyses pour la ville] edit __manifest__ 2019-01-16 01:26:46 +01:00
Youssef Elouahby e63feb99c9 [Analyses pour la ville] Add account.invoice filter to acheive financial analysis 2019-01-16 01:26:25 +01:00
Youssef Elouahby 00eafb7837 [Analyses pour la ville] small improvment 2019-01-14 14:48:25 +01:00
Youssef Elouahby 6e81fd3026 [Analyses pour la ville] take into account only confirmed registration 2019-01-14 14:48:00 +01:00
Youssef Elouahby 58717a8e79 [Analyses pour la ville] small improvment 2019-01-14 14:34:44 +01:00
Youssef Elouahby c46d91bc50 [Analyses pour la ville] small improvment 2019-01-14 14:33:21 +01:00
Youssef Elouahby 06e0116283 [Analyses pour la ville] Add analysis by tag 2019-01-14 14:32:08 +01:00
Youssef Elouahby 89eb287ee1 [Analyses pour la ville] small improvment 2019-01-14 13:13:19 +01:00
Youssef Elouahby cfd6eca541 [Analyses pour la ville] small code cleaning 2019-01-14 13:11:28 +01:00
Youssef Elouahby fecb1df3e2 [Analyses pour la ville] Edit __manifest__ 2019-01-14 13:10:31 +01:00
Youssef Elouahby d6320b7b1a [Analyses pour la ville] edit __init__ 2019-01-14 13:10:16 +01:00
Youssef Elouahby e00dccf50e [Analyses pour la ville] Add member analysis by family_quotient and area 2019-01-14 13:09:50 +01:00
Youssef Elouahby 9c3dd1c421 [Analyses pour la ville] Edit __manifest__ 2019-01-14 11:49:45 +01:00
Youssef Elouahby 761370b0ca [Analyses pour la ville] edit __init__ 2019-01-14 11:49:32 +01:00
Youssef Elouahby 56a48a311d [Analyses pour la ville] Add Analyse by age area and activity 2019-01-14 11:49:11 +01:00
Youssef Elouahby c2e6476a2e [Analyses pour la ville] edit __manifest__ 2019-01-14 03:31:06 +01:00
Youssef Elouahby 07c345f67c [Analyses pour la ville] edit __init__ 2019-01-14 03:30:54 +01:00
Youssef Elouahby c06eda9a63 [Analyses pour la ville] Add member analysis assistant 2019-01-14 03:30:33 +01:00
Youssef Elouahby af1bb8966c [Analyses pour la ville] edit wizard/__init__ 2019-01-14 03:30:11 +01:00
Youssef Elouahby 703c51c03e [Analyses pour la ville]Add member analysis views pivot 2019-01-14 03:29:52 +01:00
Youssef Elouahby bf088d413e [Analyses pour la ville] Add member analysis wizard 2019-01-14 03:29:23 +01:00
Youssef Elouahby 2c237ce6db [Analyses pour la ville] edit models/__init__ 2019-01-14 03:28:31 +01:00
Youssef Elouahby 5b338e0704 [Analyses pour la ville] Add age range security 2019-01-14 03:28:03 +01:00
Youssef Elouahby 3277a0c476 [Analyses pour la ville] Create Age range views 2019-01-14 03:27:48 +01:00
Youssef Elouahby 4a762f83e9 [Analyses pour la ville] Create age range model 2019-01-14 03:27:30 +01:00
Youssef Elouahby fc943bf71e Remove number from street before saving it or extracting it from Territories 2018-11-17 22:24:39 +01:00
Fabien BOURGEOIS 3764bb0f9e [I18N]GOLEM Activity Registration Payment Member Minor updated translations 2018-11-01 19:55:19 +01:00
Fabien BOURGEOIS 6a7c9beee9 [REF]GOLEM Member Account : better action handling
And ensure customer not supplier invoies
2018-11-01 19:51:57 +01:00
Fabien BOURGEOIS 3bdc141dad [FIX]GOLEM Family Membership : ensure customer views, not supplier on invoices 2018-11-01 19:50:56 +01:00
Fabien BOURGEOIS 78238bd562 [FIX]GOLEM Activity Registration Payment Member Minor : handle payment
On the name of on payments too
2018-11-01 19:50:02 +01:00
Fabien BOURGEOIS 1c156fe667 [IMP]GOLEM Member Minor : small enhancements around invoice partners 2018-11-01 19:48:58 +01:00
Fabien BOURGEOIS 596ec855e8 [REF]GOLEM Member / Family Membership for minors
Ensures that, is family is not installed, only guardians are handled.
2018-11-01 19:12:13 +01:00
Fabien BOURGEOIS f7ceab753f [FIX]GOLEM Family Membership : ensure minor is installed 2018-11-01 18:47:47 +01:00
Fabien BOURGEOIS a11675fe35 [ADD][REF]GOLEM Activity Registration Payment : refactor addons and depndencies
* Payment may not have minor as dependency, so we should not use it for minors ;
* Add two glue addons with some functional around guardians for minor.
2018-11-01 18:47:21 +01:00
Fabien BOURGEOIS c8ccf3e4fa [REF]GOLEM Activity Registration Payment 2018-11-01 17:55:38 +01:00
Fabien BOURGEOIS 41cd2e863a Merge branch 'master' into minor_invoice_payment 2018-11-01 16:24:50 +01:00
Fabien BOURGEOIS 92370db734 [REF][FIX]GOLEM Member : filters and age
* Age : do not use compute, as it evole from time to time ;
* Fix area_id group by ;
* Better places for new filters and searches.
2018-11-01 16:21:39 +01:00
Fabien BOURGEOIS 9390ad88ce [REF]GOLEM Activity : add o2m animated activities 2018-11-01 16:18:18 +01:00
Fabien BOURGEOIS e68bd4c5b2 Merge branch 'master' into contacts_enhancements 2018-11-01 15:08:57 +01:00
Youssef Elouahby 6bab130eff Add partner_ids to created minor invoice 2018-10-30 10:48:44 +00:00
Youssef Elouahby 6038b5c807 Add partner_ids to supplier invoice 2018-10-30 10:46:28 +00:00
Youssef Elouahby 7911a9c630 Add family members to membership invoice 2018-10-29 22:53:09 +00:00
Youssef Elouahby 95426c0e90 Create activity invoice in the name of an other contact in case of minor member 2018-10-29 22:21:22 +00:00
Fabien BOURGEOIS 2ae88b9905 [TYPO]GOLEM Member : typo handling on area 2018-10-26 17:48:10 +02:00
Fabien BOURGEOIS 88a28b0091 [REF]GOLEM Family / History : area small enhancements 2018-10-26 17:47:22 +02:00
Youssef Elouahby 96b844b6af small refactorings 2018-10-26 13:20:04 +01:00
Youssef Elouahby 8fa32e185e Add area_id to family_history 2018-10-26 13:19:49 +01:00
Youssef Elouahby 5cc81003da Add area_id filters 2018-10-26 13:11:39 +01:00
Youssef Elouahby 51ab81f916 area autocompletion and street sauvegarde 2018-10-26 13:07:18 +01:00
Youssef Elouahby a9888427ec Add area_id to family 2018-10-26 12:27:00 +01:00
Youssef Elouahby 5ca2a14e64 small refactorings 2018-10-26 12:06:31 +01:00
Youssef Elouahby 34a697d5dc Add age and area_id filter for contacts 2018-10-26 09:01:44 +01:00
Youssef Elouahby a8807a9798 Add filter and group_by activity for animator 2018-10-26 08:56:58 +01:00
Fabien BOURGEOIS 2599eb55fb [ADD][REF]GOLEM Member and Family Histories enhancements
* Small refactorings ;
* Add zip code history handling ;
* Add translations and base security.
2018-10-26 08:48:53 +02:00
Fabien BOURGEOIS e3d2c63402 Merge branch 'master' into data_history 2018-10-25 18:30:20 +02:00
Fabien BOURGEOIS 3dcdd23d90 [REF][FIX]GOLEM Member Minor : membership invoice on legal guardians
* Small refacorings ;
* Better require for legal guardian when minor ;
* Adaptations to new legal guardians ;
* Fix on last invoice gathering.
2018-10-25 17:55:49 +02:00
Fabien BOURGEOIS d057579378 Merge branch 'master' into minor_invoice 2018-10-25 16:55:47 +02:00
Fabien BOURGEOIS 55cf4080fb Merge branch 'master' of ssh://git.yaltik.net:61722/Yaltik/golem 2018-10-24 08:02:25 +02:00
Fabien BOURGEOIS e146cab234 [I18N]GOLEM Member Minor : updated translations 2018-10-24 08:01:54 +02:00
Fabien BOURGEOIS 0a035ce504 [REF][FIX]GOLEM Member Minor : new legal guardians
* Remove button to do default (and so browser reload) in favor of parent
constraint ;
* Ensures there is no double (two times same person) with SQL
constraint ;
* Add SQL on migration script to handle old column name inherited from
m2m ;
* Add base security on new model ;
2018-10-24 07:59:15 +02:00
Fabien BOURGEOIS da07c202f3 [REF][FIX]GOLEM Member Minor : new legal guardians
* Remove button to do default (and so browser reload) in favor of parent
constraint ;
* Ensures there is no double (two times same person) with SQL
constraint.
2018-10-24 07:57:15 +02:00
Fabien BOURGEOIS aa9eb113f1 [REM][TMP]GOLEM Family Minor : do not overwrite domain
This addon will be removed
2018-10-24 07:54:52 +02:00
Fabien BOURGEOIS d78bac1c83 Merge branch 'master' into legal_guardians 2018-10-23 18:30:04 +02:00
Fabien BOURGEOIS 9fec3aeaef [FIX]GOLEM Family Membership : do not required family fields
Because we extend default invoicing transience model, we will need these
fields for all memberships...
2018-10-23 18:23:07 +02:00
Fabien BOURGEOIS 7b9cbb4145 [FIX]GOLEM Activity Registration Payment : unique invoice this season
And not default season only
2018-10-23 18:22:04 +02:00
Fabien BOURGEOIS 64a1fac6c8 Merge branch 'master' into unique_invoice_per_season 2018-10-23 17:52:28 +02:00
Youssef Elouahby b9639ebef6 Enable is_animator Boolean in contact 2018-10-23 16:28:03 +01:00
Youssef Elouahby 9deb04a196 Add is_animator filter to search view 2018-10-23 16:27:35 +01:00
Youssef Elouahby 41c7339221 Edit __manifest__ 2018-10-23 16:25:39 +01:00
Youssef Elouahby 353a920ee0 Adding not_disclosed to gender's options 2018-10-23 13:20:53 +01:00
Youssef Elouahby 473e3da65d Small refactorings 2018-10-22 21:24:57 +01:00
Youssef Elouahby e5285ecebc Edit init 2018-10-22 20:57:54 +01:00
Youssef Elouahby 519d0ef2ea Create family history model 2018-10-22 20:57:41 +01:00
Youssef Elouahby 452867d084 Add save family history method 2018-10-22 20:57:17 +01:00
Youssef Elouahby 5363078872 edit __manifest__ 2018-10-22 20:56:42 +01:00
Youssef Elouahby b288d83fc0 small refactorings 2018-10-22 20:56:19 +01:00
Youssef Elouahby c966acc556 Make member_history_ids readonly 2018-10-22 20:55:46 +01:00
Fabien BOURGEOIS 04f383a951 [REF]GOLEM Member / Custom Price : territories enhancements
Global refactoring : small enhancements from MR code + ACLs + french i18n
2018-10-22 18:10:44 +02:00
Youssef Elouahby 9735571967 Small refactorings 2018-10-22 09:55:03 +01:00
Youssef Elouahby 66b851692e Create family_history module 2018-10-19 13:15:09 +01:00
Fabien BOURGEOIS a0fbf3ac31 Merge branch 'master' into areas_enhancements 2018-10-19 09:08:10 +02:00
Fabien BOURGEOIS cc479d3908 [REF][IMP]GOLEM Family single-parent small enhancements 2018-10-19 09:04:54 +02:00
Fabien BOURGEOIS 0bdf720b02 Merge branch 'master' into family_mono 2018-10-19 08:39:24 +02:00
Youssef Elouahby 4c61b8c342 Edit models/manifest 2018-10-18 17:06:06 +01:00
Youssef Elouahby 942414eaac Edit __manifest__ 2018-10-18 17:05:45 +01:00
Youssef Elouahby 6780f279ce Add required fields 2018-10-18 17:05:31 +01:00
Youssef Elouahby 97f5b25534 Add constrains to member to save history 2018-10-18 17:05:15 +01:00
Youssef Elouahby 45ef7f483f Add history tab to member form 2018-10-18 17:04:52 +01:00
Youssef Elouahby 759a9c957d Merge branch 'master' into Historique_des_donnees_CAF 2018-10-18 12:10:19 +01:00
Youssef Elouahby c891152b2c Add required fields 2018-10-18 11:58:50 +01:00
Youssef Elouahby 850aeb51ce create golem_member_history model 2018-10-18 10:07:03 +01:00
Youssef Elouahby 35ac9babf0 create models/__init__ 2018-10-18 10:06:40 +01:00
Youssef Elouahby 44fca4bd4f Create __manifest__ 2018-10-18 09:35:14 +01:00
Youssef Elouahby 1d66f540d0 Create __init__ 2018-10-18 09:34:52 +01:00
Youssef Elouahby 201109021d prevent loop in area parenting 2018-10-12 17:17:24 +01:00
Youssef Elouahby 1bcb4ff5bb small refactoring 2018-10-12 17:16:44 +01:00
Youssef Elouahby ace87392db compute root area 2018-10-12 16:06:18 +01:00
Youssef Elouahby 71f7299aaf Change member.area_id to area_id.root_id 2018-10-12 16:05:01 +01:00
Youssef Elouahby 03819f5f3c remove sub area from price line 2018-10-12 02:48:12 +01:00
Youssef Elouahby 35c54abc15 Code refactoring and improvement 2018-10-12 01:48:10 +01:00
Youssef Elouahby 2eda76a20d small improvement 2018-10-11 23:50:47 +01:00
Youssef Elouahby 6d8863565e save street with the area 2018-10-11 23:50:22 +01:00
Youssef Elouahby 61411705eb Add area Form 2018-10-11 17:24:47 +01:00
Youssef Elouahby 667de88bd8 Edit models/__init__ 2018-10-11 16:45:34 +01:00
Youssef Elouahby 0d24d6d69d Create Area.street model 2018-10-11 16:45:16 +01:00
Youssef Elouahby 561786430a invoice form improvement 2018-10-09 14:37:23 +01:00
Youssef Elouahby 6307329e98 move membership from the legal_guardian to the minor 2018-10-09 14:36:24 +01:00
Youssef Elouahby 5ac1331652 code refactoring 2018-10-09 14:35:40 +01:00
Youssef Elouahby afddb3c58d Add partner_ids to account_invoice 2018-10-08 14:37:14 +01:00
Youssef Elouahby 841d91bb41 code refactoring 2018-10-08 02:50:58 +01:00
Youssef Elouahby 9a36a90c80 Edit __init__ 2018-10-08 02:49:49 +01:00
Youssef Elouahby 3793e1dda3 Add membership_invoice_action for minor members 2018-10-08 02:49:28 +01:00
Youssef Elouahby ec2b1c5c49 Add src_member_id and partner_id domain in membership wizard 2018-10-08 02:48:49 +01:00
Youssef Elouahby f82ffa68dd Extend the Buy membership button 2018-10-08 02:48:11 +01:00
Youssef Elouahby 17eb52ac28 Show partner_id and src_member_id in the wizard form 2018-10-08 02:47:18 +01:00
Youssef Elouahby d0a5bbe6a0 Edit __manifest__ 2018-10-08 02:46:26 +01:00
Youssef Elouahby a0f56faac4 undo some changes 2018-10-07 23:57:17 +01:00
Youssef Elouahby 722756b2a1 undo some changes 2018-10-07 23:45:37 +01:00
Youssef Elouahby 9af857a553 undo changes 2018-10-07 23:39:01 +01:00
Youssef Elouahby 308ee2e7bd include partner in legal_guardian_ids 2018-10-05 15:31:31 +01:00
Youssef Elouahby eaf48497b2 Show partner in membership assistant 2018-10-05 15:30:58 +01:00
Youssef Elouahby 709f73a7d1 check if there is a membership invoice to add activities invoice lines 2018-10-03 22:02:01 +01:00
Youssef Elouahby 265f817f90 Migration script 2018-10-01 23:57:22 +01:00
Youssef Elouahby a2ac0fbb79 Edit version 2018-10-01 23:56:53 +01:00
Youssef Elouahby b87a4d57ae Small code refactorings 2018-10-01 23:56:26 +01:00
Youssef Elouahby 61eaea0ea6 Small code refactorings 2018-10-01 23:55:02 +01:00
Youssef Elouahby f63264fe62 Forbide the default legal gardian removal is he's not the only 2018-10-01 14:31:28 +01:00
Youssef Elouahby f69c1f4951 edit init 2018-10-01 01:25:28 +01:00
Youssef Elouahby a58caf5b83 Create legal_gardian module, and add do_default and create function 2018-10-01 01:25:19 +01:00
Youssef Elouahby f864d4a5ca Add the the new legal_guardian2_ids field to golem_member 2018-10-01 01:24:13 +01:00
Youssef Elouahby 8a5d18c2f0 Add the new legal gardian tree to form 2018-10-01 01:23:31 +01:00
Youssef Elouahby 66b5057709 Add single_parent field to model 2018-09-28 02:21:38 +01:00
Youssef Elouahby 459972669c Add single_parent field and filter to views 2018-09-28 02:21:16 +01:00
Youssef Elouahby 4c9bfe446a Small code refactoring 2018-09-28 02:04:00 +01:00
Youssef Elouahby 6105d2d8c0 edit models/__init__ 2018-09-28 02:01:11 +01:00
Youssef Elouahby 3bcba79dbb Add default gardian field and button to view 2018-09-28 02:00:53 +01:00
Youssef Elouahby a907c23e06 Add default gardian field and function 2018-09-28 02:00:22 +01:00
Fabien BOURGEOIS 5e983043e5 [FIX]GOLEM Admin : allow user creation even with auth_signup addon installed 2018-09-26 13:57:29 +02:00
Fabien BOURGEOIS 429302448f [FIX]GOLEM Activity Registration : do not required boolean 2018-09-26 12:14:03 +02:00
Fabien BOURGEOIS 6cb4d02808 [I18N]GOLEM Activity Registration Payment updated translations 2018-09-26 11:58:36 +02:00
Fabien BOURGEOIS 18957c4568 [IMP]GOLEM Activity Registration State : small enhancements
* Reload client to reflect changes after unlink registration ;
* Do no show buttons until registration has been saved.
2018-09-26 11:44:24 +02:00
Fabien BOURGEOIS 661aabcfe8 [FIX]GOLEM Activity Registration Payment : fix cascade on wizard invoicing 2018-09-26 11:42:35 +02:00
Fabien BOURGEOIS 223bc581fd [REF][IMP]GOLEM Activity Registration Payment free activities 2018-09-26 11:41:38 +02:00
Fabien BOURGEOIS 08927bba53 Merge branch 'master' into activity_free 2018-09-26 10:37:06 +02:00
Fabien BOURGEOIS 87e7bccb57 [ADD]GOLEM Activity Registration : dynamic domain for only subscribers
* Filter members according to activity ;
* Filter activities according to member.
2018-09-26 10:33:17 +02:00
Fabien BOURGEOIS 4d889a3eba Merge branch 'master' into activity_only_subscribers 2018-09-26 09:45:45 +02:00
Fabien BOURGEOIS ba375e62dd [ADD]GOLEM PCS : i18n translations 2018-09-24 16:20:31 +02:00
Fabien BOURGEOIS 0f07bb09eb [ADD]GOLEM PCS : base security access 2018-09-24 16:20:31 +02:00
Fabien BOURGEOIS 0f92e44b5c [IMP]GOLEM PCS : no_open on PCS forms 2018-09-24 16:20:31 +02:00
Fabien BOURGEOIS d00462aa41 [ADD]GOLEM PCS : move to partner, add on partner forms 2018-09-24 16:07:47 +02:00
Fabien BOURGEOIS 518749b78f [REF]GOLEM PCS : several refactorings 2018-09-24 15:56:40 +02:00
Youssef Elouahby e8c38a09ef remove limite_registration module 2018-09-20 14:00:24 +01:00
Youssef Elouahby 206041d3be remove init 2018-09-20 13:59:20 +01:00
Youssef Elouahby 59d8b897f6 Add field and logic to models 2018-09-20 13:49:01 +01:00
Youssef Elouahby 425ddd4f02 Add field and filter to activity views 2018-09-20 13:48:26 +01:00
Youssef Elouahby cbfccd5515 Prevent free activity from being invoiced 2018-09-19 16:54:35 +01:00
Youssef Elouahby 0c3a62cac8 Edit models/__init__ 2018-09-19 16:53:30 +01:00
Youssef Elouahby 85a734f9c2 Add free_activity field and filter to activity views 2018-09-19 16:53:04 +01:00
Youssef Elouahby 0924ac6437 Edit __manifest__ 2018-09-19 16:52:28 +01:00
Youssef Elouahby 2c9e7f2442 Add free_activity field to activity 2018-09-19 16:51:46 +01:00
Youssef Elouahby 20919252d1 Create models __init__ 2018-09-19 13:08:47 +01:00
Youssef Elouahby 6dd9652dc1 Edit activity registration model 2018-09-19 13:08:30 +01:00
Youssef Elouahby ab3c97143e Edit activity model 2018-09-19 13:08:07 +01:00
Youssef Elouahby 2720d50099 Edit activity views 2018-09-19 13:07:39 +01:00
Youssef Elouahby fdbae8aa3b Create __init__ 2018-09-19 13:07:15 +01:00
Youssef Elouahby c1116fa129 Create __manifest__ 2018-09-19 13:07:00 +01:00
Youssef Elouahby 4e33afff0b Create manifest 2018-09-17 13:49:15 +01:00
Youssef Elouahby a4ae56277a Create init 2018-09-17 13:49:02 +01:00
Youssef Elouahby fdf95b6aa5 Create member_views 2018-09-17 13:48:33 +01:00
Youssef Elouahby 6949825e01 Create models/init 2018-09-17 13:48:16 +01:00
Youssef Elouahby fb626e4885 Add pcs_id to golem.member 2018-09-17 13:47:57 +01:00
Youssef Elouahby 656ffd6aa2 Create golem.pcs 2018-09-17 13:47:37 +01:00
Youssef Elouahby cdefa64770 Create pcs data 2018-09-17 13:47:14 +01:00
Fabien BOURGEOIS 6054b3ac87 [IMP]GOLEM Base : allow long user / pass for SMTP 2018-08-27 13:11:54 +02:00
Fabien BOURGEOIS db0b9f3c34 [I18N]GOLEM Activity Registration Payment updated translations 2018-08-27 12:24:31 +02:00
Fabien BOURGEOIS 66567045c6 [IMP]GOLEM Activity / Member : do not allow direct season creation 2018-08-27 12:24:00 +02:00
Fabien BOURGEOIS 29792a7712 [IMP][I18N]GOLEM Season : linked subscription better with m2m widget 2018-08-27 11:50:10 +02:00
Fabien BOURGEOIS 27235e0b3f [IMP]GOLEM Member Area : add on member search 2018-08-27 11:21:52 +02:00
Fabien BOURGEOIS 64c1fd4773 [ADD]GOLEM Member UTM module : allow origin for res.partner 2018-08-27 10:40:51 +02:00
Fabien BOURGEOIS 8318ac4fcf [FIX]GOLEM Member : bad menu parent 2018-08-27 10:38:40 +02:00
Fabien BOURGEOIS 150cb1ac39 [ADD][FIX]GOLEM Member Minor enhancements
* add can leave boolean ;
* do not store is minor / adult and create efficient search function.
2018-08-26 18:17:25 +02:00
Fabien BOURGEOIS 063da04cf0 [IMP]GOLEM Member Family Quotient : on partner form too 2018-08-26 18:17:25 +02:00
Fabien BOURGEOIS 164be1025e [IMP]GOLEM Member : picture agreement should not be checked per default 2018-08-26 17:42:40 +02:00
Fabien BOURGEOIS 9d66afb2e2 [I18N]GOLEM Family Membership translations 2018-08-21 11:15:15 +02:00
Fabien BOURGEOIS 09017b13e9 [ADD]GOLEM Family Membership : multiple enhancements
* Ability to choose 1:n members for each subscription ;
* Do not invoice more than 1 person ;
* Keep subscription tracking info on family form ;
* Allow subscription cancel.
2018-08-21 11:10:54 +02:00
Fabien BOURGEOIS d6e3da556a [IMP]GOLEM Famil: name XML pages on form 2018-08-21 11:09:11 +02:00
Fabien BOURGEOIS cc12c13170 [IMP]GOLEM Member : do not include canceled on subscribers 2018-08-21 11:08:57 +02:00
Fabien BOURGEOIS 390bcb18f1 [REF]GOLEM Family Membership : small refactorings / quality 2018-08-20 11:33:26 +02:00
Fabien BOURGEOIS 3676634790 Merge branch 'master' into family_subscription 2018-08-20 11:03:37 +02:00
Fabien BOURGEOIS eb5e82bfa7 [IMP]GOLEM Activity Registration Custom Price : copy price lignes 2018-08-20 10:52:22 +02:00
Youssef Elouahby b30d5cb2b8 small code refactoring 2018-08-13 17:09:27 +01:00
Youssef Elouahby a52ccbcd20 fix domain restriction 2018-08-13 17:09:10 +01:00
Youssef Elouahby 047d57ad5d edit init 2018-08-13 16:49:09 +01:00
Youssef Elouahby 9e940ce4ff edit golem family 2018-08-13 16:49:00 +01:00
Youssef Elouahby 12f5a08bfc edit golem family views 2018-08-13 16:48:33 +01:00
Youssef Elouahby 0249a1c50f create __init__ 2018-08-13 16:48:14 +01:00
Youssef Elouahby 301cabfa07 create wizard views 2018-08-13 16:48:02 +01:00
Youssef Elouahby c1e370281e create wizard python code 2018-08-13 16:47:49 +01:00
Youssef Elouahby c5ce18361d edit manifest 2018-08-13 16:47:30 +01:00
Youssef Elouahby a4d6becaaa edit init 2018-08-13 16:47:21 +01:00
Youssef Elouahby 2f97fa9c40 add membership button to family form 2018-08-12 19:23:54 +01:00
Youssef Elouahby a13f8cacf3 create init 2018-08-12 19:16:41 +01:00
Youssef Elouahby 363768f901 create manifest 2018-08-12 19:15:23 +01:00
Fabien BOURGEOIS 78164bd55c [IMP]GOLEM Activity Registration : search from member was misplaced 2018-08-09 16:39:17 +02:00
Fabien BOURGEOIS e5fefa2e9d [IMP]GOLEM Activity : display hour start (or nothing) on tree
And adaptations for Activity Registration addon
2018-08-09 15:47:57 +02:00
Fabien BOURGEOIS 3ccce89bf1 [IMP]GOLEM Activity : order by defautl code then name then id 2018-08-09 11:27:24 +02:00
Fabien BOURGEOIS 5ca67d5a48 [FIX]GOLEM Payement depends on payment 2018-08-05 07:30:11 +02:00
Fabien BOURGEOIS 970fa991b5 [FIX]GOLEM Payment fixes
* Allow direct creation of schedule days ;
* Cascade delete for days and schedules.
2018-08-05 06:36:58 +02:00
Fabien BOURGEOIS 2ce0ddfc8c [FIX]GOLEM Activity Registration Custom Price : obsolete model in security 2018-08-05 06:09:33 +02:00
Fabien BOURGEOIS 46605a8227 [FIX]GOLEM Activity Registration Payment : fix auto confirmation of all draft activities 2018-08-05 05:51:38 +02:00
Fabien BOURGEOIS 56f6bd9615 [IMP]GOLEM Activity Registration Payment : manage canceled invoice 2018-08-05 05:50:51 +02:00
Fabien BOURGEOIS 8b40f33a9d [IMP]GOLEM Activity Registration Payment : better invoicing form organization 2018-08-04 08:00:42 +02:00
Fabien BOURGEOIS f1aa568e78 [ADD]GOLEM Activity Registration Custom Price new module
See manifest for description
2018-08-04 01:18:39 +02:00
Fabien BOURGEOIS 39a2565d07 [IMP]GOLEM Activity Registration Payment : more flexibility, float 2 monetary 2018-08-04 01:18:39 +02:00
Fabien BOURGEOIS e2d72cb4ab [REF]GOLEM Member FamilyQuotient : field renaming 2018-08-04 01:18:39 +02:00
Fabien BOURGEOIS 9307ece7d1 [ADD]GOLEM Member : new area field (m2o) 2018-08-04 01:06:06 +02:00
Fabien BOURGEOIS 233e4a268e [ADD]GOLEM Base : matrix 2D dependency 2018-08-04 00:58:38 +02:00
Fabien BOURGEOIS 757089762f [IMP][I18N][MIG]GOLEM Resource end renaming work 2018-08-03 10:54:28 +02:00
Fabien BOURGEOIS 8060d261e3 Merge branch 'master' into resource_typo 2018-08-03 10:39:02 +02:00
Fabien BOURGEOIS fa539c29dd [IMP]GOLEM Membership : default categories to 706/604 accounts 2018-08-03 10:35:19 +02:00
Fabien BOURGEOIS cf4a804038 [IMP]GOLEM Activity : product category accounts now required 2018-08-03 10:34:36 +02:00
Fabien BOURGEOIS 26d8e1c5f4 [ADD]GOLEM Payment : improve search views 2018-08-03 09:49:54 +02:00
Fabien BOURGEOIS 22df2eea36 [ADD]GOLEM Member Account : add smart button for payments
Also improve the method for opening invoices and store whole amount paid.
2018-08-03 09:46:05 +02:00
Youssef Elouahby 569c167e36 update version 2018-08-03 00:03:34 +01:00
Youssef Elouahby e6e15bf66c fix availability spelling mistake 2018-08-02 18:43:58 +01:00
Fabien BOURGEOIS 037a69d09e [IMP]GOLEM Activity Registration : no more empty table for activities, invoices payments. 2018-08-02 18:48:19 +02:00
Fabien BOURGEOIS 245ef22c80 [ADD]GOLEM Activity Registration Payment : add invoicing on member card template 2018-08-02 18:36:01 +02:00
Fabien BOURGEOIS cd4c0fc872 [ADD]GOLEM Activity Registration State : state on member card report 2018-08-02 18:34:02 +02:00
Fabien BOURGEOIS cce4cbccfc [IMP]GOLEM Activity Registration : member card activities with less columns 2018-08-02 18:32:30 +02:00
Fabien BOURGEOIS 7b022c6623 [ADD]GOLEM Activity Registration : invoicing, payment wizard
* Add invoicing information on registration ;
* Enhance payment wizard by better naming journal.
2018-08-01 18:20:11 +02:00
Fabien BOURGEOIS 6e778399ef [IMP]GOLEM Activity Registration : member on form 2018-08-01 18:20:11 +02:00
Fabien BOURGEOIS d82babaa25 [REF][ADD]GOLEM Payement
* Refactor days from m2m to o2m ;
* Allow better flow for filling ;
* Check date coherence.
2018-08-01 18:20:11 +02:00
Fabien BOURGEOIS 00451b4f9f [IMP]GOLEM Member : small enhancement, do not show number where is not on report 2018-08-01 18:20:11 +02:00
Fabien BOURGEOIS 33ded22f1b [REF][IMP]GOLEM Activity Registrations
* Large refactoring around registration trees (using contexts) ;
* Enhancement on base tree view and form.
2018-08-01 18:20:11 +02:00
Fabien BOURGEOIS 84c8166294 [FIX]GOLEM Activity Registration : fix for registration in member card template 2018-08-01 18:20:11 +02:00
Fabien BOURGEOIS 4a2de70755 [REF][ADD]GOLEM Registration State : individual confirm, draft, cancel, removals 2018-08-01 18:20:11 +02:00
Fabien BOURGEOIS ce55580bf7 [FIX]GOLEM Activity Registration : activity price
Users should not be able to edit activity price form registrations.
2018-08-01 18:20:11 +02:00
Fabien BOURGEOIS 893bfcd79b [IMP][REF]GOLEM Family : enhancements
* Allow partner selection from family members tab ;
* Allow family linking from new sevrice user, without mandatory save ;
* Fix UI for family tab ;
* Create a family from sevrice user through button on header.
2018-08-01 18:20:10 +02:00
Fabien BOURGEOIS d070acfbe0 [IMP]GOLEM Member : add header on form 2018-08-01 18:20:10 +02:00
Fabien BOURGEOIS 189eccba41 [IMP]GOLEM Family : on partner form, always visible 2018-08-01 18:20:10 +02:00
Fabien BOURGEOIS 776371e6db [IMP]GOLEM Family : ability to select existing partners from family form 2018-08-01 18:20:10 +02:00
Fabien BOURGEOIS 04cfcf43e4 [TYPO]GOLEM Member : is_service_user betten than is_member 2018-08-01 18:20:10 +02:00
Fabien BOURGEOIS bb51ff6c25 [FIX]GOLEM Season : fix duplicate / copy name and default 2018-08-01 18:20:10 +02:00
Fabien BOURGEOIS 69d4cfcf00 [ADD]GOLEM Base : add document dependency 2018-08-01 18:20:10 +02:00
Fabien BOURGEOIS 244ee83487 [REF][IMP]GOLEM Registrations states and payments
Huge refactoring, separing states management from payment and invoice
managements
2018-08-01 18:20:10 +02:00
Fabien BOURGEOIS 3270ceab13 [I18N]Typo on translations 2018-07-20 18:24:39 +02:00
Fabien BOURGEOIS 9b2462a132 [ADD]New module GOLEM Admin for managements users, groups, companies 2018-07-20 17:54:47 +02:00
Fabien BOURGEOIS 1829c62879 [IMP]GOLEM Membership : default account for subscription 2018-07-20 17:32:10 +02:00
Fabien BOURGEOIS 410ef7c0eb [I18N]Updated french translations (membre > usager) 2018-07-20 17:08:59 +02:00
Fabien BOURGEOIS 44dde64e36 [IMP]GOLEM Member : better filters for partners and members 2018-07-20 17:04:23 +02:00
Fabien BOURGEOIS 5746a30a62 [IMP]GOLEM Member(ship) : whole menu reorganization 2018-07-20 16:23:56 +02:00
Fabien BOURGEOIS 621f6efb27 [I18N]Updates translations 2018-07-20 12:09:47 +02:00
Fabien BOURGEOIS 25d2f6ac62 [IMP]GOLEM Member numbers now generated only after memberships 2018-07-20 12:02:53 +02:00
Fabien BOURGEOIS ad003e27f5 [REF]GOLEM Member now depends on membership, not inverse + fixes / consequences 2018-07-20 11:19:08 +02:00
Fabien BOURGEOIS c18b0a20a7 [REF]Huge refactoring around is_current / default season
Not computed anymore
Replaced is_current by more coherent is_default
Not seen current season only per default.
2018-07-20 10:09:24 +02:00
Fabien BOURGEOIS 824f187fce [REF]GOLEM Season : model small refactoring 2018-07-20 08:12:51 +02:00
Fabien BOURGEOIS 81f2b0d03b [FIX]GOLEM Member : better naming and res.partner form fix 2018-07-18 11:18:28 +02:00
Fabien BOURGEOIS fa94b26859 [REM]GOLEM Activity : remove useless property configuration 2018-07-17 17:48:58 +02:00
Fabien BOURGEOIS ad0d5b0ff6 [ADD]GOLEM Membership : accounting data
* Default memebrship accounts ;
* New journals : check, credit card.
2018-07-17 17:48:15 +02:00
Fabien BOURGEOIS 601971cd92 [FIX]GOLEM Member : fix number manual and make it required on form 2018-07-17 12:35:26 +02:00
Fabien BOURGEOIS 2f297f4db0 [FIX]GOLEM Family : linked member partner should not be required, for member creation 2018-07-17 12:13:04 +02:00
Fabien BOURGEOIS 06618da5f1 [ADD]GOLEM Activity Registration State : add generated invoice and payments
Add generated invoice and payments on wizard.
Allow to see them with navigation buttons.
2018-07-17 11:32:00 +02:00
Fabien BOURGEOIS 3fd0b457c3 [FIX]GOLEM Activity : categ_id should not had been inherited 2018-07-17 10:45:04 +02:00
Fabien BOURGEOIS c683931250 [IMP]GOLEM Activity Registration State : rounded payments
Round payments with ceil payments for first ones, balance for the last
one (or unique).
2018-07-17 10:11:10 +02:00
Fabien BOURGEOIS 7c51acbfc9 [REF]GOLEM Activity Registration State small refactoring 2018-07-17 09:42:58 +02:00
Fabien BOURGEOIS 5006d2d2b4 [ADD]GOLEM Activity : location char field, audience m2o 2018-07-17 09:33:56 +02:00
Fabien BOURGEOIS 61b2e06bae [ADD]GOLEM Member : electronic processing boolean 2018-07-17 09:01:36 +02:00
Fabien BOURGEOIS 2d6bdcdab8 [I18N]GOLEM Resource Pack forgotten french translation 2018-07-17 08:31:32 +02:00
Fabien BOURGEOIS 619605da67 [TYPO]GOLEM Activity Registration 2018-07-17 08:28:02 +02:00
Fabien BOURGEOIS 151fa26e6e [REF]GOLEM Member : small ref 2018-07-17 08:26:49 +02:00
Fabien BOURGEOIS bf050e225f [I18N]GOLEM Activity + registration updated translations 2018-06-12 16:19:15 +02:00
Fabien BOURGEOIS 7439bea559 [REL]GOLEM Activity : bump versions 2018-06-11 18:11:28 +02:00
Fabien BOURGEOIS 97fcfa6cb1 [IMP]GOLEM Activity Registration report : enhance name, phones renders 2018-06-11 18:10:25 +02:00
Fabien BOURGEOIS 3171e3c42d [REF]GOLEM Activity report : template code refactoring 2018-06-11 17:58:45 +02:00
Fabien BOURGEOIS 5175f03f4f Merge branch 'master' into activity_report 2018-06-11 16:56:08 +02:00
Fabien BOURGEOIS 0421f494bc [REF][I18N]GOLEM Resource Pack : small refactorings and updated translations 2018-05-25 18:52:26 +02:00
Fabien BOURGEOIS e76a516177 Merge branch 'master' into resource_pack_quick 2018-05-25 18:19:03 +02:00
Fabien BOURGEOIS 392c195b42 [IMP]GOLEM Resource Report : better menus for reports, updated translations 2018-05-25 18:18:49 +02:00
Fabien BOURGEOIS 8ff013c485 Merge branch 'master' into resource_pack_quick 2018-05-25 18:03:16 +02:00
Fabien BOURGEOIS 1a66cbd81c [IMP]GOLEM Resource Account : better coherence for quantities and UoM, using XMLIDS 2018-05-25 17:41:27 +02:00
Fabien BOURGEOIS c89cc9a2ed Merge branch 'master' into timing_invoice 2018-05-25 17:27:53 +02:00
Fabien BOURGEOIS 41633d574f [FIX]GOLEM Resource Report : at least 1 resource is needed 2018-05-25 17:16:19 +02:00
Fabien BOURGEOIS 3353db163f Merge branch 'reservations_report' 2018-05-25 16:58:47 +02:00
Fabien BOURGEOIS b820207d67 [I18N]GOLEM Resource Report : translations 2018-05-25 16:56:02 +02:00
Fabien BOURGEOIS ff8a4df86a [FIX]GOLEM Resource Report : only validated resource should be printed 2018-05-25 16:49:44 +02:00
Fabien BOURGEOIS 654d2de6b4 [REF][IMP]GOLEM Resource Report : huge refactoring of report model and data with representation per date, then, resource, then dates, then periods 2018-05-25 16:49:44 +02:00
Fabien BOURGEOIS 66a46d65f6 [REF]GOLEM Resource Report : global refactoring 2018-05-25 11:42:48 +02:00
Fabien BOURGEOIS 704e2809c2 [FIX]GOLEM Resource Report : bad data ordering when installing 2018-05-25 09:56:48 +02:00
Youssef Elouahby a39e8a3957 manifest addaptation 2018-05-08 16:00:17 +01:00
Youssef Elouahby d86c482a03 Add members registred list to report 2018-05-08 15:59:46 +01:00
Youssef Elouahby 0d34421f4d Add activity template 2018-05-08 01:31:05 +01:00
Youssef Elouahby 42bbe74fab Add report to activity 2018-05-07 17:51:47 +01:00
eloyoussef 0b97623c02 fonction de creation des reservation 2018-04-19 14:54:43 +02:00
eloyoussef 1b6a3c674e Creation du wizard pour la creation rapide des reservation 2018-04-19 13:54:15 +02:00
Fabien BOURGEOIS 460d138730 [FIX]GOLEM Resource Pack : add name on form, as it is required 2018-04-18 17:50:05 +02:00
Fabien BOURGEOIS 0e20503a8b [ADD]Updated translations for GOLEM Resources 2018-04-17 08:57:08 +02:00
Fabien BOURGEOIS e8d6336bca Merge branch 'golem_resource_pack' 2018-04-17 08:48:59 +02:00
Fabien BOURGEOIS fb51cf9dc0 [FIX]GOLEM Resource Account : keep reservation_id on invoice context, thanks Youssef for catching the bug 2018-04-17 08:48:26 +02:00
Fabien BOURGEOIS 6ccf24e485 [FIX]GOLEM Resource Pack : tests adaptations and fixes after refactoring 2018-04-17 08:48:26 +02:00
Fabien BOURGEOIS b855e1436e [WIP][REF]GOLEM Resource Pack : 1rst pass of refactoring on models and views 2018-04-17 08:48:26 +02:00
Fabien BOURGEOIS 21f5b6789a [I18N]Update transations 2018-04-17 08:48:26 +02:00
Fabien BOURGEOIS d19e650158 [REF][REM]GOLEM Resource Account : remove useless methods on wizard for adding on invoice 2018-04-17 08:48:26 +02:00
Fabien BOURGEOIS 28a3e84105 [FIX]GOLEM Resource Account : with no income and product name, we should handle unicode characters 2018-04-17 08:48:26 +02:00
Fabien BOURGEOIS 95cc14a4ee [REF]GOLEM Resource Account : add to invoice refactoring / small enhancements 2018-04-17 08:48:26 +02:00
Fabien BOURGEOIS c446fccd03 [I18N]GOLEM Resource : updated translation 2018-04-17 08:48:26 +02:00
Fabien BOURGEOIS 3ce2f43b35 [IMP][REF]GOLEM Resource : make resource product per default 2018-04-17 08:48:26 +02:00
eloyoussef 7e845ae932 filtre ressources liées aux produits 2018-04-17 08:48:26 +02:00
eloyoussef b584cf8bef fonction d'ajout de reservation au facture 2018-04-17 08:48:26 +02:00
eloyoussef 482e4c0b69 list des factures du meme clients 2018-04-17 08:48:26 +02:00
Fabien BOURGEOIS 07e2291189 [FIX]GOLEM Resource Account : keep reservation_id on invoice context, thanks Youssef for catching the bug 2018-04-16 19:18:12 +02:00
Fabien BOURGEOIS 988e53bc50 [I18N]Update transations 2018-04-16 18:14:12 +02:00
Fabien BOURGEOIS 4104fbace9 [REF][REM]GOLEM Resource Account : remove useless methods on wizard for adding on invoice 2018-04-16 18:14:02 +02:00
eloyoussef b105d87745 code refactoring 2018-04-16 18:04:05 +02:00
Fabien BOURGEOIS 5e27186939 [FIX]GOLEM Resource Account : with no income and product name, we should handle unicode characters 2018-04-16 17:55:32 +02:00
Fabien BOURGEOIS 6d163a7a93 [REF]GOLEM Resource Account : add to invoice refactoring / small enhancements 2018-04-16 17:55:02 +02:00
eloyoussef e7464a62b3 code refactoring 2018-04-16 17:48:14 +02:00
eloyoussef 1398cb945d modification couleurs 2018-04-16 17:10:22 +02:00
Fabien BOURGEOIS 720500a4f7 Merge branch 'master' into Add_reservation_to_existing_invoice 2018-04-16 16:53:47 +02:00
Fabien BOURGEOIS 408ae9a8c3 [I18N]GOLEM Resource : updated translation 2018-04-16 16:33:03 +02:00
Fabien BOURGEOIS 6b9731335e [IMP][REF]GOLEM Resource : make resource product per default 2018-04-16 16:32:50 +02:00
eloyoussef ce325aa054 Amélioration de l'affichage du rappoort 2018-04-13 19:18:59 +02:00
eloyoussef 94bdd6240a quelques améliorations 2018-04-12 18:58:19 +02:00
eloyoussef 01a34e0e3b fonction de reporting 2018-04-12 18:25:57 +02:00
eloyoussef c669ddae2f code refactoring 2018-04-12 00:52:05 +02:00
eloyoussef 2abaabc002 wizard pour choisir les resources 2018-04-11 21:27:07 +02:00
eloyoussef 3c2ce0ceba modification du calcul du quantité selon uom 2018-04-09 18:49:50 +02:00
eloyoussef 53e28fec61 filtre ressources liées aux produits 2018-04-06 14:38:30 +02:00
eloyoussef 4712b3e689 fonction d'ajout de reservation au facture 2018-04-04 17:57:01 +02:00
eloyoussef 08eb3ecb4b list des factures du meme clients 2018-04-03 12:33:31 +02:00
eloyoussef 7223afa486 Ajout des tests pour facturation des packs 2018-04-01 02:02:22 +02:00
eloyoussef 9961933f96 refactoration de code 2018-03-31 17:17:08 +02:00
eloyoussef 66c01206f0 contrainte sur les clients multiples 2018-03-31 02:47:05 +02:00
eloyoussef a0fc41cbcc ajout des tests pack 2018-03-31 00:33:26 +02:00
eloyoussef 1415b0306f amélioration de vue et raison de rejection 2018-03-30 19:03:57 +02:00
eloyoussef fdf556a8d8 Fonction de facturation 2018-03-30 17:27:40 +02:00
eloyoussef 36058fe141 Création de module pack_account : structure de modèle et vue 2018-03-30 11:49:58 +02:00
eloyoussef 1afbe75845 Ajout de securité et colorisation de la liste 2018-03-30 02:10:54 +02:00
eloyoussef a0721e6a1c Fonction de verification et manipulation de status 2018-03-30 01:59:16 +02:00
eloyoussef e738473b53 Merge branch 'master' into golem_resource_pack 2018-03-29 17:07:47 +02:00
Fabien BOURGEOIS fa635b496e [FIX]GOLEM Resource Option is not an application 2018-03-29 16:46:46 +02:00
Fabien BOURGEOIS 0cbf3719f2 [FIX]GOLEM Resource views : bad order for new install (calendar view needs form view) 2018-03-29 16:46:26 +02:00
eloyoussef 0a4abc795f Ajout de fonction de confirmation de pack 2018-03-29 15:05:48 +02:00
Fabien BOURGEOIS f710947771 [FIX]GOLEM Resource Option : should not see other options on own definition list on ressource form 2018-03-29 10:02:41 +02:00
Fabien BOURGEOIS 350ff3e52a [ADD]GOLEM Base : now depends on backend theme 2018-03-29 09:07:26 +02:00
Fabien BOURGEOIS ced4cbf42a [I18N]GOLEM Resource Option : translations 2018-03-29 08:57:18 +02:00
Fabien BOURGEOIS 0bb22d7b1b [IMP]GOLEM Resource Option : base security for new model 2018-03-29 08:56:57 +02:00
Fabien BOURGEOIS 8ea116675e [REF][ADD]GOLEM Resource Option : options tree under configuration, active for options and m2m for reservation (finally), multiple small enhancements 2018-03-29 08:35:19 +02:00
Fabien BOURGEOIS 0e250ea075 [REF][IMP]GOLEM Resource Option : small refactoring / quality and performance 2018-03-29 08:07:59 +02:00
Fabien BOURGEOIS e7fad86347 [FIX]GOLEM Resource Option : need unicode string to handle non-ascii / special characters 2018-03-29 07:56:20 +02:00
Fabien BOURGEOIS 7b390534f2 Merge branch 'master' into golem_resource_option 2018-03-29 07:49:36 +02:00
eloyoussef 24d08c0774 Ajout des champs et design views 2018-03-28 18:03:17 +02:00
eloyoussef e36c9b537c Création du module resource pack basique 2018-03-28 16:57:56 +02:00
Fabien BOURGEOIS 6b3942389d [I18N]GOLEM Member Pre-creation Search translations 2018-03-27 17:13:15 +02:00
Fabien BOURGEOIS 5e557edf22 [REF][IMP]Huge refactoring and small enhanceme GOLEM Member Precreation Search 2018-03-27 17:09:18 +02:00
Fabien BOURGEOIS ffa453d2c8 [MOV][WIP]GOLEM Precreation search : renaming module 2018-03-27 16:11:26 +02:00
Fabien BOURGEOIS f3e45b885d [REF][IMP]GOLEM PreCreation : now from submenu on member module 2018-03-27 16:00:07 +02:00
Fabien BOURGEOIS 671cb68b86 [IMP]GOLEM Member : new tools menu 2018-03-27 15:58:54 +02:00
eloyoussef 1e78c30604 version golem_ressource stable 2018-03-27 15:55:33 +02:00
eloyoussef 2353ffeeeb mettre à jours resource 2018-03-27 15:46:18 +02:00
eloyoussef b8f477ffc4 Merge branch 'master' into golem_resource_option 2018-03-27 15:41:28 +02:00
eloyoussef 73e92ca551 deplacement des fonctionnalités sur un nouveau module 2018-03-27 15:20:01 +02:00
Fabien BOURGEOIS 96b29fdc9f Merge branch 'master' into golem_precreation_member 2018-03-27 12:32:29 +02:00
Fabien BOURGEOIS 24f403f84e [I18N]Updated french translations 2018-03-27 11:42:57 +02:00
Fabien BOURGEOIS 068cb73c94 [QUA][REF]GOLEM Resource Account : updated tests 2018-03-27 11:37:22 +02:00
Fabien BOURGEOIS 3050e554b9 [IMP][FIX]GOLEM Resource Account : should not group reservations on a single invoice if parters are not the same (thanks Youssef) 2018-03-27 11:32:42 +02:00
Fabien BOURGEOIS 66601c03b9 [FIX]GOLEM Resource Account : should use product.product on invoice line, not product.template 2018-03-27 11:31:54 +02:00
Fabien BOURGEOIS 1d19c17f4a [REL]Bump versions for GOLEM Resources modules 2018-03-26 19:05:04 +02:00
Fabien BOURGEOIS cdf468786e [IMP]GOLEM Resource : better colors for reservation tree 2018-03-26 19:04:53 +02:00
Fabien BOURGEOIS 00d2eccf74 Merge branch 'master' into resource_calendar_improvement 2018-03-26 18:51:52 +02:00
Fabien BOURGEOIS 3e583beb54 [I18N]GOLEM Resource Account : updated translations 2018-03-26 18:34:04 +02:00
Fabien BOURGEOIS 2eb4845dfa [FIX]GOLEM Resource Account : post merge rename 2018-03-26 18:28:44 +02:00
Fabien BOURGEOIS cb33dda359 [] 2018-03-26 17:59:58 +02:00
Fabien BOURGEOIS bd7a873b21 Merge branch 'master' into golem_resource_account 2018-03-26 17:59:49 +02:00
Fabien BOURGEOIS d7772228c6 [IMP]GOLEM Resource : basic products menu on configuration 2018-03-26 17:38:53 +02:00
Fabien BOURGEOIS a476e7ec04 [I18N]GOLEM Resource Account : base i18n files 2018-03-26 17:21:36 +02:00
Fabien BOURGEOIS 55f8818b9f [IMP]GOLEM Resource Account : redirect to new invoice after wizard 2018-03-26 17:21:21 +02:00
Fabien BOURGEOIS 89050d8920 [FIX]GOLEM Resource Accout : do not copy invoice line 2018-03-26 17:20:53 +02:00
Fabien BOURGEOIS f25e69040a [REF][FIX][IMP]GOLEM Resource Account : create only one invoice, use actions on main model and add as many lines as needed on invoice 2018-03-26 17:09:23 +02:00
Fabien BOURGEOIS 2336614701 [REF]GOLEM Resource Account : separate check, create invoice and create invoice line actions 2018-03-26 17:08:03 +02:00
Fabien BOURGEOIS 7c4bc395a3 [REM]GOLEM Resource Account : remove editable wizard 2018-03-26 16:35:31 +02:00
Fabien BOURGEOIS 237ce73198 [IMP]GOLEM Resource Account : prefer origin more than name / reference here 2018-03-26 16:32:03 +02:00
Fabien BOURGEOIS 9b25450a4a [MOV][QUA]Pure quality / renaming 2018-03-26 16:28:57 +02:00
Fabien BOURGEOIS a5c51123f3 [IMP]GOLEM Resource Account : add invoice state on form 2018-03-26 16:16:51 +02:00
Fabien BOURGEOIS 464a56fa1e [IMP]GOLEM Resource Account : direct filters invoiced or not 2018-03-26 16:14:13 +02:00
Fabien BOURGEOIS b08d7eb09e [IMP]GOLEM Resource : add more direct filters based on states 2018-03-26 16:13:47 +02:00
Fabien BOURGEOIS abcdcb1748 [IMP]GOLEM Resource Account : add header button to go to invoice directly 2018-03-26 12:36:42 +02:00
Fabien BOURGEOIS 471e9f35c7 [FIX]GOLEM Resource Account : do not allow invoice re-creation 2018-03-26 12:36:17 +02:00
Fabien BOURGEOIS 5307ae37c0 [IMP]GOLEM Resource Account : linked to account line, computes account_id from line, improve search and attrs on form 2018-03-26 12:35:12 +02:00
Fabien BOURGEOIS 6dc7c671e5 [FIX]GOLEM Resource Account : use list, not standard price 2018-03-26 12:33:41 +02:00
Fabien BOURGEOIS 4fc04548a6 [IMP]GOLEM Resource Accont : add invoicing information on form, add search options 2018-03-26 12:02:41 +02:00
Fabien BOURGEOIS 942975e187 [TYPO]GOLEM Resource : name form groups 2018-03-26 12:01:50 +02:00
Fabien BOURGEOIS 64607e5758 [IMP]GOLEM Resource Account : do not show create invoicde button when there is no linked product 2018-03-26 11:37:31 +02:00
Fabien BOURGEOIS 476c1b25b8 [FIX]GOLEM Resource Account : better to use default name for invoice and use reservation name as origin 2018-03-26 11:22:36 +02:00
Fabien BOURGEOIS ba7ab02084 [IMP]GOLEM Resource Account : do not allow invoice creation without product, improve creation algorithm 2018-03-26 11:11:16 +02:00
Fabien BOURGEOIS 1957dd8ca2 [QUA]Bascic quality enhancements 2018-03-26 11:01:34 +02:00
Fabien BOURGEOIS b745669e40 [FIX]GOLEM Resource Account : bad order for data, views needs wizard XMLID, not found at install 2018-03-26 10:57:10 +02:00
Fabien BOURGEOIS 8b85c634a1 Merge branch 'master' into golem_resource_account 2018-03-26 10:39:15 +02:00
Fabien BOURGEOIS e02b9b052b [FIX]GOLEM Membership : bad XML path for card template 2018-03-26 10:38:54 +02:00
Fabien BOURGEOIS eeb07b5e65 Merge branch 'master' into golem_resource_account 2018-03-26 10:34:31 +02:00
eloyoussef 991e5bc39a Ajout du fonctionnement pour contact 2018-03-23 17:31:04 +01:00
eloyoussef 79c8d501a0 Fonction de recherche de membres 2018-03-23 15:44:37 +01:00
eloyoussef 4cd64ef8aa ajout du module et wizard à lancer 2018-03-22 16:47:54 +01:00
eloyoussef 1f295ec9c7 Ajout des contraintes et des vues necessaires 2018-03-22 11:32:14 +01:00
eloyoussef 1967ab5ced defintion de model pour selection et option 2018-03-21 11:44:53 +01:00
eloyoussef 7af41f07c7 initialisation resource option 2018-03-21 01:36:29 +01:00
eloyoussef 93ff8cd802 Colorisation de la listes des réservation (invoicing_state) 2018-03-20 17:30:10 +01:00
eloyoussef 18c3c58d8a Améliorations de la liste des reservation(couleurs et filtres) 2018-03-20 16:49:26 +01:00
eloyoussef c67565b57b Amélioration du calendrier de reservation 2018-03-20 13:17:53 +01:00
eloyoussef bc8c6dbd58 Ajout des test de cas de multiple facturation 2018-03-19 19:07:23 +01:00
eloyoussef 9b086fef97 Ajout des test de facturation : facture individuel 2018-03-19 18:05:58 +01:00
eloyoussef aad88c2fed Merge branch 'master' into golem_resource_account 2018-03-19 16:46:59 +01:00
eloyoussef 7168052703 Interdiction de facturer plusieurs clients par facture, forçage du partner en client au niveau du view 2018-03-19 15:07:48 +01:00
Fabien BOURGEOIS 82d0df92b4 [TYPO][i18n]On GOLEM Family (form) 2018-03-18 10:32:48 +01:00
Fabien BOURGEOIS 1886ab9828 [i18n]GOLEM Updated translations 2018-03-18 10:26:42 +01:00
Fabien BOURGEOIS 1948f16110 [IMP]GOLEM Family report : add family info on main card report 2018-03-18 10:12:56 +01:00
Fabien BOURGEOIS 39256ec70d [ADD]GOLEM Base : base CSS style for reports 2018-03-18 09:56:07 +01:00
Fabien BOURGEOIS 9e3fb079b3 [FIX][REV][TMP]GOLEM Activity Resgistration State : do not use template ATM, need refactoring 2018-03-18 09:08:21 +01:00
Fabien BOURGEOIS 545235d71a [REF]GOLEM Membership report : move to right directory 2018-03-18 07:05:06 +01:00
Fabien BOURGEOIS 36124d4ac4 [IMP][TMP]GOLEM Activity Resgistration State : do not use template ATM, need refactoring 2018-03-18 07:04:45 +01:00
eloyoussef d620fb18b8 Affichage du facture apres sa création, automatiquemet et via bouton 2018-03-18 01:18:22 +01:00
eloyoussef 5caa210dcc filtrage du statut de facturation et fonction de search sur le champs calculé 2018-03-17 16:23:39 +01:00
Fabien BOURGEOIS 4fada24ac7 [REF][IMP]GOLEM Family Card templates refactoring 2018-03-17 15:20:59 +01:00
Fabien BOURGEOIS 2a3b17d354 [REF][MOV]GOLEM Member should not contain acitivty registration information, move to right module 2018-03-17 15:20:36 +01:00
Fabien BOURGEOIS 8d80c1d5b3 [TYPO]Copyright notices on report family 2018-03-17 14:22:22 +01:00
Fabien BOURGEOIS 4cd882e5e6 Merge branch 'michel_report_family' 2018-03-17 14:19:54 +01:00
Fabien BOURGEOIS df6f3c60e8 [IMP]GOLEM Resource : bump version and updated dependency (golem_base is needed, for security) 2018-03-17 09:38:29 +01:00
Fabien BOURGEOIS bdbc7177e8 [IMP]GOLEM Resource tests : now in english per default 2018-03-17 09:38:29 +01:00
Fabien BOURGEOIS a3807d0354 [i18n]GOLEM Resource updated translation 2018-03-17 09:38:29 +01:00
Fabien BOURGEOIS da00acea29 [IMP]GOLEM Resource Timetable : usage of default values for time_start/stop on contraint + requirement only on client side 2018-03-17 09:38:29 +01:00
Fabien BOURGEOIS 398a3e7f63 [IMP]GOLEM Resource check : better performance with pre-calculation and restricted domain search for conflicts 2018-03-17 08:39:43 +01:00
Fabien BOURGEOIS d5cc394967 [IMP]GOLEM Resource : computes day and hour start for better model sorting 2018-03-17 07:58:04 +01:00
eloyoussef 4aea2c069f suite des modifications : ajout du status de facturation sur reservation list 2018-03-16 18:38:18 +01:00
eloyoussef 5b7627f667 quelque modification non terminé 2018-03-16 16:13:18 +01:00
eloyoussef c3f7ee1bb4 Ajout du Facturation multi ligne depuis action 2018-03-16 16:04:33 +01:00
eloyoussef 72739a2df6 Facturation individuel depuis reservation_form 2018-03-15 17:28:21 +01:00
eloyoussef ff70e46612 Ajout du fonction de test multidays + correction du code 2018-03-12 19:28:21 +01:00
eloyoussef 0dda362d78 mise à jours du test avec date_start et date_stop 2018-03-12 15:34:43 +01:00
eloyoussef 41876e19c0 Correction de test 2018-03-12 14:55:47 +01:00
eloyoussef 2a5c426bb2 correction des bugs au niveau de la fonction de confirmation d'une reservation 2018-03-12 12:48:09 +01:00
eloyoussef e52c9028fa ajout du fonction de verification de conflit de réservation 2018-03-11 21:50:18 +01:00
Fabien BOURGEOIS 1004254314 [FIX]GOLEM Resource Reservation avaibility period should be always visible 2018-03-10 08:33:43 +01:00
Fabien BOURGEOIS 7dac90da95 [UPD]Bump GOLEM Resource version for 24/7 avaibility 2018-03-10 08:16:26 +01:00
Fabien BOURGEOIS 9a436aa264 [i18n]Updated translation 2018-03-10 08:15:46 +01:00
Fabien BOURGEOIS 0f1043a2fc [i18n]GOLEM Resource : now we have translated, error messages are in the only default installed lang 2018-03-10 08:12:10 +01:00
Fabien BOURGEOIS 57012084fc [ADD]GOLEM Resource avaibility 24/7 unit test 2018-03-10 08:11:36 +01:00
Fabien BOURGEOIS ac9b1fa4e0 [IMP]GOLEM Resource : if avaibility 24/7, no need to see avaibility info on reservation 2018-03-10 07:53:04 +01:00
Fabien BOURGEOIS 7f19960a43 [] 2018-03-10 07:51:36 +01:00
Fabien BOURGEOIS 465a25de6e [REF]GOLEM Resource : new calendar and list of reservations should be on resource, not on reservation (+code refactoring) 2018-03-10 07:44:24 +01:00
eloyoussef b3705b95ef depasser la verification du jours et heurs en cas de disponibilité total 2018-03-09 14:30:58 +01:00
eloyoussef 5163b7535c Ajout du champs de la disponiblité total sur la resource 2018-03-09 13:54:52 +01:00
eloyoussef b895de05ba correction basique 2018-03-09 13:18:52 +01:00
eloyoussef 8e51e46a0b Ajout des smart button pour la liste des reservation et calendrier du resource en cours 2018-03-09 13:03:49 +01:00
Fabien BOURGEOIS dfe47d1d96 [IMP]GOLEM Resouce : new note field 2018-03-09 08:44:17 +01:00
Fabien BOURGEOIS f8bf3db588 [i18n]Updated translations 2018-03-08 16:17:10 +01:00
Fabien BOURGEOIS 75726a8302 [IMP]GOLEM Member Report Card : enhance names of printing 2018-03-08 16:08:50 +01:00
Fabien BOURGEOIS f9067e578f [REF][IMP]GOLEM Membership member card report : do not use multiple pages finally 2018-03-08 15:40:04 +01:00
Fabien BOURGEOIS 027eaf0a9b [MOV]GOLEM Membership member card report move 2018-03-08 15:40:04 +01:00
Fabien BOURGEOIS 9898a98da1 [REF][FIX]GOLEM Member card membership section 2018-03-08 15:40:04 +01:00
Fabien BOURGEOIS 8ee4aca5f4 [WIP][REF][FIX]GOLEM Member card : only default season and refactoring 2018-03-08 15:40:04 +01:00
Fabien BOURGEOIS e7c8a4d5e4 [FIX][WIP]GOLEM Member membership report : avoid bug if there are multiple lines 2018-03-08 11:08:31 +01:00
Fabien BOURGEOIS e98cf57228 [REF][WIP]GOLEM Member report with better formatting per default 2018-03-08 11:07:55 +01:00
Fabien BOURGEOIS e5a9f4cd91 [IMP]GOLEM Activity : reset dates to season one if boolean fullseason is used 2018-03-08 11:06:53 +01:00
Fabien BOURGEOIS 9c241f4078 [MOV]GOLEM Member report renaming / move 2018-03-08 09:56:22 +01:00
Fabien BOURGEOIS d0f2d9eb89 [TYPO]Copyright typos 2018-03-08 09:53:20 +01:00
Fabien BOURGEOIS da04cd5329 Merge branch 'master' into michel_qweb_adherents 2018-03-08 09:09:35 +01:00
Fabien BOURGEOIS 5f2da1db97 [ADD]GOLEM Activity Queue : base and french translations 2018-03-07 20:05:12 +01:00
Fabien BOURGEOIS 15019ad0f2 [REF][TYPO]GOLEM Activity Queue : remove useless wizard and typo improve last one 2018-03-07 11:14:46 +01:00
Fabien BOURGEOIS 21e7ed9b5c [REF]GOLEM Activity Queue : huge refactoring for tests 2018-03-07 11:14:46 +01:00
Fabien BOURGEOIS 22fbbe4d11 [REF]GOLEM Activity Queue : usage of qualified contraint instead of overloading write (more efficient) 2018-03-07 11:14:41 +01:00
Fabien BOURGEOIS 2f5b1a776b [IMP]GOLEM Activity Queue : member model refundation, conflicts with activity avoided 2018-03-07 09:36:49 +01:00
Fabien BOURGEOIS 225ea78f4c [IMP]GOLEM Activity Queue : usage of constrains instead of write, and few enhancements in onchange logic 2018-03-07 09:36:06 +01:00
Fabien BOURGEOIS b5e7a52789 [FIX}GOLEM Activity Queue order should be sequence then older (id asc), thanks Youssef for pointing it 2018-03-06 19:48:33 +01:00
Fabien BOURGEOIS 963bfa7cb1 [REF]GOLEM Activity Queue : huge refactoring around activity methods + fixes 2018-03-06 11:47:29 +01:00
Fabien BOURGEOIS bcfb01e5b0 [IMP]GOLEM Activity Queue : activity form UI reorganization, simplification 2018-03-06 10:35:12 +01:00
Fabien BOURGEOIS c3b21987c9 [REF]GOLEM Activity Queue : check if registration is already done can be made from member directly 2018-03-06 10:05:50 +01:00
Fabien BOURGEOIS 80ef3f26a6 [REV]GOLEM Activity Queue : partly revert last commit 2018-03-06 10:00:09 +01:00
Fabien BOURGEOIS b094dcee19 [REF]GOLEM Activity Queue : SQL constrains is sufficient, no need to double check with Pytho constraint here 2018-03-06 09:53:58 +01:00
Fabien BOURGEOIS b717c8fbf5 [REF]GOLEM Activity Queue : do not use field full activity, as places_remain is enough 2018-03-06 09:45:57 +01:00
Fabien BOURGEOIS 23a52fe1ea [FIX]GOLEM Season : fix season_id field, in conflict with inherited season_id from golem.activity 2018-03-06 08:16:15 +01:00
Fabien BOURGEOIS 61035a9fb2 Merge branch 'youssef_queue' 2018-03-06 07:38:36 +01:00
Fabien BOURGEOIS 4dcfd11a55 [FIX]GOLEM Activity Queue form was dependent of golem_activity_place field 2018-03-06 07:38:14 +01:00
Fabien BOURGEOIS a7173cdb22 [QUA][TYPO]GOLEM Activity Queue : little typos / quality enhancements 2018-03-06 07:31:41 +01:00
eloyoussef faee2e5e27 mise en forme et correction 2018-03-05 12:40:33 +01:00
eloyoussef cc929e73a9 Ajout du test de suppression du membre de l'attente sil s'inscrit sur activité 2018-03-05 12:35:32 +01:00
eloyoussef 0a99877589 Ajout du test d'inscription en attente à travers l'assistant 2018-03-05 12:18:37 +01:00
Fabien BOURGEOIS cf5ded7e45 Merge branch 'michel_qweb_adherents' of ssh://git.yaltik.net:61722/michel/GOLEM into michel_qweb_adherents 2018-03-04 06:38:05 +01:00
eloyoussef 3f3bdcdb0d Ajout du test d'interdiction sur attente si déja inscrit sur activity 2018-03-02 23:41:19 +01:00
eloyoussef a52a5d3901 Ajout du test autoregistration from queue sur activité 2018-03-02 19:37:01 +01:00
eloyoussef 03cd05762a Ajout du test de la fonction d'activation et désactivation de l'attente 2018-03-02 19:21:45 +01:00
eloyoussef 8dcc29e578 Ajout du test de basculement automatique au cas de desincription depuis membre 2018-03-02 18:16:06 +01:00
eloyoussef afc3c3acf9 Ajout du test de création du membre : test de la liste des attentes vide 2018-03-02 14:37:08 +01:00
eloyoussef 1faad1bf15 1er version des tests fonctionnels 2018-03-02 13:59:34 +01:00
eloyoussef 375fe6b552 Ajout des initiations en test unitaire 2018-02-28 23:31:30 +01:00
michel e80facbff8 [TMP] Report Family add report member form. 2018-02-28 18:18:09 +01:00
eloyoussef 4fda12364f Mise à jours du code 2018-02-28 13:09:54 +01:00
eloyoussef 5d6c4415cf Mise à jours du code : suppression des blocs inutile et ajout de commentaires 2018-02-28 13:07:03 +01:00
michel 80ac172d62 [TMP] Report family 2018-02-28 09:19:09 +01:00
Fabien BOURGEOIS d701da0c4e [IMP]GOLEM Season updated tests 2018-02-28 08:54:46 +01:00
Fabien BOURGEOIS 0e7e33bada [IMP]GOLEM Season : inverse link with membership products (many products for 1 season) 2018-02-28 08:40:28 +01:00
eloyoussef e4596cbda0 Amélioration du fonction de basculement automatique depuis membre : utilisation vals 2018-02-28 02:06:26 +01:00
eloyoussef 3ab701c8d4 Ajout des boutons de changement de mode d'inscription depuis file 2018-02-27 19:20:12 +01:00
Fabien BOURGEOIS 209013864e [FIX]GOLEM Activity : if season is not on period, do not check start / end dates coherence 2018-02-27 18:49:08 +01:00
Fabien BOURGEOIS 021d70e828 [IMP]GOLEM Season : minor reordering in form, and typo / stule 2018-02-27 18:33:34 +01:00
eloyoussef 17cc3dd906 Ajout du fonction d'activation de queue via un assistant et confirmation de traitement automatisé 2018-02-27 17:27:15 +01:00
eloyoussef 1b3a187543 Ajout de fonction qui supprime les elemetes inscrit en attente en cas de désactivation de l'attente 2018-02-27 16:30:45 +01:00
eloyoussef 08c949d6e2 en cas du basculement suppression des elements de la queue déja inscrit sur l'activité 2018-02-27 15:03:41 +01:00
eloyoussef 533bb81fb9 Amélioration au niveau de plusieures fonction(suppression des doublon et interdiction d'inscription) 2018-02-27 15:00:55 +01:00
michel 0dc0ab06e4 [TMP] Clean typo 2018-02-27 11:54:33 +01:00
michel f02a2eb912 [TMP] Report golem_member and golem_membership PDF style ok 2018-02-27 10:05:14 +01:00
eloyoussef 4d0909bcbf Ajout du filtre pour n'afficher que les activités pleines ou non pleines 2018-02-27 02:10:33 +01:00
eloyoussef ec433ad867 ajout du fonction de basculement automatique si membre fait la desincription depuis fiche membre 2018-02-27 01:36:28 +01:00
eloyoussef b3e32f1cd5 autoriser la suppression d'un element de la liste à golem user 2018-02-26 18:01:21 +01:00
eloyoussef 9dcb1fec3f correction du groupement par état de remplissage d'activité 2018-02-26 17:53:45 +01:00
michel e2fe375869 [TMP] Report membership. 2018-02-26 16:52:29 +01:00
eloyoussef 7bf11db34a Ajout d'un bouton d'inscription en attente depuis fiche membre onglet queue 2018-02-26 16:23:34 +01:00
eloyoussef c4f01dee5e enlvemenet de l'inscription en attente depuis membre sur 2 étapes 2018-02-26 15:45:15 +01:00
eloyoussef c9a4cc5950 cacher onglet d'attente et rendre en lecture seule traitement automatisé au cas d'attente non permis 2018-02-26 13:42:48 +01:00
eloyoussef d479a0ca45 ajout du fonction qui empeche l'inscritption en queue si une inscription existe 2018-02-26 13:27:45 +01:00
michel c176c4aff2 / 2018-02-26 11:14:57 +01:00
eloyoussef 0d4e819e5d Ajout d'un champs suquence et réordonnement manuel de la liste des attentes 2018-02-23 19:38:54 +01:00
eloyoussef 399e55875f organisation du code + ajout de commentaires + suppression des blocs dispensable 2018-02-23 18:51:23 +01:00
eloyoussef 9d0ef62c0e Ajout du fonction d'inscription automatique depuis attente en cas de desincription 2018-02-23 17:54:27 +01:00
eloyoussef 83221ec706 amélioration de la fonction d'inscription automatique depuis la queue 2018-02-23 15:29:19 +01:00
eloyoussef 9c7f5d9502 Verification si le membre a ajouté depuis l'attente n'est pas sur l'inscription et si oui passage au suivant 2018-02-23 01:28:25 +01:00
eloyoussef 03c7ebc3d5 colorisation conditionnelle de la liste des attente + filtre activité liée pleine 2018-02-23 00:22:34 +01:00
eloyoussef 3cc4ec92f0 ajouter fonction pour passer les elements de la liste d'attente en liste d'inscription 2018-02-22 22:59:10 +01:00
michel 54697f78bf / 2018-02-22 18:08:38 +01:00
michel 9fc3922ba1 [TMP] Report payment 2018-02-22 12:23:13 +01:00
eloyoussef b9eeb3a170 Code cleaning + adding domaine to queue registration function 2018-02-21 17:17:55 +01:00
michel 98cd54a8f0 [TMP] Start report payment 2018-02-21 16:49:09 +01:00
michel d5af8e87f6 / 2018-02-21 15:52:10 +01:00
eloyoussef a0af3a680a Code cleaning and finalizing 2018-02-21 14:56:51 +01:00
eloyoussef 98c8ad3767 Add queue liste to activity form 2018-02-21 12:19:28 +01:00
eloyoussef ca326c9ded Add menuitem and access to queue 2018-02-21 10:45:53 +01:00
eloyoussef 5a4cbc54e1 Add domain to member queue register 2018-02-21 10:16:26 +01:00
eloyoussef 9d36047122 correct queue register function 2018-02-21 01:11:53 +01:00
eloyoussef f77a93a1a2 Add wizard to ask member about activity to register 2018-02-20 19:11:15 +01:00
eloyoussef 76315c1d15 Correct function of queue register from activity form 2018-02-20 17:44:40 +01:00
michel d2d752992c [TMP] Report table of invoices 2018-02-20 14:52:31 +01:00
eloyoussef 321b25661a add queue register function to member model 2018-02-20 13:01:04 +01:00
michel 0228a3535b / 2018-02-20 11:44:48 +01:00
michel 1a71c21e5b [TMP] Report golem_activity_registration_state 2018-02-20 10:58:16 +01:00
eloyoussef 78687127f0 Add check remain places in member and add some organisation 2018-02-20 00:15:23 +01:00
eloyoussef 20c57c5e57 organise files and configure the activity queue register button 2018-02-19 23:58:50 +01:00
eloyoussef 07b4ed3d8e Add queue registration button to member form + add module icon 2018-02-19 21:44:30 +01:00
eloyoussef 73f79ca8c2 delete the queue test menu 2018-02-19 18:33:49 +01:00
eloyoussef 9fdb1cbddc Ajout warning au cas de depassement de place 2018-02-19 17:52:39 +01:00
eloyoussef a64d865648 Ajout du popup qui ne s'affiche pas encore 2018-02-19 17:52:39 +01:00
eloyoussef cc23e92232 1er version du golem_activity_queue 2018-02-19 17:52:39 +01:00
michel e90da41656 / 2018-02-19 17:03:29 +01:00
michel 0b6b8e0cfb / 2018-02-19 17:00:00 +01:00
michel f15fcbd222 / 2018-02-19 16:22:29 +01:00
michel 5a93c3c0bd [TMP] report inherit it don't work. 2018-02-19 12:08:29 +01:00
Fabien BOURGEOIS 211a44ab4e [i18n]GOMEM Resource i18n and french translation 2018-02-19 09:49:03 +01:00
Fabien BOURGEOIS 2f22a7c6d7 [ADD]GOLEM Resource Reservation testing 2018-02-19 08:01:35 +01:00
Fabien BOURGEOIS 8490e89959 [TYPO] 2018-02-19 08:01:20 +01:00
Fabien BOURGEOIS 896259dd7f [IMP]GOLEM Resource Reservation : do not allow same hour for start and stop + usage of ValidationError instead of UserError 2018-02-19 08:00:55 +01:00
Fabien BOURGEOIS 94f905b90e [ADD]GOLEM Resource Timetable tests
[IMP]Do not allow equal times between start and stop
2018-02-19 06:50:04 +01:00
Fabien BOURGEOIS cb74acb4e6 [ADD]GOLEM Resource tests
[IMP]Resource validation to False, check dates
2018-02-19 06:49:35 +01:00
Fabien BOURGEOIS aeefceb970 Merge branch 'fabien_resources' 2018-02-18 17:37:16 +01:00
Fabien BOURGEOIS 4c9921c8d8 [UPD]Bump GOLEM Resource version 2018-02-18 17:36:46 +01:00
Fabien BOURGEOIS 05d5cc5cda [FIX]GOLEM Resource : reservation can end at the same time new begin 2018-02-18 17:36:32 +01:00
Fabien BOURGEOIS 518d2c8348 [IMP]GOLEM Resource : add ordering 2018-02-18 17:36:01 +01:00
Fabien BOURGEOIS 977e817326 [ADD]GOLEM Resource : add social abilities on resource and reservation, and track fields on reservation 2018-02-18 17:30:11 +01:00
Fabien BOURGEOIS a5d4e5feb3 [FIX]GOLEM Resource Reservation : dot not allow edit on avaibility fields from reservation form 2018-02-18 17:29:16 +01:00
Fabien BOURGEOIS 6933755fdd [ADD]GOLEM Resource : timetable own tree 2018-02-18 17:18:09 +01:00
Fabien BOURGEOIS 5c87abbbbc [IMP]GOLEM Resource Reservation : display avaibility period and timetable on reservation 2018-02-18 17:17:32 +01:00
Fabien BOURGEOIS bf5314f54f [ADD]GOLEM Resource Type : new direct search on name 2018-02-18 16:55:44 +01:00
Fabien BOURGEOIS 1182d1299b [IMP]GOLEM Resource Reservation tree : new fields, and search : new filters, groups... 2018-02-18 16:55:24 +01:00
Fabien BOURGEOIS 3fbb3fe187 [TYPO]GOLEM Resource : better meaning for reject/validate 2018-02-18 16:43:33 +01:00
Fabien BOURGEOIS 8c59738e3b [IMP]GOLEM Resource reservation form : better organization, fields as invisible when not needed, buttons too 2018-02-18 16:41:50 +01:00
Fabien BOURGEOIS d1c178aa8c [IMP]GOLEM Resource : many enhancements like correct usage of states and readonly everytime but not on draft, access checking server side for validate/reject, fixes on main constraint 2018-02-18 16:41:01 +01:00
Fabien BOURGEOIS 2223b88930 [IMP]GOLEM Resource : small enhancements around form and timetable model 2018-02-18 14:53:53 +01:00
Fabien BOURGEOIS fb89650aa1 [REF]GOLEM Resources : now each model has its file, its view too (better for debugging) 2018-02-18 14:10:30 +01:00
Fabien BOURGEOIS 14729e73f1 [MOV]Rename golem_ressources module to golem_resource, and apply the same thing of filenames 2018-02-18 13:58:33 +01:00
Fabien BOURGEOIS 2c7fb63984 [REF]GOLEM Resource : view reorganization 2018-02-18 13:51:46 +01:00
Fabien BOURGEOIS e1f2a2a47a [ADD]GOLEM Resource : new base security for all models 2018-02-18 13:45:31 +01:00
Fabien BOURGEOIS fe0d57dffc [REF]GOLEM Resources : huge code refactoring, renamings etc. 2018-02-18 13:45:31 +01:00
Fabien BOURGEOIS 2b70d2c1b0 [REF]GOLEM Resources : wizard should be in wizard folder 2018-02-18 08:55:13 +01:00
Fabien BOURGEOIS 661c7fecfe [IMP]GOLEM Resource reservation rejection : enhance quality, use more common idioms 2018-02-18 08:20:39 +01:00
Fabien BOURGEOIS 89319bd7e5 [IMP]GOLEM Resources : add icon, menu reorganization 2018-02-18 07:59:24 +01:00
Fabien BOURGEOIS 9f9459df45 [TYPO]Add updated copyright notices 2018-02-18 07:27:32 +01:00
Fabien BOURGEOIS 55575baa21 Merge branch 'michel_qweb_adherents' of ssh://git.yaltik.net:61722/michel/GOLEM into michel_qweb_adherents 2018-02-17 14:34:18 +01:00
michel 01bf414187 [TMP] Report golem_activity_registration_state inherit golem_member 2018-02-16 17:47:52 +01:00
michel 779405e492 [TMP] Report of membership. 2018-02-16 10:13:56 +01:00
michel 6accf16b78 / 2018-02-15 18:40:49 +01:00
michel 21b16ad08f / 2018-02-15 18:30:25 +01:00
michel d6d265e7c5 / 2018-02-15 18:05:57 +01:00
michel 6e30c39569 [TYPO] 2018-02-15 10:16:51 +01:00
michel 26c592204b [BUG] Add option saison field 2018-02-15 10:15:54 +01:00
michel 6043beb577 / 2018-02-15 09:18:29 +01:00
eloyoussef 02aef2093a Ajout du wizard en cas de refus + Validation au cas ou ressource le permet 2018-02-14 13:44:37 +01:00
michel cccd4dfce0 Season fields 2018-02-13 18:48:16 +01:00
michel cec41edc7f [TMP]Qweb report work in proges 2018-02-13 18:13:43 +01:00
michel f3260ca757 [Bug] Add fonction to Get default season 2018-02-13 16:30:15 +01:00
michel 680604aecc / 2018-02-13 15:07:17 +01:00
eloyoussef eccc217882 Ajout des boutons de validation et du filtre sur la liste des résérvation 2018-02-13 15:04:55 +01:00
eloyoussef b389be7bbc Adding fields to resources and reservation : Validation 2018-02-13 14:00:16 +01:00
eloyoussef 602a6a778d Merge branch 'youssef_resources' 2018-02-13 13:48:19 +01:00
michel af14fb6dd0 [TMP] Create Qweb report of members 2018-02-13 12:36:44 +01:00
Fabien BOURGEOIS bf8fc34b6b [IMP][QUa]GOLEM Member Account enhancements : styles, tree removal (perf), renamings, copyright notices... 2018-02-12 18:54:56 +01:00
michel bfa9298cef [TMP] 2018-02-12 17:45:34 +01:00
michel d53231739d [Translate] to FR 2018-02-12 16:56:05 +01:00
michel 624181c903 [TMP] 2018-02-12 16:30:28 +01:00
eloyoussef 6e4cae64f4 prendre en compte les remarques relatives aux réservation sur une période d'indisponibilité 2018-02-12 16:05:52 +01:00
michel e4ea0a3187 [TMP] state last payment on member form and tree viwes 2018-02-12 16:00:06 +01:00
michel c296a75bb4 / 2018-02-12 10:58:27 +01:00
michel 1ef8c5a6aa / 2018-02-12 08:54:45 +01:00
eloyoussef 3766f49805 1er version du modèle reservation, avec contraintes de disponibilité operationnelles 2018-02-10 00:05:36 +01:00
michel c844cf732f [TMP] beginning of state of last invoice 2018-02-09 19:44:18 +01:00
michel 30d218c64e / 2018-02-09 15:59:27 +01:00
michel a36a3952d0 / 2018-02-09 14:34:39 +01:00
michel 1531a3c7b8 [TMP] beginning of state of last invoice 2018-02-09 14:30:08 +01:00
eloyoussef 7dc2213593 Réalisation des améliorations proposés. 2018-02-08 23:21:33 +01:00
michel 5f8433e112 [TMP] No edit saison 2018-02-08 17:14:49 +01:00
michel e26cd1c149 [New] Module Golem member account 2018-02-08 17:01:41 +01:00
eloyoussef 15a23e460f Améliorations syntaxiques 2018-02-08 12:22:52 +01:00
eloyoussef 3a42ea0a54 finalisation du smart button et contraint d'heure 2018-02-08 12:02:46 +01:00
michel 8c102ff103 [TMP] Button style and currency 2018-02-08 10:18:04 +01:00
michel 7e236226b7 [TMP] Add Smartbutton invoices in member form 2018-02-08 09:22:26 +01:00
eloyoussef 4cec863372 Adding comments to views and fixing the availibility configuration 2018-02-08 00:58:23 +01:00
eloyoussef 25acf52d5e Ajout d'un modèle hour pour la gestion des horaires de disponibilité 2018-02-07 18:13:02 +01:00
eloyoussef 7eda2d4a98 Comments added to models 2018-02-07 10:16:12 +01:00
eloyoussef d814343758 first version of golem ressource, models : resources and reservation 2018-02-07 01:44:48 +01:00
michel 293109fe3c open_partner_invoices 2018-02-06 19:18:11 +01:00
michel 4d01b8d074 [TMP] Add Smartbutton invoices in member form 2018-02-06 14:41:55 +01:00
michel edd333f0ae [TMP] Change color if is payment delayed. 2018-02-06 10:38:18 +01:00
michel 68480e421d [TMP] filter and group date OK 2018-02-05 17:02:55 +01:00
michel ee432805c4 [TMP] filter date 2018-02-05 15:56:52 +01:00
michel df9cdede2d [Typo] 2018-02-05 11:51:57 +01:00
michel a4237fd1c9 [TMP] filter payment in seven days and thirty days 2018-02-05 11:51:20 +01:00
michel d53795aad4 [TMP] Form view 2018-02-05 11:20:45 +01:00
michel 8b9eb0150f [TMP]Add field reference in tree and Typo in model 2018-02-02 18:29:10 +01:00
michel 23caebbce9 [TMP]Add payment_date filter and groupe search 2018-02-02 18:08:16 +01:00
michel 197e9705e0 [TMP] Add field reference 2018-02-02 16:27:45 +01:00
michel 66208d8ca4 [TMP)Add field number bank check 2018-02-02 13:58:36 +01:00
michel fdecad9b99 [TMP]Filter date 2018-02-02 13:57:39 +01:00
michel 503d482c25 [TMP] Translate FR 2018-02-01 18:29:09 +00:00
michel 1307a5458b [TMP]Update number 2018-02-01 18:29:09 +00:00
michel f314c3a76f [TMP] Text msg check_period 2018-02-01 18:29:09 +00:00
michel 52ef7282d6 [TMP) Computed for is_fullseason 2018-02-01 18:29:09 +00:00
michel 797461ab9e [TYPO]readonly 2018-02-01 18:29:09 +00:00
michel d2f379aeef [TMP) add computed for is_fullseason 2018-02-01 18:29:09 +00:00
michel 2310a56a1b [TMP] Display date in if_recurent 2018-02-01 18:29:09 +00:00
michel 8333992f1a / 2018-02-01 18:29:09 +00:00
michel dc88b0d9c4 [TMP] Date for is_recurent. 2018-02-01 18:29:09 +00:00
michel 22118011ce [TMP] Msg and check activity date start end date stop. 2018-02-01 18:29:09 +00:00
michel f8fb3b914d [TMP]Version update and author. 2018-02-01 18:29:08 +00:00
michel 31632cad9b [TMP] msg 2018-02-01 18:29:08 +00:00
michel 163e4d2d1c [TMP] Check the date start ans date end related to season date 2018-02-01 18:29:08 +00:00
michel 03e56bd8e3 [TMP] Check the date start ans date end related to season date 2018-02-01 18:29:08 +00:00
michel ddfedce0cf [TMP] Check the date start ans date end related to season date 2018-02-01 18:29:08 +00:00
Fabien BOURGEOIS 05c11c52cd [IMP]GOLEM Family : allow family creation from member, only if saved, with current member as first one 2018-01-29 16:01:36 +01:00
Fabien BOURGEOIS 4e2cee7d05 [IMP]GOLEM Family : after michel new features merging, some typos 2018-01-29 15:35:52 +01:00
Fabien BOURGEOIS f30bd35a81 Merge branch 'michel_famille' 2018-01-29 15:25:16 +01:00
michel 2c5ea62f0e [TMP]famille to Famille 2018-01-29 10:16:17 +01:00
michel f033db0e1b [TMP]famille to Famille 2018-01-29 09:55:10 +01:00
michel 36b0440dd6 [TMP] form family in form member and translate fr 2018-01-26 19:03:51 +01:00
michel 213fe4005c [tmp]/ 2018-01-26 17:51:50 +01:00
michel cc0c6b9b61 [TMP]If family member family notbook is visible 2018-01-26 13:51:37 +01:00
michel ed34d84a18 / 2018-01-25 15:45:06 +01:00
michel 08510d0762 [TMP]Family form in member form 2018-01-25 14:26:59 +01:00
michel d69f8f7a10 [TMP]Family form in member form 2018-01-25 13:39:07 +01:00
michel 4232d3da73 [TMP]Title style 2018-01-25 10:13:36 +01:00
michel 3b300442b2 [TMP]Display family info in member 2018-01-25 10:02:03 +01:00
michel 79222a4b94 [TMP] add context default_family_id 2018-01-23 16:16:40 +01:00
michel 6d206e0795 [TMP] check if member.family_id 2018-01-23 15:28:56 +01:00
michel ff6b67e27b [TMP] Add Sets as family address if there was no precedence 2018-01-23 15:00:02 +01:00
michel 5714cab5ad [TMP]Add test on zip and city 2018-01-23 11:36:54 +01:00
michel 1a57c993e1 [TMP]update if family.member 2018-01-23 11:14:39 +01:00
michel 94df44087b [TMP]context check 2018-01-23 11:12:48 +01:00
michel 1f974cc217 [TMP]No delete member in member family list 2018-01-23 10:42:15 +01:00
michel 79c683b047 [TMP]Onchange adresse family 2018-01-22 17:47:50 +01:00
michel 57c206039e / 2018-01-22 17:18:49 +01:00
michel e5cf4ad9d4 [TMP] change metode onchange_member 2018-01-22 12:37:06 +01:00
michel 3c795728b5 / 2018-01-22 09:26:22 +01:00
Fabien BOURGEOIS 14220f938b [TYPO]Bad fields on season testing 2018-01-19 07:54:47 +01:00
michel 30dad99689 [TMP] change metode onchange_member 2018-01-18 16:11:36 +01:00
michel c5b86c609e [TMP]Translate FR/fr, and unit test 2018-01-18 15:27:35 +01:00
michel 39fc7085b2 [TMP] Add groupe family 2018-01-18 14:19:50 +01:00
michel de2ac3d99b [TMP] Remove smart button family 2018-01-18 11:29:41 +01:00
michel 9bef8ef4ca [TMP] Sets as member address if there was no precedence 2018-01-18 11:07:36 +01:00
michel e7ba4b91f8 [TMP] Test if date_start date_end is required and vice-versa AND unit test 2018-01-17 15:44:43 +01:00
michel 8cf4a1f07f [TMP] Unit test 2018-01-17 11:18:20 +01:00
michel 409cf1e04a [TMP] Test if date_start date_end is required and vice-versa AND unit test 2018-01-17 11:13:49 +01:00
michel 6bc231fd1e [TMP] Test if date_start date_end is required and vice-versa 2018-01-16 19:23:33 +01:00
michel 5442ab5af3 [TMP] check date and check date in constrains and raise validation error 2018-01-16 17:08:15 +01:00
michel 0841d1de36 [TMP] field name required=True 2018-01-16 11:51:32 +01:00
Fabien BOURGEOIS 28407b4acf [FIX]GOLEM SEASON : use update for onchange + unit test warning on membership creation 2018-01-16 10:53:16 +01:00
michel 5143c1d985 [TMP] Test OK ? 2018-01-15 17:03:12 +01:00
michel 126509768d [TMP] Test 2018-01-15 16:25:27 +01:00
michel 7c0746f98d [TMP]Test 2018-01-15 15:48:51 +01:00
michel 96d84546c2 [TMP] Test 2018-01-15 15:47:39 +01:00
michel a0cc9dcb48 [TMP] Test 2018-01-15 15:40:22 +01:00
michel 0bc3ea6ca3 [TMP] Test 2018-01-15 15:37:09 +01:00
michel f21a7b303c [TMP] Test 2018-01-15 14:13:22 +01:00
michel 985b5ec055 [TMP] test 2018-01-15 12:05:01 +01:00
michel 85d545d530 [TMP] Test 2018-01-15 12:00:50 +01:00
michel ec24ee4a48 [TMP] update inchange season date 2018-01-12 09:52:45 +01:00
michel 0e6efdaf46 [TMP] no create membership 2018-01-12 09:50:01 +01:00
michel 0bc15f059e [TMP]Search family 2018-01-11 17:44:19 +01:00
michel 5197aa9935 [TMP] Delete contacts menu 2018-01-11 17:04:42 +01:00
michel f1a4380a85 [TMP] load membership type date if exist 2018-01-11 14:51:18 +01:00
michel 6eb8b69ad9 Strart work search family 2018-01-11 10:03:55 +01:00
michel 485a45f217 [TPM] Membership type -> Link season 2018-01-10 21:51:39 +01:00
michel a3ea12191f [i18n]Update french translation : from golem_season 2018-01-10 17:56:05 +01:00
michel 52137f3829 [TPM] Membership type -> Link season 2018-01-10 17:48:23 +01:00
michel 66c4f8f75a [IMP]Change name of is free, is paid 2018-01-10 10:41:39 +01:00
michel 1d2b6d5123 [IMP]Search per activity and free and paid filters. 2018-01-09 17:15:48 +01:00
Fabien Bourgeois 4e97801780 [i18n]Update french translation : from member to "usager" 2017-06-28 17:29:19 +02:00
Fabien Bourgeois 1b389a3670 [i18n]Tags renamed to categories, for contacts and partners 2017-06-28 17:29:19 +02:00
Fabien Bourgeois a6b65dfa53 [FIX]Season member number generation : avoid useless loop when default season is changed 2017-06-28 16:25:00 +02:00
Fabien Bourgeois 13a7785fe5 [FIX]GOLEM Number config : now correcly handling only for new 2017-06-28 15:38:36 +02:00
Fabien Bourgeois dcefa1dda6 [IMP]Activity duplication : copy category too 2017-06-20 16:41:22 +02:00
Fabien Bourgeois a77b38b74e [FIX]Member problem on onchange parent_id, because member_id is one2many, not many2one : replace member widget on contact form by button 2017-06-20 16:38:24 +02:00
Fabien Bourgeois 444bc1fbf6 [FIX]Security access fixes 2017-06-20 16:37:40 +02:00
Fabien Bourgeois 7421b88b1e [FIX]GOLEM Member Number generation : fix for apply_config without whole recomputing 2017-06-20 08:23:32 +02:00
Fabien Bourgeois 112902d82e [FIX]GOLEM Member : numbers where not correcly fixed as empty when per season 2017-06-20 08:05:11 +02:00
Fabien Bourgeois 1fbfbb24ac [IMP]GOLEM Season tests update to v10 2017-06-20 07:35:02 +02:00
Fabien Bourgeois 58f71503e5 [QUA]Fix tests for activity places (bad import) 2017-06-19 18:14:18 +02:00
Fabien Bourgeois 9660aba19e [FIX]Payment occurence fix : bad loop 2017-06-19 18:14:00 +02:00
Fabien Bourgeois 94dcc2aa7d [FIX]GOLEM Payment : default rights for models 2017-06-15 05:23:58 +02:00
Fabien Bourgeois d37b6c3147 [i18n]French translations updated 2017-06-15 01:22:21 +02:00
Fabien Bourgeois 0b3c3297da [ADD]Registration state : wizard to create invoice and payment, functional state (but not complete ;)) 2017-06-15 01:14:20 +02:00
Fabien Bourgeois 8a1f8dcc48 [ADD][WIP]Registration state : wizrd to create invoice and payments, according to selected schedule 2017-06-14 23:50:35 +02:00
Fabien Bourgeois b51dbb2df7 [ADD]GOLEM Payment, now just with payment schedules 2017-06-14 23:48:18 +02:00
Fabien Bourgeois 97d7702e2d [IMP]Registration view of total on member tree 2017-06-14 23:47:55 +02:00
Fabien Bourgeois 415fcbf64c [IMP]Activity registration : add base price, not invoice on default tree 2017-06-14 22:36:38 +02:00
Fabien Bourgeois 7dfb07b48c [MIG][IMP]GOLEM Membership to v3 2017-06-14 09:06:47 +02:00
Fabien Bourgeois 2925c26369 [IMP]GOLEM Activity : add accounting tab 2017-06-14 08:16:17 +02:00
Fabien Bourgeois 96dce9d261 [IMP]GOLEM Activity registrations : add group by season + improve member acitvities listing 2017-06-07 16:44:32 +02:00
Fabien Bourgeois c6cc973489 [FIX]GOLEM Activity : default category is gone, do not context it on activity list 2017-06-05 18:05:28 +02:00
Fabien Bourgeois 67c428d4dd [FIX]Minor filters should be separated from default season 2017-06-05 17:47:07 +02:00
Fabien Bourgeois 775fef939b [CHG]Major menu reworking for all modules 2017-06-05 17:30:30 +02:00
Fabien Bourgeois 30e0e4fa31 [FIX]Security : base GOLEM user should be able to write on products too (for activities) 2017-06-05 16:29:30 +02:00
Fabien Bourgeois 3ef8132f3d [FIX]Security : base GOLEM user should be partner manager too 2017-06-05 16:00:59 +02:00
Fabien Bourgeois 4d99cd527f [ADD]GOLEM Member number : ability to fix number from 2017-06-05 15:55:50 +02:00
Fabien Bourgeois 203e6434aa [MIG]GOLEM Family Minor glue to v10 2017-06-05 14:57:15 +02:00
Fabien Bourgeois 193c24e2b7 [MIG]GOLEM Family to v10 2017-06-05 12:08:57 +02:00
Fabien Bourgeois 068c327efd [IMP]Activity : best data set for bootstrap categories 2017-06-05 11:27:44 +02:00
Fabien Bourgeois 438ec5ccac [IMP]GOLEM Activity : type are now dynamics and configurables 2017-06-05 11:22:34 +02:00
Fabien Bourgeois 11b8643d21 [ADD]Member : image permission as new field 2017-06-05 10:30:02 +02:00
Fabien Bourgeois 49c5c7481a [IMP]State id according to country id on GOLEM Member + [FIX]number_name field should be empty on creation 2017-06-05 10:02:38 +02:00
Fabien Bourgeois 698efaea53 [FIX][WIP]Avoid merging of member ids by preventing member merge 2017-06-05 09:48:01 +02:00
Fabien Bourgeois 5c6d11526e [i18n]Rename french company to more abstract term 2017-06-05 08:53:10 +02:00
Fabien Bourgeois ad2afa09dc [IMP][UI]Member : add name compsoed with number and name, for form view 2017-06-05 08:46:41 +02:00
Fabien Bourgeois 5ddb5a91e7 [QUA]Minor enhancement for Member class 2017-06-05 08:37:41 +02:00
Fabien Bourgeois e0f517fb45 [FIX]CSS missing for avatar 2017-06-05 08:37:16 +02:00
Fabien Bourgeois f89074e257 [IMP][UI]Add Kanban green box for GOLEM members 2017-06-04 19:03:34 +02:00
Fabien Bourgeois ec9b16c1eb [FIX][UI]Member kanban avatar is now correct sized 2017-06-04 18:14:17 +02:00
Fabien Bourgeois 7f6920b78b [IMP]Member and contact UI form differenciation 2017-06-04 18:03:42 +02:00
Fabien Bourgeois 6c2cd40020 [ADD]Partner merger spinoff when not using CRM module 2017-06-04 17:23:55 +02:00
Fabien BOURGEOIS dd2802da24 [FIX]GOLEM fix default season button (recmputing all is_current) 2017-05-02 01:31:45 +02:00
Fabien BOURGEOIS 4a9cec73c9 [MIG][IMP]GOLEM activity registration place migration to v10, and better guidelines 2017-05-02 00:37:22 +02:00
Fabien BOURGEOIS a955633375 [IMP]Activity registration used place computing : as used by external module, should not be private method 2017-05-01 23:44:36 +02:00
Fabien BOURGEOIS c4d8c5f334 [MIG][IMP]GOLEM activity registration state migration to v10, and better guidelines 2017-05-01 23:43:59 +02:00
Fabien BOURGEOIS 9e7fc9b1a3 [FIX]GOLEM activity form : use name, not only string for <page> field 2017-05-01 23:21:32 +02:00
Fabien BOURGEOIS 96822910a1 [MIG][IMP]GOLEM activity registration migration to v10, and better guidelines 2017-05-01 23:20:04 +02:00
Fabien BOURGEOIS bccf22aa3f [MIG][IMP]GOLEM member skils migration to v10, and better guidelines 2017-05-01 23:19:44 +02:00
Fabien BOURGEOIS 4162f2c259 [MIG][IMP]GOLEM member family quotient migration to v10, and better guidelines 2017-05-01 22:56:16 +02:00
Fabien BOURGEOIS 657a3da259 [i18n]GOLEM Member Skills french translation updated 2017-05-01 22:52:00 +02:00
Fabien BOURGEOIS 13f1db24d9 [FIX]Member kanban view : need image_small field 2017-05-01 22:34:14 +02:00
Fabien BOURGEOIS 4072ae829e [MIG][IMP]GOLEM member minor migration to v10, and better guidelines 2017-05-01 22:18:00 +02:00
Fabien BOURGEOIS 756017a697 [FIX]Member number config default prefix when not fixed 2017-05-01 22:14:29 +02:00
Fabien BOURGEOIS cbec4b22a6 [MIG][IMP]GOLEM member migration to v10, and better guidelines 2017-05-01 19:17:53 +02:00
Fabien BOURGEOIS be30d16435 [MIG][IMP]GOLEM Activity migration to v10, and better guidelines 2017-05-01 17:49:21 +02:00
Fabien BOURGEOIS d8f05b2b11 [TYPO] 2017-05-01 17:23:57 +02:00
Fabien BOURGEOIS 48c081d16f [MIG][IMP]GOLEM Season migration to v10, and better guidelines 2017-05-01 16:27:16 +02:00
Fabien BOURGEOIS 8efabe7ec8 [MIG][IMP]GOLEM Base migration to v10, and better guidelines 2017-05-01 16:26:51 +02:00
Fabien Bourgeois e87e69f951 [REM]useless __init__.py file on top package 2017-04-29 09:17:00 +02:00
Fabien Bourgeois d21083f808 [WIP][CHG]GOLEM migration to v10 2017-04-29 09:16:41 +02:00
Fabien Bourgeois 1b1609687f [IMP]GOLEM Activity Registration : default access 2016-12-04 18:31:43 +01:00
Fabien Bourgeois 8245c63761 [IMP]Activity : form hour_end to more coherent hour_stop 2016-10-26 09:40:38 +02:00
Fabien Bourgeois 2a0d7abc6a [FIX]Remove docstring from manifest files : causing odoo to strangely crash at launch 2016-10-26 08:38:09 +02:00
Fabien Bourgeois 176a8ec377 [REF]Better module version numbering + pylint fixes 2016-10-25 15:14:24 +02:00
Fabien Bourgeois 69f970b115 [QUA]GOLEM Member model Pylint 2016-10-25 15:14:24 +02:00
Fabien Bourgeois 5eccb41829 [IMP]GOLEM Activity Registration Export french translation 2016-10-16 19:16:10 +02:00
Fabien Bourgeois 368d11b23e [FIX]GOLEM Activity Registration Export quick fix for display 2016-10-16 19:16:10 +02:00
Fabien Bourgeois 1101211d7a [ADD]GOLEM Activity Registration Export : basic CSV export for activity members 2016-10-16 18:01:48 +02:00
Fabien Bourgeois 2df15cae29 [IMP]GOLEM Activity Registration State french translation 2016-10-16 11:47:07 +02:00
Fabien Bourgeois 1328a5b303 [FIX]GOLEM Activity Registration State tree view fix 2016-10-16 11:47:07 +02:00
Fabien Bourgeois c98e9331db [FIX][TYPO]GOLEM Activity Registration fr i18n fix 2016-10-16 11:47:01 +02:00
Fabien Bourgeois 4fdbfb8638 [MIG]GOLEM Activity Session Registration State migration withtout sessions... #2 2016-10-16 11:11:14 +02:00
Fabien Bourgeois 986c445080 [MIG]GOLEM Activity Session Registration State migration withtout sessions... 2016-10-16 11:09:29 +02:00
Fabien Bourgeois 90967da7de [IMP]GOLEM Activity : updated french translation 2016-10-16 10:55:28 +02:00
Fabien Bourgeois dcab17ebaa [IMP]GOLEM Activities with default as services, need special data because of property company dependent fields... 2016-10-10 19:57:00 +02:00
Fabien Bourgeois 0958c7777f [IMP]GOLEM Activity Places Extended migration from sessions to new pure activities : end 2016-10-10 18:28:53 +02:00
Fabien Bourgeois 053f58891e [IMP]GOLEM Activity better naming for last tab + renaming of registration places 2016-10-10 18:19:39 +02:00
Fabien Bourgeois c9820c38d8 [IMP]GOLEM Activity Registration french translation adaptations 2016-10-10 18:15:01 +02:00
Fabien Bourgeois 527bbfd01e [IMP]GOLEM Activity Session Registration renaming : last session names in files 2016-10-10 18:08:39 +02:00
Fabien Bourgeois dc37909b19 [IMP][WIP][IMP]GOLEM Activity Places Extended migration from sessions to new pure activities : renaming 2016-10-10 18:08:07 +02:00
Fabien Bourgeois d1db9ae3b6 [IMP]GOLEM Activity Registrations migration from sessions to new pure activities 2016-10-10 17:57:42 +02:00
Fabien Bourgeois 22d3f91e0c [FIX]GOLEM Activity default date_stop to date_end for season 2016-10-10 16:53:00 +02:00
Fabien Bourgeois 56721a1008 [IMP]GOLEM Activity simplification translation 2016-10-10 16:48:38 +02:00
Fabien Bourgeois 6925575c30 [IMP]GOLEM Activity : merge session with main activity and reform views 2016-10-10 16:25:55 +02:00
Fabien Bourgeois bd9b795c4f [ADD][WIP]GOLEM Activity Session Registration States management 2016-10-10 11:28:28 +02:00
Fabien Bourgeois 9dc2228bc4 [IMP]GOLEM Activity Session Registrations : no state and not yet invoicing so no invoice mentions needed ATM 2016-10-10 11:21:39 +02:00
Fabien Bourgeois 30ddbbccc2 [IMP]GOLEM Activity Session Registrations simplification : no state handling per default 2016-10-10 11:09:57 +02:00
Fabien Bourgeois d13f19aed9 [IMP]GOLEM Session Activity Registration : let removal of already canceled registrations happen 2016-10-09 12:47:08 +02:00
Fabien Bourgeois ba7aa76952 [FIX]GOLEM Session Activity Registration : correct handling of places used and remaining according to registration state 2016-10-09 12:43:23 +02:00
Fabien Bourgeois fea7494efc [IMP]GOLEM Activity Session Registration form for members : readonly when member is not yet created 2016-10-09 12:37:09 +02:00
Fabien Bourgeois c2d2b0481e [IMP]GOLEM Activity Session Registration handling of cancelations 2016-10-09 11:01:09 +02:00
Fabien Bourgeois 150dcec468 [IMP]GOLEM Base : adapt base dependencies 2016-10-09 11:00:43 +02:00
Fabien Bourgeois ebe3c9bde5 [IMP]GOLEM Activity Session Registration state validation from draft to confirmed 2016-09-22 17:15:14 +02:00
Fabien Bourgeois eb062cae35 [IMP]GOLEM Activity Session Registration state field for validation 2016-09-22 14:55:57 +02:00
Fabien Bourgeois 3485948978 [IMP]GOLEM Activity Session Registration add the capacity to create new registrations from tree 2016-09-22 14:08:52 +02:00
Fabien Bourgeois 2cef0be513 [IMP]GOLEM Activity Session Registration : translations up-to-date 2016-09-22 14:00:01 +02:00
Fabien Bourgeois a36c88a113 [IMP]GOLEM Activity Session Registration : use SQL constraint when possible, forbids duplicates 2016-09-22 13:53:33 +02:00
Fabien Bourgeois 7ea95dbac8 [IMP][FIX][WIP]GOLEM Activity Session Registration constraints for avoid duplicates or bad season subscription 2016-09-22 11:08:03 +02:00
Fabien Bourgeois 65898e80b7 [IMP]GOLEM Activity Session Registration : usage of existing related is_current instead of reocmputed default_season + fixes on registrations from activities 2016-09-22 10:24:28 +02:00
Fabien Bourgeois 5b233e19ee [IMP]GOLEM Activity Session Registrations filters and searches 2016-09-22 10:15:02 +02:00
Fabien Bourgeois 0608acf109 [ADD]GOLEM Activity Session Registrations French Translation 2016-09-22 10:13:15 +02:00
Fabien Bourgeois f29c78aa71 [IMP]GOLEM Registration from Activity Session Form 2016-09-22 09:06:13 +02:00
Fabien Bourgeois 2359854ba8 [ADD]GOLEM Activity Session Registrations : adapt session view and move all places management to new paradigm 2016-09-21 18:22:01 +02:00
Fabien Bourgeois 419feb58c5 [IMP]GOLEM Activity Session : 20 places per default, not 0 2016-09-19 05:35:44 +02:00
Fabien Bourgeois 93d9b235e5 [FIX]GOLEM Activity Session Place : do not replace full search view but inherit from it ! 2016-09-16 11:12:47 +02:00
Fabien Bourgeois aa11f6d09f [ADD]GOLEM Session Registration subscription form member view to new system ok 2016-09-16 08:41:41 +02:00
Fabien Bourgeois c1568a15af [IMP]GOLEM Activity Session list : show default season per default 2016-09-15 17:56:48 +02:00
Fabien Bourgeois 30a3da45dc [FIX][MINOR]Bad filename 2016-09-15 17:24:22 +02:00
Fabien Bourgeois 6091683c75 [TMP][ADD]GOLEM Activity Session Registration and link to invoice 2016-09-15 16:28:27 +02:00
Fabien Bourgeois a292fd13b0 [IMP]GOLEM Activity Session on GOLEM Member view : explain only current seasons are shown 2016-09-09 16:11:54 +02:00
Fabien Bourgeois d135d09661 [FIX]GOLEM Activity Session : default_code belong to product template, not session 2016-09-09 16:01:20 +02:00
Fabien Bourgeois 082b450b19 [IMP]GOLEM family : translation improvements 2016-09-09 11:08:37 +02:00
Fabien Bourgeois 5950846e1e [ADD]GOLEM Family KANBAN view 2016-09-08 12:45:35 +02:00
Fabien Bourgeois b62da94ded [FIX]Add one2many kanban contribution and fix by serpentcs 2016-09-08 12:45:35 +02:00
Fabien Bourgeois f891024ce0 [ADD]GOLEM Member Kanban view 2016-09-08 12:45:35 +02:00
430 changed files with 29665 additions and 5059 deletions

View File

@ -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
@ -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.0',
'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']
}

View File

@ -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

View File

@ -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>&gt;"
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>&gt;"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Reference : </strong>&gt;"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Season : </strong>&gt;"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Start Hour : </strong>&gt;"
msgstr ""
#. module: golem_activity
#: model:ir.ui.view,arch_db:golem_activity.golem_activity_report_template
msgid "<strong>Stop Hour : </strong>&gt;"
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 ""

View File

@ -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

View File

@ -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)

View 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

View 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>

View File

@ -1,3 +1,15 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
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_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_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_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_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_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_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

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_product_template_user Access Product Template User product.model_product_template golem_base.group_golem_user 1 1 1 0
3 access_product_template_manager Access Product Template Manager product.model_product_template golem_base.group_golem_manager 1 1 1 1
4 access_product_product_user Access Product Product User product.model_product_product golem_base.group_golem_user 1 1 1 0
5 access_product_product_manager Access Product Product Manager product.model_product_product golem_base.group_golem_manager 1 1 1 1
6 access_product_price_history_user Access Product Price History User product.model_product_price_history golem_base.group_golem_user 1 1 1 0
7 access_product_price_history_manager Access Product Price History Manager product.model_product_price_history golem_base.group_golem_manager 1 1 1 1
8 access_product_category_user Access Product Category User product.model_product_category golem_base.group_golem_user 1 0 0 0
9 access_product_category_manager Access Product Category Manager product.model_product_category golem_base.group_golem_manager 1 1 1 1
10 access_golem_activity_user Access GOLEM Activity User model_golem_activity golem_base.group_golem_user 1 1 1 0
11 access_golem_activity_manager Access GOLEM Activity Manager model_golem_activity golem_base.group_golem_manager 1 1 1 1
12 access_golem_activity_type_user Access GOLEM Activity Type User model_golem_activity_type golem_base.group_golem_user 1 1 1 0
13 access_golem_activity_type_manager Access GOLEM Activity Type Manager model_golem_activity_type golem_base.group_golem_manager 1 1 1 1
14 access_golem_activity_audience_user Access GOLEM Activity Audience User model_golem_activity_audience golem_base.group_golem_user 1 1 1 0
15 access_golem_activity_audience_manager Access GOLEM Activity Audience Manager model_golem_activity_audience golem_base.group_golem_manager 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@ -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):

View File

@ -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>

View File

@ -0,0 +1,226 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright 2017-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" 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" />
<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"
web_icon="golem_activity,static/description/icon.png" />
<menuitem id="golem_activity_menu_list" name="Activities"
groups="golem_base.group_golem_user"
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" />
<menuitem id="golem_activity_type_menu_list" name="Activity Types"
groups="golem_base.group_golem_manager"
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"
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"
action="product_category_action" />
</data>
</odoo>

View File

@ -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']
}

View 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"

View 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 ""

View File

@ -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

View File

@ -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)

View File

@ -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

View File

@ -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()

View File

@ -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 &lt; places_min; red: places_remain == 0; orange: places_remain &lt;= 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>

View 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

View 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'
]
}

View 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"

View 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 ""

View 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

View 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)
}
}

View 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'))

View 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),
}
}

View File

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 golem_activity_queue_user_rule GOLEM Activity Queue User Rule model_golem_activity_queue golem_base.group_golem_user 1 1 1 1
3 golem_activity_queue_manager_rule GOLEM Activity Queue Manager Rule model_golem_activity_queue golem_base.group_golem_manager 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View 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

View 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)

View 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])

View 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)

View 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', '&gt;', 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 &gt;= 1">
<field name="sequence" widget="handle"/>
<field name="member_id"/>
<field name="activity_id"
domain="[('places_remain','&lt;' , 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>

View 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),'&amp;', ('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),'&amp;', ('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>

View 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','&lt;' , 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>

View 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

View 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/>.
""" 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
})

View File

@ -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>

View File

@ -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

View File

@ -0,0 +1,36 @@
# -*- 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/>.
{
'name': 'GOLEM Activity Member Registrations',
'summary': 'GOLEM Activities Member Registrations management',
'version': '10.0.1.6.4',
'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']
}

View 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"

View 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 ""

View File

@ -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

View File

@ -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)

View File

@ -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>

View File

@ -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>

View File

@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_golem_activity_registration_user Access GOLEM Activity Registration User model_golem_activity_registration golem_base.group_golem_user 1 1 1 1
3 access_golem_activity_registration_manager Access GOLEM Activity Registration Manager model_golem_activity_registration golem_base.group_golem_manager 1 1 1 1

View File

@ -0,0 +1,93 @@
<?xml version="1.0" encoding="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/>.
-->
<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"
sequence="20" />
</data>
</odoo>

View 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 &lt;= 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>

View 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>

View 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

View File

@ -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',
}

View File

@ -0,0 +1,65 @@
<?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>
<!-- 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"
action="golem_registrations_analysis_action" sequence="50" />
</data>
</odoo>

View 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')

View File

@ -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>

View 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

View 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']
}

View 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."

View 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 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 ""

View 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)

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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)

View File

@ -0,0 +1,5 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
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_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
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 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
3 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
4 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
5 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

View File

@ -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>

View File

@ -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>

View File

@ -0,0 +1,65 @@
<?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>
<!-- 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" 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>

View 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)

View File

@ -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')

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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

View 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

View File

@ -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']
}

View File

@ -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

View File

@ -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)])

View 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é"

View File

@ -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 ""

View 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

View File

@ -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'}

View File

@ -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>

View 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

View 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']
}

View 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"

View File

@ -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 ""

View 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

View 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

View File

@ -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')

View 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)

View File

@ -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>

View File

@ -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', '&gt;=', (context_today() - datetime.timedelta(days=365.25)).strftime('%Y-01-01')), ('date_invoice', '&lt;', context_today().strftime('%Y-01-01'))]" />
<filter name="invoice_this_year" string="This year invoices"
domain="[('date_invoice', '&gt;=', 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>

View File

@ -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>

View File

@ -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>

View File

@ -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