Перечень действий для установки и настройки кассовой программы


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

Предварительные условия


1. Необходимо наличие бухгалтерской схемы — отдельной схемы БД.

2. На кассовых серверах очень желательно наличие возможности одновременной удалённой работы нескольких пользователей (или возможность подключения при помощи RAdmin, VNC и т. п.).

3. На одном из кассовых серверов необходимо наличие дистрибутивов используемого ПО.
(Oracle Client, CoreFiles, Good/UAMnenu, QLoad, uniaccFileCopy, программа для разблокировки к.а.), а также документации для используемого оборудования (кассовый аппарат, сканеры, весы).

4. Требуемая кодировка БД – CL8MSWIN1251
(select value from nls_database_parameters where parameter = 'NLS_CHARACTERSET').

Изменение кодировки для Oracle XE – см. примечание 5*.

5. Параметр global_names на всех БД должен быть установлен в true.

6. Имена БД на кассовых серверах (select global_name from global_name) должны быть уникальными.

В случае необходимости можно изменить:
alter database rename global_name to name.domain.
7. Стабильная связь между бухгалтерской и кассовой схемой. (В случае проблем с VPN-соединениями см. примечание 1*).

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

Содержимое файла с названием магазина для весов DIGI (F52) можно сформировать при помощи функции make_f52_shop_name из пакета Unirest_Util.

Установка кассовой схемы. Настройки на стороне БД



9. Установить кассовую схему.

1) Создать tablespaces (Good\Script\Sys\sys_Tablespaces.sql), подправив скрипт по необходимости (пути, размеры).
2) Создать пользователя un4public (Good\Script\un4public\un4public.sql).
3) Создать пользователя unirest_public (unirest_public.sql).
4) Создать пользователя кассы (кассовую схему — create_user.sql).
5) Импортировать дамп кассовой схемы.

10. Настроить tnsnames на бухгалтерском сервере.

11. Настроить tnsnames на кассовом сервере.

12. Создать необходимые db link'и в бухгалтерской схеме.

13. Создать db link к бухгалтерской схеме (если она на другой базе).

14. В бухгалтерской схеме необходимо заполнить таблицу с настройками связи с кассой (кассами) — ybmb_dif_cassa.

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

16. В кассовой программе заполнить справочник кассиров (таблица tms_casir).

17. Настроить в кассовой схеме параметры в tms_init_params.

Обязательно:

1) Schema — имя бухгалтерской схемы

2) DBLink — линк к бухгалтерской схеме (если она на другой базе).

3) GlobalDep – код подразделения, к которому относятся работающие на кассовом сервере кассы

4) ServerID – порядковый номер сервера в рамках всей организации

18. Настроить в таблице object_list соответствие между объектами кассовой и бухгалтерской схем. Описание механизма fast refresh, который можно использовать для обновления справочников наряду с complete refresh, его настройки в object_list, плюсы/минусы — в Примечании 4*.

19. В случае использования для обновления справочников механизма fast refresh необходимо создать логи для соответствующих на бухгалтерской схеме —
create materialized view log on <table name>
.
20. Создать триггер on logon on schema (trg_on_logon) (для инициализации контекстов) и переподключиться к кассовой схеме (в новых версиях — >= 01.01.2008 не нужно, инициализация и создание триггера производится перед созданием объектов в call_all_mv_v).

21. Запустить unirest_mv_v.call_all_mv_v. Эта процедура создаёт на основе данных из object_list необходимые объекты (синонимы, view, mat.view и т. д.).

22. Откомпилировать инвалидные объекты (можно при помощи dbms_utility.compile_schema(user,false)), в новых версиях — >= 01.03.2009 не нужно, компиляция производится после создания объектов в call_all_mv_v.

23. Настроить архивацию (backup) для кассовой схемы.

Установка, настройка и проверка кассовой программы


24. Скопировать нужную версию UAMenu + CoreFiles (или Good).

25. Скопировать cantina.ini в %windir% или в папку с программой. (см. примечание 2*)
Настроить необходимые параметры:

1) Server (обязательно) — имя сервера с кассовой схемой.
2) FiscalPrinter — тип используемого кассового аппарата.
3) PosID или CassaDatecsNrLogic — номер кассы (попадает в tmdb_sold.id_cassa). См. примечание 3*
4) ImageBackGroundPath (опционально ) — путь к логотипу для основного окна программы.
5) BonDir — каталог формирования чеков для TextSell (В случае FiscalPrinter=Datecs) или FPRWIN (ElicomECR).

26. Проверить запуск UAMenu.

27. В UAMenu выполнить «Работа с БД --> Обновить справочники с сервера» (обновление mat.view).

28. Временно установить в cantina.ini параметр BonFiscal в false (на время проверки).

29. Провести в кассовой программе операцию продажи товара.

30. Установить в cantina.ini параметр BonFiscal в true.

31. Проверить в бухгалтерской программе наличие данных по проданным товарам и возможность создания по ним документов. (Журналы -> Товары -> Расход ...). Тестовые документы после проверки удалить.

32. Почистить тестовые данные в кассовой схеме. (delete/truncate):

1) tmdb_fiscal_notes
2) tmdb_sync_log
3) tmdb_comenz
4) log_tmdb_comenzd
5) cass_log
6) tmdb_sold
7) txzlog
8) pptable

33. Сбросить sequences в кассовой схеме (опционально) — comenz, sec_comenzd, seq_comenzd_t, seq_txzlog, id_payments, id_pptable.

34. Сменить пароль администратора, используемого по умолчанию, для того чтобы было невозможно использовать комбинацию клавиш Ctrl+F12.

Настройки ОС и вспомогательных утилит


35. Создать пользователя ОС, под которым будут работать кассиры (если такового нет).

36. Отключить кэширование записи на диск на уровне ОС:
Disk drive properties->Policies->Optimize for quick removal

37. В случае использования Win2003 – уменьшить размер файлового кэша ОС:
Network connection properties-> General->File and Printer Sharing for Microsoft Networks->Properties->Maximize data throughput for network applications

38. Дать права на запись в папку с программой для пользователя-кассира (иначе не будут вестись логи работы программы).

39. Скопировать ярлык UAMenu на рабочий стол кассира и в автозагрузку.

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

41. В случае использования к.а. DatecsFP550 скопировать программы FPWIN и FPTax для диагностики фискальных принтеров администратором (при необходимости печати клиентом Z-отчётов за прошедшие дни, создать ярлыки на рабочем столе кассира), создать ярлык для программы разблокирования фискального принтера на рабочем столе кассира.

42. Если в UAMenu некорректно отображаются кириллические сообщения об ошибках (можно проверить, например, набрав неправильный пароль), то необходимо проверить настройку серверных и клиентских NLS — параметров:

1) Ключ NLS_LANG в Oracle Home
(HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_)
2) Переменная окружения NLS_LANG
3) nls_database_parameters / nls_session_parameters

За подробностями — в Metalink Note:158577.1 и далее по ссылке или Oracle Database Globalization Support Guide — Setting Up a Globalization Support Environment

Если настройка NLS-параметров не помогла, то можно изменить в ветке HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage значение параметров 1250 и 1252 на c_1251.nls (необходима перезагрузка).

Настройки и проверка оборудования и сопутствующего ПО.



43. Настроить сканеры штрих-кодов (проверить наличие префикса $ и работу с программой).

44. Настроить сканеры, в случае необходимости, для расширения штрих-кодов до EAN13.

45. Настроить печать на кассовые аппараты в зависимости от модели аппарата (параметр FiscalPrinter в cantina.ini).

1) FiscalPrinter=Datecs (для Datecs MP-500/ Datecs MP-5000)
1.1 Установить программу для печати на кассовый аппарат. TextSell2035.
1.2 Прописать в автозагрузку пользователям, которые будут работать с кассой ярлыки для программы печати на к.а. (для текущего пользователя они прописываются при установке программы).
1.3 В Casyst.ini прописать ключи для кассовых аппаратов. (после изменения ключей перезапустить программу печати).
1.4 Проверить настройку параметров PosID и CassaDatecsNrLogic (см. примечание 3*).

