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