Форум OlegON > Программы и оборудование для автоматизации торговли > Кассовые программы > УКМ-4

Как изменить состояние бонусного счета клиента в УКМ4 : УКМ-4

28.03.2024 15:03


10.07.2017 14:36
luciphur
 
Добрый день, уважаемые. Сразу скажу, человек я в настройке УКМ случайный, область деятельности у меня смежная. В процессе работы возникла необходимость менять состояние бонусного счета клиента в УКМ4. Техподдержка сообщила, что сделать это можно через конвертер Импорт4, таблицу clients_operations. Результат соотв. как я себе это представляю должен появиться в базе ukmserver таблице trm_out_aoo.

Мучаюсь с ней уже 2 дня, и честно говоря пока с нулевым эффектом. Заполняю поля следующим образом:
id - числовой номер операции, делаю случайное число (пробовал разной длины)
account_id - номер типа счета, беру в т.ч. по аналогии из trm_out_aoo
client - client_id из trm_in_clients
number равен id
date
operation_date - обе ставлю сегодняшним числом
amount - размер изменения счета
type - 0
version - 0

Подскажите пожалуйста, может у вас будут соображения что я делаю не так? Возможно надо что-то записывать в какую то еще таблицу? Куда эти данные в итоге идут на УКМ?

Заранее большое спасибо.
10.07.2017 14:42
Mtirt
 
Надо. Таблицу signal.



Цитата:
Значения сигнала о состоянии процесса
Внимание!
Начиная с версии MySQL 5.5, при написании запроса название таблицы "Signal" необходимо заключать в апострофы, т.к. слово "signal" является ключевым.

Пример запроса:

select count(*) from `signal` where `signal`='busy'

Значение сигнала о состоянии процесса импорта хранится в поле signal таблицы signal. Поле может принимать одно из следующих значений:

cumm – сигнал помещается торговой системой и означает, что торговая система подготовила данные, которыми необходимо полностью заменить данные в СуперМаг-УКМ V.4.0 (полная загрузка данных);
incr – сигнал помещается торговой системой и означает, что торговая система подготовила данные, которые содержат в себе только изменения (частичная загрузка данных);
busy – сигнал помещается СуперМаг-УКМ V.4.0 и означает, что конвертер выполняет импортирование данных (конвертер занят).

Первые два сигнала выставляются торговой системой по окончании операции экспортирования, поскольку являются сигналами начала процесса импортирования в СуперМаг-УКМ V.4.0.
Схема взаимодействия систем

Взаимодействие систем состоит из следующих шагов: 1. торговая система проверяет готовность СуперМаг-УКМ V4.0 принять данные. Если СуперМаг-УКМ V4.0 готов принять данные, то торговая система выполняет экспорт данных. Если СуперМаг-УКМ V4.0 не готов принять данные, то торговая система приостанавливает экспорт данных.

Для того чтобы убедиться в том, что СуперМаг-УКМ V4.0 готов принять данные, следует выполнить запрос:

select count(*) from signal where signal='busy'

Нулевое значение означает, что СуперМаг-УКМ V4.0 готов к приему данных.

2. Если СуперМаг-УКМ V4.0 готов принять данные, торговая система проверяет закончился ли предыдущий экспорт данных в СуперМаг-УКМ V4.0 (т.е. сигналов cumm или incr нет).

Если эти сигналы есть, то торговая система удаляет их.

3. Торговая система заполняет таблицы данных и формирует соответствующую запись в таблице signal. Запись в таблице signal информирует сервер СуперМаг-УКМ V4.0 о произведённых изменениях и одновременно является сигналом для начала операции импортирования.

4. Стандартный конвертер СуперМаг-УКМ V4.0 проверяет запись таблицы signal. Если запись хранит информацию о том, что торговая система подготовила данные, конвертер СуперМаг-УКМ V4.0 помещает значение busy в поле signal и начинает импорт данных. После чтения информации СуперМаг-УКМ V4.0 удаляет ее из таблиц.

5. По окончании процесса импорта конвертер СуперМаг-УКМ V4.0 удаляет сигнал о занятости из таблицы signal.
Очередь сигналов и данных

Приведенная схема взаимодействия систем работает для случая, когда экспортированные из торговой системы данные сразу импортируются в СуперМаг-УКМ V4.0. Если есть вероятность того, что СуперМаг-УКМ V4.0 не успеет обработать предыдущий экспорт данных из торговой системы до готовности нового, следует организовать очередь сигналов и данных. Для этого используется поле version, хранящее номер версии данных (номер экспорта данных из торговой системы).

Поле version хранится в каждой таблице данных и таблице сигналов. При подготовке данных поле version заполняется значением счётчика. При формировании сигнала поле signal.version имеет тоже самое значение, что и в данных. То есть, если к моменту готовности новой порции данных конвертер СуперМаг-УКМ V4.0 сообщает, что находится в процессе импортирования данных, либо не приступал к импортированию предыдущих данных, то необходимость в приостановке экспорта данных из торговой системы отпадает. В этом случае торговая система увеличивает номер версии на 1 и формирует новый пакет.
Полная и частичная загрузка данных

Стандартный конвертер поддерживает полную и частичную загрузку данных в СуперМаг-УКМ V4.0. В случае полной загрузки данные импортируются в СуперМаг-УКМ V4.0 без сохранения предыдущего состояния.

В случае частичной загрузки следует выделять две операции: добавление новой (или корректировка старой) и удаление записи. В последнем случае в поля delete в таблице данных установить значение «1». Значения всех полей, кроме ключевых, при удалении роли не играют. Эти поля могут оставаться пустыми или иметь значение по умолчанию.
10.07.2017 14:43
luciphur
 
Таблицу signal я естественно заполняю, соотв. incr и version 0. Данные исчезают из таблиц конвертера, в таблице trm_out_aoo не появляются.
10.07.2017 14:51
Mtirt
 
А они точно в эту таблицу должны реплицироваться? А не в какую-нибудь trm_auth_local_storage?
10.07.2017 14:57
luciphur
 
Сложный вопрос, баллы, приходящие с кассовых терминалов, пишутся именно в эту таблицу.
10.07.2017 15:02
luciphur
 
Судя по цифрам, в trm_auth_local_storage хранится некий подытог по кассовым терминалам, а не баланс счета клиента. Могу ошибаться конечно.
10.07.2017 15:57
AlgolB
 
Данные должны появится вот тут

local_auth_account_journal Журнал операций по счёту

Название поля Тип данных Размер Значение Описание
id INTEGER 11 Not Null Идентификатор
account_id INTEGER 11 Not Null ссылка на таблицу local_auth_account
amount DECIMAL 20 Not Null сумма операции ("+" - приход, "-" - расход
date DATETIME Not Null учётная дата операции
source_type SMALLINT 6 Not Null источник операции (происхождение операции по счёту)
source_id VARCHAR 40 Not Null идентификатор источника (чека, документа, сумматора и др.)
cash_id BIGINT 20 Not Null идентификатор кассы (например, для выяснения происхождения чека) (если не по кассе то значение 0)
comment TEXT свободный комментарий
balance DECIMAL 20 Not Null остаток по счёту после проведения данной операции по счёту
action_date DATETIME Not Null реальная дата операции
10.07.2017 16:03
AlgolB
 
проверьте правильно ли вы задаете значение
import.clients_operations.account_id,
import.clients_operations.CLIENT,
10.07.2017 16:05
luciphur
 
Цитата:
AlgolB Данные должны появится вот тут

local_auth_account_journal Журнал операций по счёту
Там тоже не появляется (

Сразу вопрос - а client в import4.clients_operations должен соответствовать id в local_auth_account или params в нем же?
10.07.2017 16:06
luciphur
 
Цитата:
AlgolB проверьте правильно ли вы задаете значение
import.clients_operations.account_id,
import.clients_operations.CLIENT,
Подскажите откуда правильно брать эти величины.
Я выше писал, откуда беру я.
Часовой пояс GMT +3, время: 15:03.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.