USE [mag_pbi]
GO

/****** Object:  View [analytics].[deficit_orders]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[deficit_orders] AS

	SELECT 
		  [scenario_id]			as [scenario_id]
		  , 'Дефицит'			as [status]
		  , d.[1c_id]
		  , [place_month]		as [order_date]
		  , 'руб.'				as [currency]
		  , d.[code]	
		  , [order_qty]
		  , n.[Цена учетная, руб]	as [price]
		  , d.order_qty * n.[Цена учетная, руб]	as [sum]
		  , [arrival_month]
	  FROM [mag_pbi].[analytics].[deficit_proposal] d
		INNER JOIN pbi.nomenclature n  ON n.[1c_id] = d.[1c_id]
GO

/****** Object:  View [analytics].[doprekvizit]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[doprekvizit]
AS
SELECT
    CASE WHEN i._Marked = 0x00 THEN 0 ELSE 1 END AS [ПометкаУдаления],
    i._Type                                      AS [ТипЗначения],
    i._Fld28453                                  AS [ТипЗначенияВнешнейСистемы],
    i._Fld17721                                  AS [description],
    LOWER(
        CONCAT(
            SUBSTRING(h.hex, 25,  8), '-',
            SUBSTRING(h.hex, 21,  4), '-',
            SUBSTRING(h.hex, 17,  4), '-',
            SUBSTRING(h.hex,  1,  4), '-',
            SUBSTRING(h.hex,  5, 12)
        )
    )                                            AS [uid],
    i._Fld28554                                  AS [ИмяВоВнешнейСистеме],
    CASE i._Fld28553 WHEN 0x01 THEN 1 ELSE 0 END AS [ВыгружатьВоВнешниеСистемы],
    CASE i._Fld33511 WHEN 0x01 THEN 1 ELSE 0 END AS [ВыгружатьНаСайт],
    CASE i._Fld28529 WHEN 0x01 THEN 1 ELSE 0 END AS [ФильтрНаСайте],
    CASE i._Fld28530 WHEN 0x01 THEN 1 ELSE 0 END AS [ОтображатьНаСайте],
    CASE i._Fld27792 WHEN 0x01 THEN 1 ELSE 0 END AS [АТС_НеПроверять],
    CASE i._Fld17724 WHEN 0x01 THEN 1 ELSE 0 END AS [ЗаполнятьОбязательно]
FROM MAG_2019.dbo._Chrc1109 AS i
CROSS APPLY (SELECT CONVERT(varchar(36), i._IDRRef, 2) AS hex) AS h;
GO

/****** Object:  View [analytics].[doprekvizitvalues]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[doprekvizitvalues]
AS
SELECT
    n._Code                                     AS [code],
    'DopRekvizit'                               AS [type],

    -- GUID r._Reference188_IDRRef в текстовом виде (uid)
    LOWER(
        SUBSTRING(h.hex_ref,25,8) + '-' +
        SUBSTRING(h.hex_ref,21,4) + '-' +
        SUBSTRING(h.hex_ref,17,4) + '-' +
        SUBSTRING(h.hex_ref, 1,4) + '-' +
        SUBSTRING(h.hex_ref, 5,12)
    )                                           AS [uid],

    r._Reference188_IDRRef                      AS [uid_bin],
    r._Fld21137RRef                             AS [value_bin],
    r._Fld21137RRef                             AS [name_uid_bin],

    -- GUID r._Fld21137RRef в текстовом виде (name_uid)
    LOWER(
        SUBSTRING(h.hex_name,25,8) + '-' +
        SUBSTRING(h.hex_name,21,4) + '-' +
        SUBSTRING(h.hex_name,17,4) + '-' +
        SUBSTRING(h.hex_name, 1,4) + '-' +
        SUBSTRING(h.hex_name, 5,12)
    )                                           AS [name_uid],

    c._Fld17721                                 AS [name],

   pbi.get_rekvizit_value(
        r._Reference188_IDRRef,
        r._Fld21137RRef,
        r._Fld21138_TYPE,
        r._Fld21138_L,
        r._Fld21138_N,
        r._Fld21138_T,
        r._Fld21138_S,
        r._Fld21138_RTRef,
        r._Fld21138_RRRef
    )                                           AS [value]
FROM MAG_2019.dbo._Reference188_VT21135X1 AS r
INNER JOIN MAG_2019.dbo._Reference188X1     AS n ON r._Reference188_IDRRef = n._IDRRef
INNER JOIN MAG_2019.dbo._Chrc1109           AS c ON c._IDRRef             = r._Fld21137RRef
CROSS APPLY (
    SELECT
        CONVERT(varchar(36), r._Reference188_IDRRef, 2) AS hex_ref,
        CONVERT(varchar(36), r._Fld21137RRef,     2)    AS hex_name
) AS h;
GO

/****** Object:  View [analytics].[ForecastBasesKs]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[ForecastBasesKs] AS
WITH MaxDate AS (
    SELECT MAX(Период) AS max_date
    FROM [pbiProd].[СводныйСебестоимость Для PBI]
    WHERE Статья = 'реализация'
),
LastFullMonth AS (
    SELECT 
        YEAR(DATEADD(MONTH, -1, max_date)) AS last_year,
        MONTH(DATEADD(MONTH, -1, max_date)) AS last_month
    FROM MaxDate
),

-- 1. Продажи по SKU × месяц
Sales AS (
    SELECT
        artic_id,
        YEAR(Период) AS Год,
        MONTH(Период) AS Месяц,
        SUM(Количество) AS total_sales
    FROM [pbiProd].[СводныйСебестоимость Для PBI]
    WHERE Статья = 'реализация'
    GROUP BY artic_id, YEAR(Период), MONTH(Период)
),

-- 2. Дни в продаже (по флагу ostatok_all)
Stock AS (
    SELECT
        artic_id,
        YEAR(dt) AS Год,
        MONTH(dt) AS Месяц,
        SUM(CASE WHEN ostatok_all = 1 THEN 1 ELSE 0 END) AS days_available
    FROM [pbi].[w_ostatok_da_net]
    GROUP BY artic_id, YEAR(dt), MONTH(dt)
),

-- 3. База: нормализованные продажи (только Основной + Маркетплейс)
Base AS (
    SELECT
        s.artic_id,
        n.code,
        n.description,
        s.Год,
        s.Месяц,
        s.total_sales,
        st.days_available,
        -- сезонность: либо родная, либо общая (по группе 0)
        COALESCE(sg_main.seasonal_koef, sg_def.seasonal_koef) AS seasonal_koef,
        s.total_sales / NULLIF(COALESCE(sg_main.seasonal_koef, sg_def.seasonal_koef), 0) AS Normalized_sales,
        CASE WHEN st.days_available > 19 THEN 1 ELSE 0 END AS valid_month,
        CASE WHEN st.days_available > 19 
             THEN s.total_sales / NULLIF(COALESCE(sg_main.seasonal_koef, sg_def.seasonal_koef), 0)
             ELSE NULL 
        END AS normalized_valid_sales
    FROM Sales s
    LEFT JOIN Stock st
        ON s.artic_id = st.artic_id
       AND s.Год = st.Год
       AND s.Месяц = st.Месяц
    JOIN [pbi].[nomenclature] n
        ON s.artic_id = n.artic_id
    LEFT JOIN [analytics].[seasonality_groups] sg_main
        ON n.[1c_group] = sg_main.group_1c_id
       AND s.Месяц = sg_main.[month]
    LEFT JOIN [analytics].[seasonality_groups] sg_def
        ON sg_def.group_1c_id = 0x00000000000000000000000000000000
       AND sg_def.[month] = s.Месяц
    WHERE n.Статус IN ('Основной', 'Маркетплейс')
),

-- 4. Пронумеровка месяцев (только до последнего полного месяца)
Windowed AS (
    SELECT 
        b.*,
        ROW_NUMBER() OVER (
            PARTITION BY b.artic_id 
            ORDER BY (b.Год*100 + b.Месяц) DESC
        ) AS rn_desc
    FROM Base b
    CROSS JOIN LastFullMonth lm
    WHERE (b.Год*100 + b.Месяц) <= (lm.last_year*100 + lm.last_month)
),

-- 4b. Последний валидный месяц (строгий, для контроля)
LastValid AS (
    SELECT artic_id, normalized_valid_sales AS Base_LastMonth
    FROM (
        SELECT 
            artic_id,
            normalized_valid_sales,
            ROW_NUMBER() OVER (
                PARTITION BY artic_id 
                ORDER BY (Год*100 + Месяц) DESC
            ) AS rn
        FROM Windowed
        WHERE valid_month = 1
          AND normalized_valid_sales IS NOT NULL
    ) x
    WHERE rn = 1
),

-- 5. Строгие базы (12M, 3M) – только по валидным месяцам
StrictAggregates AS (
    SELECT 
        w.artic_id,
        AVG(CASE WHEN rn_desc <= 12 AND valid_month = 1 THEN normalized_valid_sales END) AS Base_12M,
        CASE 
            WHEN MIN(CASE WHEN rn_desc <= 3 THEN valid_month END) = 1
            THEN AVG(CASE WHEN rn_desc <= 3 THEN normalized_valid_sales END)
            ELSE NULL 
        END AS Base_3M
    FROM Windowed w
    GROUP BY w.artic_id
),

-- 6. Irregular-база: средняя нормализованная продажа за последние 12 календарных месяцев,
--    только по месяцам с total_sales > 0
IrregularBase AS (
    SELECT 
        w.artic_id,
        AVG(w.Normalized_sales) AS Base_Irregular
    FROM Windowed w
    CROSS JOIN LastFullMonth lm
    WHERE (w.Год * 12 + w.Месяц) >  (lm.last_year * 12 + lm.last_month - 12)  -- последние 12 месяцев
      AND (w.Год * 12 + w.Месяц) <= (lm.last_year * 12 + lm.last_month)
      AND w.total_sales > 0
      AND w.Normalized_sales IS NOT NULL
    GROUP BY w.artic_id
),

-- 7. TREND (регрессия по ln(sales), окно ~24 мес по валидным)
TrendData AS (
    SELECT 
        w.artic_id,
        ROW_NUMBER() OVER (
            PARTITION BY w.artic_id 
            ORDER BY (w.Год*100 + w.Месяц)
        ) - 1 AS t,
        LOG(w.normalized_valid_sales) AS ln_sales
    FROM Windowed w
    CROSS JOIN LastFullMonth lm
    WHERE (w.Год*100 + w.Месяц) >  (lm.last_year*100 + lm.last_month - 200)
      AND (w.Год*100 + w.Месяц) <= (lm.last_year*100 + lm.last_month)
      AND w.normalized_valid_sales > 0
),
TrendAgg AS (
    SELECT
        artic_id,
        COUNT(*) AS n_obs,
        EXP(
            (AVG(t*ln_sales) - AVG(t)*AVG(ln_sales)) 
            / NULLIF(AVG(t*t) - AVG(t)*AVG(t), 0)
        ) AS g_raw
    FROM TrendData
    GROUP BY artic_id
    HAVING COUNT(*) >= 6
),
TrendFinal AS (
    SELECT
        artic_id,
        POWER(
            CASE 
                WHEN POWER(g_raw, 12) < 0.7 THEN 0.7
                WHEN POWER(g_raw, 12) > 1.5 THEN 1.5
                ELSE POWER(g_raw, 12)
            END,
            1.0/12
        ) AS Ktrend
    FROM TrendAgg
)

-- === ФИНАЛ (одна строка на активный SKU) ===
SELECT 
    n.artic_id,
    n.code,
    n.description,
    -- строгие базы
    sa.Base_12M,
    sa.Base_3M,
    ib.Base_Irregular,
    -- единая выбранная база
    CASE 
        WHEN sa.Base_3M IS NOT NULL THEN sa.Base_3M
        WHEN sa.Base_12M IS NOT NULL THEN sa.Base_12M
        ELSE ib.Base_Irregular
    END AS Base_Selected,
    lv.Base_LastMonth,
    tf.Ktrend
FROM pbi.nomenclature n
LEFT JOIN StrictAggregates sa ON n.artic_id = sa.artic_id
LEFT JOIN IrregularBase    ib ON n.artic_id = ib.artic_id
LEFT JOIN LastValid        lv ON n.artic_id = lv.artic_id
LEFT JOIN TrendFinal       tf ON n.artic_id = tf.artic_id
WHERE n.Статус IN ('Основной', 'Маркетплейс');
GO

/****** Object:  View [analytics].[get_analytics_by_group]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE VIEW [analytics].[get_analytics_by_group]
AS
SELECT        
	n.code
	, a.[Остаток дней продаж]
	, a.[Дней в продаже / год]
	, a.[Дней в продаже / квартал]
	, a.[Продажи шт / день]
	, a.[ТН / год, руб.]
	, a.[ТН / квартал, руб.]
	, a.[ТН / месяц, руб.]
	, a.[Стоимость МП год, руб.]
	, a.[%ТН год, руб.]
	, a.[учетная сумма / год, руб.]
	, a.[Оплаченный остаток]
	, a.[Рентабельность / год]
	, a.[Рентабельность / квартал]
	, a.[Рентабельность / будущий год]
	, [Рентабельность по остатку / год]
	, [Рентабельность по остатку / квартал]
	, [Рентабельность по остатку / будущий год]
FROM            
	analytics.[аналитика за 365 дн.] AS a 
		INNER JOIN pbi.nomenclature AS n ON n.[1c_id] = a.[1c_id] 
		INNER JOIN pbi.groups AS g ON n.[1c_group] = g.[1c_id]
WHERE        (g.g NOT LIKE '*%')
GO

/****** Object:  View [analytics].[get_forecast_by_group]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE VIEW [analytics].[get_forecast_by_group] as 
SELECT 
      n.code as code
      ,f.[scenario_id] 
      ,FORMAT(f.[month], 'yyyy-MM-01') AS [month] 
      ,f.[value] as quantity_base
	  ,g.path
FROM [mag_pbi].[analytics].forecast f
	INNER JOIN mag_pbi.pbi.nomenclature n /*номенклатура*/
		ON n.[1c_id] = f.[1c_id]
	INNER JOIN mag_pbi.pbi.groups g
		ON n.[1c_group] = g.[1c_id]
