Eu inventei a rotina da baixa de estoque em 1999, quando trabalhava com MS Access, e adaptei em 2020 no PHP, mas ele é lento demais.
A rotina olha toda a tabela de produtos, estuda cada caso, para ver se é necessário fazer ajuste para calcular o estoque presumido.
Eu queria simplificar, ao invés de olhar tudo, o melhor é olhar o que precisa.
Ou seja, na tabela histórico do produto, eu tenho algo do tipo (666,'2025-02-01',1,10.00), (666,'2025-02-02',1,10.00),(666,'2025-02-03',1,10.00), como eu faço para pegar o último registro? Eu achei a solução lá em 1999, mas ele é péssimo para os padrões de 2025.
O lado bom de viver em 2025 é que tem o Copilot, é um serviço de inteligência artificial que a Microsoft não cobra nada. Por enquanto.
E hoje, o Copilot me apresentou o WITH, eu nem sabia que isso existia no MySQL:
<?php
$pdo=new PDO("mysql:host=localhost;dbname=diario","root","");
$sql="WITH Produtos AS (
SELECT tbprod.codprod, prod, id, qt, custototal,
ROW_NUMBER() OVER (PARTITION BY tbprod.codprod ORDER BY id DESC) AS rn
FROM tbprod
JOIN tbhistprod ON tbhistprod.codprod = tbprod.codprod
WHERE loc <> 'a24' AND qt > 0 AND lcto <> 15092 and lcto <> 15093
AND dia BETWEEN '2025-02-01' AND '2025-02-28')
SELECT codprod,prod,id, qt, custototal
FROM Produtos
WHERE rn = 1";
$produtos=$pdo->query($sql)->fetchAll(PDO::FETCH_OBJ);
echo "<table><th>CodProd<th>Prod<th>Qtotal<th>vTotal<th>Uqt<th>Uvalor<th>AjusteQ<th>AjusteV";foreach($produtos as $produto){
$previa=$pdo->query("select sum(qt) as qt, sum(custototal) as total
from tbhistprod where codprod=$produto->codprod")->fetchAll(PDO::FETCH_OBJ)[0];if($produto->qt!==$previa->qt){
$ajusteQ=$produto->qt - $previa->qt;
$ajusteV=$produto->custototal - $previa->total;
echo "<tr><td>$produto->codprod<td>$produto->prod
<td>$previa->qt<td>$previa->total<td>$produto->qt<td>$produto->custototal
<td>$ajusteQ<td>$ajusteV";}}
echo "</table>";
Pergunta
Frank K Hosaka
Eu inventei a rotina da baixa de estoque em 1999, quando trabalhava com MS Access, e adaptei em 2020 no PHP, mas ele é lento demais.
A rotina olha toda a tabela de produtos, estuda cada caso, para ver se é necessário fazer ajuste para calcular o estoque presumido.
Eu queria simplificar, ao invés de olhar tudo, o melhor é olhar o que precisa.
Ou seja, na tabela histórico do produto, eu tenho algo do tipo (666,'2025-02-01',1,10.00), (666,'2025-02-02',1,10.00),(666,'2025-02-03',1,10.00), como eu faço para pegar o último registro? Eu achei a solução lá em 1999, mas ele é péssimo para os padrões de 2025.
O lado bom de viver em 2025 é que tem o Copilot, é um serviço de inteligência artificial que a Microsoft não cobra nada. Por enquanto.
E hoje, o Copilot me apresentou o WITH, eu nem sabia que isso existia no MySQL:
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.