| 
    
        
     
     | 
    
    
  | 
Получение содержимого чека из "Честного Знака" | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        MWWRuza    
     гуру 
    25.02.24 
            ✎
    13:00 
 | 
         
        Добрый день!
 
    
Я хоть и пишушу свои разработки под клюшки, но это не имеет значения, тема общая... Вот такой отчет: ![]() Что выводить в поле с красными вопросиками? По логике(да и вообще, по здравому смыслу), 355, как сумма всех строк чека. НО!!! В JSON файле из API ЧЗ, 200... В описании API, это поле описано так: ![]() Но, в файле так: ![]() Почему? При этом, если в чеке одна позиция, или несколько, но они одинаковые, то все верно: ![]() Что за нах? Я чего-то не понимаю в их логике, или это ошибка в Честном Знаке - ? Такое ощущение, что они в "total" выводят сумму всех позиций по последней одинаковой позиции... Как так-то? Писать в поддержку? Не проблема, но, я хотел прежде услышать ваше мнение, может я чего-то туплю... Вот сам файл JSON чека тремя позициями: https://cloud.mail.ru/public/AAzk/RX6wz5gy1  | 
|||
| 
    1
    
        Смотрящий    
     25.02.24 
            ✎
    13:00 
 | 
         
        Скидку они так показывают. 355 - 200 = 155 рэ скидки     
         | 
|||
| 
    2
    
        MWWRuza    
     гуру 
    25.02.24 
            ✎
    13:19 
 | 
         
        Ну, можно было бы предположить, но нет в этих чеках никаких скидок... (Точнее, даже не только в этих чеках, а у этой фирмы вообще). Да даже, если бы и так, тогда почему на чек с одной позицией(или несколько, но одинаковых), такого нет? :-)     
         | 
|||
| 
    3
    
        stopa85    
     25.02.24 
            ✎
    15:21 
 | 
         
        Вы выгрузку сделали по товарной группе молочка. Вот по ней сумма 200.     
         | 
|||
| 
    4
    
        MWWRuza    
     гуру 
    25.02.24 
            ✎
    17:52 
 | 
         
        (3) Да, по ответу очень похоже на это.
 
    
Но, НЕТ. Было бы так, было бы все понятно, и вопроса бы не было... По описанию параметр "pg" не обязательный: ![]() и я его не указываю в адресе запроса(в этом запросе тела запроса нет, все в адресе): ![]() Так, что, причина не в этом...  | 
|||
| 
    5
    
        MWWRuza    
     гуру 
    25.02.24 
            ✎
    19:01 
 | 
         
        Да, в в ответе на запрос, откуда я беру ID этого чека, он идет двумя строками, с одним ID:
 
    
![]() Хотя, не понятно почему - реквизит "productGroups" - это у них массив, в [], могли бы в одной строке, с одним ID сделать так: [13, 8]... но, нет, сделали почему-то 2 строки с группами [13] и второй [8]... Ну, хотя тут наверно можно понять почему - реквизит - "processingDateTime" - время обработки сервером отличается на 1 секунду, и у одного продукта есть вес, но нет объема, у другого наоборот... А делать эти параметры массивами или вложенными объектами JSON, они поленились :-( Ну, да ладно, когда я сам чек запрошиваю, это не должно влиять - я то не указываю группу, вообще... Чек прилетает один, общий, только общая сумма в нем расчитана для одной группы.  | 
|||
| 
    6
    
        Гена    
     гуру 
    25.02.24 
            ✎
    19:39 
 | 
         
        (0) Мой ответ на первую картинку с пятью вскл: 200. 
 
        Ход размышлений. ЧМ не налоговая и ему не нужны полные фискальные суммы по чекам. Например, ЧестныйГена, которому поручили отслеживать всех ген. Мало ли какую ещё светотень накупил в одной тележке покупатель. Понятно, что касса отправила мне полный чек. Но мне в нём нужны только строчки по генам, их я и буду выдавать на запросы, только их и буду суммировать.  | 
|||
| 
    7
    
        stopa85    
     25.02.24 
            ✎
    19:47 
 | 
         
        (5) к слову, а что это за идентификатор чека? Из чего он состоит и как его получают?
 
        Я пока только понял, что там в середине номер фискального накопителя. Можно как-то получить чек зная его ФН, ФП, номер чека за смену?  | 
|||
| 
    8
    
        MWWRuza    
     гуру 
    26.02.24 
            ✎
    00:24 
 | 
         
        (6) Да, но Гена покупает маркированный товар, пусть разных групп, в одном чеке молоко и вода... И отбор по конкретной группе нигде не установлен. Почему они считают, что можно посчитать сколько Гена заплатил за молоко, а воду, что, он хапнул нахаляву???
 
    
Кстати, немаркированные товары в эти чеки из ЧЗ не попадают, я много чеков просмотрел, в них нет немаркированной продукции, только молоко и вода. И это, в принципе понятно - ЧЗ нет дела до немаркированных товаров, поэтому, эти чеки все равно не соответствуют чекам в ФНС... В них однозначно кроме молока с водой есть и другие товары. Но, по маркированным, должны правильно сумму считать, ИМХО... (7) Да х.з... Как-то не задавался целью проанализировать это... Вот например: ![]() Его ИД: 23637281440501109803482 Ном ФД: 2363 Ном ФН: 7281440501109803 ФД + ФН, получается: 23637281440501109803 Остается 482. Что это такое, понятия не имею, видимо какя-то их константа, возможно привязка к фирме(хотя, три знака для этого явно мало), может вид документа-запроса, непонятно, но она неизменна для всех чеков... ФП они вообще не передают... Я сначала не посмотрел, был уверен, что есть, QR нарисовал, думал выведу такой-же как на чеке из ККТ :-) Ага, сЧаСт... Без ФП его не сформировать. Убирать пока не стал, мало-ли, вдруг начнут передавать в какой-нибудь следующей версии API :-) А получают его вот таким запросом: ![]() При этом, там, в ответе, не только чеки, а все доки, УПД со своими длинными ИД, как в именах файлов, АктыСписания, со своими ИД... PS Пока писал, подумал - надо еще отбор по виду доков в отчет добавить :-)  | 
|||
| 
    9
    
        stopa85    
     26.02.24 
            ✎
    06:43 
 | 
         
        (9) 
 
        ФД + ФН, получается: 23637281440501109803 
