F3.2 Android: permitir Actas READY paralelas y delegar cierre al servidor
This commit is contained in:
@@ -148,14 +148,20 @@ fun MobileActsScreen(
|
||||
}
|
||||
}
|
||||
|
||||
val hasOpenAct = model.acts.any { it.status == "DRAFT" || it.status == "READY" }
|
||||
if (visit.status == "IN_PROGRESS" && !hasOpenAct) {
|
||||
val hasDraftAct = model.acts.any { it.status == "DRAFT" }
|
||||
if (visit.status == "IN_PROGRESS" && !hasDraftAct) {
|
||||
Card(
|
||||
Modifier.fillMaxWidth(),
|
||||
colors = CardDefaults.cardColors(containerColor = MaterialTheme.colorScheme.primaryContainer),
|
||||
) {
|
||||
Column(Modifier.padding(12.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||
Text("Nueva Acta", fontWeight = FontWeight.Bold)
|
||||
if (model.acts.any { it.status == "READY" }) {
|
||||
Text(
|
||||
"Puede existir una nueva Acta en borrador aunque haya Actas preparadas pendientes de firma de empresa. Sólo se permite un borrador a la vez.",
|
||||
style = MaterialTheme.typography.bodySmall,
|
||||
)
|
||||
}
|
||||
val selectedInventory = model.selectedFieldAsset?.asset
|
||||
if (selectedInventory == null) {
|
||||
Text("Primero elegí una Instalación o Subinstalación desde Inventario de campo. Ese registro será el primer elemento del Acta.")
|
||||
@@ -361,17 +367,13 @@ fun MobileActsScreen(
|
||||
if (visit.status == "IN_PROGRESS" && model.acts.isNotEmpty()) {
|
||||
HorizontalDivider()
|
||||
val drafts = model.acts.count { it.status == "DRAFT" }
|
||||
val readyMissingInspector = model.acts.any { summary ->
|
||||
if (summary.status != "READY") false
|
||||
else if (selected?.id == summary.id) {
|
||||
model.actClosure?.signatures?.none { it.signerType == "INSPECTOR" && it.status == "SIGNED" } ?: true
|
||||
} else true
|
||||
}
|
||||
Text("Finalizar inspección", style = MaterialTheme.typography.titleMedium, fontWeight = FontWeight.Bold)
|
||||
Text("No puede quedar ninguna Acta en borrador. Cada Acta preparada debe tener firma de inspector.")
|
||||
Text(
|
||||
"No puede quedar ninguna Acta en borrador. Al cerrar, el servidor verifica que cada Acta preparada tenga firma de inspector; si falta alguna, indicará cuál debe completarse.",
|
||||
)
|
||||
Button(
|
||||
onClick = { model.closeInspection() },
|
||||
enabled = !model.busy && drafts == 0 && !readyMissingInspector,
|
||||
enabled = !model.busy && drafts == 0,
|
||||
modifier = Modifier.fillMaxWidth(),
|
||||
) { Text("Cerrar inspección y salir de la empresa") }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user