Yardım

0

Warehouse can't be created via ORM: psycopg2.errors.NotNullViolation: null value in column "picking_type_id" violates not-null constraint

Avatar
Szabolcs Máj

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`?

Avatar
Vazgeç