WHERE g.g not like '*%' AND [value] > 0
GO

/****** Object:  View [analytics].[get_forecast_scenarios]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE VIEW [analytics].[get_forecast_scenarios] as
SELECT [scenario_id]
      ,[name]
      ,[description]
      ,[created_by]
  FROM [mag_pbi].[analytics].[forecast_scenarios]
  WHERE active = 1
GO

/****** Object:  View [analytics].[get_mp_quantity_by_group]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE view [analytics].[get_mp_quantity_by_group] as
	


	SELECT 
		t.code
		, [Узел]
		, [Склад]
		, g.path
		, [Доступное кол-во] as quantity
		, [Доступное кол-во]
			*
			(case  
					(SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE t.[1c_id] = up._OwnerID_RRRef) 
						when 0 then 1 
						when null then 1 
						else (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE t.[1c_id] = up._OwnerID_RRRef) 
				end)
			as quantity_base
		
		--, (SELECT TOP 1 [Доступное кол-во] FROM [mag_pbi].[analytics].[Внешние остатки] v WHERE v.[code]=t.[code] AND v.[Узел]=t.[Узел] AND v.[Склад]=t.[Склад] ORDER BY [Дата обновления] DESC) as quantity
	FROM [mag_pbi].[analytics].[Внешние остатки] as t
		INNER JOIN [mag_pbi].[pbi].[groups] g ON t.group_id = g.[1c_id]
	WHERE t.[Дата обновления] >= FORMAT(GETDATE(), 'yyyy-MM-dd')
GO

/****** Object:  View [analytics].[get_mpcosts_monthly_by_group]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE view [analytics].[get_mpcosts_monthly_by_group] as 
SELECT 
	 sales.date
	 , n.code as code
	 , g.path
	 , sum(sales.sum) as sum
FROM
(
	select 
		FORMAT([date], 'yyyy-MM') as date
		, s.Сумма as sum
		, s.[1c_id]
		
	FROM [mag_pbi].[pbi].[Стоимость обработки заказа] s
	
) as sales
INNER JOIN [mag_pbi].[pbi].nomenclature n
	ON n.[1c_id] = sales.[1c_id]
INNER JOIN [mag_pbi].[pbi].[groups] g ON n.[1c_group] = g.[1c_id]

GROUP BY sales.date, n.code, g.path
GO

/****** Object:  View [analytics].[get_nomenclature_by_group]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE view [analytics].[get_nomenclature_by_group] as
	SELECT
		n.code as code,
		n.description as 'description',
		n.artic as artic,
		g.path,
		--concat('https://media.magok.ru/', f._Fld21201) as 'photo',
		n.photo,
		n.Производитель as 'manufacturer',
		n.Бренд as 'brand',
		n.[1c_id] as [1C_id],
		n.[Статус] as status, 
		n.[АБС статус] as ABC
		, wb._Fld28246 as [WB]
		, wbip._Fld28246 as [WBIP]
		, ozon._Fld28246 as [OZON]
		, ozonip._Fld28246 as [OZONIP]
		--, factory.Количество as factoryQuantity
		--, way.Количество as onwayQuantity
		, n.[max_year_quantity]
		, n.[max_quarter_quantity]
		, n.[Цена учетная, руб]
		, n.[Цена учетная, usd]
		, n.[СКО_МесячныхПродаж]
		, n.cenovaya_gruppa
	from [mag_pbi].[pbi].nomenclature n /*номенклатура*/ 
		--INNER JOIN [mag_reports].[sales].[w_groups] g
		INNER JOIN mag_pbi.pbi.groups g
			ON n.[1c_group] = g.[1c_id]
		/*LEFT JOIN [mag_2019].[dbo]._Reference191X1 f /*номенклатураПрисоедФайлы*/ 
			ON f._IDRRef = n._Fld21086RRef*/
		LEFT JOIN [MAG_2019].[dbo].[_InfoRg28243X1] wbip -- идентификаторы объектов во внешних системах
			ON wbip.[_Fld28244_RRRef] = n.[1c_id] AND wbip._Fld28245RRef = 0x997FB49691D57EFD11ED51180696FB46

		LEFT JOIN [MAG_2019].[dbo].[_InfoRg28243X1] ozonip -- идентификаторы объектов во внешних системах
			ON ozonip.[_Fld28244_RRRef] = n.[1c_id] AND ozonip._Fld28245RRef = 0x9987B49691D57EFD11EED582B1EEAA3C

		LEFT JOIN [MAG_2019].[dbo].[_InfoRg28243X1] ozon -- идентификаторы объектов во внешних системах
			ON ozon.[_Fld28244_RRRef] = n.[1c_id] AND ozon._Fld28245RRef = 0xAEC3B496910DCFD611EC0EF79C3B458F

		LEFT JOIN [MAG_2019].[dbo].[_InfoRg28243X1] wb -- идентификаторы объектов во внешних системах
			ON wb.[_Fld28244_RRRef] = n.[1c_id] AND wb._Fld28245RRef = 0xAEC3B496910DCFD611EC000B54C819F4
		/*
		LEFT JOIN [mag_pbi].[pbi].[Заказо_в_производстве] factory
			ON factory.[1C_id] = n.[1c_id]
		LEFT JOIN [mag_pbi].[pbi].[Заказо_в_пути] way
			ON way.[1C_id] = n.[1c_id]
			*/
	--WHERE  n._Folder = 1
		--AND g.path like 'Игрушки%'
/*
	SELECT 
		n.code
		, n.description
		, n.artic
		, g.path
		, n.photo
	FROM [mag_pbi].[pbi].[nomenclature] n 
		INNER JOIN [mag_reports].[sales].[w_groups] g
			ON n.group_id = g.group_id
*/
GO

/****** Object:  View [analytics].[get_orders_by_group]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE view [analytics].[get_orders_by_group] as
	SELECT 
      z.[Статус] as status
	  ,z.[Номер заказа поставщику] as order_number
	  ,z.[1C_id]
	  ,z.[Дата заказа поставщику] as order_date
	  ,z.Валюта as currency
	  , n._code as 'code'
      ,[Кол. упаковок] as packages
	  ,z.Количество as units
      ,[Цена] as price
      ,[Сумма в руб.] as 'sum'
	  , z.Сумма as amount
      ,FORMAT([Желаемая дата], 'yyyy-MM') as 'month'
	  ,g.path
  FROM [mag_pbi].[analytics].[Заказы] z
	INNER JOIN [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ ON n._IDRRef = z.[1c_id]
	INNER JOIN [mag_pbi].[pbi].[groups] g ON n._ParentIDRRef = g.[1c_id]
  --WHERE [Статус]='В пути' OR [Статус] = 'В производстве' OR [Статус] = 'Выгружен на складе'
WHERE 
   z.Статус NOT IN ('Тех. заказ', 'Подтвержден' ,'Закрыт')
GO

/****** Object:  View [analytics].[get_orders_list]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[get_orders_list] AS
SELECT
    DATEADD(YEAR, -2000, z._Date_Time) AS [Дата заказа поставщику],
    CAST(DATEADD(YEAR, -2000, z._Fld3420) AS DATE) AS [Желаемая дата поступления],
    z._Number AS [Номер заказа поставщику],

    p._Description AS [Партнер],
    r._Description AS [Контрагент],

    CASE z._Fld3417RRef
        WHEN 0xB9440E49408A17534955319EBF0DAE60 THEN N'Согласован'
        WHEN 0x99FD3E66AA3EFB074984044D5A69CFD5 THEN N'В производстве'
        WHEN 0x973A5675AC6A17F64DA37EC6C22FC12C THEN N'Частично отгружен'
        WHEN 0xA55F81415BA33BC24A053ED26C6EC02E THEN N'Заказ отменён'
        WHEN 0xA87A8B13710A30B447DFF1614E84D167 THEN N'В пути и произв.'
        WHEN 0x8542BD023FE7B70E4613087D853F26E4 THEN N'Полностью отгружен'
        WHEN 0xB38AD6232E2D17D44287D9924E5E6DF2 THEN N'Нет в заявке на оплату'
        WHEN 0xB2A33CF1C728AF3463F20D54AE5A0BC THEN N'Заявка в процессе'
        ELSE N'Неизвестно'
    END AS [Статус],

    v._Description AS [Валюта],
    z._Fld3418 AS [Сумма],

    CASE v._Description
        WHEN 'USD' THEN z._Fld3418 * (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency='USD2')
        ELSE z._Fld3418 * (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency=v._Description)
    END AS [Сумма в руб],

    ISNULL(man.[manufacturer], N'Не найдено') AS manufacturer,
    ISNULL(man.[ROI_norm], 136) / 100 AS roi_year_normalized,
    man.[n_percent],
    man.[n_days],
    man.[m_percent],
    man.[m_days],

    CASE WHEN z._Fld3418 = 0 THEN 0
    ELSE (
        SELECT SUM(zak.[Сумма] * a.[%ТН год, руб.])
        FROM [analytics].[Заказы] zak
        INNER JOIN [analytics].[аналитика за 365 дн.] a ON a.[1c_id] = zak.[1C_id]
        WHERE zak.[Номер заказа поставщику] = z._Number
    ) / z._Fld3418
    END AS [average_year_turnover],

    z._Fld3432 AS comment

FROM MAG_2019.dbo._Document408X1 AS z
LEFT JOIN MAG_2019.dbo._Reference215X1 AS p ON p._IDRRef = z._Fld3409RRef   -- Партнёр
LEFT JOIN MAG_2019.dbo._Reference168 AS r ON r._IDRRef = z._Fld3410RRef     -- Контрагент
LEFT JOIN MAG_2019.dbo._Reference50 AS v ON v._IDRRef = z._Fld3414RRef      -- Валюта
LEFT JOIN [analytics].[manufacturer_counterparty_map] map ON map.contractor_1c_id = r._IDRRef
LEFT JOIN [analytics].[v_manufacturers_roi_compat] man ON man.id = map.manufacturer_id

WHERE z._Posted = 1
  AND z._Marked = 0
  AND z._Fld3417RRef <> 0xA55F81415BA33BC24A053ED26C6EC02E   -- не «Заказ отменён»
  AND z._Fld3417RRef <> 0x8542BD023FE7B70E4613087D853F26E4   -- не «Полностью отгружен»
  AND z._Fld3417RRef <> 0x973A5675AC6A17F64DA37EC6C22FC12C; -- не «Частично отгружен»
GO

/****** Object:  View [analytics].[get_quantity_by_group]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE view [analytics].[get_quantity_by_group] as
	SELECT
		n.Code as code
		, s._Description as sklad
		, s.[Категория] as [Категория склада]
		--, sum( [_Fld17491]*(case _RecordKind when  0 then 1 when 1 then -1 end) ) as quantity
		, convert( decimal(10,2), sum( [_Fld17491]*(case _RecordKind when  0 then 1 when 1 then -1 end) ) ) as quantity_base
		, convert(
			decimal(10,2), sum( [_Fld17491]*(case _RecordKind when  0 then 1 when 1 then -1 end) )
			/
			(case  
				(SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE n.[1c_id] = up._OwnerID_RRRef) 
					when 0 then 1 
					when null then 1 
					else (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE n.[1c_id] = up._OwnerID_RRRef) 
			end)
			) as quantity
		, g.path
	FROM [mag_2019].[dbo].[_AccumRg17484] t /*регистр товары на складах*/
		INNER JOIN [mag_pbi].[pbi].nomenclature n /*номенклатура*/ ON n.[1c_id] = t._Fld17485RRef
		INNER JOIN [mag_pbi].[pbi].[groups] g ON n.[1c_group] = g.[1c_id]
		INNER JOIN [mag_pbi].[pbi].[sklad_2019] s /*склад*/	ON s._IDRRef = t._Fld17488RRef
	WHERE s.[Категория]='Хранение' OR s.[Категория]='Фасовка' OR s.[Категория] = 'Розничная точка' --g.path like 'Игрушки%'
	GROUP BY n.code, s._Description, s.[Категория], g.path, n.[1c_id]
