Взять кассу
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4625
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Хотя в 18 регистре есть дата и время окончания текущей смены. Наверно, по ним можно вычислить...
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7384
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 49 раз
Взять кассу
1. Посмотрите в справке признаки SessionOpened и SessionExceedLimit - это флаги открытия смены и превышения 24 лимита в АТОЛ.finsoftrz писал(а): ↑02 Август 2018, 10:18 У пиритов и штрихов это штатная функция
2. Здесь ещё нужно учитывать т.н. новый порядок формирования чеков. В контексте Вашего вопроса, здесь важно, что смена открывается первым фискальным чеком, а значит и контроль открытия смены должен производиться при открытии фискального документа - см. примеры формирования чеков на сайте АТОЛ для ФФД 1.05. Раньше действительно нужно было проверять открытие смены и специально её открывать - подозреваю, что именно это и делается в ПИРИТЕ и в старом порядке работы с Штрих-М (если Вы не юзаете FNOperation()).
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4625
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Нет, не правильно подозреваете... Это просто дополнительная проверка при запуске программы.
У меня в описании драйвера Атола 8 версии этого свойства нет. Там только признак открытой смены и дата/время завершения смены (что это такое, надо уточнять, под рукой атола нет). Судя по всему, добавили в одном из последних релизов драйвера, после волны вопросов на этот счет.
У меня в описании драйвера Атола 8 версии этого свойства нет. Там только признак открытой смены и дата/время завершения смены (что это такое, надо уточнять, под рукой атола нет). Судя по всему, добавили в одном из последних релизов драйвера, после волны вопросов на этот счет.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7384
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 49 раз
Взять кассу
Всё может быть, в т.ч. и волна вопросов на столь нужную и актуальную тему ...
А описание драйвера АТОЛ у меня от 31.10.2017 г. - т.е. нельзя назвать его совсем новым.
Здесь очень помогает обычный поиск, попробуйте пожалуйста (см. рисунок)
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4625
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Скачал последнюю версию документации, там это появилось. Поиском я пользоваться умею, спасибо...
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4625
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Игорь, а сверку с ОФД делали? Меня сейчас интересует Такском. Как я понял, у них не свободно.
Для первого ОФД есть работающий пример на php, оставлю здесь, может кому пригодится.
Для первого ОФД есть работающий пример на php, оставлю здесь, может кому пригодится.
Код: Выделить всё
<?php
//Источник
//https://olegon.ru/showthread.php?t=27917
print "Подключаюсь... \n";
$url = "https://org.1-ofd.ru/api/user/login";
//Логин к ОФД
$MyLogin='МойЛогин';
//Пароль к ОФД
$MyPass='МойПароль';
//Номер интересующей нас кассы в ОФД
$MyKass="МояКасса";
$user=array('login'=>$MyLogin, 'password'=>$MyPass );
$ch = curl_init();
//Имя файла, в который мы запишем "сырые данные" из ОФД
$file = 'fromofd.txt';
//Имя файла, в который мы запишем данные по сменам
$fileres = 'resultat.txt';
$strres = "";
$strvyv = "";
$current = file_get_contents($file);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Content-Type: application/json;charset=utf-8"));
curl_setopt($ch,CURLOPT_POSTFIELDS,json_encode($user));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch,CURLOPT_CUSTOMREQUEST,'POST');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); //Записываем куки в файл
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
$result = curl_exec($ch);
print "Подключились \n";
$json=json_decode($result,true);
curl_close($ch);
print "\n **************************************** \n";
$Mohtn = date("m");
$Day = date("d");
$Year = date("y");
//Для сверки - всегда забираем информацию за последний месяц
$StartDate = date('U', mktime(0, 0, 0, $Mohtn-1, $Day, $Year));
$StartDate = $StartDate."000";
//Так как данные идут от более свежих к более старым - то до сегодняшнего дня с указанной даты
$newurl="https://org.1-ofd.ru/api/kkms/".$MyKass."/transactions?fromDate=".$StartDate;
print "Получаем чеки... \n";
$ch1 = curl_init($newurl);
curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch1, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch1, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch1, CURLOPT_SSL_VERIFYHOST, false);
$result = curl_exec($ch1);
print "Чеки получены\n";
//Для интереса - $result ("сырые данные") запишем в файл
file_put_contents($file, $result);
$obj=json_decode($result,true);
curl_close($ch1);
$KolvoClose=0;
$KolvoOpen=0;
$KolvoProd=0;
$KolvoProdNal=0;
$KolvoProdKarta=0;
$KolvoVz=0;
$KolvoVzNal=0;
$KolvoVzKarta=0;
$TotalPr=0;
$TotalPrNal=0;
$TotalPrBNal=0;
$SummaPr=0;
$SummaPrZ=0;
$SummaPrNal=0;
$SummaPrNalZ=0;
$SummaPrKarta=0;
$SummaPrKartaZ=0;
$SummaVz=0;
$SummaVzNal=0;
$SummaVzKarta=0;
$shiftNumber=0;
$nalvyv=0;
print "Проверка чеков...\n";
foreach($obj as $item)
{
$currentline = $item;
if ($item["transactionType"]=="CLOSE_SHIFT")
{
if ($shiftNumber>0)
{
$strvyv = "Смена = ".$shiftNumber."\n";
$strres .=$strvyv;
//На экран - только последню смену
if ($nalvyv<1)
{print $strvyv;}
//Если есть - выведем сводную информацию
if ($SummaPrZ<>0 or $SummaPrNalZ<>0 or $SummaPrKartaZ<>0)
{
$strvyv = " Продажи (сумма за смену) = " . $SummaPrZ . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
$strvyv = " Наличными (сумма за смену) = " . $SummaPrNalZ . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
$strvyv = " Картой (сумма за смену) = " . $SummaPrKartaZ . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
}
if ($KolvoProd>0 or $KolvoVz>0)
{
$TotalPr = $SummaPr-$SummaVz;
$TotalNal = $SummaPrNal-$SummaVzNal;
$TotalBNal = $SummaPrKarta-$SummaVzKarta;
//В случае несовпадение итогов - выведем информацию
if ($SummaPrZ<>0 or $SummaPrNalZ<>0 or $SummaPrKartaZ<>0)
{
if ((bccomp($TotalPr, $SummaPrZ, 2)<>0 or bccomp($TotalNal, $SummaPrNalZ, 2)<>0 or bccomp($TotalBNal, $SummaPrKartaZ, 2)<>0))
{
$strvyv = " Продажи (сверка за смену) = " . $TotalPr . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
$strvyv = " Наличными (сверка за смену) = " . $TotalNal . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
$strvyv = " Картой (сверка за смену) = " . $TotalBNal . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
}
}
//Выведем детальную информацию
$strvyv = " Продажи (чеков) = " . $KolvoProd . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
$strvyv = " Продажи (сумма) = " . $SummaPr . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
$strvyv = " Наличными = " . $SummaPrNal . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
$strvyv = " Картой = " . $SummaPrKarta . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
$strvyv = " Возвраты (чеков) = " . $KolvoVz . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
$strvyv = " Возвраты (сумма) = " . $SummaVz . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
$strvyv = " Наличными = " . $SummaVzNal . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
$strvyv = " Картой = " . $SummaVzKarta . "\n";
$strres .=$strvyv;
if ($nalvyv<1)
{print $strvyv;}
}
$SummaPrZ=0;
$SummaPrNalZ=0;
$SummaPrKartaZ=0;
$TotalPr=0;
$TotalPrNal=0;
$TotalPrBNal=0;
$KolvoProd=0;
$SummaPr=0;
$SummaPrNal=0;
$SummaPrKarta=0;
$KolvoVz=0;
$SummaVz=0;
$SummaVzNal=0;
$SummaVzKarta=0;
//Более старые - не выводим
$nalvyv=1;
}
$shiftNumber = $item["shiftNumber"];
$KolvoClose = $KolvoClose+1;
$SummaPrZ = $SummaPrZ + $item["sum"];
$SummaPrNalZ = $SummaPrNalZ + $item["payments"][0]["sum"];
$SummaPrKartaZ = $SummaPrKartaZ + $item["payments"][1]["sum"];
}
elseif ($item["transactionType"]=="OPEN_SHIFT")
{$KolvoOpen = $KolvoOpen+1;}
elseif ($item["transactionType"]=="TICKET")
{
if ($shiftNumber<1)
{$shiftNumber = $item["shiftNumber"];}
if ($item["operationType"]==2)
{
$KolvoProd = $KolvoProd + 1;
$SummaPr = $SummaPr + $item["sum"];
$SummaPrNal = $SummaPrNal + $item["payments"][0]["sum"];
$SummaPrKarta = $SummaPrKarta + $item["payments"][1]["sum"];
}
else
{
//В общем плане "operationType" может быть равно не только 2 и 3, но у нас - только эти (2 - продажи, 3 - возвраты)
$KolvoVz=$KolvoVz+1;
$SummaVz = $SummaVz + $item["sum"];
$SummaVzNal = $SummaVzNal + $item["payments"][0]["sum"];
$SummaVzKarta = $SummaVzKarta + $item["payments"][1]["sum"];
}
};
}
if ($shiftNumber>0)
{
$strvyv = "Смена=".$shiftNumber."\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Продажи (сумма за смену) = " . $SummaPrZ . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Наличными (сумма за смену) = " . $SummaPrNalZ . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Картой (сумма за смену) = " . $SummaPrKartaZ . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
if ($KolvoProd>0 or $KolvoVz>0)
{
$TotalPr = $SummaPr-$SummaVz;
$TotalNal = $SummaPrNal-$SummaVzNal;
$TotalBNal = $SummaPrKarta-$SummaVzKarta;
if ($SummaPrZ<>0 or $SummaPrNalZ<>0 or $SummaPrKartaZ<>0)
{
if ((bccomp($TotalPr, $SummaPrZ, 2)<>0 or bccomp($TotalNal, $SummaPrNalZ, 2)<>0 or bccomp($TotalBNal, $SummaPrKartaZ, 2)<>0))
{
$strvyv = " Продажи (сверка за смену) = " . $SummaPrZ . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Наличными (сверка за смену) = " . $SummaPrNalZ . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Картой (сверка за смену) = " . $SummaPrKartaZ . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
}
}
$strvyv = " Продажи (чеков) = " . $KolvoProd . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Продажи (сумма) = " . $SummaPr . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Наличными = " . $SummaPrNal . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Картой = " . $SummaPrKarta . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Возвраты (чеков) = " . $KolvoVz . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Возвраты (сумма) = " . $SummaVz . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Наличными = " . $SummaVzNal . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
$strvyv = " Картой = " . $SummaVzKarta . "\n";
$strres .=$strvyv;
if ($nalvyv < 1)
{print $strvyv;}
}
}
print "Конец проверки чеков\n";
file_put_contents($fileres, $strres);
?>
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7384
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 49 раз
Взять кассу
Неа. Тут видимо будет тот же дурдом, что в своё время был в системах клиент-банк.
Т.е. каждый будет делать отсебятину и с пеной у рта доказывать, что это и есть пик интеллекта.
Потом, наверно, придут к какой-то общей спецификации REST интерфейса, если конечно раньше вся эта кормушка не прикроется.
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4625
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Еще интересная тема - удаленный мониторинг касс. Здесь очень к месту ip-драйвер. Есть 2 варианта. Либо запускать сервис ip-сервера на каждой кассе и коннектится с сервера по мере необходимости получить информацию, либо коннектится с кассы к серверу с определенной периодичностью. Я пока больше склоняюсь ко второму варианту, чтобы не ставить дополнительное ПО на кассы.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7384
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 49 раз
Взять кассу
Ну это же не мониторинг кассы (ФР) как таковой ... Вы же не подключатесь удалённо к самому ФР и не считываете из него данные.
Скорее - получение информации из БД кассовой программы, и здесь действительно возможна куча беcполезных вариантов.
Почему ? Да потому, что можно просто войти в личный кабинет оФД и получить всю информацию об операциях каждого ФР в режиме реального времени. Вы же сами недавно говорили о получении данных с сайта ОФД ...
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4625
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
При запуске кассовая программа производит проверку оборудования, в том числе считывает из фискальников различную информацию (количество не отправленных в офд документов, дату/время первого не отправленного документа, срок действия фн и тп.). Эта информация может сохраняться в базе данных и считываться системой мониторинга.
С личным кабинетом ОФД не все так просто. Во первых, когда касс и магазинов много (несколько десятков), то работать в личном кабинете негуманно. Можно наладить считывание информации из ОФД через их api. Но это тоже не дает всей нужной информации. Например, не все чеки могут быть отправлены в ОФД. Мониторить надо не только выручку. Например, различные сбойные ситуации (они пишутся кассовой программой в лог), размер базы данных, размер лога. Случаи отката платежных транзакций (чеки из базы никогда не удаляются, в случае отката у них остаются соответствующие признаки).
То есть, в учетной системе уже есть список касс. Добавляем ip-адрес, а затем в специальном диалоге жмем получение нужной информации и опрашиваем сразу все кассы во всех магазинах (или выборочно). Тут же можно и стукнуться в ОФД. Аналогичную систему мониторинга хорошо прикрутить и к рабочим местам товароведов. Обычно УТМ Егаис на их компьютерах установлен, там же его лог лежит, по которому можно контролировать прохождение алкогольных транзакций.
С личным кабинетом ОФД не все так просто. Во первых, когда касс и магазинов много (несколько десятков), то работать в личном кабинете негуманно. Можно наладить считывание информации из ОФД через их api. Но это тоже не дает всей нужной информации. Например, не все чеки могут быть отправлены в ОФД. Мониторить надо не только выручку. Например, различные сбойные ситуации (они пишутся кассовой программой в лог), размер базы данных, размер лога. Случаи отката платежных транзакций (чеки из базы никогда не удаляются, в случае отката у них остаются соответствующие признаки).
То есть, в учетной системе уже есть список касс. Добавляем ip-адрес, а затем в специальном диалоге жмем получение нужной информации и опрашиваем сразу все кассы во всех магазинах (или выборочно). Тут же можно и стукнуться в ОФД. Аналогичную систему мониторинга хорошо прикрутить и к рабочим местам товароведов. Обычно УТМ Егаис на их компьютерах установлен, там же его лог лежит, по которому можно контролировать прохождение алкогольных транзакций.
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7384
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 49 раз
Взять кассу
Безусловно, в таком большом хозяйстве, чем больше собирается информации - тем лучше.
И система протоколирования выполненных кассовых операций (а именно о ней идёт речь, а не о "мониторинге касс") - очень полезна.
Но дьявол, как обычно кроется в деталях. Чем больше мы собираем различных цифр по одному действию, тем выше вероятность их расхождения. Т.е. здесь нужно чётко понимать, что показывают те или иные цифры. Я уже видел фискальные чеки (и сумма прошла по Z-отчёту), которых "почему-то" нет в ОФД. Понятно, что вся эта система поборов с бизнеса за его счёт только отстраивается, и далее будет работать лучше, но всё равно будут какие-то расхождения на большой выборке данных …
Идеальной видится схема с двумя цифрами:
1. Первичный документ (фискальный чек)
2. Запрос в ОФД (а ещё лучше в ФНС) и получение списка зафиксированных операций.
Всё остальное, включая Z/X-отчёт, данные об операциях в ФН, различные журналы кассовой программы - просто промежуточные или рудиментные данные из старых схем учёта фискальных операций. Если бы эта система c он-лайн кассами была доведена до ума (а возможно когда-то так и будет), то всё это вообще некому не нужно, т.к. только вызывает путаницу …
И система протоколирования выполненных кассовых операций (а именно о ней идёт речь, а не о "мониторинге касс") - очень полезна.
Но дьявол, как обычно кроется в деталях. Чем больше мы собираем различных цифр по одному действию, тем выше вероятность их расхождения. Т.е. здесь нужно чётко понимать, что показывают те или иные цифры. Я уже видел фискальные чеки (и сумма прошла по Z-отчёту), которых "почему-то" нет в ОФД. Понятно, что вся эта система поборов с бизнеса за его счёт только отстраивается, и далее будет работать лучше, но всё равно будут какие-то расхождения на большой выборке данных …
Идеальной видится схема с двумя цифрами:
1. Первичный документ (фискальный чек)
2. Запрос в ОФД (а ещё лучше в ФНС) и получение списка зафиксированных операций.
Всё остальное, включая Z/X-отчёт, данные об операциях в ФН, различные журналы кассовой программы - просто промежуточные или рудиментные данные из старых схем учёта фискальных операций. Если бы эта система c он-лайн кассами была доведена до ума (а возможно когда-то так и будет), то всё это вообще некому не нужно, т.к. только вызывает путаницу …
За теми кто отстал - не возвращаться. (С) Кодекс
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4625
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Кому-то сникерсы по ночам снятся, кому-то девочки на гиперэкстензиях...
Пробовал получить чек на сервисе проверки чеков ФНС. В принципе, ничего сложного нет, там обычный http запрос с get параметрами, в качестве которых передаются номер ФП с чека и сумма. Но возвращается в ответ целая html-страничка, а не несколько байтиков. В принципе, можно, конечно, залить файлик со списком чеков (фд+сумма) на ftp и php-скриптом продергать их. Тогда не надо делать api разных ФД. Пробовать надо, насколько стабильно будет работать, а то таких умных много, положат сайт ФНС, если они не защищаются...
На самом деле ввести систему контролинга с использованием ip-драйвера не сложно, технология давно отработана. Ну, в течении дня не спеша базовый вариант собрать, а потом постепенно расширять набор функций диагностики. Скорее всего, админа придется привлекать, чтобы порт на роутерах пробрасывал, так как в магазинах выход в интернет может быть через роутеры.
Вопрос реальный. Пока один магазин наблюдаю, они немного чеков бьют. На следующей недели планируется запуск рабочего места в другом магазине. Там уже алкоголь, мультифирменность, весы, почти по полной программе. Тоже на пирите. Ждем фискальники штриха и атола, должны на недельку привезти для плотного тестирования. А потом процесс установок может стать массовым. И как-то стремно, если нет централизованного контроля. Хочется нажать на кнопку и увидеть, что происходит на всех подключенных кассах...
Пробовал получить чек на сервисе проверки чеков ФНС. В принципе, ничего сложного нет, там обычный http запрос с get параметрами, в качестве которых передаются номер ФП с чека и сумма. Но возвращается в ответ целая html-страничка, а не несколько байтиков. В принципе, можно, конечно, залить файлик со списком чеков (фд+сумма) на ftp и php-скриптом продергать их. Тогда не надо делать api разных ФД. Пробовать надо, насколько стабильно будет работать, а то таких умных много, положат сайт ФНС, если они не защищаются...
На самом деле ввести систему контролинга с использованием ip-драйвера не сложно, технология давно отработана. Ну, в течении дня не спеша базовый вариант собрать, а потом постепенно расширять набор функций диагностики. Скорее всего, админа придется привлекать, чтобы порт на роутерах пробрасывал, так как в магазинах выход в интернет может быть через роутеры.
Вопрос реальный. Пока один магазин наблюдаю, они немного чеков бьют. На следующей недели планируется запуск рабочего места в другом магазине. Там уже алкоголь, мультифирменность, весы, почти по полной программе. Тоже на пирите. Ждем фискальники штриха и атола, должны на недельку привезти для плотного тестирования. А потом процесс установок может стать массовым. И как-то стремно, если нет централизованного контроля. Хочется нажать на кнопку и увидеть, что происходит на всех подключенных кассах...
C6/C11, ШВС, tps/btrieve.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4625
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Взять кассу
Я думаю, это нереально. Там много всего тянется за продажами через кассу. Обмен с учетной системой, к примеру, никак не отменишь. Скорость обслуживания покупателей можно обеспечить, только если связь суперстабильная и быстрая. Если Егаис отменят. Кстати, в следующем году планируется ввод маркировки табачных изделий. Там будет через ОФД, дополнительный штрих-код сканироваться на кассах и передаваться. Не отдельно, как в Егаис, и это вполне разумно выглядит.Игорь Столяров писал(а): ↑04 Август 2018, 9:29 Идеальной видится схема с двумя цифрами:
1. Первичный документ (фискальный чек)
2. Запрос в ОФД (а ещё лучше в ФНС) и получение списка зафиксированных операций.
Всё остальное, включая Z/X-отчёт, данные об операциях в ФН, различные журналы кассовой программы - просто промежуточные или рудиментные данные из старых схем учёта фискальных операций. Если бы эта система c он-лайн кассами была доведена до ума (а возможно когда-то так и будет), то всё это вообще некому не нужно, т.к. только вызывает путаницу …
C6/C11, ШВС, tps/btrieve.
- Игорь Столяров
- Ветеран движения
- Сообщения: 7384
- Зарегистрирован: 07 Июль 2005, 10:19
- Откуда: г. Ростов-на-ДоМу
- Благодарил (а): 13 раз
- Поблагодарили: 49 раз
Взять кассу
Понятно, что система сбора фискальных данных многоуровневая, задействованы ФН, ОФД и т.д.
Важно, что должно быть ОДНО конечное место сбора информации с доступным сервисом.
Упрощённо говоря, что бы и продаван в полуподвальной алкашке и владелец бизнеса на яхте,
могли нажать одну и ту же кнопку и получить одинаковые операции и итог по фискальному обороту …
Фискальный чек и БД в ФНС - это результат. Всё, что между ними - это процесс, рабочие данные ...
Важно, что должно быть ОДНО конечное место сбора информации с доступным сервисом.
Упрощённо говоря, что бы и продаван в полуподвальной алкашке и владелец бизнеса на яхте,
могли нажать одну и ту же кнопку и получить одинаковые операции и итог по фискальному обороту …
Фискальный чек и БД в ФНС - это результат. Всё, что между ними - это процесс, рабочие данные ...
За теми кто отстал - не возвращаться. (С) Кодекс