trabajando en el back de las tiradas

This commit is contained in:
Jaime Jiménez
2024-03-03 21:39:23 +01:00
parent d96199d2d0
commit 536e70ec64
8 changed files with 1050 additions and 588 deletions

View File

@ -554,6 +554,13 @@ $routes->group('presupuestodirecciones', ['namespace' => 'App\Controllers\Presup
$routes->post('datatable', 'Presupuestodirecciones::datatable', ['as' => 'dataTableOfPresupuestoDirecciones']); $routes->post('datatable', 'Presupuestodirecciones::datatable', ['as' => 'dataTableOfPresupuestoDirecciones']);
}); });
$routes->group('presupuestotiradasalternativas', ['namespace' => 'App\Controllers\Presupuestos'], function ($routes) {
$routes->post('datatable', 'Presupuestotiradasalternativas::datatable', ['as' => 'dataTableOfPresupuestoTiradasAlternativas']);
$routes->post('datatable_2', 'Presupuestotiradasalternativas::datatable_2', ['as' => 'getTiradaData']);
});
$routes->group( $routes->group(
'printpresupuestos', 'printpresupuestos',
['namespace' => 'App\Controllers\Pdf'], ['namespace' => 'App\Controllers\Pdf'],

View File

@ -234,8 +234,10 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
} }
$noException = true; $noException = true;
if($sanitizedData['papel_formato_id'] == null && $sanitizedData['papel_formato_ancho'] == null if (
&& $sanitizedData['papel_formato_alto'] == null){ $sanitizedData['papel_formato_id'] == null && $sanitizedData['papel_formato_ancho'] == null
&& $sanitizedData['papel_formato_alto'] == null
) {
if ($this->request->isAJAX()) { if ($this->request->isAJAX()) {
$newTokenHash = csrf_hash(); $newTokenHash = csrf_hash();
$csrfTokenName = csrf_token(); $csrfTokenName = csrf_token();
@ -244,14 +246,11 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$csrfTokenName => $newTokenHash $csrfTokenName => $newTokenHash
]; ];
return $this->respond($data); return $this->respond($data);
} else {
}
else{
$this->session->setFlashData('errorMessage', lang('Presupuestos.errores.formato_papel')); $this->session->setFlashData('errorMessage', lang('Presupuestos.errores.formato_papel'));
} }
$successfulResult = false; $successfulResult = false;
} } else {
else{
if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) )
@ -292,8 +291,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$csrfTokenName => $newTokenHash $csrfTokenName => $newTokenHash
]; ];
return $this->respond($data); return $this->respond($data);
} } else {
else{
return $this->redirect2listView('sweet-success', $message); return $this->redirect2listView('sweet-success', $message);
} }
@ -307,8 +305,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$csrfTokenName => $newTokenHash $csrfTokenName => $newTokenHash
]; ];
return $this->respond($data); return $this->respond($data);
} } else {
else{
$this->session->setFlashData('sweet-success', $message); $this->session->setFlashData('sweet-success', $message);
} }
endif; endif;
@ -517,7 +514,6 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
} else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) { } else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) {
$datosPedido->isCosido = false; $datosPedido->isCosido = false;
} }
} }
$a_favor_fibra = $reqData['a_favor_fibra'] ?? false; $a_favor_fibra = $reqData['a_favor_fibra'] ?? false;
@ -532,8 +528,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
]; ];
return $this->respond($data); return $this->respond($data);
} } else if ($type == 'interior_rot') {
else if ($type=='interior_rot') {
$paginas = (object)array( $paginas = (object)array(
'negro' => intval($reqData['paginas_negro']) ?? 0, 'negro' => intval($reqData['paginas_negro']) ?? 0,
@ -564,8 +559,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
]; ];
return $this->respond($data); return $this->respond($data);
} } else if ($type == 'cubierta' || $type == 'sobrecubierta') {
else if ($type=='cubierta' || $type=='sobrecubierta') {
$datosPedido->solapas = $reqData['solapas']; $datosPedido->solapas = $reqData['solapas'];
$datosPedido->solapas_ancho = $reqData['solapas_ancho']; $datosPedido->solapas_ancho = $reqData['solapas_ancho'];
@ -585,7 +579,6 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
return $this->respond($data); return $this->respond($data);
} }
} }
return $this->respond(Collection::datatable( return $this->respond(Collection::datatable(
@ -636,13 +629,13 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
]; ];
return $this->respond($data); return $this->respond($data);
} else { } else {
return $this->failUnauthorized('Invalid request', 403); return $this->failUnauthorized('Invalid request', 403);
} }
} }
private function getStringsFromTipoImpresion($tipo_impresion_id){ private function getStringsFromTipoImpresion($tipo_impresion_id)
{
$breadcrumbTitle = ""; $breadcrumbTitle = "";
@ -682,7 +675,6 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
default: default:
return "A IMPLEMENTAR!"; return "A IMPLEMENTAR!";
} }
// Breadcrumbs // Breadcrumbs
@ -699,39 +691,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
{ {
$tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro'); $tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro');
if( $uso == 'cubierta' ){ $opciones_papel = PresupuestoService::get_opciones_papel($uso, $isColor);
$opciones_papel = array(
'cubierta' => 1,
//'color' => 1,
'rotativa' => 0,
);
}
else if ( $uso == 'sobrecubierta' ){
$opciones_papel = array(
'sobrecubierta' => 1,
//'color' => 1,
'rotativa' => 0,
);
}
else if ( $uso == 'guardas' ){
$opciones_papel = array(
'guardas' => 1,
//'color' => 1,
'rotativa' => 0,
);
}
else if( $isColor ){
$opciones_papel = array(
'color' => 1,
'rotativa' => 0,
);
}
else{
$opciones_papel = array(
'bn' => 1,
'rotativa' => 0,
);
}
// Se obtienen los papeles disponibles // Se obtienen los papeles disponibles
$papelimpresionmodel = new PapelImpresionModel(); $papelimpresionmodel = new PapelImpresionModel();
@ -757,144 +717,24 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
// Se recorren las máquinas y se calcula el coste de linea por cada una // Se recorren las máquinas y se calcula el coste de linea por cada una
foreach ($maquinas as $maquina) { foreach ($maquinas as $maquina) {
if($maquina->is_inkjet){
$parametrosInkjet = (object)array(
'a_favor_fibra' => $a_favor_fibra, // este parametro se cambia para comprobar
// en las dos direcciones (menos en rustica fresada que es siempre 1)
'bnPages' => $isColor?0:$datosPedido->paginas,
'colorPages' => ($uso == 'guardas')?$datosPedido->paginas_impresion:($isColor?$datosPedido->paginas:0),
'rotativa_gota_negro' => 0,
'rotativa_gota_color' => 0,
);
$papelImpresionTipologiaModel = new \App\Models\Configuracion\PapelImpresionTipologiaModel(); $data['uso'] = $uso;
if(is_null($datosTipolog)){ $data['tipo'] = $tipo;
$datosTipologias = $papelImpresionTipologiaModel $data['datosPedido'] = $datosPedido;
->findTipologiasForPapelImpresion($papel->id, $parametrosInkjet->colorPages>0?'color':'negro') $data['cliente_id'] = $cliente_id;
->get()->getResultObject(); $data['papel'] = $papel;
$data['opciones_papel'] = $opciones_papel;
$data['maquina'] = $maquina;
$data['papel_generico'] = $papel_generico;
$data['isColor'] = $isColor;
$data['a_favor_fibra'] = $a_favor_fibra;
$data['datosTipolog'] = $datosTipolog;
$data['gramaje'] = $gramaje;
$linea = PresupuestoService::getLineaPresupuestoPlana($data);
if(count($datosTipologias)==0){ if(empty($linea))
continue; continue;
}
}
else{
$datosTipologias = $datosTipolog;
}
$parametrosInkjet->rotativa_gota_negro = $datosTipologias[0]->gota_negro;
$parametrosInkjet->rotativa_gota_color = $datosTipologias[0]->gota_color;
$parametrosInkjet->rotativa_negro = $datosTipologias[0]->negro;
$parametrosInkjet->rotativa_cyan = $datosTipologias[0]->cyan;
$parametrosInkjet->rotativa_magenta = $datosTipologias[0]->magenta;
$parametrosInkjet->rotativa_amarillo = $datosTipologias[0]->amarillo;
$parametrosInkjet->rotativa_cg = $datosTipologias[0]->cg;
}
$tarifamodel = new MaquinasTarifasImpresionModel();
[$tarifaId, $tarifa, $tarifa_margen] = $tarifamodel->getTarifa($maquina->maquina_id, ($uso=='guardas')?'interior':$uso, $tipo);
if(!is_float($tarifa)){
continue;
}
if($maquina->is_inkjet){
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa, $tarifa_margen, $parametrosInkjet->a_favor_fibra);
}
else{
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa, $tarifa_margen);
}
if(array_key_exists('error', $linea)){
//array_push($lineas, $linea); for debug
continue;
}
if($maquina->is_inkjet){
// calculo de tintas
$linea['fields'] = array_merge($linea['fields'], PresupuestoService::calculoCosteTintas($maquina, $datosPedido, $parametrosInkjet));
}
$linea['fields']['tarifa_impresion_id'] = $tarifaId;
$linea['fields']['maquina'] = $maquina->maquina;
$linea['fields']['maquina_id'] = $maquina->maquina_id;
$linea['fields']['maquina_velocidad'] = $maquina->velocidad;
$linea['fields']['papel_impresion'] = $papel->nombre;
$linea['fields']['papel_impresion_id'] = $papel->id;
$linea['fields']['paginas'] = $datosPedido->paginas;
$linea['fields']['gramaje'] = $gramaje;
$linea['fields']['papel_generico_id'] = $papel_generico['id'];
$linea['fields']['papel_generico'] = $papel_generico['nombre'];
$linea['fields']['tiempo_maquina'] = PresupuestoService::getTiempoMaquina(
$linea['fields']['precio_click_pedido'],
$linea['fields']['precio_click'],
$maquina->velocidad);
$clientePreciosModel = new ClientePreciosModel();
$config = (object)[
"tipo" => ($uso=='guardas')?'interior':$uso,
"tipo_maquina" => $maquina->is_inkjet?'inkjet':'toner',
"tipo_impresion" => $tipo
];
$tiempo = PresupuestoService::getHorasMaquina(
$linea['fields']['precio_click_pedido'],
$linea['fields']['precio_click'],
$maquina->velocidad);
[$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo);
if(is_null($precio_hora)){
continue;
}
$linea['fields']['tipo_maquina'] = $maquina->is_inkjet?'inkjet':'toner';
$linea['fields']['precio_hora'] = $precio_hora*(1+$margen_precio_hora/100.0);
$linea['fields']['precio_hora_margen'] = $precio_hora*($margen_precio_hora/100.0);
$linea['fields']['horas_maquina'] = $tiempo;
$linea['fields']['precio_impresion_horas'] = $linea['fields']['precio_hora']*$tiempo;
$linea['fields']['margen_impresion_horas'] = $linea['fields']['precio_hora_margen']*$tiempo;
// para guardas
if(\property_exists($datosPedido, 'paginas_impresion')){
$linea['fields']['paginas_impresion'] = $datosPedido->paginas_impresion;
}
if($maquina->is_inkjet){
$linea['fields']['a_favor_fibra'] = $parametrosInkjet->a_favor_fibra;
$linea['fields']['paginas_color'] = $isColor?$datosPedido->paginas:0;
$linea['fields']['totalClicksPedido'] = $linea['fields']['precio_click_pedido'];
if( $uso != 'guardas' ){
$linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro']) * 2, 2);
}
else{
if($datosPedido->paginas_impresion == 4)
$linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro']), 2);
else if($datosPedido->paginas_impresion == 8)
$linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro'])*2, 2);
else
$linea['fields']['clicks_libro'] = 0;
}
$linea['fields']['clicks_pedido'] = round($linea['fields']['clicks_libro'] * ($datosPedido->tirada + $datosPedido->merma), 2);
[$ancho, $alto] = PresupuestoService::calculoDimForma($datosPedido, $parametrosInkjet);
$linea['fields']['factor_anchura'] = round($maquina->ancho_impresion / $ancho, 2);
$linea['fields']['factor_altura'] = round($maquina->alto_impresion / ($alto + PresupuestoService::MARGEN_PAGINAS_ROTATIVA), 2);
$linea['fields']['paginas_por_pliego'] = ($datosPedido->isCosido)?$linea['fields']['num_formas']['value']*2:$linea['fields']['num_formas']['value'] * 2; // Se multiplica *2 porque es doble cara
$linea['fields']['datosTipologias'] = $datosTipologias[0];
$linea['fields']['total_impresion'] =
floatval($linea['fields']['precio_pedido']) + // papel
floatval($linea['fields']['precio_impresion_horas']) + // horas de maquina
floatval($linea['fields']['precio_click_pedido']) + // precio clicks del pedido
floatval($linea['fields']['precio_tinta']); // tinta
}
else{
$linea['fields']['total_impresion'] = floatval($linea['fields']['precio_pedido']) + // papel
floatval($linea['fields']['precio_click_pedido']) + // precio clicks del pedido
floatval($linea['fields']['precio_impresion_horas']) ; // horas de maquina
}
array_push($lineas, $linea); array_push($lineas, $linea);
} }
@ -955,8 +795,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
if (count($datosTipologias) == 0) { if (count($datosTipologias) == 0) {
continue; continue;
} }
} } else {
else{
$datosTipologias = $datosTipolog; $datosTipologias = $datosTipolog;
} }
@ -1030,7 +869,8 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$linea['fields']['tiempo_maquina'] = PresupuestoService::getTiempoMaquina( $linea['fields']['tiempo_maquina'] = PresupuestoService::getTiempoMaquina(
$linea['fields']['precio_click_pedido'], $linea['fields']['precio_click_pedido'],
$linea['fields']['precio_click'], $linea['fields']['precio_click'],
$maquina->velocidad); $maquina->velocidad
);
$clientePreciosModel = new ClientePreciosModel(); $clientePreciosModel = new ClientePreciosModel();
@ -1042,7 +882,8 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$tiempo = PresupuestoService::getHorasMaquina( $tiempo = PresupuestoService::getHorasMaquina(
$linea['fields']['precio_click_pedido'], $linea['fields']['precio_click_pedido'],
$linea['fields']['precio_click'], $linea['fields']['precio_click'],
$maquina->velocidad); $maquina->velocidad
);
[$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo); [$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo);
if (is_null($precio_hora)) { if (is_null($precio_hora)) {
@ -1120,8 +961,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
'menu' => $menu, 'menu' => $menu,
$csrfTokenName => $newTokenHash $csrfTokenName => $newTokenHash
]; ];
} } elseif ($tipo == 'gramajeLineasPresupuesto') {
elseif ($tipo == 'gramajeLineasPresupuesto') {
$tipoLinea = $reqData['tipoLinea'] ?? null; $tipoLinea = $reqData['tipoLinea'] ?? null;
// En este caso contiene el id del papel generico // En este caso contiene el id del papel generico
$model = new PapelGenericoModel(); $model = new PapelGenericoModel();
@ -1131,8 +971,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
'menu' => $menu, 'menu' => $menu,
$csrfTokenName => $newTokenHash $csrfTokenName => $newTokenHash
]; ];
} } elseif ($tipo == 'papelImpresion') {
elseif ($tipo == 'papelImpresion') {
$gramaje = $reqData['gramaje'] ?? null; $gramaje = $reqData['gramaje'] ?? null;
$tipoLinea = $reqData['tipoLinea'] ?? null; $tipoLinea = $reqData['tipoLinea'] ?? null;
// En este caso contiene el nombre del papel generico // En este caso contiene el nombre del papel generico
@ -1144,9 +983,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
'menu' => $menu, 'menu' => $menu,
$csrfTokenName => $newTokenHash $csrfTokenName => $newTokenHash
]; ];
} } elseif ($tipo == 'maquina') {
elseif ($tipo == 'maquina') {
$is_rotativa = $reqData['is_rotativa'] ?? null; $is_rotativa = $reqData['is_rotativa'] ?? null;
$papel_impresion = $reqData['papel_impresion'] ?? null; $papel_impresion = $reqData['papel_impresion'] ?? null;
$tipo_linea = $reqData['tipoLinea'] ?? null; $tipo_linea = $reqData['tipoLinea'] ?? null;
@ -1171,26 +1008,21 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
'menu' => $menu, 'menu' => $menu,
$csrfTokenName => $newTokenHash $csrfTokenName => $newTokenHash
]; ];
} } else {
else{
$data = [ $data = [
'tipo' => $tipo, 'tipo' => $tipo,
$csrfTokenName => $newTokenHash $csrfTokenName => $newTokenHash
]; ];
} }
} } catch (Exception $e) {
catch(Exception $e){
$data = [ $data = [
'error' => $e, 'error' => $e,
$csrfTokenName => $newTokenHash $csrfTokenName => $newTokenHash
]; ];
} } finally {
finally{
return $this->respond($data); return $this->respond($data);
} }
} else { } else {
return $this->failUnauthorized('Invalid request', 403); return $this->failUnauthorized('Invalid request', 403);
} }
@ -1398,5 +1230,4 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$model = model('App\Models\Configuracion\ConfiguracionSistemaModel'); $model = model('App\Models\Configuracion\ConfiguracionSistemaModel');
return $model->getPOD(); return $model->getPOD();
} }
} }