GO

/****** Object:  View [analytics].[get_sales_monthly_by_group]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
/*
select 
	sum([Сумма])
	, (SELECT sum([Сумма]) FROM [mag_pbi].[pbi].[Стоимость обработки заказа] obr WHERE obr.[1c_id] = s.[1c_id])
FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s
WHERE [Вид операции]='Расход' AND [Статья]='Реализация'
	AND code = 'УТ-00210548'
GROUP BY s.[1c_id]
*/
CREATE view [analytics].[get_sales_monthly_by_group] as 
SELECT 
	 sales.date
	 , n._Code as code
	 , g.path
	 , sum(sales.sum) as sum
	 , sum(sales.quantity) as quantity
	 , sum(sales.quantity_base) as quantity_base
FROM
(
	select 
		FORMAT([Период], 'yyyy-MM') as date
		, s.Сумма as sum
		, s.[1c_id]
		, s.Количество as quantity_base
		, s.КоличествоУпаковок as quantity
	FROM [mag_pbi].[pbiProd].[СебестоимостьСводныйОт2022] s
	WHERE [Вид операции]='Расход' AND [Статья]='Реализация'
) as sales
INNER JOIN [mag_2019].[dbo]._Reference188X1 n
	ON n._IDRRef = sales.[1c_id]
INNER JOIN [mag_pbi].[pbi].[groups] g ON n._ParentIDRRef = g.[1c_id]

GROUP BY sales.date, n._Code, g.path
GO

/****** Object:  View [analytics].[images]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[images]
AS
SELECT
    n._Code AS [КодУТ],

    -- GUID r._IDRRef -> текст (КартинкаИД)
    LOWER(
        SUBSTRING(h.hex_r,25,8) + '-' +
        SUBSTRING(h.hex_r,21,4) + '-' +
        SUBSTRING(h.hex_r,17,4) + '-' +
        SUBSTRING(h.hex_r, 1,4) + '-' +
        SUBSTRING(h.hex_r, 5,12)
    ) AS [КартинкаИД],

    -- Путь к файлу
    CONCAT('media.magok.ru/', r._Fld21201) AS [Путь],

    CASE WHEN r._Fld28532 = 0x01 THEN 1 ELSE 0 END AS [Основное],
    ISNULL(v._Description, N'')              AS [ВнешняяСистема],
    CASE WHEN r._Marked = 0x00 THEN 0 ELSE 1 END AS [ПометкаУдаления],

    -- GUID n._IDRRef -> текст (НоменклатураИД)
    LOWER(
        SUBSTRING(h.hex_n,25,8) + '-' +
        SUBSTRING(h.hex_n,21,4) + '-' +
        SUBSTRING(h.hex_n,17,4) + '-' +
        SUBSTRING(h.hex_n, 1,4) + '-' +
        SUBSTRING(h.hex_n, 5,12)
    ) AS [НоменклатураИД]
FROM MAG_2019.dbo._Reference191X1 AS r
INNER JOIN MAG_2019.dbo._Reference188X1 AS n
    ON n._IDRRef = r._Fld21192RRef
LEFT  JOIN MAG_2019.dbo._Node28072X1 AS v
    ON v._IDRRef = r._Fld28611RRef
CROSS APPLY (
    SELECT
        CONVERT(varchar(36), r._IDRRef,   2) AS hex_r,
        CONVERT(varchar(36), n._IDRRef,   2) AS hex_n
) AS h;
GO

/****** Object:  View [analytics].[income_expence]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE  view [analytics].[income_expence] as
SELECT 
	t.*,
	CONCAT(t.[Номер документа], ' ', t.[Дата]) as 'Номер_Дата'
FROM
 -- См. WHERE в самом низу
 -- WHERE g <> 'Прочие перемещения ДС' AND [Статья ДДС] <> 'Закупка_Приобретение валюты'
(
	SELECT
		'' as 'Получатель'
		, c.[path] as 'path'
		, case WHEN c.g1='Конвертация валюты' THEN 'Закупка' ELSE c.first_group END as g
		, c.g1
		, c.g2
		, c.g3
		, c.g4
		, c._Description as 'Статья ДДС'
		, e.value as 'operation'
		, convert(date, DATEADD(year, -2000, [_Period]), 104) as 'Дата'
		, FORMAT(DATEADD(year, -2000, [_Period]), 'yyyy') as 'Год'
		, FORMAT(DATEADD(year, -2000, [_Period]), 'MM') as 'Месяц'
		,case _RecordKind when 1 then -acc._Fld16165 / 1000 when 0 then acc._Fld16165 / 1000  end as 'Сумма'
		,case _RecordKind when 1 then -acc._Fld16166 / 1000 when 0 then acc._Fld16166 / 1000  end as 'Сумма упр(приход)'
		,case _RecordKind when 1 then -acc._Fld16167 / 1000 when 0 then acc._Fld16167 / 1000  end as 'Сумма регл(приход)'
		, org._Description as 'organization'
		, rs._Description as 'schet'
		, 'Безнал' as 'type'
		, (SELECT _DESCRIPTION FROM [MAG_2019].[dbo].[_Reference50] /*валюты*/ v WHERE v._IDRRef = rs._Fld18073RRef)   as 'valuta'
		, case acc._RecorderTRef
			WHEN 0x000001FD THEN 
				(SELECT d._Number FROM MAG_2019.dbo._Document509 d WHERE d._IDRRef = acc._RecorderRRef )
			WHEN 0x000001E1 THEN 
				(SELECT d._Number FROM MAG_2019.dbo._Document481 d WHERE d._IDRRef = acc._RecorderRRef )
			WHEN 0x000001F1 THEN 
				(SELECT d._Number FROM MAG_2019.dbo._Document497 d WHERE d._IDRRef = acc._RecorderRRef )
			WHEN 0x00000181 THEN 
				(SELECT d._Number FROM MAG_2019.dbo._Document385 d WHERE d._IDRRef = acc._RecorderRRef )
			END as [Номер документа]
	  
	  FROM [mag_2019].[dbo].[_AccumRg16162] acc /* регистр денежные средства б/н */
		  LEFT JOIN [MAG_2019].[dbo].[_Reference198X1] org ON org._IDRRef = acc._Fld16163RRef/*справочник организации*/
		  LEFT JOIN [MAG_2019].[dbo].[_Reference47] rs ON rs._IDRRef = acc._Fld16164RRef/* справочник банковские счета */
		  LEFT JOIN [mag_reports].[costs].[costs_groups] c ON c._IDRref = acc._Fld16171RRef /* статья ДДС */
		  LEFT JOIN mag_reports.dbo.enums e ON e._IDRref = acc._Fld16170RRef AND e.enum = 'Хоз. операции'/*Перечисление хозяйственная операция*/
	  WHERE 1=1
		--AND path not like '%Прочие перемещения ДС%'
	 -- WHERE path is not null 
		/*and path not like '%Сдача денежных средств в банк (в рублях)%'
		and path not like '%Перевод ДС ИП - ЧП%'
		and path not like '%Прочие перемещения ДС %'
		and path not like '%Расходы | расход%'
	  */
	  
	  UNION all
	  
	  SELECT 
		( SELECT  _Description FROM [MAG_2019].dbo._Reference168 /* контрагенты */ WHERE _IDRRef = 
			(SELECT top 1 _Fld3891RRef FROM [MAG_2019].dbo._Document416 /* заявка на расход ДС */ d416 WHERE d416._IDRref = /*ro_tbl._Fld7773RRef*/ 
				(SELECT top 1 _Document495_IDRRef FROM [MAG_2019].dbo._Document495_VT7759 ro_tbl /* Расходный кассовый ордер табл */ WHERE ro_tbl._Document495_IDRRef = ro._IDRRef )
			) 
		) 
			as 'Получатель'
		, c.[path] as 'path'
		, case WHEN c.g1='Конвертация валюты' THEN 'Закупка' ELSE c.first_group END as g
		, c.g1
		, c.g2
		, c.g3
		, c.g4
		, c._Description as 'Статья ДДС'
		, e.value as 'operation'
		, convert(date, DATEADD(year, -2000, [_Period]), 104) as 'Дата'
		, FORMAT(DATEADD(year, -2000, [_Period]), 'yyyy') as 'Год'
		, FORMAT(DATEADD(year, -2000, [_Period]), 'MM') as 'Месяц'
		,case _RecordKind when 1 then -_Fld16220 / 1000 when 0 then _Fld16220 / 1000  end as 'Сумма'
		,case _RecordKind when 1 then -acc._Fld16221 / 1000 when 0 then acc._Fld16221 / 1000  end as 'Сумма упр(приход)'
		,case _RecordKind when 1 then -acc._Fld16222 / 1000 when 0 then acc._Fld16222 / 1000  end as 'Сумма регл(приход)'
		, org._Description
		, k._Description
		,'Наличные' as 'type'
		,(SELECT _DESCRIPTION FROM [MAG_2019].[dbo].[_Reference50] /*валюты*/ v WHERE v._IDRRef = k._Fld20385RRef)   as 'valuta'
		, case acc._RecorderTRef
		WHEN 0x000001EF THEN 
			(SELECT d._Number FROM MAG_2019.dbo._Document495 d WHERE d._IDRRef = acc._RecorderRRef )
		WHEN 0x000001E5 THEN 
			(SELECT d._Number FROM MAG_2019.dbo._Document485 d WHERE d._IDRRef = acc._RecorderRRef )
		WHEN 0x000001F1 THEN 
			(SELECT d._Number FROM MAG_2019.dbo._Document497 d WHERE d._IDRRef = acc._RecorderRRef )
		WHEN 0x00000181 THEN 
			(SELECT d._Number FROM MAG_2019.dbo._Document385 d WHERE d._IDRRef = acc._RecorderRRef )
		END as [Номер документа]
	  FROM [mag_2019].[dbo].[_AccumRg16217] acc /* регистр денежные средства нал */
		  LEFT JOIN [MAG_2019].[dbo].[_Reference198X1] org ON org._IDRRef = acc._Fld16218RRef/*справочник организации*/
		  LEFT JOIN [MAG_2019].[dbo].[_Reference147] k /* кассы */ ON k._IDRRef = acc._Fld16219RRef

		  LEFT JOIN [mag_reports].[costs].[costs_groups] c ON c._IDRref = acc._Fld16224RRef
		  LEFT JOIN mag_reports.dbo.enums e ON e._IDRref = acc._Fld16223RRef AND e.enum = 'Хоз. операции'/*Перечисление хозяйственная операция*/

		  LEFT JOIN [MAG_2019].dbo._Document495 ro /* Расходный кассовый ордер */  ON ro._IDRRef = acc._RecorderRRef
	 WHERE
		1=1
		--AND path not like '%Прочие перемещения ДС%'
		--path is not null 
		/*and path not like '%Сдача денежных средств в банк (в рублях)%'
		and path not like '%Перевод ДС ИП - ЧП%'
		and path not like '%Прочие перемещения ДС %'
		and path not like '%Расходы | расход%'*/

