powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Учет остатков бланков строгой отчетности
26 сообщений из 26, показаны все 2 страниц
Учет остатков бланков строгой отчетности
    #33321411
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитал большую ветку про остатки товара.
Да простят меня модераторы, надо было сразу сюда, а я вначале в форум Oracle.
Похожий аспект проблемы:
Система учета авиабилетов (БСО – бланки строгой отчетности).
В общий чертах кассиры - получают от кого-то бланки, реализовывают их, передают другому (кассиру, кладовщику).
Операций в общем случае две – расход (расходный ордер), приход (приходный ордер) (в принципе, может быть операция – отказ от приема бланков по причинам несоответствия реально переданных бланков расходному ордеру, но на это пока не стоит обращать внимание).
Каждый бланк характеризуется типом, например, ”555”, серией (“420”), номером (“1234567”). Совокупность этих параметров уникальна.
Ордер описывает: кто передает (получает), кому, дата операции, № ордера и записи следующего содержания - тип, серия и диапазон номеров (передаются пачками без дыр в нумерации) начальный - конечный. Имеем как бы таблицы операций – ордера и пачки бланков в них.
Если кассир просто реализовал бланк (продал билет, испортил бланк) то оформляется расходный ордер на самого себя.
Задач несколько:
1. Знать сколько бланков было у кассира на утро определенного дня
2. Знать сколько бланков у него сейчас
3. Если кассир (или кладовщики) передал другому бланки, то до той поры, пока другой не отметится о их получении они числятся «в пути» (но при этом считаем, что на остатках первого кассира они уже не числятся). Учет бланков в пути.
4. И соответственно знать, сколько бланков было во всем агентстве (филиалах) на определенное число и на настоящий момент.
У меня есть некоторые идеи по общей организации БД, но пока не хочу их навязывать. Если тема вызовет интерес – обменюсь идеями.
С уважением.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33321550
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, бланки в пути - кто за них отвечает? По аналогии с перевозками может следует ввести конкретных транспортных агентов, (курьеров, доставщиков).
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33321595
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кассир, кладовщик формирует расходный ордер на передаваемые бланки и все это отправляет адресату по почте, курьерской службой (заказными письмами,...). Способы доставки роли не играют. Главное один передал ( с остатков у него они ушли), другой через некоторое время получил их, оформив приходный ордер на себя. Как только оформил ордер, бланки уходят с пути и становятся ему в подотчет (на остатки). В случае физического несоответствия бланков расходному ордеру - есть варианты. Думаю пока на них не надо заострять внимание.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33321719
andsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Занимался как-то такой задачей, когда оаботал в а/к Сибирь.
Существующие программы вам не подходят?
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33321833
tertertertertertert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andsmЗанимался как-то такой задачей, когда оаботал в а/к Сибирь.
Существующие программы вам не подходят?

