+7 499 990-10-21

Журнал Чеков или как узнать, прошел ли чек по базе?

Журнал Чеков или как узнать, прошел ли чек по базе?

Сообщение Altez » 31 мар 2012, 00:35

В 1с: есть надпись "чек пробит" и номер чека ккм, его видно из формы ЧекаККМ, если тот прошел по ккм,
а также врожденный признак проведения документа по базе.

Как ориентироваться в Дэнси:Кассе при скачках электричества(логи неудобно)?

пока костыль для просмотра транзакций из 1с:
http://infostart.ru/public/123343/
или http://0tri.ru/vit-upload/-/postgress.epf
Изображение
Altez
 
Постов: 286
Зарегистрирован: 13 июн 2011, 22:37
Откуда: Астрахань

Re: Журнал Чеков или как узнать, прошел ли чек по базе?

Сообщение turboatom » 07 апр 2012, 02:43

Ругается 1с
{Форма.Форма.Форма(7)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию
Поставил mysql-connector-odbc-5.1.9-winx64.msi, тоже самое. И еще вопрос порт 5432 это по умолчанию?
psqlodbc_08_03_0400.zip помогло=)
turboatom
 
Постов: 60
Зарегистрирован: 06 май 2011, 02:24

Re: Журнал Чеков или как узнать, прошел ли чек по базе?

Сообщение Altez » 07 апр 2012, 18:55

тестил на дефолтной Дэнси1.2.6.п5, настройки с неё, ну так пошло всё?
есть планы добавить подсчет сумм, снятие отчета и отправку товаров на кассу, отпишитесь если кому тоже надо, может быстрей дело пойдет, себя всегда лень автоматизировать
Altez
 
Постов: 286
Зарегистрирован: 13 июн 2011, 22:37
Откуда: Астрахань

Re: Журнал Чеков или как узнать, прошел ли чек по базе?

Сообщение Rafta » 08 апр 2012, 19:47

Можно сделать так:
1. устанавливаем dblink:
Система -> Администрирование -> Менеджер пакетов Synaptic
вводим пароль
в поле быстрого поиска вводим dblink
отмечаем пакет postgresql-contrib-8.4
жмем кнопку Применить
Перезагружаем PostgreSQL-сервер:
sudo /etc/init.d/postgresql restart
В терминале набираем:
kassir@kassa1:~$ psql -U kassir -h 127.0.0.1 LinCash < /usr/share/postgresql/8.4/contrib/dblink.sql

2. создаем представление transaction_explain, выполнив команду в терминале:
Код: Выделить всё
psql Transaction -c "CREATE OR REPLACE VIEW transaction_explain AS (SELECT a.n_transaction, a.tr_date_time, a.tr_type, b.name, a.check_type, a.code, a.code_tax_group, a.code_tax_rate, a.payment_type, a.card_code, a.value_1, a.value_2, a.reduction_type, a.reduction_info, a.auto_scheme_id, a.gain, a.barcode, a.protokol_type, a.round_sum, a.manager, a.n_pc, a.n_kkm, a.seller, a.n_session, a.n_check, a.n_doc FROM transaction a, transaction_type b WHERE (a.tr_type = b.tr_type));"


3. создаем представление kassa_transactions, выполнив команду в терминале:
Код: Выделить всё
psql LinCash -c "CREATE OR REPLACE VIEW kassa_transactions AS (SELECT a.n_transaction, a.tr_date_time, a.tr_type, a.name, a.check_type, a.code, a.code_tax_group, a.code_tax_rate, a.payment_type, a.card_code, a.value_1, a.value_2, a.reduction_type, a.reduction_info, a.auto_scheme_id, a.gain, a.barcode, a.protokol_type, a.round_sum, a.manager, a.n_pc, a.n_kkm, a.seller, a.n_session, a.n_check, a.n_doc FROM dblink('hostaddr=127.0.0.1 port=5432 dbname=Transaction user=kassir'::text, 'SELECT * FROM transaction_explain  '::text) a(n_transaction integer, tr_date_time timestamp without time zone, tr_type integer, name text, check_type integer, code text, code_tax_group integer, code_tax_rate integer, payment_type integer, card_code text, value_1 numeric(15,3), value_2 numeric(15,3), reduction_type integer, reduction_info text, auto_scheme_id integer, gain text, barcode text, protokol_type integer, round_sum numeric(15,3), manager integer, n_pc integer, n_kkm integer, seller integer, n_session integer, n_check integer, n_doc integer));"


