Skip to Content
Menu

Website Subscription Package Management

by
Odoo
v 17.0 Third Party 300
Download for v 17.0 Deploy on Odoo.sh
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies eCommerce (website_sale)
Sales (sale_management)
Discuss (mail)
Invoicing (account)
Website (website)
Community Apps Dependencies
Lines of code 2635
Technical Name website_subscription_package
LicenseAGPL-3
Websitehttps://www.cybrosys.com
Versions 15.0 16.0 17.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies eCommerce (website_sale)
Sales (sale_management)
Discuss (mail)
Invoicing (account)
Website (website)
Community Apps Dependencies
Lines of code 2635
Technical Name website_subscription_package
LicenseAGPL-3
Websitehttps://www.cybrosys.com
Versions 15.0 16.0 17.0
Community

Website Subscription Package Management

This Module Create Subscription for A Product From Website.

Key Highlights

Community compatible.

Auto Create Product Subscription and Sale Order From Website.

Send Mail After Auto Create Sale Order & Subscription To the customer.

Create Variant wise 2nd Subscription Discount.

User Can Manage Subscription from Portal.

Create Recurrence Period.

Create Subscription Plan.

Go to Sales-> Configuration-> Settings. Enable 'Discounts'.

Create New Subscription Product.

Create Variants for the Product.

Enable 'Is Subscription' from 'Subscription' tab and provide discount for variants.Select subscription plan and Recurrence Period.

Create variant wise Discount for Subscription Product.

Select the Product from Website.

Select Recurrence Period and add to cart.

Can see subscription details in Cart.

Confirm the order.

Sale order and subscription order will be created.

Send mail after auto create sale order & subscription to the customer.

Subscription Interval added in sale order line.

Start the Subscription Order on clicking 'START' button.

Stage changed to IN PROGRESS.

Customer can see their subscription order from Portal.

Click 'Start' to start the subscription Order from portal.

A recurring invoice will be generated for the subscription order according to the recurring period. Starting from the second invoice onward, variant-specific discount will be applied.

  • Community compatible.
  • Auto Create Product Subscription and Sale Order From Website.
  • Send Mail After Auto Create Sale Order & Subscription To the customer.
  • Create Variant wise 2nd Subscription Discount.
  • User Can Manage Subscription from Portal.
Version 16.0.1.0.0|Released on:28th Nov 2023

Initial commit for Subscription Management

Related Products

Our Services

service-icon

Odoo Customization

service-icon

Odoo Implementation

service-icon

Odoo Support

service-icon

Hire Odoo Developer

service-icon

Odoo Integration

service-icon

Odoo Migration

service-icon

Odoo Consultancy

service-icon

Odoo Implementation

service-icon

Odoo Licensing Consultancy

Our Industries

Trading

Easily procure and sell your products

POS

Easy configuration and convivial experience

Education

A platform for educational management

Manufacturing

Plan, track and schedule your operations

E-commerce & Website

Mobile friendly, awe-inspiring product pages

Service Management

Keep track of services and invoice

Restaurant

Run your bar or restaurant methodically

Hotel Management

An all-inclusive hotel management application

Support

Need Help?

Got questions or need help? Get in touch.

odoo@cybrosys.com
WhatsApp

Say hi to us on WhatsApp!

+91 99456767686

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Please choose a rating from 1 to 5 for this module.
Misleading Application
by
Anand
on 9/3/24, 1:51 AM

Please take the time to read my previous messages carefully. My concern is not just about the mention of automatic payments, but about the misleading nature of the app, which implies it can handle automated payments when it does not. This causes confusion and wasted time. I strongly suggest updating the app description to clearly state its limitations so users know exactly what to expect before using it.


Also, please stop replying with the same generic responses. Instead, focus on updating the app page to reflect its actual capabilities. This will provide clarity and improve user experience. 

Re: Misleading Application
by
Cybrosys Technologies
on 9/3/24, 2:50 AM Author

Hello Anand, We apologize for any disappointment caused. There was no mention of automatic payments being included in this app. It is a free app. You can either use this and integrate an automatic payment feature, or explore other apps that offer all the required features.


Misleading Application
by
Anand
on 9/2/24, 5:42 PM