View File

@ -0,0 +1,250 @@
<?php
namespace App\Controllers\Presupuestos;
use App\Controllers\GoBaseResourceController;
use App\Models\Collection;
use App\Services\PresupuestoService;
class Presupuestotiradasalternativas extends \App\Controllers\GoBaseResourceController
{
protected $modelName = PresupuestoManipuladosModel::class;
protected $format = 'json';
protected static $singularObjectName = 'Presupuestos tirada alternativa';
protected static $singularObjectNameCc = 'PresupuestoTiradaAlternativa';
protected static $pluralObjectName = 'Presupuesto tiradas alternativas';
protected static $pluralObjectNameCc = 'PresupuestoTiradasAlternativas';
protected static $controllerSlug = 'presupuesto-tiradas';
protected static $viewPath = 'themes/backend/vuexy/form/presupuestos/';
public function initController(\CodeIgniter\HTTP\RequestInterface $request, \CodeIgniter\HTTP\ResponseInterface $response, \Psr\Log\LoggerInterface $logger)
{
parent::initController($request, $response, $logger);
}
public function edit($requestedId = null)
{
}
public function update($requestedId = null)
{
}
public function datatable()
{
if ($this->request->isAJAX()) {
$reqData = $this->request->getPost();
$tarifa_manipulado_id = $reqData['tarifa_manipulado_id'] ?? 0;
$tirada = $reqData['tirada'] ?? 0;
$POD = $reqData['POD'] ?? 0;
$tipo = $reqData['tipo'] ?? null;
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
if (is_null($tipo)) {
$values = $this->model->getPrecioTarifa($tarifa_manipulado_id, $tirada, $POD);
} else {
$solapas = $reqData['solapas'] ?? -1;
$tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4;
$values = $this->model->initPresupuesto($tipo_impresion_id, $solapas, $tirada, $POD);
}
$data = [
'values' => $values,
$csrfTokenName => $newTokenHash
];
return $this->respond($data);
} else {
return $this->failUnauthorized('Invalid request', 403);
}
}
// Esta funcion se usa para obtener los datos de la tabla de la vista de presupuestos
public function datatable_2()
{
if ($this->request->isAJAX()) {
$reqData = $this->request->getPost();
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
$json_data = $reqData['json_tiradas'] ?? null;
$cliente_id = $reqData['cliente_id'] ?? 0;
$tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4;
$values = [];
if ($json_data) {
$data = json_decode($json_data, true);
foreach ($data as $linea) {
// Se obtienen los valores de cada linea para el calculo del precio
$datosPedido = (object)array(
'paginas' => intval($linea['paginas']) ?? 0,
'tirada' => intval($reqData['tirada']) ?? 0,
'merma' => intval($reqData['merma']) ?? 0,
'ancho' => intval($reqData['ancho']) ?? 100000,
'alto' => intval($reqData['alto']) ?? 100000,
'a_favor_fibra' => $linea['aFavorFibra'] ?? 1,
'isCosido' => (new \App\Models\Configuracion\TipoPresupuestoModel())->get_isCosido($tipo_impresion_id), // JJO esto es custom por cada tipo de presupuesto
);
if ($linea['row_id'] == 'lp_guardas') {
$datosPedido->paginas_impresion = intval($linea['paginas_impresion']) ?? 0;
// Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico
// y hay que imprimirlas como "cosido" (dos hojas pegadas). En el caso de espiral
// o wire-o tapa dura, las guardas se imprimen como hojas sueltas
if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) {
$datosPedido->isCosido = true;
} else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) {
$datosPedido->isCosido = false;
}
} else if ($linea['row_id'] == 'lp_sobrecubierta' || $linea['row_id'] == 'lp_cubierta') {
$datosPedido->solapas =
$linea['row_id'] == 'lp_cubierta' ? $reqData['solapas_cubierta'] : $reqData['solapas_sobrecubierta'];
$datosPedido->solapas_ancho =
$linea['row_id'] == 'lp_cubierta' ? $reqData['solapas_cubierta_ancho'] : $reqData['solapas_sobrecubierta_ancho'];
$datosPedido->lomo = $reqData['lomo'];
$type = $linea['row_id'] == 'lp_cubierta' ? 'cubierta' : 'sobrecubierta';
$datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
$datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
}
$maquina = (new \App\Models\Configuracion\MaquinaModel())->find($linea['maquina_id']);
$papel = (new \App\Models\Configuracion\PapelImpresionModel())->find($linea['papel_impresion_id']);
$pg = (new \App\Models\Configuracion\PapelGenericoModel())->find($linea['papel']);
$papel_generico['id'] = $pg->id;
$papel_generico['nombre'] = $pg->nombre;
$maquina->maquina_id = $maquina->id;
unset($maquina->id);
switch ($linea['row_id']) {
case 'lp_rot_bn':
case 'lp_rot_color':
$uso = 'rotativa';
$tipo = strpos($linea['row_id'], "_bn") !== false ? 'negro' : 'color';
break;
case 'lp_cubierta':
$uso = 'cubierta';
break;
case 'lp_sobrecubierta':
$uso = 'sobrecubierta';
break;
case 'lp_guardas':
$uso = 'guardas';
break;
default:
$uso = 'interior';
$isHq = strpos($linea['row_id'], "hq") !== false ? true : false;
$isColor = strpos($linea['row_id'], "_color") !== false ? true : false;
$tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro');
break;
}
if ($uso == 'cubierta' || $uso == 'sobrecubierta' || $uso == 'guardas') {
$isColor = true;
$isHq = true;
$tipo = 'colorhq';
}
$opciones_papel = PresupuestoService::get_opciones_papel($uso, $isColor);
$datosTipolog = $linea['gotaNegro'] ?? null;
if (!is_null($datosTipolog)) {
$datosTipolog = [];
$data = (object)array(
'negro' => intval($linea['cobNegro']) ?? 0,
'cyan' => intval($linea['cobCyan']) ?? 0,
'magenta' => intval($linea['cobMagenta']) ?? 0,
'amarillo' => intval($linea['cobAmarillo']) ?? 0,
'cg' => intval($linea['cobCG']) ?? 0,
'gota_negro' => intval($linea['gotaNegro']) ?? 0,
'gota_color' => intval($linea['gotaColor']) ?? 0,
);
array_push($datosTipolog, $data);
}
$data['uso'] = $uso;
$data['tipo'] = $tipo;
$data['datosPedido'] = $datosPedido;
$data['cliente_id'] = $cliente_id;
$data['papel'] = $papel;
$data['opciones_papel'] = $opciones_papel;
$data['maquina'] = $maquina;
$data['papel_generico'] = $papel_generico;
$data['isColor'] = $isColor;
$data['a_favor_fibra'] = $linea['aFavorFibra'] ?? null;
$data['datosTipolog'] = $datosTipolog;
$data['gramaje'] = $linea['gramaje'] ?? 0;
if ($linea['row_id'] != 'lp_rot_bn' && $linea['row_id'] != 'lp_rot_color') {
$linea_coste = PresupuestoService::getLineaPresupuestoPlana($data);
} else {
$linea_coste = [0];
}
if (empty($linea))
continue;
if ($linea['check_papel_total'] == 0) {
$linea_coste['fields']['precio_pedido'] = 0;
}
if ($linea['check_impresion_total'] == 0) {
$linea_coste['fields']['precio_impresion_horas'] = 0;
$linea_coste['fields']['precio_click_pedido'] = 0;
if ($linea_coste['fields']['tipo_maquina'] == 'inkjet') {
$linea_coste['fields']['precio_tinta'] = 0;
$linea_coste['fields']['totalCorte'] = 0;
}
}
$linea_coste['total_coste'] = $linea_coste['fields']['precio_pedido'] +
$linea_coste['fields']['precio_impresion_horas'] +
$linea_coste['fields']['precio_click_pedido'];
if ($linea_coste['fields']['tipo_maquina'] == 'inkjet') {
$linea_coste['total_coste'] +=
$linea_coste['fields']['precio_tinta'] +
$linea_coste['fields']['totalCorte'];
}
array_push($values, $linea_coste);
}
} else {
$values = [];
}
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
$response[$csrfTokenName] = $newTokenHash;
$response['lineas'] = $values;
return $this->respond($response);
} else {
return $this->failUnauthorized('Invalid request', 403);
}
}
}

View File

@ -12,37 +12,166 @@ class Test extends BaseController
{ {
function __construct() function __construct()
{ {
} }
public function index() public function index()
{ {
$json_text = '[{"paginas":"150","paginas_impresion":0,"papel":"3","papel_impresion_id":"45","gramaje":"90.00","maquina_id":"33","row_id":"lp_bnhq"},{"paginas":"150","paginas_impresion":0,"papel":"3","papel_impresion_id":"45","gramaje":"90.00","maquina_id":"97","row_id":"lp_colorhq"},{"paginas":"2","paginas_impresion":0,"papel":"5","papel_impresion_id":"49","gramaje":"270.00","maquina_id":"55","row_id":"lp_cubierta"},{"paginas":"4","paginas_impresion":0,"papel":"1","papel_impresion_id":"91","gramaje":"200.00","maquina_id":"55","row_id":"lp_sobrecubierta"}]';
echo '<pre>'; echo '<pre>';
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); var_dump($this->test_get_tirada_alt(
$tarifas = [ tirada: 200,
(object)['tarifa_id'=>1, "cubierta"=>0, "sobrecubierta"=>0] merma: 20,
]; tipo_impresion_id: 4,
var_dump($model->deleteServiciosNotInArray(44, $tarifas)); json_data: $json_text,
cliente_id: 685,
ancho: 150,
alto: 210,
solapas_cubierta: 0,
solapas_ancho_cubierta: 0,
solapas_sobrecubierta: 0,
solapas_ancho_sobrecubierta: 0,
lomo: 16.53
));
echo '</pre>'; echo '</pre>';
/*
$linea = PresupuestoService::getCostesLinea('interior', $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
echo '<pre>';
var_dump($formas);
echo '</pre>';
echo '<pre>';
$tarifa_value = $this->get_tarifa_enc(18,150,22,150,210);
var_dump($tarifa_value[0]);
$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
$result = $model->calcularTarifa($tarifa_value[0], 150, true);
var_dump($result);
echo '</pre>';*/
} }
private function test_get_tirada_alt($tirada, $merma, $tipo_impresion_id,
$json_data, $cliente_id, $ancho, $alto,
$solapas_cubierta, $solapas_ancho_cubierta, $solapas_sobrecubierta, $solapas_ancho_sobrecubierta, $lomo)
{
$values = [];
if ($json_data) {
$data = json_decode($json_data, true);
foreach ($data as $linea) {
echo '------------------------------------<br>';
var_dump($linea);
// Se obtienen los valores de cada linea para el calculo del precio
$datosPedido = (object)array(
'paginas' => intval($linea['paginas']) ?? 0,
'tirada' => intval($tirada) ?? 0,
'merma' => intval($merma) ?? 0,
'ancho' => intval($ancho) ?? 100000,
'alto' => intval($alto) ?? 100000,
'a_favor_fibra' => $linea['aFavorFibra'] ?? 1,
'isCosido' => (new \App\Models\Configuracion\TipoPresupuestoModel())->get_isCosido($tipo_impresion_id), // JJO esto es custom por cada tipo de presupuesto
);
if ($linea['row_id'] == 'lp_guardas') {
$datosPedido->paginas_impresion = intval($linea['paginas_impresion']) ?? 0;
// Para el caso de Fresado y Cosido tapa dura, las guardas son un diptico
// y hay que imprimirlas como "cosido" (dos hojas pegadas). En el caso de espiral
// o wire-o tapa dura, las guardas se imprimen como hojas sueltas
if ($tipo_impresion_id == 1 || $tipo_impresion_id == 3) {
$datosPedido->isCosido = true;
} else if ($tipo_impresion_id == 5 || $tipo_impresion_id == 7) {
$datosPedido->isCosido = false;
}
} else if ($linea['row_id'] == 'lp_sobrecubierta' || $linea['row_id'] == 'lp_cubierta') {
$datosPedido->solapas =
$linea['row_id'] == 'lp_cubierta' ? $solapas_cubierta : $solapas_sobrecubierta;
$datosPedido->solapas_ancho =
$linea['row_id'] == 'lp_cubierta' ? $solapas_ancho_cubierta : $solapas_ancho_sobrecubierta;
$datosPedido->lomo = $lomo;
$type = $linea['row_id'] == 'lp_cubierta' ? 'cubierta' : 'sobrecubierta';
$datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
$datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
}
$maquina = (new \App\Models\Configuracion\MaquinaModel())->find($linea['maquina_id']);
$papel = (new \App\Models\Configuracion\PapelImpresionModel())->find($linea['papel_impresion_id']);
$pg = (new \App\Models\Configuracion\PapelGenericoModel())->find($linea['papel']);
$papel_generico['id'] = $pg->id;
$papel_generico['nombre'] = $pg->nombre;
$maquina->maquina_id = $maquina->id;
unset($maquina->id);
switch ($linea['row_id']) {
case 'lp_rot_bn':
case 'lp_rot_color':
$uso = 'rotativa';
$tipo = strpos($linea['row_id'], "_bn") !== false ? 'negro' : 'color';
break;
case 'lp_cubierta':
$uso = 'cubierta';
break;
case 'lp_sobrecubierta':
$uso = 'sobrecubierta';
break;
case 'lp_guardas':
$uso = 'guardas';
break;
default:
$uso = 'interior';
$isHq = strpos($linea['row_id'], "hq") !== false ? true : false;
$isColor = strpos($linea['row_id'], "_color") !== false ? true : false;
$tipo = $isColor ? ($isHq ? 'colorhq' : 'color') : ($isHq ? 'negrohq' : 'negro');
break;
}
if ($uso == 'cubierta' || $uso == 'sobrecubierta' || $uso == 'guardas') {
$isColor = true;
$isHq = true;
$tipo = 'colorhq';
}
$opciones_papel = PresupuestoService::get_opciones_papel($uso, $isColor);
$datosTipolog = $linea['gotaNegro'] ?? null;
if (!is_null($datosTipolog)) {
$datosTipolog = [];
$data = (object)array(
'negro' => intval($linea['cobNegro']) ?? 0,
'cyan' => intval($linea['cobCyan']) ?? 0,
'magenta' => intval($linea['cobMagenta']) ?? 0,
'amarillo' => intval($linea['cobAmarillo']) ?? 0,
'cg' => intval($linea['cobCG']) ?? 0,
'gota_negro' => intval($linea['gotaNegro']) ?? 0,
'gota_color' => intval($linea['gotaColor']) ?? 0,
);
array_push($datosTipolog, $data);
}
$data['uso'] = $uso;
$data['tipo'] = $tipo;
$data['datosPedido'] = $datosPedido;
$data['cliente_id'] = $cliente_id;
$data['papel'] = $papel;
$data['opciones_papel'] = $opciones_papel;
$data['maquina'] = $maquina;
$data['papel_generico'] = (array)$papel_generico;
$data['isColor'] = $isColor;
$data['a_favor_fibra'] = $linea['aFavorFibra'] ?? null;
$data['datosTipolog'] = $datosTipolog;
$data['gramaje'] = $linea['gramaje'] ?? 0;
if ($linea['row_id'] != 'lp_rot_bn' && $linea['row_id'] != 'lp_rot_color') {
$linea_coste = PresupuestoService::getLineaPresupuestoPlana($data);
var_dump($linea_coste);
}
if (empty($linea))
continue;
array_push($values, $linea_coste);
}
} else {
$values = [];
}
}
private function asignar_tarifa_defecto_todos_usuarios() private function asignar_tarifa_defecto_todos_usuarios()
{ {
@ -83,49 +212,53 @@ class Test extends BaseController
echo '</pre>';*/ echo '</pre>';*/
$builder->insert($data); $builder->insert($data);
} }
//break; //break;
} }
} }
public function init_presupuesto_encuadernacion($tipo_presupuesto, $solapas, $paginas, $tirada, $ancho, $alto, $POD){ public function init_presupuesto_encuadernacion($tipo_presupuesto, $solapas, $paginas, $tirada, $ancho, $alto, $POD)
{
$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel'); $model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
return $model->initPresupuesto($tipo_presupuesto, $solapas, $paginas, $tirada, $ancho, $alto, $POD); return $model->initPresupuesto($tipo_presupuesto, $solapas, $paginas, $tirada, $ancho, $alto, $POD);
} }
public function get_precio_tarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id, $POD){ public function get_precio_tarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id, $POD)
{
$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel'); $model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
return $model->getPrecioTarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id, $POD); return $model->getPrecioTarifa($tarifa_encuadernacion_id, $paginas, $tirada, $ancho, $alto, $proveedor_id, $POD);
} }
public function get_precio_tarifa_acabado($tarifa_id, $tirada, $POD){ public function get_precio_tarifa_acabado($tarifa_id, $tirada, $POD)
{
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel'); $model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
return $model->getPrecioTarifa($tarifa_id, $tirada, $POD); return $model->getPrecioTarifa($tarifa_id, $tirada, $POD);
} }
public function get_precio_tarifa_horas($tarifa_encuadernacion_id, $paginas, $tirada, $proveedor_id, $POD){ public function get_precio_tarifa_horas($tarifa_encuadernacion_id, $paginas, $tirada, $proveedor_id, $POD)
{
$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel'); $model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
return $model->getPrecioTarifaHoras($tarifa_encuadernacion_id, $paginas, $tirada, $proveedor_id, $POD); return $model->getPrecioTarifaHoras($tarifa_encuadernacion_id, $paginas, $tirada, $proveedor_id, $POD);
} }
public function get_tarifa_enc($tarifa_id, $paginas, $tirada, $ancho, $alto){ public function get_tarifa_enc($tarifa_id, $paginas, $tirada, $ancho, $alto)
{
$model = model('App\Models\Tarifas\TarifaEncuadernacionModel'); $model = model('App\Models\Tarifas\TarifaEncuadernacionModel');
return $model->getTarifaPresupuestoEncuadernacion($tarifa_id, $paginas, $tirada, $ancho, $alto); return $model->getTarifaPresupuestoEncuadernacion($tarifa_id, $paginas, $tirada, $ancho, $alto);
} }
public function getProveedoresForSelector_enc($tarifa_id, $paginas, $tirada, $ancho, $alto){ public function getProveedoresForSelector_enc($tarifa_id, $paginas, $tirada, $ancho, $alto)
{
$model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel'); $model = model('App\Models\Presupuestos\PresupuestoEncuadernacionesModel');
return $model->getProveedoresForSelector($tarifa_id, $paginas, $tirada, $ancho, $alto); return $model->getProveedoresForSelector($tarifa_id, $paginas, $tirada, $ancho, $alto);
} }
public function get_dimensiones_enc(){ public function get_dimensiones_enc()
{
$dimensionModel = model('App\Models\Tarifas\TarifaEncuadernacionDimensionesModel'); $dimensionModel = model('App\Models\Tarifas\TarifaEncuadernacionDimensionesModel');
$dimensiones = $dimensionModel->getDimensiones(); $dimensiones = $dimensionModel->getDimensiones();
@ -137,12 +270,14 @@ class Test extends BaseController
} }
public function get_tarifas_encuadernacion($tipo_presupuesto, $solapas){ public function get_tarifas_encuadernacion($tipo_presupuesto, $solapas)
{
$model = model('App\Models\Presupuestos\TipoPresupuestoTarifaEncuadernacionModel'); $model = model('App\Models\Presupuestos\TipoPresupuestoTarifaEncuadernacionModel');
return $model->get_tarifas($tipo_presupuesto, $solapas); return $model->get_tarifas($tipo_presupuesto, $solapas);
} }
public function timeToSeconds(){ public function timeToSeconds()
{
$time = '99:59:59'; $time = '99:59:59';
$time_parts = explode(":", $time); $time_parts = explode(":", $time);
@ -150,7 +285,8 @@ class Test extends BaseController
echo "Time in seconds: " . $seconds; echo "Time in seconds: " . $seconds;
} }
public function getLP(){ public function getLP()
{
$lp_model = model('App\Models\Presupuestos\PresupuestoLineaModel'); $lp_model = model('App\Models\Presupuestos\PresupuestoLineaModel');
$data = $lp_model->getLineasPresupuesto(8); $data = $lp_model->getLineasPresupuesto(8);
$papel_imp_model = model('App\Models\Configuracion\PapelImpresionModel'); $papel_imp_model = model('App\Models\Configuracion\PapelImpresionModel');
@ -161,43 +297,48 @@ class Test extends BaseController
var_dump($linea->papel_impresion_id); var_dump($linea->papel_impresion_id);
var_dump($linea->maquina_id); var_dump($linea->maquina_id);
} }
} }
public function createLP(){ public function createLP()
{
$lp_model = model('App\Models\Presupuestos\PresupuestoLineaModel'); $lp_model = model('App\Models\Presupuestos\PresupuestoLineaModel');
$lp_model->createForPresupuesto(8); $lp_model->createForPresupuesto(8);
} }
public function getPapelesHQ(){ public function getPapelesHQ()
{
$model = model('App\Models\Configuracion\PapelGenericoModel'); $model = model('App\Models\Configuracion\PapelGenericoModel');
$data = $model->getPapelForComparador('colorhq', false, false); $data = $model->getPapelForComparador('colorhq', false, false);
var_dump($data); var_dump($data);
} }
public function getPapelesCubierta(){ public function getPapelesCubierta()
{
$model = model('App\Models\Configuracion\PapelGenericoModel'); $model = model('App\Models\Configuracion\PapelGenericoModel');
$data = $model->getPapelForComparador('colorhq', true, false); $data = $model->getPapelForComparador('colorhq', true, false);
var_dump($data); var_dump($data);
} }
public function getPapelesSobrecubierta(){ public function getPapelesSobrecubierta()
{
$model = model('App\Models\Configuracion\PapelGenericoModel'); $model = model('App\Models\Configuracion\PapelGenericoModel');
$data = $model->getPapelForComparador('colorhq', false, true, false); $data = $model->getPapelForComparador('colorhq', false, true, false);
var_dump($data); var_dump($data);
} }
public function getPapelesGuardas(){ public function getPapelesGuardas()
{
$model = model('App\Models\Configuracion\PapelGenericoModel'); $model = model('App\Models\Configuracion\PapelGenericoModel');
$data = $model->getPapelForComparador('color', false, false, false, true); $data = $model->getPapelForComparador('color', false, false, false, true);
var_dump($data); var_dump($data);
} }
public function getGramaje(){ public function getGramaje()
{
$model = new PapelGenericoModel(); $model = new PapelGenericoModel();
$data = $model->getGramajeComparador("AHUESADO OFFSET", "bnhq"); $data = $model->getGramajeComparador("AHUESADO OFFSET", "bnhq");
@ -224,7 +365,6 @@ class Test extends BaseController
$precio = PresupuestoService::getPrecioPliego($maquina, $papel_impresion, $paginas); $precio = PresupuestoService::getPrecioPliego($maquina, $papel_impresion, $paginas);
var_dump($precio); var_dump($precio);
} }
public function testGetMaquinasFromTarifas() public function testGetMaquinasFromTarifas()
@ -342,7 +482,6 @@ class Test extends BaseController
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa); $linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
var_dump($linea); var_dump($linea);
} }
} }
echo '</pre>'; echo '</pre>';
@ -523,8 +662,6 @@ class Test extends BaseController
echo '<pre>'; echo '<pre>';
var_dump($lineas); var_dump($lineas);
echo '</pre>'; echo '</pre>';
} }
public static function testLineasSobrecubierta() public static function testLineasSobrecubierta()
@ -616,8 +753,5 @@ class Test extends BaseController
echo '<pre>'; echo '<pre>';
var_dump($lineas); var_dump($lineas);
echo '</pre>'; echo '</pre>';
} }
} }

View File

@ -18,6 +18,162 @@ class PresupuestoService extends BaseService
const SANGRE_FORMAS_CUBIERTA = 20.0; const SANGRE_FORMAS_CUBIERTA = 20.0;
public static function getLineaPresupuestoPlana($data)
{
$uso = $data['uso'];
$tipo = $data['tipo'];
$datosPedido = $data['datosPedido'];
$cliente_id = $data['cliente_id'];
$papel = $data['papel'];
$opciones_papel = $data['opciones_papel'];
$maquina = $data['maquina'];
$papel_generico = $data['papel_generico'];
$isColor = $data['isColor'];
$a_favor_fibra = $data['a_favor_fibra'];
$datosTipolog = $data['datosTipolog'];
$gramaje = $data['gramaje'];
if ($maquina->is_inkjet) {
$parametrosInkjet = (object)array(
'a_favor_fibra' => $a_favor_fibra, // este parametro se cambia para comprobar
// en las dos direcciones (menos en rustica fresada que es siempre 1)
'bnPages' => $isColor ? 0 : $datosPedido->paginas,
'colorPages' => ($uso == 'guardas') ? $datosPedido->paginas_impresion : ($isColor ? $datosPedido->paginas : 0),
'rotativa_gota_negro' => 0,
'rotativa_gota_color' => 0,
);
$papelImpresionTipologiaModel = new \App\Models\Configuracion\PapelImpresionTipologiaModel();
if (is_null($datosTipolog)) {
$datosTipologias = $papelImpresionTipologiaModel
->findTipologiasForPapelImpresion($papel->id, $parametrosInkjet->colorPages > 0 ? 'color' : 'negro')
->get()->getResultObject();
if (count($datosTipologias) == 0) {
return [];
}
} else {
$datosTipologias = $datosTipolog;
}
$parametrosInkjet->rotativa_gota_negro = $datosTipologias[0]->gota_negro;
$parametrosInkjet->rotativa_gota_color = $datosTipologias[0]->gota_color;
$parametrosInkjet->rotativa_negro = $datosTipologias[0]->negro;
$parametrosInkjet->rotativa_cyan = $datosTipologias[0]->cyan;
$parametrosInkjet->rotativa_magenta = $datosTipologias[0]->magenta;
$parametrosInkjet->rotativa_amarillo = $datosTipologias[0]->amarillo;
$parametrosInkjet->rotativa_cg = $datosTipologias[0]->cg;
}
$tarifamodel = new \App\Models\Configuracion\MaquinasTarifasImpresionModel();
$datos_tarifa = $tarifamodel->getTarifa($maquina->maquina_id, ($uso == 'guardas') ? 'interior' : $uso, $tipo);
if (count($datos_tarifa) > 0) {
$tarifaId = $datos_tarifa[0];
$tarifa = $datos_tarifa[1];
$tarifa_margen = $datos_tarifa[2];
} else {
return [];
}
if ($maquina->is_inkjet) {
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa, $tarifa_margen, $parametrosInkjet->a_favor_fibra);
} else {
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa, $tarifa_margen);
}
if (array_key_exists('error', $linea)) {
//array_push($lineas, $linea); for debug
return [];
}
if ($maquina->is_inkjet) {
// calculo de tintas
$linea['fields'] = array_merge($linea['fields'], PresupuestoService::calculoCosteTintas($maquina, $datosPedido, $parametrosInkjet));
}
$linea['fields']['tarifa_impresion_id'] = $tarifaId;
$linea['fields']['maquina'] = $maquina->maquina;
$linea['fields']['maquina_id'] = $maquina->maquina_id;
$linea['fields']['maquina_velocidad'] = $maquina->velocidad;
$linea['fields']['papel_impresion'] = $papel->nombre;
$linea['fields']['papel_impresion_id'] = $papel->id;
$linea['fields']['paginas'] = $datosPedido->paginas;
$linea['fields']['gramaje'] = $gramaje;
$linea['fields']['papel_generico_id'] = $papel_generico['id'];
$linea['fields']['papel_generico'] = $papel_generico['nombre'];
$linea['fields']['tiempo_maquina'] = PresupuestoService::getTiempoMaquina(
$linea['fields']['precio_click_pedido'],
$linea['fields']['precio_click'],
$maquina->velocidad
);
$clientePreciosModel = new \App\Models\Clientes\ClientePreciosModel();
$config = (object)[
"tipo" => ($uso == 'guardas') ? 'interior' : $uso,
"tipo_maquina" => $maquina->is_inkjet ? 'inkjet' : 'toner',
"tipo_impresion" => $tipo
];
$tiempo = PresupuestoService::getHorasMaquina(
$linea['fields']['precio_click_pedido'],
$linea['fields']['precio_click'],
$maquina->velocidad
);
[$precio_hora, $margen_precio_hora] = $clientePreciosModel->get_precio_hora($cliente_id, $config, $tiempo);
if (is_null($precio_hora)) {
return [];
}
$linea['fields']['tipo_maquina'] = $maquina->is_inkjet ? 'inkjet' : 'toner';
$linea['fields']['precio_hora'] = $precio_hora * (1 + $margen_precio_hora / 100.0);
$linea['fields']['precio_hora_margen'] = $precio_hora * ($margen_precio_hora / 100.0);
$linea['fields']['horas_maquina'] = $tiempo;
$linea['fields']['precio_impresion_horas'] = $linea['fields']['precio_hora'] * $tiempo;
$linea['fields']['margen_impresion_horas'] = $linea['fields']['precio_hora_margen'] * $tiempo;
// para guardas
if (\property_exists($datosPedido, 'paginas_impresion')) {
$linea['fields']['paginas_impresion'] = $datosPedido->paginas_impresion;
}
if ($maquina->is_inkjet) {
$linea['fields']['a_favor_fibra'] = $parametrosInkjet->a_favor_fibra;
$linea['fields']['paginas_color'] = $isColor ? $datosPedido->paginas : 0;
$linea['fields']['totalClicksPedido'] = $linea['fields']['precio_click_pedido'];
if ($uso != 'guardas') {
$linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro']) * 2, 2);
} else {
if ($datosPedido->paginas_impresion == 4)
$linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro']), 2);
else if ($datosPedido->paginas_impresion == 8)
$linea['fields']['clicks_libro'] = round(ceil($linea['fields']['pliegos_libro']) * 2, 2);
else
$linea['fields']['clicks_libro'] = 0;
}
$linea['fields']['clicks_pedido'] = round($linea['fields']['clicks_libro'] * ($datosPedido->tirada + $datosPedido->merma), 2);
[$ancho, $alto] = PresupuestoService::calculoDimForma($datosPedido, $parametrosInkjet);
$linea['fields']['factor_anchura'] = round($maquina->ancho_impresion / $ancho, 2);
$linea['fields']['factor_altura'] = round($maquina->alto_impresion / ($alto + PresupuestoService::MARGEN_PAGINAS_ROTATIVA), 2);
$linea['fields']['paginas_por_pliego'] = ($datosPedido->isCosido) ? $linea['fields']['num_formas']['value'] * 2 : $linea['fields']['num_formas']['value'] * 2; // Se multiplica *2 porque es doble cara
$linea['fields']['datosTipologias'] = $datosTipologias[0];
$linea['fields']['total_impresion'] =
floatval($linea['fields']['precio_pedido']) + // papel
floatval($linea['fields']['precio_impresion_horas']) + // horas de maquina
floatval($linea['fields']['precio_click_pedido']) + // precio clicks del pedido
floatval($linea['fields']['precio_tinta']); // tinta
} else {
$linea['fields']['total_impresion'] = floatval($linea['fields']['precio_pedido']) + // papel
floatval($linea['fields']['precio_click_pedido']) + // precio clicks del pedido
floatval($linea['fields']['precio_impresion_horas']); // horas de maquina
}
return $linea;
}
/** /**
* @param mixed $uso * @param mixed $uso
* contiene algun parametro de la lista ['interior,'cubierta','sobrecubierta'] * contiene algun parametro de la lista ['interior,'cubierta','sobrecubierta']
@ -103,17 +259,14 @@ class PresupuestoService extends BaseService
elseif (floatval($datosPedido->paginas_impresion) == 4) { // Una cara elseif (floatval($datosPedido->paginas_impresion) == 4) { // Una cara
$precio_click_pedido = $pliegos_pedido * $precio_click; $precio_click_pedido = $pliegos_pedido * $precio_click;
$margen_click_pedido = $pliegos_pedido * $margen_click; $margen_click_pedido = $pliegos_pedido * $margen_click;
} } else { // dos caras (impresion normal)
else{ // dos caras (impresion normal)
$precio_click_pedido = $pliegos_pedido * 2 * $precio_click; $precio_click_pedido = $pliegos_pedido * 2 * $precio_click;
$margen_click_pedido = $pliegos_pedido * 2 * $margen_click; $margen_click_pedido = $pliegos_pedido * 2 * $margen_click;
} }
} } else {
else {
$precio_click_pedido = $pliegos_pedido * 2 * $precio_click; $precio_click_pedido = $pliegos_pedido * 2 * $precio_click;
$margen_click_pedido = $pliegos_pedido * 2 * $margen_click; $margen_click_pedido = $pliegos_pedido * 2 * $margen_click;
} }
} }
// cubierta o sobrecubierta (siempre a color) // cubierta o sobrecubierta (siempre a color)
else if (($cubierta == 1 || $sobrecubierta == 1) && $rotativa == 0) { else if (($cubierta == 1 || $sobrecubierta == 1) && $rotativa == 0) {
@ -236,7 +389,8 @@ class PresupuestoService extends BaseService
$datosPedido->ancho, $datosPedido->ancho,
$datosPedido->alto, $datosPedido->alto,
$datosPedido->isCosido, $datosPedido->isCosido,
$parametrosRotativa->a_favor_fibra); $parametrosRotativa->a_favor_fibra
);
$data['num_formas'] = $formas; $data['num_formas'] = $formas;
return $data; return $data;
@ -246,13 +400,13 @@ class PresupuestoService extends BaseService
/** /**
* Devuelve los calculos de las dimensiones de la forma * Devuelve los calculos de las dimensiones de la forma
*/ */
public static function calculoDimForma($datosPedido, $parametros){ public static function calculoDimForma($datosPedido, $parametros)
{
// posicionamos paginas en función de a favor de fibra o no // posicionamos paginas en función de a favor de fibra o no
if (!$parametros->a_favor_fibra) { if (!$parametros->a_favor_fibra) {
$anchoLibro = $datosPedido->alto; $anchoLibro = $datosPedido->alto;
$altoLibro = $datosPedido->ancho; $altoLibro = $datosPedido->ancho;
} } else {
else{
$anchoLibro = $datosPedido->ancho; $anchoLibro = $datosPedido->ancho;
$altoLibro = $datosPedido->alto; $altoLibro = $datosPedido->alto;
} }
@ -310,8 +464,9 @@ class PresupuestoService extends BaseService
round(($data['peso_gotas_negro_pedido'] / 1000.0) * $maquina->precio_tinta_negro, 2) + round(($data['peso_gotas_negro_pedido'] / 1000.0) * $maquina->precio_tinta_negro, 2) +
round(($data['peso_gotas_cyan_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2) + round(($data['peso_gotas_cyan_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2) +
round(($data['peso_gotas_magenta_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2) + round(($data['peso_gotas_magenta_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2) +
round(($data['peso_gotas_amarillo_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2) round(($data['peso_gotas_amarillo_pedido'] / 1000.0) * $maquina->precio_tinta_color, 2),
, 2); 2
);
if ($maquina->is_inkjet) { if ($maquina->is_inkjet) {
@ -396,14 +551,14 @@ class PresupuestoService extends BaseService
// El ancho si es cosido es el doble // El ancho si es cosido es el doble
if ($uso != 'cubierta' && $uso != 'sobrecubierta') { if ($uso != 'cubierta' && $uso != 'sobrecubierta') {
$anchoForCalculo = $isCosido ? $ancho * 2 : $ancho; $anchoForCalculo = $isCosido ? $ancho * 2 : $ancho;
} } else {
else{
$anchoForCalculo = $ancho; $anchoForCalculo = $ancho;
} }
$altoForCalculo = $alto; $altoForCalculo = $alto;
/* /*
Log ancho y alto de impresion y libro //Log ancho y alto de impresion y libro
$info = [ $info = [
'ancho' => $anchoForCalculo, 'ancho' => $anchoForCalculo,
'alto' => $altoForCalculo, 'alto' => $altoForCalculo,
@ -412,14 +567,20 @@ class PresupuestoService extends BaseService
]; ];
if ($uso == 'cubierta') if ($uso == 'cubierta')
log_message('error', 'ancho:{ancho} --- alto:{alto} --- ancho2:{maquina_ancho} --- alto2:{maquina_alto} ---', $info);*/ log_message('error', 'ancho:{ancho} --- alto:{alto} --- ancho_m:{maquina_ancho} --- alto_m:{maquina_alto} ---', $info);
*/
if ($uso == 'cubierta' || $uso == 'sobrecubierta') { if ($uso == 'cubierta' || $uso == 'sobrecubierta') {
if(property_exists($maquina, 'forzar_num_formas_horizontales_cubierta') && if (
property_exists($maquina, 'forzar_num_formas_verticales_cubierta')){ !is_null($maquina->forzar_num_formas_horizontales_cubierta) &&
!is_null($maquina->forzar_num_formas_verticales_cubierta)
if($maquina->forzar_num_formas_horizontales_cubierta > 0 && ) {
$maquina->forzar_num_formas_verticales_cubierta > 0){
if (
$maquina->forzar_num_formas_horizontales_cubierta > 0 &&
$maquina->forzar_num_formas_verticales_cubierta > 0
) {
// Hay que comprobar que entran // Hay que comprobar que entran
$h1_temp = $maquina->forzar_num_formas_horizontales_cubierta; $h1_temp = $maquina->forzar_num_formas_horizontales_cubierta;
@ -427,7 +588,6 @@ class PresupuestoService extends BaseService
//$num_formas = $h1_temp * $h2_temp; //$num_formas = $h1_temp * $h2_temp;
} }
} }
} }
// No es cubierta ni sobrecubierta // No es cubierta ni sobrecubierta
else { else {
@ -451,6 +611,19 @@ class PresupuestoService extends BaseService
$v1 = floor($maquina->alto_impresion / $altoForCalculo); $v1 = floor($maquina->alto_impresion / $altoForCalculo);
$formas_h = $h1 * $v1; //p1 $formas_h = $h1 * $v1; //p1
/*
//Log ancho y alto de impresion y libro
$info = [
'h1' => $h1,
'v1' => $v1,
'num_formas' => $formas_h,
'h1_temp' => $h1_temp,
];
if($uso == 'cubierta' )
log_message('error', 'h1:{h1} --- v1:{v1} --- num_formas:{num_formas} --- h1_temp:{h1_temp}', $info);
*/
// verticales // verticales
$calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, $h2_temp); $calles = (new \App\Models\Configuracion\MaquinasCallesModel())->getCallesForMaquina($maquina->maquina_id, $h2_temp);
@ -468,14 +641,11 @@ class PresupuestoService extends BaseService
if ($uso != 'cubierta' && $uso != 'sobrecubierta' && !$forzar_a_favor_fibra) { if ($uso != 'cubierta' && $uso != 'sobrecubierta' && !$forzar_a_favor_fibra) {
$num_formas = ($formas_h > $formas_v) ? $formas_h : $formas_v; $num_formas = ($formas_h > $formas_v) ? $formas_h : $formas_v;
$num_formas = $isCosido ? $num_formas * 2 : $num_formas; $num_formas = $isCosido ? $num_formas * 2 : $num_formas;
} } else if ($forzar_a_favor_fibra) {
else if ($forzar_a_favor_fibra){
$num_formas = $formas_h; $num_formas = $formas_h;
$num_formas = $isCosido ? $num_formas * 2 : $num_formas; $num_formas = $isCosido ? $num_formas * 2 : $num_formas;
} else {
}
else{
$num_formas = $h1 * $v1; $num_formas = $h1 * $v1;
} }
@ -484,15 +654,13 @@ class PresupuestoService extends BaseService
// si no hay formas se devuelve n/a // si no hay formas se devuelve n/a
if ($num_formas == 0) { if ($num_formas == 0) {
$response['num_formas']['posicion_formas'] = 'n/a'; // not available $response['num_formas']['posicion_formas'] = 'n/a'; // not available
} } else {
else{
if ($formas_h > $formas_v || $forzar_a_favor_fibra && $formas_h != 0) { if ($formas_h > $formas_v || $forzar_a_favor_fibra && $formas_h != 0) {
$response['num_formas']['posicion_formas'] = 'h'; $response['num_formas']['posicion_formas'] = 'h';
$response['num_formas']['num_formas_horizontales'] = $h1; $response['num_formas']['num_formas_horizontales'] = $h1;
$response['num_formas']['num_formas_verticales'] = $v1; $response['num_formas']['num_formas_verticales'] = $v1;
$response['num_formas']['value'] = $num_formas; $response['num_formas']['value'] = $num_formas;
} } else {
else {
if ($formas_v != 0) { if ($formas_v != 0) {
$response['num_formas']['posicion_formas'] = 'v'; $response['num_formas']['posicion_formas'] = 'v';
$response['num_formas']['num_formas_horizontales'] = $h2; $response['num_formas']['num_formas_horizontales'] = $h2;
@ -502,13 +670,13 @@ class PresupuestoService extends BaseService
} }
if (($uso == 'cubierta' || $uso == 'sobrecubierta') && $num_formas > 0) { if (($uso == 'cubierta' || $uso == 'sobrecubierta') && $num_formas > 0) {
if(property_exists($maquina, 'forzar_num_formas_horizontales_cubierta') && if (
property_exists($maquina, 'forzar_num_formas_horizontales_cubierta')){ property_exists($maquina, 'forzar_num_formas_horizontales_cubierta') &&
property_exists($maquina, 'forzar_num_formas_horizontales_cubierta')
) {
$response['num_formas']['num_formas_verticales'] = $h2_temp; $response['num_formas']['num_formas_verticales'] = $h2_temp;
} }
} }
} }
return $response; return $response;
@ -527,7 +695,8 @@ class PresupuestoService extends BaseService
return -1; return -1;
} }
public static function getTiempoMaquina($totalClicks, $precioClick, $velocidadMaquina) { public static function getTiempoMaquina($totalClicks, $precioClick, $velocidadMaquina)
{
try { try {
if ($precioClick > 0 && $velocidadMaquina > 0) if ($precioClick > 0 && $velocidadMaquina > 0)
@ -536,13 +705,13 @@ class PresupuestoService extends BaseService
$minutos = 0; $minutos = 0;
return gmdate("H:i:s", round($minutos * 60, 0)); return gmdate("H:i:s", round($minutos * 60, 0));
} catch (Exception $e) { } catch (Exception $e) {
return gmdate("H:i:s", round(0, 0)); return gmdate("H:i:s", round(0, 0));
} }
} }
public static function getHorasMaquina($totalClicks, $precioClick, $velocidadMaquina) { public static function getHorasMaquina($totalClicks, $precioClick, $velocidadMaquina)
{
try { try {
if ($precioClick > 0 && $velocidadMaquina > 0) if ($precioClick > 0 && $velocidadMaquina > 0)
@ -551,7 +720,6 @@ class PresupuestoService extends BaseService
$horas = 0; $horas = 0;
return $horas; return $horas;
} catch (Exception $e) { } catch (Exception $e) {
return 0; return 0;
} }
@ -562,7 +730,7 @@ class PresupuestoService extends BaseService
* Devuelve el ancho de la cubierta/sobrecubierta, incluido el lomo. * Devuelve el ancho de la cubierta/sobrecubierta, incluido el lomo.
* El $uso tiene que ser "cubierta" o "sobrecubierta" * El $uso tiene que ser "cubierta" o "sobrecubierta"
*/ */
public static function getAnchoTotalExteriores($uso="cubierta", $tipo_impresion_id, $datosPedido=null) public static function getAnchoTotalExteriores($uso = "cubierta", $tipo_impresion_id = 1, $datosPedido = null)
{ {
$ancho_total = 0; $ancho_total = 0;
@ -591,8 +759,7 @@ class PresupuestoService extends BaseService
// Se añaden 5mm de sangre por cada lado + 2 * 7mm de vuelo portada y contraportada -> total 52 // Se añaden 5mm de sangre por cada lado + 2 * 7mm de vuelo portada y contraportada -> total 52
else else
$ancho_total += (2 * 7 + 2 * self::SANGRE_FORMAS) + 7; $ancho_total += (2 * 7 + 2 * self::SANGRE_FORMAS) + 7;
} } else {
else{
// En cualquier otro caso se le suma 5mm de sangre por cada lado // En cualquier otro caso se le suma 5mm de sangre por cada lado
$ancho_total += (2 * self::SANGRE_FORMAS); $ancho_total += (2 * self::SANGRE_FORMAS);
} }
@ -603,7 +770,7 @@ class PresupuestoService extends BaseService
/** /**
* Devuelve el alto de la cubierta/sobrecubierta * Devuelve el alto de la cubierta/sobrecubierta
*/ */
public static function getAltoTotalExteriores($uso="cubierta", $tipo_impresion_id, $datosPedido=null) public static function getAltoTotalExteriores($uso = "cubierta", $tipo_impresion_id = 1, $datosPedido = null)
{ {
$alto_total = 0; $alto_total = 0;
@ -618,7 +785,6 @@ class PresupuestoService extends BaseService
// Se añaden 5mm de sangre por cada lado + 7mm de vuelo -> total 52 // Se añaden 5mm de sangre por cada lado + 7mm de vuelo -> total 52
else else
$alto_total += (7 + 2 * self::SANGRE_FORMAS); $alto_total += (7 + 2 * self::SANGRE_FORMAS);
} }
// En cualquier otro caso se le suma 5mm de sangre por cada lado // En cualquier otro caso se le suma 5mm de sangre por cada lado
else { else {
@ -628,6 +794,45 @@ class PresupuestoService extends BaseService
return $alto_total; return $alto_total;
} }
public static function get_opciones_papel($uso, $isColor)
{
$opciones_papel = [];
if ($uso == 'cubierta') {
$opciones_papel = array(
'cubierta' => 1,
//'color' => 1,
'rotativa' => 0,
);
} else if ($uso == 'sobrecubierta') {
$opciones_papel = array(
'sobrecubierta' => 1,
//'color' => 1,
'rotativa' => 0,
);
} else if ($uso == 'guardas') {
$opciones_papel = array(
'guardas' => 1,
//'color' => 1,
'rotativa' => 0,
);
} else if ($isColor) {
$opciones_papel = array(
'color' => 1,
'rotativa' => 0,
);
} else {
$opciones_papel = array(
'bn' => 1,
'rotativa' => 0,
);
}
return $opciones_papel;
}
/** /**
* Devuelve la dimensión del lomo interior. * Devuelve la dimensión del lomo interior.
*/ */
@ -666,6 +871,4 @@ class PresupuestoService extends BaseService
return $peso; return $peso;
} }
} }

View File

@ -12,15 +12,11 @@ const actionBtns_tiradasAlt = function (data) {
// Inicializaciones de la tabla de tiradas // Inicializaciones de la tabla de tiradas
var tableTiradas; var tableTiradas;
var editor;
(async () => { (async () => {
while (!window.hasOwnProperty("editor_url") && !window.hasOwnProperty("editor_headers"))
await new Promise(resolve => setTimeout(resolve, 200));
initEditorTiradas()
while (!window.hasOwnProperty("datatable_lang_url")) while (!window.hasOwnProperty("datatable_lang_url") && !window.hasOwnProperty("datatable_TA_url"))
await new Promise(resolve => setTimeout(resolve, 200)); await new Promise(resolve => setTimeout(resolve, 200));
initTableTiradas(); initTableTiradas();
@ -36,42 +32,69 @@ var editor;
})(); })();
function initEditorTiradas() { $('#add_tirada_alt').on('click', function () {
editor = new $.fn.dataTable.Editor({ const dimension = getDimensionLibro();
ajax: {
url: window.editor_url,
headers: window.editor_headers,
}, let datos = {
table: "#tableTiradas", tirada: $('#tirada_alt').val(),
idSrc: 'id', merma: 20, ->>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>calcular merma
fields: [ tipo_impresion_id: $('#tipo_impresion_id').val(),
{ json_tiradas: generate_json_tiradas(),
name: "tirada", ancho: dimension.ancho,
}, { alto: dimension.alto,
name: "coste_impresion", cliente_id: $('#clienteId').find(":selected").val(),
type: "hidden" solapas_cubierta: $('#solapas').is(':checked')?1:0,
}, { solapas_cubierta_ancho: $('#solapas').is(':checked')?parseInt($('#solapas_ancho').val()):0,
name: "coste_envio", solapas_sobrecubierta: $('#solapas_sobrecubierta').is(':checked')?1:0,
type: "hidden" solapas_sobrecubierta_ancho: $('#solapas_sobrecubierta').is(':checked')?parseInt($('#solapas_ancho_sobrecubierta').val()):0,
}, { lomo: getLomoExterior(),
name: "margen", };
type: "hidden"
}, { datos = Object.assign(datos, window.token_ajax);
name: "total_pedido",
type: "hidden" $.ajax({
}, { type: "POST",
name: "precio_unidad", url: window.get_tirada_url,
type: "hidden" data: datos,
}, { success: function (data) {
name: "json_tiradas",
type: "hidden" if(data.lineas.length >0){
}, // Se cogen los valores de la linea con los datos correspondientes
] $.each(data.lineas, function(key, value) {
console.log(value);
}); });
}
else{
}
yeniden(data[window.csrf_token]);
},
error: function(e){
}
});
});
function getLomoExterior(){
let lomoTotal = 0
try{
$('#tableLineasPresupuesto').DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) {
var rowData = this.data();
if(rowData.row_id != 'lp_cubierta' && rowData.tipo != 'lp_sobrecubierta')
lomoTotal += parseFloat(rowData.lomo)
})
}
catch(error){
lomoTotal = 0
}
return lomoTotal
} }
// Inicialización de la tabla de tiradas
function initTableTiradas() { function initTableTiradas() {
tableTiradas = $('#tableTiradas').DataTable({ tableTiradas = $('#tableTiradas').DataTable({
"language": { "language": {
@ -83,7 +106,6 @@ function initTableTiradas() {
"ordering": false, "ordering": false,
"autoWidth": false, "autoWidth": false,
"responsive": true, "responsive": true,
"dom": '<"mt-4"><"float-end"B><"float-start"l><t>', //"Blt",
"columnDefs": [ "columnDefs": [
{ {
orderable: false, orderable: false,
@ -103,16 +125,6 @@ function initTableTiradas() {
className: 'row-edit dt-center' className: 'row-edit dt-center'
} }
], ],
"buttons": [{
className: 'btn btn-primary float-end me-sm-3 me-1',
text: '<i class="ti ti-circle-plus"></i>',
extend: "createInline",
editor: editor,
formOptions: {
submitTrigger: -1,
submitHtml: '<a href="javascript:void(0);"><i class="ti ti-device-floppy"></i></a>',
}
}]
}); });
} }
@ -130,17 +142,35 @@ $(document).on('click', '.btn-delete-tirada', function (e) {
// Función para generar el JSON de las lineas de presupuesto para calcular las tiradas // Función para generar el JSON de las lineas de presupuesto para calcular las tiradas
function generate_json_tiradas() { function generate_json_tiradas() {
const data = $('#tableLineasPresupuesto').DataTable().data().toArray(); const data = $('#tableLineasPresupuesto').DataTable().data().toArray();
return JSON.stringify(filterData(data, //return data; // For debugging purposes
json = filterData(data,
['paginas', ['paginas',
'numPagColor', 'numPagColor',
'paginas_impresion', 'paginas_impresion',
'papel', // papel generico
'papel_impresion_id', 'papel_impresion_id',
'gramaje', 'gramaje',
'maquina_id', 'maquina_id',
'maquinaTipo', 'aFavorFibra',
'row_id'])); 'row_id',
'check_papel_total',
'check_impresion_total',
'cobAmarillo', // tipologia de papel
'cobCyan',
'cobMagenta',
'cobNegro',
'cobCG',
'gotaColor',
'gotaNegro']);
json.forEach(element => {
element['check_papel_total'] = $('#' + element['row_id'] + '_checkPapel').is(':checked') ? 1 : 0;
element['check_impresion_total'] = $('#' + element['row_id'] + '_checkClicks').is(':checked') ? 1 : 0;
});
return JSON.stringify(json);
} }

View File

@ -15,7 +15,10 @@
<div class="col-xl-12"> <div class="col-xl-12">
<div class="border rounded p-4 mb-3 pb-3"> <div class="border rounded p-4 mb-3 pb-3">
<p><?= lang('Presupuestos.tiradasInfoIVA') ?></p> <p><?= lang('Presupuestos.tiradasInfoIVA') ?></p>
<div class='d-flex justify-content-end '>
<input id="tirada_alt" type="number" style="width: 10% !important; display: inline-flex !important" class="form-control" value="1" min="1" step="1">
<button id="add_tirada_alt" type="button" class="btn btn-secondary waves-effect waves-light"><i class="ti ti-circle-plus"></i></button>
</div>
<table id="tableTiradas" class="comparator-table table dt-responsive dataTable" style="width: 100%;"> <table id="tableTiradas" class="comparator-table table dt-responsive dataTable" style="width: 100%;">
<thead> <thead>
<tr> <tr>
@ -48,9 +51,13 @@
<!-------------------------------------------------------> <!------------------------------------------------------->
<?= $this->section("additionalInlineJs") ?> <?= $this->section("additionalInlineJs") ?>
window.datatable_lang_url = "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json"; window.datatable_lang_url = "/themes/vuexy/vendor/libs/datatables-sk/plugins/i18n/es-ES.json";
window.editor_url = "<?= route_to('editorOfMaquinasTarifaImpresion') ?>";
window.editor_headers= {<?= csrf_token() ?? "token" ?>: <?= csrf_token() ?>v}; window.datatable_TA_url = "<?= route_to('dataTableOfPresupuestoTiradasAlternativas') ?>";
window.get_tirada_url = "<?= route_to('getTiradaData') ?>";
window.token_ajax= {<?= csrf_token() ?? "token" ?>: <?= csrf_token() ?>v};
window.csrf_token = '<?= csrf_token() ?>';
<?= $this->endSection() ?> <?= $this->endSection() ?>