4. создаем представление sales_11_55, выполнив команду в терминале:
Код: Выделить всё
psql LinCash -c "CREATE OR REPLACE VIEW sales_11_55 AS (SELECT a.n_transaction, to_char(a.tr_date_time,'DD-MM-YYYY')AS salesdate, to_char(a.tr_date_time,'HH24:MI') as salestime, a.tr_type, a.name, a.check_type, a.code, b.longtitle, a.code_tax_group, a.code_tax_rate, a.payment_type, a.card_code, a.value_2 as amount, a.value_1 as price, a.value_2*a.value_1 as summa, a.reduction_type, a.reduction_info, a.auto_scheme_id, a.gain, a.barcode, a.protokol_type, a.round_sum, a.manager, a.n_pc, a.n_kkm, a.seller, a.n_session, a.n_check, a.n_doc FROM kassa_transactions a LEFT JOIN ware b ON a.code = b.internal_id WHERE (a.tr_type = 11 OR a.tr_type = 55));"


пункты 1. - 4. делаем один раз

5. теперь для получения отчета за текущий день по чекам выполняем команду
Код: Выделить всё
psql LinCash -c "SELECT CASE WHEN tr_type = 11 THEN salesdate ELSE '----------' END as Дата, CASE WHEN tr_type = 11 THEN salestime ELSE '-----' END as Время, CASE WHEN tr_type = 11 AND check_type = 0 THEN 'Продажа' WHEN tr_type = 11 AND check_type = 1 THEN 'Возврат' ELSE '-------' END as Вид_чека, CASE WHEN tr_type = 11 THEN longtitle ELSE '---------------------------------------------------------------------------------' END as Товар, CASE WHEN tr_type = 11 THEN to_char(amount,'99D999') ELSE '-------' END as Кол_во, CASE WHEN tr_type = 11 THEN to_char(price,'9999D99') ELSE '--------' END as Цена, CASE WHEN tr_type = 11 THEN to_char(summa,'"_"99999D99') WHEN tr_type = 55 THEN to_char(amount,'"+"99999D99') ELSE NULL END as Сумма FROM sales_11_55 WHERE salesdate=to_char(now(),'DD-MM-YYYY') ORDER by n_transaction;" > DayReport.txt && gedit DayReport.txt


последнюю команду мы повесили на кнопку, которую создали на панели рядом с меню.
Ubuntu 10.10 \ Дэнси-Касса 1.2.6.p.8\ 1С v7.7\ протокол обмена Атол\ Без ФР \ сканер Metrologic Orbit 7120
Аватара пользователя
Rafta
 
Постов: 263
Зарегистрирован: 29 апр 2011, 14:07

Re: Журнал Чеков или как узнать, прошел ли чек по базе?

Сообщение Rafta » 10 апр 2012, 17:19

Без создания дополнительных представлений отчет по чекам за текущий день дает следующая команда, запущенная в терминале:
Код: Выделить всё
psql LinCash -c "SELECT CASE WHEN a.tr_type = 11 THEN to_char(a.n_check,'9999') ELSE '-----' END as Чек, CASE WHEN a.tr_type = 11 THEN to_char(a.tr_date_time,'HH24:MI') ELSE '-----' END as Время, CASE WHEN a.tr_type = 11 AND a.check_type = 0 THEN 'Продажа' WHEN a.tr_type = 11 AND a.check_type = 1 THEN 'Возврат' ELSE '-------' END as Вид_чека, CASE WHEN tr_type = 11 THEN b.longtitle ELSE '---------------------------------------------------------------------------------' END as Товар,CASE WHEN a.tr_type = 11 THEN to_char(a.value_2,'99D999') ELSE '-------' END as Кол_во, CASE WHEN tr_type = 11 THEN to_char(a.value_1,'9999D99') ELSE '--------' END as Цена, CASE WHEN tr_type = 11 THEN to_char(a.value_2*a.value_1,'"_"99999D99') WHEN tr_type = 55 THEN to_char(a.value_2,'"+"99999D99') ELSE NULL END as Сумма FROM dblink('hostaddr=127.0.0.1 port=5432 dbname=Transaction user=kassir'::text, 'SELECT n_transaction, tr_date_time, tr_type, check_type, code, value_1, value_2, n_check, n_doc FROM transaction '::text) a(n_transaction integer, tr_date_time timestamp without time zone, tr_type integer, check_type integer, code text, value_1 numeric(15,3), value_2 numeric(15,3), n_check integer, n_doc integer) LEFT JOIN ware b ON a.code = b.internal_id WHERE (a.tr_type = 11 OR a.tr_type = 55) AND to_char(a.tr_date_time,'DD-MM-YYYY') = to_char(now(),'DD-MM-YYYY') ORDER by n_transaction;" > DayReport.txt && gedit DayReport.txt
Ubuntu 10.10 \ Дэнси-Касса 1.2.6.p.8\ 1С v7.7\ протокол обмена Атол\ Без ФР \ сканер Metrologic Orbit 7120
Аватара пользователя
Rafta
 
