fix(expedicao): isolar peca principal no seletor de romaneio sem somar componentes
This commit is contained in:
@@ -128,12 +128,15 @@ export const usePecasPintura = (ofNumber?: string) => {
|
||||
.from('apontamentos_producao')
|
||||
.select(`
|
||||
peca_id,
|
||||
componente_id,
|
||||
tipo_apontamento,
|
||||
quantidade_produzida,
|
||||
pecas (
|
||||
id,
|
||||
marca,
|
||||
etapa_fase,
|
||||
descricao,
|
||||
quantidade,
|
||||
peso_unitario,
|
||||
comprimento,
|
||||
of_number
|
||||
@@ -151,15 +154,16 @@ export const usePecasPintura = (ofNumber?: string) => {
|
||||
const { data: itensExpedidos, error: expedidosError } = await supabase
|
||||
.from('itens_romaneio_pecas')
|
||||
.select('peca_id, quantidade_expedida')
|
||||
.in('peca_id', apontamentosPintura?.map(a => a.peca_id) || []);
|
||||
.in('peca_id', apontamentosPintura?.map(a => a.peca_id).filter(Boolean) || []);
|
||||
|
||||
if (expedidosError) throw expedidosError;
|
||||
|
||||
// Calcular disponibilidade
|
||||
// Calcular disponibilidade (apenas peças principais, ignorando componentes)
|
||||
const pecasPintura: PecaPintura[] = [];
|
||||
const pecasMap = new Map();
|
||||
|
||||
apontamentosPintura?.forEach(apontamento => {
|
||||
if (apontamento.tipo_apontamento === 'componente' || apontamento.componente_id) return;
|
||||
const pecaId = apontamento.peca_id;
|
||||
const peca = apontamento.pecas;
|
||||
|
||||
@@ -173,6 +177,7 @@ export const usePecasPintura = (ofNumber?: string) => {
|
||||
marca: peca.marca,
|
||||
etapa_fase: peca.etapa_fase,
|
||||
descricao: peca.descricao,
|
||||
quantidade_total: peca.quantidade,
|
||||
peso_unitario: peca.peso_unitario,
|
||||
comprimento: peca.comprimento,
|
||||
quantidade_produzida_pintura: apontamento.quantidade_produzida,
|
||||
@@ -186,10 +191,14 @@ export const usePecasPintura = (ofNumber?: string) => {
|
||||
?.filter(item => item.peca_id === pecaId)
|
||||
.reduce((sum, item) => sum + item.quantidade_expedida, 0) || 0;
|
||||
|
||||
const qtdProdLimitada = peca.quantidade_total
|
||||
? Math.min(Number(peca.quantidade_total), peca.quantidade_produzida_pintura)
|
||||
: peca.quantidade_produzida_pintura;
|
||||
|
||||
pecasPintura.push({
|
||||
...peca,
|
||||
quantidade_ja_expedida: totalExpedido,
|
||||
quantidade_disponivel: peca.quantidade_produzida_pintura - totalExpedido
|
||||
quantidade_disponivel: qtdProdLimitada - totalExpedido
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user