Merge branch 'bug/arreglar_httpdocs' into 'main'

Bug/arreglar httpdocs

See merge request jjimenez/safekat!362
This commit is contained in:
2024-11-07 19:25:22 +00:00
1645 changed files with 7483 additions and 42 deletions

View File

@ -0,0 +1,81 @@
<?php
namespace App\Controllers\Configuracion;
use App\Controllers\BaseResourceController;
use App\Models\Collection;
use App\Models\Presupuestos\ErrorPresupuesto as ErrorPresupuestoModel;
use CodeIgniter\HTTP\Response;
use Hermawan\DataTables\DataTable;
class ConfigErrores extends BaseResourceController
{
protected ErrorPresupuestoModel $errorPresupuestoModel;
protected $format = 'json';
protected array $viewData = [];
protected static $viewPath = 'themes/vuexy/form/configuracion/error_presupuesto/';
protected static $controllerSlug = "errores-presupuesto";
protected $indexRoute = 'viewErrorPresupuestoList';
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
$this->errorPresupuestoModel = model(ErrorPresupuestoModel::class);
}
public function index()
{
$this->viewData['breadcrumb'] = [
['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false],
['title' => lang("App.menu_error_presupuesto"), 'route' => site_url('configuracion/errores-presupuesto'), 'active' => true]
];
return view(static::$viewPath . $this->indexRoute, $this->viewData);
}
public function viewForm(int $error_presupuesto_id)
{
$this->viewData['breadcrumb'] = [
['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false],
['title' => lang("App.menu_error_presupuesto"), 'route' => site_url('configuracion/errores-presupuesto'), 'active' => true]
];
$this->viewData["error_presupuesto_id"] = $error_presupuesto_id;
$this->errorPresupuestoModel->update($error_presupuesto_id, [
"last_user_id" => auth()->user()->id,
"visto" => true,
]);
return view(static::$viewPath . 'viewErrorPresupuestoForm', $this->viewData);
}
public function store()
{
$data = [];
$variableCreated = $this->errorPresupuestoModel->store($data);
return $this->response->setJSON($variableCreated);
}
public function get_error_presupuesto(int $error_presupuesto_id)
{
$data = $this->errorPresupuestoModel->getErrorPresupuestoForm($error_presupuesto_id);
if (isset($data[0])) {
return $this->response->setJSON(["data" => $data[0]]);
} else {
return $this->response->setJSON(["data" => []]);
}
}
public function update_error_presupuesto(int $error_presupuesto_id)
{
$bodyData = $this->request->getPost();
$this->errorPresupuestoModel->updateComment($error_presupuesto_id, $bodyData["comments"]);
return $this->response->setJSON(["message" => "Comentario actualizado", "status" => true]);
}
public function datatable()
{
$query = $this->errorPresupuestoModel->getQueryDatatable()->orderBy("created_at", "DESC");
return DataTable::of($query)
->add("action", fn($q) => $q->id)
->toJson(true);
}
}

View File

@ -1,4 +1,6 @@
<?php namespace App\Controllers\Tarifas;
<?php
namespace App\Controllers\Tarifas;
use App\Controllers\BaseResourceController;
@ -100,7 +102,7 @@ class Tarifasencuadernacion extends \App\Controllers\BaseResourceController
if ($this->request->getPost('servicio_encuadernacion') == null) {
$sanitizedData['servicio_encuadernacion'] = false;
}
if ($this->request->getPost('por_horas') == null) {
$sanitizedData['por_horas'] = false;
}
@ -146,7 +148,7 @@ class Tarifasencuadernacion extends \App\Controllers\BaseResourceController
$this->viewData['tarifaEncuadernacionEntity'] = isset($sanitizedData) ? new TarifaEncuadernacionEntity($sanitizedData) : new TarifaEncuadernacionEntity();
$this->viewData['formAction'] = site_url('tarifas/tarifasencuadernacion/add');//route_to('createTarifaEncuadernacion');
$this->viewData['formAction'] = site_url('tarifas/tarifasencuadernacion/add'); //route_to('createTarifaEncuadernacion');
$this->viewData['boxTitle'] = lang('Basic.global.addNew') . ' ' . lang('Tarifaencuadernacion.moduleTitle') . ' ' . lang('Basic.global.addNewSuffix');
@ -171,7 +173,7 @@ class Tarifasencuadernacion extends \App\Controllers\BaseResourceController
return $this->redirect2listView('sweet-error', $message);
endif;
if ($this->request->getPost()) :
@ -188,7 +190,7 @@ class Tarifasencuadernacion extends \App\Controllers\BaseResourceController
if ($this->request->getPost('mostrar_en_presupuesto') == null) {
$sanitizedData['mostrar_en_presupuesto'] = false;
}
if ($this->request->getPost('tipo_encuadernacion') == null) {
$sanitizedData['tipo_encuadernacion'] = false;
}
@ -335,7 +337,8 @@ class Tarifasencuadernacion extends \App\Controllers\BaseResourceController
}
}
private function getProveedores(){
private function getProveedores()
{
$provTipoModel = new ProveedorTipoModel();
$provModel = new ProveedorModel();
@ -343,12 +346,13 @@ class Tarifasencuadernacion extends \App\Controllers\BaseResourceController
return $provModel->getProvList($tipoId);
}
private function getDimensiones(){
private function getDimensiones()
{
$dimensionModel = new TarifaEncuadernacionDimensionesModel();
$dimensiones = $dimensionModel->getDimensiones();
foreach($dimensiones as $dim){
$dim->label= lang("TarifaEncuadernacionLineas." . $dim->label);
foreach ($dimensiones as $dim) {
$dim->label = lang("TarifaEncuadernacionLineas." . $dim->label);
}
return $dimensiones;
}

View File

@ -0,0 +1,21 @@
<?php
return [
"cardTitle" => "Errores presupuesto",
"datatable" =>
[
"columns" => [
"usuario" => "Usuario presupuesto",
"last_user_id" => "Último accesso",
"visto" => "Visto",
"created_at" => "Creado"
]
],
"form" =>
[
"name" => "Nombre",
"value" => "Valor",
"description" => "Descripción",
]
];

View File

@ -20,6 +20,10 @@ return [
'menor_a5' =>'Hasta A5',
'entre_a5_a4' =>'Entre A5 y A4',
'mayor_a4' =>'Desde A4',
'menor_a5_apaisado' =>'Hasta A5 apaisado',
'entre_a5_a4_apaisado' =>'Entre A5 y A4 apaisado',
'mayor_a4_apaisado' =>'Desde A4 apaisado',
'210x210' =>'210x210',
'por_defecto' =>'Genérico',
'moduleExplanation' => 'El número de páginas reflejado en este apartado se refiere por ejemplar, no al total del pedido',
'margen' => 'Margen',

View File

@ -0,0 +1,115 @@
<?php
namespace App\Models\Presupuestos;
use CodeIgniter\Database\BaseBuilder;
use CodeIgniter\Model;
class ErrorPresupuesto extends Model
{
protected $table = 'presupuesto_errores';
protected $primaryKey = 'id';
protected $useAutoIncrement = true;
protected $returnType = 'object';
protected $useSoftDeletes = false;
protected $protectFields = true;
protected $allowedFields = [
"presupuesto_id",
"presupuesto_user_id",
"error",
"datos_presupuesto",
"visto",
"last_user_id",
"comment",
"created_at",
"updated_at",
"deleted_at",
];
protected bool $allowEmptyInserts = false;
protected bool $updateOnlyChanged = true;
protected array $casts = [];
protected array $castHandlers = [];
// Dates
protected $useTimestamps = true;
//protected $dateFormat = 'datetime';
protected $createdField = 'created_at';
protected $updatedField = 'updated_at';
protected $deletedField = 'deleted_at';
// Validation
protected $validationRules = [];
protected $validationMessages = [];
protected $skipValidation = false;
protected $cleanValidationRules = true;
// Callbacks
protected $allowCallbacks = true;
protected $beforeInsert = [];
protected $afterInsert = [];
protected $beforeUpdate = [];
protected $afterUpdate = [];
protected $beforeFind = [];
protected $afterFind = [];
protected $beforeDelete = [];
protected $afterDelete = [];
public function insertError(int $presupuesto_id, int $presupuesto_user_id, string $error, mixed $datos)
{
$this->insert([
"presupuesto_id" => $presupuesto_id,
"presupuesto_user_id" => $presupuesto_user_id,
"error" => $error,
"datos_presupuesto" => json_encode($datos)
]);
}
public function updateComment(int $error_presupuesto_id, string $comment): bool
{
$updated = $this->update($error_presupuesto_id, [
"comment" => $comment
]);
return $updated;
}
public function getErrorPresupuestoForm(int $error_presupuesto_id) : array
{
$query = $this->builder()
->select([
"presupuesto_errores.id",
"CONCAT(t1.first_name,' ',t1.last_name) as presupuestoUser",
"CONCAT(t2.first_name,' ',t2.last_name) as lastUser",
"presupuesto_errores.created_at",
"presupuesto_errores.datos_presupuesto",
"presupuesto_errores.error",
"presupuesto_errores.visto",
"presupuesto_errores.comment"
])
->join("users t1", "t1.id = presupuesto_errores.presupuesto_user_id", "left")
->join("users t2", "t2.id = presupuesto_errores.last_user_id", "left")
->where("presupuesto_errores.deleted_at", null)
->where("presupuesto_errores.id",$error_presupuesto_id);
return $query->get()->getResultObject();
}
public function getQueryDatatable(): BaseBuilder
{
$query = $this->builder()
->select([
"presupuesto_errores.id",
"presupuestos.id as presupuestoId",
"CONCAT(t1.first_name,' ',t1.last_name) as presupuestoUser",
"CONCAT(t2.first_name,' ',t2.last_name) as lastUser",
"presupuesto_errores.created_at",
"presupuesto_errores.datos_presupuesto",
"presupuesto_errores.error",
"presupuesto_errores.visto",
"presupuesto_errores.comment",
])
->join("users t1", "t1.id = presupuesto_errores.presupuesto_user_id", "left")
->join("users t2", "t2.id = presupuesto_errores.last_user_id", "left")
->join("presupuestos", "presupuestos.id = presupuesto_errores.presupuesto_id", "left")
->where("presupuesto_errores.deleted_at", null);
return $query;
}
}

View File

@ -1,4 +1,5 @@
<?php
namespace App\Models\Tarifas;
class TarifaEncuadernacionDimensionesModel extends \App\Models\BaseModel
@ -12,20 +13,14 @@ class TarifaEncuadernacionDimensionesModel extends \App\Models\BaseModel
*/
protected $useAutoIncrement = true;
protected $allowedFields = [
];
protected $allowedFields = [];
protected $returnType = "App\Entities\Tarifas\TarifaEncuadernacionDimensionesEntity";
public static $labelField = "descripcion";
protected $validationRules = [
];
protected $validationRules = [];
protected $validationMessages = [
];
protected $validationMessages = [];
/**
* Get resource data.
@ -34,13 +29,32 @@ class TarifaEncuadernacionDimensionesModel extends \App\Models\BaseModel
*
* @return \CodeIgniter\Database\BaseBuilder
*/
public function getDimensiones(){
public function getDimensiones()
{
$builder = $this->db
->table($this->table . " t1")
->select("t1.id AS value, t1.keyword AS label")
->orderBy('t1.id', 'asc');
->table($this->table . " t1")
->select("t1.id AS value, t1.keyword AS label")
->orderBy('t1.id', 'asc');
return $builder->get()->getResultObject();
$result = $builder->get()->getResultObject();
// Convertir el resultado en un array
$resultArray = json_decode(json_encode($result), true);
// Buscar y mover el objeto con value == 3 al principio
foreach ($resultArray as $key => $item) {
if ($item['value'] == 4) {
$generico = $item;
unset($resultArray[$key]);
array_unshift($resultArray, $generico);
break;
}
}
// Convertir de nuevo a objetos
$result = json_decode(json_encode($resultArray));
return $result;
}
}

View File

@ -0,0 +1,24 @@
<div class="modal fade" id="modalInput" tabindex="-1" aria-modal="true" role="dialog">
<div class="modal-dialog modal-sm modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="modalTitle"></h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
<div class="row">
<div class="col mb-3">
<label for="inputData" class="form-label"></label>
<input type="number" id="inputData" class="inputData form-control" placeholder="">
</div>
</div>
</div>
<div class="modal-footer">
<button id="modalInputBtnClose" type="button" class="btn btn-label-secondary waves-effect" data-bs-dismiss="modal">
Cerrar
</button>
<button id="modalInputBtnSave" type="button" class="btn btn-primary waves-effect waves-light">Guardar cambios</button>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,114 @@
<div id="addressModal" action='create' class="modal fade addModal">
<div class="modal-dialog modal-lg modal-simple">
<div class="modal-content">
<div class="modal-header">
<h4 id="labelTitleConfirmDialog" class="modal-title"><?= lang('ClienteDirecciones.direccionTitle') ?></h4>
</div>
<div class="modal-body">
<div class="texto-error d-none">
Rellene los campos obligatorios
</div>
<div class="mb-3">
<label for="add_alias" class="form-label">
<?= lang('ClienteDirecciones.alias') ?>*
</label>
<input type="text" id="add_alias" tabindex="1" maxLength="100" class="form-control">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="add_att" class="form-label">
<?= lang('ClienteDirecciones.att') ?>*
</label>
<input type="text" id="add_att" tabindex="1" maxLength="100" class="form-control">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="add_email" class="form-label">
<?= lang('ClienteDirecciones.email') ?>
</label>
<input type="text" id="add_email" tabindex="2" maxLength="100" class="form-control">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="add_direccion" class="form-label">
<?= lang('ClienteDirecciones.direccion') ?>*
</label>
<input type="text" id="add_direccion" tabindex="3" maxLength="255" class="form-control">
</div><!--//.mb-3 -->
<div class='row'>
<div id='divPais' class="col-md-12 col-lg-12 pl-4">
<div class="mb-3">
<label for="add_pais_id" class="form-label">
<?= lang('ClienteDirecciones.pais') ?>*
</label>
<select id="add_pais_id" tabindex="4" class="form-control select2bs" style="width: 100%;">
<option value="" disabled selected><?= lang('ClienteDirecciones.selectPais') ?></option>
<?php foreach ($paisList as $item) : ?>
<option value="<?= $item->id ?>">
<?= $item->nombre ?>
</option>
<?php endforeach; ?>
</select>
</div><!--//.mb-3 -->
</div>
</div> <!-- //.row -->
<div class='row'>
<div id='divMunicipio' class="col-md-12 col-lg-12 pl-4">
<div class="mb-3">
<label for="add_municipio" class="form-label">
<?= lang('ClienteDirecciones.municipio') ?>*
</label>
<input type="text" id="add_municipio" tabindex="6" maxLength="100" class="form-control">
</div><!--//.mb-3 -->
</div>
<div class="col-md-12 col-lg-6 pl-4 spain-data" style="display: none;">
<div class="mb-3">
<label for="add_provincia" class="form-label">
<?= lang('ClienteDirecciones.provincia') ?>
</label>
<input type="text" id="add_provincia" tabindex="7" maxLength="100" class="form-control">
</div><!--//.mb-3 -->
</div>
</div> <!-- //.row -->
<div class='row'>
<div class="col-md-12 col-lg-6 pl-4">
<div class="mb-3">
<label for="add_cp" class="form-label">
<?= lang('ClienteDirecciones.cp') ?>*
</label>
<input type="text" id="add_cp" tabindex="8" maxLength="100" class="form-control">
</div><!--//.mb-3 -->
</div>
<div class="col-md-12 col-lg-6 pl-4">
<div class="mb-3">
<label for="add_telefono" class="form-label">
<?= lang('ClienteDirecciones.telefono') ?>
</label>
<input type="text" id="add_telefono" tabindex="9" maxLength="100" class="form-control"></input>
</div><!--//.mb-3 -->
</div>
</div> <!-- //.row -->
</div>
<div class="modal-footer">
<button id="saveAdd"
type="button"
class="btn btn-primary">Guardar</button>
<button id="cancelAdd"
type="button"
class="btn btn-secondary">Cancelar</button>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,89 @@
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<div class="row">
<div class="col-md-12">
<div class="card card-info">
<div class="card-header">
<h3 class="card-title">Error presupuesto</h3>
</div>
<!--//.card-header -->
<div class="card-body" id="error-presupuesto-container">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<form id="error-presupuesto-form">
<input id="error-presupuesto-id" value="<?= $error_presupuesto_id ?>" hidden>
<div class="row justify-content-start align-items-end mb-3">
<div class="col-md-10 overflow-hidden w-20">
<label for="presupuesto-user-id">Usuario presupuesto</label>
<input name="presupuesto_user_id" type="text" class="form-control" id="presupuesto-user-id"
disabled>
</div>
<div class="col-md-2 overflow-hidden w-20">
<label class="switch switch-square switch-lg">
<input type="checkbox" class="switch-input" id="error-presupuesto-visto" name="visto"
disabled>
<span class="switch-toggle-slider">
<span class="switch-on">
<i class="ti ti-eye"></i>
</span>
<span class="switch-off">
<i class="ti ti-eye-off"></i>
</span>
</span>
<span class="switch-label">Visto</span>
</label>
</div>
</div>
<div class="row">
<div class="col-md-6 mb-3 overflow-hidden">
<label for="datos-presupuesto">Datos</label>
<textarea rows="10" class="form-control" id="datos-presupuesto"
placeholder="Datos presupuesto" disabled></textarea>
</div>
<div class="col-md-6 mb-3 overflow-hidden">
<label for="error-presupuesto">Error</label>
<textarea rows="10" class="form-control" id="error-presupuesto-text" placeholder="Error"
disabled></textarea>
</div>
<div class="col-md-12 mb-3 overflow-hidden">
<label for="comments-presupuesto">Comentarios</label>
<textarea rows="10" class="form-control" id="comments-presupuesto"
placeholder="Comentarios"></textarea>
</div>
<div class="col-md-12">
<button class="btn btn-primary button-update-comment" type="button">
<span class="ti ti-sm ti-send me-1" id="update-button-icon"></span>
<span class="spinner-border me-1" role="status" aria-hidden="true"
id="update-button-loader" hidden></span>
<?= lang("App.global_save") ?></button>
<a class="btn btn-secondary" href="<?= route_to("erroresPresupuestoIndex") ?>"
class="btn btn-secondary"><?= lang("App.global_come_back") ?>
</a>
</div>
</div>
</div>
</form>
</div>
</div>
<!--//.card-body -->
<div class="card-footer">
</div>
<!--//.card-footer -->
</div>
<!--//.card -->
</div>
<!--//.col -->
<!--//.row -->
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/error_presupuesto/indexForm.js') ?>">
</script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,50 @@
<?= $this->include('themes/_commonPartialsBs/select2bs5') ?>
<?= $this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/vuexy/main/defaultlayout') ?>
<?= $this->section('content'); ?>
<div class="row">
<div class="col-md-12">
<div class="card card-info">
<div class="card-header">
<h3 class="card-title"><?= lang('ErrorPresupuesto.cardTitle') ?></h3>
</div>
<!--//.card-header -->
<div class="card-body" id="errorPresupuestoCard">
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<table id="tableErrorPresupuesto" class="table table-striped table-hover" style="width: 100%;">
<thead>
<tr>
<th>ID Presupuesto</th>
<th><?= lang('ErrorPresupuesto.datatable.columns.usuario') ?></th>
<th><?= lang('ErrorPresupuesto.datatable.columns.last_user_id') ?></th>
<th><?= lang('ErrorPresupuesto.datatable.columns.visto') ?></th>
<th><?= lang('ErrorPresupuesto.datatable.columns.created_at') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
<!--//.card-body -->
<div class="card-footer">
</div>
<!--//.card-footer -->
</div>
<!--//.card -->
</div>
<!--//.col -->
</div>
<!--//.row -->
<?= $this->endSection() ?>
<?= $this->section("additionalExternalJs") ?>
<script type="module" src="<?= site_url('assets/js/safekat/pages/configuracion/error_presupuesto/indexView.js') ?>">
</script>
<?= $this->endSection() ?>

View File

@ -0,0 +1,36 @@
<div class="col-12" style="min-height: 50px;">
<div id="btnsDiv" class="d-flex w-100 position-relative" style="margin-top: 40px;">
<div class="me-auto">
<div id="btnPrint" class="btn mt-3 btn-secondary waves-effect waves-light ml-2 d-none">
<span class="align-middle d-sm-inline-block d-none me-sm-1"></i><?= lang('App.global_print2') ?></span>
</div>
</div>
<div class="position-absolute start-50 translate-middle-x">
<?php if ($state != 2): ?>
<div id="btnPrev" class="btn mt-3 btn-primary waves-effect waves-light ml-2 d-none">
<span class="align-middle d-sm-inline-block d-none me-sm-1"></i><?= lang('App.global_prev') ?></span>
</div>
<div id="btnNext" class="btn mt-3 btn-primary waves-effect waves-light ml-2">
<span class="align-middle d-sm-inline-block d-none me-sm-1"></i><?= lang('App.global_next') ?></span>
</div>
<?php endif; ?>
</div>
<div class="ms-auto">
<?php if ($state != 2): ?>
<div id="btnConfirm" class="btn mt-3 btn-success waves-effect waves-light ml-2 d-none">
<span class="align-middle d-sm-inline-block d-none me-sm-1"></i><?= lang('App.global_confirm') ?></span>
</div>
<div id="btnSave" class="btn mt-3 btn-primary waves-effect waves-light ml-2 d-none">
<span class="align-middle d-sm-inline-block d-none me-sm-1"></i><?= lang('App.global_save') ?></span>
</div>
<?php endif; ?>
</div>
</div>
</div>

View File

@ -0,0 +1,306 @@
<div class="col-12 pb-2 d-flex flex-column align-items-center">
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Datos del libro </h3>
</div>
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<label for="titulo" class="form-label">
<?= lang('Presupuestos.titulo') ?>*
</label>
<input type="text" id="titulo" placeholder="Introduzca el título de la publicación" name="titulo"
maxLength="300" class="form-control text-center" value="">
</div>
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<label for="autor" class="form-label">
<?= lang('Presupuestos.autor') ?>
</label>
<input type="text" id="autor" placeholder="Autor" name="autor" maxLength="150" class="form-control text-center"
value="">
</div>
<div class="row justify-content-center">
<div class="col-sm-4 mb-3">
<label for="isbn" class="form-label">
<?= lang('Presupuestos.isbn') ?>
</label>
<input type="text" id="isbn" name="isbn" placeholder="ISBN" maxLength="50" class="form-control" value="">
</div>
<div class="col-sm-4 mb-3">
<label for="coleccion" class="form-label">
<?= lang('Presupuestos.coleccion') ?>
</label>
<input type="text" id="coleccion" name="coleccion" placeholder="Coleccion" maxLength="255"
class="form-control" value="">
</div>
<div class="col-sm-4 mb-3">
<label for="referenciaCliente" class="form-label">
<?= lang('Presupuestos.referenciaCliente') ?>
</label>
<input type="text" id="referenciaCliente" name="referencia_cliente" placeholder="Referencia cliente"
maxLength="100" class="form-control" value="">
</div>
</div>
<div class="col-sm-5 mb-3 d-flex flex-column align-items-center">
<label <?= (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor'))? " hidden" : "" ?>
id="label_clienteId" for="clienteId" class="form-label">
Cliente*
</label>
<select <?= (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor'))? " hidden" : "" ?>
id="clienteId" name="cliente_id" class="form-control select2bs2 calcular-presupuesto"
style="width: 100%;">
<?php if (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor')): ?>
<option value="<?= $clienteId ?>" selected>cliente</option>
<?php endif; ?>
</select>
</div>
<div class="row col-sm-5 mb-3 d-flex flex-column align-items-center">
<div class="form-check form-switch mb-2">
<input <?= (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor'))? " hidden" : "" ?>
class="calcular-presupuesto form-check-input" type="checkbox" id="excluirRotativa"
name="excluir_rotativa" value="1">
<label <?= (auth()->user()->inGroup('cliente-admin') || auth()->user()->inGroup('cliente-editor'))? " hidden" : "" ?>
class="form-check-label" for="excluirRotativa">Excluir rotativa</label>
</div>
</div>
<div class="row col-sm-10 mb-3 justify-content-center">
<div class="col-sm-2 d-flex flex-column align-items-center mx-1">
<label for="tirada" class="form-label">
<?= lang('Presupuestos.tirada') ?> 1*
</label>
<input type="number" class="calcular-presupuesto form-control text-center num-input" id="tirada"
name="tirada" step="1" value="50">
</div>
<div class="col-sm-2 d-flex flex-column align-items-center mx-1">
<label for="tirada2" class="form-label">
<?= lang('Presupuestos.tirada') ?> 2
</label>
<input type="number" class="calcular-presupuesto form-control text-center num-input" id="tirada2"
name="tirada2" step="1" value="">
</div>
<div class="col-sm-2 d-flex flex-column align-items-center mx-1">
<label for="tirada3" class="form-label">
<?= lang('Presupuestos.tirada') ?> 3
</label>
<input type="number" class="calcular-presupuesto form-control text-center num-input" id="tirada3"
name="tirada3" step="1" value="">
</div>
<div class="col-sm-2 d-flex flex-column align-items-center mx-1">
<label for="tirada4" class="form-label">
<?= lang('Presupuestos.tirada') ?> 4
</label>
<input type="number" class="calcular-presupuesto form-control text-center num-input" id="tirada4"
name="tirada4" step="1" value="">
</div>
</div> <!--//.row -->
<div class="col-sm-10 d-flex flex-column align-items-center justify-content-center">
<div id="formatoEstandar" class="col-sm-4 mb-1 d-flex flex-column align-items-center">
<label id="label_papelFormatoId" for="papelFormatoId" class="form-label">
Formato Libro*
</label>
<select id="papelFormatoId" name="papel_formato_id" class="form-control select2bs2 calcular-presupuesto"
style="width: 100%;">
</select>
</div>
<div id="formatoPersonalizado" class="row col-sm-8 justify-content-center d-none">
<div class="col-sm-3 mb-1 mx-1">
<label class="form-label" for="papelFormatoAncho">Ancho Libro*</label>
<input type="number" id="papelFormatoAncho" name="papel_formato_ancho" step="1"
class="form-control formato_libro calcular-presupuesto num-input" min="60" value="60">
</div>
<div class="col-sm-3 mb-1 mx-1">
<label class="form-label" for="papelFormatoAlto">Alto Libro*</label>
<input type="number" id="papelFormatoAlto" name="papel_formato_alto" step="1"
class="form-control formato_libro calcular-presupuesto num-input" min="60" value="60">
</div>
</div>
<div class="row col-sm-4 mb-3 d-flex flex-column align-items-center">
<div class="form-check form-switch mb-2">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="papelFormatoPersonalizado"
name="papel_formato_personalizado" value="1">
<label class="form-check-label"
for="papelFormatoPersonalizado"><?= lang('Presupuestos.papelFormatoPersonalizado') ?></label>
</div>
</div>
</div>
<div class="row col-sm-9 mb-5 justify-content-center">
<div class="row justify-content-center">
<div class="col-sm-3">
<label for="paginasColor" class="form-label">
<?= lang('Presupuestos.paginasColor') ?>
</label>
<input type="number" class="form-control calcular-presupuesto input-paginas num-input" id="paginasColor"
name="paginasColor" step="1" value="0">
<div class="form-text">
Siempre deben ser pares
</div>
</div>
<div class="col-sm-3">
<label for="paginasNegro" class="form-label">
<?= lang('Presupuestos.paginasNegro') ?>
</label>
<input type="number" class="form-control calcular-presupuesto input-paginas num-input" id="paginasNegro"
name="paginasNegro" step="1" value="32">
<div class="form-text">
Siempre deben ser pares
</div>
</div>
<div class="col-sm-3">
<label for="paginas" class="form-label">
<?= lang('Presupuestos.totalPaginas') ?>
</label>
<input readonly class="form-control calcular-presupuesto" id="paginas" name="paginas" step="1"
value="32">
</div>
</div>
<div id='divPaginasCuadernillo' class="row col-sm-9 justify-content-left d-none">
<div class="col-sm-4 mb-5">
<label for="paginas_por_cuadernillo" class="form-label">
<?= lang('Presupuestos.paginasCuadernillo') ?>
</label>
<select id="paginasCuadernillo" name="paginas_por_cuadernillo"
class="calcular-presupuesto form-control select2bs2" style="width: 100%;">
<option value="32" selected>32</option>
<option value="28">28</option>
<option value="24">24</option>
<option value="20">20</option>
<option value="16">16</option>
</select>
</div>
</div>
<div class="row mt-2 justify-content-center">
<div id="divPaginasColorConsecutivas" class="form-check col-sm-9 form-switch mb-2 d-none">
<input class="form-check-input" type="checkbox" id="pagColorConsecutivas" name="pag_color_consecutivas"
value="1">
<label class="form-check-label"
for="pagColorConsecutivas"><?= lang('Presupuestos.paginasColorConsecutivas') ?></label>
</div>
<div id="divPosPaginasColor" class="col-sm-9 d-none">
<label for="posPaginasColor" class="form-label">
<?= lang('Presupuestos.posicionPagColor') ?>
</label>
<input class="form-control" id="posPaginasColor" name="pos_paginas_color" value="">
<div class="form-text">
Intruzca la posición separada por comas. Ej: 3,5,7 ó 4-10,20,155
</div>
</div>
</div>
<div class="row mt-2 justify-content-center">
<div id="divPapelDiferente" class="form-check col-sm-9 form-switch mb-2 d-none">
<input class="form-check-input" type="checkbox" id="papelDiferente" name="papel_diferente" value="1">
<label class="form-check-label" for="papelDiferente"><?= lang('Presupuestos.papelDiferente') ?></label>
</div>
</div>
</div>
<div id="divTipoLibro" name="div_tipo_libro" class="row col-sm-10 mb-3 justify-content-center">
<div id="fresado" class="tipo-libro calcular-presupuesto imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/fresado.png") ?>"
alt="Fresado">
<div class="form-text text-center">
Fresado (a partir de 32 páginas)
</div>
</div>
<div id="grapado" class="tipo-libro calcular-presupuesto imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/grapado.png") ?>"
alt="Grapado">
<div class="form-text text-center">
Grapado (entre 12 y 40 páginas)
</div>
</div>
<div id="espiral" class="tipo-libro calcular-presupuesto imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/espiral.png") ?>"
alt="Espiral">
<div class="form-text text-center">
Espiral
</div>
</div>
<div id="cosido" class="tipo-libro calcular-presupuesto imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/cosido.png") ?>"
alt="Cosido">
<div class="form-text text-center">
Cosido (a partir de 32 páginas)
</div>
</div>
</div>
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Servicios extra </h3>
</div>
<div class="row col-sm-9 mb-3 d-flex flex-column align-items-left">
<div class="col-sm-3 form-check form-switch mb-2">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="prototipo" name="prototipo"
value="1">
<label class="form-check-label" for="prototipo">Prototipo</label>
</div>
</div>
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Otros </h3>
</div>
<div class="row col-sm-10 mb-3">
<div class="col-sm-2 mb-md-0 mb-2">
<label for="ivaReducido" class="form-label">I.V.A. reducido</label>
<select id="ivaReducido" name="ivaReducido" class="form-control select2bs2 calcular-presupuesto"
style="width: 100%;">
<option value="1" selected>
<p><?= lang('SI') ?></p>
</option>
<option value="0">
<p><?= lang('NO') ?></p>
</option>
</select>
</div>
<p class="mt-2">Se verificará que el pedido cumpla con los requisitos establecidos en el Artículo 91 de la Ley
37/1992, sobre inserción de publicidad, antes de proceder con su producción, lo que garantiza la aplicación
del IVA reducido del 4%.</p>
</div>
</div>

View File

@ -0,0 +1,64 @@
<div class="col-12 d-flex flex-column align-items-center">
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h5 class="mb-1 fw-bold titulo"></h5>
</div><!--//.mb-3 -->
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Direcciones de envío </h3>
</div><!--//.mb-3 -->
<div id="divInputDirecciones" name="div_input_direcciones" class="row col-sm-12 mb-5 justify-content-center">
<div id="containerTiradasEnvios" class="row mb-3 justify-content-center">
</div>
<div class="row mb-3 justify-content-center">
<div class="col-sm-4 mb-3">
<label for="direcciones" class="form-label">Mis direcciones</label>
<select id="direcciones" name="direcciones" class="form-control select2bs2"
style="width: 100%;"></select>
</div>
<div class="col-sm-2 mb-3">
<label for="unidadesEnvio" class="form-label">
Unidades
</label>
<input type="number" class="form-control" id="unidadesEnvio" name="unidadesEnvio" maxLength="8" step="1"
class="form-control">
</div>
<div class="col-sm-2 mb-3 mt-auto mb-0">
<button id="insertarDireccion" type="button"
class="btn btn-secondary waves-effect waves-light">Insertar</button>
</div>
</div>
<div class="row mb-3 justify-content-center">
<div class="col-sm-4 mb-3">
<div class="form-check form-switch mb-2">
<input class="form-check-input" type="checkbox" id="entregaPieCalle" name="entregaPieCalle"
value="1">
<label class="form-check-label"
for="add_entregaPieCalle"><?= lang('PresupuestosDirecciones.entregaPieCalle') ?></label>
</div>
</div>
</div>
<div class="row mb-3 justify-content-center">
<div class="col-sm-2 mb-3 mt-auto mb-0">
<button id="nuevaDireccion" type="button"
class="btn btn-secondary waves-effect waves-light">Nueva Dirección</button>
</div>
</div>
<div id="divErrorEnvios" name="div_error_envios" class="col-sm-10 mb-3 justify-content-center"></div>
<div id="divDirecciones" class="calcular-presupuesto col-sm-12 d-flex flex-column align-items-center">
</div>
</div>
</div>

View File

@ -0,0 +1,419 @@
<div class="col-12 pb-2 d-flex flex-column align-items-center">
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h5 class="mb-1 fw-bold titulo"></h5>
</div><!--//.mb-3 -->
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Diseño cubierta </h3>
</div><!--//.mb-3 -->
<div class="col-sm-8 mb-5 d-flex flex-column align-items-center">
<h6 class="mb-1 text-center"> Recuerde que la cubierta es el conjunto formado por la portada, contraportada,
lomo y solapas, en caso de que las lleve. </h6>
</div><!--//.mb-3 -->
<div id="divTipoCubierta" name="div_tipo_cubierta" class="row col-sm-10 mb-5 justify-content-center">
<div id="tapaBlanda"
class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center tipo-cubierta imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/tapa-blanda.jpg") ?>"
alt="TapaBlanda">
<label class="form-label">
Tapa blanda
</label>
</div>
<div id="tapaDura"
class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center tipo-cubierta imagen-selector image-container">
<img class="image-presupuesto"
src="<?= site_url("assets/img/presupuestoCliente/tapa-dura-lomo-recto.jpg") ?>" alt="TapaDura">
<label class="form-label">
Tapa dura lomo recto
</label>
</div>
<div id="tapaDuraLomoRedondo"
class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center tipo-cubierta imagen-selector image-container">
<img class="image-presupuesto"
src="<?= site_url("assets/img/presupuestoCliente/tapa-dura-lomo-redondo.png") ?>"
alt="TapaDuraLomoRedondo">
<label class="form-label">
Tapa dura lomo redondo
</label>
</div>
</div>
<div id="divCarasImpresion" name="div_caras_impresion" class="row col-sm-10 mb-5 justify-content-center d-none">
<div class="col-sm-4 mb-md-0 mb-2">
<label for="carasCubierta" class="form-label">Caras impresas cubierta</label>
<select id="carasCubierta" name="carasCubierta" class="form-control select2bs2 calcular-presupuesto"
style="width: 100%;">
<option value="2" selected>
<p><?= lang('Presupuestos.unaCara') ?></p>
</option>
<option value="4">
<p><?= lang('Presupuestos.dosCaras') ?></p>
</option>
</select>
</div>
</div>
<div id="divSolapasCubierta" name="div_solapas_cubierta" class="row col-sm-10 mb-5 justify-content-center d-none">
<div id="solapasCubiertaNo"
class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center solapas-cubierta imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/sinSolapasCubierta.png") ?>"
alt="Sin solapas">
<label class="form-label">
Sin solapas
</label>
</div>
<div id="solapasCubiertaSi"
class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center solapas-cubierta imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/conSolapasCubierta.png") ?>"
alt="Con solapas">
<label class="form-label">
Con solapas
</label>
</div>
<div id="divTamanioSolapas"
class="d-flex flex-column align-items-center justify-content-center image-container d-none">
<label for="solapasCubierta" class="form-label">
Tamaño solapas
</label>
<input id="solapasCubierta" name="solapas_cubierta" type="number"
class="calcular-presupuesto form-control text-center num-input" min="60" max="120" step="1" value="60">
<div class="form-text">
Entre 60 y 120 mm
</div>
</div>
</div>
<div id="divConfigTapaDura" class="row col-sm-10 mb-5 justify-content-center d-none">
<div class="row justify-content-center">
<div class="col-sm-3">
<label for="papelGuardas" class="form-label">
<?= lang('Presupuestos.papelGuardas') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="papelGuardas" name="papel_guardas">
<option value="OFF1_170"><?= lang('Presupuestos.offsetBlancoGuardas') ?></option>
<option value="OFF2_170"><?= lang('Presupuestos.offsetAhuesadoGuardas') ?></option>
</select>
</div>
<div class="col-sm-3">
<label for="guardasImpresas" class="form-label">
<?= lang('Presupuestos.guardasImpresas') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="guardasImpresas"
name="guardas_impresas">
<option value="0"><?= lang('Presupuestos.sinImpresion') ?></option>
<option value="4"><?= lang('Presupuestos.unaCara') ?></option>
<option value="8"><?= lang('Presupuestos.dosCaras') ?></option>
</select>
</div>
<div class="col-sm-3">
<label for="cabezada" class="form-label">
<?= lang('Presupuestos.cabezada') ?>
</label>
<select class="form-select select2bs2" id="cabezada" name="cabezada">
<option value="WHI"><?= lang('Presupuestos.blanca') ?></option>
<option value="GRE"><?= lang('Presupuestos.verde') ?></option>
<option value="BLUE"><?= lang('Presupuestos.azul') ?></option>
<option value="REDYEL"><?= lang('Presupuestos.rojaAmarilla') ?></option>
</select>
</div>
</div>
</div>
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Papel cubierta </h3>
</div><!--//.mb-3 -->
<div id="divPapelCubierta" name="div_papel_cubierta" class="row col-sm-10 mb-5 justify-content-center">
<div id="cartulinaEstucada" cod="CAR1"
class="calcular-presupuesto min-width-fit d-flex flex-column align-items-center justify-content-center papel-cubierta imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/cartulina-grafica.png") ?>"
alt="Cartulina estucada">
<label class="form-label">
Cartulina gráfica estucada a una cara
</label>
</div>
<div id="estucadoMate" cod="EST2"
class="calcular-presupuesto min-width-fit d-flex flex-column align-items-center justify-content-center papel-cubierta imagen-selector image-container">
<img class="image-presupuesto"
src="<?= site_url("assets/img/presupuestoCliente/estucado-mate-cubierta.png") ?>" alt="Estucado mate">
<label class="form-label">
Estucado Mate
</label>
</div>
</div>
<div id="divGramajeCubierta" name="div_gramaje_cubierta" class="row col-sm-10 mb-3 justify-content-center d-none">
<div id="divGramaje170Cubierta" class="checkbox-presupuesto-container col-md mb-md-0 mb-2">
<div class="form-check custom-option custom-option-icon gramaje-cubierta">
<label class="form-check-label custom-option-content" for="gramaje170Cubierta">
<span class="custom-option-body">
<span class="custom-option-title"> 170 gr </span>
</span>
<input id="gramaje170Cubierta" name="gramajeCubiertaRadio" data-value="170"
class="check-gramaje-cubierta calcular-presupuesto form-check-input" type="radio" value="170" />
</label>
</div>
</div>
<div id="divGramaje250Cubierta" class="checkbox-presupuesto-container col-md mb-md-0 mb-2">
<div class="form-check custom-option custom-option-icon gramaje-cubierta">
<label class="form-check-label custom-option-content" for="gramaje250Cubierta">
<span class="custom-option-body">
<span class="custom-option-title"> 250 gr </span>
</span>
<input id="gramaje250Cubierta" name="gramajeCubiertaRadio" data-value="250"
class="check-gramaje-cubierta calcular-presupuesto form-check-input" type="radio" value="250" />
</label>
</div>
</div>
<div id="divGramaje270Cubierta" class="checkbox-presupuesto-container col-md mb-md-0 mb-2">
<div class="form-check custom-option custom-option-icon gramaje-cubierta">
<label class="form-check-label custom-option-content" for="gramaje270Cubierta">
<span class="custom-option-body">
<span class="custom-option-title"> 270 gr </span>
</span>
<input id="gramaje270Cubierta" name="gramajeCubiertaRadio" data-value="270"
class="check-gramaje-cubierta calcular-presupuesto form-check-input" type="radio" value="270" />
</label>
</div>
</div>
<div id="divGramaje300Cubierta" class="checkbox-presupuesto-container col-md mb-md-0 mb-2">
<div class="form-check custom-option custom-option-icon gramaje-cubierta">
<label class="form-check-label custom-option-content" for="gramaje300Cubierta">
<span class="custom-option-body">
<span class="custom-option-title"> 300 gr </span>
</span>
<input id="gramaje300Cubierta" name="gramajeCubiertaRadio" data-value="300"
class="check-gramaje-cubierta calcular-presupuesto form-check-input" type="radio" value="300" />
</label>
</div>
<div class="form-text">
Recomendado
</div>
</div>
<div id="divGramaje350Cubierta" class="checkbox-presupuesto-container col-md mb-md-0 mb-2">
<div class="form-check custom-option custom-option-icon gramaje-cubierta">
<label class="form-check-label custom-option-content" for="gramaje350Cubierta">
<span class="custom-option-body">
<span class="custom-option-title"> 350 gr </span>
</span>
<input id="gramaje350Cubierta" name="gramajeCubiertaRadio" data-value="350"
class="check-gramaje-cubierta calcular-presupuesto form-check-input" type="radio" value="350" />
</label>
</div>
</div>
</div>
<hr class="col-sm-10 my-10">
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Acabados </h3>
</div><!--//.mb-3 -->
<div class="row col-sm-12 mb-5 justify-content-center">
<div class="row justify-content-center">
<div class="col-sm-3">
<label for="plastificado" class="form-label">
<?= lang('Presupuestos.plastificado') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="plastificado" name="plastificado">
<option value="NONE"><?= lang('Presupuestos.sinPlastificar') ?></option>
<option value="BRIL"><?= lang('Presupuestos.brillo') ?></option>
<option value="MATE"><?= lang('Presupuestos.mate') ?></option>
<option value="ANTI"><?= lang('Presupuestos.antirrayado') ?></option>
<option value="SAND"><?= lang('Presupuestos.rugoso') ?></option>
</select>
</div>
<div class="col-sm-3">
<label for="barniz" class="form-label">
<?= lang('Presupuestos.barniz') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="barniz" name="barniz">
<option value="NONE"> - </option>
<option value="R2D"><?= lang('Presupuestos.relieve2D') ?></option>
<option value="R3D"><?= lang('Presupuestos.relieve3D') ?></option>
</select>
<div class="form-text">
<?= lang('Presupuestos.barnizDescription') ?>
</div>
</div>
<div class="col-sm-3">
<label for="estampado" class="form-label">
<?= lang('Presupuestos.estampado') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="estampado" name="estampado">
<option value="NONE"> - </option>
<option value="GOLD"><?= lang('Presupuestos.oro') ?></option>
<option value="SILV"><?= lang('Presupuestos.plata') ?></option>
<option value="COPP"><?= lang('Presupuestos.cobre') ?></option>
<option value="BRON"><?= lang('Presupuestos.bronce') ?></option>
</select>
</div>
<div id="retractilado"
class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center solapas-cubierta imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/retractilado.png") ?>"
alt="Retractilado">
<label class="form-label">
Retractilado
</label>
</div>
</div>
</div>
<hr class="col-sm-10 my-10">
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Extras </h3>
</div><!--//.mb-3 -->
<div class="row col-sm-12 mb-3 justify-content-center">
<div class="row justify-content-center">
<div class="row col-sm-3 mb-3 d-flex flex-column align-items-center sobrecubierta-items">
<div class="form-check form-switch mb-2">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="addSobrecubierta"
name="add_sobrecubierta" value="1">
<label class="form-check-label"
for="addSobrecubierta"><?= lang('Presupuestos.sobrecubierta') ?></label>
</div>
</div>
<div class="col-sm-3 config-sobrecubierta d-none sobrecubierta-items">
<label for="papelSobrecubierta" class="form-label">
<?= lang('Presupuestos.papelSobrecubierta') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="papelSobrecubierta"
name="papel_sobrecubierta">
<option value="EST2_170"><?= lang('Presupuestos.estucadoMate170gr') ?></option>
<option value="EST2_200"><?= lang('Presupuestos.estucadoMate200gr') ?></option>
</select>
</div>
<div class="col-sm-3 config-sobrecubierta d-none sobrecubierta-items">
<label for="solapasSobrecubierta" class="form-label">
<?= lang('Presupuestos.tamanioSolapasSobrecubierta') ?>
</label>
<input id="solapasSobrecubierta" name="solapas_sobrecubierta" type="number"
class="calcular-presupuesto form-control text-center num-input" min="60" max="120" step="1"
value="60">
<div class="form-text">
Entre 60 y 120 mm
</div>
</div>
<div class="col-sm-3 config-sobrecubierta d-none sobrecubierta-items">
<label for="plastificadoSobrecubierta" class="form-label">
<?= lang('Presupuestos.plastificadoSobrecubierta') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="plastificadoSobrecubierta"
name="plastificado_sobrecubierta">
<option value="NONE"> - </option>
<option value="BRIL"><?= lang('Presupuestos.brillo') ?></option>
<option value="MATE"><?= lang('Presupuestos.mate') ?></option>
<option value="ANTI"><?= lang('Presupuestos.antirrayado') ?></option>
</select>
</div>
</div>
</div>
<div class="row col-sm-12 mb-0 justify-content-center d-none">
<div class="row justify-content-center">
<div class="row col-sm-2 mb-3 d-flex flex-column align-items-center">
<div class="form-check form-switch mb-2">
<input class="calcular-presupuesto form-check-input" type="checkbox" id="addFaja" name="add_faja"
value="1">
<label class="form-check-label" for="addFaja"><?= lang('Presupuestos.faja') ?></label>
</div>
</div>
<div class="col-sm-2 config-faja d-none">
<label for="altoFaja" class="form-label">
<?= lang('Presupuestos.altoFaja') ?>
</label>
<input id="altoFaja" name="alto_faja" type="number"
class="calcular-presupuesto form-control text-center num-input" min="60" step="1" value="60">
<div class="form-text">
Mayor 60 mm
</div>
</div>
<div class="col-sm-3 config-faja d-none">
<label for="barniz" class="form-label">
<?= lang('Presupuestos.papelFaja') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="papelFaja" name="papel_sobrecubierta">
<option value="EST2_170"><?= lang('Presupuestos.estucadoMate170gr') ?></option>
<option value="EST2_200"><?= lang('Presupuestos.estucadoMate200gr') ?></option>
</select>
</div>
<div class="col-sm-2 config-faja d-none">
<label for="solapasFaja" class="form-label">
<?= lang('Presupuestos.tamanioSolapasFaja') ?>
</label>
<input id="solapasFaja" name="solapas_faja" type="number"
class="calcular-presupuesto form-control text-center num-input" min="60" max="120" step="1"
value="60">
<div class="form-text">
Entre 60 y 120 mm
</div>
</div>
<div class="col-sm-3 config-faja d-none">
<label for="plastificadoFaja" class="form-label">
<?= lang('Presupuestos.plastificadoFaja') ?>
</label>
<select class="form-select select2bs2 calcular-presupuesto" id="plastificadoFaja"
name="plastificado_faja">
<option value="NONE"> - </option>
<option value="BRIL"><?= lang('Presupuestos.brillo') ?></option>
<option value="MATE"><?= lang('Presupuestos.mate') ?></option>
<option value="ANTI"><?= lang('Presupuestos.antirrayado') ?></option>
</select>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,351 @@
<div class="col-12 pb-2 d-flex flex-column align-items-center">
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h5 class="mb-1 fw-bold titulo"></h5>
</div><!--//.mb-3 -->
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Impresión interior </h3>
</div><!--//.mb-3 -->
<div id="divImpresionInterior" name="div_impresion_interior" class="row col-sm-10 mb-3 justify-content-center">
<div id="negroEstandar" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center disenio-interior imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/blancoYnegro.png") ?>" alt="Negro">
<label for="titulo" class="form-label">
Blanco y Negro
</label>
</div>
<div id="negroPremium" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center disenio-interior imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/negroFoto.png") ?>" alt="NegroPremium">
<label for="titulo" class="form-label">
Blanco y Negro Premium
</label>
</div>
<div id="colorEstandar" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center disenio-interior imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/color.png") ?>" alt="Color">
<label for="titulo" class="form-label">
Color
</label>
</div>
<div id="colorPremium" class="d-flex flex-column align-items-center justify-content-center disenio-interior imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/colorFoto.png") ?>" alt="ColorPremium">
<label for="titulo" class="form-label">
Color Premium
</label>
</div>
</div>
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Papel interior </h3>
</div><!--//.mb-3 -->
<div id="divPapelInterior" name="div_papel_interior" class="row col-sm-10 mb-5 justify-content-center">
<div id="offsetBlanco" cod="OFF1" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center papel-interior imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/offset-blanco.png") ?>" alt="offsetBlanco">
<label for="titulo" class="form-label">
Offset Blanco
</label>
</div>
<div id="offsetAhuesado" cod="OFF2" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center papel-interior imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/offset-ahuesado.png") ?>" alt="offsetAhuesado">
<label for="titulo" class="form-label">
Offset Ahuesado
</label>
</div>
<div id="offsetAhuesadoVolumen" cod="OFF4" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center papel-interior imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/offset-ahuesado-volumen.png") ?>" alt="offsetAhuesadoVolumen">
<label for="titulo" class="form-label">
Offset Ahuesado Volumen
</label>
</div>
<div id="estucadoMate" cod="EST2" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center papel-interior imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/estucado-mate.png") ?>" alt="estucadoMate">
<label for="titulo" class="form-label">
Estucado Mate
</label>
</div>
</div>
<div id="divGramajeInterior" name="div_gramaje_interior" class="row col-sm-10 mb-3 justify-content-center d-none">
<div id="interiorGramaje70" class="checkbox-presupuesto-container col-md mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior">
<label class="form-check-label custom-option-content" for="gramaje70">
<span class="custom-option-body">
<span class="custom-option-title"> 70 gr </span>
</span>
<input id="gramaje70" name="customRadioGramaje" data-value="70" class="check-interior-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje80" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior">
<label class="form-check-label custom-option-content" for="gramaje80">
<span class="custom-option-body">
<span class="custom-option-title"> 80 gr </span>
</span>
<input id="gramaje80" name="customRadioGramaje" data-value="80" class="check-interior-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje90" class="mb-md-0 mb-3 checkbox-presupuesto-container">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior">
<label class="form-check-label custom-option-content" for="gramaje90">
<span class="custom-option-body">
<span class="custom-option-title"> 90 gr </span>
</span>
<input id="gramaje90" name="customRadioGramaje" data-value="90" class="check-interior-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje100" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior">
<label class="form-check-label custom-option-content" for="gramaje100">
<span class="custom-option-body">
<span class="custom-option-title"> 100 gr </span>
</span>
<input id="gramaje100" name="customRadioGramaje" data-value="100" class="check-interior-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje115" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior">
<label class="form-check-label custom-option-content" for="gramaje115">
<span class="custom-option-body">
<span class="custom-option-title"> 115 gr </span>
</span>
<input id="gramaje115" name="customRadioGramaje" data-value="115" class="check-interior-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje120" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior">
<label class="form-check-label custom-option-content" for="gramaje120">
<span class="custom-option-body">
<span class="custom-option-title"> 120 gr </span>
</span>
<input id="gramaje120" name="customRadioGramaje" data-value="120" class="check-interior-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje135" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior">
<label class="form-check-label custom-option-content" for="gramaje135">
<span class="custom-option-body">
<span class="custom-option-title"> 135 gr </span>
</span>
<input id="gramaje135" name="customRadioGramaje" data-value="135" class="check-interior-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje150" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior">
<label class="form-check-label custom-option-content" for="gramaje150">
<span class="custom-option-body">
<span class="custom-option-title"> 150 gr </span>
</span>
<input id="gramaje150" name="customRadioGramaje" data-value="150" class="check-interior-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje170" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior">
<label class="form-check-label custom-option-content" for="gramaje170">
<span class="custom-option-body">
<span class="custom-option-title"> 170 gr </span>
</span>
<input id="gramaje170" name="customRadioGramaje" data-value="170" class="check-interior-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
</div>
<div class="col-sm-8 mb-3 mt-10 d-flex flex-column align-items-center interior-color d-none">
<h3 class="mb-1 fw-bold"> Impresión interior color</h3>
</div><!--//.mb-3 -->
<div id="divImpresionInteriorColor" name="div_impresion_interior_color" class="row col-sm-10 mb-3 justify-content-center interior-color d-none">
<div id="colorEstandarColor" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center disenio-interior-color imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/color.png") ?>" alt="Color">
<label for="titulo" class="form-label">
Color
</label>
</div>
<div id="colorPremiumColor" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center disenio-interior-color imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/colorFoto.png") ?>" alt="ColorPremium">
<label for="titulo" class="form-label">
Color Premium
</label>
</div>
</div>
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center interior-color d-none">
<h3 class="mb-1 fw-bold"> Papel interior color</h3>
</div><!--//.mb-3 -->
<div id="divPapelInteriorColor" name="div_papel_interior_color" class="row col-sm-10 mb-5 interior-color justify-content-center interior-color d-none">
<div id="offsetBlancoColor" cod="OFF1" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center papel-interior-color imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/offset-blanco.png") ?>" alt="offsetBlanco">
<label class="form-label">
Offset Blanco
</label>
</div>
<div id="offsetAhuesadoColor" cod="OFF2" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center papel-interior-color imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/offset-ahuesado.png") ?>" alt="offsetAhuesado">
<label for="titulo" class="form-label">
Offset Ahuesado
</label>
</div>
<div id="offsetAhuesadoVolumenColor" cod="OFF4" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center papel-interior-color imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/offset-ahuesado-volumen.png") ?>" alt="offsetAhuesadoVolumen">
<label class="form-label">
Offset Ahuesado Volumen
</label>
</div>
<div id="estucadoMateColor" cod="EST2" class="calcular-presupuesto d-flex flex-column align-items-center justify-content-center papel-interior-color imagen-selector image-container">
<img class="image-presupuesto" src="<?= site_url("assets/img/presupuestoCliente/estucado-mate.png") ?>" alt="estucadoMate">
<label class="form-label">
Estucado Mate
</label>
</div>
</div>
<div id="divGramajeInteriorColor" name="div_gramaje_interior_color" class="row col-sm-10 mb-3 justify-content-center d-none">
<div id="interiorGramaje70Color" class="checkbox-presupuesto-container col-md mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior-color">
<label class="form-check-label custom-option-content" for="gramaje70">
<span class="custom-option-body">
<span class="custom-option-title"> 70 gr </span>
</span>
<input id="gramaje70Color" name="customRadioGramajeColor" data-value="70" class="check-interior-color-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje80Color" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior-color">
<label class="form-check-label custom-option-content" for="gramaje80">
<span class="custom-option-body">
<span class="custom-option-title"> 80 gr </span>
</span>
<input id="gramaje80Color" name="customRadioGramajeColor" data-value="80" class="check-interior-color-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje90Color" class="mb-md-0 mb-3 checkbox-presupuesto-container">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior-color">
<label class="form-check-label custom-option-content" for="gramaje90">
<span class="custom-option-body">
<span class="custom-option-title"> 90 gr </span>
</span>
<input id="gramaje90Color" name="customRadioGramajeColor" data-value="90" class="check-interior-color-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje100Color" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior-color">
<label class="form-check-label custom-option-content" for="gramaje100">
<span class="custom-option-body">
<span class="custom-option-title"> 100 gr </span>
</span>
<input id="gramaje100Color" name="customRadioGramajeColor" data-value="100" class="check-interior-color-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje115Color" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior-color">
<label class="form-check-label custom-option-content" for="gramaje115">
<span class="custom-option-body">
<span class="custom-option-title"> 115 gr </span>
</span>
<input id="gramaje115Color" name="customRadioGramajeColor" data-value="115" class="check-interior-color-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje120Color" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior-color">
<label class="form-check-label custom-option-content" for="gramaje120">
<span class="custom-option-body">
<span class="custom-option-title"> 120 gr </span>
</span>
<input id="gramaje120Color" name="customRadioGramajeColor" data-value="120" class="check-interior-color-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje135Color" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior-color">
<label class="form-check-label custom-option-content" for="gramaje135">
<span class="custom-option-body">
<span class="custom-option-title"> 135 gr </span>
</span>
<input id="gramaje135Color" name="customRadioGramajeColor" data-value="135" class="check-interior-color-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje150Color" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior-color">
<label class="form-check-label custom-option-content" for="gramaje150">
<span class="custom-option-body">
<span class="custom-option-title"> 150 gr </span>
</span>
<input id="gramaje150Color" name="customRadioGramajeColor" data-value="150" class="check-interior-color-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
<div id="interiorGramaje170Color" class="checkbox-presupuesto-container mb-md-0 mb-3">
<div class="form-check custom-option custom-option-icon calcular-presupuesto gramaje-interior-color">
<label class="form-check-label custom-option-content" for="gramaje170">
<span class="custom-option-body">
<span class="custom-option-title"> 170 gr </span>
</span>
<input id="gramaje170Color" name="customRadioGramajeColor" data-value="170" class="check-interior-color-gramaje form-check-input" type="radio" value="" />
</label>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,6 @@
<div class="col-12 pb-2 d-flex flex-column align-items-center">
</div>

View File

@ -0,0 +1,143 @@
<div id="addressForm" action='create' class="modal fade addModal">
<div class="modal-dialog modal-lg modal-simple">
<div class="modal-content">
<div class="modal-header">
<h4 id="labelTitleConfirmDialog" class="modal-title"><?= lang('PresupuestosDirecciones.direccionTitle') ?></h4>
</div>
<div class="modal-body">
<div class="mb-3">
<label for="add_clientedAdd" class="form-label">
<?= lang('PresupuestosDirecciones.clientedAdd') ?>*
</label>
<select id="add_clientedAdd" class="form-control select2bs" style="width: 100%;">
</select>
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="add_cantidad" class="form-label">
<?= lang('PresupuestosDirecciones.cantidad') ?>*
</label>
<input type="number" id="add_cantidad" class="form-control">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="add_att" class="form-label">
<?= lang('PresupuestosDirecciones.att') ?>*
</label>
<input type="text" id="add_att" maxLength="100" class="form-control new-address">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="add_email" class="form-label">
<?= lang('PresupuestosDirecciones.email') ?>*
</label>
<input type="text" id="add_email" maxLength="100" class="form-control new-address">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="add_direccion" class="form-label">
<?= lang('PresupuestosDirecciones.direccion') ?>*
</label>
<input type="text" id="add_direccion" maxLength="255" class="form-control new-address">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="add_pais_id" class="form-label">
<?= lang('PresupuestosDirecciones.pais') ?>*
</label>
<select id="add_pais_id" class="form-control select2bs new-address" style="width: 100%;">
<option value="" disabled selected><?= lang('PresupuestosDirecciones.selectPais') ?></option>
<?php foreach ($paisList as $item) : ?>
<option value="<?= $item->id ?>" <?= $item->id == 1 ? ' selected' : '' ?>>
<?= $item->nombre ?>
</option>
<?php endforeach; ?>
</select>
</div><!--//.mb-3 -->
<div class='row'>
<div id='divMunicipio' class="col-md-12 col-lg-12 pl-4">
<div class="mb-3">
<label for="add_municipio" class="form-label">
<?= lang('PresupuestosDirecciones.municipio') ?>*
</label>
<input type="text" id="add_municipio" maxLength="100" class="form-control new-address">
</div><!--//.mb-3 -->
</div>
<div class="col-md-12 col-lg-6 pl-4 spain-data" style="display: none;">
<div class="mb-3">
<label for="add_provincia" class="form-label">
<?= lang('PresupuestosDirecciones.provincia') ?>*
</label>
<input type="text" id="add_provincia" maxLength="100" class="form-control new-address">
</div><!--//.mb-3 -->
</div>
</div> <!-- //.row -->
<div class='row'>
<div class="col-md-12 col-lg-6 pl-4">
<div class="mb-3">
<label for="add_cp" class="form-label">
<?= lang('PresupuestosDirecciones.cp') ?>*
</label>
<input type="text" id="add_cp" maxLength="100" class="form-control new-address">
</div><!--//.mb-3 -->
</div>
<div class="col-md-12 col-lg-6 pl-4">
<div class="mb-3">
<label for="add_telefono" class="form-label">
<?= lang('PresupuestosDirecciones.telefono') ?>*
</label>
<input type="text" id="add_telefono" maxLength="100" class="form-control new-address"></input>
</div><!--//.mb-3 -->
</div>
</div> <!-- //.row -->
<div class="col-md-12 col-lg-6 pl-4">
<div class="form-check form-switch mb-2">
<input class="form-check-input" type="checkbox" id="add_entregaPieCalle" name="add_entregaPieCalle" value="1">
<label class="form-check-label" for="add_entregaPieCalle"><?= lang('PresupuestosDirecciones.entregaPieCalle') ?></label>
</div>
</div>
<div class="col-md-12 col-lg-6 pl-4">
<div class="form-check form-switch mb-2">
<input class="form-check-input" type="checkbox" id="add_saveDirection" name="add_saveDirection" value="1">
<label class="form-check-label" for="add_saveDirection"><?= lang('PresupuestosDirecciones.saveDirection') ?></label>
</div>
</div>
<div class="mb-3">
<label style="display:none" for="add_alias" class="form-label save-alias">
<?= lang('PresupuestosDirecciones.alias') ?>*
</label>
<input type="text" id="add_alias" maxLength="100" class="form-control new-address save-alias" style='display: none;'>
</div><!--//.mb-3 -->
</div>
<div class="modal-footer">
<button id="saveDireccionEnvio"
type="button"
class="btn btn-primary">Guardar</button>
<button id="cancelAdd"
type="button"
class="btn btn-default">Cancelar</button>
</div>
</div>
</div>
</div>
<?= $this->section("additionalExternalJs") ?>
<?= $this->endSection() ?>

View File

@ -0,0 +1,206 @@
<div class="col-12 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold">Resumen del presupuesto</h3>
<div class="line mb-4"></div>
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h5 class="mb-1 "> Precio unidad: <span id="resumenPrecioU"></span> </h5>
<h4 class="mb-1 "> Total base: <span id="resumenTotalBase"></span> </h>
<h4 class="mb-1 "> Iva (<span id="resumenIvaPorcentaje"></span>%): <span id="resumenIva"></span> </h>
<h3 class="mt-3 mb-1 fw-bold"> Total: <span id="resumenTotal"></span> </h>
</div><!--//.mb-3 -->
<div id="divFormaCubierta" class="col-sm-12 mb-3 d-flex flex-column align-items-center">
<div class="row justify-content-center col-sm-12">
<div id="btnPreviewCubierta" class="btn col-sm-4 btn-primary waves-effect waves-light ml-2">
<span class="align-middle d-sm-inline-block d-none me-sm-1"></i>Mostrar desarrollo cubierta</span>
</div>
</div>
<div class="row">
<div id="pv_ec_shape" class="col-sm-12 d-none" style="width:850px;height:600px;margin:2.5% auto;"></div>
</div>
</div>
<div class="table-responsive col-10 mb-3">
<table class="table table-bordered">
<thead class="table-dark">
<tr>
<th colspan="2">Datos generales</th>
</tr>
</thead>
<tbody>
<tr>
<td class="col-item-resumen-table">Titulo</td>
<td id="resumenTitulo">Albert Cook</td>
</tr>
<tr>
<td class="col-item-resumen-table">Tipo libro</td>
<td id="resumenTipoLibro"></td>
</tr>
<tr>
<td class="col-item-resumen-table">Formato</td>
<td id="resumenFormato"></td>
</tr>
<tr>
<td class="col-item-resumen-table">Páginas negro</td>
<td id="resumenPaginasNegro"></td>
</tr>
<tr>
<td class="col-item-resumen-table">Páginas color</td>
<td id="resumenPaginasColor"></td>
</tr>
<tr>
<td class="col-item-resumen-table">Páginas en total</td>
<td id="resumenPaginas"></td>
</tr>
<tr>
<td class="col-item-resumen-table">Tirada</td>
<td id="resumenTirada"></td>
</tr>
<tr>
<td class="col-item-resumen-table">Prototipo</td>
<td id="resumenPrototipo"></td>
</tr>
</tbody>
</table>
</div>
<div class="table-responsive col-10 mb-3">
<table class="table table-bordered">
<thead class="table-dark">
<tr>
<th colspan="2">Interior</th>
</tr>
</thead>
<tbody>
<tr>
<td class="col-item-resumen-table">Impresion</td>
<td id="resumenImpresion"></td>
</tr>
<tr class="mismoInterior">
<td class="col-item-resumen-table">Papel</td>
<td id="resumenPapelInterior"></td>
</tr>
<tr class="mismoInterior">
<td class="col-item-resumen-table">Gramaje</td>
<td id="resumenGramajeInterior"></td>
</tr>
<tr class="diferenteInterior d-none">
<td class="col-item-resumen-table">Papel B&N</td>
<td id="resumenPapelInteriorNegro"></td>
</tr>
<tr class="diferenteInterior d-none">
<td class="col-item-resumen-table">Gramaje B&N</td>
<td id="resumenGramajeInteriorNegro"></td>
</tr>
<tr class="diferenteInterior d-none">
<td class="col-item-resumen-table">Papel Color</td>
<td id="resumenPapelInteriorColor"></td>
</tr>
<tr class="diferenteInterior d-none">
<td class="col-item-resumen-table">Gramaje Color</td>
<td id="resumenGramajeInteriorColor"></td>
</tr>
</tbody>
</table>
</div>
<div class="table-responsive col-10 mb-3">
<table class="table table-bordered">
<thead class="table-dark">
<tr>
<th colspan="2">Cubierta</th>
</tr>
</thead>
<tbody>
<tr>
<td class="col-item-resumen-table">Tipo</td>
<td id="resumenCubiertaTipo"></td>
</tr>
<tr class="cubierta-tapa-blanda d-none">
<td class="col-item-resumen-table">Caras impresas</td>
<td id="resumenCarasCubierta"></td>
</tr>
<tr>
<td class="col-item-resumen-table">Papel</td>
<td id="resumenPapelCubierta"></td>
</tr>
<tr>
<td class="col-item-resumen-table">Gramaje</td>
<td id="resumenGramajeCubierta"></td>
</tr>
<tr class="cubierta-tapa-blanda d-none">
<td class="col-item-resumen-table">Solapas</td>
<td id="resumenSolapasCubierta"></td>
</tr>
<tr class="cubierta-tapa-dura d-none">
<td class="col-item-resumen-table">Papel de guardas</td>
<td id="resumenPapelGuardas"></td>
</tr>
<tr class="cubierta-tapa-dura d-none">
<td class="col-item-resumen-table">Guardas impresas</td>
<td id="resumenGuardasImpresas"></td>
</tr>
<tr class="cubierta-tapa-dura d-none">
<td class="col-item-resumen-table">Cabezada</td>
<td id="resumenCabezada"></td>
</tr>
<tr>
<td class="col-item-resumen-table">Acabados</td>
<td id="resumenCubiertaAcabados"></td>
</tr>
</tbody>
</table>
</div>
<div id="divResumenSobrecubierta" class="table-responsive col-10 mb-3 d-none">
<table class="table table-bordered">
<thead class="table-dark">
<tr>
<th colspan="2">Sobrecubierta</th>
</tr>
</thead>
<tbody>
<tr>
<td class="col-item-resumen-table">Papel</td>
<td id="resumenPapelSobrecubierta">Estucado Mate</td>
</tr>
<tr class="d-none">
<td class="col-item-resumen-table">Gramaje</td>
<td id="resumenGramajeSobrecubierta"></td>
</tr>
<tr>
<td class="col-item-resumen-table">Tamaño solapas</td>
<td id="resumenSolapaSobrecubierta"></td>
</tr>
<tr>
<td class="col-item-resumen-table">Plastificado</td>
<td id="resumenPlastificadoSobreCubierta"></td>
</tr>
</tbody>
</table>
</div>
<?php if ($state == 2): ?>
<div class="col-12 mb-3">
<h3>Ficheros</h3>
<div class="col-12">
<div class="dropzone needsclick" id="dropzone-multi">
<div class="dz-message needsclick">
Arrastre aquí los ficheros o haga click
</div>
<div class="fallback">
<input name="file" type="file" />
</div>
</div>
</div>
<button id="submit-all-files" class="btn mt-3 btn-primary btn-submit waves-effect waves-light ml-2">
<span class="align-middle d-sm-inline-block d-none me-sm-1">Actualizar ficheros</span>
<i class="ti ti-upload ti-xs"></i>
</button>
</div>
<?php endif; ?>
</div>

View File

@ -0,0 +1,3 @@
[ZoneTransfer]
ZoneId=3
ReferrerUrl=C:\Users\jjime\Downloads\safekat-dev-presu_cliente_v2.zip

View File

@ -0,0 +1,3 @@
[ZoneTransfer]
ZoneId=3
ReferrerUrl=C:\Users\jjime\Downloads\safekat-dev-presu_cliente_v2.zip

0
httpdocs/assets/css/index.html Executable file → Normal file
View File

0
httpdocs/assets/css/install.css Executable file → Normal file
View File

0
httpdocs/assets/flags/ad_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
httpdocs/assets/flags/ae_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 447 B

After

Width:  |  Height:  |  Size: 447 B

0
httpdocs/assets/flags/af_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
httpdocs/assets/flags/ag_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

0
httpdocs/assets/flags/ai_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.4 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

0
httpdocs/assets/flags/al_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

0
httpdocs/assets/flags/am_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 272 B

After

Width:  |  Height:  |  Size: 272 B

0
httpdocs/assets/flags/ao_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
httpdocs/assets/flags/aq_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

0
httpdocs/assets/flags/ar_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 734 B

After

Width:  |  Height:  |  Size: 734 B

0
httpdocs/assets/flags/as_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

0
httpdocs/assets/flags/at_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 321 B

After

Width:  |  Height:  |  Size: 321 B

0
httpdocs/assets/flags/au_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
httpdocs/assets/flags/aw_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 823 B

After

Width:  |  Height:  |  Size: 823 B

0
httpdocs/assets/flags/ax_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 768 B

After

Width:  |  Height:  |  Size: 768 B

0
httpdocs/assets/flags/az_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 746 B

After

Width:  |  Height:  |  Size: 746 B

0
httpdocs/assets/flags/ba_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 903 B

After

Width:  |  Height:  |  Size: 903 B

0
httpdocs/assets/flags/bb_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
httpdocs/assets/flags/bd_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
httpdocs/assets/flags/be_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 332 B

After

Width:  |  Height:  |  Size: 332 B

0
httpdocs/assets/flags/bf_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 829 B

After

Width:  |  Height:  |  Size: 829 B

0
httpdocs/assets/flags/bg_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 273 B

After

Width:  |  Height:  |  Size: 273 B

0
httpdocs/assets/flags/bh_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1020 B

After

Width:  |  Height:  |  Size: 1020 B

0
httpdocs/assets/flags/bi_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
httpdocs/assets/flags/bj_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 356 B

After

Width:  |  Height:  |  Size: 356 B

0
httpdocs/assets/flags/bl_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

0
httpdocs/assets/flags/bm_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

0
httpdocs/assets/flags/bn_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

0
httpdocs/assets/flags/bo_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 955 B

After

Width:  |  Height:  |  Size: 955 B

0
httpdocs/assets/flags/bq_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

0
httpdocs/assets/flags/br_32_circle.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

0
httpdocs/assets/flags/br_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

0
httpdocs/assets/flags/bs_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 708 B

After

Width:  |  Height:  |  Size: 708 B

0
httpdocs/assets/flags/bt_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.3 KiB

After

Width:  |  Height:  |  Size: 3.3 KiB

0
httpdocs/assets/flags/bv_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 707 B

After

Width:  |  Height:  |  Size: 707 B

0
httpdocs/assets/flags/bw_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 329 B

0
httpdocs/assets/flags/by_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
httpdocs/assets/flags/bz_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 3.8 KiB

0
httpdocs/assets/flags/ca_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 773 B

After

Width:  |  Height:  |  Size: 773 B

0
httpdocs/assets/flags/cc_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

0
httpdocs/assets/flags/cd_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

0
httpdocs/assets/flags/cf_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
httpdocs/assets/flags/cg_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
httpdocs/assets/flags/ch_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 760 B

After

Width:  |  Height:  |  Size: 760 B

0
httpdocs/assets/flags/ci_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 265 B

After

Width:  |  Height:  |  Size: 265 B

0
httpdocs/assets/flags/ck_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

0
httpdocs/assets/flags/cl_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 721 B

After

Width:  |  Height:  |  Size: 721 B

0
httpdocs/assets/flags/cm_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 778 B

After

Width:  |  Height:  |  Size: 778 B

0
httpdocs/assets/flags/cn_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

0
httpdocs/assets/flags/co_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 363 B

After

Width:  |  Height:  |  Size: 363 B

0
httpdocs/assets/flags/cr_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 804 B

After

Width:  |  Height:  |  Size: 804 B

0
httpdocs/assets/flags/cu_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
httpdocs/assets/flags/cv_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
httpdocs/assets/flags/cw_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 954 B

After

Width:  |  Height:  |  Size: 954 B

0
httpdocs/assets/flags/cx_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

0
httpdocs/assets/flags/cy_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

0
httpdocs/assets/flags/cz_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
httpdocs/assets/flags/de_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 299 B

After

Width:  |  Height:  |  Size: 299 B

0
httpdocs/assets/flags/dj_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
httpdocs/assets/flags/dk_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 419 B

After

Width:  |  Height:  |  Size: 419 B

0
httpdocs/assets/flags/dm_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.4 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

0
httpdocs/assets/flags/do_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 671 B

After

Width:  |  Height:  |  Size: 671 B

0
httpdocs/assets/flags/dz_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
httpdocs/assets/flags/ec_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

0
httpdocs/assets/flags/ee_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 301 B

After

Width:  |  Height:  |  Size: 301 B

0
httpdocs/assets/flags/eg_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 804 B

After

Width:  |  Height:  |  Size: 804 B

0
httpdocs/assets/flags/eh_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
httpdocs/assets/flags/er_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

0
httpdocs/assets/flags/es_32_circle.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

0
httpdocs/assets/flags/es_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

0
httpdocs/assets/flags/et_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.0 KiB

0
httpdocs/assets/flags/fi_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 504 B

After

Width:  |  Height:  |  Size: 504 B

0
httpdocs/assets/flags/fj_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

0
httpdocs/assets/flags/fk_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

0
httpdocs/assets/flags/fm_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

0
httpdocs/assets/flags/fo_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 726 B

After

Width:  |  Height:  |  Size: 726 B

0
httpdocs/assets/flags/fr_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 318 B

After

Width:  |  Height:  |  Size: 318 B

0
httpdocs/assets/flags/ga_64.png Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 325 B

After

Width:  |  Height:  |  Size: 325 B

Some files were not shown because too many files have changed in this diff Show More