diff --git a/ci4/app/Config/Routes/ImportadoresRoutes.php b/ci4/app/Config/Routes/ImportadoresRoutes.php
index 2706aa8c..f3e20ae5 100644
--- a/ci4/app/Config/Routes/ImportadoresRoutes.php
+++ b/ci4/app/Config/Routes/ImportadoresRoutes.php
@@ -32,6 +32,7 @@ $routes->group('importador', ['namespace' => 'App\Controllers\Importadores'], fu
/**======================
* AJAX
*========================**/
+ $routes->post('validar-fila', 'ImportadorBubok::validarFila');
$routes->post('importar-fila', 'ImportadorBubok::importarFila');
});
diff --git a/ci4/app/Config/Routes/ScriptsRoutes.php b/ci4/app/Config/Routes/ScriptsRoutes.php
index f7e994c9..d3744033 100644
--- a/ci4/app/Config/Routes/ScriptsRoutes.php
+++ b/ci4/app/Config/Routes/ScriptsRoutes.php
@@ -7,7 +7,7 @@ use CodeIgniter\Router\RouteCollection;
/* Rutas para tarifas */
$routes->group('scripts', ['namespace' => 'App\Controllers\Scripts'], function ($routes) {
- $routes->get('completar-identidades', 'UsersIntegrity::completarIdentidades');
+ //$routes->get('completar-identidades', 'UsersIntegrity::completarIdentidades');
});
\ No newline at end of file
diff --git a/ci4/app/Controllers/Importadores/ImportadorBubok.php b/ci4/app/Controllers/Importadores/ImportadorBubok.php
index c8955350..27641c64 100644
--- a/ci4/app/Controllers/Importadores/ImportadorBubok.php
+++ b/ci4/app/Controllers/Importadores/ImportadorBubok.php
@@ -3,6 +3,7 @@ namespace App\Controllers\Importadores;
use App\Controllers\BaseResourceController;
use App\Controllers\Presupuestos\Presupuestocliente;
+use App\Models\Presupuestos\PresupuestoModel;
use App\Services\PresupuestoService;
class ImportadorBubok extends BaseResourceController
@@ -50,6 +51,73 @@ class ImportadorBubok extends BaseResourceController
return view(static::$viewPath . 'viewImportadorBubokTool', $viewData);
}
+ public function validarFila()
+ {
+ $json = $this->request->getJSON();
+
+ if (!$json || empty($json->producto) || empty($json->pedido)) {
+ return $this->response->setJSON([
+ 'apto' => false,
+ 'reason' => 'Datos incompletos'
+ ]);
+ }
+
+ $producto = $json->producto;
+ $pedido = $json->pedido;
+
+ // Validar existencia de ID de producto
+ if (empty($producto->id)) {
+ return $this->response->setJSON([
+ 'apto' => false,
+ 'reason' => 'ID de producto no proporcionado'
+ ]);
+ }
+
+ $refCliente = $pedido->orderNumber . '-' . $producto->id;
+
+ // Validar formato Ref. Cliente
+ if (strpos($refCliente, '-') === false || strlen($refCliente) < 5) {
+ return $this->response->setJSON([
+ 'apto' => false,
+ 'reason' => 'Ref. cliente inválido'
+ ]);
+ }
+
+ // 1. Verificar si ya fue importado
+ $presupuestoModel = new PresupuestoModel();
+ $yaExiste = $presupuestoModel->where('referencia_cliente', $refCliente)->first();
+
+ if ($yaExiste) {
+ return $this->response->setJSON([
+ 'apto' => false,
+ 'reason' => 'Referencia ya importada'
+ ]);
+ }
+
+ // 2. Validación básica del producto (puedes expandir con más reglas si lo necesitas)
+ $errores = [];
+
+ if (empty($producto->title))
+ $errores[] = 'Falta título';
+ if (empty($producto->body->pages))
+ $errores[] = 'Faltan páginas';
+ if (empty($producto->amount))
+ $errores[] = 'Falta tirada';
+
+ if (!empty($errores)) {
+ return $this->response->setJSON([
+ 'apto' => false,
+ 'reason' => implode(', ', $errores)
+ ]);
+ }
+
+ // 3. Producto considerado apto
+ return $this->response->setJSON([
+ 'apto' => true
+ ]);
+ }
+
+
public function importarFila()
{
@@ -83,7 +151,7 @@ class ImportadorBubok extends BaseResourceController
'message' => 'Número de orden o ID del producto no reconocidos.'
]);
}
- $refCliente = "$orderNumber - $productId";
+ $refCliente = "$orderNumber-$productId";
// Titulo
$titulo = $producto->title ?? null;
@@ -277,6 +345,15 @@ class ImportadorBubok extends BaseResourceController
]
];
+ // Recalcular calidad (isColor y isHq) en funcion del cliente
+ [$isColor, $isHq] = PresupuestoService::getCalidad(
+ 'importador-bubok',
+ null,
+ ((trim(strtolower($interiorTipo)) === 'color') ? 1 : 0),
+ 0,
+ intval($tirada ?? 0)
+ );
+
// Generamos el objeto a importar
$dataToImport = [
'selectedTirada' => $tirada,
@@ -295,8 +372,8 @@ class ImportadorBubok extends BaseResourceController
'tipo' => '',
'tipo_presupuesto_id' => $encuadernadoId,
'clienteId' => 40, // BUBOK ID
- 'isColor' => ($interiorTipo === 'color') ? 1 : 0,
- 'isHq' => 0,
+ 'isColor' => $isColor,
+ 'isHq' => $isHq,
'paginas' => $paginas,
'paginasColor' => ($interiorTipo === 'color') ? $paginas : 0,
'paginasCuadernillo' => 32,
@@ -317,15 +394,16 @@ class ImportadorBubok extends BaseResourceController
'sobrecubierta' => [],
'faja' => null,
- 'entrega_taller' => 1,
- //'direcciones' => $direcciones, las direcciones que aparecen no se añaden, ya que la recogida la hacen ellos con su empresa de mensajeria
+ 'direcciones' => $direcciones,
'ivaReducido' => 1,
];
/*return $this->respond([
'status' => 400,
- 'message' => $dataToImport
+ 'message' => $dataToImport,
+ 'interiorTipo' => $interiorTipo,
+ 'isColor' => $isColor
]);*/
// 5. Guardar
@@ -358,11 +436,11 @@ class ImportadorBubok extends BaseResourceController
];
}
}
-
+
// confirmar y crear pedido y ot
$presupuestoModel->confirmarPresupuesto($response['sk_id']);
- PresupuestoService::crearPedido($response['sk_id'],isImported:true);
-
+ PresupuestoService::crearPedido($response['sk_id'], isImported: true);
+
if (!isset($response['sk_id'])) {
return $this->respond([
diff --git a/ci4/app/Language/es/Importador.php b/ci4/app/Language/es/Importador.php
index 925076fc..5f4f0ad0 100644
--- a/ci4/app/Language/es/Importador.php
+++ b/ci4/app/Language/es/Importador.php
@@ -12,7 +12,7 @@ return [
'precio_compra' => 'Precio Compra',
'importar' => 'Importar',
'subirArchivoRama' => 'Cargar Excel proporcionado por RA-MA',
- 'subirArchivoBubok' => 'Cargar XML proporcionado por BUBOK',
+ 'subirArchivoBubok' => 'Cargar ZIP proporcionado por BUBOK',
'libro' => 'libro',
'id' => 'ID',
diff --git a/ci4/app/Views/themes/vuexy/form/importador/bubok/viewImportadorBubokTool.php b/ci4/app/Views/themes/vuexy/form/importador/bubok/viewImportadorBubokTool.php
index 4db87bfe..1e89f976 100644
--- a/ci4/app/Views/themes/vuexy/form/importador/bubok/viewImportadorBubokTool.php
+++ b/ci4/app/Views/themes/vuexy/form/importador/bubok/viewImportadorBubokTool.php
@@ -22,8 +22,8 @@
-
+ class="form-label">= lang('Importador.subirArchivoBubok') ?? 'Subir archivo ZIP' ?>
+