/*
 union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-01-01', 0, -652685 / 1000 , -652685 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-02-01', 0, -847900 / 1000 , -847900 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-03-01', 0, -856435 / 1000 ,- 856435 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-04-01', 0, -974905 / 1000 , -974905 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-05-01', 0, -977626 / 1000 , -977626 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-06-01', 0, -662517 / 1000 , -662517 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-07-01', 0, -748000 / 1000 , -748000 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-08-01', 0, -877971 / 1000 , -877971 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-09-01', 0, -946906 / 1000 , -946906 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-10-01', 0, -1325939 / 1000 , -1325939 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-11-01', 0, -1172364 / 1000 , -1172364 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2019-12-01', 0, -946108 / 1000 , -946108 / 1000  , '', '', '', 'руб.', ''
  union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-01-01', 0, -955189 / 1000 , -955189 / 1000  , '', '', '', 'руб.', ''
    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-02-01', 0, -987967 / 1000 , -987967 / 1000  , '', '', '', 'руб.', ''
    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-03-01', 0, -1092812 / 1000 , -1092812 / 1000  , '', '', '', 'руб.', ''
    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-04-01', 0, -600712 / 1000 ,  -600712 / 1000 , '', '', '', 'руб.', ''
    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-05-01', 0, -886494 / 1000 , -886494 / 1000  , '', '', '', 'руб.', ''
     union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-06-01', 0, -950 , -950  , '', '', '', 'руб.', ''
    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-07-01', 0, -958.5 , -958.5  , '', '', '', 'руб.', ''
    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-08-01', 0, -987.2 , -987.2  , '', '', '', 'руб.', ''

    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-09-01', 0, -1034 , -1034  , '', '', '', 'руб.', ''
    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-10-01', 0, -1119 , -1119  , '', '', '', 'руб.', ''
    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-11-01', 0, -1291 , -1291  , '', '', '', 'руб.', ''
    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2020-12-01', 0, -1112 , -1112  , '', '', '', 'руб.', ''
    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-01-01', 0, -1019 , -1019  , '', '', '', 'руб.', ''
    union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-02-01', 0, -1188 , -1188  , '', '', '', 'руб.', ''
   union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-03-01', 0, -1446 , -1446  , '', '', '', 'руб.', ''
   union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-04-01', 0, -1330 , -1330  , '', '', '', 'руб.', ''
   union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-05-01', 0, -927 , -927  , '', '', '', 'руб.', ''
   union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-06-01', 0, -1140 , -1140  , '', '', '', 'руб.', ''
   union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-07-01', 0, -881 , -881  , '', '', '', 'руб.', ''
   union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-08-01', 0, -1238 , -1238  , '', '', '', 'руб.', ''
   union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-09-01', 0, -1403 , -1403  , '', '', '', 'руб.', ''
   union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-10-01', 0, -1495 , -1495  , '', '', '', 'руб.', ''
   union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-11-01', 0, -1043 , -1043  , '', '', '', 'руб.', ''
   union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2021-12-01', 0, -1197 , -1197  , '', '', '', 'руб.', ''
 union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-01-01', 0, -1405 , -1405  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-02-01', 0, -1418 , -1418  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-03-01', 0, -1254 , -1254  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-04-01', 0, -1461 , -1461  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-05-01', 0, -1275 , -1275  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-06-01', 0, -1502 , -1502  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-07-01', 0, -1524 , -1524  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-08-01', 0, -1384 , -1384  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-09-01', 0, -1623 , -1623  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-10-01', 0, -1699 , -1699  , '', '', '', 'руб.', '' union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-11-01', 0, -1963 , -1963  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2022-12-01', 0, -1743 , -1743  , '', '', '', 'руб.', ''union all

  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-01-01', 0, -1560 , -1560  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-02-01', 0, -1727 , -1727  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-03-01', 0, -2104 , -2104  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-04-01', 0, -1504 , -1504  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-05-01', 0, -1674 , -1674  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-06-01', 0, -1503 , -1503  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-07-01', 0, -1582 , -1582  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-08-01', 0, -1569 , -1569  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-09-01', 0, -2104 , -2104  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-10-01', 0, -2104 , -2104  , '', '', '', 'руб.', '' union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-11-01', 0, -2104 , -2104  , '', '', '', 'руб.', '' union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2023-12-01', 0, -2104 , -2104  , '', '', '', 'руб.', ''

  union all
   select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-01-01', 0, -1611 , -1611  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-02-01', 0, -1759 , -1759  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-03-01', 0, -1853 , -1853  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-04-01', 0, -1718 , -1718  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-05-01', 0, -1516 , -1516  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-06-01', 0, -1682 , -1682  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-07-01', 0, -1669 , -1669  , '', '', '', 'руб.', ''union all

  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-08-01', 0, -1669 , -1669  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-09-01', 0, -1709 , -1709  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-10-01', 0, -1899 , -1899  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-11-01', 0, -2228 , -2228  , '', '', '', 'руб.', ''union all
  select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2024-12-01', 0, -2320 , -2320  , '', '', '', 'руб.', ''
   
   union all --2025
   select  '', 'Зарплата|Топы' , 'Зарплата', 'Топы', '', '', '', 'ТОП_Оплата труда', 'Выдача ДС подотчетнику', '2025-01-01', 0, -1604 , -1604  , '', '', '', 'руб.', ''--union all
   */
) as t
WHERE g <> 'Прочие перемещения ДС' AND [Статья ДДС] <> 'Закупка_Приобретение валюты'
GO

