Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde pessoal, estou criando um módulo de PCP para um cliente e estou esbarrando em uma duvida.
Eu tenho no cadastro do produto quanto tempo gasto para produzir cada unidade.
Quando entrar um pedido por exemplo para o produto X
Eu tenho que pegar a quantidade do pedido * tempo em minutos por produto que já tenho no meu banco de dados.
Tambem tenho uma tabela que gerencia a agenda do dia com tempo total trabalhado por dia.
Minha dúvida é como automatizar um processo, quando entrar um pedido com 1000 unidades e dentro da minha soma eu só consigo produzir 400 por dia.
O sistema gerar na tabela de produção 3 ordem de produção, 2 com 400 e 1 com 200.
Ate fazer isso eu já fiz, só que da maneira que fiz tenho que replicar o codigo um monte de vez para ele ir comparando a sobra - qtd do dia e ir gerando, queria achar uma forma de automatizar onde eu faço um codigo generico e ele vai comparando gravando, comparando e gravando e pulando o dia.
Na verdade Gabriel talvez me expressei mal, eu já tenho no meu sistema a questão do calendario que tenho a quantidade de horas trabalhadas em minutos do dia.
Meu problema é que um produto tem varias etapas e cada etapa tem seus processos.
Então o calendario de minutos vale para cada etapa.
Quando estou fazendo fica dando loop sem parar, pois quando estoura o tempo util do dia ele tem que pular para o segundo dia, veja como estou tentando fazer:
$id = 4;
$sql_pedido = mysqli_query($con, "select * from pedidos where id_pedido = '$id'");
$vetor_pedido = mysqli_fetch_array($sql_pedido);
$sql_produtos = mysqli_query($con, "select * from itens_pedido where id_pedido = '$id'");
while ($vetor = mysqli_fetch_array($sql_produtos)) {
$sql_etapas = mysqli_query($con, "select * from etapas ORDER by posicao ASC");
while($vetor_etapa = mysqli_fetch_array($sql_etapas)){
$sql_processos_produtos = mysqli_query($con, "select * from produtos_processos where id_produto = '$vetor[id_produto]' and id_etapa = '$vetor_etapa[id_etapa]'");
while($vetor_processos_produtos = mysqli_fetch_array($sql_processos_produtos)) {
$sql_processos = mysqli_query($con, "select * from processos where id_processo = '$vetor_processos_produtos[id_processo]'");
$vetor_processo = mysqli_fetch_array($sql_processos);
$separacaohora = explode(':',$vetor_processo['tempo']);
$horas = $separacaohora[0] * 60;
$totalminutos = $horas + $separacaohora[1];
$calculotempo = $totalminutos / $vetor_processo['qtdproduzida'];
$calculotempoarredondado = round($calculotempo, 2);
echo $tempoproduto = $vetor['qtd'] * $calculotempoarredondado;
echo "</br>";
echo $totalinicio = $vetor['qtd'];
echo "</br>";
$baixa = 1;
$datainicio = date('Y-m-d');
while($totalinicio > 0) {
$sql_funcionamento = mysqli_query($con, "select * from agenda_dia where data = '$vetor_pedido[datamaterial]'");
$vetor_funcionamento = mysqli_fetch_array($sql_funcionamento);
if($vetor_funcionamento['tempominutos'] < $tempoproduto) {
$calculo = $calculotempoarredondado * $vetor_funcionamento['tempominutos'];
echo $totalinicio = $totalinicio - $calculo;
echo "</br>";
$datainicio = date('Y-m-d', strtotime('+1 days', strtotime($datainicio)));
} else {
echo "Entra aqui.";
}
}
}
}
}
Somente para contextualizar, você possui um período de trabalho e cada produto possui um período de tempo em que pode ser produzido. E você precisa calcular, baseado no expediente de trabalho, quanto tempo demorará (a quantidade de dias exatos) para produzir a quantidade total do pedido. Dessa forma, você pode dividir a quantidade de produtos entre ordens de produção por dia. É isso?
Há alguns anos, eu desenvolvi a classe abaixo para cálculo de horas, em um cenário bem específico de SLA.
https://forum.imasters.com.br/topic/578849-módulo-de-pcp/?do=findComment&comment=2268709
Faz tempo que eu não modifico ela, mas posso implementar o cálculo de período necessário para a produção. A não ser que você desejas implementa-lá e fazer uma contribuição no repositório. Caso for utilizar, pegue a versão atualizada e com testes:
https://bitbucket.org/harbingerproject/date-time/src/master/
Ou do próprio packgist: https://packagist.org/packages/harbinger/date-time
Sempre quis dar continuidade a essas bibliotecas, só me faltam tempo/ideias.