# Error when cancelling customer shipment

**URL:** https://discuss.tryton.org/t/error-when-cancelling-customer-shipment/8255
**Category:** Developer
**Tags:** sales
**Created:** [January 28, 2025, 12:33pm UTC](https://discuss.tryton.org/t/error-when-cancelling-customer-shipment/8255 "2025-01-28T12:33:44Z")
**Posts on this page:** 6
**Page:** 1

<div class="post-metadata">

### Author: ![jt93](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/j/50afbb/32.png) [@jt93](https://discuss.tryton.org/u/jt93)
#### Post date: [January 28, 2025, 12:33pm UTC](https://discuss.tryton.org/t/error-when-cancelling-customer-shipment/8255/1 "2025-01-28T12:33:44Z")

</div>

Hi,

when I try to cancel a customer shipment I get the following error with tryton 7.4:

```auto
trytond/modules/stock_shipment_measurements/stock.py", line 182, in cancel
    if issubclass(move.shipment, MeasurementsMixin):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: issubclass() arg 1 must be a class

```

At first I thought its a small bug, but when I use `type(move.shipment)` instead to get the class, I get another error:

```auto
trytond/modules/stock_shipment_measurements/stock.py", line 185, in cancel
    Shipment.set_measurements(shipments)
  File "trytond/trytond/modules/stock_shipment_measurements/stock.py", line 318, in set_measurements
    cls.write(shipments, {})
  File "trytond/trytond/modules/stock/shipment.py", line 1779, in write
    super(ShipmentOut, cls).write(*args)
  File "trytond/trytond/model/modelsql.py", line 275, in wrapper
    return func(cls, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "trytond/trytond/model/modelsql.py", line 1380, in write
    sum(((records, values) + args)[0:None:2], [])))
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: can only concatenate list (not "set") to list

```

Am I missing something here? Any help is appreciated.

Thanks

---

<div class="post-metadata">

### Author: ![pokoli](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/pokoli/32/22_2.png) [@pokoli](https://discuss.tryton.org/u/pokoli)
#### Post date: [January 28, 2025, 1:30pm UTC](https://discuss.tryton.org/t/error-when-cancelling-customer-shipment/8255/2 "2025-01-28T13:30:22Z")

</div>

> [@jt93](#):
>
> ```auto
> trytond/modules/stock_shipment_measurements/stock.py", line 182, in cancel
> if issubclass(move.shipment, MeasurementsMixin):
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> TypeError: issubclass() arg 1 must be a class
> 
> ```

I guess you should use `isinstance` instead of `isssubclass` to fix it.

Could you please fill an issue in the [bug tracker](https://bugs.tryton.org/)?  
If you want to contribute the fix back to the project, make sure to read our h[ow to develop](https://www.tryton.org/develop) page.

Thanks for your effort on this!

---

<div class="post-metadata">

### Author: ![jt93](https://discuss-cdn.tryton.org/letter_avatar_proxy/v4/letter/j/50afbb/32.png) [@jt93](https://discuss.tryton.org/u/jt93)
#### Post date: [January 28, 2025, 4:24pm UTC](https://discuss.tryton.org/t/error-when-cancelling-customer-shipment/8255/3 "2025-01-28T16:24:52Z")

</div>

Thanks for your reply. Using `isinstance()` solves the first problem and I created an [issue](https://foss.heptapod.net/tryton/tryton/-/issues/13842). However, the second problem appearing afterwards seems to be a bigger one. Could it be another Bug, or some wrong configuration on my side?

Thanks

---

<div class="post-metadata">

### Author: ![dotbit](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/dotbit/32/2093_2.png) [@dotbit](https://discuss.tryton.org/u/dotbit)
#### Post date: [January 29, 2025, 5:37am UTC](https://discuss.tryton.org/t/error-when-cancelling-customer-shipment/8255/4 "2025-01-29T05:37:40Z")

</div>

In fully updated 7.4 I get the following while trying to delete a shipment that was created from sale:

```auto
Traceback (most recent call last):
  File "/trytond/wsgi.py", line 96, in dispatch_request
    return endpoint(request, **request.view_args)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/protocols/dispatcher.py", line 44, in rpc
    return methods.get(request.rpc_method, _dispatch)(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/wsgi.py", line 76, in wrapper
    return func(request, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/protocols/wrappers.py", line 206, in wrapper
    result = func(request, pool, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/protocols/dispatcher.py", line 216, in _dispatch
    result = rpc.result(meth(*c_args, **c_kwargs))
                        ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/modules/stock/shipment.py", line 1798, in delete
    cls.cancel(shipments)
  File "/trytond/model/modelview.py", line 764, in wrapper
    return func(cls, records, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/modules/stock_shipment_measurements/stock.py", line 461, in wrapper
    result = func(cls, shipments, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/model/workflow.py", line 37, in wrapper
    result = func(cls, filtered, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/modules/stock_shipment_measurements/stock.py", line 563, in cancel
    super().cancel(shipments)
  File "/trytond/model/modelview.py", line 764, in wrapper
    return func(cls, records, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/model/workflow.py", line 37, in wrapper
    result = func(cls, filtered, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/modules/sale_shipment_cost/stock.py", line 242, in cancel
    super().cancel(shipments)
  File "/trytond/model/modelview.py", line 764, in wrapper
    return func(cls, records, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/model/workflow.py", line 37, in wrapper
    result = func(cls, filtered, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/modules/sale/stock.py", line 25, in wrapper
    func(cls, shipments)
  File "/trytond/modules/sale/stock.py", line 71, in cancel
    super(ShipmentOut, cls).cancel(shipments)
  File "/trytond/model/modelview.py", line 764, in wrapper
    return func(cls, records, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/model/workflow.py", line 37, in wrapper
    result = func(cls, filtered, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/modules/stock/shipment.py", line 1734, in cancel
    Move.cancel([m for s in shipments
  File "/trytond/model/modelview.py", line 764, in wrapper
    return func(cls, records, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/model/workflow.py", line 37, in wrapper
    result = func(cls, filtered, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/trytond/modules/stock_shipment_measurements/stock.py", line 182, in cancel
    if issubclass(move.shipment, MeasurementsMixin):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: issubclass() arg 1 must be a class

Fault: issubclass() arg 1 must be a class

```

PS: My temporary fix is to first delete the outgoing moves, then I successfully delete the shipment without a crash.

Tested on [demo.tryton.org](http://demo.tryton.org) and I get the same crash after activating shipment measurements module.

> **[Error when cancelling customer shipment (#13842) · Issues · Tryton / Tryton ·...](https://foss.heptapod.net/tryton/tryton/-/issues/13843)**
>
> Cancelling a customer shipment does not work with the stock\_shipment\_measurements module activated. Reference: https://discuss.tryton.org/t/error-when-cancelling-customer-shipment/8255

---

<div class="post-metadata">

### Author: ![dotbit](https://discuss-cdn.tryton.org/user_avatar/discuss.tryton.org/dotbit/32/2093_2.png) [@dotbit](https://discuss.tryton.org/u/dotbit)
#### Post date: [January 29, 2025, 6:49am UTC](https://discuss.tryton.org/t/error-when-cancelling-customer-shipment/8255/5 "2025-01-29T06:49:34Z")

</div>

@jt93 Do feel free to assign yourself to the issue I created.

---

<div class="post-metadata">

### Author: ![system](https://discuss-cdn.tryton.org/uploads/default/original/1X/c6f8ec0a40525cdcd50058c734283450a4b3d38b.png) [@system](https://discuss.tryton.org/u/system)
#### Post date: [January 30, 2025, 6:50am UTC](https://discuss.tryton.org/t/error-when-cancelling-customer-shipment/8255/6 "2025-01-30T06:50:15Z")

</div>

This topic was automatically closed 24 hours after the last reply. New replies are no longer allowed.
