feat: Botón Guardar Todo en conceptos y mejoras Docker
Cambios realizados: - concept_view.php: Agregado botón 'Guardar Todo' arriba y abajo de la tabla, eliminado botón individual por fila - dashboard.php: Agregado endpoint save_all_concept_payments para guardar múltiples pagos - docker-entrypoint.sh: Corregidos permisos de volúmenes para ZimaOS/CasaOS (cambia dueño a www-data) - docker/Dockerfile: Corregida ruta del entrypoint - build-and-push.sh: Script interactivo para crear imagen Docker con opción de caché/sin caché Los cambios permiten guardar todos los pagos de conceptos de una sola vez y mejoran la compatibilidad con despliegues en ZimaOS.
This commit is contained in:
@@ -717,6 +717,61 @@ switch ($page) {
|
||||
}
|
||||
exit;
|
||||
|
||||
case 'save_all_concept_payments':
|
||||
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
|
||||
echo json_encode(['success' => false, 'message' => 'Método no permitido']);
|
||||
exit;
|
||||
}
|
||||
$input = json_decode(file_get_contents('php://input'), true);
|
||||
if ($input) {
|
||||
$conceptId = $input['concept_id'] ?? 0;
|
||||
$payments = $input['payments'] ?? [];
|
||||
|
||||
if (!$conceptId || !is_array($payments)) {
|
||||
echo json_encode(['success' => false, 'message' => 'Datos de pago incompletos o inválidos']);
|
||||
exit;
|
||||
}
|
||||
if (!Auth::isCapturist()) {
|
||||
echo json_encode(['success' => false, 'message' => 'Permiso denegado']);
|
||||
exit;
|
||||
}
|
||||
|
||||
$savedCount = 0;
|
||||
$errorCount = 0;
|
||||
|
||||
foreach ($payments as $payment) {
|
||||
$houseId = $payment['house_id'] ?? 0;
|
||||
$amount = $payment['amount'] ?? 0;
|
||||
$paymentDate = $payment['payment_date'] ?? null;
|
||||
|
||||
if (!$houseId) {
|
||||
$errorCount++;
|
||||
continue;
|
||||
}
|
||||
|
||||
$result = CollectionPayment::update($conceptId, $houseId, $amount, $userId, 'Pago actualizado', $paymentDate);
|
||||
if ($result) {
|
||||
$savedCount++;
|
||||
} else {
|
||||
$errorCount++;
|
||||
}
|
||||
}
|
||||
|
||||
if ($savedCount > 0) {
|
||||
Auth::logActivity('save_all_concept_payments', 'Múltiples pagos de concepto guardados: Concepto ' . $conceptId . ', ' . $savedCount . ' pagos guardados');
|
||||
if ($errorCount > 0) {
|
||||
echo json_encode(['success' => true, 'message' => 'Se guardaron ' . $savedCount . ' pagos. Hubo ' . $errorCount . ' errores.']);
|
||||
} else {
|
||||
echo json_encode(['success' => true, 'message' => 'Se guardaron ' . $savedCount . ' pagos exitosamente']);
|
||||
}
|
||||
} else {
|
||||
echo json_encode(['success' => false, 'message' => 'No se pudo guardar ningún pago']);
|
||||
}
|
||||
} else {
|
||||
echo json_encode(['success' => false, 'message' => 'Datos inválidos']);
|
||||
}
|
||||
exit;
|
||||
|
||||
default:
|
||||
echo json_encode(['success' => false, 'message' => 'Acción no válida para la vista de concepto']);
|
||||
exit;
|
||||
|
||||
Reference in New Issue
Block a user