Система тестировалась со следующим ПО:
* ActivePerl ( помоему, что то около 5.005 )
* Internet Explorer 5.5
* Win95/98
Для корректной генерации отчета в IE в настройках установлен размер шрифта small.
Все формы отрисовываются исходя из разрешения монитора 1024x768, ну вообще и на меньшем будет, что то, только со скролингом.
Предполагается, что perl и ie есть.
Создайте директорию c:\tmp\DO
Скопируйте в нее DIST/bin и DIST/home
Скопируйте все директории из DIST/perl_lib в директорию в которой perl ищет свои библиотеки
Запустите в ie c:\tmp\DO\bin\index.html
Установить Perl
Установить ( обновить ) IE до 5.5
Разрешить поддержку PerlScript, JavaScript ( по умолчанию включено )
Во всех скриптах ( *.pl ) заменить пути к БД. По умолчанию прописано, что
главная база лежит на машине buh2 ( $SMB_HOST_NAME ), в
директориях DO\home\* ( $ROOT_DIR ).
!!!
( после наложения некоторых патчей пути могут иметь вид:
SMB_HOST_NAME => undef,
ROOT_DIR => 'c:\\tmp\\DO\\home\....' )
Далее все пути прописаны относительно этого ( $SMB_HOST_NAME +
$ROOT_DIR ) пути. Эта процедура проделывается любым текстовым
редактором. Если компов больше 1, то база может лежать на одной машине, а
на остальные надо поставить только perl, ie и библиотеки ( perl_lib ), и
прописать правильные пути. На win flock не работает, так, что...
Из директории DIST ( после запуска create_dist.sh ) надо скопировать все что лежит в директории perl_lib, в директорию с библиотеками perl'а. ( cp DIST/perl_lib/* PATH_TO_SITE_PERL_LIB/ )
Остальные файлы, директории ( директории DIST/bin и DIST/home ) положить в $ROOT_DIR.
Запустить {INSTALL_PATH}/bin/index.html, от туда можно изменить настройки данных об организации и партнерах.
Данные об организации и о партнерах для каждой формы могут быть разные, по умолчанию для всех форм они одинаковые. Для изменения надо крутить переменные:
CONST_FILE - относительный путь к файлу настроек данных об организации
VARS_FILE - тоже о клиентах.
При изменении данных об организации и партнерах старые данные сохраняются в директории arch/
Для изменения формы отчетных документов необходимо отредактировать файлы шаблонов {HOME}/tmpl/.tmpl.
Например для schet, по умолчанию:
\\buh2\DO\home\schet\tmpl\schet.tmpl - форма для печати,
\\buh2\DO\home\schet\tmpl\schet_html.tmpl - форма архивных данных
.tmpl.dist - теже формы, только не очищены от пробелов.
по сути это html документы ( это к тому, чем редактировать ), хотя кому не лень может сделать xml шаблоны...
Для очистки логов используется скрипт util/clear_log.pl Его надо скопировать в директорию с логами, и запустить с параметром ( '1' - удалить документ с номером 1, '2-12' - удалить документы со 2 по 12, 'last-12' - оставить последние документов )
Т.е. например для schet по умолчанию надо будет:
скопировать clear_log.pl в \\buh2\DO\home\schet\log\ и запустить его, например для удаления документов с 3 по 12 так `perl clear_log.pl 3-12'
Номер текущего документа хранится в файле content.csv.ind
Т.е. для schet это:
\\buh2\DO\home\schet\csv\content.csv.ind
В obligatory_var.csv хранится описание переменных принимаемых из формы.
Т.е. для schet это:
\\buh2\DO\home\schet\csv\obligatory_var.csv
Его формат:
имя поля в форме;
имя формы;
0 - не обязательное поле/ 1 обязательное поле к заполнению;
тип: s - строка, d - число;
максимальная длинна ( 0 - любая );
минимальная длинна ( 0 - любая );
Длина на выходе ( авто дополнение пробелами или отсечение лишних данных )
Имя поля которое выводится при возникновении ошибки
Для дополнения какого либо поля в форме надо его прописать в obligatory_var.csv.
Т.е. например если сильно хочется печатать имя бухгалтера, то надо в obligatory_var.csv добавить примерно следующее:
SALLER_BOOKKEPER;L1;0;s;0;0;0;Фамилия гл. бухгалтера
это означает, что в форме 'L1' доступно к вводу поле SALLER_BOOKKEPER, которое имеет тип 'строка' и не обязательно к заполнению.
в html форме оно будет выглядеть примерно так:
<form name=L1 action=''>
...
<td> <input name='SALLER_BOOKKEPER' size=30> </td>
и в дальнейшем, чтобы получить это имя в печатных документах в шаблонах до этого поля можно добраться как:
[% SALLER_BOOKKEPER | html %]
Все данные для настройки хранится в .csv файлах, поэтому их в принципе ( а вообще специально так сделано ) можно редактировать в excel'е ( После наложения некоторых патчей от csv формата остается только расширение файла... )
Для создания своих форм, надо создать директорию со структурой... вобщем взять, готовое и подправить:
obligatory_var.csv, шаблоны и перл скрипт...
Т.е. для бумажки faktura например необходимые файлы кроме библиотек это:
DIST/bin/perl/faktura.pl
DIST/bin/css/*
DIST/bin/js/*
DIST/bin/faktura.html
DIST/home/faktura/*
В файле faktura.pl код вроде хорошо закомментирован, все остальные ( schet.pl, nakladnaya.pl ) файлы имеют примерно такую же структуру. В Core.pm также присутствуют комментарии, в общем понять чего и зачем там не трудно...
При перетаскивании всего этого дела с PerlScript на cgi телодвижения надо приложить к куску кода отвечающего за выпадающее меню ( там где список партнеров ), ну и шаблоны немного подправить... В результате надо генерировать еще и файлы которые щас статические, т.е. .html ( из за списка клиентов, можно конечно и без него... ) короче гемороя не должно быть много, только мне щас этого не надо, вот... В общем в DIST/Future лежит пример того, что я набросал с час от нечего делать, примерно как я бы это делал, вот, только писалось все во времена Core.pm версии 1.25...
Для того, чтоб в content.csv сохранялись еще какие либо данные надо преобразовать obligatory_var.csv и запустить cкрипт conv_content.pl. Как - написано в скрипте.
Для изменения статуса конкретного поля ( обязательно или нет к заполнению ) нужно править файл obligatory_var.csv и поле BOOL csv файла соответствующее названию поля из формы...
Файл описания данных об организации, по умолчанию. Для всех документов в
настоящий момент, const.csv лежит в каталоге share_csv, как это прописано
с.м. например в schet.pl ( $OBJ = DO::Core->init, ключ
CONST_FILE )... Закоментировав этот ключ можно сделать так, что для каждого
документа будут свои настройки ( правда в этом случае не будет работать
конфигурация данных 'об организации' ).
Файл описания данных о постоянных клиентах, по умолчанию. В текущей конфигурации также находится в директории share_scv. ( Ключ VARS_FILE )
Архив всех созданных документов, из этого файла осуществляется импорт данных.
Файл в котором хранится индекс создаваемого документа, после каждого созданного документа значение в этом файле увеличивается на 1. В документах используется как номер документа.
Описание всех полей которые могут использоваться в html форме и потом передаются в шаблоны, а также используются при расчетах... Описание этого файла было приведено выше.
Во всех .csv файлах первая строка считается заголовком, т.е. в ней находятся наименования полей данного файла.
Шаблон использующийся при создании документа для печати, и для помещения в архив.
Шаблон использующийся при создании документа ввода данных, но с заполненными формами ( для архива ).
Список всех документов находящихся в архиве.
Формы с заполненными полями. Имя файла расшифровывается так:
AAAAAA - Номер документа
BB - Число создания
CC - Месяц создания
DDDD - Год создания
EEEEEEEEEE - Время в unix like формате.
Копии документов созданных для печати. Имя файла расшифровывается так:
AAAAAA - Номер документа
BB - Число создания
CC - Месяц создания
DDDD - Год создания
EEEEEEEEEE - Время в unix like формате.
Предварительный счет.
Домашняя директория относительно DIST/home: schet/
Необходимые поля для заполнения:
- 'Наименование покупателя'
- Первая строка из формы ввода `табличных' данных.
При незаполненных колонках 'Количество' и 'Цена с НДС' строка считается пустой.
Счет-Фактура.
Домашняя директория относительно DIST/home: faktura/
Необходимые поля для заполнения:
- 'Наименование покупателя'
- 'Адрес покупателя'
- Первая строка из формы ввода `табличных' данных.
При незаполненных колонках 'Количество' и 'Цена' строка считается пустой.
Накладная.
Домашняя директория относительно DIST/home: nakladnaya/
Необходимые поля для заполнения:
- 'Наименование покупателя'
- 'Основание'
- 'Через кого'
- Первая строка из формы ввода `табличных' данных.
При незаполненных колонках 'Количество' и 'Цена' строка считается пустой.
Нажатие на данную кнопку делает активным ввод 'табличных' данных...
Нажатие на данную кнопку делает активным ввод 'шапки' документа с такими данными как 'покупатель', 'адрес покупателя', 'ИНН' и пр...
Нажатие на данную кнопку приводит к генерации документа на основании заполненных полей ввода данных, но не сохраняет данные в архиве. !!! При просмотре номер документа всегда равен 0 ( нулю ) так как этот режим предназначен для контроля заполнения формы так сказать...
Нажатие на данную кнопку приводит к очистке данных в форме которая отображена на экране в данный момент...
Нажатие данной кнопки приводит к созданию документа для печати и сохранение его копии в архиве. Для печати документа нужно выбрать в меню 'file' броузера 'print page' предварительно задав ориентацию документа на листе ( 'альбом', или 'книга' )
После нажатия на данную кнопку появляется форма для ввода. Заполнив форму Вы можите произвести импорт данных из других документов. Т.е. например если был выписан предварительный счет, и в дальнейшем Вам нужно напечатать Счет-Фактуру с такими же данными, то повторное заполнение данных необязательно, Вам нужно выбрать в выпадающем списке 'Предварительный счет' ввести его номер и нажать кнопку 'Импортировать'. Импортируются все данные о покупателе, а также табличные данные 'Наименование товаров/услуг', 'Единица измерения', 'Количество', 'Цена за ед/изм', 'Налог'. После импортирования данных Вы можете вернутся ( кнопка 'Вернутся' ) к заполнению полей формы уникальных для данного документа.
Для ввода произвольного номера документа можно использовать поле 'Номер документа', при отсутствии данных в данном поле номер генерируется автоматически. ( значение берется из файла content.csv.ind [ для каждого документа свое ] и прибавляется 1 ).
Для ввода произвольной даты создания документа можно использовать поле 'Дата выписки' вписав туда необходимую дату. При отсутствии данных в этом поле дата генерируется автоматически на основании системного времени компьютера.
В каждой форме имеется выпадающий список в котором находятся наименования клиентов с которыми приходится чаще всего работать. Он служит для быстрого заполнения данных о постоянных клиентах. Чтобы добавить в этот список клиента можно воспользоваться кнопкой 'сохранить покупателя', нажатие на данную кнопку сохранит данные о клиенте которые Вы ввели в текущей форме. !!! В каждом документе количество данных о клиенте различается поэтому для ввода более полных данных которыми можно быдет пользоваться во всех документах можно воспользоваться специальной формой, которая доступна на первой по ссылки 'о партнерах'. Чтобы удалить какого либо покупателя из данного списка нужно выбрать в выпадающем списке его наименование после чего очистить поле 'Организация' и нажать кнопку 'Сохранить данные'.
Изменение данных об организации доступно с первой страницы по ссылке 'об организации'.
При заполнении поля 'Наименование товара', если строка слишком длинная то ее можно разбить на несколько, просто перенеся продолжение строки 'наименование' на следующую строку ввода данных при этом заполнять остальные графы таблицы нужно только в строке в которой начинается наименование... При этом уменьшается реальная длина таблицы, например при максимальной длине таблицы в 8 строк и записи наименования какого либо товара/услуги в 3 строки в таблице уместится только 5 _разных_ товаров/услуг... Уфф. Хотя, так как используется html формат выходных данных, то строки в таблицах сделаны `резиновыми' по высоте, так, что можно специально ничего не переносить, но есть шанс вылезти за границу бумажного листа.
Для каждого документа предусмотрено ( по умолчанию ) хранение электронной копии в архиве. В архив попадает копия документа для печати и форма для заполнения данных данного документа с заполненными полями. В архиве может производится поиск 'Перейти к...'. При успешном поиске найденные строки выделяются другим цветом, если документ не найден то появляется сообщение об ошибке. Для составления нового документа на основе данных хранящихся в архиве в 'формах с заполненными полями' необходимо очистить поля 'Номер ....' и 'Время создания'.
При импорте в schet ( 'Цена без НДС в цену с НДС' ) иногда получаются расхождения с данными из импортируемого документа ( 1 копейка на каждую строку ) Это связано с промежуточными округления чисел, так, что стоит подумать прежде чем этим пользоваться...
Доков мало так как там вроде все просто, да и в коде много комментариев.
В Patchs/ лежат несколько патчей, для чего они написано в самих файлах в самом верху :) . Версии могут не совпадать но они проверены и должны работать...
Все формулы для расчета, и необходимые поля для заполнения описаны исходя из требований конкретной организации.
Okunev Igor V. mailto:igor@prv.mts-nn.ru
http://www.mts-nn.ru/~gosha