Implementacion API IL guardar

This commit is contained in:
imnavajas
2025-02-21 14:02:47 +01:00
parent 091088085c
commit feea7d7437
4 changed files with 528 additions and 484 deletions

View File

@ -984,13 +984,8 @@ $routes->group(
'filter' => 'cors' 'filter' => 'cors'
]); ]);
$routes->options('items', static function () { });
$routes->options('items/(:any)', static function () { });
$routes->post("calcular", 'ImprimelibrosApi::calcular'); $routes->post("calcular", 'ImprimelibrosApi::calcular');
$routes->post("guardar", 'ImprimelibrosApi::guardar');
// ... // ...
} }
); );

View File

@ -25,6 +25,53 @@ class ImprimelibrosApi extends ResourceController
{ {
helper(['form']); helper(['form']);
$jsonData = json_decode($this->request->getBody(), true);
if (json_last_error() !== JSON_ERROR_NONE) {
return $this->respond(
[
'status' => 400,
'error' => 'Invalid JSON format'
],
400
);
}
// Access the entire POST data
$post_data = $jsonData;
//return $this->respond(var_dump($post_data));
// Instancia de presupuesto cliente
$presupuestocliente = new Presupuestocliente();
$response = $presupuestocliente->calcular($post_data);
if (isset($response['tiradas'])) {
$response = [
'status' => 200,
'error' => null,
'data' => [
'tiradas' => $response['tiradas'],
'precios' => $response['precio_u']
]
];
}else{
$response = [
'status' => 400,
'error' => $response
];
}
return $this->respond($response);
}
public function guardar()
{
helper(['form']);
// Access the entire POST data // Access the entire POST data
$post_data = $this->request->getJSON(true); $post_data = $this->request->getJSON(true);
@ -32,7 +79,9 @@ class ImprimelibrosApi extends ResourceController
// Instancia de presupuesto cliente // Instancia de presupuesto cliente
$presupuestocliente = new Presupuestocliente(); $presupuestocliente = new Presupuestocliente();
$response = $presupuestocliente->calcular($post_data); $response = $presupuestocliente->guardar($post_data);
return $this->respond($response);
$response = [ $response = [
'status' => 200, 'status' => 200,
@ -45,21 +94,5 @@ class ImprimelibrosApi extends ResourceController
return $this->respond($response); return $this->respond($response);
} }
public function delete($id = null)
{
$model = new ItemModel();
$find = $model->find(['id' => $id]);
if (!$find)
return $this->failNotFound('No Data Found');
$model->delete($id);
$response = [
'status' => 200,
'error' => null,
'messages' => [
'success' => 'Data deleted'
]
];
return $this->respond($response);
}
} }

View File

