Merge branch 'main' of https://github.com/AduanaSoft/IMPORTADORES
This commit is contained in:
@@ -820,7 +820,6 @@ function update_status() {
|
||||
$token = getApiToken();
|
||||
if (!$token) {
|
||||
error_log("[update_status] No se pudo obtener token para crearPedimento");
|
||||
// Podemos optar por responder con éxito local y solo loguear el error:
|
||||
echo json_encode(['success' => true, 'warning' => 'No se generó pedimento: sin token']);
|
||||
exit;
|
||||
}
|
||||
@@ -845,9 +844,8 @@ function update_status() {
|
||||
s.foto_solicitud_url,
|
||||
s.proveedor_clave,
|
||||
s.created_at,
|
||||
s.updated_at
|
||||
-- Si existe columna ‘patente’ agréga aquí:
|
||||
, s.patente
|
||||
s.updated_at,
|
||||
'9999' as patente
|
||||
FROM dbo.solicitud_importacion_factura s
|
||||
WHERE s.id_solicitud = ? AND s.id_importador = ?
|
||||
";
|
||||
@@ -867,28 +865,17 @@ function update_status() {
|
||||
}
|
||||
|
||||
// 3.3) Formatear fechas (si vienen como DateTime) antes de construir JSON
|
||||
// La API espera "YYYY-MM-DD" para fecha_factura y tipo ISO 8601 para created_at/updated_at.
|
||||
$fechaFactura = null;
|
||||
if ($solicitud['fecha_factura'] instanceof DateTime) {
|
||||
$fechaFactura = $solicitud['fecha_factura']->format('Y-m-d');
|
||||
} else {
|
||||
$fechaFactura = $solicitud['fecha_factura']; // en caso de que ya venga como string
|
||||
}
|
||||
$fechaFactura = ($solicitud['fecha_factura'] instanceof DateTime)
|
||||
? $solicitud['fecha_factura']->format('Y-m-d')
|
||||
: $solicitud['fecha_factura'];
|
||||
|
||||
$createdAt = null;
|
||||
if ($solicitud['created_at'] instanceof DateTime) {
|
||||
// Por ejemplo: "2025-05-16T07:48:15"
|
||||
$createdAt = $solicitud['created_at']->format('Y-m-d\TH:i:s');
|
||||
} else {
|
||||
$createdAt = $solicitud['created_at'];
|
||||
}
|
||||
$createdAt = ($solicitud['created_at'] instanceof DateTime)
|
||||
? $solicitud['created_at']->format('Y-m-d\TH:i:s')
|
||||
: $solicitud['created_at'];
|
||||
|
||||
$updatedAt = null;
|
||||
if ($solicitud['updated_at'] instanceof DateTime) {
|
||||
$updatedAt = $solicitud['updated_at']->format('Y-m-d\TH:i:s');
|
||||
} else {
|
||||
$updatedAt = $solicitud['updated_at'];
|
||||
}
|
||||
$updatedAt = ($solicitud['updated_at'] instanceof DateTime)
|
||||
? $solicitud['updated_at']->format('Y-m-d\TH:i:s')
|
||||
: $solicitud['updated_at'];
|
||||
|
||||
// 3.4) Obtener todas las partidas asociadas a esta solicitud
|
||||
$sqlPart = "
|
||||
@@ -915,16 +902,14 @@ function update_status() {
|
||||
}
|
||||
$partidas = [];
|
||||
while ($row = sqlsrv_fetch_array($stmtPart, SQLSRV_FETCH_ASSOC)) {
|
||||
// Formatear creado_en si es DateTime
|
||||
if ($row['creado_en'] instanceof DateTime) {
|
||||
$row['creado_en'] = $row['creado_en']->format('Y-m-d\TH:i:s');
|
||||
}
|
||||
// Asegurarnos de que los valores numéricos sean del tipo correcto
|
||||
$row['cantidad_comercial'] = floatval($row['cantidad_comercial']);
|
||||
$row['cantidad_tarifa'] = floatval($row['cantidad_tarifa']);
|
||||
$row['valor_factura'] = floatval($row['valor_factura']);
|
||||
$row['peso_bruto'] = floatval($row['peso_bruto']);
|
||||
$row['unidad_comercial_id']= intval($row['unidad_comercial_id']);
|
||||
$row['cantidad_comercial'] = floatval($row['cantidad_comercial']);
|
||||
$row['cantidad_tarifa'] = floatval($row['cantidad_tarifa']);
|
||||
$row['valor_factura'] = floatval($row['valor_factura']);
|
||||
$row['peso_bruto'] = floatval($row['peso_bruto']);
|
||||
$row['unidad_comercial_id'] = intval($row['unidad_comercial_id']);
|
||||
$partidas[] = $row;
|
||||
}
|
||||
sqlsrv_free_stmt($stmtPart);
|
||||
@@ -934,36 +919,29 @@ function update_status() {
|
||||
"id_solicitud" => intval($solicitud['id_solicitud']),
|
||||
"id_importador" => intval($solicitud['id_importador']),
|
||||
"aduana" => strval($solicitud['aduana']),
|
||||
// Si en tu tabla tienes “patente”, la incluyes; si no, puedes dejar cadena vacía o null
|
||||
"patente" => isset($solicitud['patente']) ? strval($solicitud['patente']) : "",
|
||||
"patente" => strval($solicitud['patente']),
|
||||
"anexo22_apendice" => strval($solicitud['anexo22_apendice']),
|
||||
"numero_factura" => strval($solicitud['numero_factura']),
|
||||
"fecha_factura" => $fechaFactura,
|
||||
// Si tu tabla tiene columna "numero_pedimento", úsala directamente
|
||||
"numero_pedimento" => isset($solicitud['numero_pedimento'])
|
||||
? strval($solicitud['numero_pedimento'])
|
||||
: "",
|
||||
"numero_pedimento" => "", // La API lo rellenará
|
||||
"incoterm" => strval($solicitud['incoterm']),
|
||||
"pais_proveedor" => strval($solicitud['pais_proveedor']),
|
||||
"tipo_moneda" => strval($solicitud['tipo_moneda']),
|
||||
"valor_factura" => floatval($solicitud['valor_factura']),
|
||||
"vinculacion" => intval($solicitud['vinculacion']),
|
||||
"transportista_id" => intval($solicitud['transportista_id']),
|
||||
"status" => intval($solicitud['status']), // =2
|
||||
|
||||
"created_at" => $createdAt,
|
||||
"updated_at" => $updatedAt,
|
||||
// Si en BD se usa “transporte_id” en lugar de “transportista_id”, ajústalo. Aquí lo ponemos null si no existe.
|
||||
"transporte_id" => null,
|
||||
"chofer_id" => intval($solicitud['chofer_id']),
|
||||
"foto_solicitud_url"=> strval($solicitud['foto_solicitud_url']),
|
||||
"proveedor_clave" => strval($solicitud['proveedor_clave']),
|
||||
"partidas" => $partidas
|
||||
];
|
||||
|
||||
// 3.6) Convertir a JSON
|
||||
$jsonPayload = json_encode($payload);
|
||||
|
||||
// 3.7) Preparar cURL para hacer POST a /pedimentos/crearPedimento
|
||||
// 3.6) Preparar cURL para hacer POST a /pedimentos/crearPedimento
|
||||
$apiBase = rtrim($_ENV['API_URL'] ?? '', '/');
|
||||
$urlPed = $apiBase . '/pedimentos/crearPedimento';
|
||||
|
||||
@@ -983,15 +961,39 @@ function update_status() {
|
||||
$curlErr = curl_error($ch);
|
||||
curl_close($ch);
|
||||
|
||||
// 3.8) Verificar respuesta del endpoint pedimentos
|
||||
// 3.7) Verificar respuesta del endpoint pedimentos
|
||||
if ($httpPed === 201 || $httpPed === 200) {
|
||||
// Suponiendo que el endpoint devuelve 201 o 200 cuando se crea correctamente
|
||||
$decoded = json_decode($respPed, true);
|
||||
// Si existe PEDIMENTO dentro de la clave 'pedimento'
|
||||
if (isset($decoded['pedimento']['PEDIMENTO'])) {
|
||||
$numeroPedimento = $decoded['pedimento']['PEDIMENTO'];
|
||||
|
||||
// 3.8) Actualizar localmente el campo numero_pedimento
|
||||
$sqlUpdPed = "
|
||||
UPDATE dbo.solicitud_importacion_factura
|
||||
SET numero_pedimento = ?
|
||||
WHERE id_solicitud = ?
|
||||
AND id_importador = ?
|
||||
";
|
||||
$stmtUpdPed = sqlsrv_query(
|
||||
$conn,
|
||||
$sqlUpdPed,
|
||||
[$numeroPedimento, $id, $_SESSION['usuario_id']]
|
||||
);
|
||||
if ($stmtUpdPed === false) {
|
||||
error_log("[update_status] Error al actualizar numero_pedimento en BD: " . print_r(sqlsrv_errors(), true));
|
||||
}
|
||||
}
|
||||
|
||||
error_log("[update_status] Pedimento creado con éxito para solicitud $id → HTTP $httpPed → $respPed");
|
||||
echo json_encode(['success' => true, 'pedimento' => json_decode($respPed, true)]);
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'pedimento' => $decoded['pedimento'],
|
||||
'numeroPedimentoLocal' => $numeroPedimento
|
||||
]);
|
||||
exit;
|
||||
} else {
|
||||
error_log("[update_status] Error al crear pedimento (HTTP $httpPed): $respPed · cURL error: $curlErr");
|
||||
// Devolvemos estado local ok, pero avisamos que falló el POST
|
||||
echo json_encode([
|
||||
'success' => true,
|
||||
'warning' => "Status actualizado, pero fallo al crear pedimento (HTTP $httpPed)"
|
||||
|
||||
Reference in New Issue
Block a user