import React,{useEffect,useRef,useState} from 'react';
import {milliQuantity} from './StockReadWorkspace.jsx';
export function WorkshopStockImpact({impact:p}) {
return
Físico: {milliQuantity(p.physical_before)} → {milliQuantity(p.physical_after)}. Nova saída: {milliQuantity(p.quantity_milli)}. {['link_existing_delivery','allocate_existing_delivery'].includes(p.mode)&&<>Ligar entrega #{p.existing_movement_id}: {milliQuantity(p.linked_quantity_milli)}, sem novo abatimento. >}{p.mode==='return_existing_delivery'&&<>Entrada por devolução: {milliQuantity(p.return_quantity_milli)}, da entrega #{p.existing_movement_id}. >}{['allocate_existing_delivery','return_existing_delivery'].includes(p.mode)&&<>Quantidade não associada: {milliQuantity(p.unallocated_before)} → {milliQuantity(p.unallocated_after)}. >}Artigo #{p.stock_item_id}, armazém #{p.warehouse_id}, origem versão {p.source_version}.
;
}
export function WorkshopStockClosureImpact({action}) {
return
Encerrar esta proposta como {action==='withdraw'?'retirada':'recusada'}. Efeito físico: 0; nenhuma origem será associada ou libertada. O original e esta decisão ficam no histórico; voltar a tratar a origem exige nova conferência.
Uma origem verificada não provoca saída automática. Entregas já abatidas e correcções exigem reconciliação própria.
{error&&
{error}
}{!data&&!error&&
A consultar origens autorizadas…
}
{preview&&
Proposta #{preview.id}
{impact(preview)}
{preview.reason} · Evidência: {preview.evidence}
{preview.state&&preview.state!=='pending'?'Proposta já encerrada; a prévia é histórica.':'A confirmação é individual, por outra identidade autorizada.'}
Esta origem já tem o movimento #{source.movement_id}. Uma nova versão exige conferência/correcção física separada, sem novo abatimento automático.
:can('workshop_stock.prepare',unit)&&};})}
Histórico de propostas da unidade
{data.proposals.map(p=>
Proposta #{p.id} · Origem #{p.entry_id} / v{p.entry_version}
{impact(p)}
Preparador #{p.preparer_id} · {p.created_at}
{p.reason} · Evidência: {p.evidence}
{p.closure?
Prévia arquivada, não executada. {p.state==='withdrawn'?'Retirada':'Recusada'} por #{p.closure.actor_id} em {p.closure.created_at}: {p.closure.reason}.
:p.movement_id?
Tratamento já registado: movimento #{p.movement_id}.