From 5ef0aaae50117c92e48bc3ae7f30744e906d6ebe Mon Sep 17 00:00:00 2001 From: Aldarien Date: Mon, 14 Jun 2021 16:40:59 -0400 Subject: [PATCH 01/11] Mixed --- app/Controller/Informes.php | 63 +++++-------------- app/Controller/Ventas.php | 54 ++++------------ bin/informes/controllers/ventas.py | 6 +- .../modelos/src/old/Proyecto/Proyecto.php | 15 ++++- .../views/ventas/pies/cuotas/add.blade.php | 2 +- 5 files changed, 45 insertions(+), 95 deletions(-) diff --git a/app/Controller/Informes.php b/app/Controller/Informes.php index 6a65fe9..7edb4c0 100644 --- a/app/Controller/Informes.php +++ b/app/Controller/Informes.php @@ -434,7 +434,7 @@ class Informes $columnas = [ 'Propietario', - ['name' => 'Departamento', 'style' => 'number'], + 'Departamento', ['name' => 'Estacionamientos', 'style' => 'number'], ['name' => 'Bodegas', 'style' => 'number'], 'Fecha Venta', @@ -457,7 +457,8 @@ class Informes ['name' => 'Valor Neto', 'style' => 'amount'], ['name' => 'UF/m²*', 'style' => 'amount'], ['name' => 'Comision', 'style' => 'amount'], - ['name' => 'Venta s/Comision', 'style' => 'amount'] + ['name' => 'Venta s/Comision', 'style' => 'amount']. + ['name' => 'Precio', 'style' => 'Amount'] ]; //$informe->addColumns($columnas); @@ -465,28 +466,14 @@ class Informes foreach ($ventas as $venta) { $info = []; $info['Propietario'] = mb_strtoupper($venta->propietario()->nombreCompleto()); - $info['Departamento'] = trim(array_reduce($venta->propiedad()->departamentos(), function($carry, $item) { - return implode(' - ', [$carry, $item->descripcion]); - }), ' -'); - //$ests = []; + $info['Departamento'] = implode(' - ', array_map(function($item) { + return $item->descripcion; + }, $venta->propiedad()->departamentos())); $es = $venta->propiedad()->estacionamientos(); - /*if (count($es) > 0) { - foreach ($es as $e) { - $ests []= $e->descripcion; - } - } - $info['Estacionamientos'] = implode(', ', $ests);*/ $info['Estacionamientos'] = implode(', ', array_map(function($item) { return $item->descripcion; }, $es)); - //$bods = []; $bs = $venta->propiedad()->bodegas(); - /*if (count($bs) > 0) { - foreach ($bs as $b) { - $bods []= $b->descripcion; - } - } - $info['Bodegas'] = implode(', ', $bods);*/ $info['Bodegas'] = implode(', ', array_map(function($item) { return $item->descripcion; }, $bs)); @@ -495,7 +482,7 @@ class Informes $info['Tipo'] = $venta->unidad()->abreviacion; $info['m² Ponderados'] = $venta->unidad()->m2('vendible'); $info['Valor Promesa'] = $venta->valor_uf; - $info['Pie'] = $venta->pie()->valor; + $info['Pie'] = $venta->pie()->valor; $info['Pie Pagado'] = 0; $info['% Pie Pagado'] = 0; if ($venta->pie()) { @@ -508,12 +495,6 @@ class Informes $info['Valor Operador'] = $venta->valorComision(); //$promos = 0; $ps = $venta->promociones(); - /*if (count($ps) > 0) { - foreach ($ps as $promo) { - $promos += $promo->valor; - } - } - $info['Premios'] = $promos;*/ $info['Premios'] = array_reduce($ps, function($sum, $item) { return $sum + $item->valor; }); @@ -536,31 +517,17 @@ class Informes $info['UF/m²*'] = $venta->uf_m2(); $info['Comision'] = $venta->valorFinal() * $comision; $info['Venta s/Comision'] = $venta->valorFinal() - $info['Comision']; + $fecha = $venta->fecha(); + $info['Precio'] = 0; + try { + $info['Precio'] = array_reduce($venta->propiedad()->departamentos(), function($sum, $item) use ($fecha) { + return $sum + $item->precio($fecha)->valor; + }); + } catch (\Exception $e) { + } $data []= $info; } - /*$informe->addData($data); - - $totals = [ - 'Propietario' => 'TOTAL', - 'Departamento' => 'count', - 'Estacionamientos' => 'count', - 'Bodegas' => 'count', - 'm² Ponderados' => 'sum', - 'Valor Promesa' => 'sum', - 'Bono Pie' => 'sum', - 'Subsidio' => 'sum', - 'Ahorro' => 'sum', - 'Credito' => 'sum', - 'Valor Operador' => 'sum', - 'Premios' => 'sum', - 'Valor Ests & Bods' => 'sum', - 'Valor Neto' => 'sum', - 'Comision' => 'sum' - ]; - $informe->addTotals($totals); - - return $informe->informe();*/ $body = [ "Proyecto" => $proyecto->descripcion, diff --git a/app/Controller/Ventas.php b/app/Controller/Ventas.php index e66faf2..8bd60b3 100644 --- a/app/Controller/Ventas.php +++ b/app/Controller/Ventas.php @@ -163,53 +163,25 @@ class Ventas $unis = json_decode(post('unidades')); $id_principal = array_shift($unis); $principal = model(Unidad::class)->findOne(post('unidad' . $id_principal)); - $propiedad = model(Propiedad::class) - ->select('propiedad.*') - ->join('unidad', ['unidad.id', '=', 'propiedad.unidad_principal']) - ->where('propiedad.unidad_principal', $principal->id) - ->where('unidad.proyecto', post('proyecto')) - ->orderByDesc('propiedad.id') - ->findOne(); // Revisar si existe la propiedad y si está vigente. - if (!$propiedad or ($propiedad->venta() and $propiedad->venta()->estado() and $propiedad->venta()->estado()->tipo()->descripcion != 'vigente')) { - if (!$propiedad) { - $propiedad = model(Propiedad::class)->create(); - } - $propiedad->unidad_principal = $principal->id; - $propiedad->save(); + $propiedad = model(Propiedad::class)->create(); + $propiedad->unidad_principal = $principal->id; + $propiedad->save(); + $data = [ + 'propiedad' => $propiedad->id, + 'unidad' => $principal->id, + 'principal' => 1 + ]; + $pu = model(PropiedadUnidad::class)->create($data); + $pu->save(); + foreach ($unis as $id_unidad) { $data = [ 'propiedad' => $propiedad->id, - 'unidad' => $principal->id, - 'principal' => 1 + 'unidad' => post('unidad' . $id_unidad), + 'principal' => 0 ]; $pu = model(PropiedadUnidad::class)->create($data); $pu->save(); - foreach ($unis as $id_unidad) { - $data = [ - 'propiedad' => $propiedad->id, - 'unidad' => post('unidad' . $id_unidad), - 'principal' => 0 - ]; - $pu = model(PropiedadUnidad::class)->create($data); - $pu->save(); - } - /*$ests = []; - $bods = []; - foreach ($unis as $id_unidad) { - $unidad = model(Unidad::class)->findOne(post('unidad' . $id_unidad)); - if ($unidad->tipo == 2) { - $ests []= $unidad->id; - } - if ($unidad->tipo == 3) { - $bods []= $unidad->id; - } - } - $propiedad->estacionamientos = implode(';', $ests); - $propiedad->bodegas = implode(';', $bods); - $propiedad->save();*/ - } elseif ($propiedad->venta() and $propiedad->venta()->estado()->tipo()->descripcion == 'vigente') { - // Existe la propiedad en este proyecto y está vigente. Error, no se debiese vender si está vigente. - throw new \Exception('Existe la propiedad en este proyecto y está vigente. Error, no se debiese vender si está vigente.'); } $venta = model(Venta::class)->create(); diff --git a/bin/informes/controllers/ventas.py b/bin/informes/controllers/ventas.py index 8b059ce..ab3ffce 100644 --- a/bin/informes/controllers/ventas.py +++ b/bin/informes/controllers/ventas.py @@ -16,7 +16,7 @@ def format_data(data): df[col] = pd.to_numeric(df[col], errors='ignore') float_columns = ['Valor Promesa', 'Pie', 'Pie Pagado', '% Pie Pagado', 'Bono Pie', 'Valor Operador', 'Premios', 'Subsidio', 'Ahorro', 'Credito', 'Valor Ests & Bods', 'Valor Neto', - 'UF/m²*', 'Comision', 'Venta s/Comision'] + 'UF/m²*', 'Comision', 'Venta s/Comision', 'Precio'] for col in float_columns: if col in df.columns: df[col] = pd.to_numeric(df[col], errors='coerce') @@ -38,7 +38,7 @@ def format_columns(workbook, columns): amount_columns = ['m² Ponderados', 'Valor Promesa', 'Pie', 'Pie Pagado', 'Bono Pie', 'Valor Operador', 'Premios', 'Subsidio', 'Ahorro', 'Credito', 'Valor Ests & Bods', 'Valor Neto', 'UF/m²*', 'Comision', - 'Venta s/Comision'] + 'Venta s/Comision', 'Precio'] center_columns = ['Departamento', 'Estacionamientos', 'Bodegas'] sum_columns = ['m² Ponderados', 'Valor Promesa', 'Pie', 'Pie Pagado', 'Bono Pie', 'Subsidio', 'Ahorro', 'Credito', 'Valor Operador', 'Premios', 'Valor Ests & Bods', 'Valor Neto', 'Comision'] @@ -68,7 +68,7 @@ def format_excel(workbook, worksheet, data): amount_columns = ['m² Ponderados', 'Valor Promesa', 'Pie', 'Pie Pagado', 'Bono Pie', 'Valor Operador', 'Premios', 'Subsidio', 'Ahorro', 'Credito', 'Valor Ests & Bods', 'Valor Neto', 'UF/m²*', 'Comision', - 'Venta s/Comision'] + 'Venta s/Comision', 'Precio'] center_columns = ['Departamento', 'Estacionamientos', 'Bodegas'] for col in amount_columns: diff --git a/incoviba/modelos/src/old/Proyecto/Proyecto.php b/incoviba/modelos/src/old/Proyecto/Proyecto.php index 5611ef6..aac09ae 100644 --- a/incoviba/modelos/src/old/Proyecto/Proyecto.php +++ b/incoviba/modelos/src/old/Proyecto/Proyecto.php @@ -131,7 +131,7 @@ class Proyecto extends Model $unidades['disponibles'] = (array) $this->unidades->disponibles; } } - $q_s = "SELECT u.* + /*$q_s = "SELECT u.* FROM (SELECT * FROM unidad WHERE proyecto = ? ORDER BY tipo) AS u LEFT JOIN @@ -158,7 +158,18 @@ class Proyecto extends Model OR propiedad.bodegas LIKE CONCAT('%;', unidad.id) OR propiedad.bodegas LIKE CONCAT('%;', unidad.id, ';%') WHERE venta.estado = 1) AS b ON b.id = u.id - WHERE v.id IS NULL AND e.id IS NULL AND b.id IS NULL"; + WHERE v.id IS NULL AND e.id IS NULL AND b.id IS NULL";*/ + $q_s = "SELECT u.* + FROM + (SELECT * FROM unidad WHERE proyecto = ? ORDER BY tipo) AS u + LEFT JOIN (SELECT unidad.* + FROM unidad + JOIN propiedad_unidad pu ON pu.unidad = unidad.id + JOIN venta ON venta.propiedad = pu.propiedad + JOIN (SELECT e1.* FROM estado_venta e1 + JOIN (SELECT venta, MAX(id) AS id FROM estado_venta GROUP BY venta) e0 ON e0.id = e1.id) ev ON ev.venta = venta.id + WHERE ev.estado = 1) AS v ON v.id = u.id + WHERE v.id IS NULL"; $q_p = " ORDER BY u.tipo, LPAD(u.descripcion, 4, '0')"; switch (strtolower($id_tipo)) { case null: diff --git a/resources/views/ventas/pies/cuotas/add.blade.php b/resources/views/ventas/pies/cuotas/add.blade.php index 941fbef..079543e 100644 --- a/resources/views/ventas/pies/cuotas/add.blade.php +++ b/resources/views/ventas/pies/cuotas/add.blade.php @@ -8,7 +8,7 @@