Skip to content

Commit 35e822d

Browse files
update example pairs
1 parent 8a182f6 commit 35e822d

File tree

1 file changed

+34
-25
lines changed

1 file changed

+34
-25
lines changed

app/modules/example_pairs.py

Lines changed: 34 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -197,28 +197,35 @@ def get_example_pairs():
197197
COALESCE(pt.name->>'pt_BR', pt.name->>'en_US', pt.name::text) AS produto,
198198
pt.default_code AS referencia,
199199
ROUND(SUM(sol.product_uom_qty), 2) AS total_vendido,
200-
COALESCE(SUM(sq.quantity - sq.reserved_quantity), 0) AS estoque_atual
201-
FROM
202-
sale_order_line sol
203-
JOIN
204-
sale_order so ON sol.order_id = so.id
205-
JOIN
206-
product_product pp ON sol.product_id = pp.id
207-
JOIN
208-
product_template pt ON pp.product_tmpl_id = pt.id
209-
LEFT JOIN
210-
stock_quant sq ON sq.product_id = pp.id
211-
LEFT JOIN
212-
stock_location sl ON sq.location_id = sl.id
200+
COALESCE(SUM(q.estoque), 0) AS estoque_atual
201+
FROM sale_order_line sol
202+
JOIN sale_order so
203+
ON sol.order_id = so.id
204+
JOIN product_product pp
205+
ON sol.product_id = pp.id
206+
JOIN product_template pt
207+
ON pp.product_tmpl_id = pt.id
208+
LEFT JOIN (
209+
SELECT
210+
sq.product_id,
211+
SUM(sq.quantity - sq.reserved_quantity) AS estoque
212+
FROM stock_quant sq
213+
JOIN stock_location sl
214+
ON sq.location_id = sl.id
215+
WHERE sl.usage = 'internal'
216+
GROUP BY sq.product_id
217+
) AS q
218+
ON q.product_id = pp.id
213219
WHERE
214-
so.state IN ('sale', 'done') -- apenas pedidos confirmados
220+
so.state IN ('sale', 'done')
215221
AND so.date_order >= (NOW() - INTERVAL '30 days')
216-
AND (sl.usage IS NULL OR sl.usage = 'internal') -- estoque interno apenas
217222
GROUP BY
218-
pt.id, pt.name, pt.default_code
223+
pt.id,
224+
pt.default_code,
225+
produto
219226
HAVING
220227
SUM(sol.product_uom_qty) > 0
221-
AND COALESCE(SUM(sq.quantity - sq.reserved_quantity), 0) = 0
228+
AND COALESCE(SUM(q.estoque), 0) = 0
222229
ORDER BY
223230
total_vendido DESC;
224231
""",
@@ -227,23 +234,25 @@ def get_example_pairs():
227234
"question": "Quais produtos não têm estoque disponível?",
228235
"sql": """
229236
SELECT
230-
COALESCE(pt.name->>'pt_BR', pt.name->>'en_US', pt.name::text) AS produto,
237+
pt.name->>'en_US' AS produto,
231238
pt.default_code AS codigo,
232-
COALESCE(SUM(sq.quantity - sq.reserved_quantity), 0) AS quantidade_disponivel
239+
COALESCE(SUM(CASE WHEN sl.usage = 'internal' THEN (sq.quantity - sq.reserved_quantity) ELSE 0 END), 0)
240+
AS quantidade_disponivel
233241
FROM
234242
product_template pt
235243
JOIN
236-
product_product pp ON pt.id = pp.product_tmpl_id
244+
product_product pp
245+
ON pt.id = pp.product_tmpl_id
237246
LEFT JOIN
238-
stock_quant sq ON pp.id = sq.product_id
247+
stock_quant sq
248+
ON pp.id = sq.product_id
239249
LEFT JOIN
240-
stock_location sl ON sq.location_id = sl.id
241-
WHERE
242-
sl.usage = 'internal' OR sl.id IS NULL
250+
stock_location sl
251+
ON sl.id = sq.location_id
243252
GROUP BY
244253
pt.id, pt.name, pt.default_code
245254
HAVING
246-
COALESCE(SUM(sq.quantity - sq.reserved_quantity), 0) <= 0
255+
COALESCE(SUM(CASE WHEN sl.usage = 'internal' THEN (sq.quantity - sq.reserved_quantity) ELSE 0 END), 0) <= 0
247256
ORDER BY
248257
produto;
249258
""",

0 commit comments

Comments
 (0)