2) FilcalPrinter=DatecsFP550 (для Datecs FP550) Wtdedit.dll есть в папке в программой UaMenu, можно регистрировать оттуда.
2.1 Скопировать Wtdedit.dll в Windows\System32s
2.2 Зарегистрировать dll — для этого в командной строке нужно выполнить команду «regsvr32 wtdedit.dll» — регистрация COM-объекта.
image
2.3 В cantina.ini установить COMBaudRate = 9600

3) FilcalPrinter=IKC_E260T (для IKC-E260T)
3.1 Скопировать IKC_E260T02.dll в Windows\System32

4) FiscalPrinter=IKC_E260T_RTI (для IKC-E260T)
4.1 Скопировать IKC_E260T_driver.dll в Windows\System32
4.2 Установить Microsoft Visual C++ 2005 Redistributable Package (x86) (vcredist_x86.exe), который включает в себя библиотеки msvcp80.dll и msvcr80.dll, нужные для работы драйвера.

5) FilcalPrinter=ElicomFP
5.1 Для модели на базе принтера Epson необходимо установить в cantina.ini COMbaudrate=115200

6) FilcalPrinter=ElicomECR
6.1 Скопировать fprwin_en.exe и fprwin_en.ini в отдельную директорию(например, C:\FPRWIN)
6.2 Прописать путь до fprwin_en.exe в параметре BonDir в cantina.ini
6.3 Прописать серийный номер кассового аппарата в параметре FiscalDeviceSerialNo в cantina.ini

46. Проверить фискализацию кассовых аппаратов. Для DatecsFP550 это можно сделать при помощи FPTax. Если используются DatecsFP550 и какие-либо ставки НДС для них недоступны(не настроены), то необходимо настроить маппинг символов ставок НДС для таких к.а. в таблице tva_print_letters_mapping:
id — уникальный номер строки настроек
id_cassa — значение параметра CassaDatecsNrLogic из cantina.ini соотв. кассового компьютера.
l_from — символ, который необходимо заменять
l_to — символ, на который необходимо заменять
start_date, end_date — время начала и окончания активности данной строки настроек
Периоды start_date, end_date не должны пересекаться для одних и тех же значений id_cassa, l_from.

47. Проверить печать чеков для каждой из имеющихся ставок НДС на каждом кассовом аппарате.

48. Установить, при необходимости, службу копирования файлов для загрузки в весы — uniaccFileCopy /install. На резервном сервере способ запуска данной службы должен быть «Ручной»(«Manual») — при переходе с основного на резервный сервер необходимо запустить эту службу вручную и сменить способ запуска на «Авто».

Настроить параметры службы:

1) SrcPath — откуда копировать
2) DestPath — куда копировать
3) SecondsInterval — интервал срабатывания
4) ReplaceExisting — true/false — флаг замены существующих файлов при перемещении (default=true).
5) FlushToDisk — сразу сбрасывать файлы из буфера ОС на диск (по умолчанию включен, можно не настраивать)
6) RestartService — включает/отключает перезапуск указанного сервиса (default = false).
7) RServiceName — имя перезапускаемого сервиса (default = "").

Параметры RestartService и RserviceName используются для перезапуска сервиса QLoadSMD перед началом переноса файлов для загрузи в весы в случае проблем с локальными политиками безопасности и в большинстве случаев не нужны.

Необходимо установить для службы учётную запись, которая имеет права на чтение/запись каталога SrcPath, т. к. по умолчанию служба запускается от имени Local System и не имеет доступа в сеть.

49. Установить, в случае использования весов DIGI, службу для загрузки PLU-файлов в весы QLoadSM / install. При помощи конфигуратора настроить службу загрузки (директория, интервал срабатывания, маска файлов, IP-адреса весов). На резервном сервере способ запуска данной службы должен быть «Ручной»(«Manual») — при переходе с основного на резервный сервер необходимо запустить эту службу вручную и сменить способ запуска на «Авто».

