Во-первых, я бы посоветовал вам переформатировать ваши данные. Если вы не можете найти ключевую ошибку, это означает, что вы делаете ее слишком сложной.
В любом случае, KeyError "12" заставляет меня думать, что вы пытаетесь обновить запись для определенного идентификатора отдела, который еще не существует.
На самом деле, вы не проверяете, существует ли ["department_id"]
перед обновлением products[entry]["department_id"]
На самом деле, теперь, когда я смотрю на него, кажется, вы проверяете, не существует ли он, а если нет, вы обновляете его, а не создаете его.
Попробуйте переключить два действия.
Может быть, попробуйте
if products[entry]["department_id"] in total_for_department