formulario direcciones presupuestos

This commit is contained in:
2023-12-18 18:50:02 +01:00
parent 01d27ec480
commit ad4f804dc1
14 changed files with 292 additions and 6 deletions

View File

@ -482,6 +482,7 @@ $routes->group('clientedirecciones', ['namespace' => 'App\Controllers\Clientes']
$routes->get('delete/(:num)', 'Clientedirecciones::delete/$1', ['as' => 'deleteClientedirecciones']);
$routes->post('datatable', 'Clientedirecciones::datatable', ['as' => 'dataTableOfClienteDirecciones']);
$routes->post('datatable_editor', 'Clientedirecciones::datatable_editor', ['as' => 'editorOfClienteDirecciones']);
$routes->post('menuitems', 'Clientedirecciones::menuItems', ['as' => 'menuItemsOfClienteDirecciones']);
});
$routes->resource('clientedirecciones', ['namespace' => 'App\Controllers\Clientes', 'controller' => 'Clientedirecciones', 'except' => 'show,new,create,update']);

View File

@ -24,6 +24,29 @@ class Clientedirecciones extends \App\Controllers\GoBaseResourceController
public function menuItems()
{
if ($this->request->isAJAX()) {
$reqData = $this->request->getPost();
$cliente_id = $reqData['cliente_id'] ?? -1;
$clienteDireccionesModel = model('App\Models\Clientes\ClienteDireccionesModel');
$menu = $clienteDireccionesModel->getMenuDirecciones($cliente_id);
//$menu = $this->model->getMenuItems($cliente_id);
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
$data = [
'menu' => $menu,
$csrfTokenName => $newTokenHash
];
return $this->respond($data);
} else {
return $this->failUnauthorized('Invalid request', 403);
}
}
public function datatable()
{

View File

@ -263,6 +263,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$this->viewData['clienteList'] = $this->getClienteListItems($presupuestoEntity->cliente_id ?? null);
$this->viewData['paisList'] = $this->getPaisListItems();
$this->viewData['ccaaList'] = $this->getCcaaListItems();
$this->viewData['clienteList'] = $this->getClienteListItems($presupuestoEntity->cliente_id ?? null);
$this->viewData['incReiList'] = array('incidencia' => lang('Presupuestos.incidencia'), 'reimpresion' => lang('Presupuestos.reimpresion'), 'sin_cargo' => lang('Presupuestos.sinCargo'));
@ -894,6 +895,16 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
return $data;
}
protected function getCcaaListItems($selId = null)
{
$ccaaModel = model('App\Models\Configuracion\ComunidadAutonomaModel');
$onlyActiveOnes = true;
$data = $ccaaModel->getAllForMenu('id, nombre', 'nombre', $onlyActiveOnes);
return $data;
}
protected function getPapelFormatoListItems($selId = null)
{
$papelFormatoModel = model('App\Models\Configuracion\PapelFormatoModel');

View File

View File

@ -17,9 +17,9 @@ class Test extends BaseController
public function index()
{
$model = model('App\Models\Presupuestos\PresupuestoDireccionesModel');
$model = model('App\Models\Clientes\ClienteDireccionesModel');
echo '<pre>';
var_dump($model->getResource("", 8)->get()->getResultObject());
var_dump($model->getMenuDirecciones(1420));
echo '</pre>';
}

2
ci4/app/Language/en/PresupuestosDirecciones.php Normal file → Executable file
View File

@ -17,7 +17,7 @@ return [
'precio' => 'Price',
'validation' => [
'max_length' => 'Max. length ',
'required' => 'Field required'
'required' => 'Field required',
'valid_email' => 'The email is not valid',
],

View File

@ -3,7 +3,7 @@
return [
'nuevaTitle' => 'Añadir nueva dirección',
'direccionTitle' => 'Dirección de envío',
'alias' => 'Alias',
'att' => 'Att.',
'email' => 'Email',

4
ci4/app/Language/es/PresupuestosDirecciones.php Normal file → Executable file
View File

@ -2,7 +2,8 @@
return [
'nuevaTitle' => 'Añadir nueva dirección',
'direccionTitle' => 'Dirección de envío',
'clientedAdd' => 'Direcciones de cliente',
'alias' => 'Alias',
'att' => 'Att.',
'email' => 'Email',
@ -23,6 +24,7 @@ return [
],
'selectAdd' => 'Seleccione dirección guardada',
'selectPais' => 'Seleccione País',
'selectCcaa' => 'Seleccione CCAA',
'selectProvincia' => 'Seleccione Provincia',

View File

@ -126,4 +126,17 @@ class ClienteDireccionesModel extends \App\Models\GoBaseModel
->orLike("t1.telefono", $search)
->groupEnd();
}
public function getMenuDirecciones($cliente_id=-1){
$builder =
$this->db
->table($this->table . " t1")
->select(
"t1.id AS id, t1.alias AS text")
->where("t1.cliente_id", $cliente_id);
return $builder->get()->getResultArray();
}
}

View File

View File

@ -2,7 +2,7 @@
<div class="modal-dialog modal-lg modal-simple">
<div class="modal-content">
<div class="modal-header">
<h4 id="labelTitleConfirmDialog" class="modal-title"><?= lang('ClienteDirecciones.nuevaTitle') ?></h4>
<h4 id="labelTitleConfirmDialog" class="modal-title"><?= lang('ClienteDirecciones.direccionTitle') ?></h4>
</div>
<div class="modal-body">
<div class="mb-3">

View File

@ -9,6 +9,7 @@
<div id="accordionEnviosTip" class="accordion-collapse collapse show" data-bs-parent="#accordionEnvios">
<div class="accordion-body">
<?= view("themes/backend/vuexy/form/presupuestos/cosidotapablanda/_presupuestoDireccionesForm") ?>
<table id="tableOfDireccionesEnvio" class="table dt-responsive dataTable px-4" style="width: 100%;">
<thead>
<tr>
@ -55,6 +56,17 @@
<!------------------------------------------->
<?= $this->section("additionalInlineJs") ?>
$('#insertar_direccion').on('click', function(){
$("#addressForm").attr('action','create')
var $newAddDialog = $("#addressForm")
var maximaCantidad = parseInt($('#tirada').val())
$("#add_cantidad").attr("max" , maximaCantidad);
$("#add_cantidad").on('change', function(){
$("#add_cantidad").val(parseInt($("#add_cantidad").val())>maximaCantidad ? maximaCantidad : $("#add_cantidad").val())
})
$newAddDialog.modal('show')
})
const lastColNr = $('#tableOfDireccionesEnvio').find("tr:first th").length - 1;
const actionBtns_direcciones = function(data) {

View File

@ -0,0 +1,210 @@
<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.nuevaTitle') ?></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" tabindex="0" 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" tabindex="1" 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" tabindex="1" maxLength="100" class="form-control">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="add_email" class="form-label">
<?= lang('PresupuestosDirecciones.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('PresupuestosDirecciones.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('PresupuestosDirecciones.pais') ?>*
</label>
<select id="add_pais_id" tabindex="4" class="form-control select2bs" style="width: 100%;" >
<option value="" disabled selected><?=lang('PresupuestosDirecciones.selectPais') ?></option>
<?php foreach ($paisList as $item) : ?>
<option value="<?=$item->id ?>">
<?=$item->nombre ?>
</option>
<?php endforeach; ?>
</select>
</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_ccaa" class="form-label">
<?=lang('PresupuestosDirecciones.ccaa') ?>*
</label>
<select id="add_ccaa" tabindex="5" class="form-control select2bs" style="width: 100%;" >
<option value="" disabled selected><?=lang('PresupuestosDirecciones.selectCcaa') ?></option>
<?php foreach ($ccaaList 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('PresupuestosDirecciones.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('PresupuestosDirecciones.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('PresupuestosDirecciones.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('PresupuestosDirecciones.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-default"
>Cancelar</button>
</div>
</div>
</div>
</div>
<?= $this->section("additionalInlineJs") ?>
$('#cancelAdd').on('click', function(){
$('#addressForm').modal("hide");
})
$('#saveAdd').on('click', function(){
})
$('#add_clientedAdd').select2({
allowClear: false,
minimumResultsForSearch: Infinity,
dropdownParent: $('#addressForm'),
ajax: {
url: '<?= route_to("menuItemsOfClienteDirecciones") ?>',
type: 'post',
dataType: 'json',
data: function (params) {
return {
cliente_id: $('#clienteId').val(),
<?= csrf_token() ?? "token" ?> : <?= csrf_token() ?>v
};
},
delay: 60,
processResults: function (response) {
yeniden(response.<?= csrf_token() ?>);
return {
results: response.menu
};
},
cache: true
}
})
$('#add_pais_id').on('change', function(){
var nombre_pais = $("#add_pais_id option:selected" ).text().trim();
if(nombre_pais.localeCompare('España')==0){
$('#divPais').removeClass('col-lg-12').addClass('col-lg-6')
$('#divMunicipio').removeClass('col-lg-12').addClass('col-lg-6')
$('.spain-data').css('display', 'inline')
}
else{
$('.spain-data').css('display', 'none')
$('#divPais').removeClass('col-lg-6').addClass('col-lg-12')
$('#divMunicipio').removeClass('col-lg-6').addClass('col-lg-12')
}
})
// clear modal items when close
$('#addressForm').on('hidden.bs.modal', function () {
$('#add_alias').val("")
$('#add_att').val("")
$('#add_email').val("")
$('#add_direccion').val("")
$("#add_pais_id").val("").change()
$("#add_ccaa").val("").change()
$('#add_municipio').val("")
$('#add_provincia').val("")
$('#add_cp').val("")
$('#add_telefono').val("")
})
<?=$this->endSection() ?>

View File

@ -34,6 +34,7 @@
<input type="submit"
class="btn btn-primary float-start me-sm-3 me-1"
name="save"
id="saveForm"
value="<?= lang("Basic.global.Save") ?>"
/>
<?php if(str_contains($formAction,'edit')): ?>
@ -56,6 +57,19 @@
<!------------------------------------------->
<?= $this->section("additionalInlineJs") ?>
$(document).keypress(function (e) {
var key = e.which;
if(key == 13) // the enter key code
{ e.preventDefault()
if($('#addressForm').hasClass('show')){
$("#saveAdd").click();
}else{
$('#saveForm').click();
}
}
});
$('#clienteId').select2({
allowClear: false,
ajax: {