1

I have installed running Odoo 14 in Docker using the default setup without any additional customisations. For the past several days I've been trying to install the Point of Sale module from within Odoo with no success - every time I get the error below.

Could anyone please help me figure out what's wrong and get PoS working?

Thank you!

    Odoo Server Error

    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_http.py", line 237, in _dispatch
        result = request.dispatch()
      File "/usr/lib/python3/dist-packages/odoo/http.py", line 682, in dispatch
result = self._call_function(**self.params)
      File "/usr/lib/python3/dist-packages/odoo/http.py", line 358, in _call_function
return checked_call(self.db, *args, **kwargs)
      File "/usr/lib/python3/dist-packages/odoo/service/model.py", line 94, in wrapper
return f(dbname, *args, **kwargs)
      File "/usr/lib/python3/dist-packages/odoo/http.py", line 346, in checked_call
result = self.endpoint(*a, **kw)
      File "/usr/lib/python3/dist-packages/odoo/http.py", line 911, in __call__
return self.method(*args, **kw)
      File "/usr/lib/python3/dist-packages/odoo/http.py", line 530, in response_wrap
response = f(*args, **kw)
      File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1363, in call_button
action = self._call_kw(model, method, args, kwargs)
      File "/usr/lib/python3/dist-packages/odoo/addons/web/controllers/main.py", line 1351, in _call_kw
return call_kw(request.env[model], method, args, kwargs)
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 396, in call_kw
result = _call_kw_multi(method, model, args, kwargs)
      File "/usr/lib/python3/dist-packages/odoo/api.py", line 383, in _call_kw_multi
result = method(recs, *args, **kwargs)
      File "<decorator-gen-71>", line 2, in button_immediate_install
      File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 73, in check_and_log
return method(self, *args, **kwargs)
      File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 474, in button_immediate_install
return self._button_immediate_function(type(self).button_install)
      File "/usr/lib/python3/dist-packages/odoo/addons/base/models/ir_module.py", line 592, in _button_immediate_function
modules.registry.Registry.new(self._cr.dbname, update_module=True)
      File "/usr/lib/python3/dist-packages/odoo/modules/registry.py", line 89, in new
odoo.modules.load_modules(registry._db, force_demo, status, update_module)
      File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 455, in load_modules
loaded_modules, update_module, models_to_check)
      File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 348, in load_marked_modules
perform_checks=perform_checks, models_to_check=models_to_check
      File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 221, in load_module_graph
load_data(cr, idref, mode, kind='data', package=package)
      File "/usr/lib/python3/dist-packages/odoo/modules/loading.py", line 69, in load_data
tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind)
      File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 733, in convert_file
convert_xml_import(cr, module, fp, idref, mode, noupdate)
      File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 799, in convert_xml_import
obj.parse(doc.getroot())
      File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 719, in parse
self._tag_root(de)
      File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 677, in _tag_root
f(rec)
      File "/usr/lib/python3/dist-packages/odoo/tools/convert.py", line 684, in _tag_root
etree.tostring(rec, encoding='unicode').rstrip()
    Exception

    The above exception was the direct cause of the following exception:

    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/odoo/http.py", line 638, in _handle_exception
return super(JsonRequest, self)._handle_exception(exception)
      File "/usr/lib/python3/dist-packages/odoo/http.py", line 314, in _handle_exception
raise exception.with_traceback(None) from new_cause
    odoo.tools.convert.ParseError: while parsing /usr/lib/python3/dist-packages/odoo/addons/point_of_sale/data/point_of_sale_data.xml:13, near
    <record id="product_category_pos" model="product.category">
        <field name="parent_id" ref="product.product_category_1"/>
        <field name="name">PoS</field>
    </record>