50. В случае использования весов Mettler Toledo для выгрузки данных на весы используется “Сервер весов” от RTI-Soft (настраивается сотрудниками RTI). В справочнике весов в поле “Тип весов” необходимо выбрать тип 3 (Mettler Toledo) для выгрузки данных в соответствующем формате (необходим также поддерживающий данный тип весов PL/SQL пакет, использующийся для выгрузки).

51. Для загрузки данных в весы EVL используется утилита ETSDriver.exe. Для её работы необходимы также EtsDriver.ini и DIGI.txt.

В весах должны быть установлены уникальные логические номера. Порядок установки:

1) PRG DW PRG
2) PRG PRG PRG PRG PRG
3) устанавливаем номер
4) PRG несколько раз, пока не закончится список параметров (на экране должно появиться 0.00)
5) Off/On

В EtsDriver.ini параметры SCALE* используются для указания логических номеров весов (например SCALE1=1), где первое число – порядковый номер весов в настройке, второе – логический номер, указанный в весах. Параметры FILEDATA* используются для указания имён (возможно указание полного пути) файлов, которые должны выгружаться в соответствующие весы.

В справочнике весов для EVL необходимо указывать DIGI в поле “Тип весов”, т. к. форматы выгружаемых файлов для них совпадают.

52. Проверить выгрузку файлов в весы.

53. Очистить PLU-файлы в весах и повторить выгрузку.

54. Настроить параметры для работы с кассовыми весами в случае использования таковых.

Используемые параметры:

  • ScalesCOM (default = 1, ini/БД, статический) — № COM-порта для работы с весами;
  • ScalesCOMBaudRate (default = 9600, ini/БД, статический) — скорость COM-порта для работы с весами;
  • ScalesDriverLog (default = true, ini/БД, статический) — управляет логированием работы драйвера весов;
  • IPCServerID (default = "", ini/БД, статический) — задаёт текстовый ID для работы с использованием InterProcess Communication (для весов используется un4Scales);
  • ScalesServerPath (default = "", ini/БД, статический) — задаёт путь к утилите, выполняющей роль драйвера весов (un4Scales). По умолчанию — "", т. е., в папке с кассовой программой

Настройки для поддерживаемых моделей весов:

1) Metrologic MS2420

— В папке с программой должны находиться un4Scales.exe и un4s_any.dll
— параметр IPCServerID = un4Scales;
— параметр ScalesServerPath – не задан, если un4Scales находится в одной папке с UAMenu, иначе — путь к un4Scales;
— В un4Scales необходимо указать в качестве используемой DLL — un4s_any.dll (dll), номер весов = номеру COM-порта;

55. Настройка POS-терминала.
— POSTermEnabled (default = false, БД/ ini, статический) — управляет работой с POS-терминалом.
— POSTermPort (default = 9999, ini/БД, статический) — порт TCP/IP.
— POSTermLog (default = true, ini/БД, статический) — управляет логированием сообщений с POS- терминалом.
— POSTermNoOfCopies (default = 2, ini/БД, статический) — число копий для печати.
— TSPOSShowForm (default = false, ini/БД, статический) – при работе в режиме ТС включает отображение формы для ТС.

Примечания


1* В случае использования VPN-туннелей между бухгалтерской и кассовыми схемами возможны проблемы со стабильностью связи. Эти проблемы могут быть связаны с потенциальным различием максимально допустимых размеров пакета данных на различных участках маршрута (Для VPN-соединений размер пакета меньше, чем для Ethernet-соединений). Симптомы — частые обрывы связи при копировании файлов размером более 1MB, потери связи между БД во время обновления больших справочников, что приводит к зависанию обновляющей сессии, которая при этом может ждать до наступления тайм-аута TCP/IP соединения (по умолчанию 2 часа) и удерживать при этом блокировки на справочнике (снимается только через orakill или перезапуск экземпляра). Для устранения проблем, связанных с размером пакета, необходимо установить на бухгалтерском сервере меньший размер пакета (можно при помощи drTCP).

