Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 11.87 KB | None | 0 0
  1. IF (OBJECT_ID('tempdb..#logistic_rt') IS NOT NULL)
  2.   DROP TABLE #logistic_rt;
  3.  
  4. IF (OBJECT_ID('tempdb..#detailing_flights_a_day_trip') IS NOT NULL)
  5.   DROP TABLE #detailing_flights_a_day_trip;
  6.  
  7. IF (OBJECT_ID('tempdb..#detailing_flights_a_day_railway') IS NOT NULL)
  8.   DROP TABLE #detailing_flights_a_day_railway;
  9.  
  10.  
  11. DECLARE @DATE datetime = '18.01.2019 00:00:00.000';
  12. DECLARE @filter_id INT = 5;
  13. DECLARE @warehouse_id INT = 4;
  14. DECLARE @todayStart datetime = @DATE;
  15. DECLARE @todayEnd datetime = DATEADD(HOUR, 8, DATEADD(DAY, 1, @DATE));
  16. DECLARE @todayEndCS datetime = DATEADD(DAY, 1, @DATE);
  17. DECLARE @notShippedDateStart datetime = DATEADD(MONTH, -1, @DATE);
  18.  
  19.  
  20. DECLARE @contractor_warehouse_id INT = (
  21.   CASE @warehouse_id
  22.     WHEN 0 THEN 14327
  23.     WHEN 1 THEN 14329
  24.     WHEN 2 THEN 14326
  25.     WHEN 3 THEN 14328
  26.     WHEN 4 THEN 18784
  27.     WHEN 5 THEN 19533
  28.     END
  29.   );
  30.  
  31. DECLARE @table_trip_id AS table_trip_id;
  32. INSERT INTO @table_trip_id
  33. SELECT tct.id
  34. FROM tc_trip tct
  35. WHERE tct.factory_id = 1
  36.   AND tct.TYPE <> 3
  37.   AND tct.TYPE <> 5
  38.   AND (
  39.     (
  40.           tct.date_load_plan_oper IS NOT NULL AND
  41.           (tct.date_load_plan_oper < @todayEnd AND tct.date_load_plan_oper >= @todayStart)
  42.         OR
  43.           tct.date_load_plan_oper IS NULL AND (tct.date_load_plan < @todayEndCS AND tct.date_load_plan >= @todayStart)
  44.       ) OR (
  45.           tct.date_come < @todayEnd AND tct.date_come > @todayStart
  46.       ) OR (
  47.         tct.date_shipped_fact IS NULL AND
  48.         (tct.date_load_plan_oper < @todayEnd AND tct.date_load_plan_oper >= @notShippedDateStart)
  49.       )
  50.     OR (tct.date_shipped_fact IS NULL AND (tct.date_come < @todayEnd AND tct.date_come >= @notShippedDateStart))
  51.   )
  52.  
  53.  
  54. DECLARE @info_xml TABLE
  55.                   (
  56.                     trip_id        INT,
  57.                     zakaz_id       INT,
  58.                     saleman_name   VARCHAR(MAX),
  59.                     NAK_ID         VARCHAR(MAX),
  60.                     zayavka        INT,
  61.                     brut           FLOAT,
  62.                     net            FLOAT,
  63.                     korob_count    INT,
  64.                     consignee_name VARCHAR(MAX),
  65.                     shipping_id    VARCHAR(MAX),
  66.                     material_name  VARCHAR(MAX),
  67.                     box_name       VARCHAR(MAX),
  68.                     material_id    VARCHAR(MAX),
  69.                     box_id         VARCHAR(MAX),
  70.                     pogruz_name    VARCHAR(MAX),
  71.                     stack_name     VARCHAR(MAX)
  72.                   );
  73. INSERT INTO @info_xml
  74. SELECT tct.id,
  75.        zh.id,
  76.        cc.name,
  77.        o.NAK_ID,
  78.        zh.num,
  79.        zt.kor * cmap.box_gross AS brut,
  80.        zt.kor * cmap.box_net   AS net,
  81.        zt.kor                  AS korob_count,
  82.        cc2.name                AS consignee_name,
  83.        cmap.shipping_id        AS shipping_id,
  84.        m.name                  AS material_name,
  85.        box.box_name            AS box_name,
  86.        m.id                    AS material_id,
  87.        box.box_id,
  88.        pogruz.pogruz_name,
  89.        ps.stack_name
  90. FROM tc_trip tct
  91.        INNER JOIN tc_trip_zakaz tctz ON tct.id = tctz.tc_trip_id
  92.        INNER JOIN zakaz_hat zh ON zh.id = tctz.zakaz_hat_id
  93.        LEFT JOIN zakaz_tab zt ON zt.id = zh.id
  94.        LEFT JOIN zakaz_order_id_arc o ON o.ZAKAZ_ID = zh.id
  95.        INNER JOIN co_contractor_attr_customer ccac ON ccac.distr_id = zh.saleman_id
  96.        INNER JOIN co_contractor cc ON cc.id = ccac.contractor_id
  97.        LEFT JOIN co_material m ON m.id = zt.material_id
  98.        LEFT JOIN co_material_attr_prod_db cmap ON cmap.material_id = m.id
  99.        INNER JOIN @table_trip_id tt ON tt.trip_id = tct.id
  100.        LEFT JOIN co_contractor_attr_customer ccac2 ON ccac2.distr_id = zh.consignee_id
  101.        LEFT JOIN co_contractor cc2 ON cc2.id = ccac2.contractor_id
  102.        LEFT JOIN ver_zaivka_prod vzp
  103.                  ON vzp.ver_id = zh.ver_id AND vzp.zaivka_id = zh.zaivka_id AND vzp.material_id = m.id
  104.        LEFT JOIN prod_pogruz pp
  105.                  ON pp.ver_id = vzp.ver_id AND pp.zaivka_id = vzp.zaivka_id AND pp.material_id = vzp.material_id
  106.        LEFT JOIN pogruz ON pogruz.pogruz_id = pp.pogruz_id
  107.        LEFT JOIN box ON box.box_id = pogruz.box_id
  108.        JOIN prod_stacking ps ON ps.stack_id = vzp.stack_id;
  109.  
  110.  
  111. SELECT * INTO #logistic_rt
  112. FROM [f_get_logistic_factory_route_by_trips](@table_trip_id)
  113.  
  114.  
  115. SELECT tct.id        trip_id,
  116.        rt.warehouse_id,
  117.        i2.saleman_name,
  118.        i2.consignee_name,
  119.        i2.zayavka AS zakaz_hat,
  120.        i2.NAK_ID,
  121.        i2.net,
  122.        i2.brut,
  123.        i2.shipping_id,
  124.        i2.material_name,
  125.        i2.korob_count,
  126.        i2.box_name,
  127.        i2.material_id,
  128.        i2.box_id,
  129.        i2.pogruz_name,
  130.        i2.stack_name
  131.        INTO #detailing_flights_a_day_trip
  132. FROM [nefco].[dbo].[tc_trip] tct
  133.        LEFT JOIN #logistic_rt rt ON rt.trip_id = tct.id
  134.        LEFT JOIN loading_points_time lpt ON lpt.trip_id = tct.id AND lpt.point_id = rt.warehouse_id
  135.        JOIN @info_xml i2 ON i2.trip_id = tct.id
  136. WHERE rt.warehouse_id = @warehouse_id
  137.   AND (
  138.     (@filter_id = 0)
  139.     OR
  140.     (@filter_id = 1 AND lpt.end_load IS NOT NULL)
  141.     OR
  142.     (@filter_id = 2 AND lpt.zakaz_ready IS NOT NULL AND lpt.end_load IS NULL)
  143.     OR
  144.     (@filter_id = 3 AND lpt.start_load IS NOT NULL AND lpt.end_load IS NULL)
  145.     OR
  146.     (@filter_id = 4 AND lpt.start_load IS NULL AND tct.date_come IS NOT NULL)
  147.     OR
  148.     (@filter_id = 5 AND lpt.end_load IS NULL)
  149.   )
  150. GROUP BY tct.id,
  151.          warehouse_id,
  152.          saleman_name,
  153.          consignee_name,
  154.          zayavka,
  155.          NAK_ID,
  156.          net,
  157.          brut,
  158.          shipping_id,
  159.          material_name,
  160.          korob_count,
  161.          box_name,
  162.          material_id,
  163.          box_id,
  164.          pogruz_name,
  165.          stack_name
  166. ORDER BY trip_id, zakaz_hat
  167.  
  168.  
  169. SELECT a.trip_id,
  170.        a.warehouse_id,
  171.        a.saleman_name,
  172.        a.consignee_name,
  173.        a.zakaz_hat,
  174.        a.NAK_ID,
  175.        SUM(a.net)  net,
  176.        SUM(a.brut) brut,
  177.        a.shipping_id,
  178.        a.material_name,
  179.        a.korob_count,
  180.        a.box_name,
  181.        a.material_id,
  182.        a.box_id,
  183.        a.pogruz_name,
  184.        a.stack_name
  185.  
  186.        INTO #detailing_flights_a_day_railway
  187. FROM (
  188.        SELECT tct.id                             AS trip_id,
  189.               h.num                              AS zakaz_hat,
  190.               cmap.shipping_id                   AS shipping_id,
  191.               NAK_ID =
  192.               CAST(REPLACE(STUFF((
  193.                                    SELECT CASE
  194.                                             WHEN zoia.NAK_ID IS NOT NULL THEN (', ' + CAST(zoia.NAK_ID AS VARCHAR(11)))
  195.                                             ELSE '' END,
  196.                                           CASE
  197.                                             WHEN COUNT(*) > 1 THEN '(' + CONVERT(VARCHAR(MAX), COUNT(*)) + ')'
  198.                                             ELSE '' END
  199.                                    FROM zakaz_order_id_arc zoia
  200.                                    WHERE zoia.ZAKAZ_ID = h.id
  201.                                      AND zoia.warehouse_id = @contractor_warehouse_id
  202.                                    GROUP BY zoia.NAK_ID FOR
  203.                                      XML PATH ('')
  204.                                  ), 1, 1, ''), ' ,', ', ') AS VARCHAR(1000)
  205.                 ),
  206.               CASE
  207.                 WHEN zlw.contractor_id IS NOT NULL THEN 4 -- Логистический
  208.                 WHEN cmap.warehouse_id IN (14327) THEN 0 -- ЖМС
  209.                 WHEN cmap.warehouse_id IN (14329) THEN 1 -- СЧС
  210.                 WHEN cmap.warehouse_id IN (14326) THEN 2 -- СМС
  211.                 WHEN cmap.warehouse_id IN (14328) THEN 3 -- ТМ
  212.                 WHEN cmap.warehouse_id IN (19533) THEN 5 -- Аромат
  213.                 ELSE lcw.warehouse_id
  214.                 END                                 warehouse_id,
  215.               zt.kor * cmap.box_gross            AS brut,
  216.               zt.kor * cmap.box_net              AS net,
  217.  
  218.  
  219.               m.id                               AS material_id,
  220.               m.name                             AS material_name,
  221.               vzp.ver_id,
  222.               vzp.zaivka_id,
  223.               zt.kor                             AS korob_count,
  224.               ps.stack_name,
  225.               pp.pogruz_id,
  226.  
  227.               pogruz.pogruz_name,
  228.               pogruz.hkor_norma,                                   -- Кол-во коробов в высоту
  229.               pogruz.row_kor,                                      -- Кол-во коробов в ряду
  230.               pogruz.hkor_norma * pogruz.row_kor AS pallet_korobs, -- Кол-во коробов в паллете
  231.               box.box_id,
  232.               box.box_name,
  233.               cc.name                            AS saleman_name,
  234.               cc2.name                           AS consignee_name
  235.        FROM tc_trip_railways tct
  236.               JOIN tc_trip_railways_zakaz tcz ON tcz.tc_trip_railways_id = tct.id
  237.               JOIN loading_points_time_railways lpt ON lpt.tc_trip_railway_id = tct.id AND lpt.point_id = @warehouse_id
  238.               JOIN zakaz_hat h ON h.id = tcz.zakaz_hat_id
  239.               JOIN zakaz_tab zt ON zt.id = h.id
  240.               JOIN co_material m ON m.id = zt.material_id
  241.               JOIN co_material_attr_prod_db cmap ON cmap.material_id = m.id
  242.               JOIN co_material_attr_details det
  243.                    ON det.id = cmap.category AND det.material_attr_id = 21 AND det.factory_id = 1
  244.               LEFT JOIN loading_category_warehouse lcw ON lcw.category_id = det.id
  245.               INNER JOIN dbo.co_contractor_attr_customer ccac ON h.saleman_id = ccac.distr_id
  246.               LEFT JOIN zakaz_logistic_warehouse zlw ON zlw.contractor_id = ccac.contractor_id
  247.  
  248.               JOIN ver_zaivka_prod vzp
  249.                    ON vzp.ver_id = h.ver_id AND vzp.zaivka_id = h.zaivka_id AND vzp.material_id = m.id
  250.               JOIN prod_stacking ps ON ps.stack_id = vzp.stack_id
  251.               JOIN prod_pogruz pp
  252.                    ON pp.ver_id = vzp.ver_id AND pp.zaivka_id = vzp.zaivka_id AND pp.material_id = vzp.material_id
  253.               JOIN pogruz ON pogruz.pogruz_id = pp.pogruz_id
  254.               JOIN box ON box.box_id = pogruz.box_id
  255.               LEFT JOIN co_contractor cc ON cc.id = ccac.contractor_id
  256.               LEFT JOIN co_contractor_attr_customer ccac2 ON ccac2.distr_id = h.consignee_id
  257.               LEFT JOIN co_contractor cc2 ON cc2.id = ccac2.contractor_id
  258.        WHERE ((CAST(tct.date_load_plan AS DATE) = @DATE AND
  259.                (tct.transp_company IS NOT NULL AND tct.transp_company IS NULL)))
  260.           OR (CAST(tct.date_load_plan AS DATE) = DATEADD(DAY, -1, @DATE))
  261.           OR (CAST(tct.date_load_plan AS DATE) > DATEADD(DAY, -7, @DATE))
  262.          AND (tct.transp_company IS NOT NULL)
  263.          AND (tct.date_shipped IS NULL OR @DATE < @DATE)
  264.          AND (
  265.                  (@filter_id = 0)
  266.                  OR
  267.                  (@filter_id = 1 AND lpt.end_load IS NOT NULL)
  268.                  OR
  269.                  (@filter_id = 2 AND lpt.zakaz_ready IS NOT NULL AND lpt.end_load IS NULL)
  270.                  OR
  271.                  (@filter_id = 3 AND lpt.start_load IS NOT NULL AND lpt.end_load IS NULL)
  272.                  OR
  273.                  (@filter_id = 4 AND lpt.start_load IS NULL AND tct.date_shipped IS NULL AND tct.date_fact IS NOT NULL)
  274.                  OR
  275.                  (@filter_id = 5 AND lpt.end_load IS NULL)
  276.                )
  277.      ) a
  278. WHERE a.warehouse_id = @warehouse_id
  279. GROUP BY a.trip_id,
  280.          a.warehouse_id,
  281.          a.saleman_name,
  282.          a.consignee_name,
  283.          a.zakaz_hat,
  284.          a.NAK_ID,
  285.          net,
  286.          brut,
  287.          a.shipping_id,
  288.          a.material_name,
  289.          a.korob_count,
  290.          a.box_name,
  291.          a.material_id,
  292.          a.box_id,
  293.          a.pogruz_name,
  294.          a.stack_name
  295. ORDER BY trip_id, zakaz_hat
  296.  
  297.  
  298. SELECT *
  299. FROM #detailing_flights_a_day_trip
  300. UNION
  301. SELECT *
  302. FROM #detailing_flights_a_day_railway;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement