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

Материал из wiki.standart-n.ru
Версия от 15:45, 19 февраля 2016; Aleksnick (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Начало

В ТМС -305 "После добавления позиции в чек" создаем скрипт. Начало скрипта будет таким:

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;

Примеры акций

Далее пишем скрипты акций.

Пример №1

  • скидка 20% на группу "Акция"
  • акция действует с 31.07.2015 по 23.08.2015
  if ((date() >= StrToDate('31.07.2015')) and (date() <= StrToDate('23.08.2015'))) Then
  Begin
   part_id := ChequeList.ActivePID;
   //запросик к базе
   iq.sql.text := 'select abs(price) as price, abs(quant) as quant from vw_doc_detail_active where UPPER(mmbsh) containing ''АКЦИЯ'' and doc_id='+inttostr(ChequeList.Active.ID)+' and part_id = '+inttostr(part_id) ;
   iq.active := True;
   //забираем данные
   if not(iq.Eof) then
    begin
      dsc := -0.20;
      ChequeList.Active.P_Index:= ChequeList.Active.IndexByPartID(part_id);
      ChequeList.Active.P_SetDiscount(abs(iq.FieldByName('price').AsFloat*iq.FieldByName('quant').AsFloat)*dsc);
    end;                   
   end;


Пример №2

  • скидка 10% на группу "Акция"
  • акция действует с 24.08.2015 по 24.09.2015
 //Акция с 24.08.2015 по 24.09.2015 на товары группы Акция скидка
 //заявка в УР 483165
 //if ((date() >= StrToDate('24.08.2015')) and (date() <= StrToDate('24.09.2015'))) Then  //заявка в УР 491368
 Begin
  part_id := ChequeList.ActivePID;
  //запросик к базе
  iq.sql.text := 'select abs(price) as price, abs(quant) as quant from vw_doc_detail_active where UPPER(mmbsh) containing АКЦИЯ and doc_id='+inttostr(ChequeList.Active.ID)+' and part_id = '+inttostr(part_id) ;
  iq.active := True;
  //забираем данные
  if not(iq.Eof) then
   begin
     dsc := -0.10;
     ChequeList.Active.P_Index:= ChequeList.Active.IndexByPartID(part_id);
     ChequeList.Active.P_SetDiscount(abs(iq.FieldByName('price').AsFloat*iq.FieldByName('quant').AsFloat)*dsc);
   end;
  end;

Конец

Весь сркипт заканчивается так:

  finally
   iq.active := False;
   iq.transaction.free;
   iq.free;
  end;

end;