У меня это правило не всегда срабатывает  | 
|||
| 
    10
    
        MWWRuza    
     гуру 
    28.02.24 
            ✎
    16:02 
 | 
         
        (9) Не знаю, почему не срабатывает.
 
    
Вот скриншот от клиента, у которго три кассы: ![]() Все то-же самое, номера ФД + ФН(естественно, разные для трех касс), и в конце те-же 482(что это такое, можно только гадать, но, ясно одно - с клиентом не связано). PS И, кстати, у этого клиента сигареты есть, они тоже туда попадают, вместе с молоком и водой, хотя, по описанию API - не должны, запрос типа только для этих двух ТГ.  | 
|||
| 
    11
    
        MWWRuza    
     гуру 
    29.02.24 
            ✎
    12:49 
 | 
         
        +(10) хотя, по описанию API - не должны, запрос типа только для этих двух ТГ.
 
        Скачал свежее описание API, в нем исправили: "Метод возвращает список документов, влияющих на баланс склада участника оборота товаров, за запрашиваемый период (разница между начальной и конечной датами не более 92 дней) для товарных групп «Антисептики и дезинфицирующие средства», «Биологически активные добавки к пище», «Молочная продукция» и «Упакованная вода»." Там все 4 группы, по которым ОСУ. Но, все равно, про сигареты нет ни слова, но они в ответ сервера попадают. "Не видишь суслика? А он есть!" :-)  | 
|||
| 
    12
    
        stopa85    
     01.03.24 
            ✎
    11:46 
 | 
         
        (10) А я знаю. Нужно копать в сторону чеков Коррекции. 
 
        Если есть, указывается не его ФП, а исходного. Ну... похоже.  | 
|||
| 
    13
    
        stopa85    
     01.03.24 
            ✎
    12:02 
 | 
         
        А вот тут описана формула этого волшебного кода
 
        https://честныйзнак.рф/info/releasenotes/chto-novogo-v-sisteme-s-22-07-2022-po-28-07-2022/?sphrase_id=322970  | 
|||
| 
    14
    
        MWWRuza    
     гуру 
    01.03.24 
            ✎
    14:55 
 | 
         
        Ага, спасибо!
 
        482 - получаетя: 4 - версия ФФД 1.2, а 82 - "Уведомление о реализации".  | 
|||
| 
    15
    
        stopa85    
     01.03.24 
            ✎
    22:15 
 | 
         
        (12) нет чеки коррекции тут не причем
 
        Чек на реализацию 555357280440500121123482 от 01.03.2024 от 17:00 А имеет он порядковый номер CheckNumber="84598" от 09:00 В ЧЗ он попадает с лагом в 8 часов, номера не соответствуют. Единственное как я могу сопоставить одно с другим: это коды маркировки в составе чека.  | 
|||
| 
    16
    
        MWWRuza    
     гуру 
    02.03.24 
            ✎
    14:03 
 | 
         
        А что такое - "CheckNumber", где Вы его берете, как получаете?
 
        В ответе JSON реквизит называется: "fiscalDocumentNumber" если что, может Вы что-то другое пытаетесь вместо него подтянуть? И по времени... Их там два: "docDate" - как я понял, это дата/время самого чека, и "receivedAt" это дата/время обработки документа сервером ЧЗ... Обычно разница в несколько секунд, но, иногда может отличаться часами, и даже сутками.  | 
|||
| 
    17
    
        stopa85    
     03.03.24 
            ✎
    14:13 
 | 
         
        (16) это номер чека
 
        Из драйвера кассы.  | 
|||
| 
    18
    
        MWWRuza    
     гуру 
    03.03.24 
            ✎
    20:38 
 | 
         
        А что такое "номер чека Из драйвера кассы" - ?
 
        Это порядковый номер чека(непонятно, за какой период?), или номер ФД(Фискального документа), сквозная нумерация всех ФД от "отчета о регистрации", до последнего фискального документа - чека, или отчета о закрытии смены(если она закрыта) - ? Номер ФД не совпадает с номером Чека, так, как в его счетчик попадают все ФД - отчеты о регистрации/перерегистации, отчеты об открытии/закрытии смены, отчеты о состоянии расчетов. В ЧЗ используется именно номер ФД, ни о каких номерах чеков они и не знают...  | 
|||
| 
    19
    
        stopa85    
     03.03.24 
            ✎
    21:53 
 | 
         
        Номер ФД. Конечно.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |