Fix: Guardar concepto en finanzas y acción save_all_concept_payments
- Improved error handling in CollectionConcept::update - Added save_all_concept_payments action for concept_view page - Added logs directory to Dockerfile
This commit is contained in:
@@ -466,13 +466,18 @@ switch ($page) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
$result = CollectionConcept::save($input, $userId);
|
$result = CollectionConcept::save($input, $userId);
|
||||||
if ($result) {
|
if ($result !== false) {
|
||||||
Auth::logActivity('save_concept', 'Concepto ' . ($input['id'] ? 'editado' : 'creado') . ': ' . $input['name']);
|
Auth::logActivity('save_concept', 'Concepto ' . ($input['id'] ? 'editado' : 'creado') . ': ' . $input['name']);
|
||||||
echo json_encode(['success' => true, 'message' => 'Concepto guardado exitosamente', 'id' => $result]);
|
echo json_encode(['success' => true, 'message' => 'Concepto guardado exitosamente', 'id' => $result]);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
echo json_encode(['success' => false, 'message' => 'Error al guardar concepto']);
|
echo json_encode(['success' => false, 'message' => 'Error al guardar concepto: No se realizaron cambios']);
|
||||||
|
}
|
||||||
|
} catch (Exception $e) {
|
||||||
|
error_log("Error save_concept: " . $e->getMessage());
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Error al guardar concepto: ' . $e->getMessage()]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -1427,6 +1432,58 @@ switch ($page) {
|
|||||||
}
|
}
|
||||||
exit;
|
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 || empty($payments)) {
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Datos incompletos']);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
if (!Auth::isCapturist()) {
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Permiso denegado']);
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
require_once __DIR__ . '/models/CollectionConcept.php';
|
||||||
|
$saved = 0;
|
||||||
|
$errors = [];
|
||||||
|
|
||||||
|
foreach ($payments as $payment) {
|
||||||
|
$houseId = $payment['house_id'] ?? 0;
|
||||||
|
$amount = $payment['amount'] ?? 0;
|
||||||
|
$paymentDate = $payment['payment_date'] ?? null;
|
||||||
|
|
||||||
|
if (!$houseId || !is_numeric($amount)) {
|
||||||
|
$errors[] = "Casa {$houseId}: datos inválidos";
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = CollectionPayment::update($conceptId, $houseId, $amount, $userId, 'Pago actualizado', $paymentDate);
|
||||||
|
if ($result) {
|
||||||
|
$saved++;
|
||||||
|
} else {
|
||||||
|
$errors[] = "Casa {$houseId}: error al guardar";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($saved > 0) {
|
||||||
|
Auth::logActivity('save_all_concept_payments', "Guardados {$saved} pagos para concepto ID {$conceptId}");
|
||||||
|
echo json_encode(['success' => true, 'message' => "{$saved} pagos guardados correctamente" . (count($errors) > 0 ? '. Errors: ' . implode(', ', $errors) : '')]);
|
||||||
|
} else {
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Error al guardar pagos: ' . implode(', ', $errors)]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
echo json_encode(['success' => false, 'message' => 'Datos inválidos']);
|
||||||
|
}
|
||||||
|
exit;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
echo json_encode(['success' => false, 'message' => 'Acción no válida para la vista de concepto']);
|
echo json_encode(['success' => false, 'message' => 'Acción no válida para la vista de concepto']);
|
||||||
exit;
|
exit;
|
||||||
|
|||||||
@@ -62,11 +62,13 @@ RUN composer install --no-dev --optimize-autoloader --no-interaction || true
|
|||||||
|
|
||||||
# Crear directorios necesarios
|
# Crear directorios necesarios
|
||||||
RUN mkdir -p /var/www/html/ibiza/uploads
|
RUN mkdir -p /var/www/html/ibiza/uploads
|
||||||
|
RUN mkdir -p /var/www/html/ibiza/logs
|
||||||
|
|
||||||
# Configurar permisos
|
# Configurar permisos
|
||||||
RUN chown -R www-data:www-data /var/www/html/ibiza \
|
RUN chown -R www-data:www-data /var/www/html/ibiza \
|
||||||
&& chmod -R 755 /var/www/html/ibiza \
|
&& chmod -R 755 /var/www/html/ibiza \
|
||||||
&& chmod -R 777 /var/www/html/ibiza/uploads \
|
&& chmod -R 777 /var/www/html/ibiza/uploads \
|
||||||
|
&& chmod -R 777 /var/www/html/ibiza/logs \
|
||||||
&& touch /var/www/html/ibiza/.env \
|
&& touch /var/www/html/ibiza/.env \
|
||||||
&& chown www-data:www-data /var/www/html/ibiza/.env
|
&& chown www-data:www-data /var/www/html/ibiza/.env
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,8 @@ class CollectionConcept {
|
|||||||
|
|
||||||
public static function update($id, $data) {
|
public static function update($id, $data) {
|
||||||
$db = Database::getInstance();
|
$db = Database::getInstance();
|
||||||
return $db->execute(
|
try {
|
||||||
|
$result = $db->execute(
|
||||||
"UPDATE finance_collection_concepts
|
"UPDATE finance_collection_concepts
|
||||||
SET name = ?, description = ?, total_amount = ?, amount_per_house = ?, concept_date = ?, due_date = ?, category = ?
|
SET name = ?, description = ?, total_amount = ?, amount_per_house = ?, concept_date = ?, due_date = ?, category = ?
|
||||||
WHERE id = ?",
|
WHERE id = ?",
|
||||||
@@ -61,6 +62,11 @@ class CollectionConcept {
|
|||||||
$id
|
$id
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
|
return $result;
|
||||||
|
} catch (Exception $e) {
|
||||||
|
error_log("Error updating CollectionConcept ID $id: " . $e->getMessage());
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function save($data, $userId) {
|
public static function save($data, $userId) {
|
||||||
|
|||||||
Reference in New Issue
Block a user