совсем недавно дискутировали эту тему - ищите по слову "бланки"
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33323211
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>andsm В системе авиаперевозок нет единого стандарта, очень много разработчиков всяких систем. По-этому приходится изобретать велосипед. Тем более, что это только часть системы и если у тебя есть система билетопечати с хранением распечатываемой информации на сервере, система ввода отчетов кассиров то совсем необязательно приобретать только движение БСО.
Есть у меня желание обменяться идеями, нет ли у Вас подобного?
Вкратце суть нашего предполагаемого подхода:
1. 2 таблицы операций :
Первая - заголовок ордера -
iddoc, Дата,номер,тип (приход,расход),от кого, кому.
Вторая - сами пачки бланков -
idblank,iddoc,тип бланка, серия, начальный номер, конечный.
2. Таблица оперативного учета (по каждому бланку):
id,тип бланка, серия, номер, текущий владелец, статус и ряд служебных полей (дата создания записи, кто создал, дата последней модификации, кто модифицировал)
статус - пусто, значит есть у владельца
- 1 реализован
- 2 в пути (можно наверно завести поле кому отправлен)
На один бланк только одна запись, отражается только последнее состояние.
Если статус 2 - то он будет гореть до тех пор, пока новый владелец не получит бланк и поле текущий владелец станет равным новому, а поле статус станет пустым.
Подобная конструкция позволяет вести оперативный учет и ароеде есть возможность получить остатки на любой день, прогон таблицы операции с начала или с конца. Операций много, перемещения бланков идут постоянно, поэтому думаю о промежуточных итогах - остатках. Заводим таблицу остатки и время от времени сохраняем остатки на какое-либо число с большим гандикапом (например формируем остатки на 1 января только в феврале), думаю хватит или 1 раз в год или 2 раза в год. Гандикап нуден, чтобы больше никогда предыдущие данные не изменять, если ну очень хочется провести проводки сегодняшним числом. Бланки передаются так часто, контроль их наличия постоянен, поэтому, думаю, возможная ошибка выявится в течение месяца.
Народ - оцените пожалуйста.
> tertertertertertert Спасибо, сейчас поищу.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33323240
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У каждого бланка должно быть 2 даты: когда он был принят на учет ( вообще появился в ситеме NOT NULL) и когда он перестал существовать (испортили/потеряли/израсходовали, возможен NULL). И все операции с бланком должны осуществляться только в этот период.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33323383
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я немного неправильно написал в разделе
2. Таблица оперативного учета (по каждому бланку):
id,тип бланка, серия, номер, текущий владелец, статус и ряд служебных полей (дата создания записи, кто создал, дата последней модификации, кто модифицировал)
Дата создания записи - это и есть дата постановки на учет (она не меняется)
Дата последней модификации - по смыслу. Если реализовали, значит ничего больше изменяться по этому бланку не будет.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33323425
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>tertertertertertert
Нашел ветку, инициированную sp.
До логического конца не доведенное обсуждение, о расчете остатков на конкретное число там речи нет. Строится история перемещений бланка от начала до реализации (одному бланку соответствует много записей). Нет состояния "в пути", но можно и добавить. Получается, чтобы получить информацию о наличии бланков на конкретное число надо найти последнюю дату по каждому бланку до указанного числа, голова совсем не варит, не подскажете вариант запроса? Желательно для Oracle.
Кроме того, перемещения идут постоянно, от 1000 до 10000 в день, за год будет миллиона 3 записей. Немного наверно.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33323507
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще.
Проблема - исправление задним числом. Хорошо, если ошибка была в рамках одного кассира, открыли отчет за такое-то число, исправили расходный-приходный ордер и все тит-топ.
А если бланки перешли к другому, он их принял и только потом обнаружил ошибку. Никакого автоматического пересчета, имхо, делать нельзя. Первый должен исправить, затем второй. Кто как думает?
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33323574
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тихо сам с собою...
замкнуло, запрос на получение последней даты по каждому бланку
select id,max(data) from t1 group by id where data<'16.01.2004'
Кто работал с подобной организацией данных, не подскажете, как долго будет считаться на 10 млн. записей. Нужен будет индекс по id или по id +data?
Количество повторяющихся id будет очень большим, где-то до 100. Есть неявное условие - желательно, чтобы бланк должен быть реализован за два месяца.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33323591
sp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1963>tertertertertertert
Нашел ветку, инициированную sp.
До логического конца не доведенное обсуждение, о расчете остатков на конкретное число там речи нет. Строится история перемещений бланка от начала до реализации (одному бланку соответствует много записей). Нет состояния "в пути", но можно и добавить. Получается, чтобы получить информацию о наличии бланков на конкретное число надо найти последнюю дату по каждому бланку до указанного числа, голова совсем не варит, не подскажете вариант запроса? Желательно для Oracle.
Кроме того, перемещения идут постоянно, от 1000 до 10000 в день, за год будет миллиона 3 записей. Немного наверно.

просто там подразумевалось это делать триггером

BlankID
DateStart default(getdate())
DateFinish default('01/01/3000')

при вставке новой записи - последней "активной" записи вместо '01/01/3000' - пишется текущая дата.
а зпрос такой - показать по BlankID где Дата>=DateStart и Дата<DateFinish
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33323963
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>sp
>просто там подразумевалось это делать триггером
>BlankID
>DateStart default(getdate())
>DateFinish default('01/01/3000')
>при вставке новой записи - последней "активной" записи >вместо '01/01/3000' - пишется текущая дата.
>а зпрос такой - показать по BlankID где Дата>=DateStart и Дата<DateFinish

