Я думаю, что проблема может заключаться в том, что изменения, которые вы внесли в self.capacity непосредственно перед поднятием предупреждения, не сохраняются в базе данных, потому что вы используете @ api.onchange, поэтому новое значение просто отображается в пользовательском интерфейсе, но не хранится в базе данных.
Попробуйте вместо этого использовать @ api.depends, изменение будет отражено как в пользовательском интерфейсе, так и в базе данных.