/****** Object:  View [analytics].[nomenclature]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW analytics.nomenclature as
SELECT 
		LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._IDRRef, 2),5,12) ))as artic_id
		, n._IDRRef as '1c_id'
		, n._Code as code
		, CASE 
				WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E5845202CA01FB THEN 'Рублевая' 
				WHEN n._Fld21101RRef=0x80C5305A3A00E12B11E584520AEC30EC THEN 'Валютная' 
				ELSE 'Неопределено'
			END as cenovaya_gruppa

		, n._Description as description /*Наименование*/
		, n._Fld21043 as artic /*Артикул*/
		, n._Fld21053RRef as vid_nomen
		, cast( (SELECT _Description FROM [MAG_2019].[dbo].[_Reference260] pr WHERE pr._IDRRef = n._Fld21079RRef) as nvarchar(max)) as 'Производитель'
		, LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), n._ParentIDRRef, 2),5,12) ))as group_id
		
		, n._ParentIDRRef as '1c_group'
		--, isnull(us._Description, 'Менеджер') as [manager]

		, qr._Fld27045 as 'card'
		, concat('https://media.magok.ru/', f._Fld21201) as 'photo'
		, 2019 as base
		, n._Fld21046 as [Знаменатель веса]
		, n._Fld21049 as [Числитель веса]
	
		, n._Fld21089 as [Знаменатель объема]
		, n._Fld21092 as [Числитель объема]
		, n._Fld33413 as [id magok]

		
		, (SELECT TOP 1 upakovka FROM pbi.[БазоваяУпаковка] up WHERE n._IDRRef = up._OwnerID_RRRef) as 'Базовая упаковка'
		, (select r._Description from [MAG_2019].[dbo].[_Reference69] /*виды ном*/ r WHERE r._IDRRef = n._Fld21053RRef) as [Вид номенклатуры]
		 
	 from 
		[mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ 
			LEFT JOIN  [mag_2019].[dbo].[_InfoRg27043X1] /* Регистр сведений QR коды */ qr ON qr._Fld27044RRef = n._IDRRef
			LEFT JOIN [mag_2019].[dbo]._Reference191X1 f /*номенклатураПрисоедФайлы*/ 
				ON f._IDRRef = n._Fld21086RRef
	  WHERE  n._Folder = 1
GO

/****** Object:  View [analytics].[v_contractors]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- -----------------------------------------------------------------------------
-- 1. Представления для списков из 1С
-- -----------------------------------------------------------------------------

-- Контрагенты: [pbi].[ПартнерыКонтрагенты] уже существует (из _Reference168)
-- Для удобства создаём представление analytics.v_contractors с search-friendly полями

CREATE VIEW [analytics].[v_contractors] AS

SELECT
    c._IDRRef AS contractor_1c_id,   -- бинарный ключ 1С
    LOWER(CONCAT(
        SUBSTRING(CONVERT(nvarchar(36), c._IDRRef, 2), 25, 8), '-',
        SUBSTRING(CONVERT(nvarchar(36), c._IDRRef, 2), 21, 4), '-',
        SUBSTRING(CONVERT(nvarchar(36), c._IDRRef, 2), 17, 4), '-',
        SUBSTRING(CONVERT(nvarchar(36), c._IDRRef, 2), 1, 4), '-',
        SUBSTRING(CONVERT(nvarchar(36), c._IDRRef, 2), 5, 12)
    )) AS contractor_id,              -- строковый id для API/поиска
    c._Description AS contractor_name
FROM [MAG_2019].[dbo].[_Reference168] c
WHERE c._Marked = 0;
GO

/****** Object:  View [analytics].[v_manufacturer_counterparty_mapping]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Представление для API: map + manufacturer + contractor/producer (из 1С)
CREATE VIEW [analytics].[v_manufacturer_counterparty_mapping] AS
SELECT
    mcm.id,
    mcm.manufacturer_id,
    p.producer_id,
    man.manufacturer AS manufacturer_name,
    mcm.contractor_1c_id,
    c.contractor_id,
    c.contractor_name AS contractor_name,
    man.days_of_sales,
    man.logistics_days,
    man.roic_norm
FROM [analytics].[manufacturer_counterparty_map] mcm
LEFT JOIN [analytics].[manufacturers] man ON man.id = mcm.manufacturer_id
LEFT JOIN [analytics].[v_contractors] c ON c.contractor_1c_id = mcm.contractor_1c_id
LEFT JOIN [analytics].[v_producers] p ON LTRIM(RTRIM(p.producer_name)) = LTRIM(RTRIM(man.manufacturer));
GO

/****** Object:  View [analytics].[v_manufacturers_roi_compat]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[v_manufacturers_roi_compat] AS
SELECT
    man.id,
    man.manufacturer,
    man.roic_norm AS ROI_norm,
    n_stage.[percent] / 100.0 AS n_percent,
    n_stage.[days] AS n_days,
    m_stage.[percent] / 100.0 AS m_percent,
    m_stage.[days] AS m_days
FROM [analytics].[manufacturers] man
LEFT JOIN (
    SELECT manufacturer_id, [percent], [days],
           ROW_NUMBER() OVER (PARTITION BY manufacturer_id ORDER BY sort_order, [days]) AS rn
    FROM [analytics].[manufacturer_payment_stage]
) n_stage ON n_stage.manufacturer_id = man.id AND n_stage.rn = 1
LEFT JOIN (
    SELECT manufacturer_id, [percent], [days],
           ROW_NUMBER() OVER (PARTITION BY manufacturer_id ORDER BY sort_order, [days]) AS rn
    FROM [analytics].[manufacturer_payment_stage]
) m_stage ON m_stage.manufacturer_id = man.id AND m_stage.rn = 2;
GO

/****** Object:  View [analytics].[v_producers]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Производители из справочника 1С _Reference260
CREATE VIEW [analytics].[v_producers] AS
SELECT
    pr._IDRRef AS producer_1c_id,    -- бинарный ключ 1С
    LOWER(CONCAT(
        SUBSTRING(CONVERT(nvarchar(36), pr._IDRRef, 2), 25, 8), '-',
        SUBSTRING(CONVERT(nvarchar(36), pr._IDRRef, 2), 21, 4), '-',
        SUBSTRING(CONVERT(nvarchar(36), pr._IDRRef, 2), 17, 4), '-',
        SUBSTRING(CONVERT(nvarchar(36), pr._IDRRef, 2), 1, 4), '-',
        SUBSTRING(CONVERT(nvarchar(36), pr._IDRRef, 2), 5, 12)
    )) AS producer_id,                -- строковый id для API/поиска
    pr._Description AS producer_name
FROM [MAG_2019].[dbo].[_Reference260] pr
WHERE pr._Marked = 0;
GO

/****** Object:  View [analytics].[Бюджет ДДС]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE   VIEW [analytics].[Бюджет ДДС] as

SELECT
	DATEADD(year, -2000,[_Period]) as 'Месяц план'
	, [_Fld28390RRef] as '1c_project_id'
	--, CONVERT(VARCHAR(64), [_Fld28390RRef], 1)
	, LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [_Fld28390RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28390RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28390RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28390RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28390RRef], 2),5,12) )) as 'project id'
	,[_Fld28391] as 'Сумма'
	, dds._Description as 'Статья ДДС'
	, dds._IDRRef as '1c_dds_id'
	, LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),5,12) )) as 'dds id'
	, CASE budget._Fld33808Rref
		WHEN 0xB3F668344C8DBA57427B6BC0D450CEA1 THEN 'Наличные'
		WHEN 0xB5530D030E40BC264A41E266D1E84B1A THEN 'Безнал'
		END as [Форма оплаты]
FROM [MAG_2019].[dbo].[_InfoRg28389] budget /* РегистрСведений.БюджетДДС */ 
	LEFT JOIN [MAG_2019].[dbo].[_Reference316] dds /*Справочник.СтатьиДвиженияДенежныхСредств*/ ON dds._IDRRef = budget.[_Fld33803RRef]

--WHERE _Active = 1
GO

/****** Object:  View [analytics].[Внешние остатки]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[Внешние остатки] as
SELECT nod._Description AS [Узел]
	, ost._Fld33601 AS [Тип]
	, ost._Fld33595 AS [Склад]
	, DATEADD(YEAR, -2000, ost._Fld33596) AS [Дата обновления]
	, [_Fld28683RRef] as [1c_id]
	, LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), [_Fld28683RRef], 2),1,4),'-',SUBSTRING ( convert(nvarchar(36),[_Fld28683RRef], 2),5,12) )) 
		as [artic_id]  
	, n.code AS [code]
	, n.[1c_group] as [group_id]
	, ost._Fld33599 AS [id_внешний]
	, ost._Fld33602 AS [Количество]
	, ost._Fld33603 AS [Доступное кол-во]

FROM [MAG_2019].[dbo].[_InfoRg28682X1] AS ost   /* РегистрСведений.ОстаткиТоваровВоВнешнихСистемах */
	LEFT JOIN [mag_pbi].[pbi].[nomenclature] n ON n.[1c_id] = ost._Fld28683RRef /* Справочник.Номенклатура */
	LEFT JOIN [MAG_2019].[dbo].[_Node28072X1] nod ON nod._IDRRef = ost._Fld28684RRef /* ПланОбмена.ВнешниеСистемы */
GO

/****** Object:  View [analytics].[Где товар]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[Где товар] as
	SELECT 
		[1c_id]
		, [artic_id]
		, [Где товар]
		, quantity
	FROM [analytics].[Товары на складах]
UNION ALL
	SELECT 
		[1c_id]
		, [artic_id]
		, [Где товар]
		, quantity 
	FROM [analytics].[Остатки МП]
UNION ALL
	SELECT 
		[1c_id]
		, [artic_id]
		, [Где товар]
		, Резерв as quantity
	FROM [ostatki].[РезервыМПиОПТ]

UNION ALL

	SELECT 
		[1c_id]
		, [artic_id]
		, [Где товар]
		, Количество as quantity
	FROM [pbi].[Заказо_в_пути]-- where [Номер заказа поставщику] = 'АНУТ-003313'

UNION ALL

	SELECT
		[1c_id]
		, [artic_id]
		, [Где товар]
		, Количество as quantity
	FROM [pbi].[Заказо_в_производстве]
GO

/****** Object:  View [analytics].[Где товар с упаковками]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE view analytics.[Где товар с упаковками] as 
SELECT [1c_id]
      ,t.[artic_id]
      ,[Где товар]
      ,[quantity] as Штук
	  , case WHEN upak.upakovka <>0 then t.quantity / upak.upakovka 
		else 0 END as Упаковок
	  , upak.вес
	  , Высота
	  , Глубина
	  , Ширина
	  , Объем
  FROM [mag_pbi].[analytics].[Где товар] t
  INNER JOIN  [mag_pbi].[pbi].[БазоваяУпаковка] upak
	ON t.[1c_id] = upak.[_IDRRef]
GO

/****** Object:  View [analytics].[Группы_статей_ДДС]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE  view [analytics].[Группы_статей_ДДС] as
	WITH DirectReports([Статья ддс], g, g1,g2,g3,g4,[1c_id],[id], [_ParentIDRRef], lvl, [path]/*Name, Title, EmployeeID, EmployeeLevel, Sort*/)  
	AS (SELECT 
			CONVERT(varchar(255), e.[_Description]), 
			CONVERT(varchar(255),e.[_Description]), --g
			CONVERT(varchar(255),''), --g1
			CONVERT(varchar(255),''), --g2
			CONVERT(varchar(255),''), --g3
			CONVERT(varchar(255),''), --g4

			e._IDRRef,  
			LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), _IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),5,12) )),
			e._ParentIDRRef,  
			1,  
			CONVERT(varchar(255), e.[_Description])  
		FROM [mag_2019].[dbo].[_Reference316] AS e  
		WHERE e._ParentIDRRef = 0x00000000000000000000000000000000 AND e._Marked = 0 
		UNION ALL  
		SELECT CONVERT(varchar(255), /*REPLICATE ('|    ' , lvl) +*/ e._Description),  
			CONVERT(varchar(255),d.g),
/*g1*/		CASE lvl + 1 WHEN 2 THEN CONVERT(varchar(255),e._Description) ELSE CONVERT(varchar(255),d.g1) END,
/*g2*/		CASE lvl + 1 WHEN 3 THEN CONVERT(varchar(255),e._Description) ELSE CONVERT(varchar(255),d.g2) END,
/*g3*/		CASE lvl + 1 WHEN 4 THEN CONVERT(varchar(255),e._Description) ELSE CONVERT(varchar(255),d.g3) END,
/*g4*/		CASE lvl + 1 WHEN 5 THEN CONVERT(varchar(255),e._Description) ELSE CONVERT(varchar(255),d.g4) END,

			e._IDRRef,  
			LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), _IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), _IDRRef, 2),5,12) )),
			e._ParentIDRRef,  
			lvl + 1,  
			CONVERT (varchar(255), RTRIM(path) + ' | ' + e._Description)  
		FROM [mag_2019].[dbo].[_Reference316] AS e  
			INNER JOIN DirectReports AS d ON e._ParentIDRRef = d.[1c_id]
		WHERE e._Marked = 0 
		)  
	SELECT *
	FROM DirectReports   
	--ORDER BY Sort
GO

/****** Object:  View [analytics].[Заказы]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[Заказы]
AS
SELECT 
    DATEADD(YEAR, -2000, z._Date_Time) AS [Дата заказа поставщику],
    z._Number AS [Номер заказа поставщику],
    t._Fld3473RRef AS [1C_id],

    LOWER(
        SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 25, 8) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 21, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 17, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 1, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), p._IDRRef, 2), 5, 12)
    ) AS partner_id,

    r._Description AS Контрагент,

    CASE z._Fld3417RRef
        WHEN 0xB9440E49408A17534955319EBF0DAE60 THEN 'Согласован'
        WHEN 0x99FD3E66AA3EFB074984044D5A69CFD5 THEN 'В пути'
        WHEN 0x973A5675AC6A17F64DA37EC6C22FC12C THEN 'Подтвержден'
        WHEN 0xA55F81415BA33BC24A053ED26C6EC02E THEN 'Закрыт'
        WHEN 0xA87A8B13710A30B447DFF1614E84D167 THEN 'В производстве'
        WHEN 0x8542BD023FE7B70E4613087D853F26E4 THEN 'Тех. заказ'
		WHEN 0xB38AD6232E2D17D44287D9924E5E6DF2 THEN 'На согласовании'
		WHEN 0xB2A33CF1C7286AF3463F20D54AE5A0BC THEN 'Выгружен на складе'
        ELSE 'Неизвестно'
    END AS Статус,

    t._Fld3473RRef AS nom_1c_id,
    n._Description AS Наименование,
    n._Code AS code,
	n._Fld21043 AS Артикул,

    LOWER(
        SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 25, 8) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 21, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 17, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 1, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 5, 12)
    ) AS artic_id,

    t._Fld3477 AS Количество,
    CONVERT(decimal(10, 2), t._Fld3477 / pack.base_pack) AS [Кол. упаковок],

    t._Fld3480 AS Цена,
    t._Fld3481 AS Сумма,

    g.g,
    g.path,

    v._Description AS Валюта,
	CASE v._Description
		WHEN 'USD' THEN _Fld3481 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency='USD2')
		ELSE _Fld3481 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency=v._Description)
	END AS 'Сумма в руб.',

	CASE
		WHEN z._Fld3420 < '4000' THEN DATEADD(MONTH, 4, GETDATE())
		ELSE DATEADD(YEAR, -2000, z._Fld3420)
	END
	as 'Желаемая дата',
	z._Fld3432 as 'Комментарий'

FROM MAG_2019.dbo._Document408X1 AS z -- Документ заказ поставщику
INNER JOIN MAG_2019.dbo._Document408_VT3470X1 AS t ON t._Document408_IDRRef = z._IDRRef -- табличная часть
LEFT JOIN MAG_2019.dbo._Reference215X1 AS p ON p._IDRRef = z._Fld3409RRef -- Справочник.Партнеры
LEFT JOIN MAG_2019.dbo._Reference168 AS r ON r._IDRRef = z._Fld3410RRef -- Справочник.Контрагенты
INNER JOIN MAG_2019.dbo._Reference188X1 AS n ON n._IDRRef = t._Fld3473RRef -- Номенклатура
LEFT JOIN MAG_2019.dbo._Reference50 AS v ON v._IDRRef = z._Fld3414RRef -- Справочник.Валюты
INNER JOIN pbi.groups AS g ON n._ParentIDRRef = g.[1c_id] -- группы

OUTER APPLY (
    SELECT TOP 1 
        ISNULL(NULLIF(up.upakovka, 0), 1) AS base_pack
    FROM pbi.БазоваяУпаковка up 
    WHERE up._OwnerID_RRRef = t._Fld3473RRef
) AS pack

WHERE 
    z._Posted = 1 
    AND z._Marked = 0 
    AND t._Fld3491RRef = 0
	--AND g NOT LIKE '*Внутр%'
	--AND z._Fld3417RRef <> 0xA55F81415BA33BC24A053ED26C6EC02E /* Не закрыт */
	--AND z._Fld3417RRef <> 0x8542BD023FE7B70E4613087D853F26E4 /* Не Тех. заказ */
	--AND z._Fld3417RRef <> 0x973A5675AC6A17F64DA37EC6C22FC12C /* Не Подтвержден */
