Skip to content

Commit 4c21598

Browse files
[ADD] climbing_gym: Climbing Gym
- This industry package includes all you need to run your Climbing Gym business from entrance to subscription as well as staff and events management. - Sell subscriptions product from the Subscription App and the Sales App. - Manage your employees' shifts with the Planning App. - Sell goods on the fly from the Point of Sale App. - Resupply when needed with Purchase App. - Record entrances through the Contact App based on subscription or prepaid cards. - Manage waiver with the Sign App. - Generate visibility through the Website App. - Promote your upcoming events with the Events App. - Waiver can be sent for signature from contact form. - Sessions can be used from contact form when available. (from loyalty card or membership)
1 parent 6aa496e commit 4c21598

File tree

233 files changed

+4966
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

233 files changed

+4966
-0
lines changed

.tx/config

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,15 @@ resource_name = cleaning_services
145145
replace_edited_strings = false
146146
keep_translations = false
147147

148+
[o:odoo:p:odoo-s18-3:r:climbing_gym]
149+
file_filter = climbing_gym/i18n/<lang>.po
150+
source_file = climbing_gym/i18n/climbing_gym.pot
151+
type = PO
152+
minimum_perc = 0
153+
resource_name = climbing_gym
154+
replace_edited_strings = false
155+
keep_translations = false
156+
148157
[o:odoo:p:odoo-s18-3:r:clothing_boutique]
149158
file_filter = clothing_boutique/i18n/<lang>.po
150159
source_file = clothing_boutique/i18n/clothing_boutique.pot