Более подробную информацию можно найти по следующим ссылкам:

support.microsoft.com/kb/q140375

support.microsoft.com/kb/826159

www.dslreports.com/drtcp

www.dslreports.com/faq/578

smallvoid.com/article/winnt-tcpip-mtu.html

www.dslreports.com/faq/5793

support.microsoft.com/kb/Q900926

support.microsoft.com/kb/Q283165

support.microsoft.com/kb/159211

support.microsoft.com/kb/898060

2* На Win2003 при редактировании файла параметров (cantina.ini) в C:\Windows (и при каждом запуске запуска программы) создаётся локальная копия файла в папке пользователя — \Documents and Settings\USER\Windows и затем используется программой, что создаёт трудности при настройке параметров инициализации, т. к. локальные дубли необходимо не забывать удалять. По этой причине изменён приоритет ini-файлов — больший приоритет будет у ini-файла, находящегося в каталоге программы (в одной папке с UAMenu.exe). На Win2003 проще будет использовать ini-файл, находящийся в папке с программой, тогда не нужно будет удалять созданные системой дубли после каждого изменения параметра.

3* Номер кассы должен быть уникальным для каждой кассы в рамках всей организации. Лучше делать двухуровневым — 2 символа на номер магазина (исключая незначащие нули) + 2 символа на номер кассы в рамках магазина. Также должен быть настроен справочник соответствий в бухгалтерской схеме.

Номер кассы может настраиваться двумя разными параметрами – PosID и CassaDatecsNrLogic. Если значение параметра PosID не задано, вместо него используется параметр CassaDatecsNrLogic (режим обратной совместимости). PosID нужен в случае использования кассовых аппаратов DatecsMP, в таком случае CassaDatecsNrLogic используется только при печати чеков, а для получения номера кассы используется PosID. В остальных случаях вместо PosID может использоваться CassaDatecsNrLogic.

4* Fast Refresh (copy/paste из заявки 20071221102542 + описание добавленных позже возможностей)

Краткое описание механизма.

В бухгалтерской БД создаются materialized view log's для нужных справочников. На кассовых схемах создаются fast refresh materialized view's для базовых справочников, а уже на их основе — view, аналогичные создававшимся при complete refresh. Предыдущий механизм работы со справочниками сохранён практически без изменений. Его можно (и нужно) использовать в случае, когда бухгалтерская и кассовая схемы находятся в одной БД. В таком случае справочники будут использоваться напрямую с бухгалтерской схемы.

Настройка и переключение между механизмами осуществляется при помощи таблицы object_list. В таблицу добавлены 4 поля:

1) fast_refresh — флаг, указывающий механизм обновления, используемый данным справочником. Y — fast, null — complete.

2) fr_object_name_buh — по аналогии с object_name_buh – базовый объект бухгалтерской схемы для данного справочника, используемый при создания fast refresh mv.

3) fr_mv_script — шаблон скрипта создания mv (имя объекта и префикс подставляются при создании).

4) fr_mv_add_script — шаблон скрипта для создания дополнительных объектов после создания всех mv.

5) use_truncate — (для версий >= 10.2). Настройка метода обновления при complete refresh: 'Y' — при complete refresh используется truncate/insert, null — при complete refresh используется delete/insert.

Для небольших справочников, для которых не реализован fast refresh лучше настраивать use_truncate = null, тогда при обновлении не произойдёт эффекта «пропадания данных» из справочника из-за применения truncate. Таким образом, если «тяжёлые» справочники обновляются через fast refresh, а небольшие — complete refresh с настройкой use_truncate = null, то мы получаем согласованное обновление всех справочников.

В случае использования complete refresh для обновления всех справочников, и «тяжёлых» и небольших, для «тяжёлых» лучше установить use_truncate = true, тогда обновление будет произведено существенно быстрее, т. к. не будет затрачено много времени на очистку больших справочников и будет сгенерировано меньше redo/undo. Но если необходима возможность работы пользователей одновременно с обновлением, то нужно для всех справочников установить use_truncate = null.

