pledra / odoo-product-configurator Goto Github PK
View Code? Open in Web Editor NEWOdoo modules enabling dynamic product configuration
Home Page: https://www.pledra.com
License: GNU Affero General Public License v3.0
Odoo modules enabling dynamic product configuration
Home Page: https://www.pledra.com
License: GNU Affero General Public License v3.0
This applies to attributes that are not required. We want to create a domain that matches the case where the user has not selected a value.
Example:
For the following attributes and values, only allow attr2/value2.1 if the user has not selected any values for attr1
Leaving the Values field empty is not allowed:
I don't like using 'not in', and selecting all possible values, because when I add a new value to attr1, then I have to remember to also add the value to the domain:
I could make attr1 required, and include a ZERO value, but that could confuse the user, and it makes my variant name messy.
Is there any other solution?
Can you explain the reason why i get an 403 access error if i click on "Continue" button to move from one step to another to configure my custom website product before i login as regular user (anonymous user).
If i login as a regular user, i can proceed from one step to another as usual.
If i jump over the malicious step , f.e. from "step 1" to "step 3" i can proceed as expected also as a non-logged-in user.
If i login before as a regular user, i am able to "continue" as expected from one step to the next possible step without any error.
Impacted versions: Odoo 8
Steps to reproduce: New install, base MRP and requirements modules installed. Create a new product and got an Error 500 at the web configurator.
2017-05-03 09:50:41,754 18368 ERROR GP openerp.addons.website.models.ir_http: 500 Internal Server Error:
Traceback (most recent call last):
File "/opt/odoo/odoo-server/addons/website/models/ir_http.py", line 199, in _handle_exception
response = super(ir_http, self)._handle_exception(exception)
File "/opt/odoo/odoo-server/openerp/addons/base/ir/ir_http.py", line 145, in _handle_exception
return request._handle_exception(exception)
File "/opt/odoo/odoo-server/openerp/http.py", line 673, in _handle_exception
return super(HttpRequest, self)._handle_exception(exception)
File "/opt/odoo/odoo-server/openerp/addons/base/ir/ir_http.py", line 171, in _dispatch
result = request.dispatch()
File "/opt/odoo/odoo-server/openerp/http.py", line 691, in dispatch
r = self._call_function(**self.params)
File "/opt/odoo/odoo-server/openerp/http.py", line 317, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/opt/odoo/odoo-server/openerp/service/model.py", line 118, in wrapper
return f(dbname, *args, **kwargs)
File "/opt/odoo/odoo-server/openerp/http.py", line 314, in checked_call
return self.endpoint(*a, **kw)
File "/opt/odoo/odoo-server/openerp/http.py", line 810, in call
return self.method(*args, **kw)
File "/opt/odoo/odoo-server/openerp/http.py", line 410, in response_wrap
response = f(*args, **kw)
File "/opt/odoo/custom/gp/website_product_configurator/controllers/main.py", line 649, in action_configure
cfg_vars = self.config_vars(product_tmpl, active_step=config_step)
File "/opt/odoo/custom/gp/website_product_configurator/controllers/main.py", line 158, in config_vars
'product_configurator.custom_attribute_value')
File "/opt/odoo/odoo-server/openerp/api.py", line 797, in ref
return self['ir.model.data'].xmlid_to_object(xml_id, raise_if_not_found=raise_if_not_found)
File "/opt/odoo/odoo-server/openerp/api.py", line 266, in wrapper
return new_api(self, *args, **kwargs)
File "/opt/odoo/odoo-server/openerp/api.py", line 508, in new_api
result = method(self._model, cr, uid, *args, **old_kwargs)
File "/opt/odoo/odoo-server/openerp/addons/base/ir/ir_model.py", line 923, in xmlid_to_object
t = self.xmlid_to_res_model_res_id(cr, uid, xmlid, raise_if_not_found)
File "/opt/odoo/odoo-server/openerp/api.py", line 268, in wrapper
return old_api(self, *args, **kwargs)
File "/opt/odoo/odoo-server/openerp/addons/base/ir/ir_model.py", line 909, in xmlid_to_res_model_res_id
return self.xmlid_lookup(cr, uid, xmlid)[1:3]
File "/opt/odoo/odoo-server/openerp/api.py", line 268, in wrapper
return old_api(self, *args, **kwargs)
File "", line 2, in xmlid_lookup
File "/opt/odoo/odoo-server/openerp/tools/cache.py", line 74, in lookup
value = d[key] = self.method(*args, **kwargs)
File "/opt/odoo/odoo-server/openerp/addons/base/ir/ir_model.py", line 899, in xmlid_lookup
raise ValueError('External ID not found in the system: %s' % (xmlid))
ValueError: External ID not found in the system: product_configurator.custom_attribute_value
Current behavior:
Expected behavior:
Video/Screenshot link (optional):
Impacted versions: all
Steps to reproduce: Not relevant
Current behavior: Documentation is nonexistent. Needs to be generated from the source (Makefile). Of course, just invoking the Makefile with the make command fails miserably. I had to set-up a sandboxed python environment with sphinx and all its bells and whistles to generate a ridiculously incomplete documentation whose html version is enclosed as a zip-file.
Expected behavior: An updated snapshot of the documentation is available on-line. The documentation is exhaustive, up-to-date, human-readable and not ambiguous.
Video/Screenshot link (optional): See generated HTML doc in enclosed zip file.
html.zip
How to recapture the problem:
I would expect:
On step 4 i would expect red/green button to publish/unpublish the
configurable product.
Impacted versions:
9.0 Community
Steps to reproduce:
Quotations > Configure Product >Select template > Next
Current behavior:
Unable to proceed to configure product.
File "/odoo/odoo-server/openerp/api.py", line 250, in wrapper
return old_api(self, *args, **kwargs)
File "/odoo/odoo-server/openerp/addons/base/ir/ir_ui_view.py", line 900, in postprocess_and_fields
fields = Model.fields_get(cr, user, None, context=context)
File "/odoo/odoo-server/openerp/api.py", line 250, in wrapper
return old_api(self, *args, **kwargs)
File "/odoo/odoo-server/openerp/api.py", line 354, in old_api
result = method(recs, *args, **kwargs)
File "/home/odoo/odoo-product-configurator/product_configurator_wizard/wizard/product_configurator.py", line 301, in fields_get
value_ids = wiz.product_tmpl_id.values_available(
AttributeError: 'product.template' object has no attribute 'values_available'
Expected behavior:
Selection of variants
Video/Screenshot link (optional):
If i want to download an attached file from the backend configurator wizards corresponding step with custom attribute of type attachment i get an syntax error, if i click
on the "Save as" button to download the attached file.
Uncaught SyntaxError: Unexpected token T in JSON at position 0
http://configurator-v9.pledra.com/web#id=25&view_type=form&model=sale.order&menu_id=176&action=244:1
Traceback:
SyntaxError: Unexpected token T in JSON at position 0
at JSON.parse ()
at HTMLIFrameElement. (http://configurator-v9.pledra.com/web/content/755-23145ff/web.assets_common.js:2554:379)
at HTMLIFrameElement.dispatch (http://configurator-v9.pledra.com/web/content/755-23145ff/web.assets_common.js:740:451)
at HTMLIFrameElement.elemData.handle (http://configurator-v9.pledra.com/web/content/755-23145ff/web.assets_common.js:713:173)
Hi.
I don't know if this is the right place to post this issue, if not, please feel free to close without comment.
To be able to describe all my variants in quotations / sales orders etc, the sale_order_line_variant_description has been installed (only tested for 8.0).
Running Odoo 10.0, the above mentioned addon is leading the product configurator to misbehave when it comes to restrictions.
Regards
Fredrik
Impacted versions: tested on v10
Steps to reproduce:
Current behavior:
Expected behavior:
Video/Screenshot link (optional):
N/A
If i want to print sale order quotation after i have created a sale order quotation for a customer by using the "Configure Product" wizard i don't get the specifications on the report (usually in brackets).
I think it is essential to show the product with all configured variants towards the customer also on reports, in my specific use case the sale order reports.
Here is the configured product sale order line:
Here is the report without the selected attribute values from the "Configure Product" wizard.
Impacted versions:
Steps to reproduce:
Create a template:
Current behavior:
"Invalid Configuration" error displayed (due to step 2 size being incompatible)
Expected behavior:
Invalid or incompatible items on future steps should just be cleared out.
This is coming from /product_configurator/models/product_config.py from write:
valid = self.product_tmpl_id.validate_configuration(
self.value_ids.ids, custom_val_dict, final=False)
Invalid Configuration" error displayed (due to step 2 size being incompatible)
Video/Screenshot link (optional):
Impacted versions: 10
Steps to reproduce: Install on fresh Odoo 10 system
Current behavior: System shows only the "Image View" of the product in the various attributes.
Expected behavior: For the attributes, during setup, Radio-Thumbnail or Selection-Box was selected. The system always creates "Radio-Thumbnail" version. We would like to mimic the behavior shown in the demo video with the drop-downs.
Impacted versions:
10.0
Steps to reproduce:
Create a template product
Current behavior:
Odoo Server Error
Traceback (most recent call last):
File "/odoo/bva/odoo/odoo/http.py", line 638, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/odoo/bva/odoo/odoo/http.py", line 675, in dispatch
result = self._call_function(**self.params)
File "/odoo/bva/odoo/odoo/http.py", line 331, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/odoo/bva/odoo/odoo/service/model.py", line 119, in wrapper
return f(dbname, *args, **kwargs)
File "/odoo/bva/odoo/odoo/http.py", line 324, in checked_call
result = self.endpoint(*a, **kw)
File "/odoo/bva/odoo/odoo/http.py", line 933, in call
return self.method(*args, **kw)
File "/odoo/bva/odoo/odoo/http.py", line 504, in response_wrap
response = f(*args, **kw)
File "/odoo/bva/odoo/addons/web/controllers/main.py", line 878, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/odoo/bva/odoo/addons/web/controllers/main.py", line 870, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/odoo/bva/odoo/odoo/api.py", line 679, in call_kw
return call_kw_model(method, model, args, kwargs)
File "/odoo/bva/odoo/odoo/api.py", line 664, in call_kw_model
result = method(recs, *args, **kwargs)
File "/odoo/bva/odoo/odoo/models.py", line 4686, in search_read
result = records.read(fields)
File "/odoo/odoo-product-configurator/product_configurator_wizard/wizard/product_configurator.py", line 568, in read
custom_val = self.env.ref(custom_ext_id)
File "/odoo/bva/odoo/odoo/api.py", line 785, in ref
return self['ir.model.data'].xmlid_to_object(xml_id, raise_if_not_found=raise_if_not_found)
File "/odoo/bva/odoo/odoo/addons/base/ir/ir_model.py", line 1059, in xmlid_to_object
t = self.xmlid_to_res_model_res_id(xmlid, raise_if_not_found)
File "/odoo/bva/odoo/odoo/addons/base/ir/ir_model.py", line 1043, in xmlid_to_res_model_res_id
return self.xmlid_lookup(xmlid)[1:3]
File "", line 2, in xmlid_lookup
File "/odoo/bva/odoo/odoo/tools/cache.py", line 87, in lookup
value = d[key] = self.method(*args, **kwargs)
File "/odoo/bva/odoo/odoo/addons/base/ir/ir_model.py", line 1032, in xmlid_lookup
raise ValueError('External ID not found in the system: %s' % xmlid)
ValueError: External ID not found in the system: product_configurator.custom_attribute_value
Impacted versions: at least v.9, probably all
Steps to reproduce: Not relevant
Current behavior: I want my user to display pictures for extra options, exactly the same way it is presented in the demonstration video (see screenshot) but could not figure out why.
Expected behavior: The procedure is explained somewhere in a clear and nonambiguous manner. A test database vor odoo v.9 is available as an example.
Video/Screenshot link (optional): I try have pictures in the radio thumbnails selectors like in the screenshot obtained from your teasing video without any sucess.
Impacted versions:
10, probably others.
Steps to reproduce:
Salesperson, who can put in sales and run configurator, do not have access to create records in product.product.
Current behavior:
Reports an error (which is caught by a try/except) which is not the real error
Expected behavior:
Video/Screenshot link (optional):
Hi
Can someone explain to me how to link product to attribute value in step by step in order to create dynamic price?
This is this phrase in the documentation but I dont know what it mean "As such if you want to compute an extra price for a certain attribute, create a regular product, set a price and link the product to the attribute value in the form view."
I have create the product and the attribute, but I don't know how to link the attribute value to the product
Thank you
Impacted versions:
10.0
Steps to reproduce:
Create a template:
Current behavior:
Putting debugs in fields_get and fields_view_get in product_configurator, I have determined that they are being called at the start of step 1, and the start of step 2, but not when going back, and not when going from 1 to 2 the second time. And interestingly, not when going from 2 to 3!!
Expected behavior:
Video/Screenshot link (optional):
Checked on 10.0
domain=[('config_ok', '=', False)]
here:
You can select an existing configurable variant in product_id
field.
However, I am not sure why the current design applies domain=[('config_ok', '=', False)]
to product_id
field. There is high chance that I'm missing some side-effects of not doing so. Would appreciate explanation on the idea behind the design from someone more experienced with the configurator modules.
Impacted versions: Odoo 10
Steps to reproduce:
Configure product template
Order a few variants
Click on Configurable Variants
Click on a Variant
Post this behavior, the "Edit" Screen for Configurable Variants is not functioning at all.
Current behavior:
http://10.0.0.29:8069/web/content/679-bc345ce/web.assets_backend.js:1326
Traceback:
Error: NameError: name 'name' is not defined
at PY_ensurepy (http://10.0.0.29:8069/web/content/679-bc345ce/web.assets_backend.js:1326:65)
at Object.py.evaluate (http://10.0.0.29:8069/web/content/679-bc345ce/web.assets_backend.js:1441:8)
at Object.py.evaluate (http://10.0.0.29:8069/web/content/679-bc345ce/web.assets_backend.js:1450:194)
at Object.py.eval (http://10.0.0.29:8069/web/content/679-bc345ce/web.assets_backend.js:1454:284)
at http://10.0.0.29:8069/web/content/679-bc345ce/web.assets_backend.js:1593:110
at iterator (http://10.0.0.29:8069/web/content/673-2c0d588/web.assets_common.js:14:183)
at Function. (http://10.0.0.29:8069/web/content/673-2c0d588/web.assets_common.js:17:8)
at _.(anonymous function) [as reduce] (http://10.0.0.29:8069/web/content/673-2c0d588/web.assets_common.js:69:526)
at eval_contexts (http://10.0.0.29:8069/web/content/679-bc345ce/web.assets_backend.js:1591:136)
at http://10.0.0.29:8069/web/content/679-bc345ce/web.assets_backend.js:1593:253
Expected behavior:
Variant details should be visible in the next screen without this error.
Video/Screenshot link (optional):
Impacted versions:
10
Steps to reproduce:
Have your odoo configured for B2C, especially set the default tax as "Included in Price".
Then go ahead and configure a product on a sales order via the configuration wizard.
Current behavior:
The configured variant's unit price will be a tax excluded price.
Expected behavior:
The unit price should depend on the default tax setting of tax inclusion.
First of all, let me thank you for this module. For us, it is heaven-sent. We are a reseller for refurbished PCs, laptops etc, and our customers can customize quite a few aspects of the product like RAM, HDD, OS and so on. How dreadful (and probably a big strain for the database in the long run) it would have been if we were to manage this with only the default variant functionality. You, sir, are a life-saver. 😃
As another burden, since we sell used hardware, base units might come in any number of different pre-configurations. We can have basically the same product, but one might have 4 GB RAM, a 320 GB HDD and Win 7, another might have 8 GB RAM, a 256 GB SSD and Win 10. All those would have to be a base product with all possible variants and we would have to setup (beforehand or on the fly) all the BoMs... This is due to the fact that all variations of the base product will have different by-products for all the possible configurations, and that will in turn influence the price for an option. If we have a unit with 1x 4 GB and the customer wants 1x 4 GB, there won't be a surcharge (still has to be configurable to have that, of course). If he wants 1x 8 GB, there will be a surcharge but with a reduction, as we get 4 GB back.
<TL;DR>
Back to the issue at hand. I'm not a 100% sure, if it wasn't even a complete mixup of tax incl/excl prices.
I modified get_cfg_price() in product.py by replacing
prices = {
'vals': [
('Base', self.name, total_excluded) ],
'total': total_included,
'taxes': total_included - total_excluded,
'currency': currency.name
}
with
prices = {
'vals': [
('Base', self.name, total_excluded if product.taxes_id.sudo().price_include == False else total_included)
],
'total': total_included,
'taxes': total_included - total_excluded,
'currency': currency.name
}
With that, the price of the base product was correct again.
I've modified _compute_product_price_extra() in product.py by replacing
product.price_extra = prices['total'] - prices['taxes'] - lst_price
with
product.price_extra = prices['total'] - lst_price
While this seems to work for us, it surely isn't an elegant solution. Wouldn't it be better to just add up all the product prices as is and let the taxes/fiscal positions do their work?
On a side note: The module does not work at all if you use price lists (one or more, doesn't matter). Was it never intended to? Are you not aware of this? Would this be a feature for the roadmap, maybe?
If i have selected as a website buyer language like german the product price in ecommerce shop should be presented like 1.500,00 € instead of 1500.00 € due to the german de_DE language settings (thousands_sep => "." and decimal_point => ",")
In fact Odoo itself is affected by the same error if i would like to buy a product with standard odoo variants. There seems to be again another fix available
odoo-dev/odoo@154428f
Unfortunately there are many linked errors and fixes trying to solve that issue for product variants.
I don't know if there is any commit which would also fix the issue with decimal separator and language specific currency format for configurable products.
If i compare to pledra configurator demo my installation doesn't provide the field attachment_ids.
Probably that prevents me to download an attached file directly from the sale order line.
Field attachment visible in sale order line details:
Missing field attachment (therefore no possibility to download the file).
Does this work with the Point of sale module? Ive added some products and they are added to the Website but not the POS even though the available in Point of Sale checkbox is checked.
When you want to relate a product to an attribute in order to display configuration pictures, it is necessary for the related products to be sellable and to be published. Otherwise you get an access error (version 9.0: 403 forbidden error, version 10.0: 500 internal server error). Therefore all these related products are available in the webshop for no reasons.
The product should at least not be sellable so that it does not get displayed in the webshop.
Example: I have bicycles, a bicycle consists of a frame. The frame has a type (male/female) and a color.
Now I have to publish the product "Frame" and the product "Color" in order to make the website product configurator work for the public user.
See http://34.250.33.214:8069/shop?db=interbike
Traceback:
2017-03-16 14:25:17,558 25712 INFO bp_ch_configurator werkzeug: 178.194.239.84 - - [16/Mar/2017 14:25:17] "POST /configurator/testconfigurator-1/configurationstep1-1 HTTP/1.1" 302 -
2017-03-16 14:25:18,125 25712 WARNING bp_ch_configurator openerp.addons.website.models.ir_http: 403 Forbidden:
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/openerp/addons/website/models/ir_http.py", line 242, in _handle_exception
response = super(ir_http, self)._handle_exception(exception)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_http.py", line 158, in _handle_exception
return request._handle_exception(exception)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 786, in _handle_exception
return super(HttpRequest, self)._handle_exception(exception)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_http.py", line 183, in _dispatch
result = request.dispatch()
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 845, in dispatch
r = self._call_function(**self.params)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 321, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/service/model.py", line 118, in wrapper
return f(dbname, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 317, in checked_call
result.flatten()
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 1446, in flatten
self.response.append(self.render())
File "/usr/lib/python2.7/dist-packages/openerp/http.py", line 1439, in render
context=request.context)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 250, in wrapper
return old_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/addons/website/models/ir_ui_view.py", line 166, in render
return super(view, self).render(cr, uid, id_or_xml_id, values=values, engine=engine, context=context)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 250, in wrapper
return old_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/addons/web_editor/models/ir_ui_view.py", line 29, in render
return super(view, self).render(cr, uid, id_or_xml_id, values=values, engine=engine, context=context)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 250, in wrapper
return old_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_ui_view.py", line 1081, in render
return self.pool[engine].render(cr, uid, id_or_xml_id, qcontext, loader=loader, context=context)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 250, in wrapper
return old_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 254, in render
return self.render_node(element, qwebcontext, generated_attributes=qwebcontext.pop('generated_attributes', ''))
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 297, in render_node
result = self.render_element(element, template_attributes, generated_attributes, qwebcontext)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 320, in render_element
generated_attributes= name == "t" and generated_attributes or ''))
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 295, in render_node
result = self._render_tag[t_render](self, element, template_attributes, generated_attributes, qwebcontext)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 448, in render_tag_call
d[0] = self.render_element(element, template_attributes, generated_attributes, d)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 320, in render_element
generated_attributes= name == "t" and generated_attributes or ''))
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 297, in render_node
result = self.render_element(element, template_attributes, generated_attributes, qwebcontext)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 320, in render_element
generated_attributes= name == "t" and generated_attributes or ''))
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 297, in render_node
result = self.render_element(element, template_attributes, generated_attributes, qwebcontext)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 320, in render_element
generated_attributes= name == "t" and generated_attributes or ''))
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 297, in render_node
result = self.render_element(element, template_attributes, generated_attributes, qwebcontext)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 320, in render_element
generated_attributes= name == "t" and generated_attributes or ''))
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 297, in render_node
result = self.render_element(element, template_attributes, generated_attributes, qwebcontext)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 320, in render_element
generated_attributes= name == "t" and generated_attributes or ''))
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 297, in render_node
result = self.render_element(element, template_attributes, generated_attributes, qwebcontext)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 320, in render_element
generated_attributes= name == "t" and generated_attributes or ''))
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 295, in render_node
result = self._render_tag[t_render](self, element, template_attributes, generated_attributes, qwebcontext)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 485, in render_tag_set
qwebcontext[template_attributes["set"]] = self.eval_object(template_attributes["value"], qwebcontext)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 198, in eval_object
return self.eval(expr, qwebcontext)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 195, in eval
raise_qweb_exception(message="Could not evaluate expression %r" % expr, expression=expr, template=template)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 192, in eval
return qwebcontext.safe_eval(expr)
File "/usr/lib/python2.7/dist-packages/openerp/addons/base/ir/ir_qweb.py", line 104, in safe_eval
return eval(expr, None, locals_dict, nocopy=True, locals_builtins=True)
File "/usr/lib/python2.7/dist-packages/openerp/tools/safe_eval.py", line 298, in safe_eval
return eval(c, globals_dict, locals_dict)
File "", line 1, in
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 248, in wrapper
return new_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/custom/addons/product_configurator/models/product.py", line 209, in get_cfg_price
prices, value_ids, custom_values, pricelist)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 248, in wrapper
return new_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/custom/addons/product_configurator/models/product.py", line 142, in get_components_prices
vals = self._get_option_values(value_ids, pricelist)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 248, in wrapper
return new_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/custom/addons/product_configurator/models/product.py", line 134, in _get_option_values
lambda x: x.product_id.price)
File "/usr/lib/python2.7/dist-packages/openerp/models.py", line 5576, in filtered
return self.browse([rec.id for rec in self if func(rec)])
File "/usr/lib/python2.7/dist-packages/openerp/custom/addons/product_configurator/models/product.py", line 134, in
lambda x: x.product_id.price)
File "/usr/lib/python2.7/dist-packages/openerp/fields.py", line 830, in get
self.determine_value(record)
File "/usr/lib/python2.7/dist-packages/openerp/fields.py", line 930, in determine_value
record._prefetch_field(self)
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 248, in wrapper
return new_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/models.py", line 3316, in _prefetch_field
result = self.read([f.name for f in fs], load='_classic_write')
File "/usr/lib/python2.7/dist-packages/openerp/api.py", line 248, in wrapper
return new_api(self, *args, **kwargs)
File "/usr/lib/python2.7/dist-packages/openerp/models.py", line 3254, in read
values[name] = field.convert_to_read(record[name], use_name_get)
File "/usr/lib/python2.7/dist-packages/openerp/models.py", line 5769, in getitem
return self._fields[key].get(self, type(self))
File "/usr/lib/python2.7/dist-packages/openerp/fields.py", line 823, in get
return record._cache[self]
File "/usr/lib/python2.7/dist-packages/openerp/models.py", line 6149, in getitem
return value.get() if isinstance(value, SpecialValue) else value
File "/usr/lib/python2.7/dist-packages/openerp/fields.py", line 39, in get
raise self.exception
QWebException: (u'Der gew\xfcnschte Vorgang kann aufgrund Sicherheitsbeschr\xe4nkungen nicht ausgef\xfchrt werden. Bitte kontaktieren Sie den System Administrator.\n\n(Dokumenten Typ: product.product, Vorgang: read)', None)
Hi,
I want to create an Attribute with an Custom Value. e.g. attachment.
When I get into the step in the backend wizard. I get following error:
Odoo Server Error
Traceback (most recent call last):
File "/vagrant/odoo/odoo/http.py", line 638, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/vagrant/odoo/odoo/http.py", line 675, in dispatch
result = self._call_function(**self.params)
File "/vagrant/odoo/odoo/http.py", line 331, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/vagrant/odoo/odoo/service/model.py", line 119, in wrapper
return f(dbname, *args, **kwargs)
File "/vagrant/odoo/odoo/http.py", line 324, in checked_call
result = self.endpoint(*a, **kw)
File "/vagrant/odoo/odoo/http.py", line 933, in call
return self.method(*args, **kw)
File "/vagrant/odoo/odoo/http.py", line 504, in response_wrap
response = f(*args, **kw)
File "/vagrant/odoo/addons/web/controllers/main.py", line 862, in call_kw
return self._call_kw(model, method, args, kwargs)
File "/vagrant/odoo/addons/web/controllers/main.py", line 854, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/vagrant/odoo/odoo/api.py", line 679, in call_kw
return call_kw_model(method, model, args, kwargs)
File "/vagrant/odoo/odoo/api.py", line 664, in call_kw_model
result = method(recs, *args, **kwargs)
File "/vagrant/odoo/odoo/models.py", line 1328, in load_views
for [v_id, v_type] in views
File "/vagrant/odoo/odoo/models.py", line 1328, in
for [v_id, v_type] in views
File "/vagrant/addons_external/product_configurator_wizard/wizard/product_configurator.py", line 346, in fields_view_get
toolbar=toolbar, submenu=submenu
File "/vagrant/odoo/odoo/models.py", line 1407, in fields_view_get
xarch, xfields = View.postprocess_and_fields(self._name, etree.fromstring(result['arch']), view_id)
File "/vagrant/odoo/odoo/addons/base/ir/ir_ui_view.py", line 864, in postprocess_and_fields
fields = Model.fields_get(None)
File "/vagrant/addons_external/product_configurator_wizard/wizard/product_configurator.py", line 310, in fields_get
field_types = self._get_fields_type()
AttributeError: 'product.configurator' object has no attribute '_get_fields_type'
Impacted versions:
Steps to reproduce:
Current behavior:
Expected behavior:
Video/Screenshot link (optional):
hi i have a product with many variants. All variants has a price. the main Product have zero price. the normal website with no extension has price and show it. if i activate the configurator, the price in varaints are zero !! and on the website zero !!
what can i do?
(picture is example with mainprodukt 1 euro and every variant lot of more money - the second picture show the problem that different variants all have automatic price from mainproduct. not from variants!
Impacted versions:
Odoo 10.
Steps to reproduce:
Create a product
Setup pricelist based on Cost
Website configurator works just fine
product_configurator_wizard in the application shows price as $0.
Current behavior:
Price from the pricelist which is based on cost is set to $0.
Expected behavior:
Price from the pricelist should be setup correctly based on cost
Video/Screenshot link (optional):
Line 833: in product_configurator_wizard/wizard/product_configurator.py should look at price_unit
`- line_vals.update({'name': sale_line.name})
line_vals.update({'name': sale_line.name,'price_unit': sale_line.price_unit or sale_line.product_id.lst_price})
`
Impacted versions:
9.0 and 10.0
Steps to reproduce:
Current behavior:
Traceback (most recent call last):
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/http.py", line 638, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/http.py", line 675, in dispatch
result = self._call_function(**self.params)
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/http.py", line 331, in _call_function
return checked_call(self.db, *args, **kwargs)
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/service/model.py", line 119, in wrapper
return f(dbname, *args, **kwargs)
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/http.py", line 324, in checked_call
result = self.endpoint(*a, **kw)
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/http.py", line 933, in __call__
return self.method(*args, **kw)
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/http.py", line 504, in response_wrap
response = f(*args, **kw)
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/addons/web/controllers/main.py", line 882, in call_button
action = self._call_kw(model, method, args, {})
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/addons/web/controllers/main.py", line 870, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/api.py", line 681, in call_kw
return call_kw_multi(method, model, args, kwargs)
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/api.py", line 672, in call_kw_multi
result = method(recs, *args, **kwargs)
File "/home/mchambreuil/odoo/10.0/src/odoo-product-configurator/product_configurator_wizard/wizard/product_configurator.py", line 728, in action_next_step
return self.action_config_done()
File "/home/mchambreuil/odoo/10.0/src/odoo-product-configurator/product_configurator_wizard/wizard/product_configurator.py", line 804, in action_config_done
'name': variant.display_name
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/addons/mail/models/mail_thread.py", line 274, in write
result = super(MailThread, self).write(values)
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/models.py", line 3550, in write
self._write(old_vals)
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/models.py", line 3668, in _write
field.write(self.with_context(rel_context), vals[name])
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/fields.py", line 2172, in write
comodel.create(act[2])
File "/home/mchambreuil/odoo/10.0/env/lib/python2.7/site-packages/odoo/addons/sale_margin/models/sale_order.py", line 50, in create
product_uom_id = self.env['product.uom'].browse(vals['product_uom'])
KeyError: 'product_uom'
Expected behavior:
Using version 10, I have configured a desktop with different choice of memory.
Memory is a product with 4 variants and different prices:
Memory Memory: 4 Gb 100.00 $
Memory Memory: 8 Gb 110.00 $
Memory Memory: 16 Gb 120.00 $
Memory Memory: 32 Gb 130.00 $
On the website, when I set the memory to 4 Gb, I get 100 $ added to the total on the right.
If I decide to change to 8 Gb, the total is unchanged. The right column and the total should be updated with 110 $.
How are the inherited domains (implied_ids) to be used? There is no reference to it in the documentation. If someone can provide an example use case, I will do a pull request on the docs.
Impacted versions:
odoo10
Steps to reproduce:
I create some orders of a configurable template
first i have the internal reference
img1
after I loose it
img2
if I query the database also the Internal Reference is missed, but I need it.
Current behavior:
loose Internal reference
Expected behavior:
mantain Internal reference for all product template
Video/Screenshot link (optional):
img1
img2
Hi there,
My name is Samuel, from Sussex Campervans .
We are currently looking to integrate our sales and manufacturing process in Odoo.
We recently came across the Pledra Module and have been testing certain parts out.
My question is how do you link multiple attributes values to a specific product.
Example:
Let's say we sell Coke and Fanta:
The Configurable Template is called 'Drink'
'Drink' has the attributes 'Drink Type' and 'Drink Size'
'Drink Type' has values: 'Coke' or 'Fanta'
'Drink Size' has values: 'Large' or 'Small'
How would I link the the products; ' Large Coke', 'Large Fanta', 'Small Coke', 'Small Fanta' to the attributes.
So that if someone were to configure a Large Coke the product Large Coke would be added to the BoM and pricing.
Many Thanks
Samuel
Sussex Campervans Ltd
The shopping cart button for the public user is empty and nothing happens.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.