Я на своей практике (а работаю я именно с системами учета) из нормальных могу порекомендовать такую структуру:
1) таблица Приходов Income (заголовок, где указанны дата прихода, подразделение куда пришел и прочее) + IncomeGoods - (тело заголовка, где указан товар, количество и цена)
2) Таблица Расходов Outgo(заголовок, где указанны дата расхода, подразделение от куда ушел) + OutgoGoods - (тело заголовка, где указан товар, количество и цена)
3) таблица взаимосвязей - RelationIO (идентификаторы приходной позиции товара из IncomeGoods и OutgoGoods )-> таблица взаимосвязей приходов и расходов.
В чем суть таблицы: у вас есть приход допустим 20 штук. Вам нужно забрать из него 10 штук. Вы записываете в RelationIO то количество которое вы забрали из прихода и что его забрало.
Только понадобится написать процедуру проведения накладной - под проведением я подразумеваю набор свободных остатков для расхода.
Теперь по отдельным пунктам.
- Проводить документ только в транзакции. Никакие вычитания в данной системе не нужны. Все операции обратимы. Вы можете убрать взаимосвязи и удалить расход
-
при каждом обращении рассчитывать предыдущее состояние склада, вычитать из него 3-4 тысячи заказов и прибавлять 3-4 сотни поставок – не решение
Для проведения это единственное правильное решение. Иначе готовьтесь к большой Ж... в приходах и расходах, когда вся ваша система разрастется.
- Создайте в заголовках места хранения "Основное" и "Брак" + прочие
- По последнему писать не буду. Много там слишком. Если такая система заинтересует, могу примерную структуру таблиц прислать с алгоритмом (или кодом на MS SQL) для проведения