Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > КИС Lack & УС Land

МРЦ и МОЦ. Ведение, анализ и контроль в программе для ЕГАИС "УС Лэнд:ЕГАИС" : КИС Lack & УС Land

05.12.2021 18:01


28.01.2019 14:03
AndreyZh
 
Поглядел, что обсуждение проблемы популярно, да и ооочень редко возникает в реале ситуация сканирование не той бутылки и отправка чека с ценой ниже МРЦ... правда всегда ЕГАИС это ловил, но "не порядок", что в этой мощной утилите для ЕГАИС не реализована эта возможность... Исправляюсь - работа начата:

Изучив подходы, в частности здесь: https://olegon.ru/showthread.php?t=29675&page=5 с сообщения 45... Мне не понравились все! А посему сделал свой "лисапед":

1. Схема МОЦ (минимальная оптовая цена - рознице нужна при возврате поставщикам) и МРЦ (минимальная розничная цена - рознице нужна при контроле продаж по чекам и списаниям в общепите с причиной реализация) описывается в текстовом файле Schema.mc каталога программы. В нём, в свободном формате описываются цены из постановлений.

МРЦ и МОЦ с 1 января 2019:
Код:
Схема - Все поля обязательны, цена определяется за 0.5 литра: 
Список КВАП; грудус от не включая, до включая; МРЦ, МОЦ

Шампанское и игристые вина не зависят от градуса
440,441,442,443,450,451,452,453;-100,999;109.33,88.67

Коньяки
229,230,231,233,234,235;-100,999;388.00,338.00

Бренди, кальвадос и другая шняга
232,237,239,242,251,252;-100,999;307,250

На ликероводочную и другую алкогольную продукцию крепостью свыше 28 процентов
212,236,280;28,29;168,146
212,236,280;29,30;172,150
212,236,280;30,31;176,153
212,236,280;31,32;180,157
212,236,280;32,33;184,160
212,236,280;33,34;189,164
212,236,280;34,35;193,168
212,236,280;35,36;197,172
212,236,280;36,37;201,175
212,236,280;37,38;205,179
212,236,280;38,39;210,182
212,236,280;39,40;215,186
212,236,280;40,41;219,190
212,236,280;41,42;223,194
212,236,280;42,43;227,197
212,236,280;43,44;231,201
212,236,280;44,45;236,205
212,236,280;45,46;240,208
212,236,280;46,47;244,213
212,236,280;47,48;248,216
212,236,280;48,49;252,220
212,236,280;49,50;256,223
212,236,280;50,51;261,227
212,236,280;51,52;265,230
212,236,280;52,53;269,234
212,236,280;53,54;273,238
212,236,280;54,55;278,242
212,236,280;55,56;283,245
212,236,280;56,57;287,249
212,236,280;57,58;291,253
212,236,280;58,59;295,256
212,236,280;59,60;299,261
212,236,280;60,61;303,263
212,236,280;61,999;308,268

Так же здесь описываем водку, которая может быть от 37 до 56 градусов и не совсем совпадает
с ликеро-водочными изделиями. Высчитываю отдельно
200;37,38;215,186
200;38,39;215,186
200;39,40;215,186
200;40,41;219,190
200;41,42;223,194
200;42,43;227,197
200;43,44;231,201
200;44,45;236,205
200;45,46;240,208
200;46,47;244,213
200;47,48;248,216
200;48,49;252,220
200;49,50;256,223
200;50,51;261,227
200;51,52;265,230
200;52,53;269,234
200;53,54;273,238
200;54,55;278,242
200;55,56;283,245


2. При запуске программы данный файл для скорости обработки перекачивается в массив памяти, игнорируя "мусорные" строки

3. Добавил функцию расчета МРЦ и МОЦ по переданным параметрам. Логика понятна из её исходника:

Исходник:
Код:
* --------------------------------------------------------------------------------------------------
*   Возврат минимальной оптовой или розничной цены, в зависимости от переданного параметра
*   Параметры:
*   lOpt    Истина, если опт
*   cAlc    Код КВАП
*   nLitr   Литраж единицы - емкость
*   nDeg    Градусность алкопродукции
*   Возращает нужную минимальную цену или 0 при невозможности её определить, или если не задаётся
FUNC ngMinPrice(lOpt,cAlc,nLitr,nDeg)
    LOCA nPrice:=0, nI:=0, nLen:=Len(agSchMC)
    IF nLen <= 0 THEN RETU nPrice                   //  Нет файла схемы цен
    IF Empty(cAlc:=Alltrim(cAlc)) THEN RETU nPrice  //  Ошибочный параметр
    IF nLitr <= 0 THEN RETU nPrice                  //  Ошибочный параметр
    
    //***   Дробный градус алкопродукции округляется до целого значения по математическому округлению - изыскания Декларант
    nDeg    := Round(nDeg,0)
    
    //  Сканируем массив для поиска необходимой цены
    FOR nI := 1 TO nLen
        IF At(cAlc,agSchMC[nI,1]) > 0                                   //  Входит в список КВАП для МЦ
            IF (nDeg > agSchMC[nI,2]) .AND. (nDeg <= agSchMC[nI,3])     //  Попадаем в интервал по градусам
            
                //  Расчет МЦ в зависимости от литража и типа цены. Выход из цикла
                nPrice  := Round(nLitr*2*IF(lOpt,agSchMC[nI,5],agSchMC[nI,4]),2)
                EXIT
            ENDI
        ENDI
    NEXT nI
    RETU nPrice