GO

/****** Object:  View [analytics].[ЗаказыВЗаявках]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE   VIEW [analytics].[ЗаказыВЗаявках]
AS
SELECT
    CONVERT(date, DATEADD(YEAR, -2000, z._Date_Time)) AS [Дата заказа поставщику],
    z._Number                                         AS [Номер заказа поставщику],

    /* заявка из ТЧ */
    CASE WHEN za._IDRRef IS NOT NULL THEN t._Fld34117RRef END AS [Заявка_1c_id],
    ISNULL(za._Number, N'Без заявки')                        AS [Номер заявки],
    CASE
        WHEN za._IDRRef IS NOT NULL THEN CONVERT(date, DATEADD(YEAR, -2000, za._Date_Time))
    END AS [Дата заявки],

    /* Контрагент (текст) */
    r._Description AS [Контрагент],

    /* cagent_id (строка GUID) из 1С-ссылки контрагента */
    LOWER(
        SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 25, 8) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 21, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 17, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2),  1, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2),  5, 12)
    ) AS cagent_id,

    pc.partner_1cid,
    pc.partner_id,

    CASE z._Fld3417RRef
        WHEN 0xB9440E49408A17534955319EBF0DAE60 THEN N'Согласован'
        WHEN 0x99FD3E66AA3EFB074984044D5A69CFD5 THEN N'В пути'
        WHEN 0x973A5675AC6A17F64DA37EC6C22FC12C THEN N'Подтвержден'
        WHEN 0xA55F81415BA33BC24A053ED26C6EC02E THEN N'Закрыт'
        WHEN 0xA87A8B13710A30B447DFF1614E84D167 THEN N'В производстве'
        WHEN 0x8542BD023FE7B70E4613087D853F26E4 THEN N'Тех. заказ'
        WHEN 0xB38AD6232E2D17D44287D9924E5E6DF2 THEN N'На согласовании'
        WHEN 0xB2A33CF1C7286AF3463F20D54AE5A0BC THEN N'Выгружен на складе'
        ELSE N'Неизвестно'
    END AS [Статус],

    /* номенклатура */
    t._Fld3473RRef AS nom_1c_id,

    /* nom_1c_id в нужном формате */
    LOWER(
        SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 25, 8) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 21, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2), 17, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2),  1, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), t._Fld3473RRef, 2),  5, 12)
    ) AS artic_id,

    n._Description AS [Наименование],
    n._Code        AS code,
    n._Fld21043    AS [Артикул],

    t._Fld3477 AS [Количество],
    CONVERT(decimal(10, 2), t._Fld3477 / pack.base_pack) AS [Кол. упаковок],

    t._Fld3480 AS [Цена],
    t._Fld3481 AS [Сумма],

    g.g,
    g.path,

    /* Валюта + Сумма в руб. */
    v._Description AS [Валюта],
    z._Fld3414RRef AS currency_id,
    CASE v._Description
        WHEN 'USD' THEN t._Fld3481 * (
            SELECT rate
            FROM [analytics].[Курсы валют на сегодня]
            WHERE currency = 'USD2'
        )
        ELSE t._Fld3481 * (
            SELECT rate
            FROM [analytics].[Курсы валют на сегодня]
            WHERE currency = v._Description
        )
    END AS [Сумма в руб.]

FROM [MAG_2019].dbo._Document408X1 z
JOIN [MAG_2019].dbo._Document408_VT3470X1 t
    ON t._Document408_IDRRef = z._IDRRef

LEFT JOIN [MAG_2019].dbo._Document34036 za
    ON za._IDRRef = t._Fld34117RRef

LEFT JOIN [MAG_2019].dbo._Reference168 r
    ON r._IDRRef = z._Fld3410RRef

LEFT JOIN [pbi].[ПартнерыКонтрагенты] pc
    ON pc.cagent_id = LOWER(
        SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 25, 8) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 21, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2), 17, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2),  1, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r._IDRRef, 2),  5, 12)
    )

JOIN [MAG_2019].dbo._Reference188X1 n
    ON n._IDRRef = t._Fld3473RRef

LEFT JOIN [MAG_2019].dbo._Reference50 v
    ON v._IDRRef = z._Fld3414RRef

LEFT JOIN [pbi].[groups] g
    ON n._ParentIDRRef = g.[1c_id]

OUTER APPLY (
    SELECT TOP 1
        ISNULL(NULLIF(up.upakovka, 0), 1) AS base_pack
    FROM [pbi].[БазоваяУпаковка] up
    WHERE up._OwnerID_RRRef = t._Fld3473RRef
) AS pack

WHERE
    z._Posted = 1
    AND z._Marked = 0
    AND t._Fld3491RRef = 0;
GO

/****** Object:  View [analytics].[Заявки_без_проекта_неоплачено]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE VIEW [analytics].[Заявки_без_проекта_неоплачено] as
SELECT [Номер заявки]
      ,[Дата создания]
      ,[Дата оплаты план]
      ,[Статус]
      ,[Валюта]
      ,[Статья ДДС]
      ,[1c_dds_id]
      ,[dds id]
      ,[Сумма]
      ,[Сумма в руб.]
      ,[Оплачено]
      ,[Хоз. операция]
      ,[Комментарий заявки]
      ,[Комментарий расшифровки]
      ,[Партнер]
      ,[Получатель]
      ,[Форма оплаты]
      ,[organization]
      ,[project id]
      ,[1c_project_id]
  FROM [mag_pbi].[analytics].[Заявки_на_оплату_по_табличной_части]
  WHERE [Оплачено]=0 AND [project id] is null AND [Дата оплаты план] >= '2024-06-01'
GO

/****** Object:  View [analytics].[Заявки_на_оплату]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[Заявки_на_оплату]
AS SELECT
      [_Number] as 'Номер заявки'
	  , _Document416_IDRRef
      ,DATEADD(year, -2000, [_Fld3902]) as 'Дата оплаты план'
	  , CASE
			WHEN [_Fld3880RRef]= 0x96388D3803D0E2B243682753FD602008 THEN 'Согласована'
			WHEN [_Fld3880RRef] = 0xA53B783FB8E84C2D4A977FB197BB9B6A THEN 'Не согласована'
			WHEN [_Fld3880RRef] = 0xB22A4A3C82F7B70D452E0F89A2703597 THEN 'К оплате'
			WHEN [_Fld3880RRef] = 0x9EB3FD405C68C64C42B491437EDE1CAB THEN 'Отклонена'
		END as 'Статус'
      , [_Fld3882] as 'Сумма'
	  , case spv._Description
			WHEN 'USD' THEN [_Fld3882] * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency='USD2')
			ELSE [_Fld3882] * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency=spv._Description)
		END
		as 'Сумма в руб.'
	  , CASE WHEN (SELECT 
			SUM(CASE WHEN [_RecordKind] = 0 THEN [_Fld16211] ELSE -[_Fld16211] END) AS summ
		FROM [MAG_2019].[dbo].[_AccumRg16206] -- РегистрНакопления.ДенежныеСредстваКВыплате
		WHERE [_Fld16207_RRRef] = _Document416_IDRRef
		) = 0 THEN 1 ELSE 0 END as 'Оплачено'
	  , spv._Description as 'Валюта документа'	
	  ,DATEADD(year, -2000, [_Date_Time]) as [Дата создания] 
      --,DATEADD(year, -2000, [_Fld3890]) as 'Дата оплаты желат'
	  , LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), dr._Fld3957RRef, 2),5,12) ))as partner_id
	  , (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = dr._Fld3957RRef) as 'Партнер'
	  , (SELECT _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = r._Fld3891RRef)as 'Получатель'
	  ,[_Fld3900] as 'Комментарий'
      , (SELECT _Description FROM [MAG_2019].[dbo].[_Reference316] dds /*Справочник.СтатьиДвиженияДенежныхСредств*/ WHERE dds._IDRRef = r._Fld3904RRef) as 'Статья ДДС'
	  , e.value as 'Хоз. операция'
  FROM [MAG_2019].[dbo].[_Document416] r /*ЗаявкаНаРасходованиеДенежныхСредств */
	LEFT JOIN [MAG_2019].[dbo].[_Document416_VT3955] dr /*Документ.ЗаявкаНаРасходованиеДенежныхСредств.ТабличнаяЧасть.РасшифровкаПлатежа*/ ON r._IDRRef = dr._Document416_IDRRef
	LEFT JOIN mag_pbi.pbi.enums e ON e._IDRref = r.[_Fld3881RRef] AND e.enum = 'Хоз. операции'/*Перечисление хозяйственная операция*/
	LEFT JOIN [MAG_2019].[dbo].[_Reference50] spv ON spv._IDRRef = r.[_Fld3883RRef] /*Справочник.Валюты */ 


	--LEFT JOIN [MAG_2019].[dbo].[_AccumRg16206] 
 WHERE /*[_Fld3881RRef]=0xB96DB293C2F88D8C46DF79811923F574 AND */ r.[_Posted] = 0x01 AND r._Marked = 0x00
GO

