Настройка акций в Кассире

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск

Настройка ТМС Акции в кассире

Пример №2 (старый мех-м)

  • акция действует всегда пока включен переключатель в параметрах системы
INSERT INTO PARAMS ( PARENT_ID, PARAM_ID, PARAM_CAPTION, PARAM_TYPE, PARAM_VALUE, AUDIT_ID, IMAGEINDEX,
STATUS, INSERTDT, SORTING, PARAM_TYPE_DATA, PACKET) VALUES ( -30, 'AKCCII_TOGGLE', 'Включение акций', 14, '0', 3229, NULL, 0, '19-DEC-2015 10:45:34.828', NULL, 'FIXEDITEMS SHOWONLYVALUES RETURNNAME
0=выключено
1=включено');
  • если переключатель включен - в кассире при продаже активируется скидка = разнице между заполненными колонками price и ещё одной ценовой колонкой, ниже использована PRICE_R
uses
  Graphics, Controls, Forms, Dialogs, StdCtrls,
  ComCtrls, ExtCtrls, ibquery, DB, ChequeList, FR,
  ScriptRes, Barcode,ZKassa, StrUtils, Windows, Classes,
  IBDataBase, SysUtils, DateUtils, chequelist;
var iq: tibquery;
    dsc, part_id: integer;
    discount: float;
begin
 Try
   iq := tibquery.create(nil);
   iq.transaction := CreateRT(CurrDB);
   iq.transaction.starttransaction;
   iq.active := False;

   iq.sql.text := 'select wb.part_id,wb.PRICE_R,(select p.param_value from params p where p.param_id = ''AKCCII_TOGGLE'') from  vw_warebase wb  where wb.part_id = '+
   IntToStr(ChequeList.ActivePID);

   iq.active := True;
   if not(iq.Eof) then
     if ( not iq.FieldByName('param_value').AsInteger=0 )then
       if ( not iq.FieldByName('PRICE_R').isNull )then
         if (iq.FieldByName('PRICE_R').AsFloat>0) then begin
            ChequeList.Active.P_Index := ChequeList.Active.IndexByPartID(iq.FieldByName('part_id').AsInteger);
            temp := -(ChequeList.Active.P_Price - iq.FieldByName('PRICE_R').AsFloat);
            ChequeList.Active.P_SetDiscount(temp);
         end;
  finally
   iq.active := False;
   iq.transaction.free;
   iq.free;
  end;

Отправка ТМС по синхронизации

Выгружаем тмс из базы из blob поля в файл

Тмс можно найти спомощью запроса:

select * from groups g where g.id=-305

Затем сохраняем на жесткий диск тмс из поля data.

Загружаем ТМС в серверную базу

  • В таблице g$profiles выбираем blob поле, которое будем использовать для отправки, например TMP_BLOB1.
  • Убеждаемся, что данная таблица синхронизируется в двухстороннем направлении.
  • Загружаем в это поле например первому профилю наш ТМС скрипт.
  • Ждем когда это обновление придет всем по синхронизации.

Применяем всем ТМС

По g$tasks отправляем запрос нужным профилям:

update groups gp set gp.data = (select g.tmp_blob1 from G$PROFILES g where g.id = 1) where gp.id = -305;