Quad.Wiki
Форма просмотра отчетов
Существует множество разных отчетов, которые бы хотели видеть пользователи. Предусмотреть все отчеты в программе просто невозможно. Для этих целей разработан функционал по отображения произвольных данных программы в нужном пользователю виде.
Помимо данных программы (прайсы, товары, цены, группы товаров, бренды, история изменений и т.п.) можно загрузить любую другую информацию, такую как данные о продажах товаров, данные о заказах, данные о посещаемости сайта, расходах на рекламу и т.д. Все эти данные можно увязать между собой для построения отчета.
Отчет строится при помощи SQL-запросов. В данной инструкции есть примеры простых запросов для отчетов. Любые другие отчеты настраиваются нашими специалистами платно, 20$ за 1 отчет, если на его разработку и настройку потребуется не больше 1 часа, +10$ за каждые 30 минут сверх этого времени.
Открыть отчеты можно через меню Quad.Magic / Отчеты
Редактор запросов - через этот пункт можно создать новые отчеты, данный пункт доступен только пользователю Admin.
Ниже этого пункта отображаются отчеты, доступные пользователю для просмотра.
Примеры отчетов, настроенных у пользователя:
Прибыль по группам товаров - отчет отображает прибыль по группам товаров, количество проданных товаров в группе, к отчету так же прикреплена информация о посещаемости данной группы товаров на сайте.
Часто продаваемые товары которых Нет в наличии - список товаров, которых продано больше 10 штук и получена прибыль больше определенной суммы, но при этом на данный момент их нет в наличии.
Из отчета можно зайти в карточку товара или попробовать привязать его к другим прайсам, возможно этот товар у кого-то есть в наличии, но не связан. В отчете отображается дата, когда товар был последний раз в наличии и список поставщиков, у кого он был.
В отчетах можно группировать, сортировать и фильтровать данные в произвольном виде. Отчет отображает суммы по каждой полученной группе.
Данные можно выделить и скопировать в Excel (ctrl-C и ctrl-V)
Сформировать можно абсолютно любой отчет с любыми данными, если вы эти данные можете выгрузить в Excel или CSV, а так же сформулировать логику отчета, четкое ТЗ, что в какой колонке должно отображаться и как рассчитываться.
Добавление отчета
Для добавления отчета зайдите в программу под пользователем Admin и откройте Редактор запросов.
Нажмите кнопку с тремя точками
Нажмите Добавить
Сделайте отчет активным и введите его название
В колонке Доп возможны следующие значения:
PRD - если в результате в отчете будут товары собственного каталога, чтобы было доступно меню для работы со своими товарами
PRS - если в результате в отчете будут товары из прайсов поставщиков, чтобы было доступно меню для работы с товарами из прайсов поставщиков.
Дальше кликните 2 раза по ячейке Запрос - откроется окно, в которое можно вставить текст запроса
Добавьте запрос и нажмите Ок.
Сохраните изменения.
В колонке Доступ вы можете установить список ИД пользователей, через запятую, которым будет доступен отчет. Ид пользователя можно посмотреть под пользователем Admin во вкладке Конфигурация / внизу Пользователи.
Если ввести ALL, то отчет будет доступен всем пользователям.
После завершения редактирования выберите отчет в списке и нажмите Ок (кнопка с птичкой).
Пример для вывода отчета со списком товаров, отобранных через Автозаполнение
1. Для отчета вам нужно создать пользовательское поле Добавление пользовательского поля , например число, и заполнить его какими-то значениями, в зависимости от условий автозаполнения Автозаполнение полей
Например, я заполнил поле Доставка (дней) какими-то значениями и хочу посмотреть товары, у которых доставка равна 0 дней.
2. Добавьте новый запрос для отчета, как описано выше. В ячейку запроса введите следующий запрос:
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
В предпоследней строке запроса - фильтр по полю, которое я заполнил через Автозаполнение.
and p.f_3us15cv75 = 0
- здесь нужно поменять на ваш код поля и ваше условие.
Код поля можно посмотреть во вкладке Конфигурация / внизу Доп. поля.
Запрос отобразит поля Группа, Код, Бренд, Модель, Товар, Цена, Наличие и Поставщики (список поставщиков у которых товар в наличии) для товаров у которых срок доставки равен 0.
Пример для вывода отчета по товарам, по которым не соблюдается РЦ для основной цены
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%, при этом цена равна или меньше конкурентов
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