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

Проверка 50 (наличие при переоценке товаров с фиксированными ценами)

25.09.2020 4:09


26.10.2016 14:14
Starter
 
Подниму старую тему:
началось после версии 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
Starter
 
Ниже код процедуры из новой версии:

SQL код:
PROCEDURE DOCACFIXEDPRICEREPRICE (ADOCTYPE IN TDOCTYPEADOCID 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(ADOCTYPEADOCIDANEWSTATE)
        
THEN
            
RETURN;
        
END IF;        
        IF((
DOCAC.NEEDINSPECT(ADOCID50)='0'))
        
THEN
            
RETURN;
        
END IF;    
        
INSERT INTO TTINSPECTRESBUFFER INSPECTIDERRIDINSPECTNAMEERRTEXT )
        
SELECT DISTINCT
                50
,
                
0,
                
TO_CHAR (50),
                
'В спецификации акта переоценки "' || ADOCID || '" содержится артикул ''' || 
                
S.ARTICLE || ''' с фиксированной ценой в позиции №' || S.DISPLAYITEM
            FROM SMDOCUMENTS D
SMACTS ASMSPEC SSMCARD 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 AND
                        
BITAND (C.FLAGS32) > 0;
        
SETFUNCNAME (50);
    
END
Вот только он полностью совпадает со старым кодом :(
Да и если присмотреться к тексту предупреждения, то оно звучит иначе чем в том окне, которое показывалось.

Должен быть текст: "В спецификации имеются артикулы, которые не будут наценены, но, возможно, требуют наценивания : "
и ниже список таких артикулов.
27.10.2016 09:49
baggio
 
что то я не нахожу этой процедуры...
ты её код как взял.?
27.10.2016 09:51
Starter
 
из INSPECT, который package_body
27.10.2016 10:15
baggio
 
SQL код:
PROCEDURE DOCACFIXEDPRICEREPRICE (ADOCTYPE IN TDOCTYPEADOCID 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(ADOCTYPEADOCIDANEWSTATE)
        
THEN
            
RETURN;
        
END IF;        
        IF((
DOCAC.NEEDINSPECT(ADOCID50)='0'))
        
THEN
            
RETURN;
        
END IF;    
        
INSERT INTO TTINSPECTRESBUFFER INSPECTIDERRIDINSPECTNAMEERRTEXT )
        
SELECT DISTINCT
                50
,
                
0,
                
TO_CHAR (50),
                
'В спецификации акта переоценки "' || ADOCID || '" содержится артикул ''' || 
                
S.ARTICLE || ''' с фиксированной ценой в позиции №' || S.DISPLAYITEM
            FROM SMDOCUMENTS D
SMACTS ASMSPEC SSMCARD 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 AND
                        
BITAND (C.FLAGS32) > 0;
        
SETFUNCNAME (50);
    
END
27.10.2016 14:37
Starter
 
Цитата:
OlegON https://olegon.ru/ora/unwrap.php
Ага, именно так.
Только, видимо, эта процедура не поможет. Ощущение, что эта проверка и не проверка вообще в классическом понимании этого в супермаге, а как то зашита в коде.
27.10.2016 15:01
baggio
 
Цитата:
Starter Ага, именно так.
Только, видимо, эта процедура не поможет. Ощущение, что эта проверка и не проверка вообще в классическом понимании этого в супермаге, а как то зашита в коде.
проверил на коде... см версии 2012 года...
код такой же...

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