PDA

Просмотр полной версии : Програма для учёта картриджей (Cartridge Control)


EmeJIbka
04.01.2008, 10:59
Хочу представить вам программу по учёту картриджей.

Если вы системный администратор, и у вас в обслуживании находится несколько принтеров разных моделей, то возникают несколько вопросов (всё выше и нижесказанное - IMHO). Например, “Какие картриджи надо заменить?”, “Какие куда подходят?” и так далее. Можно, конечно, вести учёт в excel`e, и первое время я так и делал. Но что-то не очень удобно было. Тогда я написал небольшую програмулину.

Скриншоты можно посмотреть можно тут (http://palkinmax.info-centr.org/uchyot-kartridzhej-cartridge-control/)

Скачать программу можно здесь (http://palkinmax.info-centr.org/wp-content/uploads/2008/01/setup-v071.exe)

Буду вам благодарен за любые замечания.

mozk
08.01.2008, 19:30
Качественный софт, радует понятность и предсказуемость интерфейса. Удобный редактор отчетов. Все что нужно и ничего лишнего.
Порадовала бы версия без инсталятора, но это дело вкуса.
Теперь переведу учет картриджей из голвы в твой софт))
P.S. было бы здорово скрестить твой софт с checkcfg (checkcfg.narod.ru), там этого нехватает. Но это из раздела фантастики)

EmeJIbka
08.01.2008, 19:52
Спасибо огромное, mozk за отзыв.
Версия без инсталятора будет (как вот только отловлю ошибки и определюсь со всеми опциями).
P.S. было бы здорово скрестить твой софт с checkcfg, там этого нехватает. Но это из раздела фантастики)
Эт точно. Хотя у меня есть задумка - сделать что-нибудь подобное, но это будет ой как не скоро.

dimonk
09.01.2008, 11:50
сыровато... я в свое время писал такую штуку на аксессе. идеология и функциональность существенно отличалась.

данная программа ориентирована на "поименный" учет имеющихся картриджей, что не вполне корректно. картриджи - это расходка. не может быть картриджей со статусом "не рабочий": картридж или заправлен, или пустой, или находится в заправке. неисправные картриджи или восстанавливаются, или выкидываются.

во главу угла я ставил принтер. меня интересовало: количество отпечатков в месяц, среднее количество отпечатков от одной заправки, стоимость ежемесячного обслуживания (заправка и ремонт), журнал обращений в сервис.

короче, есть над чем поработать. свою программу я, к сожалению (или счастью), не закончил - сначала приоритеты сменились, потом было лень, потом спустил на тормозах, а потом уволился. ;) часть функционала была реализована, часть использовал "вручную", забиванием нужной информации в аксессовские таблицы.

mozk
09.01.2008, 15:21
данная программа ориентирована на "поименный" учет имеющихся картриджей, что не вполне корректно. картриджи - это расходка. не может быть картриджей со статусом "не рабочий": картридж или заправлен, или пустой, или находится в заправке. неисправные картриджи или восстанавливаются, или выкидываются.
Обычно до списания у нас картридж лежит на нижней полке в состоянии не рабочий.
Привязывать картридж к конкретному принтеру (если я тебя правильно понял) имхо не правильно, три картриджа могут быть от двух одинаковых принтеров и постоянно меняться. Если не правильно понял - программа на данном этапе достаточно информативна, отчеты можно изменить по своему усматрению.
Есть пара заметок:
1) Сделай подстановку номеров автоматом, чтоб при добавлении нового картриджаему присваивался последний+1 номер;
2) Кнопки в операциях не мешало бы подписать, некоторые не сразу поняли как там и что, достаточно всплывающей подсказки;
3) Состояния по умолчанию можно переименовать, так например: установлен работает, сломан на полке, в ремонте, на списание, на заправке.
4) Добавь диалог "сохранить базу".
5) Неплохо было бы добавить зависимость состояния от операции, например создал операцию "заправка", состояние сразу поменлось на "на заправке", информативность главного окна заметно повысится, правда для этого нужно переделать справочник состояний;
6) Самое главное, убери обзательное нажатие Enter при редактировании операций. Особенно проявляется при выборе даты. Пример: выбрал мышкой число, оно установилось, но курсор еще в поле, ентер не нажали выбрали вторую дату, первая вроде записалась, курсор перешел во вторую дату, но этого уже достаточно для того чтобы сообщение о не найденной строке заипало. Приходится заполнять строку поновой, с обязательным нажатием ентер в каждой чейке.
А так ниче клевый софт) :beer:
P.S. возможность добавить свой отчет не помешает однака.

dimonk
10.01.2008, 09:26
Привязывать картридж к конкретному принтеру (если я тебя правильно понял) имхо не правильно, три картриджа могут быть от двух одинаковых принтеров и постоянно меняться.
не правильно понял. ;) в принтере закончился тонер, я меняю картридж и снимаю отчет. в отчете фигурируют количество отпечатанных страниц и серийный номер принтера - они и попадают в базу.

Обычно до списания у нас картридж лежит на нижней полке в состоянии не рабочий.
сколько раз заправлялся конкретный картридж, мне совершенно неинтересно. заправщик, с которым мы работаем, имеет весь набор необходимых запчастей для наиболее ходовых картриджей (кроме струйников и цветных лазерников, которые в нашей работе не используются). умер барабан - заправщик производит восстановление картриджа. единственное, в чем это находит выражение - в цене услуги.

так вот, накопленные данные (количество отпечатков в месяц по принтерам определенного типа, количество и стоимость заправок, количество отпечатков от одной заправки и стоимость технического обслуживания, если оно проводилось) позволяют рассчитать все что угодно - от совокупной стоимости владения до стоимости отпечатка.

да, учет картриджей у меня велся "в штуках". есть некоторый запас обезличенных картриджей - как заправленных, так и пустых. пустые, после накопления определенного количества или по определенному графику, сдаются заправщику. они их заправляет и они становятся почти как новенькие. никаких списаний, никаких выбрасываний, никакого узнавания картриджей "в лицо".

EmeJIbka
10.01.2008, 17:53
данная программа ориентирована на "поименный" учет имеющихся картриджей, что не вполне корректно. картриджи - это расходка. не может быть картриджей со статусом "не рабочий": картридж или заправлен, или пустой, или находится в заправке. неисправные картриджи или восстанавливаются, или выкидываются.
Состояния можно самому указывать в справочниках, а те что есть - это все-го лишь пример.
во главу угла я ставил принтер. меня интересовало: количество отпечатков в месяц, среднее количество отпечатков от одной заправки, стоимость ежемесячного обслуживания (заправка и ремонт), журнал обращений в сервис.
Это, в принципе всё есть, одно но - привязка не к принтеру, а к картриджу.
короче, есть над чем поработать. свою программу я, к сожалению (или счастью), не закончил
Можно на неё взглянуть?
Привязывать картридж к конкретному принтеру (если я тебя правильно понял) имхо не правильно, три картриджа могут быть от двух одинаковых принтеров и постоянно меняться. Если не правильно понял - программа на данном этапе достаточно информативна, отчеты можно изменить по своему усматрению.
Вы можете как указывать модели принтеров, так и сами принтеры в справочнике

1) Сделай подстановку номеров автоматом, чтоб при добавлении нового картриджаему присваивался последний+1 номер;
Добавлю такую опцию
2) Кнопки в операциях не мешало бы подписать, некоторые не сразу поняли как там и что, достаточно всплывающей подсказки;
Исправлю
3) Состояния по умолчанию можно переименовать, так например: установлен работает, сломан на полке, в ремонте, на списание, на заправке.
Учту
4) Добавь диалог "сохранить базу".
Не понял:confused: А зачем, собсна? Всё сохраняется автоматически
5) Неплохо было бы добавить зависимость состояния от операции, например создал операцию "заправка", состояние сразу поменлось на "на заправке", информативность главного окна заметно повысится, правда для этого нужно переделать справочник состояний;
Не хочу вводить зависимость между операциями и состоянием. Для меня операции - это прежде всего история
6) Самое главное, убери обзательное нажатие Enter при редактировании операций. Особенно проявляется при выборе даты. Пример: выбрал мышкой число, оно установилось, но курсор еще в поле, ентер не нажали выбрали вторую дату, первая вроде записалась, курсор перешел во вторую дату, но этого уже достаточно для того чтобы сообщение о не найденной строке заипало. Приходится заполнять строку поновой, с обязательным нажатием ентер в каждой чейке.
Скока не пробовал, так и не смог получить описанную вами ошибку :confused:
А так ниче клевый софт)
Пасибо :)
P.S. возможность добавить свой отчет не помешает однака.
Наверно, сделаю.

dimonk
11.01.2008, 08:12
Это, в принципе всё есть, одно но - привязка не к принтеру, а к картриджу.
вот то-то и оно! картридж - расходка, не обязательно ее знать в лицо. они либо заправляются, либо восстанавливаются, либо выбрасываются. к чему персонифицированный учет? вот есть у нас на складе 10 картриджей, из них 3 пустых и 7 полных. ну и какая разница, заправлен ли картридж № 8 и полон ли картридж № 5? если картридж заправляемый, его надо заправить. если он не заправляемый, его просто надо выкинуть. и нет разницы, отходил ли уже картридж № 1 10 тыс. копий, или еще нет. куда важнее, сколько копий в месяц сделал конкретный принтер и сколько потрачено денег на его заправку и обслуживание, и не выходит ли месячная нагрузка принтера за рекомендуемый месячный ресурс.

еще что не учтено - в справочнике нет связи между типом принтера и типом картриджа. вроде, мелочь, но иногда просто забываешь, какие циферки в наименовании картриджа, который меняется раз в квартал. принтер известен, а название картриджа забыл.

короче говоря, программа слишком привязана к картриджам. какая разница, куда я поставил конкретный картридж; куда важнее, в каком _принтере_ я его заменил. правильней бы назвать программу не учет картриджей, а учет принтеров. ;)

Можно на неё взглянуть?
гляну дома, если найду в архиве. собственно, программой ее назвать сложно - первая версия не удовлетворяла всем потребностям, и отчеты в полной мере не были реализованы, пришлось переделывать, да так в полуготовом виде и осталось. скорее, из нее можно почерпнуть концепцию (структуру базы и принципы учета, которые лично меня устраивают). :)

veschiy
11.01.2008, 13:45
куда важнее, сколько копий в месяц сделал конкретный принтер и сколько потрачено денег на его заправку и обслуживание, и не выходит ли месячная нагрузка принтера за рекомендуемый месячный ресурс.
полностью согласен... обычно во всех конторах это и требуется...
еще что не учтено - в справочнике нет связи между типом принтера и типом картриджа
очень нужная вещь. особенно когда несколько модификациий принтеров да еще от разных производителей, тут и сервис-инженеру по орг-технике требуется справочник.

dimonk
11.01.2008, 15:16
полностью согласен... обычно во всех конторах это и требуется...
ну дык. если к каждому принтеру максимум 2 картриджа, да еще и заправлять самостоятельно, то их и так будешь знать "в лицо", вплоть до мельчайших царапинок. а когда полшкафа ими забито, тут уж не до трепетного к ним отношения. :)

очень нужная вещь. особенно когда несколько модификациий принтеров да еще от разных производителей, тут и сервис-инженеру по орг-технике требуется справочник.
не сказал бы - соответствие запоминается довольно быстро, но все равно полезно: спасает от лишних кликаний мышкой и - самое главное - от возможных ошибок. и когда появляется новый принтер с новым же типом картриджей, приходится туго - не можешь вспомнить, какой тип нужен для данного принтера или в какой принтер можно воткнуть данный картридж.

EmeJIbka,
прошу воспринять это как здоровую критику. ну правда, не то учитывается в программе, не с того конца учет ведется. ;) в маленьких конторах _такой_ учет картриджей не нужен, а в конторах покрупней нужен учет другого уровня - там и картриджей больше, там и объемы печати выше. надо считать расходы и ресурс принтеров, а здоровье картриджей - дело двадцать пятое.

mozk
11.01.2008, 15:19
Цитата:
4) Добавь диалог "сохранить базу".
Не понял А зачем, собсна? Всё сохраняется автоматически
Сохраняется то оно автоматически, это хорошо, только об этом ни слова, из 7 человек которым я показал программу, после закрытия трое открыли ее снова, для проверки. Навреное достаточно просто "база сохранена" (или ченить другое) в строке статуса, но это косметтика))

Скока не пробовал, так и не смог получить описанную вами ошибку
Поочериди заполняю поля только мышкой (с клавы заполнять только стоимость и кол-во отпечатоннго), дойдя до поля "кол-во отпечатонного" вылазит MsgBox - "Не удается найти строку для обновления. Некоторые ее значения могли быть изменены со времени ее последнего чтения." Приэтом окно не закрывается, вместо этого вылазит эта ошибка.
Если заполненные ячейки пройти сначала с ентером (2й клик мышкой по полю, затем Enter) все нормально.:idontnow:

еще что не учтено - в справочнике нет связи между типом принтера и типом картриджа. вроде, мелочь, но иногда просто забываешь, какие циферки в наименовании картриджа, который меняется раз в квартал. принтер известен, а название картриджа забыл.

Как-то упустил из виду этот момент, действительно иногда в нете искать совместимость приходится. Можно сделать историю соответствия картриджей и принтеров. Например если поставить после поля "номер", поле "принтер", а за ним "имя", то при выборе принтера в поле "имя" отображаются только те картриджы которые уже вписывались вместе с этим принтером+возможность вписать новый.

EmeJIbka
13.01.2008, 13:24
Новая бета-версия тут (http://palkinmax.info-centr.org/wp-content/uploads/2008/01/setup-v072b.exe)

Добавлены:
простенький отчёт по расходам на принтеры
фильтры по принтерам и отделам в главном окошке
возможность создания пользовательских отчётов (нужно класть в папку \reports\)
Автоинкриментирование номера картриджа (опционально)

dimonk
14.01.2008, 11:54
Автоинкриментирование номера картриджа (опционально)
опять 25. если картриджей мало, то пронумеровать их вручную - не проблема. если их много, персонификация их ни к чему. а то так можно вместо номеров дать им имена - петя там, вася и относиться к ним как к людям, разговаривать с ними, жалеть, когда кончился тонер ("бедненький, не переживай, мы тебя заправим..."). сильно утрирую, но все же. вести в журнале записи типа "поставил картридж №15 в принтер такой-то, а пустой картридж №8 сдал в заправку" нет никакой нужды.

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

EmeJIbka
14.01.2008, 17:25
опять 25. если картриджей мало, то пронумеровать их вручную - не проблема. если их много, персонификация их ни к чему. а то так можно вместо номеров дать им имена - петя там, вася и относиться к ним как к людям, разговаривать с ними, жалеть, когда кончился тонер ("бедненький, не переживай, мы тебя заправим..."). сильно утрирую, но все же. вести в журнале записи типа "поставил картридж №15 в принтер такой-то, а пустой картридж №8 сдал в заправку" нет никакой нужды.

Если Вы не хотите вести персонифицированный учёт картриджей - заведите по одному картриджу на каждый принтер. Будет видно какие операции и когда происходили с принтером.

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

Ну что же вы так горячитесь то!? Уважаемый, dimonk, я вас прекрасно понял. Более того, я над этим работаю... Я пока не спешу её реализовать лишь потому что не придумал как...

Если вы мне расскажите подробно, что вы хотите видеть (на входе и на выходе). Примерно так - "каждый месяц я снимаю с принтеров показания: кол-во отпечатанных страниц, ещё что-то и тд. и хочу знать когда происходит выход этих показателей за средние." Это сильно ускорит процесс адаптации под ваши нужды.

dimonk
16.01.2008, 09:11
Если Вы не хотите вести персонифицированный учёт картриджей - заведите по одному картриджу на каждый принтер. Будет видно какие операции и когда происходили с принтером.
не годится. программа, помимо всего прочего, должна сказать, сколько полных картриджей осталось и не меньше ли установленного порога их количество.

и нужен учет операций с принтером (замена картриджа, ремонт, профилактика).

Если вы мне расскажите подробно, что вы хотите видеть (на входе и на выходе). Примерно так - "каждый месяц я снимаю с принтеров показания: кол-во отпечатанных страниц, ещё что-то и тд. и хочу знать когда происходит выход этих показателей за средние." Это сильно ускорит процесс адаптации под ваши нужды.
я все-таки полагаю, что озвучиваю не только мои нужды, но схему более правильного учета ресурсов. ;)

схема работы примерно такая.

в базе имеется:
1. таблица типов картриджей (модель такая-то, можно примерный ресурс печати от одной заправки)
2. таблица _типов_ принтеров (модель такая-то, столько-то страниц в месяц максимальная нагрузка, использует такие-то типы картриджей)
3. таблица собственно принтеров (месторасположение, тип принтера, серийный номер, номер форматтера, текущее количество отпечатков, статус, какие-то комментарии)
4. журнал операций с принтерами, в который входят замена картриджей, профилактика, ремонт и т.п. с комментариями и ценой операции)
5. журнал операций с картриджами (заправка или восстановление, цена вопроса). в принципе, можно эти два журнала объединить, но смысла не вижу
6. таблица картриджей либо просто счетчик пустых и полных (у меня было реализованы счетчики, это неправильно, но почему-то я тогда делал так). таблица, безусловно, перспективней. но она хороша не для "поименного" учета картриджей, а для возможности ввести какие-то иные статусы, а рассчитать число картриджей одного типа с одинаковым статусом - раз плюнуть.
7. таблица "складов" (я выдавал на удаленный склад и в некоторые отделы по несколько картриджей, чтобы работа не стояла; также, хотелось знать, сколько картриджей и каких находятся в заправке)
8. если что-то забыл, допишу.

при каждой замене картриджа в принтере снимаем с него отчет (серийный номер принтера, количество копий) и заносим эти данные в базу: где (тут же предлагается установленный там принтер или принтеры), в каком принтере, какой картридж (если картриджи бывают разные, то возможность выбора конкретного типа), с какого склада, на каком количестве копий. эта операция отражается на журнале операций с принтерами и в таблице картриджей (либо в счетчике полных и пустых). если дополнительно реализовать "поименный" учет картриджей,то можно сделать соответствующее поле (номер картриджа) и заполнять его автоматически, номером первого полного картриджа, либо предоставить возможность выбора конкретного номера. лучше в опциях программы сделать выбор "поименного" и "валового" учета картриджей - внутренняя организация базы и самой программы от этого не изменится, будут затронуты лишь отдельные элементы ввода.

так вот. аналогично происходит ввод операции "ремонт". когда, где, какой принтер, на каком количестве отпечатков (если невозможно узнать сразу, можно заполнить потом) выведен из эксплуатации, и причины вывода. затем вторая операция - ввод в эксплуатацию (на прежнем месте или на новом, стоимость ввода - т.е. ремонта, в данном случае - список замененных деталей или проведенных работ и опять текущее количество отпечатков). аналогично проводить перемещение принтеров между отделами - там вывели, там ввели, причина - внутреннее перемещение, денег это не стоило.

далее. операции с картриджами. при замене статус устанавливаемого картриджа меняем на "установлен", извлеченного на "пустой", отражаем это в журнале. обратная смена статуса с "пустой" на "полный" осуществляется в процессе операции заправки (при этом в журнал вносится стоимость).

итак, что мы имеем? полный журнал операций с принтерами (какой принтер сколько раз ремонтировали, перемещали, сколько на нем отпечатали и сколько раз меняли картридж). полный журнал операций с картриджами (сколько раз меняли, сколько заправляли и сколько это стоило). за нужный период можно сделать любую выборку. интересна средняя цена заправки (с учетом восстаовлений) определенного картриджа? пжалста! сколько денег ушло на заправку картриджей к принтерам одного типа? пжалста! совокупная стоимость владения всех-всех-всех принтеров компании? да не вопрос!

единственное, как быть, если нужно точное количество отпечатков за месяц. можно либо аппроксимировать данные месяца (либо нескольких, если картридж меняется редко), либо снимать отчеты в первый день месяца и забивать данные с них в таблицу операций с принтерами.

уффф... примерно ясна моя логика? безусловно, это только набросок логики учета и логики работы программы, некоторые моменты надо определить точнее. но зато это более универсальный вариант, дающий бОльшую гибкость, предоставляющий больше данных и облегчающий работу ответственного за принтеры.

mozk
16.01.2008, 16:13
Добавить к словам Dimonk'a к сожалению нечего, у меня нет потребности в столь подробном учете, хотя ход его мыслей более чем рационален.
Единственное недопонял проблемы с количеством отпечатков за месяц. Думаю что можно организовать вместе с таблицей принтеров, историю по отдельному принтеру, с полями: № картриджа, дата замены, количество отпечатанного, можно еще причину замены добавить для статистики (поломка, кончился). Таким образом в таблице принтеров будет видна общая статистика, а по историям можно будет делать различные выборки, в частности выборку по количеству отпечатков за период. История может заполнятся автоматом из журанала операция с принтерами.
Хм... а если просто добавить в журнал операций с принтерами пару полей, то выборку по количеству отпечатков за месяц можно будет делать из журнала))
В общем я недопонял.

По софту: при заупске выдает ошибку "дисковая или сетевая ошибка", 6 раз. Потом нормально запускается.
Тот непонятный глюк с ентером исчез.
В настройках по кнопке общие ничего не происходит, так и надо я полагаю?
Ждем новых версий...

P.S. EmeJIbka, а вообще какие планы были по развитию программы?

EmeJIbka
16.01.2008, 17:16
По софту: при заупске выдает ошибку "дисковая или сетевая ошибка", 6 раз. Потом нормально запускается.

Попробуй ещё разок скачать - я билд сначала выложил, только потом эту ошибку заметил.

Тот непонятный глюк с ентером исчез.

Не совсем - у меня пару раз вываливался, но причину я так пока и не обнаружил.

В настройках по кнопке общие ничего не происходит, так и надо я полагаю?

Угу, вкладку добавил, хотел туда что-нить положить и успешно забыл :)

Ждем новых версий...
P.S. EmeJIbka, а вообще какие планы были по развитию программы?
Буду думать, как реализовать ваши идеи. Новая версия может через месяц выйдет.

dimonk
17.01.2008, 06:33
Единственное недопонял проблемы с количеством отпечатков за месяц. Думаю что можно организовать вместе с таблицей принтеров, историю по отдельному принтеру, с полями: № картриджа, дата замены, количество отпечатанного, можно еще причину замены добавить для статистики (поломка, кончился).
поле для причины замены можно обозвать одним словом: "комментарий" :)

проблема такая (пример из головы, цифры от балды, но и такое бывает): один раз поменяли картридж 3-го числа на n1-ном количестве копий, второй - 20-го, на n2 копий, и больше в этом месяце не меняли. а в следующем месяце вышли на работу 10-го числа (у всех каникулы, новогодние или еще какие) и поменяли картридж 15-го на n3 копий. вопрос: сколько отпечатков сделал принтер за эти два месяца? ;) если снимать отчеты в первый рабочий день каждого месяца, то все просто. но бегать раз в месяц по всем принтерам и делать отчеты не очень хочется, да и не всегда нужна такая точность. по приведенным выше данным можно сделать аппроксимацию, но как - по рабочим или календарным дням - не вполне ясно. по-хорошему, надо по рабочим. но вести в программе еще и учет рабочих дней... хм.

Буду думать, как реализовать ваши идеи. Новая версия может через месяц выйдет.
"ваши" - это мои или mozk-а? ;)

EmeJIbka
17.01.2008, 08:30
Преимущественно вашими, dimonk.

pavel.boriskin
18.01.2008, 20:38
под vista32 запустилась. подробно пока с программой не разбирался, не до того было. пятница. надо домой, но обязательно попробую. пока в экселе набивал расход.

mozk
19.01.2008, 15:12
Цитата:
Сообщение от mozk
Единственное недопонял проблемы с количеством отпечатков за месяц. Думаю что можно организовать вместе с таблицей принтеров, историю по отдельному принтеру, с полями: № картриджа, дата замены, количество отпечатанного, можно еще причину замены добавить для статистики (поломка, кончился).
поле для причины замены можно обозвать одним словом: "комментарий"

Я имел ввиду выподающий список из двух и более пунктов, комменты каждый раз забивать лень.
А по поводу приближения, то это объективно самый подходящий вариант, а для строгих стат.данных для бухгалтерии там или еще для чего можно и снять отчет в конце и начале месяца (наоборот :)).
Учет рабочих дней можно свести к минимуму путем введения календаря, на которм в конце месяца отмечать выходные (причем сб и вс поумолчанию уже отмечены). 12 раз в год это можно делать.