Could you please point out where exactly on the app page it mentions that this application only creates invoices and does not handle automated payments? I reviewed the page and found no clear indication of this limitation. Even after I pointed out the issue, it seems the app page has not been updated to clarify this. Transparency is key to avoiding confusion and ensuring users do not waste valuable time on features that are not as expected.

Re: Misleading Application
by
Cybrosys Technologies
on 9/2/24, 11:23 PM Author

Hello Anand, We apologize for any disappointment caused. There was no mention of automatic payments being included in this app. It is a free app. You can either use this and integrate an automatic payment feature, or explore other apps that offer all the required features.


Misleading Application
by
Anand
on 8/31/24, 6:27 AM

I must express that this application is misleading as it leads users to believe that it includes automated payment features when it does not. This can result in significant time loss for users who expect automation but are instead required to manually process payments.


The time spent dealing with this issue is often more valuable than the cost of the app itself. Additionally, while many of your applications are free, they often turn out to be not fully usable in practice. A clearer indication of the app’s limitations would have been appreciated to avoid such confusion and inefficiency.

Re: Misleading Application
by
Cybrosys Technologies
on 9/2/24, 3:39 AM Author

Please read the app page before choosing the app. 


What is the point of just creating an invoice?
by
Anand
on 8/31/24, 3:37 AM

The primary purpose of a subscription model is to offer convenience by automating the payment process for customers. Requiring customers to visit the website each month to manually make a payment defeats this purpose, as it essentially replicates the experience of making a manual payment each month. This approach is generally less appealing to customers, who prefer the ease and efficiency of automated payments.

Re: What is the point of just creating an invoice?
by
Cybrosys Technologies
on 8/31/24, 5:42 AM Author

Hello Anand, We apologize for any disappointment caused. There was no mention of automatic payments being included in this app. It is a free app. You have the option to either use this and integrate an automatic payment feature, or explore other apps that offer all the features you require


by
Anand
on 8/30/24, 9:28 AM



Automated Subscription Payments with Stripe or Razorpay
by
Anand
on 8/17/24, 1:29 AM

Could you clarify whether this module is designed to automatically create and manage Stripe or Razorpay subscriptions for our customers, or if customers must visit our website each month to process their payments manually?

Re: Automated Subscription Payments with Stripe or Razorpay
by
Cybrosys Technologies
on 8/30/24, 6:29 AM Author

Currently, our module is designed to automate the invoicing process for subscriptions. However, it does not automatically handle payment processing through Stripe or Razorpay. Customers will need to manually process their payments.


It doesn't seem to work. Creating a simple payment, not a subscription
by
Anand
on 8/17/24, 12:57 AM

In the website setting, 


I kept the Shop - Checkout Process Add to Cart to "Let the user decide (dialog)" and Sign in/up at checkout to "Mandatory (no guest checkout)" and while I'm trying to subscribe I'm receiving the below error. But when I turn back the setting Add to Cart to "Stay on Product Page" and Sign in/up at checkout to "Optional" the payment seems to happen but it doesn't seem to create a Subscription


The error message 

