По-моему, это достаточно стандартная ситуация (почти уверена, что в любой бухгалтерской программе реализована функциональность ведения бланков строгой отчетности и принципы внутри каждой их них будут примерно одинаковыми).
Бланки, как ни крути, должны вестись каждый по отдельности, поскольку даже если они и пришли все вместе с 1 по 100, то уйти первые 50 могут в одно место, а следующие 50 в другое, а 14, 67 и 80 могут быть и вовсе испорчены и т.п., и одной записью, типа "1-100" не отделаешься.
Но, обычно, пользователи (небезосновательно) требуют возможность ввести диапазоны, поскольку, извините, но натикать 100 штук бланков в приход, а потому 50 в один расход и 50 в другой дело невеселое.
Подобные пожелания, можно решить чисто интрефейсно:
1. Приход бланков: пользователь, грубо говоря, создают одну накладную (с одним номером, датой и т.п.) и задает, что это приход с 1 по 100 бланк (ну или с 35 по 3567), при проведении/сохранении или какой другой операции, система автоматически генерит нужное количество записей, которые как раз и прихродуются реально (а потом храняться, учитываються и т.д.)
2. Передача бланков: аналогично, создается один документ (когда, кому и т.п.) и указываем, что согласно этому документу отдаем с 40 по 67, и аналогично, система (невидимо или видимо для пользователя) бланки с соответствующими номерами списывает со склада и приходует в указанное подразделение
...
дальше, наверное, писать не буду, все аналогично