falta rellenar presupuesto

This commit is contained in:
Jaime Jiménez
2023-12-19 15:15:08 +01:00
parent 19d3cdd163
commit 9e97329abf
12 changed files with 213 additions and 42 deletions

View File

@ -90,4 +90,35 @@ class TarifaEnvioModel extends \App\Models\GoBaseModel
->orLike("t2.nombre", $search)
->groupEnd();
}
public function getTarifaEnvio($paisId, string $cp, $peso, $tipo_envio){
// Si el pais es españa se tienen que tener en cuenta los postales
// Se busca primero la tarifa a la que corresponde
$builder = $this->db->table($this->table . " t1")
->select("t1.id AS tarifa_envio_id, t2.importe_fijo as importe_fijo")
->join("tarifas_envios_zonas t2", "t1.id = t2.tarifa_envio_id")
->where("t1.pais_id", $paisId)
->where("t1.is_deleted", 0)
->where("t2.is_deleted", 0);
if($paisId == 1) {// España
$builder->where("CAST(t2.cp_inicial AS UNSIGNED)<=", intval($cp))
->where("CAST(t2.cp_final AS UNSIGNED) >=", intval($cp));
}
$tarifas = $builder->get()->getResultObject();
$resultado = [];
$model = model('App\Models\Tarifas\TarifaEnvioPrecioModel');
foreach($tarifas as $tarifa){
$precio_tarifas = $model->getEnvioPrecio($tarifa->tarifa_envio_id, $peso, $tipo_envio);
foreach($precio_tarifas as $precio_tarifa){
$precio_tarifa->importe_fijo = $tarifa->importe_fijo;
array_push($resultado, $precio_tarifa);
}
}
return $resultado;
}
}

View File

@ -17,9 +17,10 @@ class TarifaEnvioPrecioModel extends \App\Models\GoBaseModel
1 => "t1.tipo_envio",
2 => "t1.peso_min",
3 => "t1.peso_max",
4 => "t1.precio",
5 => "t1.precio_adicional",
5 => "t1.margen"
4 => "t1.precio_min",
5 => "t1.precio_max",
6 => "t1.precio_adicional",
7 => "t1.margen"
];
protected $allowedFields = [
@ -28,7 +29,8 @@ class TarifaEnvioPrecioModel extends \App\Models\GoBaseModel
"tipo_envio",
"peso_min",
"peso_max",
"precio",
"precio_min",
"precio_max",
"precio_adicional",
"margen",
"deleted_at",
@ -54,7 +56,11 @@ class TarifaEnvioPrecioModel extends \App\Models\GoBaseModel
"label" => "TarifasEnviosPrecios.pesoMin",
"rules" => "required|decimal",
],
"precio" => [
"precio_min" => [
"label" => "TarifasEnviosPrecios.precio",
"rules" => "required|decimal",
],
"precio_max" => [
"label" => "TarifasEnviosPrecios.precio",
"rules" => "required|decimal",
],
@ -81,7 +87,11 @@ class TarifaEnvioPrecioModel extends \App\Models\GoBaseModel
"decimal" => "TarifasEnviosPrecios.validation.peso_min.decimal",
"required" => "TarifasEnviosPrecios.validation.peso_min.required",
],
"precio" => [
"precio_min" => [
"decimal" => "TarifasEnviosPrecios.validation.precio.decimal",
"required" => "TarifasEnviosPrecios.validation.precio.required",
],
"precio_max" => [
"decimal" => "TarifasEnviosPrecios.validation.precio.decimal",
"required" => "TarifasEnviosPrecios.validation.precio.required",
],
@ -131,7 +141,7 @@ class TarifaEnvioPrecioModel extends \App\Models\GoBaseModel
$builder = $this->db
->table($this->table . " t1")
->select(
"t1.id AS id, t1.tipo_envio AS tipo_envio, t1.peso_min AS peso_min, t1.peso_max AS peso_max, t1.precio AS precio,
"t1.id AS id, t1.tipo_envio AS tipo_envio, t1.peso_min AS peso_min, t1.peso_max AS peso_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max,
t1.precio_adicional AS precio_adicional, t1.margen AS margen, t2.id AS tarifa_envio, t3.id AS proveedor_id, t3.nombre AS proveedor"
);
$builder->join("tarifas_envios_zonas t2", "t1.tarifa_envio_id = t2.id", "left");
@ -148,14 +158,16 @@ class TarifaEnvioPrecioModel extends \App\Models\GoBaseModel
->like("t1.tipo_envio", $search)
->orLike("t1.peso_min", $search)
->orLike("t1.peso_max", $search)
->orLike("t1.precio", $search)
->orLike("t1.precio_min", $search)
->orLike("t1.precio_max", $search)
->orLike("t1.precio_adicional", $search)
->orLike("t1.margen", $search)
->orLike("t3.nombre", $search)
->orLike("t1.tipo_envio", $search)
->orLike("t1.peso_min", $search)
->orLike("t1.peso_max", $search)
->orLike("t1.precio", $search)
->orLike("t1.precio_min", $search)
->orLike("t1.precio_max", $search)
->orLike("t1.precio_adicional", $search)
->orLike("t1.margen", $search)
->orLike("t3.nombre", $search)
@ -207,4 +219,42 @@ class TarifaEnvioPrecioModel extends \App\Models\GoBaseModel
return $builder;
}
public function getEnvioPrecio($tarifa_envio_id, $peso, $tipo_envio){
// primero se checkea que el peso no sea mayor
// que el valor mas grande
$builder = $this->db
->table($this->table . " t1")
->selectMax('t1.peso_max')
->where('t1.tipo_envio', $tipo_envio)
->where("t1.tarifa_envio_id", $tarifa_envio_id)
->where('t1.is_deleted', 0);
$peso_maximo = $builder->get()->getResult();
if(count($peso_maximo) > 0)
$peso_maximo = floatval($peso_maximo[0]->peso_max);
else // no hay resultados
return [];
$builder = $this->db
->table($this->table . " t1")
->select(
"t1.id AS id, t1.tipo_envio AS tipo_envio, t1.peso_min AS peso_min, t1.peso_max AS peso_max, t1.precio_min AS precio_min, t1.precio_max AS precio_max,
t1.precio_adicional AS precio_adicional, t1.margen AS margen, t2.id AS proveedor_id, t2.nombre AS proveedor"
);
$builder->join("lg_proveedores t2", "t1.proveedor_id = t2.id", "left");
$builder->where("t1.tarifa_envio_id", $tarifa_envio_id);
$builder->where("t1.tipo_envio", $tipo_envio);
$builder->where('t1.is_deleted', 0);
if($peso_maximo<$peso){
$builder->where('t1.peso_max', $peso_maximo);
}
else{
$builder->where('t1.peso_min <=', $peso);
$builder->where('t1.peso_max >=', $peso);
}
return $builder->get()->getResultObject();
}
}