/****** Object:  View [analytics].[Заявки_на_оплату_по_табличной_части]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE view [analytics].[Заявки_на_оплату_по_табличной_части] as
SELECT 
	z._Number as 'Номер заявки'
	--, z._Posted, z_t._Fld3964RRef, z._IDRRef
	, DATEADD(year, -2000, z.[_Date_Time]) as [Дата создания]
	--, DATEADD(year, -2000,z.[_Fld3902]) as 'Дата оплаты план'
	--, CONVERT(datetime2,  FORMAT(DATEADD(year, -2000, [_Fld3902]),'yyyy-MM-dd'), 120) as 'Дата оплаты план'
	,DATEADD(year, -2000, [_Fld3902]) as 'Дата оплаты план'
	, CASE
			WHEN z.[_Fld3880RRef]= 0x96388D3803D0E2B243682753FD602008 THEN 'Согласована'
			WHEN z.[_Fld3880RRef] = 0xA53B783FB8E84C2D4A977FB197BB9B6A THEN 'Не согласована'
			WHEN z.[_Fld3880RRef] = 0xB22A4A3C82F7B70D452E0F89A2703597 THEN 'К оплате'
			WHEN z.[_Fld3880RRef] = 0x9EB3FD405C68C64C42B491437EDE1CAB THEN 'Отклонена'
		END as 'Статус'
	, spv._Description as 'Валюта'
	, dds._Description as 'Статья ДДС'
	,  dds._IDRRef as '1c_dds_id'
	, LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), dds._IDRRef, 2),5,12) ))as 'dds id'
	, z_t._Fld3959 as 'Сумма'
	, case spv._Description
			WHEN 'USD' THEN _Fld3959 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency='USD2')
			ELSE _Fld3959 * (SELECT rate FROM [mag_pbi].[analytics].[Курсы валют на сегодня] WHERE currency=spv._Description)
		END
		as 'Сумма в руб.'
	, CASE WHEN (SELECT
			SUM(CASE WHEN [_RecordKind] = 0 THEN [_Fld16211] ELSE -[_Fld16211] END) AS summ
		FROM [MAG_2019].[dbo].[_AccumRg16206] -- РегистрНакопления.ДенежныеСредстваКВыплате
		WHERE [_Fld16207_RRRef] = _Document416_IDRRef
		) = 0 THEN 1 ELSE 0 END as 'Оплачено'
	, e.value as 'Хоз. операция'
	, z.[_Fld3900] as 'Комментарий заявки'
	, z_t.[_Fld3968] as 'Комментарий расшифровки'
	, (SELECT _description FROM [mag_2019].[dbo]._Reference215X1 prt /*партнеры*/ WHERE prt._IDRRef = z_t._Fld3957RRef) as 'Партнер'
	, (SELECT _Description FROM [mag_2019].[dbo]._Reference168 kt /*контрагенты*/ WHERE kt._IDRRef = z._Fld3891RRef)as 'Получатель'
	, case when org._Description = 'АНТУРАЖ ЛТД ООО' then 'Безнал' ELSE 'Наличные' END as 'Форма оплаты'
	, org._Description as 'organization'
	, p.id as 'project id'
	, p.[1c_id] as '1c_project_id'
FROM [MAG_2019].[dbo].[_Document416_VT3955] z_t /*Документ.ЗаявкаНаРасходованиеДенежныхСредств.ТабличнаяЧасть.РасшифровкаПлатежа*/
	INNER JOIN [MAG_2019].[dbo].[_Document416] z /* Документ.ЗаявкаНаРасходованиеДенежныхСредств */
		ON z._IDRRef = z_t._Document416_IDRRef 
	LEFT JOIN mag_pbi.pbi.enums e ON e._IDRref = z.[_Fld3881RRef] AND e.enum = 'Хоз. операции'/*Перечисление хозяйственная операция*/
	LEFT JOIN [MAG_2019].[dbo].[_Reference50] spv ON spv._IDRRef = z.[_Fld3883RRef] /*Справочник.Валюты */ 
	LEFT JOIN [MAG_2019].[dbo].[_Reference316] dds /*Справочник.СтатьиДвиженияДенежныхСредств*/ ON dds._IDRRef = z_t._Fld3964RRef
	LEFT JOIN [MAG_2019].[dbo].[_Reference198X1] org ON org._IDRRef = z._Fld3879RRef/*справочник организации*/
	LEFT JOIN [mag_pbi].[analytics].[Проекты] p
		ON p.[1c_id] = [_Fld28407RRef]
WHERE z._Posted = 1 AND z._Marked = 0x00
	AND z.[_Fld3880RRef] <> 0x9EB3FD405C68C64C42B491437EDE1CAB
GO

/****** Object:  View [analytics].[ЗаявкиТовары]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[ЗаявкиТовары] AS

WITH req AS (
    SELECT
        z._IDRRef AS zayavka_id,
        CONVERT(date, DATEADD(YEAR, -2000, z._Date_Time)) AS zayavka_date,
        z._Number AS zayavka_number,
        z._Fld34044RRef AS zayavka_status_ref,
        z._Fld34039RRef AS partner_1c_id,
        z._Fld34040RRef AS contractor_1c_id,
        CONVERT(decimal(18, 2), z._Fld34051) AS summa_doc,
        z._Fld34045RRef AS valuta_ref,
        CASE 
			WHEN z._Fld34118 = '00010101' THEN NULL 
			ELSE CONVERT(date, DATEADD(YEAR, -2000, z._Fld34118)) 
		END AS data_postupleniya,
        t._LineNo34053 AS line_no,
        t._Fld34054RRef AS nom_1c_id,
        CONVERT(decimal(18, 3), t._Fld34056) AS qty_initial,
        CONVERT(decimal(18, 2), t._Fld34059) AS summa_line
    FROM MAG_2019.dbo._Document34036 z
    JOIN MAG_2019.dbo._Document34036_VT34052 t ON t._Document34036_IDRRef = z._IDRRef
    WHERE z._Posted = 1 AND z._Marked = 0
),
deduct AS (
    SELECT
        tpo._Fld34117RRef AS zayavka_id,
        tpo._Fld3473RRef AS nom_1c_id,
        SUM(CONVERT(decimal(18, 3), tpo._Fld3477)) AS qty_deduct
    FROM MAG_2019.dbo._Document408X1 po
    JOIN MAG_2019.dbo._Document408_VT3470X1 tpo ON tpo._Document408_IDRRef = po._IDRRef
    WHERE
        po._Posted = 1
        AND po._Marked = 0
        AND tpo._Fld3491RRef = 0
        AND po._Fld3417RRef IN (
            0x99FD3E66AA3EFB074984044D5A69CFD5, /* В пути */
            0xA55F81415BA33BC24A053ED26C6EC02E, /* Закрыт */
            0xB2A33CF1C7286AF3463F20D54AE5A0BC, /* Выгружен на складе */
            0x97B9E76E7BCACEF3450504B1FAFC3230  /* Принят */
        )
    GROUP BY tpo._Fld34117RRef, tpo._Fld3473RRef
)

SELECT
    r.zayavka_date                          AS [Дата заявки],
    r.zayavka_number                        AS [Номер заявки],
    CASE r.zayavka_status_ref
        WHEN 0xB9D8F6098E165A4945FD453A8394D9A6 THEN N'Планируется'
        WHEN 0x89144CF303169EA446E30A9CFAC257D1 THEN N'На согласовании'
        WHEN 0x8734648F71AB3BE645DCAC11CF62F9AE THEN N'Выполнено'
        WHEN 0xA6CC3F7ADAD37C7D473BFD1D132A96E8 THEN N'В производстве'
        ELSE N'Неизвестно'
    END                                     AS [Статус заявки],
    prt._Description                        AS [Партнер],
	prt._IDRRef								AS [Партнер ссылка],
	LOWER(
        SUBSTRING(CONVERT(nvarchar(36), prt._IDRRef, 2), 25, 8) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), prt._IDRRef, 2), 21, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), prt._IDRRef, 2), 17, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), prt._IDRRef, 2), 1,  4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), prt._IDRRef, 2), 5,  12)
    )                                       AS partner_id,
    ctg._Description                        AS [Контрагент],
    val._Description                        AS [Валюта],
	val._IDRRef                             AS [Валюта ссылка],
	LOWER(
        SUBSTRING(CONVERT(nvarchar(36), val._IDRRef, 2), 25, 8) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), val._IDRRef, 2), 21, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), val._IDRRef, 2), 17, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), val._IDRRef, 2), 1,  4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), val._IDRRef, 2), 5,  12)
    )                                       AS val_id,

    /* ── Сумма документа ── */
    r.summa_doc                             AS [Сумма документа],
    CASE val._Description
        WHEN 'USD' THEN r.summa_doc *
            (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = 'USD2')
        ELSE r.summa_doc *
            (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = val._Description)
    END                                     AS [Сумма документа в руб],

    r.data_postupleniya AS [Дата поступления],
    ISNULL(man.manufacturer, N'Не найдено') AS manufacturer,
    ISNULL(man.ROI_norm, 136) / 100.0       AS roi_year_normalized,
    man.n_percent,
    man.n_days,
    man.m_percent,
    man.m_days,
    r.line_no                               AS line_no,
    r.nom_1c_id                             AS nom_1c_id,
    LOWER(
        SUBSTRING(CONVERT(nvarchar(36), r.nom_1c_id, 2), 25, 8) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r.nom_1c_id, 2), 21, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r.nom_1c_id, 2), 17, 4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r.nom_1c_id, 2), 1,  4) + '-' +
        SUBSTRING(CONVERT(nvarchar(36), r.nom_1c_id, 2), 5,  12)
    )                                       AS artic_id,
    n._Description                          AS [Номенклатура],
    n._Code                                 AS code,
    n._Fld21043                             AS [Артикул],
    g.g,
    g.path,

    /* ── Количество начальное ── */
    r.qty_initial                           AS [Количество начальное],
    CONVERT(decimal(18, 3), r.qty_initial / pack.base_pack)
                                            AS [Кол. упаковок начальное],

    /* ── Количество заказано (вычет) ── */
    ISNULL(d.qty_deduct, 0)                 AS [Количество заказано (вычет)],
    CONVERT(decimal(18, 3), ISNULL(d.qty_deduct, 0) / pack.base_pack)
                                            AS [Кол. упаковок заказано (вычет)],

    /* ── Количество текущее ── */
    CONVERT(decimal(18, 3), r.qty_initial - ISNULL(d.qty_deduct, 0))
                                            AS [Количество текущее],
    CONVERT(decimal(18, 3), (r.qty_initial - ISNULL(d.qty_deduct, 0)) / pack.base_pack)
                                            AS [Кол. упаковок текущее],

    /* ── Сумма строки начальная ── */
    r.summa_line                            AS [Сумма строки],
    CASE val._Description
        WHEN 'USD' THEN r.summa_line *
            (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = 'USD2')
        ELSE r.summa_line *
            (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = val._Description)
    END                                     AS [Сумма строки в руб],

    /* ── Сумма строки текущая (пропорционально текущему количеству) ── */
    CASE
        WHEN r.qty_initial = 0 THEN CONVERT(decimal(18, 2), 0)
        ELSE CONVERT(decimal(18, 2),
            r.summa_line / r.qty_initial * (r.qty_initial - ISNULL(d.qty_deduct, 0)))
    END                                     AS [Сумма строки текущая],
    CASE val._Description
        WHEN 'USD' THEN
            CASE WHEN r.qty_initial = 0 THEN 0
            ELSE r.summa_line / r.qty_initial * (r.qty_initial - ISNULL(d.qty_deduct, 0)) END *
            (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = 'USD2')
        ELSE
            CASE WHEN r.qty_initial = 0 THEN 0
            ELSE r.summa_line / r.qty_initial * (r.qty_initial - ISNULL(d.qty_deduct, 0)) END *
            (SELECT rate FROM [analytics].[Курсы валют на сегодня] WHERE currency = val._Description)
    END                                     AS [Сумма строки текущая в руб]

