trabajando en los envios

This commit is contained in:
Jaime Jiménez
2024-03-04 15:01:12 +01:00
parent 536e70ec64
commit 64e9c9e5df
12 changed files with 682 additions and 377 deletions

View File

@ -33,5 +33,17 @@ class Js_loader extends BaseController
return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_tiradasAlternativasItems.js');
}
function datosServicios_js()
{
$this->response->setHeader('Content-Type', 'text/javascript');
return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosServiciosItems.js');
}
function datosEnvios_js()
{
$this->response->setHeader('Content-Type', 'text/javascript');
return view('themes/backend/vuexy/form/presupuestos/cosidotapablanda/_datosEnvios.js');
}
}

View File

@ -140,5 +140,32 @@ class Presupuestodirecciones extends \App\Controllers\GoBaseResourceController
}
}
public function datatable_2(){
$reqData = $this->request->getJSON();
if($reqData->tipo=='get_tarifa'){
$peso = $reqData->peso ?? 0;
$paisId = $reqData->paisId ?? 0;
$cp = $reqData->cp ?? 0;
$tipo_envio = $reqData->tipo_envio ?? 'cajas';
$model = model('App\Models\Tarifas\TarifaEnvioModel');
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
$values = $model->getTarifaEnvio($paisId, $cp, $peso, $tipo_envio);
$data = [
'data' => count($values)>0?$values[0]:[],
$csrfTokenName => $newTokenHash
];
return $this->respond($data);
}
else if($reqData->tipo=='clear_lineas'){
$presupuesto_id = $reqData->presupuesto_id ?? 0;
return $this->respond($this->model->where('presupuesto_id', $presupuesto_id)->delete());
}
}
}

View File

@ -77,174 +77,176 @@ class Presupuestotiradasalternativas extends \App\Controllers\GoBaseResourceCont
public function datatable_2()
{
if ($this->request->isAJAX()) {
$reqData = $this->request->getPost();
$reqData = $this->request->getPost();
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
$json_data = $reqData['json_tiradas'] ?? null;
$cliente_id = $reqData['cliente_id'] ?? 0;
$json_data = $reqData['json_tiradas'] ?? null;
$cliente_id = $reqData['cliente_id'] ?? 0;
$tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4;
$tipo_impresion_id = $reqData['tipo_impresion_id'] ?? 4;
$values = [];
$values = [];
if ($json_data) {
if ($json_data) {
$data = json_decode($json_data, true);
$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
);
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);
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';
$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);
$datosPedido->anchoExteriores = PresupuestoService::getAnchoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
$datosPedido->altoExteriores = PresupuestoService::getAltoTotalExteriores($type, $tipo_impresion_id, $datosPedido);
}
} else {
$values = [];
$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'];
}
$linea_coste['total_margen'] = $linea_coste['fields']['margen_papel_pedido'] +
$linea_coste['fields']['margen_impresion_horas'] +
$linea_coste['fields']['margen_click_pedido'];
unset($linea_coste['fields']);
array_push($values, $linea_coste);
}
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
$response[$csrfTokenName] = $newTokenHash;
$response['lineas'] = $values;
return $this->respond($response);
} else {
return $this->failUnauthorized('Invalid request', 403);
$values = [];
}
$newTokenHash = csrf_hash();
$csrfTokenName = csrf_token();
$response[$csrfTokenName] = $newTokenHash;
$response['lineas'] = $values;
return $this->respond($response);
}
}