Advertisement
andersonvidal94

Untitled

Sep 4th, 2019
240
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. -- INSERT new vendor data
  2.  
  3. INSERT INTO gpi_product_flatfile_line(
  4.     product_tmpl_id, vendor_price, vendor_mx_price, vendor_quantity
  5.     , vendor_support, product_price, product_mx_price, product_us_price, state, price_currency, set_price
  6.     , create_uid, write_uid, create_date, write_date
  7. )
  8. SELECT
  9.     psi.product_tmpl_id
  10.     , round((max(psi.price)*1.2), 2) AS vendor_price
  11.     , round((max(psi.price)*1.2), 2) AS vendor_mx_price -- must update module gpi before use this field
  12.     , sum(psi.vendor_qty_avbl) AS vendor_quantity
  13.     -- , psi.vendor_qty_avbl
  14.     , True AS vendor_support
  15.     , 0.0 AS product_price
  16.     , 'done' AS state
  17.     , 'USD' AS price_currency, 'auto' AS set_price
  18.     , 1 AS create_uid, 1 AS write_uid
  19.     , current_date + time '09:00:00' AS create_date
  20.     , current_date + time '09:00:00' AS write_date
  21.     -- count(psi.product_tmpl_id)
  22. FROM
  23.     product_supplierinfo psi
  24.     LEFT JOIN gpi_product_flatfile_line tmp
  25.         ON psi.product_tmpl_id = tmp.product_tmpl_id
  26. WHERE
  27.     psi.company_id = 1 AND
  28.     psi.name IN (13832,13860) AND
  29.     tmp.product_tmpl_id is NULL
  30. GROUP BY psi.product_tmpl_id
  31. ORDER BY psi.product_tmpl_id;
  32. -- LIMIT 10;
  33.  
  34.  
  35. -- UPDATE ODOO MX STOCK and PRICE
  36.  
  37. UPDATE gpi_product_flatfile_line SET
  38.     product_mx_qty = res.qty,
  39.     vendor_mx_price = res.price_final
  40. FROM(
  41.  WITH t AS (
  42.         SELECT
  43.             qt.company_id, qt.product_id, pp.product_tmpl_id, sum (qt.qty) qty
  44.             ,round(avg(qt.cost) * (1 + pc.cyber_per/100.0)) as price_final -- pc.cyber_per se cambia por pc.cyber_per_mx
  45.  
  46.         FROM
  47.             product_product pp
  48.             INNER JOIN stock_quant qt ON pp.id = qt.product_id
  49.             INNER JOIN gpi_flatfile_product_locatoin_rel loc
  50.                 ON loc.location_id = qt.location_id
  51.             left join product_template pt on pp.product_tmpl_id = pt.id
  52.             LEFT JOIN product_category pc on pt.categ_id = pc.id
  53.         WHERE
  54.             qt.company_id = 6 AND pp.active = True
  55.         GROUP BY qt.company_id, qt.product_id, pp.product_tmpl_id, pc.cyber_per
  56.         ORDER BY pp.product_tmpl_id
  57.     )
  58.     SELECT
  59.         f.product_tmpl_id pt_id
  60.         , t.company_id, t.product_id
  61.         , f.product_mx_qty f_mx_qty
  62.         , t.price_final as vendor_mx_price
  63.         , CASE WHEN t.qty is NULL THEN 0 ELSE t.qty END AS qty
  64.     FROM
  65.         gpi_product_flatfile_line f
  66.         LEFT JOIN t ON f.product_tmpl_id = t.product_tmpl_id
  67. ) res
  68. WHERE product_tmpl_id = res.pt_id;
  69.     -- AND product_mx_qty <> res.qty;
  70.  
  71.  
  72. -- UPDATE ODOO US STOCK
  73.  
  74. UPDATE gpi_product_flatfile_line SET
  75.     product_us_qty = res.qty
  76. FROM(
  77.     WITH t AS (
  78.         SELECT
  79.             qt.company_id, qt.product_id, pp.product_tmpl_id, sum (qt.qty) qty
  80.         FROM
  81.             product_product pp
  82.             INNER JOIN stock_quant qt ON pp.id = qt.product_id
  83.             INNER JOIN gpi_flatfile_product_locatoin_rel loc
  84.                 ON loc.location_id = qt.location_id
  85.         WHERE
  86.             qt.company_id = 1 AND pp.active = True
  87.         GROUP BY qt.company_id, qt.product_id, pp.product_tmpl_id
  88.         ORDER BY pp.product_tmpl_id
  89.     )
  90.     SELECT
  91.         f.product_tmpl_id pt_id
  92.         , t.company_id, t.product_id
  93.         , f.product_us_qty f_us_qty
  94.         , CASE WHEN t.qty is NULL THEN 0 ELSE t.qty END AS qty
  95.     FROM
  96.         gpi_product_flatfile_line f
  97.         LEFT JOIN t ON f.product_tmpl_id = t.product_tmpl_id
  98. ) res
  99. WHERE product_tmpl_id = res.pt_id;
  100.     -- AND product_us_qty <> res.qty;
  101.  
  102.  
  103. -- UPDATE VENDOR QTY
  104.  
  105. UPDATE gpi_product_flatfile_line SET
  106.     vendor_price = res.psi_price_final
  107.     , vendor_quantity = res.psi_quantity
  108.     , write_date = current_date + time '09:00:00'
  109.     , write_uid = 1
  110. FROM(
  111.     SELECT
  112.         psi.product_tmpl_id pt_id
  113.         , max(psi.price) as psi_price
  114.         , round((max(psi.price)+(max(psi.price)*pc.cyber_per/100)), 2) as psi_price_final
  115.         , sum(psi.vendor_qty_avbl) psi_quantity
  116.         -- count(psi.product_tmpl_id)
  117.     FROM
  118.         product_supplierinfo psi
  119.         LEFT JOIN product_template pt
  120.             ON psi.product_tmpl_id = pt.id
  121.         LEFT JOIN product_category pc
  122.             ON pt.categ_id = pc.id
  123.         INNER JOIN gpi_product_flatfile_line tmp
  124.             ON psi.product_tmpl_id = tmp.product_tmpl_id
  125.     WHERE
  126.         psi.company_id = 1 AND
  127.         psi.name IN (13832,13860)
  128.         -- and tmp.product_tmpl_id is null
  129.     GROUP BY psi.product_tmpl_id, pc.cyber_per
  130.     ORDER BY psi.product_tmpl_id
  131.     -- LIMIT 10
  132. ) res
  133. WHERE
  134.     product_tmpl_id = res.pt_id
  135.     AND vendor_support = TRUE;
  136.     -- AND (vendor_price <> res.psi_price_final OR vendor_quantity <> res.psi_quantity);
  137.  
  138.  
  139.  
  140. -- generate CSV file
  141.  
  142. COPY(
  143.      SELECT
  144.         tmp."Internal Code", tmp."Seller SKU", tmp."EAN", tmp."Product Name",
  145.         tmp."Product Desc", tmp."Brand Name", tmp."USA Vendor Price",
  146.         tmp."MEX Vendor Price", tmp."USA CURRENCY", tmp."MEX CURRENCY",
  147.         tmp."USA Quantity", tmp."MEX Quantity"
  148.     FROM (
  149.         SELECT
  150.             row_number() OVER(PARTITION BY pt.default_code ORDER BY pt.default_code) row_num
  151.             , pt.default_code AS "Internal Code"
  152.             , pt.seller_sku AS "Seller SKU"
  153.             , pt.etilize_ean AS "EAN"
  154.             , pt.name AS "Product Name"
  155.             , pt.description_sale AS "Product Desc"
  156.             , pt.brand_name AS "Brand Name"
  157.             , CASE
  158.                 WHEN l.set_price = 'auto' THEN l.vendor_price
  159.                 ELSE l.product_price
  160.                 END AS "USA Vendor Price"
  161.             , l.vendor_mx_price as "MEX Vendor Price" -- pendiente actualizar el modulo gpi para que este campo exista
  162.             , 'USD' as "USA CURRENCY"
  163.             , 'USD' as "MEX CURRENCY"
  164.             , CASE
  165.                 WHEN l.vendor_support = True AND (l.product_us_qty + l.vendor_quantity) > 4
  166.                     THEN (l.product_us_qty + l.vendor_quantity)
  167.                 WHEN l.vendor_support = False AND l.product_us_qty > 4
  168.                     THEN l.product_us_qty
  169.                 ELSE 0
  170.                 END AS "USA Quantity"
  171.             , CASE WHEN l.product_mx_qty > 0
  172.                 THEN product_mx_qty
  173.                 ELSE 0
  174.                 END AS "MEX Quantity"
  175.         FROM
  176.             gpi_product_flatfile_line l
  177.             INNER JOIN product_template pt
  178.                 ON l.product_tmpl_id = pt.id
  179.        WHERE
  180.             --(pt.brand_name is not null and trim(pt.brand_name) != '') AND este filtro se elimino por peticion email
  181.             l.state = 'done'
  182.             AND (l.product_mx_qty > 0 OR (l.product_us_qty + l.vendor_quantity) > 4)
  183.         -- GROUP BY 1,2,3,4,5,6,7
  184.         -- LIMIT 10
  185.     ) tmp
  186.      WHERE
  187.         tmp."row_num" = 1
  188.         AND tmp."USA Vendor Price" > 0
  189.      -- AND tmp."MEX Vendor Price" > 0 --pendiete por confirmar esta condición
  190.         AND (tmp."USA Quantity" > 4 OR tmp."MEX Quantity" > 0)
  191. ) to '/odoo-september/auto_start/cyber_file/cyberpuerta.csv' DELIMITER ',' QUOTE '"' CSV HEADER;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement