Настройка акций в Кассире
Материал из 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;