cargando presupuesto datos generales

This commit is contained in:
2024-10-18 14:33:27 +02:00
parent 8a044d41fe
commit 464e136025
17 changed files with 12250 additions and 469 deletions

View File

@ -5,6 +5,8 @@ namespace App\Controllers\Presupuestos;
use App\Entities\Presupuestos\PresupuestoEntity;
use App\Libraries\SafekatFtpClient;
use App\Models\Collection;
use App\Models\Clientes\ClienteModel;
use App\Models\Configuracion\PapelFormatoModel;
use App\Models\Configuracion\PapelGenericoModel;
use App\Models\Configuracion\TipoPresupuestoModel;
use App\Models\Presupuestos\PresupuestoAcabadosModel;
@ -400,20 +402,35 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$coste_envio = 0.0;
foreach ($direcciones as $direccion) {
$coste_envio += $this->getCosteEnvio(
$coste_direccion = $this->getCosteEnvio(
$direccion['id'],
$return_data['peso'][$i],
$direccion['unidades'],
$direccion['entregaPalets'] == 'true' ? 1 : 0
)[0]->coste;
)[0];
if (!property_exists($coste_direccion, 'coste')) {
$return_data['errors']->envios = "No se ha podido calcular el coste de envío";
}else{
$coste_envio += $coste_direccion->coste;
}
}
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4);
}
} else {
for ($i = 0; $i < count($tirada); $i++) {
$coste_envio = 0.0;
$coste_envio += $this->getCosteEnvio(null, $return_data['peso'][$i], $tirada[$i], false)[0]->coste;
$coste_direccion = $this->getCosteEnvio(null, $return_data['peso'][$i], $tirada[$i], false)[0];
if (!property_exists($coste_direccion, 'coste')) {
$return_data['errors']->envios = "No se ha podido calcular el coste de envío";
}else{
$coste_envio += $coste_direccion->coste;
}
$return_data['precio_u'][$i] = round(floatval($return_data['precio_u'][$i]) + $coste_envio / $tirada[$i], 4);
}
@ -596,6 +613,11 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$tamanio = $reqData['tamanio'];
$paginas = $reqData['paginas'] ?? 0;
$paginas_color = $reqData['paginasColor'] ?? 0;
$posPaginasColor = $reqData['posPaginasColor'] ?? "";
$papelInteriorDiferente = $reqData['papelInteriorDiferente'] ?? 0;
$paginasColorConsecutivas = $reqData['paginasColorConsecutivas'] ?? 0;
$prototipo = $reqData['prototipo'] ?? 0;
$tipo = $reqData['tipo'];
$paginasCuadernillo = $reqData['paginasCuadernillo'] ?? null;
@ -869,6 +891,8 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
if ($this->request->isAJAX()) {
$modelPapelGenerico = new PapelGenericoModel();
$modelPapelFormato = new PapelFormatoModel();
$modelCliente = new ClienteModel();
$reqData = $this->request->getPost();
@ -887,11 +911,15 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$data['datosGenerales']['ivaReducido'] = $presupuesto->iva_reducido;
$data['datosGenerales']['excluirRotativa'] = $presupuesto->excluir_rotativa;
$data['datosGenerales']['clienteId'] = $presupuesto->cliente_id;
$data['datosGenerales']['clienteNombre'] =
$data['datosGenerales']['clienteNombre'] = $modelCliente->getNombre($presupuesto->cliente_id);
model('App\Models\Clientes\ClienteModel')
->find($presupuesto->cliente_id)->nombre;
$data['datosGenerales']['papelFormatoId'] = $presupuesto->papel_formato_id;
$data['datosGenerales']['papelFormatoNombre'] = $modelPapelFormato->getNombre($presupuesto->papel_formato_id);
$data['datosGenerales']['papelFormatoPersonalizado'] = $presupuesto->papel_formato_personalizado;
$data['datosGenerales']['papelFormatoAncho'] = $presupuesto->papel_formato_ancho;
$data['datosGenerales']['papelFormatoAlto'] = $presupuesto->papel_formato_alto;
$data['datosGenerales']['papelInteriorDiferente'] = $presupuesto->papel_interior_diferente;
$data['tiradasPrecio'] = [
@ -1244,7 +1272,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$margen = 0;
if ($data > 0) {
$peso_envio = $peso * $unidades / 1000.0; // peso libro * unidades y se pasa a kilogramos
$peso_envio = round(floatval($peso * $unidades / 1000.0)); // peso libro * unidades y se pasa a kilogramos
$tarifas_envio = $modelTarifaEnvio->getTarifaEnvio($data[0]->pais_id, $data[0]->cp, $peso_envio, $entregaPieCalle ? 'palets' : 'cajas');
for ($i = 0; $i < count($tarifas_envio); $i++) {
if ($peso_envio > $tarifas_envio[$i]->peso_max || floatval($tarifas_envio[$i]->precio_max) == 0) {
@ -1333,6 +1361,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
'guardas' => "",
'servicios' => "",
'serviciosDefecto' => "",
"envios" => "",
];
$coste_servicios = 0.0;
@ -1568,6 +1597,9 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$acabadoSobrecubierta = [];
foreach ($tarifaAcabadoSobrecubierta as $tarifa) {
// NONE
if($tarifaAcabadoSobrecubierta[0] == 0)
continue;
$model = model('App\Models\Presupuestos\PresupuestoAcabadosModel');
$acabadoSobrecubierta = $model->getPrecioTarifa($tarifa, $datosPedido->tirada, -1, $POD);
@ -1705,7 +1737,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$margenServicios += floatval($resultado[0]->total) * floatval($resultado[0]->margen) / 100.0;
}
} else if (intval($servicio) == 9) {
// Servicios preimpresion
// Prototipo
$resultado = PresupuestoCLienteService::getServiciosExtra([
'tarifa_id' => $servicio,
]);
@ -2238,7 +2270,7 @@ class Presupuestocliente extends \App\Controllers\BaseResourceController
$paginasColor = 0;
foreach ($lineas as $linea) {
if (strpos($linea->tipo, "lp_bn") !== false || strpos($linea->tipo, "lp_color") !== false) {
if (strpos($linea->tipo, "lp_bn") !== false || strpos($linea->tipo, "lp_bnhq") !== false) {
$paginasNegro = $linea->paginas;
}

View File

@ -1,4 +1,5 @@
<?php
namespace App\Models\Clientes;
class ClienteModel extends \App\Models\BaseModel
@ -293,30 +294,32 @@ class ClienteModel extends \App\Models\BaseModel
return empty($search)
? $builder
: $builder
->groupStart()
->like("t1.nombre", $search)
->orLike("t1.alias", $search)
->orLike("t1.cif", $search)
->orLike("t1.email", $search)
->orLike("t1.soporte_id", $search)
->orLike("t1.forma_pago_id", $search)
->orLike("t1.vencimiento", $search)
->orLike("t5.id", $search)
->orLike("t5.first_name", $search)
->orLike("t5.last_name", $search)
->orLike("t7.id", $search)
->orLike("t7.nombre", $search)
->groupEnd();
->groupStart()
->like("t1.nombre", $search)
->orLike("t1.alias", $search)
->orLike("t1.cif", $search)
->orLike("t1.email", $search)
->orLike("t1.soporte_id", $search)
->orLike("t1.forma_pago_id", $search)
->orLike("t1.vencimiento", $search)
->orLike("t5.id", $search)
->orLike("t5.first_name", $search)
->orLike("t5.last_name", $search)
->orLike("t7.id", $search)
->orLike("t7.nombre", $search)
->groupEnd();
}
/*
TO-DO: Implementar la lógica de negocio para el crédito disponible
*/
public function creditoDisponible($cliente_id){
public function creditoDisponible($cliente_id)
{
return true;
}
public function getClienteDataFacturas($cliente_id){
public function getClienteDataFacturas($cliente_id)
{
$builder = $this->db
->table($this->table . " t1")
->select(
@ -329,27 +332,27 @@ class ClienteModel extends \App\Models\BaseModel
->where("t1.id", $cliente_id);
$builder->join("lg_paises t2", "t1.pais_id = t2.id", "left");
$builder->join("lg_provincias t3", "t1.provincia_id = t3.id", "left");
return $builder->get()->getResultArray();
}
public function getClienteDataPresupuestoPedidoFactura(int $cliente_id) : array
public function getClienteDataPresupuestoPedidoFactura(int $cliente_id): array
{
$query = $this->db
->table($this->table." t1")
->select([
"t1.id as clienteId",
"presupuestos.id as presupuestoId",
"pedidos.id as pedidoId",
"presupuesto_estados.estado as presupuestoEstado",
"facturas_pedidos_lineas.factura_id as facturaId",
->table($this->table . " t1")
->select([
"t1.id as clienteId",
"presupuestos.id as presupuestoId",
"pedidos.id as pedidoId",
"presupuesto_estados.estado as presupuestoEstado",
"facturas_pedidos_lineas.factura_id as facturaId",
])
->join("presupuestos","t1.id = presupuestos.cliente_id","left")
->join("presupuesto_estados","presupuestos.estado_id = presupuesto_estados.id","left")
->join("pedidos_linea","presupuestos.id = pedidos_linea.presupuesto_id","left")
->join("pedidos","pedidos.id = pedidos_linea.pedido_id","left")
->join("facturas_pedidos_lineas","facturas_pedidos_lineas.pedido_linea_id = pedidos_linea.id","left")
->where("t1.id",$cliente_id);
->join("presupuestos", "t1.id = presupuestos.cliente_id", "left")
->join("presupuesto_estados", "presupuestos.estado_id = presupuesto_estados.id", "left")
->join("pedidos_linea", "presupuestos.id = pedidos_linea.presupuesto_id", "left")
->join("pedidos", "pedidos.id = pedidos_linea.pedido_id", "left")
->join("facturas_pedidos_lineas", "facturas_pedidos_lineas.pedido_linea_id = pedidos_linea.id", "left")
->where("t1.id", $cliente_id);
$data = $query->get()->getResultObject();
$facturas = [];
$presupuestos = [];
@ -367,4 +370,23 @@ class ClienteModel extends \App\Models\BaseModel
return $result;
}
public function getNombre($id = -1)
{
try {
$builder = $this->db
->table($this->table . " t1")
->select(
"t1.nombre AS nombre"
)
->where("id", $id)
->where("is_deleted", 0);
return $builder->get()->getResultObject()[0]->nombre;
} catch (\Exception $e) {
return null;
}
}
}

View File

@ -1,4 +1,5 @@
<?php
namespace App\Models\Configuracion;
class PapelFormatoModel extends \App\Models\BaseModel
@ -72,21 +73,22 @@ class PapelFormatoModel extends \App\Models\BaseModel
return empty($search)
? $builder
: $builder
->groupStart()
->like("t1.id", $search)
->orLike("t1.ancho", $search)
->orLike("t1.alto", $search)
->orLike("t1.created_at", $search)
->orLike("t1.updated_at", $search)
->orLike("t1.id", $search)
->orLike("t1.ancho", $search)
->orLike("t1.alto", $search)
->orLike("t1.created_at", $search)
->orLike("t1.updated_at", $search)
->groupEnd();
->groupStart()
->like("t1.id", $search)
->orLike("t1.ancho", $search)
->orLike("t1.alto", $search)
->orLike("t1.created_at", $search)
->orLike("t1.updated_at", $search)
->orLike("t1.id", $search)
->orLike("t1.ancho", $search)
->orLike("t1.alto", $search)
->orLike("t1.created_at", $search)
->orLike("t1.updated_at", $search)
->groupEnd();
}
public function getElementsForMenu(){
public function getElementsForMenu()
{
return $this->db
->table($this->table . " t1")
->select(
@ -94,7 +96,8 @@ class PapelFormatoModel extends \App\Models\BaseModel
)->where('is_deleted', 0)->orderBy('orden_select', 'asc')->get()->getResultObject();
}
public function getElementsForMenu2($search = ""){
public function getElementsForMenu2($search = "")
{
$builder = $this->db
->table($this->table . " t1")
->select(
@ -108,9 +111,26 @@ class PapelFormatoModel extends \App\Models\BaseModel
return empty($search)
? $builder->get()->getResultObject()
: $builder
->groupStart()
->like('t1.ancho', $search)
->orLike('t1.alto', $search)
->groupEnd()->get()->getResultObject();
->groupStart()
->like('t1.ancho', $search)
->orLike('t1.alto', $search)
->groupEnd()->get()->getResultObject();
}
public function getNombre($id = -1)
{
try {
$builder = $this->db
->table($this->table . " t1")
->select(
"CONCAT(t1.ancho, ' x ', t1.alto) AS name"
)
->where('t1.id', $id);
return $builder->get()->getResultObject()[0]->name;
} catch (\Exception $e) {
return null;
}
}
}

View File

@ -256,7 +256,7 @@
</div>
</div>
<div class="col-sm-8 mt-5 mb-3 d-flex flex-column align-items-center">
<div class="col-sm-8 mb-3 d-flex flex-column align-items-center">
<h3 class="mb-1 fw-bold"> Servicios extra </h3>
</div>

View File

@ -1,10 +1,18 @@
<div id="loader" class="loader" data-backdrop="static" data-keyboard="false" style="display: none;">
<div class="book">
<div class="book__pg-shadow"></div>
<div class="book__pg"></div>
<div class="book__pg book__pg--2"></div>
<div class="book__pg book__pg--3"></div>
<div class="book__pg book__pg--4"></div>
<div class="book__pg book__pg--5"></div>
<div id="loader" class="modal modal-transparent" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-body">
<div class="loader">
<div class="book">
<div class="book__pg-shadow"></div>
<div class="book__pg"></div>
<div class="book__pg book__pg--2"></div>
<div class="book__pg book__pg--3"></div>
<div class="book__pg book__pg--4"></div>
<div class="book__pg book__pg--5"></div>
</div>
</div>
</div>
</div>
</div>
</div>