zkvvoob
  • 394
  • 1
  • 4
  • 26
  • 1
    If you replace [this line of code](https://github.com/OCA/OCB/blob/14.0/odoo/tools/convert.py#L681) with just "raise", restart Odoo, and try to install again, it should give you a different / the real cause of error in the XML.. could you try that? – littlegreen Dec 02 '20 at 19:36
  • Gladly, but how exactly do I find the file to replace the code? I'm running in Odoo in a Docker container. Also, are you sure just line 681? That will leave a closing bracket on L685 without an opening one. – zkvvoob Dec 03 '20 at 17:31
  • You'll have to [go into the Docker container and edit the file](https://stackoverflow.com/q/47490307/208486), then restart the Docker container. It's not just line 681, you can either delete or comment out the full of 681-685 and replace it by "raise", or just insert an new line 681 above the current one that has the "raise". The code below that then won't be executed. – littlegreen Dec 06 '20 at 10:10
  • Thank you! I was able to SSH into my NAS and run `docker exec -it odoo14`. However, I wasn't able to find `convert.py` - as far as I can see, there's no `tools`directory (I used the find command). What am I doing wrong? – zkvvoob Dec 06 '20 at 16:36
  • `point_of_sale` installs correctly using the lastest docker image. – Kenly Dec 06 '20 at 17:08
  • @kenly Well, I am running the latest version, as far as I can tell, and I still keep getting the same error today. @littlegreen Anyway, I managed to get to the file (or at least so I think): `/usr/lib/python3/dist-packages/odoo/tools/convert.py`, added a new line 681 with just `raise` in it, tried installing POS once again but didn't get anything different. See full output [here](/usr/lib/python3/dist-packages/odoo/tools/convert.py). – zkvvoob Dec 07 '20 at 10:44
  • You can install `jingtrang` to get more precise and useful validation messages as suggested by Odoo in [convert.py](https://github.com/odoo/odoo/blob/14.0/odoo/tools/convert.py#L791) file. – Kenly Dec 07 '20 at 11:34
  • Thanks, @Kenly. This, however, is a tad above my head.Do I install this inside the Odoo Docker container or on the host system. And how do I use it afterwards? – zkvvoob Dec 07 '20 at 17:00
  • 1
    I've just spun a test Odoo container without any data and it POS did install properly. I'll have to figure out how to move all data from the old instance to the new one. – zkvvoob Dec 07 '20 at 17:26
  • You are welcome and of course inside the container. You will see more detailed error messages in the log. – Kenly Dec 07 '20 at 18:25
  • I've actually managed to get around the error by switching to English. Afterwards I got a different error about a missing external id, which I added. Now I'm getting a different message: `The operation cannot be completed: - Create/update: a mandatory field is not set. - Delete: another model requires the record being deleted. If possible, archive it instead.` – zkvvoob Dec 07 '20 at 20:18
  • On top of this, there's an error message: `Traceback (most recent call last): File "/usr/lib/python3/dist-packages/odoo/http.py", line 638, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/usr/lib/python3/dist-packages/odoo/http.py", line 314, in _handle_exception raise exception.with_traceback(None) from new_cause KeyError: product.template.has_configurable_attributes` – zkvvoob Dec 07 '20 at 20:29
  • What happens when you backup your current product data and try to restore it in the new environment? This sounds like a bug in the view where you are using a special character in one of the product category records. Importing might make it more obvious where it got stock in the first place. – JustLudo Dec 09 '20 at 09:58

1 Answers1

1

General advice

If you want to improve your chances of success, don't try to load any modules from other versions or third parties, and try to stick to the basic functionality, or try an older version, or packaging that is supported by another company, such as https://github.com/Elico-Corp/odoo-docker or a fork such as https://hub.docker.com/r/flectrahq/flectra/

If you really want to fix it...

It looks like you're using an incompatible version of the point-of-sale add-on.

You will need to start with Odoo's above average documentation: https://www.odoo.com/documentation/14.0/

Seeing as that you're dealing with a module, you will need to invest some time into https://www.odoo.com/documentation/14.0/howtos/backend.html

If you want to learn more about Python, give yourself a few months, and start with something like this: https://www.udemy.com/course/the-complete-python-course/ and then move on to https://subscription.packtpub.com/search?query=working%20with%20odoo%2011&released=Available

Sticking to trial-and-error...

To move your database, just go to the database manager: http://odoo:8069/web/database/manager#action=database_manager and export your database from there, then import it via the same URL on your new instance.

Some Odoo background

Besides the fact that any software sometimes introduce breaking changes, and that the internals of any ERP demand a high level of technical expertise, Odoo CE seems further disadvantaged by especially careless Odoo employees as "breaking changes" play into their tactic of motivating use their hosted service - which is their main revenue model. (Also evidenced by their effort to rewrite modules under a non-GPL licence.)

They clearly lack the faith in humanity that drives open source. Lets keep motivating them to share, help and open up. Open source is more than a cheap marketing gimmick: The power of open source comes from trust, and unconditional giving, which drives a much larger market that any number of corporations can handle.

dagelf
  • 1,468
  • 1
  • 14
  • 25
  • Much obliged for the suggestion. I will definitely give it a try. What I'm puzzled by, however, is that a fresh Docker container doesn't run into any of these issues and the POS module installs properly. It's only when I tried to do it in a container where I already have products that it fails. – zkvvoob Dec 08 '20 at 06:48
  • Odoo is fairly complicated and you have to understand the internals if you want to tread off the beaten path... try the export and import into a fresh container... from there its easier to make snapshots to experiment with to see what's breaking it. – dagelf Dec 08 '20 at 14:16