Поясните, пожалуйста. Кроме таблицы перемещений бланка завести указанную таблицу, где на каждый бланк одна запись? datestart вводится один раз (при первичном попадании бланка в базу), datefinish - когда бланк снимается с учета (реализован,аннулирован,списан,...)? Я правильно понял?

Если да, то как получить остатки по конкретному кассиру на определенное число. Что-то не получается. Тогда либо в таблице перемещений две даты (начальная и конечная) и при новом перемещении в предыдущей пишем datefinish=getdate()-1 (или getdate()), а в новой datestart=getdate(),datefinish='01/01/3000'.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33324040
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создал для пробы таблицу перемещений (с диапазоном дат)
create table blank (iddoc number(38),idblank number(38),num char(14),ind number(4), status char(1),dbegin date,dend date,constraint pk_blank primary key (idblank)
iddoc-Ссылка на расходный/приходный ордер.
Дополнительно
create sequence sq_blank
Планируется работа следующим образом
Бланк ххх поступил кассиру 123
insert into blank values (111,sq_bank.nextval,'xxx',123,' ',sysdate,to_date('01.01.3000', 'dd.mm.yyyy'))])
(dbegin - sysdate или дата которой кассир заходит в систему)
Если бланк реализован - статус '1'
Если бланк передан кассиру 321,
update blank set dend=sysdate для этого бланка
и добавляется запись со статусом '2'
insert into blank values (222,sq_bank.nextval,'xxx',123,'2' ,sysdate,to_date('01.01.3000', 'dd.mm.yyyy'))])
Когда прийдет подтверждение, то во второй записи номер кассира изменится
на 321 и status=' '
Здесь, к сожалению не видно кому отправлен бланк, но информация об этом есть в расходном ордере.
и второе - (расчет остатков на конкретную дату) - насколько оптимален поиск по диапазону дат, может все-же завести одну дату и искать ближайшую дату до искомой?
У кого есть какие мысли?
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33324240
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1963
Не морочь голову людям.
Чтобы получить остатки по кассирам - Все делается очень просто.
Просто не надо забывать, что кроме сущности "Бланки" существует сущность "Места хранения (кассиры)".
Каждый бланк входит в пачку (при передаче). Пачка в акт приемки-передачи.
В акте можно узнать кол-во каждого вида бланков. И, далее делаем бухгалтерскую проводку - один сдал (минус) другой принял (плюс). И, далее - проводки,обороты - остатки. Все тривиально но тока потрахаться чуть -чуть надо.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33324473
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, не буду морочить людям голову, но и остатки хранить тоже не хочу.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33324737
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мысль....
Разделить Бланк на Бланк (id->...) и СтатусБланка (id,date->...).
Объединить СтатусБланка и ОперациюБланка (id, doc-> ...)
т.к. статус всегда изменяется операцией и операция всегда задается документом, так что doc --> date.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33324824
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 ModelR
Не понимаю, вы о таблице переходов состояний думаете? тапа конечного автомата?

Мне, например, видится что такая фича как статус бланка вообще в этой системе - лишняя. Я правда пока что не уверен. Давайте попробуйте убедить меня в обратном. Я полагаю что статус бланка определяется местом где он находится.Утерянные - к утерянным, испорченные - к испорченным и т.д.
А вот дата последней операции с бланком - другое дело.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33325270
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, статус - это различимое состояние, объкет не может находится в двух состояниях сразу. Поскольку полбланка не движуться, то состояние и операция его создавшая связаны 1:1.

Бланк ('xxx')
Статус ('xxx', дата1, где=123, на основании =док1, годен=да,..., датаокончания=дата2)
Статус ('xxx', дата2, где=в пути, на основании =док2, годен=да,..., датаокончания=)

Документ Док2 перевел бланк из одного состояния в другое.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33325332
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да... Бланк не может находиться в двух местах сразу.
Он всегда в конкретном месте.

По идее кассир должен иметь у себя несколько счетов для кажного типа бланков - нормальные, утерянные, испорченные. И естественно перекладывать эти бумажки между этими счетами. Ну и естественно счет определяет состояние)...

