Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

МРЦ, алкоголь, скидка. Как контролировать продажи ниже МРЦ : Супермаг Плюс (Супермаг 2000)

23.11.2024 1:40


14.06.2019 13:13
Итого. Создал проверку на наличие МРЦ при проведении прихода по конкретной группе товара (код ниже).
Плюс обнаружил в см запрет №20 "Контроль наличия минимальной цены для алкогольного товара" который действует при проведении акта переоценки и проверяет
наличие МРЦ у карт в которых в закладке Классификация код алк является алкогольным.
Оба решения блокируют только отсутствие МРЦ но не проверяют его корректность поэтому буду смотреть в сторону варианта предложенного FinSoft/



CREATE OR REPLACE
PROCEDURE A_RS_WI_DOC_MRC(
INDOCTYPE IN SMDOCUMENTS.DOCTYPE%TYPE
, INDOCID IN SMDOCUMENTS.ID%TYPE
, INOLDSTATE IN SMDOCUMENTS.DOCSTATE%TYPE := NULL
, INNEWSTATE IN SMDOCUMENTS.DOCSTATE%TYPE := NULL
, INDUMMY IN CORE.SMBOOL := NULL)
IS

--Запрет создан отделом РЦ по запросу генерального директора и акцизного отдела
BEGIN
----
INSPECT.Onstarttrans;
insert into TTINSPECTRESBUFFER (INSPECTID, ERRID, INSPECTNAME, ERRTEXT)

SELECT 904, 0, '904', 'Запрещено проводить алкогольный товар без мин. цены. Артикул'||PEC.ARTICLE||' строка '||PEC.SPECITEM||'!'
from SMDOCUMENTS doc, smcard cms,SACARDCLASS gru, SMSPEC PEC
left JOIN (select CEN.ARTICLE, CEN.PRICETYPE, CEN.MINPRICE
from SMExtraCharge cen, SMDOCUMENTS doc, SMLocPrices PRICELOC
where DOC.DOCTYPE=INDOCTYPE
and DOC.id=INDOCID
and PRICELOC.LOCID = doc.LOCATIONTO
and PRICELOC.FLAGS=2
and PRICELOC.PRICETYPE=CEN.PRICETYPE
) CEN2 on (PEC.ARTICLE=cen2.ARTICLE)
where
DOC.id= INDOCID
and DOC.DOCTYPE= INDOCTYPE
and PEC.DOCID=DOC.ID
and PEC.DOCTYPE='WI'
and CMS.ARTICLE=PEC.ARTICLE
and CMS.IDCLASS=GRU.ID
and GRU.tree > '9.1' and GRU.tree < '9.5'
AND CEN2.MINPRICE is null
and not exists (select 1
from smcommonbases b
where b.doctype = DOC.doctype and b.id=DOC.id and b.basedoctype = 'WI'
)
;

INSPECT.SETFUNCNAME(904);
END A_RS_WI_DOC_MRC;


insert into ssinspectfunc (id,name,definspectmode)
values (904, 'Запрет отсут-я МРЦ по алкоголю', 2);


insert into ssinspectdoc (doctype, docstate, docstatebefore, inspectid, inspectoraname, dobefore)
values('WI', 2, 1, 904, 'A_RS_WI_DOC_MRC', 1);
14.06.2019 13:25
Цитата:
АндрейСупермаг Писал проверку - процедуру на документы (все работает). А вот процедуру для контроля номенклатуры сам не осилю. Сможете часть своего кода по контролю фиксированной цены положить сюда? Буду очень благодарен да и остальным пользователям будет полезно получить готовое решение.
Если нет наценок на артикул, устанавливает галку фиксированная цена

Пакет:

SQL код:
CREATE OR REPLACE PACKAGE supermag.PKG_FIXART IS
    type t_emp is table of varchar2(50) index by binary_integer;
    PROCEDURE FIXARTChange;
END PKG_FIXART;
/


CREATE OR REPLACE PACKAGE BODY supermag.PKG_FIXART
IS
PROCEDURE FIXARTChange
AS
      v_emp PKG_FIXART.t_emp;
      LCalc number;
BEGIN
       Select ARTICLE BULK COLLECT into v_emp from
                    (Select C.ARTICLE, DECODE(
                                    EC.EXTRACHARGE,
                                    null, 
                                    (Select Supermag.SMGetExtraChargeClass(C.ARTICLE,3) from dual),EC.EXTRACHARGE) Proc
                    from 
                        SUPERMAG.SMEXTRACHARGE ec, 
                        supermag.smcard C
                    where
                    EC.ARTICLE(+)=C.ARTICLE and bitand(C.Flags,power(2,5))=0 and (decode( EC.PRICETYPE,null,3,EC.PRICETYPE))=3) ProcNone
                    where ProcNone.Proc=0 and ProcNone.article!='0';
        if v_emp.count !=0 then
            execute immediate 'ALTER TRIGGER supermag.SMCardCheckAuxRoles DISABLE';
            FOR Lcntr IN 1..v_emp.count
            LOOP
                update  supermag.smcard 
                set Flags = Flags+power(2,5)
                where article = (v_emp(Lcntr));
           commit;
            -- если нужна рассылка 
        -- Supermag.SMAutoPostCard(v_emp(Lcntr)); 
            --dbms_output.put_line(v_emp(Lcntr));
            END LOOP;
            execute immediate 'ALTER TRIGGER supermag.SMCardCheckAuxRoles ENABLE';
       end if;

END FIXARTChange;
END PKG_FIXART; 
В таблицу SSCONTROLFUNCTIONS добавляем задание
SQL код:
begin
SUPERMAG.PKG_FIXART.FIXARTCHANGE;
end;
/ 


Ну а дальше собственно все управление через административный модуль
15.06.2019 04:44
Ferus спасибо большое, буду осваивать. Есть очень много запретов которые нужно сделать не привязываясь к документам. Теперь при наличии примера смогу осилить задачу )
30.11.2022 13:00
Позвольте вернуться к этому старому вопросу. У нас тоже случилась продажа алкоголя ниже МРЦ, и никакой запрет не сработал.
Цитата:
Mtirt УТМ же не дает продать товар ниже МРЦ.
Цитата:
АндрейСупермаг Все верно, только пользователи забывают этот МРЦ заполнить.
Собственно, вопрос, а где эта МРЦ заполняется? И каким вообще образом УТМ её контролирует?
30.11.2022 13:25
Запросом к серверу РАР перед отправкой чека.
Если ответ за заданное время не получен, то чек отправляется с данными "Как есть".

На кассе стоит УКМ4 ?
Я несколько раз замечала, что если в чеке, после подитога убрали одну из бутылок, то в ЕГАИС при продаже отсылается неверная марка.
С+ несколько раз это правил, но есть подозрения, что не до конца.
01.12.2022 09:41
Да, на кассе УКМ4. Насчёт удаления бутылок после подытога - не знаю, не обращал внимания.

А где в Супермаге заполняется МРЦ? Мы в 8 глаз смотрим, не можем найти
01.12.2022 09:56
В Супермаге - в графе Мин.Цена закладки Цены:



(0.04Мб)

В УКМ4 есть вот этот функционал
01.12.2022 10:40
А, надо было по местам хранения смотреть.. Теперь получилось, спасибо!
Часовой пояс GMT +3, время: 01:40.

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