import React,{useEffect,useState} from 'react'; import {milliQuantity} from './StockReadWorkspace.jsx'; import {requestStockPeriod} from './stock-period-request.js'; export default function StockInactiveReportWorkspace({api,context}) { const [warehouseQuery,setWarehouseQuery]=useState({view:'warehouses',page:1,per_page:100}),[warehouses,setWarehouses]=useState(null),[warehouseError,setWarehouseError]=useState(''),[warehouseLoading,setWarehouseLoading]=useState(false),[warehouse,setWarehouse]=useState(''); useEffect(()=>requestStockPeriod({query:warehouseQuery,api,data:setWarehouses,error:setWarehouseError,loading:setWarehouseLoading}),[warehouseQuery,context.token]); const [query,setQuery]=useState(null),[data,setData]=useState(null),[error,setError]=useState(''),[loading,setLoading]=useState(false); useEffect(()=>{if(!query)return;return requestStockPeriod({query,api,data:setData,error:setError,loading:setLoading});},[query,context.token]); const submit=e=>{e.preventDefault();const f=Object.fromEntries(new FormData(e.currentTarget));setQuery({view:'inactive',as_of:f.as_of,days:Number(f.days),search:f.search,warehouse_id:f.warehouse_id||undefined,per_page:Number(f.per_page),page:1});}; return

Pares artigo/armazém com história conhecida

Escolha o corte UTC e o número de dias consecutivos sem registo físico, incluindo o dia de corte. Artigos sem história conhecida ficam fora desta conclusão.

{warehouseError&&

{warehouseError}

}{warehouses&&warehouses.pagination.last_page>1&&} {loading&&

A consultar a história autorizada…

}{error&&

{error}

} {data&&<>

{data.notice}

Corte {data.as_of} UTC · mínimo {data.minimum_days} dias · {data.pagination.total} pares · página {data.pagination.page} de {data.pagination.last_page} · observado {data.observed_at}

{data.rows.map(r=>)}
Artigo / unidadeArmazémÚltimo registo UTCDias sem registoQuantidade física no corte
{r.code} · {r.name} · {r.unit}{r.warehouse_code} · {r.warehouse_name}{r.last_registered_at}{r.days_without_record}{milliQuantity(r.physical_quantity_milli)}
{!data.rows.length&&

Sem pares elegíveis para estes filtros. Não significa ausência de actividade ou stock zero.

}}
; }