FROM req r
JOIN  MAG_2019.dbo._Reference188X1      n   ON n._IDRRef   = r.nom_1c_id
LEFT JOIN MAG_2019.dbo._Reference215X1  prt ON prt._IDRRef = r.partner_1c_id
LEFT JOIN MAG_2019.dbo._Reference168    ctg ON ctg._IDRRef = r.contractor_1c_id
LEFT JOIN MAG_2019.dbo._Reference50     val ON val._IDRRef = r.valuta_ref
LEFT JOIN analytics.manufacturer_counterparty_map map ON map.contractor_1c_id = r.contractor_1c_id
LEFT JOIN analytics.v_manufacturers_roi_compat    man ON man.id = map.manufacturer_id
LEFT JOIN pbi.[groups]                    g  ON n._ParentIDRRef = g.[1c_id]
OUTER APPLY (
    SELECT TOP 1 ISNULL(NULLIF(up.upakovka, 0), 1) AS base_pack
    FROM pbi.[БазоваяУпаковка] up
    WHERE up._OwnerID_RRRef = r.nom_1c_id
) AS pack
LEFT JOIN deduct d ON d.zayavka_id = r.zayavka_id AND d.nom_1c_id = r.nom_1c_id;
GO

/****** Object:  View [analytics].[Курсы валют на сегодня]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******//*
SELECT TOP (1000) [_Period]
      ,[_Fld13219RRef]
      ,[_Fld13220]
      ,[_Fld13221]
      --,[_Fld1150]
	  , r._Description
  FROM [MAG_2019].[dbo].[_InfoRg13218] i
  INNER JOIN [MAG_2019].[dbo].[_Reference50] r
	ON i._Fld13219RRef = r._IDRRef

	*/
CREATE VIEW analytics.[Курсы валют на сегодня] as

	SELECT
		r._Description as currency
		,( SELECT top 1 [_Fld13220] FROM [MAG_2019].[dbo].[_InfoRg13218] i WHERE i._Fld13219RRef = r._IDRRef ORDER BY  [_Period] DESC) as rate
	FROM 
	[MAG_2019].[dbo].[_Reference50] r
GO

/****** Object:  View [analytics].[Ожидаемое_поступление]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW [analytics].[Ожидаемое_поступление] as
SELECT
	d._Number as [Номер]
	, CONVERT(datetime2,  FORMAT(DATEADD(year, -2000, [_Date_Time]),'yyyy-MM-dd'), 120) as [Дата поступления] 
	, CASE _Fld5074RRef 
		WHEN 0xB5530D030E40BC264A41E266D1E84B1A then 'Безнал'
		WHEN 0xB3F668344C8DBA57427B6BC0D450CEA1 then 'Наличные'
		ELSE 'Любая'
		END as [Форма оплаты]
	, d._Fld5070 / 1000 as 'Сумма'
	, (SELECT _Description FROM [MAG_2019].[dbo].[_Reference316] dds /*Справочник.СтатьиДвиженияДенежныхСредств*/ WHERE dds._IDRRef = d._Fld5072RRef) as 'Статья ДДС'
	, (SELECT _Description FROM [MAG_2019].[dbo].[_Reference198X1] org WHERE org._IDRRef = d._Fld5069RRef) as 'Организация'
	, (SELECT _Description FROM [MAG_2019].[dbo].[_Reference50] spv /*Справочник.Валюты */ WHERE spv._IDRRef = d._Fld5071RRef) as 'Валюта документа'
	, d._Fld5073 as 'Назначение платежа'
FROM MAG_2019.dbo._Document443 d /* Документ.ОжидаемоеПоступлениеДенежныхСредств */
WHERE d._Marked = 0x00 AND d._Posted = 0x01

/*
0xB5530D030E40BC264A41E266D1E84B1A безнал
0xB3F668344C8DBA57427B6BC0D450CEA1 нал

*/
GO

/****** Object:  View [analytics].[Ожидаемый расход]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE VIEW [analytics].[Ожидаемый расход] as

SELECT 
      [Дата оплаты план]
      ,[Статья ДДС]
      ,[Сумма в руб.] / 1000 [Сумма в руб.]
      ,[Форма оплаты]
	  , 'Заявка' as [Тип]
	  , [Хоз. операция]
  FROM [mag_pbi].[analytics].[Заявки_без_проекта_неоплачено]

  UNION ALL

  SELECT [Месяц план]
      ,[Статья ДДС]
      ,[Сумма] / 1000 [Сумма]
      ,[Форма оплаты]
	  , 'Бюджет' as [Тип]
	  , 'Бюджет' as [Хоз. операция]
  FROM [mag_pbi].[analytics].[Бюджет ДДС]
GO

/****** Object:  View [analytics].[Остатки МП]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE VIEW analytics.[Остатки МП] as
	SELECT
		t.[Где товар],
		t.artic_id,
		t.[1c_id],
		sum(t.quantity) as quantity
	FROM (
		select 
			case 
				WHEN CHARINDEX('Ozon', [Узел])>0 then 'Ozon'
				WHEN CHARINDEX('WildBerries', [Узел])>0 then 'WildBerries'
				END 
				as 'Где товар'
			,
			[1c_id],
			[artic_id],
			sum([Доступное кол-во]) as quantity
		FROM [mag_pbi].[analytics].[Внешние остатки] as t
		WHERE t.[Дата обновления] >= FORMAT(GETDATE(), 'yyyy-MM-dd')
		group by Узел, [1c_id], [artic_id]
	) as t
	GROUP BY t.[Где товар],
		t.artic_id,
		t.[1c_id]
GO

/****** Object:  View [analytics].[Продажи_Учёт_Маржа_по_дням]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE   VIEW [analytics].[Продажи_Учёт_Маржа_по_дням]
AS
WITH base AS (
    -- Продажи и учетная сумма (только Статья = 'Реализация')
    SELECT
        CAST(s.[Период] AS date)      AS [d],
        s.[1c_id],
		s.Code,
        SUM(CAST(s.[Сумма] AS decimal(38,6)))              AS sales_sum,
        SUM(CAST(s.[Учетная сумма, руб] AS decimal(38,6))) AS accounting_sum,
        CAST(0 AS decimal(38,6))                           AS ads_cost,
        CAST(0 AS decimal(38,6))                           AS order_cost
    FROM [mag_pbi].[pbiProd].[СводныйСебестоимость Для PBI] AS s
    WHERE s.[Статья] = N'Реализация'
    GROUP BY CAST(s.[Период] AS date), s.[1c_id], s.Code

    UNION ALL

    -- Реклама (затраты)
    SELECT
        CAST(r.[Дата] AS date) AS [d],
        r.[1c_id],
		n.code,
        CAST(0 AS decimal(38,6)) AS sales_sum,
        CAST(0 AS decimal(38,6)) AS accounting_sum,
        SUM(CAST(r.[Затраты, руб] AS decimal(38,6))) AS ads_cost,
        CAST(0 AS decimal(38,6)) AS order_cost
    FROM [mag_pbi].[pbi].[РекламаМаркетплейсы] AS r
		INNER JOIN mag_pbi.pbi.nomenclature n ON r.[1c_id] = n.[1c_id]
    GROUP BY CAST(r.[Дата] AS date), r.[1c_id],n.code

    UNION ALL
	

    -- Стоимость обработки заказа (затраты)
    SELECT
        CAST(o.[date] AS date) AS [d],
        o.[1c_id],
		n.code,
        CAST(0 AS decimal(38,6)) AS sales_sum,
        CAST(0 AS decimal(38,6)) AS accounting_sum,
        CAST(0 AS decimal(38,6)) AS ads_cost,
        SUM(CAST(o.[Сумма] AS decimal(38,6))) AS order_cost
    FROM [mag_pbi].[pbi].[Стоимость обработки заказа] AS o
		INNER JOIN pbi.nomenclature n ON o.[1c_id] = n.[1c_id]
    GROUP BY CAST(o.[date] AS date), o.[1c_id], n.code
)
SELECT
    b.[d],
    b.[1c_id],
	b.Code,
    SUM(b.sales_sum)        AS [Сумма продаж],
    SUM(b.accounting_sum)   AS [Учетная сумма],
    SUM(b.ads_cost)         AS [Затраты на рекламу],
    SUM(b.order_cost)       AS [Стоимость обработки],
    -- «Чистая выручка» после вычета рекламных и обработочных затрат
    (SUM(b.sales_sum) - SUM(b.ads_cost) - SUM(b.order_cost)) AS [Сумма продаж (нетто)],
    -- Торговая надбавка = нетто-продажи минус учетная сумма
    (SUM(b.sales_sum) - SUM(b.ads_cost) - SUM(b.order_cost) - SUM(b.accounting_sum)) AS [Торговая надбавка]
FROM base b
GROUP BY b.[d], b.[1c_id],b.Code;



/*
SELECT 
      [Период] --datetime2(0)
      ,[Статья]
      ,[1c_id]
      ,[Количество]
      ,[Сумма]
      ,[Учетная сумма, руб]
  FROM [mag_pbi].[pbiProd].[СводныйСебестоимость Для PBI] s
  WHERE s.Статья = N'Реализация'

  SELECT 
	  [Дата] --datetime2(0)
      ,[1c_id]
      ,[Затраты, руб]
  FROM [mag_pbi].[pbi].[РекламаМаркетплейсы]

  SELECT 
	  [date] --datetime2(0)
      ,[1c_id]
      ,[Сумма]
  FROM [mag_pbi].[pbi].[Стоимость обработки заказа]
  */
GO

/****** Object:  View [analytics].[Проекты]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/

CREATE VIEW [analytics].[Проекты] as
SELECT 

	p.[_IDRRef] as '1c_id'
	, LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), p._IDRRef, 2),5,12) )) as 'id'
	, us._Description as 'Ответственный'
	,[_Code] as 'Код УТ'
	,p.[_Description] as 'Название'
	,[_Fld22715] as 'Завершен'
	
	,[_Fld22711] as 'ПлановаяДатаНачала'
	,[_Fld22712] as 'ДатаНачала'
	,[_Fld22713] as 'ПлановаяДатаОкончания'
	,[_Fld22714] as 'ДатаОкончания'
	,[_Fld22716]  as 'Комментарий'
	
FROM [MAG_2019].[dbo].[_Reference258] p /* Справочник.Проекты */
	LEFT JOIN [MAG_2019].[dbo].[_Reference228X1] us
		ON us._IDRRef = [_Fld22710RRef]
WHERE p._Marked = 0
GO

/****** Object:  View [analytics].[Товары на складах]    Script Date: 2026-03-02 11:21:57 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/****** Script for SelectTopNRows command from SSMS  ******/
CREATE view [analytics].[Товары на складах] as
	SELECT
		t._Fld17485RRef as [1c_id]
		, LOWER(CONCAT(SUBSTRING ( convert(nvarchar(36), t._Fld17485RRef, 2), 25,8),'-',SUBSTRING ( convert(nvarchar(36), t._Fld17485RRef, 2),21,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld17485RRef, 2),17,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld17485RRef, 2),1,4),'-',SUBSTRING ( convert(nvarchar(36), t._Fld17485RRef, 2),5,12) ))  
			as artic_id
		, s._Description as sklad
		, s.[Категория] as [Где товар]
		, sum( [_Fld17491]*(case _RecordKind when  0 then 1 when 1 then -1 end) ) as quantity
	FROM [mag_2019].[dbo].[_AccumRg17484] t /*регистр товары на складах*/
		--INNER JOIN [mag_2019].[dbo]._Reference188X1 n /*номенклатура*/ ON n._IDRRef = t._Fld17485RRef
		--INNER JOIN [mag_pbi].[pbi].[groups] g ON n._ParentIDRRef = g.[1c_id]
		INNER JOIN [mag_pbi].[pbi].[sklad_2019] s /*склад*/	ON s._IDRRef = t._Fld17488RRef
	WHERE s.[Категория]='Хранение' OR s.[Категория]='Фасовка' --g.path like 'Игрушки%'
	GROUP BY t._Fld17485RRef, s._Description, s.[Категория]
GO