4. Пока сделано для реального использования

а. Просмотр цен и поиск цен ниже МРЦ и/или МОЦ, зависящий от регистра:





б. При отправке отгрузочной ТТН на возврат поставщика анализ МОЦ и требования действия пользователя:






продолжение, по мере создания новых возможностей следует....
28.01.2019 15:15
FinSoft
 
Вот это поворот...
29.01.2019 16:49
AndreyZh
 
Сегодня возможно закончил внедрение техник контроля МРЦ и МОЦ во все требуемые виды операций и действий с программой?

Самое простое - списание по любому регистру по причине "реализация", где производится контроль со стороны ЕГАИС, что бы цена превышала МРЦ для алкопродукции, где она требуется.

Способов создания списаний множество, но не стал делать контролов на этапе создания актов, а только при отправке, т.к. существует легкий механизм правки цен в списаниях, в отличии от других режимов, где запрещены правки документов с марками...

10.02.2019 12:09
AndreyZh
 
С целью "полноты" реализации технологии МРЦ, раз уж сделал: https://olegon.ru/showpost.php?p=326144&postcount=2, то и добавил в режимы списания "под ноль" по складу:





и торговому залу:





Общий подход:

1 Шаг. Если цена нулевая, то заменяет её на указанную в новой форме режима.

2 Шаг. Если на алкопродукцию установлена МРЦ и технология включена в программе - в каталоге есть файл Schema.mc, то изменяет цену на цену не ниже МРЦ


Для чего нужны списания "под ноль"?

I. Очевидно при закрытии торговых точек.

II. Поделюсь услышанной мной максимально упрощенной техникой работы с ЕГАИС, декларированием, отчетностью магазинов в деревнях и продавцов пива:

1. По мере возможности в течении квартала подтверждаются ТТН в ЕГАИС;
2. В конце квартала всё списывается "под ноль" с причиной "реализация" одним актом;
3. Декларация закачивается автоматом: https://olegon.ru/showthread.php?t=29120, а продажи проставляются равными приходам

Следовательно весь учет займет несколько часов в квартал. Это не противоречит ЗАКОНОДАТЕЛЬСТВУ, хотя и не соответствует требованиям ФСРАР, что "списание" на следующий день... В организациях указанных выше, а тем более ИП никто проверять ничего не будет... скорее всего
11.05.2019 16:53
AndreyZh
 
Недавно случилась "накладка" - при отправке чека, несмотря на предупреждение программы, дамы отправили продажу по водке ниже МРЦ... О чём сразу, отзвонившись, сознались, правда сделав мне "выговор": почему программа их косяк не исправила - ведь "УС Land" это делает... Конечно сразу сделали возврат по той же цене и отправили новую продажу по "правильной".

Сегодня "до кучи" поработал и с этой "задачкой", но так же нашел и свою ошибку - даже, если бы они не согласились отправлять ниже МРЦ, то программа, всё равно бы отправила данный чек. Сейчас данная "ситуация" прорабатывается:

