Hi there!
I want to create a migration script that migrates the client's current database to Odoo. I plan to use the ORM and I run into a problem when creating the basic warehouses that we need.
I have the following code:
def create_warehouse(name: str, code: str, company_id: int, partner_id: int):
return env['stock.warehouse'].create({'name': name, 'code': code, 'company_id': company_id, 'partner_id': partner_id})
company_id = env['res.company'].search([('name', '=', 'Client Company Co.')]).mapped('id')[0]
company_partner_id = env['res.partner'].search([('name', '=', 'Client Company Co.')]).mapped('id')[0]
create_warehouse('Main warehouse', 'MAIN', company_id, company_partner_id)
This results in the following error:
2021-03-26 06:06:18,876 1 ERROR uzem odoo.sql_db: bad query: INSERT INTO "stock_rule" ("id", "create_uid", "create_date", "write_uid", "write_date", "action", "active", "auto", "company_id", "delay", "delay_alert", "group_propagation_option", "location_id", "location_src_id", "name", "picking_type_id", "procure_method", "propagate_cancel", "propagate_date", "propagate_date_minimum_delta", "route_id", "sequence", "warehouse_id") VALUES (nextval('stock_rule_id_seq'), 1, (now() at time zone 'UTC'), 1, (now() at time zone 'UTC'), 'pull', true, 'manual', 6, 0, true, 'propagate', 5, 156, 'MAIN: Stock → Customers (MTO)', NULL, 'mts_else_mto', false, true, 1, 1, 20, 14) RETURNING id
ERROR: null value in column "picking_type_id" violates not-null constraint
DETAIL: Failing row contains (97, MAIN: Stock → Customers (MTO), t, propagate, null, pull, 20, 6, 5, 156, 1, mts_else_mto, null, null, 0, null, f, 14, null, manual, t, 1, t, 1, 2021-03-26 06:06:18.664042, 1, 2021-03-26 06:06:18.664042).
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "<console>", line 2, in create_warehouse
File "<decorator-gen-135>", line 2, in create
File "/usr/lib/python3/dist-packages/odoo/api.py", line 322, in _model_create_single
return create(self, arg)
File "/usr/lib/python3/dist-packages/odoo/addons/stock/models/stock_warehouse.py", line 122, in create
warehouse._create_or_update_global_routes_rules()
File "/usr/lib/python3/dist-packages/odoo/addons/stock/models/stock_warehouse.py", line 316, in _create_or_update_global_routes_rules
self[rule_field] = self.env['stock.rule'].create(values)
File "/usr/lib/python3/dist-packages/odoo/models.py", line 5573, in __setitem__
return self._fields[key].__set__(self, value)
File "/usr/lib/python3/dist-packages/odoo/fields.py", line 1040, in __set__
records.write({self.name: write_value})
File "/usr/lib/python3/dist-packages/odoo/addons/mrp/models/stock_warehouse.py", line 273, in write
return super(StockWarehouse, self).write(vals)
File "/usr/lib/python3/dist-packages/odoo/addons/stock/models/stock_warehouse.py", line 182, in write
warehouse._create_or_update_global_routes_rules()
File "/usr/lib/python3/dist-packages/odoo/addons/stock/models/stock_warehouse.py", line 316, in _create_or_update_global_routes_rules
self[rule_field] = self.env['stock.rule'].create(values)
File "<decorator-gen-3>", line 2, in create
File "/usr/lib/python3/dist-packages/odoo/api.py", line 343, in _model_create_multi
return create(self, [arg])
File "/usr/lib/python3/dist-packages/odoo/models.py", line 3707, in create
records = self._create(data_list)
File "/usr/lib/python3/dist-packages/odoo/models.py", line 3793, in _create
cr.execute(query, params)
File "/usr/lib/python3/dist-packages/odoo/sql_db.py", line 163, in wrapper
return f(self, *args, **kwargs)
File "/usr/lib/python3/dist-packages/odoo/sql_db.py", line 240, in execute
res = self._obj.execute(query, params)
psycopg2.errors.NotNullViolation: null value in column "picking_type_id" violates not-null constraint
DETAIL: Failing row contains (97, MAIN: Stock → Customers (MTO), t, propagate, null, pull, 20, 6, 5, 156, 1, mts_else_mto, null, null, 0, null, f, 14, null, manual, t, 1, t, 1, 2021-03-26 06:06:18.664042, 1, 2021-03-26 06:06:18.664042).
Not much data is entered before this, so that can't be an issue. I'd assume that the simple `create` of the ORM should create the warehouse without an issue.
What could be the problem that causes this not-null constraint error with `picking_type_id`?