terminada la recogida de datos fundamentales

This commit is contained in:
2025-03-16 21:13:22 +01:00
parent f6da97d9eb
commit e71dd46a48
6 changed files with 1030 additions and 33 deletions

View File

@ -679,6 +679,8 @@ $routes->group('importador', ['namespace' => 'App\Controllers\Presupuestos'], fu
$routes->get('', 'Importadorpresupuestos::index', ['as' => 'importadorPresupuestos']);
$routes->get('clientlist', 'Importadorpresupuestos::getClientList', ['as' => 'clientList']);
$routes->get('presupuestoslist', 'Importadorpresupuestos::getPresupuestosList', ['as' => 'presupuestosList']);
$routes->get('getencuadernacion', 'Importadorpresupuestos::getEncuadernacionList');
$routes->get('getpresupuestodata', 'Importadorpresupuestos::getPresupuesto', ['as' => 'getPresupuesto']);
});
$routes->resource('presupuestocliente', ['namespace' => 'App\Controllers\Presupuestos', 'controller' => 'Presupuestocliente', 'except' => 'show,new,create,update']);

View File

@ -4,6 +4,7 @@ namespace App\Controllers\Presupuestos;
use App\Models\Presupuestos\ImportadorModel;
use App\Models\Clientes\ClienteModel;
use stdClass;
class Importadorpresupuestos extends \App\Controllers\BaseResourceController
{
@ -47,6 +48,12 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController
'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Presupuestos.moduleName')]),
];
$this->viewData['serviciosAutomaticos'] = [
'ferro' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_ferro')->value,
'prototipo' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_prototipo')->value,
'ferro_digital' => model('App\Models\Configuracion\ConfigVariableModel')->getVariable('id_servicio_ferro_digital')->value,
];
$viewData = array_merge($this->viewData, $viewData); // merge any possible values from the parent controller class
return view(static::$viewPath . 'viewImportadorPresupuestos', $viewData);
@ -72,7 +79,8 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController
return $this->response->setJSON(array_values($commonData));
}
public function getPresupuestosList(){
public function getPresupuestosList()
{
$search = "";
@ -85,4 +93,333 @@ class Importadorpresupuestos extends \App\Controllers\BaseResourceController
return $this->response->setJSON($data);
}
public function getEncuadernacionList()
{
$search = "";
if ($this->request->getGet("q")) {
$search = $this->request->getGet("q");
}
$model = model('App\Models\Configuracion\TipoPresupuestoModel');
$data = $model->getLibros($search);
return $this->response->setJSON($data);
}
public function getPresupuesto()
{
if ($this->request->isAJAX()) {
$id = $this->request->getGet("id") ?? 0;
if ($id == 0) {
return $this->failUnauthorized('Invalid request', 403);
}
$data = (new ImportadorModel())->getPresupuestoForImport($id);
$model_papel_formato = model('App\Models\Configuracion\PapelFormatoModel');
$papel_formato = $model_papel_formato->where('is_deleted', 0)->where('ancho>', 0)->findAll();
$papel_formato_id = null;
$papel_formato_texto = null;
foreach ($papel_formato as $formato) {
if ($data['datosGenerales']->papel_formato_personalizado) {
if ($formato->ancho == $data['datosGenerales']->papel_formato_personalizado_ancho && $formato->alto == $data['datosGenerales']->papel_formato_personalizado_alto) {
$papel_formato_id = $formato->id;
$papel_formato_texto = $formato->ancho . 'x' . $formato->alto;
break;
}
} else {
if ($formato->ancho == $data['datosGenerales']->papel_formato_ancho && $formato->alto == $data['datosGenerales']->papel_formato_alto) {
$papel_formato_id = $formato->id;
$papel_formato_texto = $formato->ancho . 'x' . $formato->alto;
break;
}
}
}
$datosGenerales = new \stdClass();
$datosGenerales->tirada = $data['datosGenerales']->tirada;
$datosGenerales->paginas = $data['datosGenerales']->paginas;
if ($papel_formato_id != null) {
$datosGenerales->papel_formato_personalizado = 0;
$datosGenerales->papel_formato_id = $papel_formato_id;
$datosGenerales->papel_formato_texto = $papel_formato_texto;
} else {
$datosGenerales->papel_formato_personalizado = 1;
if ($data['datosGenerales']->papel_formato_personalizado) {
$datosGenerales->papel_formato_ancho = $data['datosGenerales']->papel_formato_personalizado_ancho;
$datosGenerales->papel_formato_alto = $data['datosGenerales']->papel_formato_personalizado_alto;
} else {
$datosGenerales->papel_formato_ancho = $data['datosGenerales']->papel_formato_ancho;
$datosGenerales->papel_formato_alto = $data['datosGenerales']->papel_formato_alto;
}
}
$data['manipulados'] = array_map(fn($item) => $item->nombre, $data['manipulados']);
$data['acabados'] = array_map(fn($item) => $item->nombre, $data['acabados']);
$encuadernacion = $this->getEncuadernacion($data['manipulados']);
$lineas = $this->getLineasPresupuesto($data['lineas']);
$acabados = $this->getAcabados($data['acabados']);
$returnData = [
'success' => true,
'data' => [
'datosGenerales' => $datosGenerales,
'encuadernacion' => $encuadernacion,
'lineas' => $lineas,
'acabados' => $acabados,
'servicios' => [
'ferro' => $data['datosGenerales']->ferro,
'ferroDigital' => $data['datosGenerales']->ferro_digital,
'marcapaginas' => $data['datosGenerales']->marcapaginas,
'prototipo' => $data['datosGenerales']->prototipo
]
]
];
return $this->response->setJSON($returnData);
} else {
return $this->failUnauthorized('Invalid request', 403);
}
}
private function getEncuadernacion($manipulados)
{
$encuadernacion_values = [
'libroFresadoTapaDura' => 'Tapa Dura al Cromo Fresada',
'libroFresadoTapaBlanda' => 'Rústica Fresada',
'libroCosidoTapaDura' => 'Tapa Dura al Cromo Cosida Hilo',
'libroCosidoTapaBlanda' => 'Rústica Cosida Hilo vegetal',
'libroEspiralTapaDura' => 'Espiral',
'libroGrapado' => 'Cosido a caballete 2 grapas'
];
$encuadernacionOld = "";
$encuadernacion = new stdClass();
foreach ($manipulados as $manipulado) {
// check if manipulado is like strlower encuadernacion_values values
foreach ($encuadernacion_values as $valor) {
if (strpos(strtolower($manipulado), strtolower($valor)) !== false) {
$encuadernacionOld = $manipulado;
$key = array_search(strtolower($valor), array_map('strtolower', $encuadernacion_values));
$model = model('App\Models\Configuracion\TipoPresupuestoModel');
$encuadernacion = $model->select('id, codigo, encuadernacion')->where('codigo', $key)->first();
break;
}
}
}
return [
'encuadernacion' => $encuadernacion,
'encuadernacionOld' => $encuadernacionOld
];
}
private function getLineasPresupuesto($lineas)
{
$isHq = false;
foreach ($lineas as $linea) {
if ($linea->tipo == 'bn' || $linea->tipo == 'color' || $linea->tipo == 'rotativa') {
if ($linea->hq == 1) {
$isHq = true;
break;
}
}
}
$model_papelGenerico = model('App\Models\Configuracion\PapelGenericoModel');
$bn = new stdClass();
$color = new stdClass();
$cubierta = new stdClass();
$sobrecubierta = new stdClass();
foreach ($lineas as $linea) {
$newPapel = $model_papelGenerico->where('code', $linea->papel_code)->where('deleted_at', NULL)->first();
if ($linea->tipo == 'bn') {
$bn->papel_id = $linea->papel_id;
$bn->papel_nombre = $linea->papel_nombre;
$bn->papel_code = $linea->papel_code;
$bn->gramaje = $linea->gramaje;
$bn->paginas = $linea->paginas;
$bn->new_papel_id = $newPapel->id;
$bn->new_papel_nombre = $newPapel->nombre;
}
else if ($linea->tipo == 'color') {
$color->papel_id = $linea->papel_id;
$color->papel_nombre = $linea->papel_nombre;
$color->papel_code = $linea->papel_code;
$color->gramaje = $linea->gramaje;
$color->paginas = $linea->paginas;
$color->new_papel_id = $newPapel->id;
$color->new_papel_nombre = $newPapel->nombre;
}
else if ($linea->tipo == 'portada') {
$cubierta->papel_id = $linea->papel_id;
$cubierta->papel_nombre = $linea->papel_nombre;
$cubierta->papel_code = $linea->papel_code;
$cubierta->gramaje = $linea->gramaje;
$cubierta->paginas = $linea->paginas;
$cubierta->new_papel_id = $newPapel->id;
$cubierta->new_papel_nombre = $newPapel->nombre;
$cubierta->solapas = $linea->solapas_ancho;
}
else if ($linea->tipo == 'cubierta') {
$sobrecubierta->papel_id = $linea->papel_id;
$sobrecubierta->papel_nombre = $linea->papel_nombre;
$sobrecubierta->papel_code = $linea->papel_code;
$sobrecubierta->gramaje = $linea->gramaje;
$sobrecubierta->paginas = $linea->paginas;
$sobrecubierta->new_papel_id = $newPapel->id;
$sobrecubierta->new_papel_nombre = $newPapel->nombre;
$sobrecubierta->solapas = $linea->solapas_ancho;
}
else if ($linea->tipo == 'rotativa') {
if ($linea->rotativa_impresion == 'negro') {
$bn->papel_id = $linea->papel_id;
$bn->papel_nombre = $linea->papel_nombre;
$bn->papel_code = $linea->papel_code;
$bn->gramaje = $linea->gramaje;
$bn->paginas = $linea->paginas;
$bn->new_papel_id = $newPapel->id;
$bn->new_papel_nombre = $newPapel->nombre;
} else {
if ($linea->paginas == $linea->rotativa_pag_color) {
$color->papel_id = $linea->papel_id;
$color->papel_nombre = $linea->papel_nombre;
$color->papel_code = $linea->papel_code;
$color->gramaje = $linea->gramaje;
$color->paginas = $linea->paginas;
$color->new_papel_id = $newPapel->id;
$color->new_papel_nombre = $newPapel->nombre;
} else {
$bn->papel_id = $color->papel_id = $linea->papel_id;
$bn->papel_nombre = $color->papel_nombre = $linea->papel_nombre;
$bn->papel_code = $color->papel_code = $linea->papel_code;
$bn->gramaje = $color->gramaje = $linea->gramaje;
$color->paginas = $linea->rotativa_pag_color;
$bn->paginas = intval($linea->paginas) - intval($linea->rotativa_pag_color);
$bn->new_papel_id = $color->new_papel_id = $newPapel->id;
$bn->new_papel_nombre = $color->new_papel_nombre = $newPapel->nombre;
}
}
}
}
return [
'bn' => $bn,
'color' => $color,
'cubierta' => $cubierta,
'sobrecubierta' => $sobrecubierta,
'isHq' => $isHq
];
}
private function getAcabados($acabados){
$acabadoCubierta = "";
$reservaUVICubierta = false;
$acabadoSobrecubierta = "";
$reservaUVISobrecubierta = false;
$acabadoCubiertaOld = "";
$acabadoSobrecubiertaOld = "";
// por defecto, si pone portada o no pone ni portada ni cubierta, se asigna a la cubierta (portada en el antiguo)
foreach ($acabados as $acabado) {
if (strpos(strtolower($acabado), 'portada') !== false ||
(strpos(strtolower($acabado), 'portada') === false &&
strpos(strtolower($acabado), 'sobre cubierta') === false)) {
// palabras clave: brillo, mate, gofrado, antirayado, antirrayado, sandy, uvi para buscar en acabado
if(strpos(strtolower($acabado), 'brillo') !== false){
$acabadoCubierta = 1;
$acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado;
} else if(strpos(strtolower($acabado), 'gofrado') !== false){
$acabadoCubierta = 6;
$acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado;
} else if(strpos(strtolower($acabado), 'antirayado') !== false || strpos(strtolower($acabado), 'antirrayado') !== false){
$acabadoCubierta = 8;
$acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado;
} else if(strpos(strtolower($acabado), 'sandy') !== false){
$acabadoCubierta = 9;
$acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado;
} else if(strpos(strtolower($acabado), 'uvi') !== false){
$reservaUVICubierta = true;
$acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado;
} else if(strpos(strtolower($acabado), 'mate') !== false){
$acabadoCubierta = 5;
$acabadoCubiertaOld = strlen($acabadoCubiertaOld)==0? $acabado: $acabadoCubiertaOld . ', ' . $acabado;
}
}
else if (strpos(strtolower($acabado), 'sobre cubierta') !== false) {
// palabras clave: brillo, mate, gofrado, antirayado, antirrayado, sandy, uvi para buscar en acabado
if(strpos(strtolower($acabado), 'brillo') !== false){
$acabadoSobrecubierta = 1;
$acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado;
} else if(strpos(strtolower($acabado), 'gofrado') !== false){
$acabadoSobrecubierta = 6;
$acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado;
} else if(strpos(strtolower($acabado), 'antirayado') !== false || strpos(strtolower($acabado), 'antirrayado') !== false){
$acabadoSobrecubierta = 8;
$acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado;
} else if(strpos(strtolower($acabado), 'sandy') !== false){
$acabadoSobrecubierta = 9;
$acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado;
} else if(strpos(strtolower($acabado), 'uvi') !== false){
$reservaUVISobrecubierta = true;
$acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado;
} else if(strpos(strtolower($acabado), 'mate') !== false){
$acabadoSobrecubierta = 5;
$acabadoSobrecubiertaOld = strlen($acabadoSobrecubiertaOld)==0? $acabado: $acabadoSobrecubiertaOld . ', ' . $acabado;
}
}
}
// Si es mate y lleva UVI, se cambia al servicio correspondiente
if($acabadoCubierta == 5 && $reservaUVICubierta){
$acabadoCubierta = 2;
}
if($acabadoSobrecubierta == 5 && $reservaUVISobrecubierta){
$acabadoSobrecubierta = 2;
}
$model = model('App\Models\Tarifas\Acabados\ServicioAcabadoModel');
$cubierta = new stdClass();
$cubierta->acabadoOld = $acabadoCubiertaOld;
$cubierta->acabado = $model->select('id as id, nombre as name')->where('id', $acabadoCubierta)->first();
$sobrecubierta = new stdClass();
$sobrecubierta->acabadoOld = $acabadoSobrecubiertaOld;
$sobrecubierta->acabado = $model->select('id as id, nombre as name')->where('id', $acabadoSobrecubierta)->first();
return [
'cubierta' => $cubierta,
'sobrecubierta' => $sobrecubierta,
];
}
}