climbing_gym/__manifest__.py

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
{
2+
'name': 'Climbing Gym',
3+
'version': '1.0',
4+
'category': 'Health and Fitness',
5+
'depends': [
6+
'account_invoice_extract',
7+
'account_online_synchronization',
8+
'appointment_account_payment',
9+
'auth_totp_mail',
10+
'base_industry_data',
11+
'base_install_request',
12+
'event_sale',
13+
'hr_homeworking',
14+
'hr_skills',
15+
'partnership',
16+
'pos_enterprise',
17+
'pos_epson_printer',
18+
'pos_event',
19+
'pos_hr',
20+
'pos_loyalty',
21+
'pos_online_payment',
22+
'pos_sale_subscription',
23+
'pos_settle_due',
24+
'product_barcodelookup',
25+
'project_sale_subscription',
26+
'project_sms',
27+
'sale_crm',
28+
'sale_loyalty',
29+
'sale_pdf_quote_builder',
30+
'sale_planning',
31+
'sale_project_stock',
32+
'sign',
33+
'snailmail_account_followup',
34+
'survey',
35+
'web_grid',
36+
'web_studio',
37+
'website_appointment',
38+
'website_crm',
39+
'website_event',
40+
'website_knowledge',
41+
'website_project',
42+
],
43+
'data': [
44+
'data/ir_attachment.xml',
45+
'data/ir_model_fields.xml',
46+
'data/res_config_settings.xml',
47+
'data/product_category.xml',
48+
'data/pos_category.xml',
49+
'data/product_pricelist.xml',
50+
'data/res_partner_grade.xml',
51+
'data/product_template.xml',
52+
'data/product_product.xml',
53+
'data/knowledge_cover.xml',
54+
'data/knowledge_article.xml',
55+
'data/knowledge_article_favorite.xml',
56+
'data/mail_message.xml',
57+
'data/planning_role.xml',
58+
'data/planning_slot_template.xml',
59+
'data/pos_payment_method.xml',
60+
'data/pos_config.xml',
61+
'data/product_attribute.xml',
62+
'data/sign_template.xml',
63+
'data/sign_template_views.xml',
64+
'data/sign_item.xml',
65+
'data/ir_actions_server.xml',
66+
'data/ir_ui_view.xml',
67+
],
68+
'demo': [
69+
'demo/event_tag_category.xml',
70+
'demo/event_tag.xml',
71+
'demo/event_event.xml',
72+
'demo/event_event_ticket.xml',
73+
'demo/event_slot.xml',
74+
'demo/crm_team.xml',
75+
'demo/loyalty_program.xml',
76+
'demo/loyalty_reward.xml',
77+
'demo/loyalty_rule.xml',
78+
'demo/product_pricelist_item.xml',
79+
'demo/res_partner.xml',
80+
'demo/hr_employee.xml',
81+
'demo/planning_role.xml',
82+
'demo/planning_slot.xml',
83+
'demo/sale_order.xml',
84+
'demo/sale_order_line.xml',
85+
'demo/sale_order_confirm.xml',
86+
'demo/website.xml',
87+
'demo/website_view.xml',
88+
'demo/website_theme_apply.xml',
89+
'demo/website_page.xml',
90+
'demo/sign_request.xml',
91+
],
92+
'license': 'OPL-1',
93+
'author': 'Odoo S.A.',
94+
"cloc_exclude": [
95+
"data/knowledge_article.xml",
96+
"demo/website_view.xml",
97+
],
98+
'images': ['images/main.png'],
99+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
<?xml version='1.0' encoding='UTF-8'?>
2+
<odoo>
3+
<record id="action_send_waiver" model="ir.actions.server">
4+
<field name="name">Send Waiver</field>
5+
<field name="model_id" ref="base.model_res_partner"/>
6+
<field name="binding_model_id" ref="base.model_res_partner"/>
7+
<field name="state">code</field>
8+
<field name="code"><![CDATA[
9+
template = env['sign.template'].search([('x_is_waiver', '=', True)], limit=1)
10+
if not template:
11+
raise UserError("No waiver template found.")
12+
13+
for customer in records:
14+
sign_request = env['sign.request'].create({
15+
'template_id': template.id,
16+
'reference': template.display_name,
17+
'request_item_ids': [Command.create({
18+
'partner_id': customer.id,
19+
'role_id': env.ref('sign.sign_item_role_customer').id,
20+
})],
21+
})
22+
sign_request.send_signature_accesses()
23+
]]></field>
24+
</record>
25+
26+
<record id="action_use_session" model="ir.actions.server">
27+
<field name="name">Use Session</field>
28+
<field name="model_id" ref="base.model_res_partner"/>
29+
<field name="binding_model_id" ref="base.model_res_partner"/>
30+
<field name="state">code</field>
31+
<field name="code"><![CDATA[
32+
product = False
33+
34+
if records.grade_id and records.grade_id.default_pricelist_id == records.property_product_pricelist:
35+
product = env['product.pricelist.item'].search([('product_tmpl_id.x_is_base_entrance', '=', True), ('pricelist_id', '=', records.property_product_pricelist)], order='percent_price desc', limit=1).product_tmpl_id
36+
37+
if not product:
38+
loyalty_card = env['loyalty.card'].search([('partner_id', '=', records.id)])
39+
loyalty_program = loyalty_card.program_id
40+
if loyalty_program and loyalty_card.points > 0:
41+
for loyalty_reward in loyalty_program.reward_ids:
42+
loyalty_product = loyalty_reward.discount_line_product_id
43+
if loyalty_product and loyalty_product.x_is_base_entrance:
44+
product = loyalty_product
45+
break
46+
47+
if not product:
48+
raise UserError("No entrance available via membership or loyalty.")
49+
50+
order = env['sale.order'].create({
51+
'partner_id': records.id,
52+
'order_line': [Command.create({
53+
'product_id': product.id,
54+
'product_uom_qty': 1,
55+
})],
56+
})
57+
58+
order.action_open_reward_wizard()
59+
60+
action = {
61+
'type': 'ir.actions.act_window',
62+
'name': 'Use Session',
63+
'res_model': 'sale.order',
64+
'view_mode': 'form',
65+
'res_id': order.id,
66+
'target': 'new',
67+
}
68+
]]></field>
69+
</record>
70+
</odoo>

0 commit comments

Comments
 (0)