F3.2 Android: integrar Actas en la navegación de inspección

This commit is contained in:
2026-09-07 16:23:10 -03:00
parent 97a774c264
commit a1450da51e
@@ -76,15 +76,31 @@ private data class F3GeoSnapshot(
@Composable @Composable
fun F3VisitRoot(model: MainViewModel) { fun F3VisitRoot(model: MainViewModel) {
var inventoryMode by rememberSaveable(model.visit?.id) { mutableStateOf(false) } var inventoryMode by rememberSaveable(model.visit?.id) { mutableStateOf(false) }
if (inventoryMode) { var actsMode by rememberSaveable(model.visit?.id) { mutableStateOf(false) }
F3FieldInventoryScreen(model, onBack = { inventoryMode = false }) when {
} else { actsMode -> MobileActsScreen(
F3VisitOverview(model, onInventory = { inventoryMode = true }) model = model,
onBack = { actsMode = false },
onGoInventory = {
actsMode = false
inventoryMode = true
},
)
inventoryMode -> F3FieldInventoryScreen(model, onBack = { inventoryMode = false })
else -> F3VisitOverview(
model = model,
onInventory = { inventoryMode = true },
onActs = { actsMode = true },
)
} }
} }
@Composable @Composable
private fun F3VisitOverview(model: MainViewModel, onInventory: () -> Unit) { private fun F3VisitOverview(
model: MainViewModel,
onInventory: () -> Unit,
onActs: () -> Unit,
) {
val visit = model.visit ?: return val visit = model.visit ?: return
Column( Column(
Modifier Modifier
@@ -137,9 +153,17 @@ private fun F3VisitOverview(model: MainViewModel, onInventory: () -> Unit) {
Button(onClick = onInventory, modifier = Modifier.fillMaxWidth()) { Button(onClick = onInventory, modifier = Modifier.fillMaxWidth()) {
Text("Abrir Inventario de campo") Text("Abrir Inventario de campo")
} }
OutlinedButton(onClick = onActs, modifier = Modifier.fillMaxWidth()) {
val open = model.acts.count { it.status == "DRAFT" || it.status == "READY" }
Text("Actas de la inspección · ${model.acts.size}${if (open > 0) " · $open abiertas" else ""}")
}
} else if (visit.status == "CLOSED") {
OutlinedButton(onClick = onActs, modifier = Modifier.fillMaxWidth()) {
Text("Ver Actas · ${model.acts.size}")
}
} else if (visit.status == "PLANNED") { } else if (visit.status == "PLANNED") {
Text( Text(
"Primero iniciá la inspección para habilitar altas, fotografías y Hallazgos.", "Primero iniciá la inspección para habilitar altas, fotografías, Actas y Hallazgos.",
style = MaterialTheme.typography.bodySmall, style = MaterialTheme.typography.bodySmall,
) )
} }