Постов: 263
Зарегистрирован: 29 апр 2011, 14:07

Re: Журнал Чеков или как узнать, прошел ли чек по базе?

Сообщение Alexander » 10 апр 2012, 17:51

Здорово.
У меня только некоторые сомнения по поводу транзакций с типом 11, которые относятся к чекам с завершающими транзакциями 56 (отмена чека), 57 (отложенный чек) и 58 (восстановленный чек) - не попадут ли такие транзакции в этот отчет?
Alexander
 
Постов: 4958
Зарегистрирован: 16 авг 2009, 23:34
Откуда: Техподдержка ГК ДЭНСИ

Re: Журнал Чеков или как узнать, прошел ли чек по базе?

Сообщение Rafta » 10 апр 2012, 17:58

Об этом как-то не подумали, будем пробовать.
Ubuntu 10.10 \ Дэнси-Касса 1.2.6.p.8\ 1С v7.7\ протокол обмена Атол\ Без ФР \ сканер Metrologic Orbit 7120
Аватара пользователя
Rafta
 
Постов: 263
Зарегистрирован: 29 апр 2011, 14:07

Re: Журнал Чеков или как узнать, прошел ли чек по базе?

Сообщение Rafta » 11 апр 2012, 08:10

Alexander писал(а):Здорово.
У меня только некоторые сомнения по поводу транзакций с типом 11, которые относятся к чекам с завершающими транзакциями 56 (отмена чека), 57 (отложенный чек) и 58 (восстановленный чек) - не попадут ли такие транзакции в этот отчет?

С учетом Ваших замечаний
Код: Выделить всё
psql LinCash -c "SELECT * FROM (SELECT
CASE WHEN a.tr_type = 11 THEN to_char(a.n_check,'9999') ELSE '-----' END as Чек,
CASE WHEN a.tr_type = 11 THEN to_char(a.tr_date_time,'HH24:MI:SS') ELSE '--------' END as Время,
CASE WHEN a.tr_type = 11 AND a.check_type = 0 THEN 'Продажа' WHEN a.tr_type = 11 AND a.check_type = 1 THEN 'Возврат' ELSE '-------' END as Вид_чека,
CASE WHEN tr_type = 11 THEN b.longtitle ELSE '---------------------------------------------------------------------------------' END as Товар,
CASE WHEN a.tr_type = 11 THEN to_char(a.value_2,'999D999') ELSE '--------' END as Кол_во,
CASE WHEN tr_type = 11 THEN to_char(a.round_sum/a.value_2,'9999D99') ELSE '--------' END as Цена,
CASE WHEN tr_type = 11 THEN to_char(a.round_sum,'"_"99999D99') WHEN tr_type = 55 THEN to_char(a.value_2,'"+"99999D99') WHEN tr_type = 56 THEN 'отмена'  WHEN tr_type = 57 THEN 'отложен'  WHEN tr_type = 58 THEN 'восстановлен' ELSE NULL END as Сумма,
MAX(a.tr_type)
OVER (PARTITION BY a.tr_date_time)  as sales
FROM dblink('hostaddr=127.0.0.1 port=5432 dbname=Transaction user=kassir'::text, 'SELECT n_transaction, tr_date_time, tr_type, check_type, code, value_1, value_2, round_sum, n_check, n_doc FROM transaction '::text) a(n_transaction integer, tr_date_time timestamp without time zone, tr_type integer, check_type integer, code text, value_1 numeric(15,3), value_2 numeric(15,3), round_sum numeric(15,3), n_check integer, n_doc integer)
LEFT JOIN ware b ON a.code = b.internal_id
WHERE (a.tr_type = 11 OR a.tr_type = 55 OR a.tr_type = 56 OR a.tr_type = 57 OR a.tr_type = 58) AND to_char(a.tr_date_time,'DD-MM-YYYY') = to_char(NOW(),'DD-MM-YYYY')
ORDER by n_transaction) as monstr WHERE monstr.sales=55;"> DayReport.txt && gedit DayReport.txt
Ubuntu 10.10 \ Дэнси-Касса 1.2.6.p.8\ 1С v7.7\ протокол обмена Атол\ Без ФР \ сканер Metrologic Orbit 7120
Аватара пользователя
Rafta
 