И, честно говоря такое понятие как "в пути" .. тут были правы - они у курьера а не в пути.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33325580
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>ModelR Спасибо за ответ.
>>Бланк ('xxx')
??Статус ('xxx', дата1, где=123, на основании =док1, годен=да,..., >>датаокончания=дата2)
>>Статус ('xxx', дата2, где=в пути, на основании =док2, годен=да,..., >>датаокончания=)
>>Документ Док2 перевел бланк из одного состояния в другое.

Заводить в справочнике кассиров квази-кассира "в пути"?
Только необходимо знать, кому именно отправили бланк ххх. Поэтому я предполагаю во второй записи писать где=321 (кому), а в специальном поле статус - признак трансфера, по умолчанию там будет пусто (т.е. бланк числится у агента). а в первой записи поставить прзнак отправлен. Т.е. бланк в этот момент времени ни за кем не числится. Когда кассир 321 примет его статус станет пустым, dbegin=sysdate() т.е. бланк годен и находится у втрого кассира (трансфер завершен). Можно было бы использовать для подобного учета таблицу документов (ордеров), но так мне кажется будет быстрее вычислить и историю любого бланка и остатки по любому кассиру на любую дату. Если зря писал, прошу простить. :)
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33325656
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, Андрей, а как собственно акт приемки -передачи у вас будет выглядеть?
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33325691
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey1963Т.е. бланк в этот момент времени ни за кем не числится. Рука шефа безопасности рефлекторно тянется к пистолету...:)

В предложенной схеме предполагается, что первично о том, кто, что, кому и как передаетнаписано в документе . В момент проводки документа (а документ в свою очередь может иметь несколько состояний, переход между которыми порождает проводки) обновляется Статус - закрывается предшествующее состояние (датаокончания) и создается запись для нового с открытой датой окончания.
Т.е. чтобы выяснить про бланк в пути, а куда собственно он держит путь, нужно посмотреть в документ. Теоретически, по факту он может прибыть совсем в другое место, и именно про это место появится новая запись в Статусе. Про плановое место вообще в Статусе записей не будет.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33325767
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного еще топлива в топку.

Смотря на акт приемки передачи я вижу что там должно быть по крайней мере 2 записи - кто сдал и кто принял. Т.е. Первый чел должен сначала сформировать все то, что он передает и указать - кому. А второй чел должен всю эту байду принять. Т.е. сама передача должна проходить как-бы в два этапа. Иначе челу как насуют... что ему мало не покажется.
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33326789
Andrey1963
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Люблю, когда по делу вопросы задают :))
Передача проводится в два этапа - в таблицу ордеров заводится расходный ордер, в котром сказано от кого, кому передана пачка бланков. Проверяется наличие данных бланков в таблице бланки (где они поштучно, со статусом пусто,т.е. принадлежеат данному агенту) (точнее их количестов count(*) where status=' ' and kassa=123). Если эти бланки есть, то им всем меняется статус в отправленr и для каждого бланка создается новая запись, где указана касса, которой отправляется (321) и статус - transfer и даты. Когда второй кассе прийдет оповещение о передаче, она просмотрит отпарвдленные ей бланки и если все нормально - примет их, т.е. оформит приходный ордер - в таблице ордеров появится соответствующая запись, а в таблице бланки у первой кассы можно поменять статус на окончательно отправлен, а у второй статус станет=' ', т.е. принадлежащим данной кассе. Трансфер завершен, приянть бланки отправленные не ей она не может. Единственно только по таблице нельзя отследить кто ей отправлял, поэтому в ней есть ссылка на талицу ордеров (документов), следовательно мы видим полную картину перемещений. И передача проходит в два этапа расход-приход с подтверждением. Так пойдет?
...
Рейтинг: 0 / 0
Учет остатков бланков строгой отчетности
    #33327412
gardenman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пока не знаю пойдет или нет. Надо взвесить. Поставь себя на место кассира. И будет ли тебе с этим удобно работать?... Ну, типа сформировать несколько актов приемки-передачи так, чтобы бланки в этих актах не пересекались.
Чем дальше все всзвешиваю, тем больше мне кажется что поле статуса нафиг не нужно.
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Учет остатков бланков строгой отчетности
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]