@ -459,7 +459,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$tipo = $reqData['tipo']; $tipo = $reqData['tipo'];
$paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null; $paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null;
$papelInteriorDiferente = intval($reqData['papelInteriorDiferente']) ?? null; $papelInteriorDiferente = intval($reqData['papelInteriorDiferente'] ?? null);
$isColor = intval($reqData['isColor']) ?? 0; $isColor = intval($reqData['isColor']) ?? 0;
$isHq = intval($reqData['isHq']) ?? 0; $isHq = intval($reqData['isHq']) ?? 0;
@ -560,11 +560,10 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} }
if (array_key_exists('exception', $return_data)) { if (array_key_exists('exception', $return_data)) {
return $return_data; return $this->failServerError(
/*return $this->failServerError(
$return_data['exception'] . ' - ' . $return_data['exception'] . ' - ' .
$return_data['file'] . ' - ' . $return_data['line'] $return_data['file'] . ' - ' . $return_data['line']
);*/ );
} }
// calculo del envio base (tirada_maxima) // calculo del envio base (tirada_maxima)
@ -930,13 +929,22 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} }
} }
public function guardar() public function guardar($data = -1)
{ {
if ($this->request->isAJAX()) {
if ($this->request) {
if ($this->request->isAJAX())
$reqData = $this->request->getPost();
} else {
if ($data == -1) {
return "Error: sin datos";
}
$reqData = $data;
}
$modelPapelGenerico = new PapelGenericoModel(); $modelPapelGenerico = new PapelGenericoModel();
$reqData = $this->request->getPost(); //$reqData = $this->request->getPost();
$POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value; $POD = model('App\Models\Configuracion\ConfigVariableModel')->getVariable('POD')->value;
@ -965,18 +973,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$tipo = $reqData['tipo']; $tipo = $reqData['tipo'];
$paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null; $paginasCuadernillo = $reqData['paginasCuadernillo'] ?? 32;
$papelInteriorDiferente = intval($reqData['papelInteriorDiferente']) ?? null; $papelInteriorDiferente = intval($reqData['papelInteriorDiferente'] ?? null);
$isColor = intval($reqData['isColor']) ?? 0; $isColor = intval($reqData['isColor']) ?? 0;
$isHq = intval($reqData['isHq']) ?? 0; $isHq = intval($reqData['isHq']) ?? 0;
$prototipo = intval($reqData['prototipo']) ?? 0; $prototipo = intval($reqData['prototipo'] ?? 0);
$ferro = intval($reqData['ferro']) ?? 0; $ferro = intval($reqData['ferro'] ?? 0);
$ferroDigital = intval($reqData['ferroDigital']) ?? 0; $ferroDigital = intval($reqData['ferroDigital'] ?? 0);
$marcapaginas = intval($reqData['marcapaginas']) ?? 0; $marcapaginas = intval($reqData['marcapaginas'] ?? 0);
$retractilado = intval($reqData['retractilado']) ?? 0; $retractilado = intval($reqData['retractilado'] ?? 0);
$retractilado5 = intval($reqData['retractilado5']) ?? 0; $retractilado5 = intval($reqData['retractilado5'] ?? 0);
$interior = $reqData['interior'] ?? []; $interior = $reqData['interior'] ?? [];
$cubierta = $reqData['cubierta'] ?? []; $cubierta = $reqData['cubierta'] ?? [];
@ -985,7 +993,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$faja = $reqData['faja'] ?? []; $faja = $reqData['faja'] ?? [];
$excluirRotativa = $reqData['excluirRotativa'] ?? 0; $excluirRotativa = $reqData['excluirRotativa'] ?? 0;
$excluirRotativa = intval($excluirRotativa); $excluirRotativa = intval($excluirRotativa);
$ivaReducido = intval($reqData['ivaReducido']) ?? 0; $ivaReducido = intval($reqData['ivaReducido'] ?? 0);
$direcciones = $reqData['direcciones'] ?? []; $direcciones = $reqData['direcciones'] ?? [];
@ -1017,7 +1025,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$cubierta = [ $cubierta = [
'papel_generico_cubierta' => $modelPapelGenerico->where('id', $cubierta['papelCubierta'])->first()->toArray(), 'papel_generico_cubierta' => $modelPapelGenerico->where('id', $cubierta['papelCubierta'])->first()->toArray(),
'gramajeCubierta' => intval($cubierta['gramajeCubierta']), 'gramajeCubierta' => intval($cubierta['gramajeCubierta']),
'carasCubierta' => intval($cubierta['carasImpresion'] ?? 0), 'carasCubierta' => intval($cubierta['carasImpresion'] ?? 2),
'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0, 'solapasCubierta' => intval($cubierta['solapas'] ?? 0) == 1 ? intval($cubierta['tamanioSolapas']) : 0,
'acabado' => $cubierta['acabado'] ?? 0, 'acabado' => $cubierta['acabado'] ?? 0,
'lomoRedondo' => $cubierta['lomoRedondo'] ?? 0, 'lomoRedondo' => $cubierta['lomoRedondo'] ?? 0,
@ -1303,7 +1311,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} }
} }
if (is_array($faja) && intval($faja['acabado']) > 0) { if (is_array($faja) && $faja !== [] && intval($faja['acabado']) > 0) {
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$servicio = $model->getPrecioTarifa(intval($faja['acabado']), intval($selected_tirada), -1, $POD); $servicio = $model->getPrecioTarifa(intval($faja['acabado']), intval($selected_tirada), -1, $POD);
@ -1400,13 +1408,18 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
PresupuestoService::crearPedido($id); PresupuestoService::crearPedido($id);
} }
if ($this->request) {
return $this->respond([ return $this->respond([
'status' => $id, 'status' => $id,
'url' => site_url('presupuestos/presupuestocliente/edit'), 'url' => site_url('presupuestos/presupuestocliente/edit'),
'message' => lang('Basic.global.saveSuccess', [lang('Basic.global.record')]), 'message' => lang('Basic.global.saveSuccess', [lang('Basic.global.record')]),
]); ]);
} else { }else{
return $this->failUnauthorized('Invalid request', 403); return [
'sk_id' => $id,
'sk_url' => site_url('presupuestos/presupuestocliente/edit/' . $id)
];
} }
} }
@ -2137,7 +2150,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($extra_info) { if ($extra_info) {
$totalServicios += round(floatval($acabadoCubierta[0]->total), 2); $totalServicios += round(floatval($acabadoCubierta[0]->total), 2);
$base = round(floatval($acabadoCubierta[0]->total / (1 + $acabadoCubierta[0]->margen / 100.0)), 2); $base = round(floatval($acabadoCubierta[0]->total / (1 + $acabadoCubierta[0]->margen / 100.0)), 2);
$base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
$margenServicios += round(floatval($acabadoCubierta[0]->total - $base), 2); $margenServicios += round(floatval($acabadoCubierta[0]->total - $base), 2);
} }
} }
@ -2228,7 +2241,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($extra_info) { if ($extra_info) {
$totalServicios += round(floatval($acabadoSobrecubierta[0]->total), 2); $totalServicios += round(floatval($acabadoSobrecubierta[0]->total), 2);
$base = round(floatval($acabadoSobrecubierta[0]->total / (1 + $acabadoSobrecubierta[0]->margen / 100.0)), 2); $base = round(floatval($acabadoSobrecubierta[0]->total / (1 + $acabadoSobrecubierta[0]->margen / 100.0)), 2);
$base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
$margenServicios += round(floatval($acabadoSobrecubierta[0]->total - $base), 2); $margenServicios += round(floatval($acabadoSobrecubierta[0]->total - $base), 2);
} }
} }
@ -2381,7 +2394,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($extra_info) { if ($extra_info) {
$totalServicios += round(floatval($acabadoFaja[0]->total), 2); $totalServicios += round(floatval($acabadoFaja[0]->total), 2);
$base = round(floatval($acabadoFaja[0]->total / (1 + $acabadoFaja[0]->margen / 100.0)), 2); $base = round(floatval($acabadoFaja[0]->total / (1 + $acabadoFaja[0]->margen / 100.0)), 2);
$base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
$margenServicios += round(floatval($acabadoFaja[0]->total - $base), 2); $margenServicios += round(floatval($acabadoFaja[0]->total - $base), 2);
} }
} }
@ -2435,8 +2448,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($extra_info) { if ($extra_info) {
$totalServicios += round(floatval($servicio->total), 2); $totalServicios += round(floatval($servicio->total), 2);
$base = round(floatval($servicio->total / (1 + $servicio->margen / 100.0)), 2); $base = round(floatval($servicio->total / (1 + $servicio->margen / 100.0)), 2);
$base = round(floatval($base / $datosPedido->tirada), 2)*$datosPedido->tirada; $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
$margenServicios += round(floatval($servicio->total -$base), 2); $margenServicios += round(floatval($servicio->total - $base), 2);
} }
} }
@ -2472,8 +2485,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($extra_info) { if ($extra_info) {
$totalServicios += round(floatval($servicio->total), 2); $totalServicios += round(floatval($servicio->total), 2);
$base = round(floatval($servicio->total / (1 + $servicio->margen / 100.0)), 2); $base = round(floatval($servicio->total / (1 + $servicio->margen / 100.0)), 2);
$base = round(floatval($base / $datosPedido->tirada), 2)*$datosPedido->tirada; $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
$margenServicios += round(floatval($servicio->total -$base), 2); $margenServicios += round(floatval($servicio->total - $base), 2);
} }
} }
@ -2541,6 +2554,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
} }
} }
if ($datos_entrada['servicios'] !== []) {
if ($datos_entrada['servicios']['retractilado']) // acabado if ($datos_entrada['servicios']['retractilado']) // acabado
array_push($servicios, $servicio_retractilado); array_push($servicios, $servicio_retractilado);
if ($datos_entrada['servicios']['retractilado5']) // acabado if ($datos_entrada['servicios']['retractilado5']) // acabado
@ -2555,6 +2570,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
array_push($servicios, $servicio_solapas_sobrecubierta); array_push($servicios, $servicio_solapas_sobrecubierta);
if (!is_null($faja) && $faja && $faja != false) // Si hay faja, siempre con solapas if (!is_null($faja) && $faja && $faja != false) // Si hay faja, siempre con solapas
array_push($servicios, $servicio_solapas_faja); array_push($servicios, $servicio_solapas_faja);
}
foreach ($servicios as $servicio) { foreach ($servicios as $servicio) {
@ -2589,7 +2605,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($extra_info) { if ($extra_info) {
$totalServicios += round(floatval($resultado[0]->total), 2); $totalServicios += round(floatval($resultado[0]->total), 2);
$base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2);
$base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
$margenServicios += round(floatval($resultado[0]->total - $base), 2); $margenServicios += round(floatval($resultado[0]->total - $base), 2);
} }
} else if ($servicio->nombre == "ferro" || $servicio->nombre == "prototipo") { } else if ($servicio->nombre == "ferro" || $servicio->nombre == "prototipo") {
@ -2621,7 +2637,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($extra_info) { if ($extra_info) {
$totalServicios += round(floatval($resultado[0]->precio), 2); $totalServicios += round(floatval($resultado[0]->precio), 2);
$base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2);
$base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
$margenServicios += round(floatval($resultado[0]->total - $base), 2); $margenServicios += round(floatval($resultado[0]->total - $base), 2);
} }
} else if ($servicio->nombre == 'solapas_cubierta' || $servicio->nombre == 'solapas_sobrecubierta' || $servicio->nombre == 'solapas_faja') { } else if ($servicio->nombre == 'solapas_cubierta' || $servicio->nombre == 'solapas_sobrecubierta' || $servicio->nombre == 'solapas_faja') {
@ -2655,7 +2671,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($extra_info) { if ($extra_info) {
$totalServicios += round(floatval($resultado[0]->total), 2); $totalServicios += round(floatval($resultado[0]->total), 2);
$base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2);
$base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
$margenServicios += round(floatval($resultado[0]->total - $base), 2); $margenServicios += round(floatval($resultado[0]->total - $base), 2);
} }
} }
@ -2693,7 +2709,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($extra_info) { if ($extra_info) {
$totalServicios += round(floatval($resultado[0]->total), 2); $totalServicios += round(floatval($resultado[0]->total), 2);
$base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2);
$base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
$margenServicios += round(floatval($resultado[0]->total - $base), 2); $margenServicios += round(floatval($resultado[0]->total - $base), 2);
} }
} }
@ -2730,12 +2746,12 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($extra_info) { if ($extra_info) {
$totalServicios += round(floatval($resultado[0]->total), 2); $totalServicios += round(floatval($resultado[0]->total), 2);
$base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2);
$base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
$margenServicios += round(floatval($resultado[0]->total - $base), 2); $margenServicios += round(floatval($resultado[0]->total - $base), 2);
} }
} }
if (is_array($faja) && ($faja['solapas'] > 0 && intval($linea_faja['dimension_desarrollo']['ancho']) > 630)) { if (is_array($faja) && $faja !== [] && ($faja['solapas'] > 0 && intval($linea_faja['dimension_desarrollo']['ancho']) > 630)) {
// Servicios manipulado // Servicios manipulado
$resultado = PresupuestoCLienteService::getServiciosManipulado([ $resultado = PresupuestoCLienteService::getServiciosManipulado([
@ -2767,7 +2783,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($extra_info) { if ($extra_info) {
$totalServicios += round(floatval($resultado[0]->total), 2); $totalServicios += round(floatval($resultado[0]->total), 2);
$base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2); $base = round(floatval($resultado[0]->total / (1 + $resultado[0]->margen / 100.0)), 2);
$base = round(floatval($base / $datosPedido->tirada) , 2)* $datosPedido->tirada; $base = round(floatval($base / $datosPedido->tirada), 2) * $datosPedido->tirada;
$margenServicios += round(floatval($resultado[0]->total - $base), 2); $margenServicios += round(floatval($resultado[0]->total - $base), 2);
} }
} }

View File

@ -450,12 +450,12 @@ class PresupuestoModel extends \App\Models\BaseModel
'comparador_json_data' => $this->generateJson($data), 'comparador_json_data' => $this->generateJson($data),
'faja_color' => is_array($data['faja']) ? 1 : 0, 'faja_color' => is_array($data['faja']) ? 1 : 0,
'solapas_ancho_faja_color' => is_array($data['faja']) ? $data['faja']['solapas'] : 60, 'solapas_ancho_faja_color' => is_array($data['faja']) && $data['faja'] !== [] ? $data['faja']['solapas'] : 60,
'alto_faja_color' => is_array($data['faja']) ? $data['faja']['alto'] : 50, 'alto_faja_color' => is_array($data['faja']) && $data['faja'] !== [] ? $data['faja']['alto'] : 50,
'acabado_cubierta_id' => $data['cubierta']['acabado'], 'acabado_cubierta_id' => $data['cubierta']['acabado'],
'acabado_sobrecubierta_id' => !$data['sobrecubierta'] ? 0 : $data['sobrecubierta']['acabado'], 'acabado_sobrecubierta_id' => !$data['sobrecubierta'] ? 0 : $data['sobrecubierta']['acabado'],
'acabado_faja_id' => is_array($data['faja']) ? $data['faja']['acabado'] : 0, 'acabado_faja_id' => is_array($data['faja']) && $data['faja'] !== [] ? $data['faja']['acabado'] : 0,
'comp_tipo_impresion' => $data['isHq'] ? ($data['isColor'] ? 'colorhq' : 'negrohq') : ($data['isColor'] ? 'color' : 'negro'), 'comp_tipo_impresion' => $data['isHq'] ? ($data['isColor'] ? 'colorhq' : 'negrohq') : ($data['isColor'] ? 'color' : 'negro'),
@ -582,7 +582,7 @@ class PresupuestoModel extends \App\Models\BaseModel
} }
// -- Faja -- // -- Faja --
if ($data['faja'] != 0) { if ($data['faja'] != 0 && $data['faja'] !== []) {
$values['faja'] = array( $values['faja'] = array(
'papel_id' => intval($data['faja']['papel']), 'papel_id' => intval($data['faja']['papel']),
'gramaje' => intval($data['faja']['gramaje']), 'gramaje' => intval($data['faja']['gramaje']),