...
Отчет строится при помощи SQL-запросов. В данной инструкции есть примеры простых запросов для отчетов. Любые другие отчеты настраиваются нашими специалистами платно, 20$ за 1 отчет, если на его разработку и настройку потребуется не больше 1 часа, +10$ за каждые 30 минут сверх этого времени.
...
В отчетах можно группировать, сортировать и фильтровать данные в произвольном виде. Отчет отображает суммы по каждой полученной группе.
...
...
Данные можно выделить и скопировать в Excel (ctrl-C и ctrl-V)
Note |
---|
Сформировать можно абсолютно любой отчет с любыми данными, если вы эти данные можете выгрузить в Excel или CSV, а так же сформулировать логику отчета, четкое ТЗ, что в какой колонке должно отображаться и как рассчитываться. |
...
Сохраните изменения.
...
В колонке Доступ вы можете установить список ИД пользователей, через запятую, которым будет доступен отчет. Ид пользователя можно посмотреть под пользователем Admin во вкладке Конфигурация / внизу Пользователи.
...
Если ввести ALL, то отчет будет доступен всем пользователям.
После завершения редактирования выберите отчет в списке и нажмите Ок (кнопка с птичкой).
...
2. Добавьте новый запрос для отчета, как описано выше. В ячейку запроса введите следующий запрос:
Code Block | ||
---|---|---|
| ||
select p.id, g.caption as "Группа", p.code as "Код", m.title as "Бренд", p.article as "Модель", p.title as "Товар", p.price as "Цена", (select e.title from c_exists e where e.id = p.is_exists) as "Наличие", (select string_agg(distinct pr.title, ', ') from price_detail pd, price pr where pd.product_id = p.id and pd.is_exists <> 2 and pr.id = pd.price_id and pr.is_active = 1 and pr.price_type in (1,3)) as "Поставщики" from product p, c_manufacture m, product_category_connect pcc, product_category g where m.code = p.manuf_code and g.id = pcc.cat_id and pcc.prod_id = p.id and pcc.is_main = 1 and p.f_3us15cv75 = 0 group by p.id, g.caption, p.code, m.title |
...
Запрос отобразит поля Группа, Код, Бренд, Модель, Товар, Цена, Наличие и Поставщики (список поставщиков у которых товар в наличии) для товаров у которых срок доставки равен 0.
Пример для вывода отчета по товарам, по которым не соблюдается РЦ для основной цены
Code Block | ||
---|---|---|
| ||
select
c.caption as "Группа",
m.title as "Бренд",
p.title as "Товар",
p.price as "Цена",
pd.fixed_price as "РРЦ",
round((p.price - pd.fixed_price)::numeric, 2) as "Откл.",
pr.title as "Прайс",
(select e.title from c_exists e where pd.is_exists = e.id) as "Наличие в прайсе"
from product p, product_category c, product_category_connect pcc,
price_detail pd,
c_manufacture m, price pr
where pd.product_id = p.id
and m.code = p.manuf_code
and pr.id = pd.price_id
and pcc.cat_id = c.id
and pcc.prod_id = p.id
and pcc.is_main = 1
and pr.use_rc = 1
and pr.is_active = 1
and pd.fixed_price > 0
and pd.fixed_price <> p.price
order by p.price - pd.fixed_price desc |
Пример отчета по товарам, у которых маржа больше 100р и наценка больше 30%, при этом цена равна или меньше конкурентов
Code Block | ||
---|---|---|
| ||
select p.id as ID, pc.caption as "Группа", m.title as "Бренд", p.title as "Товар", p.article as "Модель", round(p.price::numeric, 2) as "Цена", round(p.input_price::numeric, 2) as "Опт", round(((p.price - p.input_price)/p.price * 100)::numeric, 2) as "Рент. %", round((p.price - p.input_price)::numeric, 2) as "Маржа", ppr.title as "Поставщик", pe.title as "Наличие", (select string_agg(concat(round(pd.price::numeric, 2), ' ', cr.code, ' ', e.title, ' ост:', pd.exists_text, ' --> ', pr.title), chr(10)) from price_detail pd, price pr, curr cr, c_exists e where pr.id = pd.price_id and pd.is_exists <> 2 and pr.price_type in (1, 3) and pd.product_id = p.id and pd.price_id <> p.price_id and cr.id = pd.price_curr_id and e.id = pd.is_exists) as "Другие поставщики" from product p, product_category pc, product_category_connect pcc, c_manufacture m, price ppr, c_exists pe where pcc.prod_id = p.id and pcc.cat_id = pc.id and pcc.is_main = 1 and p.price_id = ppr.id and pe.id = p.is_exists and m.code = p.manuf_code and p.input_price > 0 and p.price > 0 and p.is_exists <> 2 and p.price_compare in (1,2) and p.price - p.input_price >= 100 and (p.price - p.input_price)/p.price * 100 >= 30 order by p.price - p.input_price desc |