Advertisement
Guest User

Untitled

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