Задача 101.60610

Задача :101.60610

2017-04-17 14:08:06
Краткое описание :
54ФЗ. Передача данных из документов Галактики в ККТ
Описание :
Приходный кассовый ордер
Что измененно :

Федеральный закон "О применении контрольно-кассовой техники при осуществлении наличных денежных расчетов и (или) расчетов с использованием платежных карт" от 22.05.2003 N 54-ФЗ (действующая редакция, 2016).

На сегодняшний день, применяя наличные, предприятие формирует чек ККТ на сумму, принятую от покупателя.
По новым правилам в чеке надо указывать спецификацию ДО/накладной.
Повторно вводить спецификацию документа из Системы в ККТ нереально.

Цель взаимодействия с online ККТ - передача информации в ККТ. Также, желателен вариант - получение от ККТ подтверждение факта платежа.
Схема взаимодействия видится такая:
На основании заявки Покупателя выписывается ДО.
На основании ДО - накладная.
Если Покупатель платит наличными деньгами, то в Системе формируется ПКО.
Кассовый чек должен соответствовать ПКО. Поэтому и формироваться должен из ПКО.
По хорошему, надо бы получить отклик от online ККТ и изменить статус ПКО.

Предложение клиента по связи с online ККТ.
1. Практически все ККТ имеют связь с 1С. Если Система сумеет эмулировать эту связь, то проблема будет решена.
2. ККТ имеют драйверы общения с компьютером. Можно (при простом протоколе обмена) сделать свой виртуальный драйвер, который будет обращаться к драйверам производителя.

В курсе проблемы Сергей Белый.
Как измененно :

Добавлена пользовательская настройка "Настройки
Галактики \ Бухгалтерский контур \ Касса \ Выполнять
регистрацию в ККТ" со значением по умолчанию "нет", при
включении которой в окне редактирования ПКО и РКО
появляется кнопка "Регистрация в ККТ". Если после
включения настройки кнопка не появилась, то значит у
пользователя не реализована точка расширения
epKO_isNotExistExtPoint.
Добавлена пользовательская настройка "Настройки
Галактики \ Бухгалтерский контур \ Касса \ Пароль
оператора для ККТ" в которой задается пароль оператора
для выполнения регистрации в ККТ. Если данная настройка
не заполнена, выполнение регистрации невозможно.
Добавлена системная настройка "Настройки Галактики
\ Бухгалтерский контур \ Касса \ Пароль администратора
для ККТ", в которой задается пароль администратора для
ККТ. Если данная настройка не заполнена, выполнение
регистрации невозможно.
Добавлена пользовательская настройка "Настройки
Галактики \ Бухгалтерский контур \ Касса \ Разрешать
закрытие смены в ККТ" позволяющая выполнять закрытие
смены в ККТ.
Добавлена системная настройка "Настройки Галактики
\ Бухгалтерский контур \ Касса \ Отображать системный
интерфейс регистрации в ККТ" позволяющая отключить
отображение интерфейса с позициями подлежащим
регистрации в ККТ.


Реализованы следующие точки расширения:

1) ExtensionPoint epKO_isNotExistExtPoint;
Предназначена для проверки существования
обработчиков точек расширения, при наличии которых
должна возвращать false.

2) ExtensionPoint epKO_KKTInitConnection(cDoc: comp; sAdmPass, sOperatorPass : string; wOperation : word; pStr : iObjExtStr);
Предназначена для инициализации сеанса регистрации
ККТ кассового ордера с номером записи cDoc, паролем
администратора sAdmPass, паролем оператора
sOperatorPass и типом операции wOperation (0-не
определен; 1-продажа; 2-возврат продажи; 3-покупка).
Кроме этого, передается объект строк pStr, с помощью
которого можно формировать наборы строк, которые
необходимо отобразить в окне регистрации в ККТ. Для
наполнения объекта строками необходимо воспользоваться
методом pStr.SetString(_Num : longInt; _sStr : string),
где _Num - номер строки (возможны значения от 1 до
16000), _sStr - значение строки. В первой строке должно
храниться наименование операции, которое будет
отображаться в наименовании окна с позициями подлежащих
регистрации в ККТ.
Кроме этого в объект можно задать ссылку на объект
для работы с драйвером. Для установки ссылки нужно
воспользоваться процедурой pStr.SetObject(_pObj :
pointer), а для чтения функцией pStr.GetObject :
pointer.

3) ExtensionPoint epKO_KKTRegistration(wTiDk, wOperation: word; sAdmPass, sOperatorPass, sNamePos: string; dKol, dPrice, dTaxRate, dSumTax,
dSumTaxForOne: double; bModeTax : boolean; pObject : pointer);double; bModeTax : boolean; pObject : pointer);
Производит передачу информации о оплачиваемой
позиции спецификации накладной, где wTiDk - тип
документа, wOperation - тип операции (0-не определен;
1-продажа; 2-возврат продажи; 3-покупка), sAdmPass -
пароль администратора, sOperatorPass - пароль
оператора, sNamePos - наименование позиции, dKol -
оплаченное количество, dPrice - цена, dTaxRate - ставка
налога (в случае отсутствия НДС передается значение
"-1" ), dSumTax - сумма налога, dSumTaxForOne - не
округленная сумма НДС за одну позицию, bModeTax -
входимость налога в стоимость позиции (true - входит),
pObject - указатель на объект драйвера
контрольно-кассовых машин.

4) ExtensionPoint epKO_KKTDoneConnection(cDoc: comp; sAdmPass, sOperatorPass : string; wPaymentType : word; pObject : pointer; pStr : iObjExtStr);
Предназначена для завершения сеанса регистрации
ККТ кассового ордера с номером записи cDoc, паролем
администратора sAdmPass, паролем оператора
sOperatorPass, типом платежа wPaymentType (0 -
наличные, 1 - банковская карта) и указателем pObject на
объект драйвера контрольно-кассовых машин. Так же
передается объект pStr, с помощью которого в точке
расширения можно задать код статуса (процедура
SetStatus), который будет прочитан и установлен в
документе, в случае удачного завершения выполнения это
точки расширения.

5) ExtensionPoint epKO_KKTCloseSession(sAdmPass, sOperatorPass : string);
Предназначена для закрытия смены в ККТ.
Инициируется выполнением пункта главного меню
"Настройка->Касса->Закрытие смены в ККТ" в модуле
"Касса". Для того что бы данный пункт меню появился,
необходимо что бы администратор, с помощью функции
запуска внешнего интерфейса, открыл интерфейс
F_PLPOR::VKKTMAKEMENU (F_PlPor.res). В данном
интерфейсе можно либо сформировать меню, либо удалить.
Что бы увидеть результат, необходимо перейти в другой
модуль и вернуться назад.

Выполнение регистрации возможно только при наличии
распределения по спецификации накладной/акта.
После нажатия на кнопку проверяется текущий статус
документа и если уже установлен статус отображающий что
регистрация ККТ уже проводилась (статус у которого в
поле "Код" указано значение "4"), вызывается точка
расширения epKO_KKTInitConnection(comp(0) sAdmPass,
sOperatorPass, pStr), которая может использоваться для
повторной печати последнего сформированного чека.
Если операция регистрации производится впервые, то
вызывается точка расширения инициализации регистрации,
в которую передается номер записи КО и пароли
администратора и оператора, а так же объект строк,
который наполняется в точке расширения. После успешного
выполнения инициализации регистрации в ККТ,
отображается окно, в верхней части которого
отображаются строки, сформированные пользователем, в
средней части отображаются все распределенные позиции,
а в нижней части кнопки управления и общая сумма
распределенных позиций.
После нажатия на кнопку "Продолжить"
обрабатываются все распределенные позиции КО и
вызывается точка расширения epKO_KKTRegistration с
соответствующими параметрами. Завершающим этапом идет
вызов точки расширения epKO_KKTDoneConnection в которую
передается номер записи КО и пароли администратора и
оператора, и указатель на объект драйвера
контрольно-кассовых машин.
Если в результате выполнения вышеописанного
алгоритма не возникло ошибок, то в кассовом ордере
устанавливается статус отображающий что регистрация ККТ
произведена успешно (статус у которого в поле "Код"
указано значение "4"). В случае, если в объекте pStr
будет задан код статуса, то устанавливаться будет
заданный статус.

Название продукта Название компонента Тип Последняя версия Дата выхода
F_COMMONF_COMMONRES9.1.81.02017-04-17 14:08:06
F_COMMONF_COMMONRES9.1.081.0
F_PLPORF_PLPORRES9.1.76.02017-04-17 14:08:07
F_PLPORF_PLPORRES9.1.076.0