6) add_script_order — задаёт порядок выполнения скриптов из столбца fr_mv_add_script. (nulls last). Нужно в случае, когда в одном из скриптов используются объекты, создаваемые в другом.
Пока механизм fast refresh реализован только для «тяжёлых» справочников, полное обновление которых занимало много времени. syss, syssgrp и т. п. обновляются через complete refresh.

Плюсы:

  • При обновлении справочника затрагиваются только строки, изменённые со времени предыдущего обновления, а не все данные справочника, как при complete refresh. Время обновления зависит от количества изменений, произведённых в бухгалтерской схеме. (При тестировании на резервном сервере клиента обновление за 1-2 дня происходило за 20-30 секунд на плохом канале связи.) Если никаких изменений в базовых справочниках не было, то вся процедура обновления занимает 2-3 секунды.
  • Поскольку во время обновления не производится truncate справочников, то процедура обновления не мешает работе остальных касс. Можно также сделать, чтобы при запуске обновления из UAMenu создавался job и обновление производилось в фоне, тогда пользователь не будет вынужден ждать окончания процедуры обновления (в таком случае будет нужен лог, в котором можно будет просмотреть результат выполнения обновления, не возникло ли ошибки и т.д.)

Минусы:

  • Необходимость создания дополнительных объектов в бухгалтерской схеме (materialized view log's).
  • Необходимость мониторинга состояния логов (например, при помощи job'a). Если в момент удаления mv на кассовой схеме связи до бухгалтерской схемы не было, то необходимо производить дерегистрацию mv вручную, чтобы не росли логи. (Наличие такой «неучтёнки» тоже можно отслеживать job'ом).
  • Если во время обновления произошёл сбой связи м/у кассой и бухгалтерией, то, в зависимости от текущей фазы обновления, может потребоваться пересоздание материализованных представлений (Можно сделать из UAMenu — Доплнительные формы -> Настройки -> Новая методика переключения… -> Кнопка «Создать»).
  • Возможно ещё что-нибудь с чем пока не столкнулись…

На сервере клиента возникла проблема при использовании fast refresh.

Описание и решение:

Из-за Bug 5863277 при использовании cursor_sharing=force/similar возникает ошибка ORA-1008 — 'not all variables bound' при обновлении материализованных представлений.

Doc ID: Note:472261.1
Materialized View Refresh Fails on Second Attempt With ORA-01008 'Not All Variables Bound' Error
Fixed in 10.2.0.4

Т. к. при обновлении materialized view на сервере запускается сессия с module = 'ORACLE.EXE', то можно обойти этот баг, включая cursor_sharing=force только для пользователей BOMBA и CONCERN и module <> 'ORACLE.EXE'.
Для этого в схеме клиента был добавлен триггер ybmb_logon_trg с следующими строками:
if user in ('BOMBA','CONCERN') and sys_context('USERENV','MODULE') <> 'ORACLE.EXE'
then
execute immediate 'alter session set cursor_sharing=force';
end if;
А на уровне системы cursor_sharing установлен в exact.

5* Для кассовой схемы можно использовать только Oracle XE c однобайтной кодировкой (не уникодовый Universal). После установки однобайтового Oracle XE кодировка БД по умолчанию – WE8MSWIN1252 (Western European Latin1). Для изменения кодировки на требуемую CL8MSWIN1251 необходимо выполнить следующие действия:
shutdown

startup mount

alter system enable restricted session;

alter database open;

alter database character set internal_use CL8MSWIN1251;

shutdown

startup
Также необходимо проверить, чтобы часть параметра nls_lang, отвечающая за nls_territory, не была установлена в CIS (например, RUSSIAN_CIS.CL8MSWIN1251), т. к., в XE это значение устаревшее и подключиться в таком случае будет невозможно. RUSSIAN_CIS.CL8MSWIN1251 можно заменить на RUSSIAN_RUSSIA.CL8MSWIN1251. Параметр может быть задан как в реестре для используемого Oracle_Home, так и в через переменную окружения ОС.