Добрый вечер
https://advert-api.wildberries.ru/adv/v2/fullstats
Отдает по интервалу данные, которые не полностью совпадают с выгрузками из ЛК. Что-то совпадает рубль в рубль, что-то значительно отличается.
Таймзоны у метода случаем нет никакой? У кого-нибудь получается выгружать +- совпадающую с ЛК статистику по рекламе?
Эти методы
https://openapi.wb.ru/prices/api/ru/#tag/Spiski-tovarov/paths/~1api~1v2~1list~1goods~1filter/get
https://openapi.wb.ru/prices/api/ru/#tag/Spiski-tovarov/paths/~1api~1v2~1list~1goods~1size~1nm/get
Кажется в другом отчете где-то 2 поля всегда одинаковые. Даже в доке написано было в шапке метода. Не помню какой.
Читать полностью…Не интересовал этот спп никогда...
Сейчас посмотрел, весь год нули😅 Пардоньте...
А вот поля цен различаются довольно часто.
Читать полностью…
COALESCE(p.avg_ppvz_for_pay_by_fin_report, s.sales_amount_sum_without_spp) * (s.sales_count - COALESCE(rd.return_count, 0::bigint))::double precision - COALESCE(d.delivery_rub_avg, 118::double precision) * s.sales_count::double precision + COALESCE(rd.return_delivery_sum, 0::bigint)::double precision - COALESCE(ac.acceptance_sum, 0::double precision) - COALESCE(ps.paidstorage_sum, 0::double precision) - COALESCE(adv.adv_costs, 0::bigint)::double precision - COALESCE(s.sales_amount_sum_without_spp, 0::double precision) * tax.tax_rate::double precision - COALESCE(s.sales_count, 0::bigint)::double precision * COALESCE(ag.avg_last_two_prices, 0::double precision) - COALESCE(s.sales_count, 0::bigint)::double precision * COALESCE(ag.last_fulfillment, 0::double precision) AS "Прибыль",
ag.is_ours,
ag.article AS purchases_article,
COALESCE(ds.opencardcount_sum, 0::bigint) AS wb_opencardcount_sum,
COALESCE(ds.addtocartcount_sum, 0::bigint) AS wb_addtocartcount_sum
FROM sales_table s
FULL JOIN orders_data od ON od.nmid = s.nmid AND s.date = od.date AND s.supplier_name = od.supplier_name
LEFT JOIN ppvz_for_pay_table p ON s.nmid = p.nm_id
LEFT JOIN acceptance_data ac ON s.nmid = ac.nmid AND s.date = ac.date
LEFT JOIN delivery_data d ON s.nmid = d.nm_id AND s.supplier_name = d.supplier
LEFT JOIN paid_storage ps ON s.nmid = ps.nmid AND s.date = ps.date
LEFT JOIN adv_data adv ON s.nmid = adv.nm_id AND s.date = adv.adv_date
LEFT JOIN aggregateddata ag ON s.nmid = ag.nm_id AND s.supplier_name = ag.supplier
LEFT JOIN products.tax tax ON s.supplier_name = tax.supplier::text
LEFT JOIN return_delivery rd ON s.nmid = rd.nmid AND s.supplier_name = rd.supplier_name AND s.date = rd.date
LEFT JOIN detail_stat ds ON ds.nm_id = s.nmid AND s.supplier_name = ds.supplier AND s.date = ds.order_date;
Прошу судить не строго, я не претендую на опытного специалиста по SQL запросам
WITH sales_table AS (Читать полностью…
SELECT s_1.supplier_name,
s_1.nmid,
s_1.date::date AS date,
count(DISTINCT s_1.srid) AS sales_count,
sum(
CASE
WHEN s_1.spp = 0 THEN s_1.pricewithdisc
ELSE s_1.pricewithdisc - s_1.pricewithdisc * s_1.spp::double precision / 100::double precision
END) AS sales_amount_sum_without_spp
FROM reports.sales s_1
WHERE upper(s_1.saleid) ~~ 'S%'::text
GROUP BY s_1.supplier_name, s_1.nmid, (s_1.date::date)
), orders_data AS (
SELECT o.nmid,
o.date::date AS date,
o.supplier_name,
count(DISTINCT o.srid) AS orders_count,
sum(
CASE
WHEN o.spp = 0 THEN o.pricewithdisc
ELSE o.pricewithdisc - o.pricewithdisc * o.spp::double precision / 100::double precision
END) AS orders_amount_sum_without_spp
FROM reports.orders o
GROUP BY o.nmid, (o.date::date), o.supplier_name
), return_delivery AS (
SELECT s_1.nmid,
s_1.supplier_name,
s_1.date::date AS date,
count(DISTINCT s_1.srid) AS return_count,
count(DISTINCT s_1.srid) * 50 AS return_delivery_sum
FROM reports.sales s_1
WHERE s_1.saleid !~~ 'S%'::text
GROUP BY s_1.nmid, s_1.supplier_name, (s_1.date::date)
), ppvz_for_pay_table AS (
SELECT dfr.nm_id,
avg(dfr.ppvz_for_pay::double precision) AS avg_ppvz_for_pay_by_fin_report
FROM reports.detail_finance_reports dfr
WHERE upper(dfr.doc_type_name) = 'ПРОДАЖА'::text AND dfr.quantity = 1 AND upper(dfr.supplier_oper_name) = 'ПРОДАЖА'::text AND dfr.date_from::date >= (CURRENT_DATE - '30 days'::interval)
GROUP BY dfr.nm_id
), acceptance_data AS (
SELECT sum(t.acceptance_sum) AS acceptance_sum,
t.supplier,
t.nmid,
t.date
FROM ( SELECT a.supplier,
a.nmid,
a."shkсreatedate" AS date,
sum(a.total) AS acceptance_sum
FROM reports.acceptance a
GROUP BY a.nmid, a."shkсreatedate", a.supplier
HAVING sum(a.total) > 0::double precision
UNION ALL
SELECT cfi.supplier,
cfi.nmid,
cfi.createdat::date AS date,
sum(cfi.scanprice) AS acceptance_sum
FROM supplies.corrected_fbs_incomes cfi
WHERE cfi.scanprice >= 0::double precision AND cfi.scanprice IS NOT NULL AND cfi.scanprice <> 'NaN'::double precision
GROUP BY cfi.nmid, cfi.createdat, cfi.supplier
HAVING sum(cfi.scanprice) > 0::double precision) t
GROUP BY t.supplier, t.nmid, t.date
), delivery_data AS (
SELECT dfr.nm_id,
dfr.supplier,
avg(dfr.delivery_rub::double precision) AS delivery_rub_avg
FROM reports.detail_finance_reports dfr
WHERE dfr.nm_id <> 0 AND dfr.delivery_amount = 1 AND dfr.sale_dt::date >= (CURRENT_DATE - '30 days'::interval)
GROUP BY dfr.nm_id, dfr.supplier
), paid_storage AS (
SELECT ps_1.nmid,
ps_1.date,
ps_1.supplier,
sum(ps_1.warehouseprice) AS paidstorage_sum
FROM reports.paid_storage ps_1
GROUP BY ps_1.date, ps_1.nmid, ps_1.supplier
), adv_data AS (
SELECT af.adv_date,
af.supplier,
af.nm_id,
sum(af.views) AS adv_views_sum,
sum(af.clicks) AS adv_clicks_sum,
sum(af.atbs) AS adv_atbs_sum,
sum(af.orders) AS adv_orders_sum,
sum(af.sum) AS adv_costs
FROM analytics.adv_fullstats af
GROUP BY af.adv_date, af.supplier, af.nm_id
Я правильно понимаю, что самовыкупы и раздача помечаются своим значением supplier_oper_name в запросе reportDetailByPeriod?
Читать полностью…Ребят, выручите пожалуйста..
Мне нужно получить информацию по самовыкупам и раздачам, саггрегировать по номенклатуре за указанный период времени. Может кто-нибудь подсказать метод апи, на который стоит внимание обратить?
Добрый вечер.
Подскажите пожалуйста, как получить актуальные цены на по АПИ.
На данный момент получаю цены вот этим методом"/api/v1/supplier/stocks", но там только цены на товары, который есть на остатках. А каким методом можно получить все цены (даже ранее проданных товаров)?
Доброго дня! может кто подсказать где могу выгрузить спп для товаров в гугл таблицу? в открытх апи нет такой возможности. может у кого уде есть скрипт готовый
Читать полностью…Как заметил по поиску "СПП" в чате, ты много сталкивался..
Решил немного по подгонять и дошел до мини-формулки для рассчета спп:
spp =(retail_price - acquiring_fee - ppvz_sales_commission) * ppvz_spp_prc
Сильно отличаться от истины будет?
Где то была информация, вроде в новостях, что они ввели это поле, но они совпадают до особого распоряжения 😊
Читать полностью…Об этом подумал, но отгонял мысли. Не понял зачем два отличных параметра для одинаковых значения, правда
Обратная совместимость?
Ввиду сомнений о корректности значений от wb. Среди 100000 транзакций не нашел ни одной, у которой была бы разница между параметрами отличной от нуля (retail_price - retail_price_withdisc_rub). Хотя параметр ppvz_spp_prc отличен от нуля
Если говорить о смысле, то, как почитал в чате, стандартное желание заказчика увидеть
Читать полностью…
), rankeddata AS (
SELECT p_1.nm_id,
p_1.supplier,
p_1.is_ours,
p2.price,
p2.fulfillment,
p2.article,
row_number() OVER (PARTITION BY p_1.nm_id, p_1.supplier, p_1.is_ours ORDER BY p2.ctid DESC) AS rn,
rank() OVER (PARTITION BY p_1.nm_id, p_1.supplier, p_1.is_ours ORDER BY p2.ctid DESC) AS rnk_price
FROM products.products p_1
LEFT JOIN products.purchases p2 ON p_1.purchase_article = COALESCE(NULLIF(p2.article, ''::text), 'no_data'::text) AND p_1.supplier = p2.supplier
), aggregateddata AS (
SELECT rankeddata.nm_id,
rankeddata.supplier,
rankeddata.is_ours,
rankeddata.article,
avg(
CASE
WHEN rankeddata.rnk_price <= 2 THEN rankeddata.price
ELSE NULL::double precision
END) AS avg_last_two_prices,
max(
CASE
WHEN rankeddata.rn = 1 THEN rankeddata.fulfillment
ELSE NULL::double precision
END) AS last_fulfillment
FROM rankeddata
GROUP BY rankeddata.nm_id, rankeddata.supplier, rankeddata.is_ours, rankeddata.article
), detail_stat AS (
SELECT do2.order_date,
do2.nm_id,
do2.supplier,
sum(do2.opencardcount) AS opencardcount_sum,
sum(do2.addtocartcount) AS addtocartcount_sum
FROM analytics.detail_orders do2
GROUP BY do2.order_date, do2.nm_id, do2.supplier
)
SELECT s.supplier_name,
s.nmid,
s.date,
COALESCE(s.sales_count, 0::bigint) AS sales_count,
COALESCE(s.sales_amount_sum_without_spp, 0::double precision) AS sales_amount_sum_without_spp,
COALESCE(od.orders_amount_sum_without_spp, 0::double precision) AS orders_amount_sum_without_spp,
COALESCE(od.orders_count, 0::bigint) AS orders_count,
COALESCE(rd.return_count, 0::bigint) AS return_count,
COALESCE(p.avg_ppvz_for_pay_by_fin_report, s.sales_amount_sum_without_spp) * (s.sales_count - COALESCE(rd.return_count, 0::bigint))::double precision AS ppvz_for_pay_adj,
COALESCE(d.delivery_rub_avg, 118::double precision) * s.sales_count::double precision + COALESCE(rd.return_delivery_sum, 0::bigint)::double precision AS delivery_rub_avg,
COALESCE(ac.acceptance_sum, 0::double precision) AS acceptance_sum,
COALESCE(ps.paidstorage_sum, 0::double precision) AS paidstorage_sum,
COALESCE(adv.adv_views_sum, 0::bigint) AS adv_views_sum,
COALESCE(adv.adv_orders_sum, 0::bigint) AS adv_orders_sum,
COALESCE(adv.adv_atbs_sum, 0::bigint) AS adv_atbs_sum,
COALESCE(adv.adv_clicks_sum, 0::bigint) AS adv_clicks_sum,
COALESCE(adv.adv_costs, 0::bigint) AS adv_costs,
COALESCE(ag.avg_last_two_prices, 0::double precision) AS avg_last_two_prices,
COALESCE(ag.last_fulfillment, 0::double precision) AS last_fulfillment,
COALESCE(s.sales_count, 0::bigint)::double precision * COALESCE(ag.avg_last_two_prices, 0::double precision) AS amount_of_purchases,
COALESCE(s.sales_count, 0::bigint)::double precision * COALESCE(ag.last_fulfillment, 0::double precision) AS amount_of_fulfillment,
COALESCE(p.avg_ppvz_for_pay_by_fin_report, s.sales_amount_sum_without_spp) * (s.sales_count - COALESCE(rd.return_count, 0::bigint))::double precision - COALESCE(d.delivery_rub_avg, 118::double precision) * s.sales_count::double precision + COALESCE(rd.return_delivery_sum, 0::bigint)::double precision - COALESCE(ac.acceptance_sum, 0::double precision) - COALESCE(ps.paidstorage_sum, 0::double precision) - COALESCE(adv.adv_costs, 0::bigint)::double precision AS "Маржа",
COALESCE(s.sales_amount_sum_without_spp * tax.tax_rate::double precision, 0::double precision) AS "Сумма налогов",
А зачем вычислять СПП(ppvz_spp_prc), если он итак там уже есть?
Не понятен сам вопрос....
Можно flag=0, но тогда обратите внимание на его описание, что вы будете получать ...
Читать полностью…