modificacion hecha

This commit is contained in:
Jaime Jiménez
2024-01-07 20:19:54 +01:00
parent 2f5c205902
commit 55f26c85b8
21 changed files with 537 additions and 107 deletions

View File

@ -168,8 +168,8 @@ class Maquinas extends \App\Controllers\GoBaseResourceController
if ($this->request->getPost('is_rotativa') == null) {
$sanitizedData['is_rotativa'] = false;
}
if ($this->request->getPost('is_tinta') == null) {
$sanitizedData['is_tinta'] = false;
if ($this->request->getPost('is_inkjet') == null) {
$sanitizedData['is_inkjet'] = false;
}
// JJO

View File

@ -164,6 +164,7 @@ class Maquinaspapelesimpresion extends \App\Controllers\GoBaseResourceController
$maquina_id = $reqData['maquina_id'] ?? -1;
// Para saber si el papel que se tiene que mostrar es para rotativa
$isRotativa= $reqData['isRotativa'] ?? 0;
$isInkjet= $reqData['isInkjet'] ?? 0;
// modelos usados
$tarifa_model = new MaquinasTarifasImpresionModel();
@ -172,13 +173,13 @@ class Maquinaspapelesimpresion extends \App\Controllers\GoBaseResourceController
$tarifas = $tarifa_model->getResource("", $maquina_id)->get()->getResultObject();
// 1- Se obtienen los papeles que hay seleccionados (de la tabla lg_maquina_papel_impresion y que coincidan con las tarifas actuales)
$initData = $this->model->getInitData($isRotativa, $tarifas, $maquina_id);
$initData = $this->model->getInitData($isRotativa, $isInkjet, $tarifas, $maquina_id);
// 2- Se cuentan los resultados. Si no hay coincidencias, hay que crear la tabla pivote con todos los papeles que cumplan la
// condición de las tarifas y con la columna active a 0. Si hay coincidencias, se guardan los activos en un array
$selected_papers = $initData->countAllResults();
$active_values = [];
if($selected_papers > 0){
$active_values = $this->model->getInitData($isRotativa, $tarifas, $maquina_id)->get()->getResult('array');
$active_values = $this->model->getInitData($isRotativa, $isInkjet, $tarifas, $maquina_id)->get()->getResult('array');
}
// Primero se borran las filas con la maquina_id de la tabla pivote
$this->model->deleteRows($maquina_id);

View File

@ -205,10 +205,13 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController
if ($this->request->getPost('rotativa') == null) {
$sanitizedData['rotativa'] = false;
}
if ($this->request->getPost('inkjet') == null) {
$sanitizedData['inkjet'] = false;
}
// Hay que asegurarse de que se quitan los consumos de tintas de rotativa
// en caso de que se haya deseleccionado la opción rotativa
if(!$sanitizedData['rotativa']){
if(!$sanitizedData['rotativa'] && !$sanitizedData['inkjet']){
$this->tpModel->removeForPapelImpresion($id);
}
@ -221,8 +224,7 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController
$noException = true;
if ($successfulResult = $this->canValidate()) : // if ($successfulResult = $this->validate($this->formValidationRules) ) :
if ($this->canValidate()) :
try {
$successfulResult = $this->model->skipValidation(true)->update($id, $sanitizedData);
@ -415,12 +417,12 @@ class Papelesimpresion extends \App\Controllers\GoBaseResourceController
$ma_model = new MaquinaModel();
$ma_pa_model = new MaquinasPapelesImpresionModel();
$active_values = $ma_pa_model->getInitSelectedMachines($id, $data['rotativa'])->get()->getResult('array');
$active_values = $ma_pa_model->getInitSelectedMachines($id, $data['rotativa'], $data['inkjet'])->get()->getResult('array');
$ma_pa_model->deleteForPapelImpresion($id);
// Se obtienen las máquinas que cumplen las condiciones
$rows = $ma_model->getIdMaquinasForPapelImpresion($id, $data['rotativa'])->get()->getResult('array');
$rows = $ma_model->getIdMaquinasForPapelImpresion($id, $data['rotativa'], $data['inkjet'])->get()->getResult('array');
$ma_pa_model->insertRows($rows);
// Se actualizan los activos que había en caso de que los hubiera

View File

@ -444,7 +444,21 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
if ($type=='interior') {
$resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id);
$datosTipolog = $reqData['negro'] ?? null;
if(!is_null($datosTipolog)){
$datosTipolog = [];
$data = (object)array(
'negro' => intval($reqData['negro']) ?? 0,
'cyan' => intval($reqData['cyan']) ?? 0,
'magenta' => intval($reqData['magenta']) ?? 0,
'amarillo' => intval($reqData['amarillo']) ?? 0,
'gota_negro' => intval($reqData['gota_negro']) ?? 0,
'gota_color' => intval($reqData['gota_color']) ?? 0,
);
array_push($datosTipolog, $data);
}
$resourceData = $this->getCompIntData($type, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id, $datosTipolog);
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
@ -560,7 +574,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
}
public function getCompIntData($uso, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id)
public function getCompIntData($uso, $datosPedido, $papel_generico, $gramaje, $isColor, $isHq, $cliente_id, $datosTipolog = null)
{
$tipo = $isColor? ($isHq?'colorhq':'color'): ($isHq?'negrohq':'negro');
@ -615,15 +629,61 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
// Se recorren las máquinas y se calcula el coste de linea por cada una
foreach ($maquinas as $maquina) {
if($maquina->is_inkjet){
$parametrosInkjet = (object)array(
'a_favor_fibra' => 1, // este parametro se cambia para comprobar
// en las dos direcciones (menos en rustica fresada que es siempre 1)
'bnPages' => $isColor?0:$datosPedido->paginas,
'colorPages' => $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){
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;
}
$tarifamodel = new MaquinasTarifasImpresionModel();
[$tarifaId, $tarifa] = $tarifamodel->getTarifa($maquina->maquina_id, $uso, $tipo);
if(!is_float($tarifa)){
continue;
}
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
if($maquina->is_inkjet){
$linea['fields'] = PresupuestoService::getCostesLineaRotativa($maquina, $papel, $datosPedido, $parametrosInkjet);
[$precio_pliego_impresion, $margen_pliego_impresion] = PresupuestoService::getPrecioPliego($maquina, $papel, $datosPedido->paginas);
$linea['fields']['precios_pliegos'] = $precio_pliego_impresion;
$linea['fields']['precio_libro'] = $linea['fields']['pliegos_libro'] * $precio_pliego_impresion;
$linea['fields']['a_favor_fibra'] = $parametrosInkjet->a_favor_fibra;
$linea['fields']['paginas_color'] = $isColor?$datosPedido->paginas:0;
$linea['fields']['datosTipologias'] = $datosTipologias[0];
}
else{
$linea = PresupuestoService::getCostesLinea($uso, $datosPedido, $maquina, $papel, $opciones_papel, $tarifa);
}
if(array_key_exists('error', $linea))
continue;
$linea['fields']['tarifa_impresion_id'] = $tarifaId;
$linea['fields']['maquina'] = $maquina->maquina;
$linea['fields']['maquina_id'] = $maquina->maquina_id;
@ -634,6 +694,11 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$linea['fields']['gramaje'] = $gramaje;
$linea['fields']['papel_generico_id'] = $papel_generico['id'];
$linea['fields']['papel_generico'] = $papel_generico['nombre'];
if($maquina->is_inkjet){
$linea['fields']['precio_click'] = $tarifa;
$linea['fields']['precio_click_pedido'] = $linea['fields']['clicks_pedido'] * $linea['fields']['precio_click'];
}
$linea['fields']['tiempo_maquina'] = PresupuestoService::getTiempoMaquina(
$linea['fields']['precio_click_pedido'],
$linea['fields']['precio_click'],
@ -642,7 +707,7 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
$clientePreciosModel = new ClientePreciosModel();
$config = (object)[
"tipo" => $uso,
"tipo_maquina" => $maquina->is_tinta?'inkjet':'toner',
"tipo_maquina" => $maquina->is_inkjet?'inkjet':'toner',
"tipo_impresion" => $tipo
];
$tiempo = PresupuestoService::getHorasMaquina(
@ -655,15 +720,27 @@ class Cosidotapablanda extends \App\Controllers\GoBaseResourceController
continue;
}
$linea['fields']['tipo_maquina'] = $maquina->is_tinta?'inkjet':'toner';
$linea['fields']['tipo_maquina'] = $maquina->is_inkjet?'inkjet':'toner';
$linea['fields']['precio_hora'] = $precio_hora*$margen_precio_hora/100.0;
$linea['fields']['precio_hora_margen'] = $margen_precio_hora;
$linea['fields']['horas_maquina'] = $tiempo;
$linea['fields']['precio_impresion_horas'] = $precio_hora*$tiempo*1.0;
$linea['fields']['margen_impresion_horas'] = $precio_hora*$tiempo*1.0*$margen_precio_hora/100.0;
$linea['fields']['total_impresion'] = $linea['fields']['precio_pedido'] + // papel
$linea['fields']['precio_impresion_horas']; // impresion
if($maquina->is_inkjet){
$linea['fields']['precio_pedido'] = $linea['fields']['precio_libro'] * ($datosPedido->tirada + $datosPedido->merma);
$linea['fields']['margen_papel_pedido'] = $linea['fields']['pliegos_libro']*$margen_pliego_impresion* ($datosPedido->tirada + $datosPedido->merma); ;
$linea['fields']['total_impresion'] =
$linea['fields']['precio_pedido'] + // papel
$linea['fields']['precio_impresion_horas'] + $linea['fields']['margen_impresion_horas'] + // horas de maquina
$linea['fields']['precio_tinta']; // tinta
}
else{
$linea['fields']['total_impresion'] = $linea['fields']['precio_pedido'] + // papel
$linea['fields']['precio_impresion_horas']; // impresion
}
array_push($lineas, $linea);
}

View File

@ -18,8 +18,20 @@ class Test extends BaseController
public function index()
{
$this->asignar_tarifa_defecto_todos_usuarios();
$maquina_id = 114;
echo '<pre>';
$papelimpresion_model = model('App\Models\Configuracion\PapelImpresionModel');
$tarifa_model = model('App\Models\Configuracion\MaquinasTarifasImpresionModel');
$tarifas = $tarifa_model->getResource("", $maquina_id)->get()->getResultObject();
var_dump($tarifas);
$papeles = $papelimpresion_model->getIdPapelesImpresion($maquina_id, $tarifas)->get()->getResult('array');
var_dump($papeles);
echo '</pre>';
}
private function asignar_tarifa_defecto_todos_usuarios()