1. Даётся сообщение о проблеме с МРЦ, где возможен скан марки другого товара;
2. Запрашивается разрешение отправки по цене ниже МРЦ, если "нет", то запрос другой марки (неверное сканирование бутылки", а если "да", то
3. Запрашивается разрешение низкую цену сделать равной МРЦ... иначе отправляем "как есть" - возможна ситуация технического возврата товара, неверно проданного раннее по отсылаемой цене.



P.S. Так же переделаны сообщения на более детальные и понятные.
11.05.2019 17:31
plvn24
 
Цитата:
AndreyZh 3. Запрашивается разрешение низкую цену сделать равной МРЦ... иначе отправляем "как есть" - возможна ситуация технического возврата товара, неверно проданного раннее по отсылаемой цене.
А отличить чек продажи от чека возврата программа не может?
На мой взгляд отправлять прямой чек с ценой ниже МРЦ ну нельзя ни в каком случае, мало ли что там у кассира в голове.
(интерфейс кассира УСЕга до сих пор не удосужился освоить, извините... )
11.05.2019 17:54
AndreyZh
 
Ваши замечания, как всегда правильные и по делу
Цитата:
plvn24 А отличить чек продажи от чека возврата программа не может?
На мой взгляд отправлять прямой чек с ценой ниже МРЦ ну нельзя ни в каком случае, мало ли что там у кассира в голове.
Конечно могу передавать в проверку признак чека возврата... и возможно сделаю абсолютный запрет "ниже МРЦ"... просто это доделывал, когда уже "головушка" плохо соображала, а сейчас вообще "отупела"
12.05.2019 17:09
AndreyZh
 
Цитата:
plvn24 А отличить чек продажи от чека возврата программа не может? На мой взгляд отправлять прямой чек с ценой ниже МРЦ ну нельзя ни в каком случае, мало ли что там у кассира в голове.
Сейчас, пока готовится вечерняя пища доделал по Вашему совету и моему разумению:

а. Если возвратный чек, то проходятся все три "этапа" диагностики и запросов: https://olegon.ru/showpost.php?p=330865&postcount=5

б. Ежели обычный чек, то при требовании "продавать" (2), хоть и цена ниже МРЦ программа не спрашивая делает цену равной МРЦ
23.11.2021 15:07
AndreyZh
 
В связи с очередной шарадой от ФСРАР: https://olegon.ru/showthread.php?t=36194 изменен алгоритм определения минимальных цен. В чём шарада? - Кодировка КВАП, которая раньше состояла из точно 3 знаков сейчас может быть от 3 до 5 знаков, например для "водка":

200 Водка
2001 Водка с защищенным наименованием места происхождения товара
2002 Водка особая
2003 Водка особая с защищенным наименованием места происхождения товара
2004 Водки прочие

На простой вопрос - исходя из чего считать минимальную цену для КВАП 2003 до сих пор нет официального ответа, а по новому проекту новых МРЦ/МОЦ: https://olegon.ru/showpost.php?p=376138&postcount=16, например даётся для "водка"... Разработчики с форума ФСРАР начали переделывать свои программы и схемы исходя из логического предположения, что расчет необходимо производить для всех кодов с "базовыми" 3 знаками. Ну я решил аналогично:

Функция расчета МРЦ/МОЦ единая для "УС Land" и "УС Лэнд:ЕГАИС" и сейчас выглядит:
Исходный код:
Код:
* --------------------------------------------------------------------------------------------------
*   Возврат минимальной оптовой или розничной цены, в зависимости от переданного параметра
*   Параметры:
*   lOpt    Истина, если опт - возвращаем МОЦ иначе МРЦ
*   cAlc    Код КВАП
*   nLitr   Литраж единицы - емкость
*   nDeg    Градусность алкопродукции
*   Возращает нужную минимальную цену или 0 при невозможности её определить, или если не задаётся
/*  23.12.2019 В связи с новым приказом изменил алгоритм - хардкод. В принципе программа всегда
    работала неправильно, но производители чаше стали баловаться. По приказу МРЦ и МОЦ на
    ВОДКУ с литражом 0.375 - 0.500 берется, как при 0.5 литра...
*/    
*   15.11.2021 КВАП может быть до 5 знаков и смотрю не точное совпадение, а точное совпадение первых 3 знаков
FUNC ngMinPrice(lOpt,cAlc,nLitr,nDeg)
    LOCA nPrice:=0, nI:=0, nLen:=Len(agSchMC)
    IF nLen <= 0 THEN RETU nPrice                   //  Нет файла схемы цен
    IF Empty(cAlc:=Alltrim(cAlc)) THEN RETU nPrice  //  Ошибочный параметр
    IF nLitr <= 0 THEN RETU nPrice                  //  Ошибочный параметр
    IF ndeg <= 0  THEN RETU nPrice                  //  Ошибочный параметр
    
    //***   Дробный градус алкопродукции округляется до целого значения по математическому округлению - изыскания Декларант
    nDeg    := Round(nDeg,0)
    cAlc    := Alltrim(cAlc)                        //  15.11.2021 Очишаю от дупустимых пробелов
    
    //***   23.12.2019 Подгоняю литраж только для ВОДКИ
    IF Left(cAlc,3) == "200"
        IF (nLitr >= 0.375) .AND. (nLitr <= 0.500) THEN nLitr := 0.5
    ENDI
    
    //  Сканируем массив для поиска необходимой цены
    FOR nI := 1 TO nLen
        IF At(Left(cAlc,3),agSchMC[nI,1]) > 0                                   //  Входит в список КВАП для МЦ
            IF (nDeg > agSchMC[nI,2]) .AND. (nDeg <= agSchMC[nI,3])     //  Попадаем в интервал по градусам
            
                //  Расчет МЦ в зависимости от литража и типа цены. Выход из цикла
                nPrice  := Round(nLitr*2*IF(lOpt,agSchMC[nI,5],agSchMC[nI,4]),2)
                EXIT
            ENDI
        ENDI
    NEXT nI
    RETU nPrice


т.е. сейчас анализируются только первые три знака КВАП и внешняя схема расчета минимальных цен: https://olegon.ru/showpost.php?p=359310&postcount=12 сохраняется и остаётся работоспособной для старой трехсимвольной кодировки и для новой "плавающей", а схема для 2022 года будет выложена после подписания соответствующего приказа.

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