RPC_ERROR
Odoo Server Error
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1764, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
  File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 133, in retrying
    result = func()
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1791, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 1995, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
  File "/usr/lib/python3/dist-packages/odoo/addons/website/models/ir_http.py", line 235, in _dispatch
    response = super()._dispatch(endpoint)
  File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py", line 222, in _dispatch
    result = endpoint(**request.params)
  File "/usr/lib/python3/dist-packages/odoo/http.py", line 741, in route_wrapper
    result = endpoint(self, *args, **params_ok)
  File "/usr/lib/python3/dist-packages/odoo/addons/website_sale_product_configurator/controllers/website_sale.py", line 54, in cart_options_update_json
    values = order._cart_update(
  File "/usr/lib/python3/dist-packages/odoo/addons/website_sale_loyalty/models/sale_order.py", line 170, in _cart_update
    res = super()._cart_update(product_id, line_id, add_qty, set_qty, **kwargs)
  File "/usr/lib/python3/dist-packages/odoo/addons/website_sale/models/sale_order.py", line 216, in _cart_update
    order_line = self._cart_update_order_line(product_id, quantity, order_line, **kwargs)
  File "/mnt/extra-addons/website_subscription_package/models/sale_order.py", line 64, in _cart_update_order_line
    order_line_values = self._prepare_order_line_values(
  File "/mnt/extra-addons/website_subscription_package/models/sale_order.py", line 36, in _prepare_order_line_values
    values.update({'subscription_interval_id': period.id})
AttributeError: 'NoneType' object has no attribute 'id'

The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
    RPC_ERROR
        at makeErrorFromResponse (http://localhost:10017/web/assets/1/f5ebd5f/web.assets_frontend_lazy.min.js:4690:163)
        at XMLHttpRequest. (http://localhost:10017/web/assets/1/f5ebd5f/web.assets_frontend_lazy.min.js:4694:13)




Error on Cron "Check Close limit" in V17 when try to run manually
by
Vadim Popov
on 6/14/24, 3:44 AM
Traceback (most recent call last):
  File "/home/parikshit/Odoo17Community/odoo/odoo/tools/safe_eval.py", line 390, in safe_eval
    return unsafe_eval(c, globals_dict, locals_dict)
  File "ir.actions.server(729,)", line 1, in 
  File "/home/parikshit/Odoo17Community/odoo/custom_addons/website_subscription_package/models/subscription_package.py", line 76, in close_limit_cron
    'tax_ids': rec.tax_id
AttributeError: 'subscription.package.product.line' object has no attribute 'tax_id'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/parikshit/Odoo17Community/odoo/odoo/http.py", line 1770, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
  File "/home/parikshit/Odoo17Community/odoo/odoo/service/model.py", line 133, in retrying
    result = func()
  File "/home/parikshit/Odoo17Community/odoo/odoo/http.py", line 1797, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
  File "/home/parikshit/Odoo17Community/odoo/odoo/http.py", line 2001, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
  File "/home/parikshit/Odoo17Community/odoo/addons/website/models/ir_http.py", line 235, in _dispatch
    response = super()._dispatch(endpoint)
  File "/home/parikshit/Odoo17Community/odoo/odoo/addons/base/models/ir_http.py", line 222, in _dispatch
    result = endpoint(**request.params)
  File "/home/parikshit/Odoo17Community/odoo/odoo/http.py", line 725, in route_wrapper
    result = endpoint(self, *args, **params_ok)
  File "/home/parikshit/Odoo17Community/odoo/addons/web/controllers/dataset.py", line 28, in call_button
    action = self._call_kw(model, method, args, kwargs)
  File "/home/parikshit/Odoo17Community/odoo/addons/web/controllers/dataset.py", line 20, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/home/parikshit/Odoo17Community/odoo/odoo/api.py", line 468, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "/home/parikshit/Odoo17Community/odoo/odoo/api.py", line 453, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "/home/parikshit/Odoo17Community/odoo/odoo/addons/base/models/ir_cron.py", line 107, in method_direct_trigger
    cron.with_user(cron.user_id).with_context({'lastcall': cron.lastcall}).ir_actions_server_id.run()
  File "/home/parikshit/Odoo17Community/odoo/odoo/addons/base/models/ir_actions.py", line 942, in run
    res = runner(run_self, eval_context=eval_context)
  File "/home/parikshit/Odoo17Community/odoo/addons/website/models/ir_actions_server.py", line 61, in _run_action_code_multi
    res = super(ServerAction, self)._run_action_code_multi(eval_context)
  File "/home/parikshit/Odoo17Community/odoo/odoo/addons/base/models/ir_actions.py", line 772, in _run_action_code_multi
    safe_eval(self.code.strip(), eval_context, mode="exec", nocopy=True, filename=str(self))  # nocopy allows to return 'action'
  File "/home/parikshit/Odoo17Community/odoo/odoo/tools/safe_eval.py", line 404, in safe_eval
    raise ValueError('%s: "%s" while evaluating\n%r' % (ustr(type(e)), ustr(e), expr))
ValueError: : "'subscription.package.product.line' object has no attribute 'tax_id'" while evaluating
'model.close_limit_cron()'

The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
    at makeErrorFromResponse (http://localhost:8069/web/assets/1/5017ade/web.assets_web.min.js:2872:163)
    at XMLHttpRequest. (http://localhost:8069/web/assets/1/5017ade/web.assets_web.min.js:2876:13)


Re: Error on Cron "Check Close limit" in V17 when try to run manually
by
Cybrosys Technologies
on 6/20/24, 2:31 AM Author

Hello, Thanks for reporting. The error has been resolved, and the updated version of the app is now available. Please download.


for V17 There is an error on Cron "Check Close Limit" execution
by
Vadim Popov
on 6/14/24, 3:24 AM
Traceback (most recent call last):
  File "/home/parikshit/Odoo17Community/odoo/odoo/tools/safe_eval.py", line 390, in safe_eval
    return unsafe_eval(c, globals_dict, locals_dict)
  File "ir.actions.server(729,)", line 1, in 
  File "/home/parikshit/Odoo17Community/odoo/custom_addons/website_subscription_package/models/subscription_package.py", line 76, in close_limit_cron
    'tax_ids': rec.tax_id
AttributeError: 'subscription.package.product.line' object has no attribute 'tax_id'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/parikshit/Odoo17Community/odoo/odoo/http.py", line 1770, in _serve_db
    return service_model.retrying(self._serve_ir_http, self.env)
  File "/home/parikshit/Odoo17Community/odoo/odoo/service/model.py", line 133, in retrying
    result = func()
  File "/home/parikshit/Odoo17Community/odoo/odoo/http.py", line 1797, in _serve_ir_http
    response = self.dispatcher.dispatch(rule.endpoint, args)
  File "/home/parikshit/Odoo17Community/odoo/odoo/http.py", line 2001, in dispatch
    result = self.request.registry['ir.http']._dispatch(endpoint)
  File "/home/parikshit/Odoo17Community/odoo/addons/website/models/ir_http.py", line 235, in _dispatch
    response = super()._dispatch(endpoint)
  File "/home/parikshit/Odoo17Community/odoo/odoo/addons/base/models/ir_http.py", line 222, in _dispatch
    result = endpoint(**request.params)
  File "/home/parikshit/Odoo17Community/odoo/odoo/http.py", line 725, in route_wrapper
    result = endpoint(self, *args, **params_ok)
  File "/home/parikshit/Odoo17Community/odoo/addons/web/controllers/dataset.py", line 28, in call_button
    action = self._call_kw(model, method, args, kwargs)
  File "/home/parikshit/Odoo17Community/odoo/addons/web/controllers/dataset.py", line 20, in _call_kw
    return call_kw(request.env[model], method, args, kwargs)
  File "/home/parikshit/Odoo17Community/odoo/odoo/api.py", line 468, in call_kw
    result = _call_kw_multi(method, model, args, kwargs)
  File "/home/parikshit/Odoo17Community/odoo/odoo/api.py", line 453, in _call_kw_multi
    result = method(recs, *args, **kwargs)
  File "/home/parikshit/Odoo17Community/odoo/odoo/addons/base/models/ir_cron.py", line 107, in method_direct_trigger
    cron.with_user(cron.user_id).with_context({'lastcall': cron.lastcall}).ir_actions_server_id.run()
  File "/home/parikshit/Odoo17Community/odoo/odoo/addons/base/models/ir_actions.py", line 942, in run
    res = runner(run_self, eval_context=eval_context)
  File "/home/parikshit/Odoo17Community/odoo/addons/website/models/ir_actions_server.py", line 61, in _run_action_code_multi
    res = super(ServerAction, self)._run_action_code_multi(eval_context)
  File "/home/parikshit/Odoo17Community/odoo/odoo/addons/base/models/ir_actions.py", line 772, in _run_action_code_multi
    safe_eval(self.code.strip(), eval_context, mode="exec", nocopy=True, filename=str(self))  # nocopy allows to return 'action'
  File "/home/parikshit/Odoo17Community/odoo/odoo/tools/safe_eval.py", line 404, in safe_eval
    raise ValueError('%s: "%s" while evaluating\n%r' % (ustr(type(e)), ustr(e), expr))
ValueError: : "'subscription.package.product.line' object has no attribute 'tax_id'" while evaluating
'model.close_limit_cron()'

The above server error caused the following client error:
RPC_ERROR: Odoo Server Error
    at makeErrorFromResponse (http://localhost:8069/web/assets/1/5017ade/web.assets_web.min.js:2872:163)
    at XMLHttpRequest. (http://localhost:8069/web/assets/1/5017ade/web.assets_web.min.js:2876:13)