From 718e08be13b0572bc567c8ff329bebe684ec2c2e Mon Sep 17 00:00:00 2001 From: enlineawork Date: Fri, 11 Sep 2026 01:06:18 -0300 Subject: [PATCH] feat(web): capture Yacimiento company and concession --- web-v2/src/pages/InventoryCreatePage.tsx | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/web-v2/src/pages/InventoryCreatePage.tsx b/web-v2/src/pages/InventoryCreatePage.tsx index fca1a07..ec822ee 100644 --- a/web-v2/src/pages/InventoryCreatePage.tsx +++ b/web-v2/src/pages/InventoryCreatePage.tsx @@ -44,6 +44,8 @@ export function InventoryCreatePage() { const [parentSearch, setParentSearch] = useState(''); const [parentId, setParentId] = useState(''); const [familyId, setFamilyId] = useState(''); + const [operatorCompanyId, setOperatorCompanyId] = useState(''); + const [concessionTypeId, setConcessionTypeId] = useState(''); const [familyFindings, setFamilyFindings] = useState(null); const [name, setName] = useState(''); const [code, setCode] = useState(''); @@ -66,6 +68,7 @@ export function InventoryCreatePage() { const requiresParent = Boolean(parentLabelByKind[kind]); const requiresFamily = kind === 'INSTALACION' || kind === 'SUBINSTALACION'; + const requiresYacimientoContext = kind === 'YACIMIENTO'; const parentLabel = parentLabelByKind[kind] ?? ''; useEffect(() => { @@ -99,18 +102,25 @@ export function InventoryCreatePage() { if (!requiresFamily) setFamilyId(''); if (kind==='SUBINSTALACION' && familyId && !families.some((item)=>item.id===familyId)) setFamilyId(''); },[kind,requiresFamily,families,familyId]); + useEffect(() => { + if (!requiresYacimientoContext) { setOperatorCompanyId(''); setConcessionTypeId(''); } + },[requiresYacimientoContext]); const changeKind=(next:InventoryStructureKind) => { - setKind(next); setParentId(''); setParentSearch(''); setFamilyId(''); setFamilyFindings(null); setError(''); + setKind(next); setParentId(''); setParentSearch(''); setFamilyId(''); setFamilyFindings(null); + setOperatorCompanyId(''); setConcessionTypeId(''); setError(''); }; const save=async(event:FormEvent) => { event.preventDefault(); if (requiresParent && !parentId) { setError(`Seleccioná ${parentLabel}.`); return; } + if (requiresYacimientoContext && !operatorCompanyId) { setError('Seleccioná la Empresa relacionada del Yacimiento.'); return; } + if (requiresYacimientoContext && !concessionTypeId) { setError('Seleccioná el Tipo de concesión del Yacimiento.'); return; } if (requiresFamily && !familyId) { setError(`Seleccioná el tipo de ${kindLabel(kind).toLowerCase()}.`); return; } setSaving(true); setError(''); try { const created=await createInventoryStructure({ kind,name:name.trim(),parentId:parentId || null,familyId:familyId || null, + operatorCompanyId:operatorCompanyId || null,concessionTypeId:concessionTypeId || null, code:code.trim() || null,commonName:commonName.trim() || null,description:description.trim() || null, }); navigate(`/inventarios/${created.id}`,{replace:true}); @@ -121,14 +131,15 @@ export function InventoryCreatePage() { if (loading) return ; return
-
CARGA MANUAL

Nuevo registro

Para crear sólo necesitás ubicación, clasificación cuando corresponda y nombre. DH genera el código automáticamente.

+
CARGA MANUAL

Nuevo registro

Modelo fijo: Departamento → Área → Yacimiento → Instalación → Subinstalación. La Empresa y el Tipo de concesión pertenecen al Yacimiento.

{error && {error}}
-

1. ¿Qué querés crear?

Departamento → Área → Yacimiento → Instalación → Subinstalación. Empresa queda fuera del árbol físico.

+

1. ¿Qué querés crear?

Área sólo depende de Departamento. Yacimiento define Área, Empresa relacionada y Tipo de concesión.

{requiresParent &&

2. Ubicación

Elegí el {parentLabel.toLowerCase()} concreto.

} - {requiresFamily &&

3. Clasificación técnica

Define los datos técnicos y Hallazgos aplicables. En Subinstalaciones sólo aparecen clasificaciones compatibles con la Instalación elegida.

{kind==='SUBINSTALACION' && !selectedParent?.inventoryFamily ? La Instalación elegida todavía no tiene clasificación técnica. : }{kind==='SUBINSTALACION' && selectedParent?.inventoryFamily && families.length===0 && No hay tipos de Subinstalación compatibles con {selectedParent.inventoryFamily.name}. Configuralos primero en Configuración de Inventarios.}{selectedFamily &&
{selectedFamily.name}{familyFindings ? `${familyFindings.count} Hallazgo${familyFindings.count===1?'':'s'} asociado${familyFindings.count===1?'':'s'}` : 'Cargando Hallazgos asociados…'}{familyFindings && familyFindings.items.length>0 &&
    {familyFindings.items.slice(0,6).map((item)=>
  • {item.title}
  • )}{familyFindings.items.length>6 &&
  • + {familyFindings.items.length-6} más
  • }
}
}
} -

{requiresFamily ? '4' : requiresParent ? '3' : '2'}. Nombre

Los datos técnicos se completan después, en la ficha del elemento.

Datos opcionales