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

Проверка 50 (наличие при переоценке товаров с фиксированными ценами) : Супермаг Плюс (Супермаг 2000)

22.11.2024 16:56


26.10.2016 14:14
Подниму старую тему:
началось после версии 1.031.2 сп5.
Предыстория:
2. В приходной накладной при нажатии на наценить и принять - если в накладной были товары с фикс. ценами, то они показывались во всплывающем окне. Теперь окна нет. Проверки смотрел, там без изменений.
--------
Ответы С+
Сообщение показывается, чтобы обратить внимание на то, что артикул с фиксированной ценой не наценен, в случае когда у него нет цены. То есть, когда это может привести к ошибочной ситуации, например, невозможность продавать товар при его фактическом наличии в торговом зале. В остальных случаях сообщение показывать не требуется.
В версии 1.031.2 в 5-м сервис паке при выполнении ряда работ в алгоритме наценивания была исправлена ошибка, из-за которой сообщение показывалось в недекларированных случаях.
Возвращать ошибку мы не будем. Если клиент построил на ошибочном поведении собственный бизнес процесс, надо обсудить реализацию этого бизнес процесса иными средствами.
---

После очередной отписки от С+ что нужное нам поведение системы они считают неправильным и менять не будут, родилась мысль исправить это самим.

SQL> select * from SSInspectDoc where InspectID=50;

DO DOCSTATE DOCSTATEBEFORE INSPECTID
-- ---------- -------------- ----------
INSPECTORANAME D
------------------------------------------------------------ -
AC 2 1 50
INSPECT.DOCACFIXEDPRICEREPRICE 1

AC 0 1 50
INSPECT.DOCACFIXEDPRICEREPRICE 1

Т.е. за проверку отвечает процедура INSPECT.DOCACFIXEDPRICEREPRICE
И отсюда просьба - нет ли у кого супермага версии <1.031.2 сп5, чтобы посмотреть, что было в процедуре раньше ?
26.10.2016 16:11
Ниже код процедуры из новой версии:

SQL код:
PROCEDURE DOCACFIXEDPRICEREPRICE (ADOCTYPE IN TDOCTYPE, ADOCID IN TDOCID,
                            AOLDSTATE IN TDOCSTATE DEFAULT NULL, 
                            ANEWSTATE IN TDOCSTATE DEFAULT NULL,
                            ADOBEFORE IN CORE.SMBOOL DEFAULT NULL)
    IS
    BEGIN
        ONSTARTTRANS;
        IF ADOCTYPE <> 'AC'
        THEN
            RETURN;
        END IF;    
        IF SKIPAC(ADOCTYPE, ADOCID, ANEWSTATE)
        THEN
            RETURN;
        END IF;        
        IF((DOCAC.NEEDINSPECT(ADOCID, 50)='0'))
        THEN
            RETURN;
        END IF;    
        INSERT INTO TTINSPECTRESBUFFER ( INSPECTID, ERRID, INSPECTNAME, ERRTEXT )
        SELECT DISTINCT
                50,
                0,
                TO_CHAR (50),
                'В спецификации акта переоценки "' || ADOCID || '" содержится артикул ''' || 
                S.ARTICLE || ''' с фиксированной ценой в позиции №' || S.DISPLAYITEM
            FROM SMDOCUMENTS D, SMACTS A, SMSPEC S, SMCARD C
            WHERE D.DOCTYPE = ADOCTYPE AND
                        D.ID = ADOCID AND
                        D.DOCTYPE = A.DOCTYPE AND
                        D.ID = A.ID AND
                        D.DOCTYPE = S.DOCTYPE AND
                        D.ID = S.DOCID AND
                        S.ARTICLE = C.ARTICLE AND
                        A.REASON = 1 AND
                        BITAND (C.FLAGS, 32) > 0;
        SETFUNCNAME (50);
    END; 
Вот только он полностью совпадает со старым кодом :(
Да и если присмотреться к тексту предупреждения, то оно звучит иначе чем в том окне, которое показывалось.

Должен быть текст: "В спецификации имеются артикулы, которые не будут наценены, но, возможно, требуют наценивания : "
и ниже список таких артикулов.
27.10.2016 09:49
что то я не нахожу этой процедуры...
ты её код как взял.?
27.10.2016 09:51
из INSPECT, который package_body
27.10.2016 10:00
как анврапил?
27.10.2016 10:15
SQL код:
PROCEDURE DOCACFIXEDPRICEREPRICE (ADOCTYPE IN TDOCTYPE, ADOCID IN TDOCID,
                            AOLDSTATE IN TDOCSTATE DEFAULT NULL, 
                            ANEWSTATE IN TDOCSTATE DEFAULT NULL,
                            ADOBEFORE IN CORE.SMBOOL DEFAULT NULL)
    IS
    BEGIN
        ONSTARTTRANS;
        IF ADOCTYPE <> 'AC'
        THEN
            RETURN;
        END IF;    
        IF SKIPAC(ADOCTYPE, ADOCID, ANEWSTATE)
        THEN
            RETURN;
        END IF;        
        IF((DOCAC.NEEDINSPECT(ADOCID, 50)='0'))
        THEN
            RETURN;
        END IF;    
        INSERT INTO TTINSPECTRESBUFFER ( INSPECTID, ERRID, INSPECTNAME, ERRTEXT )
        SELECT DISTINCT
                50,
                0,
                TO_CHAR (50),
                'В спецификации акта переоценки "' || ADOCID || '" содержится артикул ''' || 
                S.ARTICLE || ''' с фиксированной ценой в позиции №' || S.DISPLAYITEM
            FROM SMDOCUMENTS D, SMACTS A, SMSPEC S, SMCARD C
            WHERE D.DOCTYPE = ADOCTYPE AND
                        D.ID = ADOCID AND
                        D.DOCTYPE = A.DOCTYPE AND
                        D.ID = A.ID AND
                        D.DOCTYPE = S.DOCTYPE AND
                        D.ID = S.DOCID AND
                        S.ARTICLE = C.ARTICLE AND
                        A.REASON = 1 AND
                        BITAND (C.FLAGS, 32) > 0;
        SETFUNCNAME (50);
    END; 
27.10.2016 14:13
Цитата:
baggio как анврапил?
https://olegon.ru/ora/unwrap.php
27.10.2016 14:37
Цитата:
OlegON https://olegon.ru/ora/unwrap.php
Ага, именно так.
Только, видимо, эта процедура не поможет. Ощущение, что эта проверка и не проверка вообще в классическом понимании этого в супермаге, а как то зашита в коде.
27.10.2016 15:01
Цитата:
Starter Ага, именно так.
Только, видимо, эта процедура не поможет. Ощущение, что эта проверка и не проверка вообще в классическом понимании этого в супермаге, а как то зашита в коде.
проверил на коде... см версии 2012 года...
код такой же...
Часовой пояс GMT +3, время: 16:56.

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