Falta testear funcionamiento completo. Edit no funciona

This commit is contained in:
Jaime Jiménez
2023-08-05 12:51:29 +02:00
parent 3e27d3fc17
commit 121b270dd0
15 changed files with 390 additions and 236 deletions

View File

@ -378,6 +378,25 @@ $routes->group('tarifaencuadernacionlineas', ['namespace' => 'App\Controllers\Ta
});
$routes->resource('tarifaencuadernacionlineas', ['namespace' => 'App\Controllers\Tarifas', 'controller' => 'Tarifaencuadernacionlineas', 'except' => 'show,new,create,update']);
$routes->group('proveedores', ['namespace' => 'App\Controllers\Compras'], function ($routes) {
$routes->get('', 'Proveedores::index', ['as' => 'proveedorList']);
$routes->get('add', 'Proveedores::add', ['as' => 'newProveedor']);
$routes->post('add', 'Proveedores::add', ['as' => 'createProveedor']);
$routes->post('create', 'Proveedores::create', ['as' => 'ajaxCreateProveedor']);
$routes->put('(:num)/update', 'Proveedores::update/$1', ['as' => 'ajaxUpdateProveedor']);
$routes->post('(:num)/edit', 'Proveedores::edit/$1', ['as' => 'updateProveedor']);
$routes->post('datatable', 'Proveedores::datatable', ['as' => 'dataTableOfProveedores']);
$routes->post('allmenuitems', 'Proveedores::allItemsSelect', ['as' => 'select2ItemsOfProveedores']);
$routes->post('menuitems', 'Proveedores::menuItems', ['as' => 'menuItemsOfProveedores']);
});
$routes->resource('proveedores', ['namespace' => 'App\Controllers\Compras', 'controller' => 'Proveedores', 'except' => 'show,new,create,update']);
$routes->group('proveedorestipos', ['namespace' => 'App\Controllers\Compras'], function ($routes) {
$routes->post('menuitems', 'ProveedoresTipos::menuItems', ['as' => 'menuItemsOfProveedoresTipos']);
});
$routes->resource('proveedorestipos', ['namespace' => 'App\Controllers\Compras', 'controller' => 'ProveedoresTipos', 'except' => 'show,new,create,update']);
/*
* --------------------------------------------------------------------
* Additional Routing

View File

@ -1,19 +1,12 @@
<?php namespace App\Controllers\compras;
<?php namespace App\Controllers\Compras;
use App\Controllers\GoBaseResourceController;
use App\Models\Collection;
use App\Entities\compras\ProveedorEntity;
use App\Entities\Compras\ProveedorEntity;
use App\Models\compras\ProveedorTipoModel;
use App\Models\compras\ProvinciaModel;
use App\Models\Configuracion\PaisModel;
use App\Models\compras\ProveedorModel;
use App\Models\Compras\ProveedorModel;
class Proveedores extends \App\Controllers\GoBaseResourceController {
@ -34,8 +27,23 @@ class Proveedores extends \App\Controllers\GoBaseResourceController {
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger) {
$this->viewData['pageTitle'] = lang('LgProveedores.moduleTitle');
$this->viewData['pageTitle'] = lang('Proveedores.moduleTitle');
$this->viewData['usingSweetAlert'] = true;
// Se indica que este controlador trabaja con soft_delete
$this->soft_delete = true;
// Se indica el flag para los ficheros borrados
$this->delete_flag = 1;
$this->viewData = ['usingServerSideDataTable' => true];
// Breadcrumbs (IMN)
$this->viewData['breadcrumb'] = [
['title' => lang("App.menu_configuration"), 'route' => "javascript:void(0);", 'active' => false],
['title' => lang("App.menu_proveedores"), 'route' => site_url('compras/proveedores'), 'active' => true]
];
parent::initController($request, $response, $logger);
}
@ -44,7 +52,7 @@ class Proveedores extends \App\Controllers\GoBaseResourceController {
$viewData = [
'currentModule' => static::$controllerSlug,
'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('LgProveedores.proveedor')]),
'pageSubTitle' => lang('Basic.global.ManageAllRecords', [lang('Proveedores.proveedor')]),
'proveedorEntity' => new ProveedorEntity(),
'usingServerSideDataTable' => true,
@ -83,7 +91,7 @@ class Proveedores extends \App\Controllers\GoBaseResourceController {
$this->dealWithException($e);
}
else:
$this->viewData['errorMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('LgProveedores.proveedor'))]);
$this->viewData['errorMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('Proveedores.proveedor'))]);
$this->session->setFlashdata('formErrors', $this->model->errors());
endif;
@ -93,7 +101,7 @@ class Proveedores extends \App\Controllers\GoBaseResourceController {
$id = $this->model->db->insertID();
$message = lang('Basic.global.saveSuccess', [mb_strtolower(lang('LgProveedores.proveedor'))]).'.';
$message = lang('Basic.global.saveSuccess', [mb_strtolower(lang('Proveedores.proveedor'))]).'.';
$message .= anchor( "admin/proveedores/{$id}/edit" , lang('Basic.global.continueEditing').'?');
$message = ucfirst(str_replace("'", "\'", $message));
@ -118,7 +126,7 @@ class Proveedores extends \App\Controllers\GoBaseResourceController {
$this->viewData['formAction'] = route_to('createProveedor');
$this->viewData['boxTitle'] = lang('Basic.global.addNew').' '.lang('LgProveedores.moduleTitle').' '.lang('Basic.global.addNewSuffix');
$this->viewData['boxTitle'] = lang('Basic.global.addNew').' '.lang('Proveedores.moduleTitle').' '.lang('Basic.global.addNewSuffix');
return $this->displayForm(__METHOD__);
@ -133,7 +141,7 @@ class Proveedores extends \App\Controllers\GoBaseResourceController {
$proveedorEntity = $this->model->find($id);
if ($proveedorEntity == false) :
$message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('LgProveedores.proveedor')), $id]);
$message = lang('Basic.global.notFoundWithIdErr', [mb_strtolower(lang('Proveedores.proveedor')), $id]);
return $this->redirect2listView('sweet-error', $message);
endif;
@ -162,20 +170,21 @@ class Proveedores extends \App\Controllers\GoBaseResourceController {
$this->dealWithException($e);
}
else:
$this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('LgProveedores.proveedor'))]);
$this->viewData['warningMessage'] = lang('Basic.global.formErr1', [mb_strtolower(lang('Proveedores.proveedor'))]);
$this->session->setFlashdata('formErrors', $this->model->errors());
endif;
$proveedorEntity->fill($sanitizedData);
$thenRedirect = true;
$thenRedirect = false;
endif;
if ($noException && $successfulResult) :
$id = $proveedorEntity->id ?? $id;
$message = lang('Basic.global.updateSuccess', [mb_strtolower(lang('LgProveedores.proveedor'))]).'.';
$message .= anchor( "admin/proveedores/{$id}/edit" , lang('Basic.global.continueEditing').'?');
$message = ucfirst(str_replace("'", "\'", $message));
$message = lang('Basic.global.updateSuccess', [lang('Basic.global.record')]).'.';
//$message = lang('Basic.global.updateSuccess', [mb_strtolower(lang('Proveedores.proveedor'))]).'.';
//$message .= anchor( "admin/proveedores/{$id}/edit" , lang('Basic.global.continueEditing').'?');
//$message = ucfirst(str_replace("'", "\'", $message));
if ($thenRedirect) :
if (!empty($this->indexRoute)) :
@ -197,7 +206,7 @@ class Proveedores extends \App\Controllers\GoBaseResourceController {
$this->viewData['formAction'] = route_to('updateProveedor', $id);
$this->viewData['boxTitle'] = lang('Basic.global.edit2').' '.lang('LgProveedores.moduleTitle').' '.lang('Basic.global.edit3');
$this->viewData['boxTitle'] = lang('Basic.global.edit2').' '.lang('Proveedores.moduleTitle').' '.lang('Basic.global.edit3');
return $this->displayForm(__METHOD__, $id);
@ -217,7 +226,7 @@ class Proveedores extends \App\Controllers\GoBaseResourceController {
$length = $reqData['length'] ?? 5;
$search = $reqData['search']['value'];
$requestedOrder = $reqData['order']['0']['column'] ?? 1;
$order = ProveedorModel::SORTABLE[$requestedOrder > 0 ? $requestedOrder : 1];
$order = ProveedorModel::SORTABLE[$requestedOrder >= 0 ? $requestedOrder : 0];
$dir = $reqData['order']['0']['dir'] ?? 'asc';
$resourceData = $this->model->getResource($search)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject();
@ -282,9 +291,9 @@ class Proveedores extends \App\Controllers\GoBaseResourceController {
protected function getProveedorTipoListItems($selId = null) {
$data = [''=>lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('LgProveedoresTipos.proveedorTipo'))])];
$data = [''=>lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Proveedores.tipoId'))])];
if (!empty($selId)) :
$proveedorTipoModel = model('App\Models\compras\ProveedorTipoModel');
$proveedorTipoModel = model('App\Models\Compras\ProveedorTipoModel');
$selOption = $proveedorTipoModel->where('id', $selId)->findColumn('nombre');
if (!empty($selOption)) :
@ -307,7 +316,7 @@ class Proveedores extends \App\Controllers\GoBaseResourceController {
protected function getProvinciaListItems($selId = null) {
$data = [''=>lang('Basic.global.pleaseSelectA', [mb_strtolower(lang('Provincias.provincia'))])];
if (!empty($selId)) :
$provinciaModel = model('App\Models\compras\ProvinciaModel');
$provinciaModel = model('App\Models\Configuracion\ProvinciaModel');
$selOption = $provinciaModel->where('id', $selId)->findColumn('nombre');
if (!empty($selOption)) :

View File

@ -1,13 +1,13 @@
<?php namespace App\Controllers\compras;
<?php namespace App\Controllers\Compras;
use App\Controllers\GoBaseResourceController;
use App\Models\Collection;
use App\Entities\compras\ProveedorTipoEntity;
use App\Entities\Compras\ProveedorTipoEntity;
use App\Models\compras\ProveedorTipoModel;
use App\Models\Compras\ProveedorTipoModel;
class ProveedoresTipos extends \App\Controllers\GoBaseResourceController {

View File

@ -1,5 +1,5 @@
<?php
namespace App\Entities\compras;
namespace App\Entities\Compras;
use CodeIgniter\Entity;

View File

@ -1,5 +1,5 @@
<?php
namespace App\Entities\compras;
namespace App\Entities\Compras;
use CodeIgniter\Entity;

View File

@ -0,0 +1,85 @@
<?php
return [
'cif' => 'CIF',
'ciudad' => 'City',
'cp' => 'Postal code',
'createdAt' => 'Created At',
'deletedAt' => 'Deleted At',
'direccion' => 'Address',
'email' => 'Email',
'id' => 'ID',
'isDeleted' => 'Is Deleted',
'moduleTitle' => 'Suppliers',
'nombre' => 'Name',
'paisId' => 'Country',
'personaContacto' => 'Contact Person',
'propiedades' => 'Properties',
'proveedor' => 'Supplier',
'proveedorList' => 'Suppliers List',
'proveedores' => 'Suppliers',
'provinciaId' => 'Region',
'razonSocial' => 'Business Name',
'telefono' => 'Phone',
'tipoId' => 'Type',
'updatedAt' => 'Updated At',
'validation' => [
'cif' => [
'max_length' => 'The {field} field cannot exceed {param} characters in length.',
],
'ciudad' => [
'max_length' => 'The {field} field cannot exceed {param} characters in length.',
],
'cp' => [
'max_length' => 'The {field} field cannot exceed {param} characters in length.',
],
'direccion' => [
'max_length' => 'The {field} field cannot exceed {param} characters in length.',
],
'persona_contacto' => [
'max_length' => 'The {field} field cannot exceed {param} characters in length.',
],
'razon_social' => [
'max_length' => 'The {field} field cannot exceed {param} characters in length.',
],
'telefono' => [
'max_length' => 'The {field} field cannot exceed {param} characters in length.',
],
'email' => [
'max_length' => 'The {field} field cannot exceed {param} characters in length.',
'valid_email' => 'The {field} field must contain a valid email address.',
],
'nombre' => [
'max_length' => 'The {field} field cannot exceed {param} characters in length.',
'required' => 'The {field} field is required.',
],
'tipo' => [
'required' => 'The {field} field is required.',
],
],
];

View File

@ -0,0 +1,84 @@
<?php
return [
'cif' => 'CIF',
'ciudad' => 'Ciudad',
'cp' => 'Código Postal',
'createdAt' => 'Created At',
'deletedAt' => 'Deleted At',
'direccion' => 'Direccion',
'email' => 'Email',
'id' => 'ID',
'isDeleted' => 'Is Deleted',
'moduleTitle' => 'Proveedores',
'nombre' => 'Nombre',
'paisId' => 'País',
'personaContacto' => 'Persona Contacto',
'propiedades' => 'Propiedades',
'proveedor' => 'Proveedor',
'proveedorList' => 'Lista de Proveedores',
'proveedores' => 'Proveedores',
'provinciaId' => 'Provincia',
'razonSocial' => 'Razón Social',
'telefono' => 'Teléfono',
'tipoId' => 'Tipo',
'updatedAt' => 'Updated At',
'validation' => [
'cif' => [
'max_length' => 'El campo {field} no puede exceder de {param} caracteres en longitud.',
],
'ciudad' => [
'max_length' => 'El campo {field} no puede exceder de {param} caracteres en longitud.',
],
'cp' => [
'max_length' => 'El campo {field} no puede exceder de {param} caracteres en longitud.',
],
'direccion' => [
'max_length' => 'El campo {field} no puede exceder de {param} caracteres en longitud.',
],
'persona_contacto' => [
'max_length' => 'El campo {field} no puede exceder de {param} caracteres en longitud.',
],
'razon_social' => [
'max_length' => 'El campo {field} no puede exceder de {param} caracteres en longitud.',
],
'telefono' => [
'max_length' => 'El campo {field} no puede exceder de {param} caracteres en longitud.',
],
'email' => [
'max_length' => 'El campo {field} no puede exceder de {param} caracteres en longitud.',
'valid_email' => 'El campo {field} debe contener una dirección de correo válida.',
],
'nombre' => [
'max_length' => 'El campo {field} no puede exceder de {param} caracteres en longitud.',
'required' => 'El campo {field} es obligatorio.',
],
'tipo' => [
'required' => 'El campo {field} es obligatorio.',
],
],
];

View File

@ -1,5 +1,5 @@
<?php
namespace App\Models\compras;
namespace App\Models\Compras;
class ProveedorModel extends \App\Models\GoBaseModel
{
@ -13,22 +13,9 @@ class ProveedorModel extends \App\Models\GoBaseModel
protected $useAutoIncrement = true;
const SORTABLE = [
1 => "t1.id",
2 => "t1.nombre",
3 => "t1.tipo_id",
4 => "t1.razon_social",
5 => "t1.cif",
6 => "t1.direccion",
7 => "t1.cp",
8 => "t1.ciudad",
9 => "t1.provincia_id",
10 => "t1.pais_id",
11 => "t1.persona_contacto",
12 => "t1.email",
13 => "t1.telefono",
14 => "t2.nombre",
15 => "t3.nombre",
16 => "t4.nombre",
0 => "t1.nombre",
1 => "t2.nombre",
];
protected $allowedFields = [
@ -45,7 +32,7 @@ class ProveedorModel extends \App\Models\GoBaseModel
"email",
"telefono",
];
protected $returnType = "App\Entities\compras\ProveedorEntity";
protected $returnType = "App\Entities\Compras\ProveedorEntity";
protected $useTimestamps = true;
protected $useSoftDeletes = false;
@ -58,72 +45,79 @@ class ProveedorModel extends \App\Models\GoBaseModel
protected $validationRules = [
"cif" => [
"label" => "LgProveedores.cif",
"label" => "Proveedores.cif",
"rules" => "trim|max_length[15]",
],
"tipo_id" => [
"label" => "Proveedores.tipoId",
"rules" => "required",
],
"ciudad" => [
"label" => "LgProveedores.ciudad",
"label" => "Proveedores.ciudad",
"rules" => "trim|max_length[255]",
],
"cp" => [
"label" => "LgProveedores.cp",
"label" => "Proveedores.cp",
"rules" => "trim|max_length[10]",
],
"direccion" => [
"label" => "LgProveedores.direccion",
"label" => "Proveedores.direccion",
"rules" => "trim|max_length[255]",
],
"email" => [
"label" => "LgProveedores.email",
"label" => "Proveedores.email",
"rules" => "trim|max_length[255]|valid_email|permit_empty",
],
"nombre" => [
"label" => "LgProveedores.nombre",
"label" => "Proveedores.nombre",
"rules" => "trim|required|max_length[255]",
],
"persona_contacto" => [
"label" => "LgProveedores.personaContacto",
"label" => "Proveedores.personaContacto",
"rules" => "trim|max_length[255]",
],
"razon_social" => [
"label" => "LgProveedores.razonSocial",
"label" => "Proveedores.razonSocial",
"rules" => "trim|max_length[255]",
],
"telefono" => [
"label" => "LgProveedores.telefono",
"label" => "Proveedores.telefono",
"rules" => "trim|max_length[60]",
],
];
protected $validationMessages = [
"cif" => [
"max_length" => "LgProveedores.validation.cif.max_length",
"max_length" => "Proveedores.validation.cif.max_length",
],
"ciudad" => [
"max_length" => "LgProveedores.validation.ciudad.max_length",
"max_length" => "Proveedores.validation.ciudad.max_length",
],
"cp" => [
"max_length" => "LgProveedores.validation.cp.max_length",
"max_length" => "Proveedores.validation.cp.max_length",
],
"direccion" => [
"max_length" => "LgProveedores.validation.direccion.max_length",
"max_length" => "Proveedores.validation.direccion.max_length",
],
"email" => [
"max_length" => "LgProveedores.validation.email.max_length",
"valid_email" => "LgProveedores.validation.email.valid_email",
"max_length" => "Proveedores.validation.email.max_length",
"valid_email" => "Proveedores.validation.email.valid_email",
],
"nombre" => [
"max_length" => "LgProveedores.validation.nombre.max_length",
"required" => "LgProveedores.validation.nombre.required",
"max_length" => "Proveedores.validation.nombre.max_length",
"required" => "Proveedores.validation.nombre.required",
],
"tipo_id" => [
"required" => "Proveedores.validation.tipo.required",
],
"persona_contacto" => [
"max_length" => "LgProveedores.validation.persona_contacto.max_length",
"max_length" => "Proveedores.validation.persona_contacto.max_length",
],
"razon_social" => [
"max_length" => "LgProveedores.validation.razon_social.max_length",
"max_length" => "Proveedores.validation.razon_social.max_length",
],
"telefono" => [
"max_length" => "LgProveedores.validation.telefono.max_length",
"max_length" => "Proveedores.validation.telefono.max_length",
],
];
public function findAllWithAllRelations(string $selcols = "*", int $limit = null, int $offset = 0)

View File

@ -1,5 +1,5 @@
<?php
namespace App\Models\compras;
namespace App\Models\Compras;
class ProveedorTipoModel extends \App\Models\GoBaseModel
{
@ -20,7 +20,7 @@ class ProveedorTipoModel extends \App\Models\GoBaseModel
];
protected $allowedFields = ["nombre"];
protected $returnType = "App\Entities\compras\ProveedorTipoEntity";
protected $returnType = "App\Entities\Compras\ProveedorTipoEntity";
protected $useTimestamps = true;
protected $useSoftDeletes = false;

View File

@ -2,38 +2,38 @@
<div class="col-md-12 col-lg-6 px-4">
<div class="mb-3">
<label for="nombre" class="form-label">
<?=lang('LgProveedores.nombre') ?>*
<?=lang('Proveedores.nombre') ?>*
</label>
<input type="text" id="nombre" name="nombre" required maxLength="255" class="form-control" value="<?=old('nombre', $proveedorEntity->nombre) ?>">
<input type="text" id="nombre" name="nombre" tabindex="1" maxLength="255" class="form-control" value="<?=old('nombre', $proveedorEntity->nombre) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="razonSocial" class="form-label">
<?=lang('LgProveedores.razonSocial') ?>
<?=lang('Proveedores.razonSocial') ?>
</label>
<input type="text" id="razonSocial" name="razon_social" maxLength="255" class="form-control" value="<?=old('razon_social', $proveedorEntity->razon_social) ?>">
<input type="text" id="razonSocial" name="razon_social" tabindex="3" maxLength="255" class="form-control" value="<?=old('razon_social', $proveedorEntity->razon_social) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="direccion" class="form-label">
<?=lang('LgProveedores.direccion') ?>
<?=lang('Proveedores.direccion') ?>
</label>
<input type="text" id="direccion" name="direccion" maxLength="255" class="form-control" value="<?=old('direccion', $proveedorEntity->direccion) ?>">
<input type="text" id="direccion" name="direccion" tabindex="5" maxLength="255" class="form-control" value="<?=old('direccion', $proveedorEntity->direccion) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="ciudad" class="form-label">
<?=lang('LgProveedores.ciudad') ?>
<?=lang('Proveedores.ciudad') ?>
</label>
<input type="text" id="ciudad" name="ciudad" maxLength="255" class="form-control" value="<?=old('ciudad', $proveedorEntity->ciudad) ?>">
<input type="text" id="ciudad" name="ciudad" tabindex="7" maxLength="255" class="form-control" value="<?=old('ciudad', $proveedorEntity->ciudad) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="paisId" class="form-label">
<?=lang('LgProveedores.paisId') ?>*
<?=lang('Proveedores.paisId') ?>
</label>
<select id="paisId" name="pais_id" required class="form-control select2bs" style="width: 100%;" >
<option value=""><?=lang('Basic.global.pleaseSelectA', [lang('LgProveedores.paisId')]) ?></option>
<select id="paisId" name="pais_id" tabindex="9" class="form-control select2bs" style="width: 100%;" >
<option value=""><?=lang('Basic.global.pleaseSelectA', [lang('Proveedores.paisId')]) ?></option>
<?php foreach ($paisList as $item) : ?>
<option value="<?=$item->id ?>"<?=$item->id==$proveedorEntity->pais_id ? ' selected':'' ?>>
@ -45,18 +45,18 @@
<div class="mb-3">
<label for="email" class="form-label">
<?=lang('LgProveedores.email') ?>
<?=lang('Proveedores.email') ?>
</label>
<input type="email" id="email" name="email" maxLength="255" class="form-control" value="<?=old('email', $proveedorEntity->email) ?>">
<input type="email" id="email" name="email" tabindex="11" maxLength="255" class="form-control" value="<?=old('email', $proveedorEntity->email) ?>">
</div><!--//.mb-3 -->
</div><!--//.col -->
<div class="col-md-12 col-lg-6 px-4">
<div class="mb-3">
<label for="tipoId" class="form-label">
<?=lang('LgProveedores.tipoId') ?>
<?=lang('Proveedores.tipoId') ?>*
</label>
<select id="tipoId" name="tipo_id" class="form-control select2bs2" style="width: 100%;" >
<select id="tipoId" name="tipo_id" tabindex="2" class="form-control select2bs2" style="width: 100%;" >
<?php if ( isset($proveedorTipoList) && is_array($proveedorTipoList) && !empty($proveedorTipoList) ) :
foreach ($proveedorTipoList as $k => $v) : ?>
@ -70,23 +70,23 @@
<div class="mb-3">
<label for="cif" class="form-label">
<?=lang('LgProveedores.cif') ?>
<?=lang('Proveedores.cif') ?>
</label>
<input type="text" id="cif" name="cif" maxLength="15" class="form-control" value="<?=old('cif', $proveedorEntity->cif) ?>">
<input type="text" id="cif" name="cif" tabindex="4" maxLength="15" class="form-control" value="<?=old('cif', $proveedorEntity->cif) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="cp" class="form-label">
<?=lang('LgProveedores.cp') ?>
<?=lang('Proveedores.cp') ?>
</label>
<input type="text" id="cp" name="cp" maxLength="10" class="form-control" value="<?=old('cp', $proveedorEntity->cp) ?>">
<input type="text" id="cp" name="cp" tabindex="6" maxLength="10" class="form-control" value="<?=old('cp', $proveedorEntity->cp) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="provinciaId" class="form-label">
<?=lang('LgProveedores.provinciaId') ?>*
<?=lang('Proveedores.provinciaId') ?>
</label>
<select id="provinciaId" name="provincia_id" required class="form-control select2bs2" style="width: 100%;" >
<select id="provinciaId" name="provincia_id" tabindex="8" class="form-control select2bs2" style="width: 100%;" >
<?php if ( isset($provinciaList) && is_array($provinciaList) && !empty($provinciaList) ) :
foreach ($provinciaList as $k => $v) : ?>
@ -100,16 +100,16 @@
<div class="mb-3">
<label for="personaContacto" class="form-label">
<?=lang('LgProveedores.personaContacto') ?>
<?=lang('Proveedores.personaContacto') ?>
</label>
<input type="text" id="personaContacto" name="persona_contacto" maxLength="255" class="form-control" value="<?=old('persona_contacto', $proveedorEntity->persona_contacto) ?>">
<input type="text" id="personaContacto" name="persona_contacto" tabindex="10" maxLength="255" class="form-control" value="<?=old('persona_contacto', $proveedorEntity->persona_contacto) ?>">
</div><!--//.mb-3 -->
<div class="mb-3">
<label for="telefono" class="form-label">
<?=lang('LgProveedores.telefono') ?>
<?=lang('Proveedores.telefono') ?>
</label>
<input type="text" id="telefono" name="telefono" maxLength="60" class="form-control" value="<?=old('telefono', $proveedorEntity->telefono) ?>">
<input type="text" id="telefono" name="telefono" tabindex="12" maxLength="60" class="form-control" value="<?=old('telefono', $proveedorEntity->telefono) ?>">
</div><!--//.mb-3 -->
</div><!--//.col -->

View File

@ -1,6 +1,6 @@
<?= $this->include("Themes/_commonPartialsBs/select2bs5") ?>
<?= $this->include("Themes/_commonPartialsBs/sweetalert") ?>
<?= $this->extend("Themes/" . config("Basics")->theme["name"] . "/AdminLayout/defaultLayout") ?>
<?= $this->include("themes/_commonPartialsBs/select2bs5") ?>
<?= $this->include("themes/_commonPartialsBs/sweetalert") ?>
<?= $this->extend('themes/backend/vuexy/main/defaultlayout') ?>
<?= $this->section("content") ?>
<div class="row">
<div class="col-12">
@ -11,14 +11,20 @@
<form id="proveedorForm" method="post" action="<?= $formAction ?>">
<?= csrf_field() ?>
<div class="card-body">
<?= view("Themes/_commonPartialsBs/_alertBoxes") ?>
<?= view("themes/_commonPartialsBs/_alertBoxes") ?>
<?= !empty($validation->getErrors()) ? $validation->listErrors("bootstrap_style") : "" ?>
<?= view("themes/backend/vuexy/form/compras/proveedores/_proveedorFormItems") ?>
</div><!-- /.card-body -->
<div class="card-footer">
<div class="pt-4">
<input type="submit"
class="btn btn-primary float-start me-sm-3 me-1"
name="save"
value="<?= lang("Basic.global.Save") ?>"
/>
<?= anchor(route_to("proveedorList"), lang("Basic.global.Cancel"), ["class" => "btn btn-secondary float-start"]) ?>
<input type="submit" class="btn btn-primary float-end" name="save" value="<?= lang("Basic.global.Save") ?>">
</div><!-- /.card-footer -->
</form>
</div><!-- //.card -->
</div><!--//.col -->
@ -30,7 +36,6 @@
$('#tipoId').select2({
theme: 'bootstrap-5',
allowClear: false,
ajax: {
url: '<?= route_to("menuItemsOfProveedoresTipos") ?>',
@ -60,7 +65,6 @@
});
$('#provinciaId').select2({
theme: 'bootstrap-5',
allowClear: false,
ajax: {
url: '<?= route_to("menuItemsOfProvincias") ?>',

View File

@ -1,35 +1,24 @@
<?=$this->include('Themes/_commonPartialsBs/select2bs5') ?>
<?=$this->include('Themes/_commonPartialsBs/datatables') ?>
<?=$this->include('Themes/_commonPartialsBs/sweetalert') ?>
<?=$this->extend('Themes/'.config('Basics')->theme['name'].'/AdminLayout/defaultLayout') ?>
<?=$this->include('themes/_commonPartialsBs/select2bs5') ?>
<?=$this->include('themes/_commonPartialsBs/datatables') ?>
<?= $this->include('themes/_commonPartialsBs/_confirm2delete') ?>
<?= $this->extend('themes/backend/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('LgProveedores.proveedorList') ?></h3>
<h3 class="card-title"><?=lang('Proveedores.proveedorList') ?></h3>
<?=anchor(route_to('newProveedor'), lang('Basic.global.addNew').' '.lang('Proveedores.proveedor'), ['class'=>'btn btn-primary float-end']); ?>
</div><!--//.card-header -->
<div class="card-body">
<?= view('Themes/_commonPartialsBs/_alertBoxes'); ?>
<?= view('themes/_commonPartialsBs/_alertBoxes'); ?>
<table id="tableOfProveedores" class="table table-striped table-hover" style="width: 100%;">
<thead>
<tr>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
<th><?=lang('LgProveedores.id')?></th>
<th><?= lang('LgProveedores.nombre') ?></th>
<th><?= lang('LgProveedoresTipos.proveedorTipo') ?></th>
<th><?= lang('LgProveedores.razonSocial') ?></th>
<th><?= lang('LgProveedores.cif') ?></th>
<th><?= lang('LgProveedores.direccion') ?></th>
<th><?= lang('LgProveedores.cp') ?></th>
<th><?= lang('LgProveedores.ciudad') ?></th>
<th><?= lang('Provincias.provincia') ?></th>
<th><?= lang('Paises.pais') ?></th>
<th><?= lang('LgProveedores.personaContacto') ?></th>
<th><?= lang('LgProveedores.email') ?></th>
<th><?= lang('LgProveedores.telefono') ?></th>
<th><?= lang('Proveedores.nombre') ?></th>
<th><?= lang('Proveedores.tipoId') ?></th>
<th class="text-nowrap"><?= lang('Basic.global.Action') ?></th>
</tr>
</thead>
@ -39,7 +28,7 @@
</table>
</div><!--//.card-body -->
<div class="card-footer">
<?=anchor(route_to('newProveedor'), lang('Basic.global.addNew').' '.lang('LgProveedores.proveedor'), ['class'=>'btn btn-primary float-end']); ?>
</div><!--//.card-footer -->
</div><!--//.card -->
</div><!--//.col -->
@ -52,10 +41,11 @@
const lastColNr = $('#tableOfProveedores').find("tr:first th").length - 1;
const actionBtns = function(data) {
return `<td class="text-right py-0 align-middle">
return `
<td class="text-right py-0 align-middle">
<div class="btn-group btn-group-sm">
<button class="btn btn-sm btn-warning btn-edit me-1" data-id="${data.id}"><?= lang('Basic.global.edit') ?></button>
<button class="btn btn-sm btn-danger btn-delete ms-1" data-id="${data.id}"><?= lang('Basic.global.Delete') ?></button>
<a href="javascript:void(0);"><i class="ti ti-pencil ti-sm btn-edit mx-2" data-id="${data.id}"></i></a>
<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete mx-2" data-id="${data.id}" data-bs-toggle="modal" data-bs-target="#confirm2delete"></i></a>
</div>
</td>`;
};
@ -66,10 +56,9 @@
responsive: true,
scrollX: true,
lengthMenu: [ 5, 10, 25, 50, 75, 100, 250, 500, 1000, 2500 ],
pageLength: 10,
pageLength: 25,
lengthChange: true,
"dom": 'lfrtipB', // 'lfBrtip', // you can try different layout combinations by uncommenting one or the other
// "dom": '<"top"lf><"clear">rt<"bottom"ipB><"clear">', // remember to comment this line if you uncomment the above
"dom": 'lfBrtip',
"buttons": [
'copy', 'csv', 'excel', 'print', {
extend: 'pdfHtml5',
@ -78,9 +67,9 @@
}
],
stateSave: true,
order: [[1, 'asc']],
order: [[0, 'asc']],
language: {
url: "/assets/dt/<?= config('Basics')->languages[$currentLocale] ?? config('Basics')->i18n ?>.json"
url: "//cdn.datatables.net/plug-ins/1.13.4/i18n/<?= config('Basics')->i18n ?>.json"
},
ajax : $.fn.dataTable.pipeline( {
url: '<?= route_to('dataTableOfProveedores') ?>',
@ -92,73 +81,43 @@
{
orderable: false,
searchable: false,
targets: [0,lastColNr]
targets: [lastColNr]
}
],
columns : [
{ 'data': actionBtns },
{ 'data': 'id' },
{ 'data': 'nombre' },
{ 'data': 'tipo' },
{ 'data': 'razon_social' },
{ 'data': 'cif' },
{ 'data': 'direccion' },
{ 'data': 'cp' },
{ 'data': 'ciudad' },
{ 'data': 'provincia' },
{ 'data': 'pais' },
{ 'data': 'persona_contacto' },
{ 'data': 'email' },
{ 'data': 'telefono' },
{ 'data': actionBtns }
]
});
$(document).on('click', '.btn-edit', function(e) {
window.location.href = `<?= route_to('proveedorList') ?>/${$(this).attr('data-id')}/edit`;
$(document).on('click', '.btn-edit', function(e) {
window.location.href = `/compras/proveedores/edit/${$(this).attr('data-id')}`;
});
$(document).on('click', '.btn-delete', function(e) {
Swal.fire({
title: '<?= lang('Basic.global.sweet.sureToDeleteTitle', [mb_strtolower(lang('LgProveedores.proveedor'))]) ?>',
text: '<?= lang('Basic.global.sweet.sureToDeleteText') ?>',
icon: 'warning',
showCancelButton: true,
confirmButtonColor: '#3085d6',
confirmButtonText: '<?= lang('Basic.global.sweet.deleteConfirmationButton') ?>',
cancelButtonText: '<?= lang('Basic.global.Cancel') ?>',
cancelButtonColor: '#d33'
})
.then((result) => {
const dataId = $(this).data('id');
$(document).on('click', '.btn-delete', function(e) {
$(".btn-remove").attr('data-id', $(this).attr('data-id'));
});
$(document).on('click', '.btn-remove', function(e) {
const dataId = $(this).attr('data-id');
const row = $(this).closest('tr');
if (result.value) {
if ($.isNumeric(dataId)) {
$.ajax({
url: `<?= route_to('proveedorList') ?>/${dataId}`,
method: 'DELETE',
url: `/compras/proveedores/delete/${dataId}`,
method: 'GET',
}).done((data, textStatus, jqXHR) => {
Toast.fire({
icon: 'success',
title: data.msg ?? jqXHR.statusText,
});
$('#confirm2delete').modal('toggle');
theTable.clearPipeline();
theTable.row($(row)).invalidate().draw();
popSuccessAlert(data.msg ?? jqXHR.statusText);
}).fail((jqXHR, textStatus, errorThrown) => {
Toast.fire({
icon: 'error',
title: jqXHR.responseJSON.messages.error,
});
popErrorAlert(jqXHR.responseJSON.messages.error)
})
}
});
});
<?=$this->endSection() ?>

View File

@ -4,7 +4,7 @@
<label for="nombre" class="form-label">
<?= lang('Tarifaacabado.nombre') ?>*
</label>
<input type="text" id="nombre" name="nombre" required maxLength="255" class="form-control"
<input type="text" id="nombre" name="nombre" maxLength="255" class="form-control"
value="<?= old('nombre', $tarifaacabadoEntity->nombre) ?>">
</div><!--//.mb-3 -->
@ -12,7 +12,7 @@
<label for="nombre" class="form-label">
<?= lang('Tarifaacabado.precioMin') ?>*
</label>
<input type="text" id="precio_min" name="precio_min" required class="form-control"
<input type="text" id="precio_min" name="precio_min" class="form-control"
value="<?= old('precio_min', $tarifaacabadoEntity->precio_min) ?>">
</div><!--//.mb-3 -->
@ -20,7 +20,7 @@
<label for="nombre" class="form-label">
<?= lang('Tarifaacabado.importeFijo') ?>*
</label>
<input type="text" id="importe_fijo" name="importe_fijo" required class="form-control"
<input type="text" id="importe_fijo" name="importe_fijo" class="form-control"
value="<?= old('importe_fijo', $tarifaacabadoEntity->importe_fijo) ?>">
</div><!--//.mb-3 -->

View File

@ -388,10 +388,10 @@
/**
* MENU PROVEEDORES
*/
if (count(getArrayItem($menus, 'name', 'Proveedor')) > 0): ?>
if (count(getArrayItem($menus, 'name', 'Proveedores')) > 0): ?>
<!-- Providers -->
<li class="menu-item">
<a href="<?= site_url("proveedores/proveedor") ?>" class="menu-link">
<a href="<?= site_url("compras/proveedores") ?>" class="menu-link">
<i class="menu-icon tf-icons ti ti-file-dollar"></i>
<div data-i18n="<?= lang("App.menu_proveedores") ?>"><?= lang("App.menu_proveedores") ?></div>
</a>

View File

@ -407,7 +407,7 @@
* MENU COMPRAS
*/
if (allowMenuSection($menus,
['Compras', 'Productos', 'Proveedor'], 'index')): ?>
['Compras', 'Productos', 'Proveedores'], 'index')): ?>
<!-- BUY -->
<li class="menu-item">
<a href="javascript:void(0);" class="menu-link menu-toggle">
@ -436,7 +436,7 @@
<?php if (count($temp = getArrayItem($menus, 'name', 'Proveedor')) > 0): ?>
<?php if (count(getArrayItem($temp, 'methods', 'index', true)) > 0): ?>
<li class="menu-item">
<a href="<?= site_url("servicios/proveedor") ?>" class="menu-link">
<a href="<?= site_url("compras/proveedores") ?>" class="menu-link">
<div data-i18n="<?= lang("App.menu_proveedores") ?>"><?= lang("App.menu_proveedores") ?></div>
</a>
</li>