mirror of
https://git.imnavajas.es/jjimenez/safekat.git
synced 2025-07-25 22:52:08 +00:00
Merge branch 'feat/proveedor_tarifas_manipulado' into 'main'
Feat/proveedor tarifas manipulado See merge request jjimenez/safekat!311
This commit is contained in:
@ -590,6 +590,7 @@ $routes->resource('presupuestocliente', ['namespace' => 'App\Controllers\Presupu
|
|||||||
|
|
||||||
$routes->group('serviciosacabados', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
|
$routes->group('serviciosacabados', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
|
||||||
$routes->post('datatable', 'Presupuestoacabados::datatable', ['as' => 'dataTableOfPresupuestoAcabados']);
|
$routes->post('datatable', 'Presupuestoacabados::datatable', ['as' => 'dataTableOfPresupuestoAcabados']);
|
||||||
|
$routes->post('menuitems', 'Presupuestoacabados::menuItems', ['as' => 'menuItemsOfPresupuestoAcabados']);
|
||||||
$routes->post('edit/(:num)', 'Presupuestoacabados::edit/$1', ['as' => 'updatePresupuestoacabados']);
|
$routes->post('edit/(:num)', 'Presupuestoacabados::edit/$1', ['as' => 'updatePresupuestoacabados']);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -99,12 +99,13 @@ class Presupuestoacabados extends \App\Controllers\BaseResourceController
|
|||||||
|
|
||||||
$tarifa_acabado_id = $reqData['tarifa_acabado_id'] ?? 0;
|
$tarifa_acabado_id = $reqData['tarifa_acabado_id'] ?? 0;
|
||||||
$tirada = $reqData['tirada'] ?? 0;
|
$tirada = $reqData['tirada'] ?? 0;
|
||||||
|
$proveedor_id = $reqData['proveedor_id'] ?? -1;
|
||||||
$POD = $reqData['POD'] ?? 0;
|
$POD = $reqData['POD'] ?? 0;
|
||||||
|
|
||||||
$newTokenHash = csrf_hash();
|
$newTokenHash = csrf_hash();
|
||||||
$csrfTokenName = csrf_token();
|
$csrfTokenName = csrf_token();
|
||||||
|
|
||||||
$values = $this->model->getPrecioTarifa($tarifa_acabado_id, $tirada, $POD);
|
$values = $this->model->getPrecioTarifa($tarifa_acabado_id, $tirada, $proveedor_id, $POD);
|
||||||
|
|
||||||
$data = [
|
$data = [
|
||||||
'values' => $values,
|
'values' => $values,
|
||||||
@ -119,4 +120,39 @@ class Presupuestoacabados extends \App\Controllers\BaseResourceController
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function menuItems()
|
||||||
|
{
|
||||||
|
if ($this->request->isAJAX()) {
|
||||||
|
|
||||||
|
$reqData = $this->request->getPost();
|
||||||
|
try{
|
||||||
|
|
||||||
|
$tarifa_id = $reqData['tarifa_id'] ?? -1;
|
||||||
|
$tirada = $reqData['tirada'] ?? 0;
|
||||||
|
|
||||||
|
$newTokenHash = csrf_hash();
|
||||||
|
$csrfTokenName = csrf_token();
|
||||||
|
|
||||||
|
$menu = $this->model->getProveedoresForSelector($tarifa_id, $tirada);
|
||||||
|
|
||||||
|
$data = [
|
||||||
|
'menu' => $menu,
|
||||||
|
$csrfTokenName => $newTokenHash
|
||||||
|
];
|
||||||
|
|
||||||
|
}
|
||||||
|
catch(Exception $e){
|
||||||
|
$data = [
|
||||||
|
'error' => $e,
|
||||||
|
$csrfTokenName => $newTokenHash
|
||||||
|
];
|
||||||
|
}
|
||||||
|
finally{
|
||||||
|
return $this->respond($data);
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
return $this->failUnauthorized('Invalid request', 403);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,10 @@ use App\Entities\Tarifas\Acabados\TarifaAcabadoEntity;
|
|||||||
use App\Models\Collection;
|
use App\Models\Collection;
|
||||||
use App\Models\Tarifas\Acabados\TarifaAcabadoModel;
|
use App\Models\Tarifas\Acabados\TarifaAcabadoModel;
|
||||||
|
|
||||||
|
use App\Models\Compras\ProveedorModel;
|
||||||
|
use App\Models\Compras\ProveedorTipoModel;
|
||||||
|
|
||||||
|
|
||||||
class TarifaAcabados extends BaseResourceController
|
class TarifaAcabados extends BaseResourceController
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -217,6 +221,7 @@ class TarifaAcabados extends BaseResourceController
|
|||||||
endif; // ($requestMethod === 'post')
|
endif; // ($requestMethod === 'post')
|
||||||
|
|
||||||
$this->viewData['tarifaacabadoEntity'] = $tarifaacabadoEntity;
|
$this->viewData['tarifaacabadoEntity'] = $tarifaacabadoEntity;
|
||||||
|
$this->viewData['proveedores'] = $this->getProveedores();
|
||||||
|
|
||||||
$this->viewData['formAction'] = route_to('updateTarifaAcabado', $id);
|
$this->viewData['formAction'] = route_to('updateTarifaAcabado', $id);
|
||||||
|
|
||||||
@ -305,4 +310,12 @@ class TarifaAcabados extends BaseResourceController
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function getProveedores(){
|
||||||
|
$provTipoModel = new ProveedorTipoModel();
|
||||||
|
$provModel = new ProveedorModel();
|
||||||
|
|
||||||
|
$tipoId = $provTipoModel->getTipoId("Acabados");
|
||||||
|
return $provModel->getProvList($tipoId);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -213,13 +213,14 @@ class TarifaAcabadosLineas extends \App\Controllers\BaseResourceController
|
|||||||
|
|
||||||
$id_TA = $reqData['id_tarifaacabado'] ?? -1;
|
$id_TA = $reqData['id_tarifaacabado'] ?? -1;
|
||||||
|
|
||||||
|
$searchValues = get_filter_datatables_columns($reqData);
|
||||||
|
|
||||||
$resourceData = $this->model->getResource("", $id_TA)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject();
|
$resourceData = $this->model->getResource($searchValues, $id_TA)->orderBy($order, $dir)->limit($length, $start)->get()->getResultObject();
|
||||||
|
|
||||||
return $this->respond(Collection::datatable(
|
return $this->respond(Collection::datatable(
|
||||||
$resourceData,
|
$resourceData,
|
||||||
$this->model->getResource()->countAllResults(),
|
$this->model->getResource()->countAllResults(),
|
||||||
$this->model->getResource($search, $id_TA)->countAllResults()
|
$this->model->getResource($searchValues, $id_TA)->countAllResults()
|
||||||
));
|
));
|
||||||
} else {
|
} else {
|
||||||
return $this->failUnauthorized('Invalid request', 403);
|
return $this->failUnauthorized('Invalid request', 403);
|
||||||
@ -280,6 +281,7 @@ class TarifaAcabadosLineas extends \App\Controllers\BaseResourceController
|
|||||||
->validator('Validate::notEmpty', array(
|
->validator('Validate::notEmpty', array(
|
||||||
'message' => lang('TarifaAcabadoLineas.validation.margen.required'))
|
'message' => lang('TarifaAcabadoLineas.validation.margen.required'))
|
||||||
),
|
),
|
||||||
|
Field::inst('proveedor_id'),
|
||||||
Field::inst('tarifa_acabado_id'),
|
Field::inst('tarifa_acabado_id'),
|
||||||
Field::inst('user_created_id'),
|
Field::inst('user_created_id'),
|
||||||
Field::inst('created_at'),
|
Field::inst('created_at'),
|
||||||
@ -297,6 +299,7 @@ class TarifaAcabadosLineas extends \App\Controllers\BaseResourceController
|
|||||||
|
|
||||||
$process_data['tirada_min'] = $data['data'][$pkey]['tirada_min'];
|
$process_data['tirada_min'] = $data['data'][$pkey]['tirada_min'];
|
||||||
$process_data['tirada_max'] = $data['data'][$pkey]['tirada_max'];
|
$process_data['tirada_max'] = $data['data'][$pkey]['tirada_max'];
|
||||||
|
$process_data['proveedor_id'] = $data['data'][$pkey]['proveedor_id'];
|
||||||
$response = $this->model->checkIntervals($process_data, $pkey, $data['data'][$pkey]['tarifa_acabado_id']);
|
$response = $this->model->checkIntervals($process_data, $pkey, $data['data'][$pkey]['tarifa_acabado_id']);
|
||||||
// No se pueden duplicar valores al crear o al editar
|
// No se pueden duplicar valores al crear o al editar
|
||||||
if (!empty($response)) {
|
if (!empty($response)) {
|
||||||
|
|||||||
@ -9,6 +9,7 @@ class PresupuestoAcabadosEntity extends \CodeIgniter\Entity\Entity
|
|||||||
"id" => null,
|
"id" => null,
|
||||||
"presupuesto_id" => null,
|
"presupuesto_id" => null,
|
||||||
"tarifa_acabado_id" => null,
|
"tarifa_acabado_id" => null,
|
||||||
|
"proveedor_id" => null,
|
||||||
"precio_unidad" => null,
|
"precio_unidad" => null,
|
||||||
"precio_total" => null,
|
"precio_total" => null,
|
||||||
"margen" => null,
|
"margen" => null,
|
||||||
@ -20,6 +21,7 @@ class PresupuestoAcabadosEntity extends \CodeIgniter\Entity\Entity
|
|||||||
protected $casts = [
|
protected $casts = [
|
||||||
"presupuesto_id" => "int",
|
"presupuesto_id" => "int",
|
||||||
"tarifa_acabado_id" => "int",
|
"tarifa_acabado_id" => "int",
|
||||||
|
"proveedor_id" => "int",
|
||||||
"precio_unidad" => "float",
|
"precio_unidad" => "float",
|
||||||
"precio_total" => "float",
|
"precio_total" => "float",
|
||||||
"margen" => "float",
|
"margen" => "float",
|
||||||
|
|||||||
@ -8,6 +8,7 @@ class TarifaAcabadoLineaEntity extends \CodeIgniter\Entity\Entity
|
|||||||
protected $attributes = [
|
protected $attributes = [
|
||||||
"id" => null,
|
"id" => null,
|
||||||
"tarifa_acabado_id" => 0,
|
"tarifa_acabado_id" => 0,
|
||||||
|
"proveedor_id" => 0,
|
||||||
"tirada_min" => 0,
|
"tirada_min" => 0,
|
||||||
"tirada_max" => 0,
|
"tirada_max" => 0,
|
||||||
"precio_min" => 0,
|
"precio_min" => 0,
|
||||||
@ -21,6 +22,7 @@ class TarifaAcabadoLineaEntity extends \CodeIgniter\Entity\Entity
|
|||||||
];
|
];
|
||||||
protected $casts = [
|
protected $casts = [
|
||||||
"tarifa_acabado_id" => "int",
|
"tarifa_acabado_id" => "int",
|
||||||
|
"proveedor_id" => "int",
|
||||||
"tirada_min" => "int",
|
"tirada_min" => "int",
|
||||||
"tirada_max" => "int",
|
"tirada_max" => "int",
|
||||||
"precio_min" => "float",
|
"precio_min" => "float",
|
||||||
|
|||||||
@ -6,6 +6,7 @@ return [
|
|||||||
'id' => 'ID',
|
'id' => 'ID',
|
||||||
'moduleTitle' => 'Finish rates Lines',
|
'moduleTitle' => 'Finish rates Lines',
|
||||||
'deleteLine' => 'the selected register',
|
'deleteLine' => 'the selected register',
|
||||||
|
'proveedor' => 'Provider',
|
||||||
'precioMax' => 'Max Price',
|
'precioMax' => 'Max Price',
|
||||||
'precioMin' => 'Min Price',
|
'precioMin' => 'Min Price',
|
||||||
'precioUnidad' => 'Price Unit',
|
'precioUnidad' => 'Price Unit',
|
||||||
|
|||||||
@ -6,6 +6,7 @@ return [
|
|||||||
'id' => 'ID',
|
'id' => 'ID',
|
||||||
'moduleTitle' => 'Tarifa Acabado Líneas',
|
'moduleTitle' => 'Tarifa Acabado Líneas',
|
||||||
'deleteLine' => 'el registro seleccionado',
|
'deleteLine' => 'el registro seleccionado',
|
||||||
|
'proveedor' => 'Proveedor',
|
||||||
'precioMax' => 'Precio T. Mín',
|
'precioMax' => 'Precio T. Mín',
|
||||||
'precioMin' => 'Precio T. Máx',
|
'precioMin' => 'Precio T. Máx',
|
||||||
'precioUnidad' => 'Precio Unidad',
|
'precioUnidad' => 'Precio Unidad',
|
||||||
|
|||||||
@ -13,6 +13,7 @@ return [
|
|||||||
'precioMax' => 'Precio T. Mín',
|
'precioMax' => 'Precio T. Mín',
|
||||||
'precioMin' => 'Precio T. Máx',
|
'precioMin' => 'Precio T. Máx',
|
||||||
'importeFijo' => 'Importe Fijo',
|
'importeFijo' => 'Importe Fijo',
|
||||||
|
'importeMin' => 'Importe mínimo',
|
||||||
'tarifaencuadernacion' => 'Tarifa Encuadernación',
|
'tarifaencuadernacion' => 'Tarifa Encuadernación',
|
||||||
'tarifaencuadernacionList' => 'Lista Tarifas Encuadernación',
|
'tarifaencuadernacionList' => 'Lista Tarifas Encuadernación',
|
||||||
'tarifasencuadernacion' => 'Tarifas Encuadernación',
|
'tarifasencuadernacion' => 'Tarifas Encuadernación',
|
||||||
|
|||||||
@ -17,11 +17,12 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
|
|||||||
|
|
||||||
const SORTABLE = [
|
const SORTABLE = [
|
||||||
0 => "t2.nombre",
|
0 => "t2.nombre",
|
||||||
1 => "t1.precio_unidad",
|
1 => "t1.proveedor_id",
|
||||||
2 => "t1.precio_total"
|
2 => "t1.precio_unidad",
|
||||||
|
3 => "t1.precio_total"
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $allowedFields = ["presupuesto_id", "tarifa_acabado_id", "nombre", "precio_total", "precio_unidad", "margen", "cubierta", "sobrecubierta"];
|
protected $allowedFields = ["presupuesto_id", "tarifa_acabado_id", "proveedor_id", "nombre", "precio_total", "precio_unidad", "margen", "cubierta", "sobrecubierta"];
|
||||||
protected $returnType = "App\Entities\Presupuestos\PresupuestoAcabadosEntity";
|
protected $returnType = "App\Entities\Presupuestos\PresupuestoAcabadosEntity";
|
||||||
|
|
||||||
protected $useTimestamps = true;
|
protected $useTimestamps = true;
|
||||||
@ -46,10 +47,29 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
|
|||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
public function getPrecioTarifa($tarifa_acabado_id, $tirada, $POD){
|
|
||||||
|
public function getProveedoresForSelector($tarifa_acabado_id, $tirada){
|
||||||
|
|
||||||
|
$proveedores = [];
|
||||||
|
$modelTarifa = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel');
|
||||||
|
|
||||||
|
$tarifa_value = $modelTarifa->getTarifaPresupuestoAcabado($tarifa_acabado_id, $tirada);
|
||||||
|
|
||||||
|
if (count($tarifa_value)>0) {
|
||||||
|
foreach($tarifa_value as $tarifa)
|
||||||
|
array_push($proveedores,
|
||||||
|
(object)[
|
||||||
|
'id'=> $tarifa->proveedor_id,
|
||||||
|
'text'=> $tarifa->proveedor_nombre,
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
return $proveedores;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getPrecioTarifa($tarifa_acabado_id, $tirada, $proveedor_id, $POD){
|
||||||
|
|
||||||
$modelTarifa = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel');
|
$modelTarifa = model('App\Models\Tarifas\Acabados\TarifaAcabadoModel');
|
||||||
$tarifa_value = $modelTarifa->getTarifaPresupuestoAcabado($tarifa_acabado_id, $tirada);
|
$tarifa_value = $modelTarifa->getTarifaPresupuestoAcabado($tarifa_acabado_id, $tirada, $proveedor_id);
|
||||||
if (count($tarifa_value)>0) {
|
if (count($tarifa_value)>0) {
|
||||||
|
|
||||||
$result_data = $this->calcularTarifa($tarifa_value[0], $tirada, $POD<$tirada?false:true);
|
$result_data = $this->calcularTarifa($tarifa_value[0], $tirada, $POD<$tirada?false:true);
|
||||||
@ -59,6 +79,8 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
|
|||||||
'precio_unidad'=> $result_data[0],
|
'precio_unidad'=> $result_data[0],
|
||||||
'total'=> $result_data[1],
|
'total'=> $result_data[1],
|
||||||
'margen'=> $result_data[2],
|
'margen'=> $result_data[2],
|
||||||
|
'proveedor' => $tarifa_value[0]->proveedor_nombre,
|
||||||
|
'proveedor_id' => $tarifa_value[0]->proveedor_id,
|
||||||
];
|
];
|
||||||
return $ret_array;
|
return $ret_array;
|
||||||
}
|
}
|
||||||
@ -119,6 +141,8 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
|
|||||||
|
|
||||||
foreach($tarifas as $tarifa){
|
foreach($tarifas as $tarifa){
|
||||||
|
|
||||||
|
$proveedor = $tarifa->proveedor_id=='undefined'?'NULL':$tarifa->proveedor_id;
|
||||||
|
|
||||||
$builder = $this->db
|
$builder = $this->db
|
||||||
->table($this->table . " t1");
|
->table($this->table . " t1");
|
||||||
$builder->select("id");
|
$builder->select("id");
|
||||||
@ -132,6 +156,7 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
|
|||||||
->table($this->table . " t1")
|
->table($this->table . " t1")
|
||||||
->where('presupuesto_id', $presupuesto_id)
|
->where('presupuesto_id', $presupuesto_id)
|
||||||
->where('tarifa_acabado_id', $tarifa->tarifa_id)
|
->where('tarifa_acabado_id', $tarifa->tarifa_id)
|
||||||
|
->set('proveedor_id', $proveedor)
|
||||||
->set('precio_unidad', $tarifa->precio_unidad)
|
->set('precio_unidad', $tarifa->precio_unidad)
|
||||||
->set('precio_total', $tarifa->precio_total)
|
->set('precio_total', $tarifa->precio_total)
|
||||||
->set('margen', $tarifa->margen)
|
->set('margen', $tarifa->margen)
|
||||||
@ -146,6 +171,7 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
|
|||||||
->table($this->table . " t1")
|
->table($this->table . " t1")
|
||||||
->set('presupuesto_id', $presupuesto_id)
|
->set('presupuesto_id', $presupuesto_id)
|
||||||
->set('tarifa_acabado_id', $tarifa->tarifa_id)
|
->set('tarifa_acabado_id', $tarifa->tarifa_id)
|
||||||
|
->set('proveedor_id', $proveedor, false)
|
||||||
->set('precio_unidad', $tarifa->precio_unidad)
|
->set('precio_unidad', $tarifa->precio_unidad)
|
||||||
->set('precio_total', $tarifa->precio_total)
|
->set('precio_total', $tarifa->precio_total)
|
||||||
->set('margen', $tarifa->margen)
|
->set('margen', $tarifa->margen)
|
||||||
@ -169,11 +195,13 @@ class PresupuestoAcabadosModel extends \App\Models\BaseModel
|
|||||||
->table($this->table . " t1")
|
->table($this->table . " t1")
|
||||||
->select(
|
->select(
|
||||||
"t1.id AS id, t1.tarifa_acabado_id AS tarifa_acabado_id, t1.precio_unidad AS precio_unidad,
|
"t1.id AS id, t1.tarifa_acabado_id AS tarifa_acabado_id, t1.precio_unidad AS precio_unidad,
|
||||||
t1.precio_total AS precio_total, t1.margen AS margen, t2.nombre AS nombre, t1.cubierta AS cubierta, t1.sobrecubierta AS sobrecubierta"
|
t1.precio_total AS precio_total, t1.margen AS margen, t2.nombre AS nombre, t1.cubierta AS cubierta, t1.sobrecubierta AS sobrecubierta,
|
||||||
|
t1.proveedor_id AS proveedor_id, t3.nombre AS proveedor,"
|
||||||
);
|
);
|
||||||
|
|
||||||
$builder->where('t1.presupuesto_id', $presupuesto_id);
|
$builder->where('t1.presupuesto_id', $presupuesto_id);
|
||||||
$builder->join("lg_tarifa_acabado t2", "t1.tarifa_acabado_id = t2.id", "left");
|
$builder->join("lg_tarifa_acabado t2", "t1.tarifa_acabado_id = t2.id", "left");
|
||||||
|
$builder->join("lg_proveedores t3", "t1.proveedor_id = t3.id", "left");
|
||||||
|
|
||||||
return $builder;
|
return $builder;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Models\Tarifas\Acabados;
|
namespace App\Models\Tarifas\Acabados;
|
||||||
|
|
||||||
|
use function PHPUnit\Framework\isNan;
|
||||||
|
use function PHPUnit\Framework\isNull;
|
||||||
|
|
||||||
class TarifaAcabadoLineaModel extends \App\Models\BaseModel
|
class TarifaAcabadoLineaModel extends \App\Models\BaseModel
|
||||||
{
|
{
|
||||||
protected $table = "tarifa_acabado_lineas";
|
protected $table = "tarifa_acabado_lineas";
|
||||||
@ -13,14 +16,16 @@ class TarifaAcabadoLineaModel extends \App\Models\BaseModel
|
|||||||
protected $useAutoIncrement = true;
|
protected $useAutoIncrement = true;
|
||||||
|
|
||||||
const SORTABLE = [
|
const SORTABLE = [
|
||||||
0 => "t1.tirada_min",
|
0 => "t3.nombre",
|
||||||
1 => "t1.tirada_max",
|
1 => "t1.tirada_min",
|
||||||
2 => "t1.precio_min",
|
2 => "t1.precio_max",
|
||||||
3 => "t1.precio_max",
|
3 => "t1.tirada_max",
|
||||||
4 => "t1.margen",
|
4 => "t1.precio_min",
|
||||||
|
5 => "t1.margen",
|
||||||
];
|
];
|
||||||
|
|
||||||
protected $allowedFields = [
|
protected $allowedFields = [
|
||||||
|
"proveedor_id",
|
||||||
"tirada_min",
|
"tirada_min",
|
||||||
"tirada_max",
|
"tirada_max",
|
||||||
"precio_min",
|
"precio_min",
|
||||||
@ -126,12 +131,12 @@ class TarifaAcabadoLineaModel extends \App\Models\BaseModel
|
|||||||
*
|
*
|
||||||
* @return \CodeIgniter\Database\BaseBuilder
|
* @return \CodeIgniter\Database\BaseBuilder
|
||||||
*/
|
*/
|
||||||
public function getResource(string $search = "", $tarifa_acabado_id = -1)
|
public function getResource($search = [], $tarifa_acabado_id = -1)
|
||||||
{
|
{
|
||||||
$builder = $this->db
|
$builder = $this->db
|
||||||
->table($this->table . " t1")
|
->table($this->table . " t1")
|
||||||
->select(
|
->select(
|
||||||
"t1.id AS id, t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max, t1.margen AS margen, t2.id AS tarifa_acabado"
|
"t1.id AS id, t1.proveedor_id AS proveedor_id, t3.nombre AS proveedor_nombre, t1.tirada_min AS tirada_min, t1.tirada_max AS tirada_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max, t1.margen AS margen, t2.id AS tarifa_acabado"
|
||||||
);
|
);
|
||||||
|
|
||||||
//JJO
|
//JJO
|
||||||
@ -139,21 +144,66 @@ class TarifaAcabadoLineaModel extends \App\Models\BaseModel
|
|||||||
$builder->where("t1.is_deleted", 0);
|
$builder->where("t1.is_deleted", 0);
|
||||||
|
|
||||||
$builder->join("lg_tarifa_acabado t2", "t1.tarifa_acabado_id = t2.id", "left");
|
$builder->join("lg_tarifa_acabado t2", "t1.tarifa_acabado_id = t2.id", "left");
|
||||||
|
$builder->join("lg_proveedores t3", "t1.proveedor_id = t3.id", "left");
|
||||||
|
|
||||||
|
|
||||||
return empty($search)
|
if (empty($search))
|
||||||
? $builder
|
return $builder;
|
||||||
: $builder
|
else {
|
||||||
->groupStart()
|
$filterEnabled = 0;
|
||||||
->like("t1.tirada_min", $search)
|
|
||||||
->orLike("t1.tirada_max", $search)
|
foreach ($search as $col_search) {
|
||||||
->orLike("t1.precio_min", $search)
|
if($col_search[0] != 0){
|
||||||
->orLike("t1.precio_max", $search)
|
if(strlen($col_search[2]) > 1){
|
||||||
->orLike("t1.tirada_min", $search)
|
$values = explode(",",$col_search[2]);
|
||||||
->orLike("t1.tirada_max", $search)
|
$min_val = floatval($values[0]);
|
||||||
->orLike("t1.precio_min", $search)
|
$max_val = floatval($values[1]);
|
||||||
->orLike("t1.precio_max", $search)
|
if(!is_nan($min_val) && !is_null($min_val) && strlen($values[0]) > 0){
|
||||||
->groupEnd();
|
if($filterEnabled == 0){
|
||||||
|
$builder->groupStart();
|
||||||
|
$filterEnabled = 1;
|
||||||
|
}
|
||||||
|
$builder->where(self::SORTABLE[$col_search[0]] . " >=", $min_val);
|
||||||
|
}
|
||||||
|
if(!is_nan($max_val) && !is_null($max_val) && strlen($values[1]) > 0){
|
||||||
|
if($filterEnabled == 0){
|
||||||
|
$builder->groupStart();
|
||||||
|
$filterEnabled = 1;
|
||||||
|
}
|
||||||
|
$builder->where(self::SORTABLE[$col_search[0]] . " <", $max_val);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(strlen($col_search[2]) > 1){
|
||||||
|
$values = explode(",",$col_search[2]);
|
||||||
|
if(count($values) > 1){
|
||||||
|
foreach ($values as $value) {
|
||||||
|
if($filterEnabled == 0){
|
||||||
|
$builder->groupStart();
|
||||||
|
$filterEnabled = 1;
|
||||||
|
}
|
||||||
|
$builder->orWhere("t1.proveedor_id", $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if($filterEnabled == 0){
|
||||||
|
$builder->groupStart();
|
||||||
|
$filterEnabled = 1;
|
||||||
|
}
|
||||||
|
$builder->where("t1.proveedor_id", $col_search[2]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
if($filterEnabled == 1){
|
||||||
|
$builder->groupEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $builder;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function findLineasForTarifaAcabado(int $tarifaacabado_id){
|
public function findLineasForTarifaAcabado(int $tarifaacabado_id){
|
||||||
@ -181,6 +231,7 @@ class TarifaAcabadoLineaModel extends \App\Models\BaseModel
|
|||||||
->select("id, tirada_min, tirada_max")
|
->select("id, tirada_min, tirada_max")
|
||||||
->where("is_deleted", 0)
|
->where("is_deleted", 0)
|
||||||
->where("tarifa_acabado_id", $id_tarifa_acabado)
|
->where("tarifa_acabado_id", $id_tarifa_acabado)
|
||||||
|
->where("proveedor_id", $data["proveedor_id"])
|
||||||
->get()->getResultObject();
|
->get()->getResultObject();
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -114,16 +114,17 @@ class TarifaAcabadoModel extends \App\Models\BaseModel
|
|||||||
return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject();
|
return $builder->orderBy("t1.nombre", "asc")->get()->getResultObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTarifaPresupuestoAcabado($tarifa_id, $tirada){
|
public function getTarifaPresupuestoAcabado($tarifa_id, $tirada, $proveedor_id = -1){
|
||||||
|
|
||||||
$builder = $this->db
|
$builder = $this->db
|
||||||
->table($this->table . " t1")
|
->table($this->table . " t1")
|
||||||
->select(
|
->select(
|
||||||
"t1.id AS tarifa_acabado_id, t1.nombre AS tarifa_acabado_nombre, t1.precio_min AS tarifa_precio_min, t1.importe_fijo AS tarifa_importe_fijo,
|
"t1.id AS tarifa_acabado_id, t1.nombre AS tarifa_acabado_nombre, t1.precio_min AS tarifa_precio_min, t1.importe_fijo AS tarifa_importe_fijo,
|
||||||
t1.acabado_cubierta AS acabado_cubierta, t1.acabado_sobrecubierta AS acabado_sobrecubierta, t2.id AS tarifa_linea_id, t2.tirada_min AS tirada_min, t2.tirada_max AS tirada_max,
|
t1.acabado_cubierta AS acabado_cubierta, t1.acabado_sobrecubierta AS acabado_sobrecubierta, t2.id AS tarifa_linea_id, t2.tirada_min AS tirada_min, t2.tirada_max AS tirada_max,
|
||||||
t2.precio_min AS precio_min, t2.precio_max AS precio_max, t2.margen AS margen"
|
t2.precio_min AS precio_min, t2.precio_max AS precio_max, t2.margen AS margen, t2.proveedor_id AS proveedor_id, t3.nombre AS proveedor_nombre"
|
||||||
)
|
)
|
||||||
->join("tarifa_acabado_lineas t2", "t1.id = t2.tarifa_acabado_id", "left")
|
->join("tarifa_acabado_lineas t2", "t1.id = t2.tarifa_acabado_id", "left")
|
||||||
|
->join("lg_proveedores t3", "t2.proveedor_id = t3.id", "left")
|
||||||
->where("t1.is_deleted", 0)
|
->where("t1.is_deleted", 0)
|
||||||
//->where("t1.mostrar_en_presupuesto", 1)
|
//->where("t1.mostrar_en_presupuesto", 1)
|
||||||
->where("t2.is_deleted", 0);
|
->where("t2.is_deleted", 0);
|
||||||
@ -132,6 +133,9 @@ class TarifaAcabadoModel extends \App\Models\BaseModel
|
|||||||
$builder->where('t2.tirada_min <=', $tirada);
|
$builder->where('t2.tirada_min <=', $tirada);
|
||||||
$builder->where('t2.tirada_max >=', $tirada);
|
$builder->where('t2.tirada_max >=', $tirada);
|
||||||
|
|
||||||
|
if($proveedor_id != -1){
|
||||||
|
$builder->where('t2.proveedor_id', $proveedor_id);
|
||||||
|
}
|
||||||
return $builder->get()->getResultObject();
|
return $builder->get()->getResultObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -385,7 +385,7 @@ class PresupuestoClienteService extends BaseService
|
|||||||
$POD = $data['POD'] ?? -1;
|
$POD = $data['POD'] ?? -1;
|
||||||
|
|
||||||
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
|
||||||
$values = $model->getPrecioTarifa($tarifa_id, $tirada, $POD);
|
$values = $model->getPrecioTarifa($tarifa_id, $tirada, -1, $POD); // proveedor más barato
|
||||||
return $values;
|
return $values;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1353,7 +1353,14 @@ class PresupuestoService extends BaseService
|
|||||||
$model = new PresupuestoAcabadosModel();
|
$model = new PresupuestoAcabadosModel();
|
||||||
foreach ($servicios as $servicio) {
|
foreach ($servicios as $servicio) {
|
||||||
|
|
||||||
$nueva_tarifa = $model->getPrecioTarifa($servicio->tarifa_acabado_id, $input_data['tirada'], $input_data['POD']);
|
// Si es un presupuesto duplicado hay que buscar el proveedor más barato
|
||||||
|
if($input_data['is_duplicado']){
|
||||||
|
$nueva_tarifa = $model->getPrecioTarifa($servicio->tarifa_acabado_id, $input_data['tirada'], -1, $input_data['POD']);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$nueva_tarifa = $model->getPrecioTarifa($servicio->tarifa_acabado_id, $input_data['tirada'], $servicio->proveedor_id, $input_data['POD']);
|
||||||
|
}
|
||||||
|
|
||||||
if($nueva_tarifa && count($nueva_tarifa)>0){
|
if($nueva_tarifa && count($nueva_tarifa)>0){
|
||||||
if(round($nueva_tarifa[0]->precio_unidad, 2) != round($servicio->precio_unidad,2) ||
|
if(round($nueva_tarifa[0]->precio_unidad, 2) != round($servicio->precio_unidad,2) ||
|
||||||
$nueva_tarifa[0]->margen != $servicio->margen){
|
$nueva_tarifa[0]->margen != $servicio->margen){
|
||||||
|
|||||||
@ -207,12 +207,55 @@ function init_servicio_acabado(){
|
|||||||
tableServiciosAcabado.row.add([
|
tableServiciosAcabado.row.add([
|
||||||
element.tarifa_acabado_id,
|
element.tarifa_acabado_id,
|
||||||
nombre_completo,
|
nombre_completo,
|
||||||
|
'<select id="proveedor_acabado_' + element.tarifa_acabado_id + '" class="proveedor_acabado select2bs2" style="width: 100%;">' +
|
||||||
|
'<option value="' + element.proveedor_id + '" selected >' +
|
||||||
|
element.proveedor +
|
||||||
|
'</option>' +
|
||||||
|
'</select>',
|
||||||
'<span id="precio_unidad_acabado_' + element.tarifa_acabado_id + '">' + parseFloat(element.precio_unidad).toFixed(2) + '</span>',
|
'<span id="precio_unidad_acabado_' + element.tarifa_acabado_id + '">' + parseFloat(element.precio_unidad).toFixed(2) + '</span>',
|
||||||
'<input class="update-totales-servicios" id="precio_total_acabado_' + element.tarifa_acabado_id +'" value="' + parseFloat(element.precio_total).toFixed(2) + '"></input>',
|
'<input class="update-totales-servicios" id="precio_total_acabado_' + element.tarifa_acabado_id +'" value="' + parseFloat(element.precio_total).toFixed(2) + '"></input>',
|
||||||
'<span style="display: none;" class="update-totales" id="acabado_margen_' + element.tarifa_acabado_id + '">' + parseFloat(element.margen).toFixed(2) + '</span>',
|
'<span style="display: none;" class="update-totales" id="acabado_margen_' + element.tarifa_acabado_id + '">' + parseFloat(element.margen).toFixed(2) + '</span>',
|
||||||
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + element.tarifa_acabado_id +'" data-text="' + nombre_completo + '"></i></a>'
|
'<a href="javascript:void(0);"><i class="ti ti-trash ti-sm btn-delete-serv mx-2" data-id="' + element.tarifa_acabado_id +'" data-text="' + nombre_completo + '"></i></a>'
|
||||||
]).draw(false)
|
]).draw(false)
|
||||||
|
|
||||||
|
$('#proveedor_acabado_' + element.tarifa_acabado_id).select2({
|
||||||
|
allowClear: false,
|
||||||
|
minimumResultsForSearch: -1,
|
||||||
|
ajax: {
|
||||||
|
url: window.routes_servicios.menuItemsOfPresupuestoAcabados,
|
||||||
|
type: 'post',
|
||||||
|
dataType: 'json',
|
||||||
|
|
||||||
|
data: function (params) {
|
||||||
|
|
||||||
|
if(parseInt($('#tirada').val())>0){
|
||||||
|
var tirada = parseInt($('#tirada').val())
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var tirada = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
var return_data = {
|
||||||
|
tarifa_id: element.tarifa_acabado_id,
|
||||||
|
tirada: tirada,
|
||||||
|
};
|
||||||
|
return_data = Object.assign(return_data, window.token_ajax);
|
||||||
|
|
||||||
|
return return_data;
|
||||||
|
},
|
||||||
|
delay: 60,
|
||||||
|
processResults: function (response) {
|
||||||
|
yeniden(response[window.csrf_token]);
|
||||||
|
return {
|
||||||
|
results: response.menu
|
||||||
|
};
|
||||||
|
},
|
||||||
|
cache: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#proveedor_acabado_' + element.tarifa_acabado_id).on('change', select_acabado_event)
|
||||||
|
|
||||||
|
|
||||||
$('#precio_total_acabado_' + element.tarifa_acabado_id).on('change', function(){
|
$('#precio_total_acabado_' + element.tarifa_acabado_id).on('change', function(){
|
||||||
updatePresupuesto({
|
updatePresupuesto({
|
||||||
update_lineas: false,
|
update_lineas: false,
|
||||||
@ -223,9 +266,55 @@ function init_servicio_acabado(){
|
|||||||
})
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
check_serv_acabado_error()
|
check_serv_acabado_error()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function select_acabado_event(){
|
||||||
|
|
||||||
|
if(parseInt($('#tirada').val())>0){
|
||||||
|
var tirada = parseInt($('#tirada').val()) + parseInt($('#merma').val())
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var tirada = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
var tarifa_id = null;
|
||||||
|
if(this.id.includes('proveedor_acabado')){
|
||||||
|
tarifa_id = this.id.split('_')[2];
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
tarifa_id = this.id.split('_')[1];
|
||||||
|
}
|
||||||
|
|
||||||
|
var datos = {
|
||||||
|
tarifa_acabado_id: tarifa_id,
|
||||||
|
tirada: tirada,
|
||||||
|
proveedor_id: parseInt($('#proveedor_acabado_' + tarifa_id).select2('data')[0].id),
|
||||||
|
POD: parseInt($('#POD').val())
|
||||||
|
};
|
||||||
|
datos = Object.assign(datos, window.token_ajax);
|
||||||
|
|
||||||
|
$.ajax({
|
||||||
|
type: "POST",
|
||||||
|
url: window.routes_servicios.dataTableOfPresupuestoAcabados,
|
||||||
|
data: datos,
|
||||||
|
success: function (data) {
|
||||||
|
|
||||||
|
$('#precio_unidad_acabado_' + datos.tarifa_acabado_id).text(parseFloat(data.values[0].precio_unidad).toFixed(2))
|
||||||
|
$('#precio_total_acabado_' + datos.tarifa_acabado_id).val(parseFloat(data.values[0].total).toFixed(2))
|
||||||
|
$('#acabado_margen_' + datos.tarifa_acabado_id).val(parseFloat(data.values[0].margen).toFixed(2))
|
||||||
|
|
||||||
|
yeniden(data[window.csrf_token]);
|
||||||
|
return true;
|
||||||
|
},
|
||||||
|
error: function(e){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
function check_serv_acabado_error(){
|
function check_serv_acabado_error(){
|
||||||
|
|
||||||
var htmlString = '';
|
var htmlString = '';
|
||||||
@ -280,6 +369,11 @@ function get_tarifas_acabado(tarifa_id = -1, uso=null){
|
|||||||
tableServiciosAcabado.row.add([
|
tableServiciosAcabado.row.add([
|
||||||
row.tarifa_id,
|
row.tarifa_id,
|
||||||
nombre,
|
nombre,
|
||||||
|
'<select id="proveedor_acabado_' + row.tarifa_id + '" class="proveedor_acabado select2bs2" style="width: 100%;">' +
|
||||||
|
'<option value="' + row.proveedor_id + '" selected >' +
|
||||||
|
row.proveedor +
|
||||||
|
'</option>' +
|
||||||
|
'</select>',
|
||||||
'<span id="precio_unidad_acabado_' + row.tarifa_id + '">' + parseFloat(row.precio_unidad).toFixed(2) + '</span>',
|
'<span id="precio_unidad_acabado_' + row.tarifa_id + '">' + parseFloat(row.precio_unidad).toFixed(2) + '</span>',
|
||||||
'<input class="update-totales-servicios" id="precio_total_acabado_' + row.tarifa_id +'" value="' + parseFloat(row.total).toFixed(2) + '"></input>',
|
'<input class="update-totales-servicios" id="precio_total_acabado_' + row.tarifa_id +'" value="' + parseFloat(row.total).toFixed(2) + '"></input>',
|
||||||
'<span style="display: none;" class="update-totales" id="acabado_margen_' + row.tarifa_id + '">' + parseFloat(row.margen).toFixed(2) + '</span>',
|
'<span style="display: none;" class="update-totales" id="acabado_margen_' + row.tarifa_id + '">' + parseFloat(row.margen).toFixed(2) + '</span>',
|
||||||
@ -295,6 +389,44 @@ function get_tarifas_acabado(tarifa_id = -1, uso=null){
|
|||||||
update_tiradas_alternativas: true})
|
update_tiradas_alternativas: true})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$('#proveedor_acabado_' + row.tarifa_id).select2({
|
||||||
|
allowClear: false,
|
||||||
|
minimumResultsForSearch: -1,
|
||||||
|
ajax: {
|
||||||
|
url: window.routes_servicios.menuItemsOfPresupuestoAcabados,
|
||||||
|
type: 'post',
|
||||||
|
dataType: 'json',
|
||||||
|
|
||||||
|
data: function (params) {
|
||||||
|
|
||||||
|
if(parseInt($('#tirada').val())>0){
|
||||||
|
var tirada = parseInt($('#tirada').val())
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var tirada = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
var return_data = {
|
||||||
|
tarifa_id: row.tarifa_id,
|
||||||
|
tirada: tirada,
|
||||||
|
};
|
||||||
|
return_data = Object.assign(return_data, window.token_ajax);
|
||||||
|
|
||||||
|
return return_data;
|
||||||
|
},
|
||||||
|
delay: 60,
|
||||||
|
processResults: function (response) {
|
||||||
|
yeniden(response[window.csrf_token]);
|
||||||
|
return {
|
||||||
|
results: response.menu
|
||||||
|
};
|
||||||
|
},
|
||||||
|
cache: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$('#proveedor_acabado_' + row.tarifa_id).on('change', select_acabado_event)
|
||||||
});
|
});
|
||||||
|
|
||||||
check_serv_acabado_error()
|
check_serv_acabado_error()
|
||||||
@ -415,12 +547,15 @@ function get_datos_acabado(){
|
|||||||
values['sobrecubierta'] = 0
|
values['sobrecubierta'] = 0
|
||||||
break
|
break
|
||||||
case 2:
|
case 2:
|
||||||
values['precio_unidad'] = $(this).text()
|
values['proveedor_id'] = $(this).children(":first").select2('data')[0].id
|
||||||
break
|
break
|
||||||
case 3:
|
case 3:
|
||||||
values['precio_total'] = $(this).children(":first").val()
|
values['precio_unidad'] = $(this).text()
|
||||||
break
|
break
|
||||||
case 4:
|
case 4:
|
||||||
|
values['precio_total'] = $(this).children(":first").val()
|
||||||
|
break
|
||||||
|
case 5:
|
||||||
values['margen'] = $(this).text()
|
values['margen'] = $(this).text()
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -731,11 +866,7 @@ async function get_tarifas_enc(tipo=null, tarifa_id = -1){
|
|||||||
|
|
||||||
var datos = {
|
var datos = {
|
||||||
tarifa_encuadernacion_id : tarifa_id,
|
tarifa_encuadernacion_id : tarifa_id,
|
||||||
solapas: $('#solapas').is(':checked')?1:0,
|
|
||||||
paginas: parseInt($('#paginas').val())>0?parseInt($('#paginas').val()):0,
|
|
||||||
tirada: tirada,
|
tirada: tirada,
|
||||||
ancho: dimension.ancho,
|
|
||||||
alto: dimension.alto,
|
|
||||||
POD: parseInt($('#POD').val())
|
POD: parseInt($('#POD').val())
|
||||||
};
|
};
|
||||||
datos = Object.assign(datos, window.token_ajax)
|
datos = Object.assign(datos, window.token_ajax)
|
||||||
@ -1738,9 +1869,19 @@ async function actualizar_servicios(update_preimpresion=false){
|
|||||||
.then(response => response.json())
|
.then(response => response.json())
|
||||||
.then(data => {
|
.then(data => {
|
||||||
data.lines.forEach((line) => {
|
data.lines.forEach((line) => {
|
||||||
|
$('#proveedor_acabado_' + line[0].tarifa_id).off('change')
|
||||||
|
if(line[0].hasOwnProperty('proveedor_id')){
|
||||||
|
$('#proveedor_acabado_' + line[0].tarifa_id)
|
||||||
|
.append('<option selected="selected" value="' + line[0].proveedor_id + '">' + line[0].proveedor + '</option>')
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
$('#proveedor_acabado_' + line[0].tarifa_id).empty()
|
||||||
|
.append('<option selected="selected" value="' + line[0].proveedor_id + '">' + window.Presupuestos.no_disponible + '</option>')
|
||||||
|
}
|
||||||
$('#precio_unidad_acabado_' + line[0].tarifa_id).text(parseFloat(line[0].precio_unidad).toFixed(2))
|
$('#precio_unidad_acabado_' + line[0].tarifa_id).text(parseFloat(line[0].precio_unidad).toFixed(2))
|
||||||
$('#precio_total_acabado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2))
|
$('#precio_total_acabado_' + line[0].tarifa_id).val(parseFloat(line[0].total).toFixed(2))
|
||||||
$('#acabado_margen_' + line[0].tarifa_id).text(parseFloat(line[0].margen).toFixed(2))
|
$('#acabado_margen_' + line[0].tarifa_id).text(parseFloat(line[0].margen).toFixed(2))
|
||||||
|
$('#proveedor_acabado_' + line[0].tarifa_id).on('change', select_enc_event)
|
||||||
});
|
});
|
||||||
check_serv_acabado_error()
|
check_serv_acabado_error()
|
||||||
yeniden(data[window.csrf_token]);
|
yeniden(data[window.csrf_token]);
|
||||||
|
|||||||
@ -90,6 +90,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<th><?= lang('Presupuestos.id') ?></th>
|
<th><?= lang('Presupuestos.id') ?></th>
|
||||||
<th><?= lang('Tarifaacabado.tarifaacabado') ?></th>
|
<th><?= lang('Tarifaacabado.tarifaacabado') ?></th>
|
||||||
|
<th><?= lang('Proveedores.proveedor') ?></th>
|
||||||
<th><?= lang('Presupuestos.precioUnidad') ?></th>
|
<th><?= lang('Presupuestos.precioUnidad') ?></th>
|
||||||
<th><?= lang('Presupuestos.precioTotal') ?></th>
|
<th><?= lang('Presupuestos.precioTotal') ?></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
@ -297,6 +298,7 @@
|
|||||||
|
|
||||||
window.routes_servicios = {
|
window.routes_servicios = {
|
||||||
dataTableOfPresupuestoAcabados: "<?=route_to('dataTableOfPresupuestoAcabados') ?>",
|
dataTableOfPresupuestoAcabados: "<?=route_to('dataTableOfPresupuestoAcabados') ?>",
|
||||||
|
menuItemsOfPresupuestoAcabados: '<?= route_to("menuItemsOfPresupuestoAcabados") ?>',
|
||||||
dataTableOfPresupuestoPreimpresion: "<?=route_to('dataTableOfPresupuestoPreimpresiones') ?>",
|
dataTableOfPresupuestoPreimpresion: "<?=route_to('dataTableOfPresupuestoPreimpresiones') ?>",
|
||||||
dataTableOfPresupuestoEncuadernaciones: "<?=route_to('dataTableOfPresupuestoEncuadernaciones') ?>",
|
dataTableOfPresupuestoEncuadernaciones: "<?=route_to('dataTableOfPresupuestoEncuadernaciones') ?>",
|
||||||
dataTableOfPresupuestoManipulados: "<?=route_to('dataTableOfPresupuestoManipulados') ?>",
|
dataTableOfPresupuestoManipulados: "<?=route_to('dataTableOfPresupuestoManipulados') ?>",
|
||||||
|
|||||||
@ -45,12 +45,13 @@
|
|||||||
<table id="tableOfTarifaacabadolineas" class="table table-striped table-hover" style="width: 100%;">
|
<table id="tableOfTarifaacabadolineas" class="table table-striped table-hover" style="width: 100%;">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
<th><?= lang('TarifaAcabadoLineas.proveedor') ?></th>
|
||||||
<th><?= lang('TarifaAcabadoLineas.tiradaMin') ?></th>
|
<th><?= lang('TarifaAcabadoLineas.tiradaMin') ?></th>
|
||||||
<th><?= lang('TarifaAcabadoLineas.precioMax') ?></th>
|
<th><?= lang('TarifaAcabadoLineas.precioMax') ?></th>
|
||||||
<th><?= lang('TarifaAcabadoLineas.tiradaMax') ?></th>
|
<th><?= lang('TarifaAcabadoLineas.tiradaMax') ?></th>
|
||||||
<th><?= lang('TarifaAcabadoLineas.precioMin') ?></th>
|
<th><?= lang('TarifaAcabadoLineas.precioMin') ?></th>
|
||||||
<th><?= lang('TarifaAcabadoLineas.margen') ?></th>
|
<th><?= lang('TarifaAcabadoLineas.margen') ?></th>
|
||||||
<th style="min-width:100px"></th>
|
<th class="noFilter" style="min-width:100px"></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@ -85,7 +86,7 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
editor = new $.fn.dataTable.Editor( {
|
var editor = new $.fn.dataTable.Editor( {
|
||||||
ajax: {
|
ajax: {
|
||||||
url: "<?= route_to('tarifaAcabadoLineasDTE') ?>",
|
url: "<?= route_to('tarifaAcabadoLineasDTE') ?>",
|
||||||
headers: {
|
headers: {
|
||||||
@ -94,7 +95,11 @@
|
|||||||
},
|
},
|
||||||
table : "#tableOfTarifaacabadolineas",
|
table : "#tableOfTarifaacabadolineas",
|
||||||
idSrc: 'id',
|
idSrc: 'id',
|
||||||
fields: [ {
|
fields: [
|
||||||
|
{
|
||||||
|
name: "proveedor_id",
|
||||||
|
type: "select",
|
||||||
|
}, {
|
||||||
name: "tirada_min"
|
name: "tirada_min"
|
||||||
}, {
|
}, {
|
||||||
name: "precio_max"
|
name: "precio_max"
|
||||||
@ -107,6 +112,9 @@
|
|||||||
}, {
|
}, {
|
||||||
"name": "tarifa_acabado_id",
|
"name": "tarifa_acabado_id",
|
||||||
"type": "hidden"
|
"type": "hidden"
|
||||||
|
},{
|
||||||
|
name: "proveedor_nombre",
|
||||||
|
"type": "hidden"
|
||||||
},{
|
},{
|
||||||
"name": "deleted_at",
|
"name": "deleted_at",
|
||||||
"type": "hidden"
|
"type": "hidden"
|
||||||
@ -117,6 +125,10 @@
|
|||||||
]
|
]
|
||||||
} );
|
} );
|
||||||
|
|
||||||
|
// Generación de la lista de proveedores (id, nombre) para encuadernación
|
||||||
|
const suppliersList = <?php echo json_encode($proveedores); ?>;
|
||||||
|
editor.field( 'proveedor_id' ).update( suppliersList );
|
||||||
|
|
||||||
editor.on( 'preSubmit', function ( e, d, type ) {
|
editor.on( 'preSubmit', function ( e, d, type ) {
|
||||||
if ( type === 'create'){
|
if ( type === 'create'){
|
||||||
d.data[0]['tarifa_acabado_id'] = id;
|
d.data[0]['tarifa_acabado_id'] = id;
|
||||||
@ -141,18 +153,94 @@
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function searchProviders(){
|
||||||
|
var values = [];
|
||||||
|
$('#select_Proveedor').find(':selected').each(function () {
|
||||||
|
values.push($(this).val());
|
||||||
|
});
|
||||||
|
theTable.column(0).search(values).draw();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Setup - add a text input to each footer cell
|
||||||
|
$('#tableOfTarifaacabadolineas thead tr').clone(true).appendTo('#tableOfTarifaacabadolineas thead');
|
||||||
|
$('#tableOfTarifaacabadolineas thead tr:eq(1) th').each(function (i) {
|
||||||
|
if (!$(this).hasClass("noFilter")) {
|
||||||
|
var title = $(this).text();
|
||||||
|
title = title.replace(/ /g, "_").replace(/\./g, "_");
|
||||||
|
|
||||||
|
|
||||||
|
if(i==0){
|
||||||
|
|
||||||
|
// Agregar un selector en la primera columna
|
||||||
|
$(this).html(`<select id=select_${title} class="form-control select2" style="min-width:100px;max-width:120px;font-size:0.8rem !important;"></select>`);
|
||||||
|
|
||||||
|
// Agregar opciones al selector
|
||||||
|
var selector = $('select', this);
|
||||||
|
const suppliersList = <?php echo json_encode($proveedores); ?>;
|
||||||
|
//selector.append('<option value="">Todos</option>'); // Opción vacía
|
||||||
|
for (j = 0; j < suppliersList.length; j++) {
|
||||||
|
selector.append('<option value="' + suppliersList[j].value + '">' + suppliersList[j].label + '</option>');
|
||||||
|
};
|
||||||
|
|
||||||
|
$('#select_' + title).select2({
|
||||||
|
multiple: true,
|
||||||
|
placeholder: ""
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
selector.bind('select2:select', searchProviders);
|
||||||
|
selector.bind('select2:unselect', searchProviders);
|
||||||
|
|
||||||
|
$('#select_' + title).val("").trigger('change');
|
||||||
|
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
|
||||||
|
|
||||||
|
$(this).html(`
|
||||||
|
<div class='d-flex'>
|
||||||
|
<input name=min_${title} id=min_${title} class="form-control" type='text' min='0' placeholder='Min' style='width: 80px;'/>
|
||||||
|
<input name=max_${title} id=max_${title} class="form-control ml-1" type='text' min='0' placeholder='Max' style='width: 80px;'/>
|
||||||
|
</div>
|
||||||
|
`);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
$('input', this).on('change clear', function () {
|
||||||
|
var minInputValue = parseFloat($(`#min_${title}`).val().replace(',','.')) || "";
|
||||||
|
var maxInputValue = parseFloat($(`#max_${title}`).val().replace(',','.')) || "";
|
||||||
|
|
||||||
|
|
||||||
|
if (theTable.column(i).search() !== [minInputValue,maxInputValue]) {
|
||||||
|
theTable
|
||||||
|
.column(i)
|
||||||
|
.search([minInputValue,maxInputValue])
|
||||||
|
.draw();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$(this).html('<span></span>');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
var theTable = $('#tableOfTarifaacabadolineas').DataTable( {
|
var theTable = $('#tableOfTarifaacabadolineas').DataTable( {
|
||||||
serverSide: true,
|
orderCellsTop: true,
|
||||||
|
serverSide: true,
|
||||||
processing: true,
|
processing: true,
|
||||||
autoWidth: true,
|
autoWidth: true,
|
||||||
responsive: true,
|
responsive: true,
|
||||||
|
fixedHeader: true,
|
||||||
lengthMenu: [ 5, 10, 25],
|
lengthMenu: [ 5, 10, 25],
|
||||||
order: [[ 0, "asc" ], [ 1, "asc" ]],
|
order: [[ 0, "asc" ], [ 1, "asc" ]],
|
||||||
pageLength: 10,
|
pageLength: 10,
|
||||||
lengthChange: true,
|
lengthChange: true,
|
||||||
searching: false,
|
|
||||||
paging: true,
|
paging: true,
|
||||||
info: false,
|
info: false,
|
||||||
|
stateSave: false,
|
||||||
dom: '<"mt-4"><"float-end"B><"float-start"l><t><"mt-4 mb-3"p>',
|
dom: '<"mt-4"><"float-end"B><"float-start"l><t><"mt-4 mb-3"p>',
|
||||||
ajax : $.fn.dataTable.pipeline( {
|
ajax : $.fn.dataTable.pipeline( {
|
||||||
url: '<?= route_to('tarifaAcabadoLineasDT') ?>',
|
url: '<?= route_to('tarifaAcabadoLineasDT') ?>',
|
||||||
@ -164,6 +252,12 @@
|
|||||||
async: true,
|
async: true,
|
||||||
}),
|
}),
|
||||||
columns: [
|
columns: [
|
||||||
|
{ 'data': 'proveedor_id',
|
||||||
|
render: function(data, type, row, meta) {
|
||||||
|
var value = suppliersList.find(element => element.value === data);
|
||||||
|
return value['label'];
|
||||||
|
},
|
||||||
|
},
|
||||||
{ 'data': 'tirada_min' },
|
{ 'data': 'tirada_min' },
|
||||||
{ 'data': 'precio_max' },
|
{ 'data': 'precio_max' },
|
||||||
{ 'data': 'tirada_max' },
|
{ 'data': 'tirada_max' },
|
||||||
@ -180,7 +274,6 @@
|
|||||||
searchable: false,
|
searchable: false,
|
||||||
targets: [lastColNr]
|
targets: [lastColNr]
|
||||||
},
|
},
|
||||||
{"orderData": [ 0, 1 ], "targets": 0 },
|
|
||||||
|
|
||||||
],
|
],
|
||||||
language: {
|
language: {
|
||||||
@ -244,6 +337,7 @@
|
|||||||
<?=$this->section('css') ?>
|
<?=$this->section('css') ?>
|
||||||
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/datatables-editor/editor.dataTables.min.css') ?>">
|
<link rel="stylesheet" href="<?= site_url('themes/vuexy/css/datatables-editor/editor.dataTables.min.css') ?>">
|
||||||
<link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.css") ?>">
|
<link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/buttons/buttons.bootstrap5.min.css") ?>">
|
||||||
|
<link rel="stylesheet" href="<?= site_url("/themes/vuexy/vendor/libs/datatables-sk/plugins/fixedheader/fixedHeader.dataTables.min.css") ?>">
|
||||||
<?=$this->endSection() ?>
|
<?=$this->endSection() ?>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -49,11 +49,11 @@
|
|||||||
<th><?= lang('TarifaEncuadernacionTiradas.proveedor') ?></th>
|
<th><?= lang('TarifaEncuadernacionTiradas.proveedor') ?></th>
|
||||||
<th><?= lang('TarifaEncuadernacionTiradas.tiradaMin') ?></th>
|
<th><?= lang('TarifaEncuadernacionTiradas.tiradaMin') ?></th>
|
||||||
<th><?= lang('TarifaEncuadernacionTiradas.tiradaMax') ?></th>
|
<th><?= lang('TarifaEncuadernacionTiradas.tiradaMax') ?></th>
|
||||||
<th><?= lang('Tarifaencuadernacion.precioMin') ?></th>
|
<th><?= lang('Tarifaencuadernacion.importeMin') ?></th>
|
||||||
<th><?= lang('Tarifaencuadernacion.importeFijo') ?></th>
|
<th><?= lang('Tarifaencuadernacion.importeFijo') ?></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
|||||||
@ -75,6 +75,13 @@ if (
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
|
<?php if (auth()->user()->can('proveedores.menu')) { ?>
|
||||||
|
<li class="menu-item">
|
||||||
|
<a href="<?= route_to("proveedorList") ?>" class="menu-link">
|
||||||
|
<?= lang("App.menu_proveedores") ?>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<?php } ?>
|
||||||
<?php if (auth()->user()->can('ubicaciones.menu')) { ?>
|
<?php if (auth()->user()->can('ubicaciones.menu')) { ?>
|
||||||
<li class="menu-item">
|
<li class="menu-item">
|
||||||
<a href="<?= route_to("ubicacionesList") ?>" class="menu-link">
|
<a href="<?= route_to("ubicacionesList") ?>" class="menu-link">
|
||||||
|
|||||||
Reference in New Issue
Block a user