r2d2_amx

Query1_7548.sql

Nov 4th, 2025
1,285
0
17 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. SELECT
  2.   '??' AS "Conjunt",
  3.   COALESCE(anal_a.cuenta_analitica, anal_sol.cuenta_analitica) AS "Cuenta analítica",
  4.   b.name AS "Número Factura",
  5.   CASE
  6.     WHEN b.move_type = 'out_refund'
  7.       THEN replace(to_char(a.price_subtotal * (-1)::numeric, '999999990D99'), '.', ',')
  8.     ELSE replace(to_char(a.price_subtotal, '999999990D99'), '.', ',')
  9.   END AS "Subtotal",
  10.   a.name AS "Descripción",
  11.   e.name AS "Cliente",
  12.   soinfo.oferta AS "Oferta",
  13.   b.invoice_date AS "Fecha factura",
  14.   b.invoice_date_due AS "Vencimiento",
  15.   f.name AS "Compañía",
  16.   CASE
  17.     WHEN b.state = 'draft' THEN 'Borrador'
  18.     WHEN b.state = 'posted' AND b.payment_state IN ('not_paid','partial','in_payment') THEN 'Facturado'
  19.     WHEN b.state = 'posted' AND b.payment_state = 'paid' THEN 'Pagado'
  20.     ELSE b.state
  21.   END AS "Estado factura",
  22.   soinfo.fecha_aprobacion AS "Fecha aprobación",
  23.   COALESCE(anal_a.proyecto, anal_sol.proyecto) AS "Proyecto",
  24.   '??' AS "Previsión de Cierre",
  25.   '??' AS "Estado Proyecto",
  26.   replace(to_char(soinfo.importe_vendido, '9999999999D99'), '.', ',') AS "Importe vendido",
  27.   '??' AS "Responsable Proyecto"
  28. FROM account_move_line a
  29. JOIN account_move b ON b.id = a.move_id
  30. LEFT JOIN res_partner e ON e.id = b.partner_id
  31. LEFT JOIN res_company f ON f.id = b.company_id
  32. LEFT JOIN LATERAL (
  33.   SELECT
  34.     string_agg(DISTINCT
  35.       CASE WHEN pg_typeof(ap.name) = 'jsonb'::regtype
  36.            THEN COALESCE(ap.name->>'es_ES', ap.name->>'en_US')
  37.            ELSE ap.name::text END, ', ') AS cuenta_analitica,
  38.     string_agg(DISTINCT
  39.       CASE WHEN pg_typeof(aa.name) = 'jsonb'::regtype
  40.            THEN COALESCE(aa.name->>'es_ES', aa.name->>'en_US')
  41.            ELSE aa.name::text END, ', ') AS proyecto
  42.   FROM jsonb_each(COALESCE(a.analytic_distribution::jsonb, '{}'::jsonb)) kv
  43.   JOIN account_analytic_account aa ON aa.id = (kv.key)::int
  44.   LEFT JOIN account_analytic_plan ap ON ap.id = aa.plan_id
  45. ) anal_a ON TRUE
  46. LEFT JOIN (
  47.   SELECT
  48.     j.invoice_line_id AS aml_id,
  49.     string_agg(DISTINCT so.name::text, ', ') AS oferta,
  50.     MIN(so.date_order) AS fecha_aprobacion,
  51.     SUM(DISTINCT so.amount_untaxed) AS importe_vendido
  52.   FROM sale_order_line_invoice_rel j
  53.   JOIN sale_order_line sol ON sol.id = j.order_line_id
  54.   JOIN sale_order so ON so.id = sol.order_id
  55.   GROUP BY j.invoice_line_id
  56. ) soinfo ON soinfo.aml_id = a.id
  57. LEFT JOIN LATERAL (
  58.   SELECT
  59.     string_agg(DISTINCT
  60.       CASE WHEN pg_typeof(ap.name) = 'jsonb'::regtype
  61.            THEN COALESCE(ap.name->>'es_ES', ap.name->>'en_US')
  62.            ELSE ap.name::text END, ', ') AS cuenta_analitica,
  63.     string_agg(DISTINCT
  64.       CASE WHEN pg_typeof(aa.name) = 'jsonb'::regtype
  65.            THEN COALESCE(aa.name->>'es_ES', aa.name->>'en_US')
  66.            ELSE aa.name::text END, ', ') AS proyecto
  67.   FROM sale_order_line_invoice_rel j2
  68.   JOIN sale_order_line sol2 ON sol2.id = j2.order_line_id
  69.   JOIN LATERAL jsonb_each(COALESCE(sol2.analytic_distribution::jsonb, '{}'::jsonb)) kv2 ON TRUE
  70.   JOIN account_analytic_account aa ON aa.id = (kv2.key)::int
  71.   LEFT JOIN account_analytic_plan ap ON ap.id = aa.plan_id
  72.   WHERE j2.invoice_line_id = a.id
  73. ) anal_sol ON TRUE
  74.  
  75. WHERE b.state <> 'cancel'
  76.   AND b.invoice_date >= DATE '2018-12-31'
  77.   AND b.move_type IN ('out_invoice','out_refund')
  78.   AND (a.display_type IS NULL OR a.display_type = 'product');
  79.  
Advertisement
Add Comment
Please, Sign In to add comment