Update 2022-03-07

This commit is contained in:
Aldarien
2022-03-07 12:42:34 +00:00
parent 67efd83ae3
commit abe01e5592
14 changed files with 243 additions and 251 deletions

2
.adminer.env Normal file
View File

@ -0,0 +1,2 @@
ADMINER_DESIGN=dracula
ADMINER_PLUGINS=dump-json

4
.db.env Normal file
View File

@ -0,0 +1,4 @@
MYSQL_DATABASE=incoviba
MYSQL_PASSWORD=5GQYFvRjVw2A4KcD
MYSQL_ROOT_PASSWORD=password
MYSQL_USER=incoviba

1
.gitignore vendored
View File

@ -6,3 +6,4 @@ package-lock.json
Pipfile.lock
/logs/
/cache/
/modules/

View File

@ -410,6 +410,8 @@ class Informes
public static function ventas()
{
if (get('proyecto')) {
ini_set('memory_limit', "1G");
ini_set('max_execution_time', '3600');
$id = get('proyecto');
$proyecto = model(Proyecto::class)->findOne($id);
$ventas = $proyecto->ventas();
@ -434,7 +436,7 @@ class Informes
$columnas = [
'Propietario',
['name' => 'Departamento', 'style' => 'number'],
'Departamento',
['name' => 'Estacionamientos', 'style' => 'number'],
['name' => 'Bodegas', 'style' => 'number'],
'Fecha Venta',
@ -457,7 +459,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 +468,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 +484,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 +497,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 +519,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,

View File

@ -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();

View File

@ -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:

View File

@ -23,12 +23,8 @@ services:
image: mariadb:latest
restart: unless-stopped
ports:
- 3307:3306
environment:
MYSQL_ROOT_PASSWORD: 'password'
MYSQL_DATABASE: 'incoviba'
MYSQL_USER: 'incoviba'
MYSQL_PASSWORD: '5GQYFvRjVw2A4KcD'
- 3308:3306
env_file: .db.env
volumes:
- dbdata:/var/lib/mysql
@ -37,10 +33,8 @@ services:
image: adminer:latest
restart: unless-stopped
ports:
- 8082:8080
environment:
ADMINER_DESIGN: 'dracula'
ADMINER_PLUGINS: 'dump-json'
- 8083:8080
env_file: .adminer.env
volumes:
dbdata:

View File

@ -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:

1
modules/operadores Submodule

Submodule modules/operadores added at 71e10c52bd

View File

@ -33,6 +33,13 @@
</li>
@endif
<li rol="presentation" class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
Operadores <span class="caret"></span>
</a>
@include('layout.menu.operadores')
</li>
@if (\App\Contract\Auth::checkAccess('viewHerramientas'))
<li role="presentation" class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">

View File

@ -0,0 +1,12 @@
<ul class="dropdown-menu">
<li>
<a href="http://provm.cl:8000/operadores">Listado</a>
</li>
<li>
<a href="http://provm.cl:8000/ventas">Ventas</a>
</li>
<li>
<a href="http://provm.cl:8000/facturas">Informe</a>
</li>
</ul>

View File

@ -257,14 +257,33 @@ function changeProyecto() {
});
$('#unidades').show();
});
$.post('{!!url('', ['p' => 'ajax', 'a' => 'operadores', 'ajax' => true])!!}', {"proyecto": proyecto}, function(data) {
var operadores = $("select[name='operador']");
operadores.html('').append($('<option></option>').attr('value', 0).html('---'));
var info = $.parseJSON(data);
$.each(info, function(i, e) {
operadores.append($('<option></option>').attr('value', e.id).html(e.abreviacion));
});
$.ajax({
url: 'https://provm.cl:8001/proyecto/' + proyecto + '/operadores',
method: 'get',
dataType: 'json'
}).then(function(data) {
var operadoress = $("select[name='operador']");
operadores.html('').append($('<option></option>').attr('value', 0).html('---'));
$.each(data.operadores, function(i, e) {
operadores.append($('<option></option>').attr('value', e.id).html(e.operador.abreviacion));
});
});
/*$.getJSON('http://provm.cl:8001/proyecto/' + proyecto + '/operadores', function(data) {
var operadores = $("select[name='operador']");
operadores.html('').append($('<option></option>').attr('value', 0).html('---'));
$.each(data.operadores, function(i, e) {
operadores.append($('<option></option>').attr('value', e.id).html(e.operador.abreviacion));
});
});
$.post('{!!url('', ['p' => 'ajax', 'a' => 'operadores', 'ajax' => true])!!}', {"proyecto": proyecto}, function(data) {
var operadores = $("select[name='operador']");
operadores.html('').append($('<option></option>').attr('value', 0).html('---'));
var info = $.parseJSON(data);
$.each(info, function(i, e) {
operadores.append($('<option></option>').attr('value', e.id).html(e.abreviacion));
});
});*/
}
function agregarUnidad(tipo, name) {
var proyecto = $("select[name='proyecto']").val();

View File

@ -8,7 +8,7 @@
<div class="col-md-3">
<select name="asociado" class="form-control">
@foreach ($pie->venta()->propietario()->ventas() as $v)
@if ($v->unidad()->id == $pie->venta()->unidad()->id)
@if ($v->unidad()->id == $pie->venta()->unidad()->id or $v->pie == 0)
@continue
@endif
<option value="{{$v->pie()->id}}">