View File

@ -49,6 +49,18 @@ class TipoPresupuestoModel extends \App\Models\BaseModel
}
public function getLibros($search = ""){
$builder = $this->db
->table($this->table . " t1")
->select("t1.id as id, t1.encuadernacion as name")
->where('t1.codigo LIKE', 'libro%')
->where('t1.is_deleted', 0);
return empty($search) ?
$builder->get()->getResultObject() :
$builder->groupStart()->
like('t1.codigo', $search)->
groupEnd()->get()->getResultObject();
}
}

View File

@ -6,9 +6,6 @@ class ImportadorModel extends \App\Models\BaseModel
{
protected $table = 'pedido_libro';
protected $primaryKey = 'id';
//protected $allowedFields = ['ticket_number', 'order_id', 'created_at', 'updated_at', 'deleted_at', 'check_in'];
// Define the alternative connection group
protected $DBGroup = 'old_erp';
public function getClientList(){
@ -28,8 +25,9 @@ class ImportadorModel extends \App\Models\BaseModel
$builder = $db->table('pedido_libro');
$builder->select('id as id, CONCAT(id, " - ", titulo) as name');
$builder->where('customer_id', $clienteId);
$builder->where('estado', 'finalizado');
$builder->whereIn('estado', ['finalizado', 'validado']);
$builder->where('deleted_at', NULL);
$builder->orderBy('updated_at', 'DESC');
return empty($search) ?
$builder->get()->getResultObject() :
@ -39,6 +37,61 @@ class ImportadorModel extends \App\Models\BaseModel
groupEnd()->get()->getResultObject();
}
public function getPresupuestoForImport($id){
$db = \Config\Database::connect($this->DBGroup); // Conectar a olderp
$builder = $db->table('pedido_libro t1')
->select('t1.paginas, t1.tirada, t1.papel_formato_personalizado,
t1.papel_formato_ancho as papel_formato_personalizado_ancho,
t1.papel_formato_alto as papel_formato_personalizado_alto,
t2.ancho as papel_formato_ancho, t2.alto as papel_formato_alto,
t1.ferro as ferro,t1.ferro_digital as ferro_digital, t1.marcapaginas as marcapaginas')
->join('papel_formato t2', 't1.papel_formato_id = t2.id', 'left')
->where('t1.id', $id)
->where('t1.deleted_at', NULL);
$query = $builder->get();
$datosGenerales = $query->getRow();
$builder = $db->table('pedido_libro_manipulado')
->select('nombre')
->where('pedido_libro_id', $id);
$query = $builder->get();
$manipulados = $query->getResultObject();
$builder = $db->table('pedido_libro_acabado')
->select('nombre')
->where('pedido_libro_id', $id);
$query = $builder->get();
$acabados = $query->getResultObject();
$builder = $db->table('pedido_libro_preimpresion')
->select('nombre')
->where('pedido_libro_id', $id)
->where('nombre', 'Prototipo');
$query = $builder->countAllResults();
if($query > 0){
$datosGenerales->prototipo = 1;
}
$builder = $db->table('pedido_libro_linea t1')
->select('t1.tipo as tipo, t1.hq as hq, t1.paginas as paginas, t1.papel_id as papel_id,
t2.nombre as papel_nombre, t2.code as papel_code, t1.gramaje as gramaje, t1.rotativa_pag_color as rotativa_pag_color,
t1.rotativa_impresion as rotativa_impresion, t1.solapas_ancho as solapas_ancho')
->join('papel_generico t2', 't1.papel_id = t2.id', 'left')
->where('pedido_libro_id', $id);
$query = $builder->get();
$lineas = $query->getResultObject();
return [
'datosGenerales' => $datosGenerales,
'manipulados' => $manipulados,
'acabados' => $acabados,
'lineas' => $lineas
];
}
}

View File

@ -16,7 +16,8 @@
<div class="card-body">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<div class="row">
<div class="row align-items-end">
<div class="col-md-4">
<label id="label_clienteId" for="clienteId" class="form-label">
Cliente
@ -29,38 +30,365 @@
<label id="label_clienteId" for="clienteId" class="form-label">
Presupuesto
</label>
<select id="presupuesto" name="presupuesto" class="form-control select2bs2"
style="width: 100%;">
<select id="presupuesto" name="presupuesto" class="form-control select2bs2" style="width: 100%;"
disabled>
</select>
</div>
<div class="col-md-4">
<div id="openOld" class="btn mt-3 btn-primary waves-effect waves-light ml-2">
<span
class="align-middle d-sm-inline-block me-sm-1">Abrir original</span>
</div>
<div class="col-md-2 d-flex flex-column h-100">
<button id="openOld" class="btn btn-primary waves-effect waves-light mt-auto w-100" disabled>
Abrir original
</button>
</div>
<div class="col-md-2 d-flex flex-column h-100">
<button id="initImport" class="btn btn-primary waves-effect waves-light mt-auto w-100" disabled>
Obtener datos
</button>
</div>
</div>
</div><!--//.card-body -->
<div class="card-footer">
</div><!--//.card-footer -->
</div><!--//.card -->
</div><!--//.col -->
</div><!--//.row -->
<div class="card card-info mt-3 " id="cardImportador">
<div class="card-header">
<h3 class="card-title
">Detalle presupuesto</h3>
</div><!--//.card-header -->
<?= $this->endSection() ?>
<div class="card-body">
<div class="row">
<div class="col-md-2">
<label for="paginas" class="form-label">
Páginas
</label>
<input type="text" id="paginas" name="paginas" class="form-control" disabled>
</div>
<div class="col-md-2">
<label for="tirada" class="form-label">
Tirada
</label>
<input type="text" id="tirada" name="tirada" class="form-control" disabled>
</div>
<div class="col-md-3">
<label for="tamanio" class="form-label">
Tamaño
</label>
<select id="tamanio" name="tamanio" class="form-control select2bs2" disabled>
</select>
<div id="formatoPersonalizado" class="row justify-content-center d-none">
<div class="col-md-6 mb-1 ">
<input type="number" id="papelFormatoAncho" name="papel_formato_ancho" step="1"
class="form-control num-input" min="110" value="110" readonly>
</div>
<div class="col-md-6 mb-1 ">
<input type="number" id="papelFormatoAlto" name="papel_formato_alto" step="1"
class="form-control num-input" min="170" value="170" readonly>
</div>
</div>
<div class="form-check form-switch mt-2 mb-2">
<input class="form-check-input" type="checkbox" id="papelFormatoPersonalizado"
name="papel_formato_personalizado" value="1" disabled>
<label class="form-check-label"
for="papelFormatoPersonalizado"><?= lang('Presupuestos.papelFormatoPersonalizado') ?>
</label>
</div>
</div>
</div><!--//.row -->
<h5 class="mt-3">Encuadernación</h5>
<div class="row">
<div class="col-md-6">
<label for="encuadernacion_old" class="form-label">Encuadernación original</label>
<input type="text" id="encuadernacion_old" name="encuadernacion_old"
class="form-control" disabled>
</div>
<div class="col-md-6">
<label for="encuadernacion" class="form-label">Encuadernación propuesta</label>
<select id="encuadernacion" name="encuadernacion" class="form-control select2bs2"
style="width: 100%;">
</select>
</div>
</div><!--//.row -->
<h5 class="mt-5">Interior</h5>
<div class="row mb-3">
<div class="col-md-2">
<label for="interior_old" class="form-label">Calidad</label>
<select id="isHq" name="isHq" class="form-control">
<option value="0">Estándar</option>
<option value="1">HQ</option>
</select>
</div>
</div>
<div class="row">
<table class="table table-striped table-hover">
<thead>
<tr>
<th style="width: 10%;"></th>
<th style="width: 10%;"><?= lang("Presupuestos.numeroPaginas") ?></th>
<th style="width: 30%;">Papel Genérico original</th>
<th style="width: 30%;">Papel Genérico propuesto</th>
<th style="width: 10%;"><?= lang("Presupuestos.gramaje") ?></th>
</tr>
</thead>
<tbody>
<tr>
<td><?= lang('MaquinasTarifasImpresions.negro') ?></td>
<td>
<input type="text" id="compPaginasNegro" name="comp_paginas_negro"
placeholder="0" maxLength="5" class="form-control comp_negro_items"
value="" readonly>
</td>
<td>
<input id="compPapelNegroOrigen" name="comp_papel_negro_origen"
class="form-control comp_negro_items" value="" readonly>
</td>
<td>
<select id="compPapelNegroSelected" name="comp_papel_negro_selected"
class="form-control select2bs2 comp_negro_items" style="width: 100%;">
</select>
</td>
<td>
<input type="text" id="compGramajeNegro" name="comp_gramaje_negro"
class="form-control comp_negro_items" value="" readonly>
</td>
</tr>
<tr>
<td><?= lang('MaquinasTarifasImpresions.color') ?></td>
<td>
<input type="text" id="compPaginasColor" name="comp_paginas_color"
placeholder="0" maxLength="5" class="form-control comp_color_items"
value="">
</td>
<td>
<input type="text" id="compPapelColorOrigen" name="comp_papel_color_origen"
class="form-control comp_color_items" value="" readonly>
</td>
<td>
<select id="compPapelColorSelected" name="comp_papel_color_selected"
class="form-control select2bs2 comp_color_items" style="width: 100%;">
</select>
</td>
<td>
<input type="text" id="compGramajeColor" name="comp_gramaje_color"
class="form-control comp_color_items" value="" readonly>
</input>
</td>
</tr>
</tbody>
</table>
</div>
<h5 class="mt-5">Exteriores</h5>
<div class="row">
<table class="table table-striped table-hover">
<thead>
<tr>
<th style="width: 10%;"></th>
<th style="width: 10%;">Opciones</th>
<th style="width: 10%;">Solapas</th>
<th style="width: 25%;">Papel Genérico original</th>
<th style="width: 25%;">Papel Genérico propuesto</th>
<th style="width: 10%;"><?= lang("Presupuestos.gramaje") ?></th>
</tr>
</thead>
<tbody>
<tr>
<td>Cubierta</td>
<td>
<select id="compCarasCubierta" name="comp_paginas_cubierta"
class="form-control select2bs2 comp_cubierta_items" style="width: 100%;"
disabled>
<option value="2"><?= lang('Presupuestos.unaCara') ?></option>
<option value="4"><?= lang('Presupuestos.dosCaras') ?></option>
</select>
</td>
<td>
<input id="compSolapasCubierta" name="comp_solapas_cubierta"
class="form-control comp_cubierta_items" value="" readonly>
<td>
<input type="text" id="compPapelCubiertaOrigen"
name="comp_papel_cubierta_origen"
class="form-control comp_cubierta_items" style="width: 100%;" readonly>
</input>
</td>
<td>
<select id="compPapelCubiertaSelected" name="comp_papel_cubierta_selected"
class="form-control select2bs2 comp_cubierta_items"
style="width: 100%;">
</select>
</td>
<td>
<input type="text" id="compGramajeCubierta" name="comp_gramaje_cubierta"
class="form-control comp_cubierta_items" value="" readonly>
</td>
</tr>
<tr>
<td>Sobrecubierta</td>
<td>
<select id="compSobrecubierta" name="comp_sobrecubierta"
class="form-control select2bs2 comp_sobrecubierta_items"
style="width: 100%;" disabled>
<option value="0"><?= lang('Presupuestos.no') ?></option>
<option value="1"><?= lang('Presupuestos.si') ?></option>
</select>
</td>
<td>
<input id="compSolapasSobrecubierta" name="comp_solapas_sobrecubierta"
class="form-control comp_sobrecubierta_items" value="" readonly>
</td>
<td>
<input id="compPapelSobrecubiertaOrigen"
name="comp_papel_sobrecubierta_origen"
class="form-control comp_sobrecubierta_items" value="" readonly>
</td>
<td>
<select id="compPapelSobrecubiertaSelected"
name="comp_papel_sobrecubierta_selected"
class="form-control select2bs2 comp_sobrecubierta_items"
style="width: 100%;">
</select>
</td>
<td>
<input type="text" id="compGramajeSobrecubierta"
name="comp_gramaje_sobrecubierta"
class="form-control comp_sobrecubierta_items" value="" readonly>
</td>
</tr>
</tbody>
</table>
</div>
<h5 class="mt-5">Acabados</h5>
<div class="row">
<table class="table table-striped table-hover">
<thead>
<tr>
<th style="width: 10%;"></th>
<th style="width: 45%;">Acabado original</th>
<th style="width: 45%;">Acabado propuesto</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cubierta</td>
<td>
<input type="text" id="compAcabadoCubiertaOrigen"
name="comp_acabado_cubierta_origen"
class="form-control comp_cubierta_items" value="" readonly>
</td>
<td>
<select id="compAcabadoCubiertaSelected"
name="comp_acabado_cubierta_selected"
class="form-control select2bs2 comp_cubierta_items"
style="width: 100%;">
</select>
</td>
</tr>
<tr>
<td>Sobrecubierta</td>
<td>
<input id="compAcabadoSobrecubiertaOrigen"
name="comp_acabado_sobrecubierta_origen"
class="form-control comp_sobrecubierta_items" value="" readonly>
</td>
<td>
<select id="compAcabadoSobrecubiertaSelected"
name="comp_acabado_sobrecubierta_selected"
class="form-control select2bs2 comp_sobrecubierta_items"
style="width: 100%;">
</select>
</td>
</tr>
</tbody>
</table>
</div>
<h5 class="mt-5">Servicios</h5>
<div class="row">
<div class="col-md-3 mb-3">
<div class="form-check">
<label for="ferro" class="form-check-label">
<input type="checkbox" id="ferro" name="ferro" value="1"
class="form-check-input" service="extra"
service-id=<?= $serviciosAutomaticos['ferro'] ?>>
<?= lang('Presupuestos.ferro') ?>
</label>
</div><!--//.form-check -->
</div>
<div class="col-md-3 mb-3">
<div class="form-check">
<label for="ferroDigital" class="form-check-label">
<input type="checkbox" id="ferroDigital" name="ferro_digital" value="1"
service="extra" service-id=<?= $serviciosAutomaticos['ferro_digital'] ?>
class="form-check-input">
<?= lang('Presupuestos.ferroDigital') ?>
</label>
</div><!--//.form-check -->
</div>
<div class="col-md-3 mb-3">
<div class="form-check">
<label for="prototipo" class="form-check-label">
<input type="checkbox" id="prototipo" name="prototipo" value="1"
class="form-check-input" service="extra"
service-id=<?= $serviciosAutomaticos['prototipo'] ?>>
<?= lang('Presupuestos.prototipo') ?>
</label>
</div><!--//.form-check -->
</div>
<div class="col-md-3 mb-3">
<div class="form-check">
<label for="marcapaginas" class="form-check-label">
<input type="checkbox" id="marcapaginas" name="marcapaginas" value="1"
class="form-check-input">
<?= lang('Presupuestos.marcapaginas') ?>
</label>
</div><!--//.form-check -->
</div>
</div>
</div><!--//.card -->
</div><!--//.card-body -->
<div class="card-footer">
</div><!--//.card-footer -->
</div><!--//.card -->
</div><!--//.col -->
</div><!--//.row -->
<?= $this->endSection() ?>
<?= $this->section('css') ?>
<?= $this->section('css') ?>
<?= $this->endSection() ?>
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/importadorPresupuestos/importador.js') ?>"></script>
<?= $this->endSection() ?>
<?= $this->section('additionalExternalJs') ?>
<script type="module"
src="<?= site_url('assets/js/safekat/pages/importadorPresupuestos/importador.js') ?>"></script>
<?= $this->endSection() ?>

View File

@ -1,25 +1,290 @@
import ClassSelect from '../../components/select2.js';
import Ajax from '../../components/ajax.js';
class Importador{
class Importador {
constructor(){
constructor() {
this.cliente = new ClassSelect($("#clienteId"), '/importador/clientlist', "Seleccione un cliente");
this.presupuesto = new ClassSelect($("#presupuesto"), '/importador/presupuestoslist', "Seleccione un presupuesto", false, {clienteId: ()=>$("#clienteId").val()});
this.presupuesto = new ClassSelect($("#presupuesto"), '/importador/presupuestoslist', "Seleccione un presupuesto", false, { clienteId: () => $("#clienteId").val() });
this.encuadernacion = new ClassSelect($("#encuadernacion"), '/importador/getencuadernacion', "Seleccione una encuadernación");
this.compPapelNegroSelected = new ClassSelect($("#compPapelNegroSelected"), '/presupuestoadmin/papelgenerico', "Seleccione un papel", false,
{
tipo_impresion: () => this.encuadernacion.getVal(),
tirada: () => $('#tirada').val(),
ancho: () => this.getDimensionLibro().ancho,
alto: () => this.getDimensionLibro().alto,
sopalas: 0,
lomo: 0,
tipo: () => $('#hq').val() ? 'negrohq' : 'negro',
});
this.compPapelColorSelected = new ClassSelect($("#compPapelColorSelected"), '/presupuestoadmin/papelgenerico', "Seleccione un papel", false,
{
tipo_impresion: () => this.encuadernacion.getVal(),
tirada: () => $('#tirada').val(),
ancho: () => this.getDimensionLibro().ancho,
alto: () => this.getDimensionLibro().alto,
sopalas: 0,
lomo: 0,
tipo: () => $('#hq').val() ? 'colorhq' : 'color',
});
this.compPapelCubiertaSelected = new ClassSelect($("#compPapelCubiertaSelected"), '/presupuestoadmin/papelgenerico', "Seleccione un papel", false,
{
tipo_impresion: this.encuadernacion.getVal(),
tirada: () => $('#tirada').val(),
ancho: () => this.getDimensionLibro().ancho,
alto: () => this.getDimensionLibro().alto,
sopalas: () => $('#compSolapasCubierta').val(),
lomo: () => 0,
tipo: 'colorhq',
uso: 'cubierta',
});
this.compSobrecubiertaSelected = new ClassSelect($("#compPapelSobrecubiertaSelected"), '/presupuestoadmin/papelgenerico', "Seleccione un papel", false,
{
tipo_impresion: this.encuadernacion.getVal(),
tirada: () => $('#tirada').val(),
ancho: () => this.getDimensionLibro().ancho,
alto: () => this.getDimensionLibro().alto,
sopalas: () => $('#compSolapasSobrecubierta').val(),
lomo: () => 0,
tipo: 'colorhq',
uso: 'sobrecubierta',
});
this.compAcabadoCubiertaSelected = new ClassSelect($("#compAcabadoCubiertaSelected"), '/importador/getacabado', "Seleccione un acabado");
this.compAcabadoSobrecubiertaSelected = new ClassSelect($("#compAcabadoSobrecubiertaSelected"), '/importador/getacabado', "Seleccione un acabado");
this.openBtn = $('#openOld');
this.initImport = $('#initImport');
}
init(){
init() {
this.cliente.init();
this.presupuesto.init();
this.encuadernacion.init();
this.openBtn.on('click', function(){
if($("#clienteId").val() != '' && $("#presupuesto").val() != ''){
window.open('https://gestion.safekat.es/presupuesto/edit/'+$("#presupuesto").val());
this.compPapelNegroSelected.init();
this.compPapelColorSelected.init();
this.compPapelCubiertaSelected.init();
this.compSobrecubiertaSelected.init();
this.compAcabadoCubiertaSelected.init();
this.compAcabadoSobrecubiertaSelected.init();
this.cliente.item.on('change', () => {
this.presupuesto.item.val('').trigger('change');
this.presupuesto.item.prop('disabled', false);
this.openBtn.prop('disabled', true);
this.initImport.prop('disabled', true);
});
this.presupuesto.item.on('change', () => {
this.openBtn.prop('disabled', false);
this.initImport.prop('disabled', false);
});
this.openBtn.on('click', function () {
if ($("#clienteId").val() != '' && $("#presupuesto").val() != '') {
window.open('https://gestion.safekat.es/presupuesto/edit/' + $("#presupuesto").val());
}
});
this.initImport.on('click', () => {
if ($("#clienteId").val() != '' && $("#presupuesto").val() != '') {
this.getPresupuestoData.bind(this)();
}
});
}
getPresupuestoData() {
new Ajax(
'/importador/getpresupuestodata',
{ id: $("#presupuesto").val() },
{},
(response) => {
if (response.success) {
this.fillInitialData(response.data);
}
},
(error) => {
console.error(error);
}
).get();
}
getDimensionLibro() {
let ancho = 0;
let alto = 0;
if ($('#papelFormatoPersonalizado').prop('checked')) {
ancho = $('#papelFormatoAncho').val();
alto = $('#papelFormatoAlto').val();
}
else {
const text = $('#tamanio').text();
ancho = text.split('x')[0];
alto = text.split('x')[1];
}
return { ancho, alto };
}
fillInitialData(data) {
console.log(data);
$('#paginas').val(data.datosGenerales.paginas);
$('#tirada').val(data.datosGenerales.tirada);
if (data.datosGenerales.papel_formato_personalizado) {
$('#papelFormatoPersonalizado').prop('checked', true);
$('#tamanio').addClass('d-none');
$('#formatoPersonalizado').removeClass('d-none');
$('#papelFormatoAncho').val(data.datosGenerales.papel_formato_ancho);
$('#papelFormatoAlto').val(data.datosGenerales.papel_formato_alto);
}
else {
$('#tamanio').removeClass('d-none');
$('#formatoPersonalizado').addClass('d-none');
$('#papelFormatoPersonalizado').prop('checked', false);
$('#tamanio').append('<option value="' + data.datosGenerales.papel_formato_id + '" selected>' + data.datosGenerales.papel_formato_texto + '</option>');
$('#tamanio').val(data.datosGenerales.papel_formato_id).trigger('change');
}
if (data.encuadernacion) {
$('#encuadernacion_old').val(data.encuadernacion.encuadernacionOld);
// check if data.encuadernacion.encuadernacion exists and is not empty
if (data.encuadernacion.encuadernacion) {
this.encuadernacion.setOption(data.encuadernacion.encuadernacion.id, data.encuadernacion.encuadernacion.encuadernacion);
}
}
if (data.lineas) {
if (data.lineas.isHq) {
$('#hq').val(data.lineas.hq);
}
if (data.lineas.bn && data.lineas.bn.paginas) {
$('#compPaginasNegro').val(data.lineas.bn.paginas);
$('#compPapelNegroOrigen').val(data.lineas.bn.papel_nombre);
$('#compGramajeNegro').val(parseFloat(data.lineas.bn.gramaje).toFixed(0));
this.compPapelNegroSelected.item.prop('disabled', false);
this.compPapelNegroSelected.setOption(data.lineas.bn.new_papel_id, data.lineas.bn.new_papel_nombre);
}
else {
$('#compPaginasNegro').val(0);
$('#compPapelNegroOrigen').val("");
$('#compGramajeNegro').val("");
this.compPapelNegroSelected.empty();
this.compPapelNegroSelected.item.prop('disabled', true);
}
if (data.lineas.color && data.lineas.color.paginas) {
$('#compPaginasColor').val(data.lineas.color.paginas);
$('#compPapelColorOrigen').val(data.lineas.color.papel_nombre);
$('#compGramajeColor').val(parseFloat(data.lineas.color.gramaje).toFixed(0));
this.compPapelColorSelected.item.prop('disabled', false);
this.compPapelColorSelected.setOption(data.lineas.color.new_papel_id, data.lineas.color.new_papel_nombre);
}
else {
$('#compPaginasColor').val(0);
$('#compPapelColorOrigen').val("");
$('#compGramajeColor').val("");
this.compPapelColorSelected.empty();
this.compPapelColorSelected.item.prop('disabled', true);
}
if (data.lineas.cubierta && data.lineas.cubierta.paginas) {
$('#compPaginasCubierta').val(data.lineas.cubierta.paginas);
$('#compPapelCubiertaOrigen').val(data.lineas.cubierta.papel_nombre);
$('#compGramajeCubierta').val(parseFloat(data.lineas.cubierta.gramaje).toFixed(0));
$('#compSolapasCubierta').val(parseFloat(data.lineas.cubierta.solapas).toFixed(0));
this.compPapelCubiertaSelected.item.prop('disabled', false);
this.compPapelCubiertaSelected.setOption(data.lineas.cubierta.new_papel_id, data.lineas.cubierta.new_papel_nombre);
}
else {
$('#compPaginasCubierta').val(0);
$('#compPapelCubiertaOrigen').val("");
$('#compGramajeCubierta').val("");
$('#compSolapasCubierta').val("");
this.compPapelCubiertaSelected.empty();
this.compPapelCubiertaSelected.item.prop('disabled', true);
}
if (data.lineas.sobrecubierta && data.lineas.sobrecubierta.paginas) {
$('#compSobrecubierta').val(1);
$('#compPapelSobrecubiertaOrigen').val(data.lineas.sobrecubierta.papel_nombre);
$('#compGramajeSobrecubierta').val(parseFloat(data.lineas.sobrecubierta.gramaje).toFixed(0));
$('#compSolapasSobrecubierta').val(parseFloat(data.lineas.sobrecubierta.solapas).toFixed(0));
this.compSobrecubiertaSelected.item.prop('disabled', false);
this.compSobrecubiertaSelected.setOption(data.lineas.sobrecubierta.new_papel_id, data.lineas.sobrecubierta.new_papel_nombre);
}
else {
$('#compSobrecubierta').val(0);
$('#compPapelSobrecubiertaOrigen').val("");
$('#compGramajeSobrecubierta').val("");
$('#compSolapasSobrecubierta').val("");
this.compSobrecubiertaSelected.empty();
this.compSobrecubiertaSelected.item.prop('disabled', true);
}
if (data.acabados) {
if (data.acabados.cubierta && data.acabados.cubierta.acabadoOld) {
$('#compAcabadoCubiertaOrigen').val(data.acabados.cubierta.acabadoOld);
this.compAcabadoCubiertaSelected.setOption(data.acabados.cubierta.acabado.id, data.acabados.cubierta.acabado.name);
this.compAcabadoCubiertaSelected.item.prop('disabled', false);
}
else {
$('#compAcabadoCubiertaOrigen').val("");
this.compAcabadoCubiertaSelected.empty();
this.compAcabadoCubiertaSelected.item.prop('disabled', true);
}
if (data.acabados.sobrecubierta && data.acabados.sobrecubierta.acabadoOld) {
$('#compAcabadoSobrecubiertaOrigen').val(data.acabados.sobrecubierta.acabadoOld);
this.compAcabadoSobrecubiertaSelected.setOption(data.acabados.sobrecubierta.acabado.id, data.acabados.sobrecubierta.acabado.name);
this.compAcabadoSobrecubiertaSelected.item.prop('disabled', false);
}
else {
$('#compAcabadoSobrecubiertaOrigen').val("");
this.compAcabadoSobrecubiertaSelected.empty();
this.compAcabadoSobrecubiertaSelected.item.prop('disabled', true);
}
}
if(data.servicios.ferro == 1){
$('#ferro').prop('checked', true);
}
else{
$('#ferro').prop('checked', false);
}
if(data.servicios.ferroDigital == 1){
$('#ferroDigital').prop('checked', true);
}
else{
$('#ferroDigital').prop('checked', false);
}
if(data.servicios.marcapaginas == 1){
$('#marcapaginas').prop('checked', true);
}
else{
$('#marcapaginas').prop('checked', false);
}
if(data.servicios.prototipo == 1){
$('#prototipo').prop('checked', true);
}
else{
$('#prototipo').prop('checked', false);
}
}
}
}
document.addEventListener('DOMContentLoaded', function () {