Постов: 263
Зарегистрирован: 29 апр 2011, 14:07

Re: Журнал Чеков или как узнать, прошел ли чек по базе?

Сообщение vvshevelev » 24 апр 2012, 11:48

Написали простенький веб интерфейс для просмотра журнала транзакций по кассе.

С его помощью можно только просматривать активность по кассе

Написано на yii+bootstrap

Инсталяция:
1. Зависимости - apache2, php5 php5-pgsql (на убунту apt-get install php5-pgsql apache2)
2. Далее разархивируем в каталог вебсервера обе папки, и поправим в файле ./cash/protected/config/main.php 71 строку - в ней нужно прописать IP адрес хоста с базой. ВАЖНО если зост не локальный, то нужно разрешить удаленные подключения к POSTGRESQL

Для подключения в браузере открываем http://IPADRESS/cash/

Вариант использования
На компьютере оператора магазина(очевидно на любом) в папку /var/www
разархивировали все, а затем папку cash скопировали в папки с номерами касс, получилось
..
21
22
...
framework

и далее в каждой папке поправили настройки подключения к кассе (ее адресс)

теперь подключаемся к компу вводим номер кассы (например http://192.168.1.4/21/) и видим список транзакций по выбранной кассе
Вложения
cash.tar.bz2
(3.26 МБ) Скачиваний: 464
vvshevelev
 
Постов: 30
Зарегистрирован: 13 фев 2012, 20:11

Re: Журнал Чеков или как узнать, прошел ли чек по базе?

Сообщение oldbay » 11 авг 2012, 22:36

vvshevelev писал(а):Написали простенький веб интерфейс для просмотра журнала транзакций по кассе.

С его помощью можно только просматривать активность по кассе

Написано на yii+bootstrap


archlinux
php 5.4.5
apache 2.2.22
получаю вот такую каку:

Код: Выделить всё
PHP notice

Undefined variable: form

/srv/http/cash/protected/views/transaction/admin.php(38)

26     'action'=>Yii::app()->createUrl($this->route),
27     'method'=>'get',
28     'id'=>'inlineForm',
29     'type'=>'inline',
30     'htmlOptions'=>array('class'=>'well','style'=>'padding: 10px;margin: 0px;'),
31 ));
32
33 ?>
34
35 <?php
36 $list=CHtml::listData(Transaction::model()->findAllBySql('SELECT n_session,tr_date_time FROM transaction WHERE tr_type=62'),'n_session','fullsession');
37 asort($list);
38 echo $form->dropDownListRow($model,'n_session',array(''=>'Все')+$list,array('style'=>'width:150px;'));
39
40 echo CHtml::htmlButton('<i class="icon-ok icon-white"></i> Показать', array('class'=>'btn btn-primary', 'type'=>'submit')); ?>
41 <?php $this->endWidget(); ?>
42     
43 <table class="table table-bordered table-condensed">
44 <thead>
45 <tr>
46 <th style="width:370px;"></th><th style="width:130px;"></th></th><th ></th>
47 </tr>
48 </thead>


Код: Выделить всё
$form->dropDownListRow($model,'n_session',array(''=>'Все')+$list,array('style'=>'width:150px;'));

выделено как ошибка

п.с:
lamp настроен и функционирует
oldbay
 
Постов: 28
Зарегистрирован: 10 апр 2012, 04:05

След.

Вернуться в Интеграция с различным товароучетным ПО

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


cron

Кто сейчас на конференции

Сейчас посетителей на конференции: 2, из них зарегистрированных: 0, скрытых: 0 и гостей: 2 (основано на активности пользователей за последние 5 минут)
Больше всего посетителей (170) здесь было 16 май 2020, 01:50

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2