Limpieza e intento de modernizar informe de ventas

This commit is contained in:
2021-01-19 17:17:29 -03:00
parent baf32be9cb
commit 8ac20ad4b5
154 changed files with 9660 additions and 0 deletions

12
Pipfile Normal file
View File

@ -0,0 +1,12 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true
[dev-packages]
[packages]
gunicorn = "*"
[requires]
python_version = "3.8"

16
docker-compose.yml Normal file
View File

@ -0,0 +1,16 @@
version: '2'
services:
mariadb:
image: mariadb
restart: always
environment:
- MYSQL_ROOT_PASSWORD=aryafoole
php:
image: php:7.2-apache
environment:
- APACHE_DOCUMENT_ROOT=/var/www/public
- APACHE_SERVERNAME=localhost
ports:
- 8081:80
volumes:
- '.:/var/www'

2286
incoviba - 2019-10-03.sql Normal file

File diff suppressed because one or more lines are too long

4
public/api/.htaccess Normal file
View File

@ -0,0 +1,4 @@
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

34
public/api/index.php Normal file
View File

@ -0,0 +1,34 @@
<?php
include_once realpath(dirname(__DIR__, 2) . '/bootstrap/autoload.php');
$get = $_GET;
$post = $_POST;
function get_keys() {
$filename = realpath('./keys');
$keys = [];
if ($filename !== false) {
$keys = json_decode(trim(file_get_contents($filename)));
}
return $keys;
}
function validate_key($keys, $key) {
if (array_search($key, $keys) !== false) {
return true;
}
return false;
}
$keys = get_keys();
$key = $get['API_KEY'];
if (!validate_key($keys, $key)) {
throw new Exception('Error en la identificacion.');
}
$p = $get['page'] ?? $get['p'];
$a = $get['action'] ?? $get['a'];
if ($p == 'precios' and $a == 'importar') {
$data = json_decode($post['data']);
echo json_encode($data);
}

1
public/api/keys Normal file
View File

@ -0,0 +1 @@
[1]

12
src/common/Action.php Normal file
View File

@ -0,0 +1,12 @@
<?php
namespace Incoviba\common;
use App\Alias\OldModel as Model;
/**
* @property int $id
* @property string $description
*/
class Action extends Model
{
}

63
src/common/Auth.php Normal file
View File

@ -0,0 +1,63 @@
<?php
namespace Incoviba\common;
use App\Alias\OldModel as Model;
use Carbon\Carbon;
/**
*
* @author Aldarien
* @property int $id
* @property int $user_id foreign=users.id
* @property DateTime $time
* @property string $selector
* @property string $token
* @property int $status length=1 default=1
*
*/
class Auth extends Model
{
public static $_table = 'logins';
public function user()
{
return $this->belongsTo(User::class, 'user_id')->findOne();
}
public function token($token = null)
{
if ($token == null) {
return false;
}
$this->token = \password_hash($token, \PASSWORD_DEFAULT);
}
public function time($time = null)
{
if ($time == null) {
return Carbon::parse($this->time, config('app.timezone'));
}
if (!\is_a($time, \DateTime::class)) {
$time = Carbon::parse($time, config('app.timezone'));
}
$this->time = $time;
}
public function save()
{
if (!\is_string($this->time)) {
$this->time = $this->time->format('Y-m-d H:i:s');
}
parent::save();
}
public function isIn()
{
if ($this->status == 0) {
return false;
}
$now = Carbon::now(config('app.timezone'));
$diff = $now->diffAsCarbonInterval($this->time, true);
if ($diff->totalHours > config('app.login_hours')) {
return false;
}
return true;
}
}
?>

23
src/common/Location.php Normal file
View File

@ -0,0 +1,23 @@
<?php
namespace Incoviba\common;
use App\Alias\OldModel as Model;
/**
*
* @author Aldarien
* @property int $id
* @property string $controller length=50
* @property string $action length=100
*
*/
class Location extends Model
{
public static $_table = 'locations';
public function permissions()
{
return $this->hasMany(Permission::class, 'location')->findMany();
}
}
?>

49
src/common/Permission.php Normal file
View File

@ -0,0 +1,49 @@
<?php
namespace Incoviba\common;
use App\Alias\OldModel as Model;
/**
*
* @author Aldarien
* @property int $id
* @property int $type length=1
* @property int $ext_id
* @property Action $action_id
* @property int $status
* ---NULL---
* @property int $location null foreign=locations.id
* @property int $all length=1 default=0
* @property int $access length=1 default=0
*
*/
class Permission extends Model
{
public static $_table = 'permissions';
/*protected $locations = null;
public function location()
{
if ($this->all == 0) {
return $this->belongsTo(Location::class, 'location')->findOne();
}
if ($this->locations == null) {
$this->locations = \Model::factory(Location::class)->findMany();
}
return $this->locations;
}*/
public function who()
{
switch ($this->type) {
case 1:
return $this->belongsTo(User::class, 'ext_id')->findOne();
case 2:
return $this->belongsTo(Role::class, 'ext_id')->findOne();
}
}
public function action()
{
return $this->belongsTo(Action::class, 'action_id')->findOne();
}
}
?>

64
src/common/Registry.php Normal file
View File

@ -0,0 +1,64 @@
<?php
namespace Incoviba\common;
use Carbon\Carbon;
use App\Alias\OldModel as Model;
/**
* @property int $id
* @property User $user
* @property string $action
* @property string $time
*/
class Registry extends Model
{
public static $_table = 'registries';
public function user()
{
return $this->belongsTo(User::class, 'user')->findOne();
}
protected $model;
public function model()
{
if ($this->model == null) {
list($model, $actions) = explode(']', $this->action);
$model = str_replace(['Incoviba\\old\\', 'Incoviba\\nuevo\\', '\\'], ['', '', '->'], trim($model, '['));
$this->model = $model;
}
return $this->model;
}
protected $actions;
public function actions()
{
if ($this->actions == null) {
list($model, $actions) = explode(']', $this->action);
$actions = explode(', ', trim($actions));
$resultados = [];
foreach ($actions as $action) {
if (strpos($action, ': ') !== false) {
list($columna, $valor) = explode(': ', $action);
} else {
$columna = '';
$valor = $action;
}
if (strpos($valor, ' -> ') !== false) {
list($old, $new) = explode(' -> ', $valor);
} else {
$old = '';
$new = $valor;
}
$resultados[$columna] = (object) ['old' => $old, 'new' => $new];
}
$this->actions = $resultados;
}
return $this->actions;
}
public function time(Carbon $time = null)
{
if ($time == null) {
return Carbon::parse($this->time);
}
$this->time = $time->toDateTimeString();
}
}

View File

@ -0,0 +1,16 @@
<?php
namespace Incoviba\common;
use App\Alias\OldModel as Model;
/**
* @property int $id
* @property Registry $registry
* @property string $column
* @property mixed $old
* @property mixed $new
*/
class RegistryData extends Model
{
public static $_table = 'registry_data';
}

164
src/common/Role.php Normal file
View File

@ -0,0 +1,164 @@
<?php
namespace Incoviba\common;
use App\Alias\OldModel as Model;
use App\Service\Factory;
/**
*
* @author Aldarien
* @property int $id
* @property string $description length=50
* @property int $level
* @property Role $inherits
*
*/
class Role extends Model
{
public static $_table = 'roles';
public function inherits()
{
if ($this->inherits != 0) {
return $this->belongsTo(Role::class, 'inherits')->findOne();
}
return false;
}
protected $permissions;
public function permissions()
{
if ($this->permissions == null) {
$permissions = $this->hasMany(Permission::class, 'ext_id')->where('permissions.type', 2)->findMany();
if ($this->inherits()) {
$permissions = array_merge($permissions, $this->inherits()->permissions());
}
usort($permissions, function($a, $b) {
return strcmp($a->action()->description, $b->action()->description);
});
$this->permissions = $permissions;
}
return $this->permissions;
}
public function users()
{
return $this->hasManyThrough(User::class, UserRole::class, 'role', 'user')->findMany();
}
public function hasAccess($route)
{
$action = $route->getArgument('action');
$action = (new Factory(Action::class))->where(['description' => $action])->find();
if (!$action) {
return false;
}
$data = [
'type' => 2,
'ext_id' => $this->id,
'action_id' => $action->id,
'status' => 1
];
$permission = (new Factory(Permission::class))->where($data)->find();
if ($permission !== false) {
return true;
}
if ($this->inherits()) {
return $this->inherits()->hasAccess($route);
}
return false;
}
public function checkAccess($action_name)
{
$action = (new Factory(Action::class))->where(['description' => $action_name])->find();
if (!$action) {
throw new \Exception('Action ' . $action_name . ' not found.');
}
$permission = (new Factory(Permission::class))->where([
'type' => 2,
'ext_id' => $this->id,
'action_id' => $action->id,
'status' => 1
])->find();
if ($permission !== false) {
return true;
}
if ($this->inherits()) {
return $this->inherits()->checkAccess($action_name);
}
return false;
}
public function addPermission($action_name)
{
if ($this->checkAccess($action_name)) {
return;
}
$action = (new Factory(Action::class))->where(['description' => $action_name])->find();
if (!$action) {
throw new \InvalidArgumentException($action_name . ' not found.');
}
$data = [
'type' => 2,
'ext_id' => $this->id,
'action_id' => $action->id
];
$permission = (new Factory(Permission::class))->where($data)->find();
if (!$permission) {
$permission = (new Factory(Permission::class))->create($data);
}
$permission->status = 1;
$permission->save();
}
public function removePermission($action_name)
{
if (!$this->checkAccess($action_name)) {
return;
}
$action = (new Factory(Action::class))->where(['description' => $action_name])->find();
if (!$action) {
throw new \InvalidArgumentException($action_name . ' not found.');
}
$data = [
'type' => 2,
'ext_id' => $this->id,
'action_id' => $action->id
];
$permission = (new Factory(Permission::class))->where($data)->find();
if (!$permission) {
return;
}
$permission->status = 0;
$permission->save();
}
public function hasUser($user)
{
$user = \Model::factory(User::class)
->select('users.*')
->join('user_roles', ['user_roles.user', '=', 'users.id'])
->join('roles', ['roles.id', '=', 'user_roles.role'])
->where('roles.id', $this->id)
->whereAnyIs([['users.name' => $user], ['users.id' => $user]])
->findOne();
if ($user !== false) {
return true;
}
return false;
}
public function isInherited($action_name)
{
if (!$this->checkAccess($action_name)) {
return false;
}
$action = (new Factory(Action::class))->where(['description' => $action_name])->find();
$permission = (new Factory(Permission::class))->where([
'type' => 2,
'ext_id' => $this->id,
'action_id' => $action->id,
'status' => 1
])->find();
if ($permission !== false) {
return false;
}
return true;
}
}
?>

104
src/common/User.php Normal file
View File

@ -0,0 +1,104 @@
<?php
namespace Incoviba\common;
use App\Alias\OldModel as Model;
use App\Service\Factory;
/**
* User with Privileges
* @property int $id
* @property string $name length=50
* @property string $password
*/
class User extends Model
{
public static $_table = 'users';
public function password($password = null)
{
if ($password == null) {
return false;
}
$this->password = \password_hash($password, \PASSWORD_BCRYPT);
}
protected $permissions = null;
public function permissions()
{
if ($this->permissions == null) {
$permissions = $this->hasMany(Permission::class, 'ext_id')->where('permissions.type', 1)->findMany();
if ($permissions == false) {
$permissions = [];
}
foreach ($this->roles() as $role) {
$rp = $role->permissions();
if ($rp !== false) {
$permissions = array_merge($permissions, $rp);
}
}
if (count($permissions) == 0) {
$permissions = false;
}
$this->permissions = $permissions;
}
return $this->permissions;
}
public function roles()
{
return $this->hasManyThrough(Role::class, UserRole::class, 'user', 'role')->findMany();
}
public function hasAccess($route)
{
foreach ($this->roles() as $role) {
if ($role->hasAccess($route) === true) {
return true;
}
}
$action = $route->getArgument('action');
$action = (new Factory(Action::class))->where(['description' => $action])->find();
if (!$action) {
return false;
}
$data = [
'type' => 1,
'ext_id' => $this->id,
'action_id' => $action->id,
'status' => 1
];
$permission = (new Factory(Permission::class))->where($data)->find();
if ($permission !== false) {
return true;
}
return false;
}
public function checkAccess($action_name)
{
foreach ($this->roles() as $role) {
if ($role->checkAccess($action_name) === true) {
return true;
}
}
$action = (new Factory(Action::class))->where(['description' => $action_name])->find();
$permission = (new Factory(Permission::class))->where([
'type' => 1,
'ext_id' => $this->id,
'action_id' => $action->id,
'status' => 1
])->find();
if ($permission !== false) {
return true;
}
return false;
}
public function hasRole($role)
{
foreach ($this->roles() as $r) {
if ($r->description == $role or $r->id == $role) {
return true;
}
}
return false;
}
}

26
src/common/UserRole.php Normal file
View File

@ -0,0 +1,26 @@
<?php
namespace Incoviba\common;
use App\Alias\OldModel as Model;
/**
*
* @author Aldarien
* @property int $user foreign=users.id
* @property int $role foreign=roles.id
*
*/
class UserRole extends Model
{
public static $_table = 'user_roles';
public function user()
{
return $this->belongsTo(User::class, 'user')->findOne();
}
public function role()
{
return $this->belongsTo(Role::class, 'role')->findOne();
}
}
?>

View File

@ -0,0 +1,22 @@
<?php
namespace Incoviba\nuevo\Common;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
*
*/
class Banco extends NewModel
{
protected static $_table = 'bancos';
//
public function cuentas()
{
return $this->has_many(\Incoviba\nuevo\Inmobiliaria\Cuenta::class, 'banco_id')->findMany();
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Incoviba\nuevo\Common;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
* @property Provincia provincia_id
*
*/
class Comuna extends NewModel
{
protected static $_table = 'comunas';
//
public function provincia()
{
return $this->belongs_to(Provincia::class, 'provincia_id')->findOne();
}
public function direcciones()
{
return $this->has_many(Direccion::class, 'comuna_id')->findMany();
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace Incoviba\nuevo\Common;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string calle
* @property string numero
* @property string extra
* @property Comuna comuna_id
*
*/
class Direccion extends NewModel
{
protected static $_table = 'direcciones';
public function comuna()
{
return $this->belongs_to(Comuna::class, 'comuna_id')->findOne();
}
}

33
src/nuevo/Common/M2.php Normal file
View File

@ -0,0 +1,33 @@
<?php
namespace Incoviba\nuevo\Common;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property double util
* @property double logia
* @property double terraza
* @property double cubierta
* @property double terreno
*
*/
class M2 extends NewModel
{
protected static $_table = 'm2s';
public function unidades()
{
return $this->has_many(\Incoviba\nuevo\Proyecto\UnidadProyecto::class, 'm2_id')->findMany();
}
public function vendibles()
{
return $this->util + $this->logia + $this->terraza / 2 + $this->cubierta / 3;
}
public function total()
{
return $this->util + $this->logia + $this->terraza + $this->cubierta;
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Incoviba\nuevo\Common;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
* @property Region region_id
*
*/
class Provincia extends NewModel
{
protected static $_table = 'provincias';
//
public function region()
{
return $this->belongs_to(Region::class, 'region_id')->findOne();
}
public function comunas()
{
return $this->has_many(Comuna::class, 'provincia_id')->findMany();
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace Incoviba\nuevo\Common;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
* @property string nombre
* @property string numeral
* @property int orden
*
*/
class Region extends NewModel
{
protected static $_table = 'regiones';
public function provincias()
{
return $this->has_many(Provincia::class, 'region_id')->findMany();
}
}

33
src/nuevo/Common/UF.php Normal file
View File

@ -0,0 +1,33 @@
<?php
namespace Incoviba\nuevo\Common;
use App\Alias\NewModel;
use Carbon\Carbon;
/**
*
* @author Aldarien
* @property Date fecha
* @property double valor
*
*/
class UF extends NewModel
{
protected static $_table = 'ufs';
protected static $_id_column = 'fecha';
protected static $_timestamps = false;
//public $incrementing = false;
public function getValor()
{
$fecha = Carbon::parse($this->fecha, config('app.timezone'));
$uf = uf($fecha);
if ($uf != null) {
$this->valor = $uf->uf->value;
}
}
}

View File

@ -0,0 +1,47 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
use Incoviba\nuevo\Common\Direccion;
/**
*
* @author Aldarien
* @property int id
* @property int rut
* @property char dv
* @property string razon_social
* @property string nombre
* @property Representante representante_rut
* @property int telefono
* @property string correo
* @property string giro
* @property Direccion direccion_id
* @property TipoAgente tipo_agente_id
*
*/
class Agente extends NewModel
{
protected static $_table = 'agentes';
//
public function representante()
{
return $this->belongsTo(Representante::class, 'representante_rut', 'rut')->findOne();
}
public function direccion()
{
return $this->belongsTo(Direccion::class, 'direccion_id')->findOne();
}
public function tipo()
{
return $this->belongsTo(TipoAgente::class, 'tipo_agente_id')->findOne();
}
public function contratos()
{
return $this->hasMany(Contrato::class, 'agente_id')->findMany();
}
public function comision($inmobiliaria_rut)
{
return $this->hasMany(Contrato::class, 'agente_id')->where('inmobiliaria_rut', $inmobiliaria_rut)->sum('valor');
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
*
*/
class CategoriaCuentaContable extends NewModel
{
protected static $_table = 'categoria_cuenta_contables';
public function cuentas()
{
return $this->hasMany(CuentaContable::class, 'categoria_id')->findMany();
}
}

View File

@ -0,0 +1,36 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
use App\Definition\hasEstado;
/**
*
* @author Aldarien
* @property int id
* @property Contrato contrato_id
* @property TipoCobro tipo_cobro_id
* @property Date fecha
* @property string identificador
* @property int valor
* @property int iva
* @property string glosa
* @property double uf
*
*/
class Cobro extends NewModel
{
use hasEstado;
protected static $_table = 'cobros';
//
public function contrato()
{
return $this->belongsTo(Contrato::class, 'contrato_id')->findOne();
}
public function tipo()
{
return $this->belongsTo(TipoCobro::class, 'tipo_cobro_id')->findOne();
}
}

View File

@ -0,0 +1,37 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Inmobiliaria inmobiliaria_rut
* @property Agente agente_id
* @property TipoContrato tipo_contrato_id
* @property int valor
*
*/
class Contrato extends NewModel
{
protected static $_table = 'contrato';
//
public function inmobiliaria()
{
return $this->belongsTo(Inmobiliaria::class, 'inmobiliaria_rut', 'rut')->findOne();
}
public function agente()
{
return $this->belongsTo(Agente::class, 'agente_id')->findOne();
}
public function tipo()
{
return $this->belongsTo(TipoContrato::class, 'tipo_contrato_id')->findOne();
}
public function cobros()
{
return $this->hasMany(Cobro::class, 'contrato_id')->findMany();
}
}

View File

@ -0,0 +1,31 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use Incoviba\nuevo\Common\Banco;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property int cuenta
* @property Banco banco_id
* @property Inmobiliaria inmobiliaria_rut
* @property string usuario
* @property string password
*
*/
class Cuenta extends NewModel
{
protected static $_table = 'cuentas';
//
public function inmobiliaria()
{
return $this->belongsTo(Inmobiliaria::class, 'inmobiliaria_rut', 'rut')->findOne();
}
public function banco()
{
return $this->belongsTo(Banco::class, 'banco_id')->findOne();
}
}

View File

@ -0,0 +1,44 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Inmobiliaria inmobiliaria_rut
* @property string descripcion
* @property CategoriaCuentaContable categoria_id
*
*/
class CuentaContable extends NewModel
{
protected static $_table = 'cuenta_contables';
public function inmobiliaria()
{
return $this->belongsTo(Inmobiliaria::class, 'inmobiliaria_rut', 'rut')->findOne();
}
public function categoria()
{
return $this->belongsTo(CategoriaCuentaContable::class, 'categoria_id')->findOne();
}
public function cargos()
{
return $this->hasMany(TransaccionContable::class, 'cuenta_de')->findMany();
}
public function abonos()
{
return $this->hasMany(TransaccionContable::class, 'cuenta_para')->findMany();
}
public function transacciones()
{
$transacciones = model(TransaccionContable::class)->whereAnyIs([['cuenta_de', $this->id], ['cuenta_para', $this->id]])->orderByAsc('fecha')->findMany();
return $transacciones;
}
public function unidades()
{
return null;
}
}

View File

@ -0,0 +1,26 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewEstado;
/**
*
* @author Aldarien
* @property Cobro cobro_id
* @property TipoEstadoCobro estado_id
*
*/
class EstadoCobro extends NewEstado
{
protected static $_table = 'estado_cobros';
//
public function cobro()
{
return $this->belongsTo(Cobro::class, 'cobro_id')->findOne();
}
public function estado()
{
return $this->belongsTo(TipoEstadoCobro::class, 'estado_id')->findOne();
}
}

View File

@ -0,0 +1,50 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
use Incoviba\nuevo\Common\Direccion;
use Incoviba\nuevo\Proyecto\Proyecto;
use App\Definition\hasRUT;
/**
*
* @author Aldarien
*
* @property int rut
* @property char dv
* @property string nombre
* @property string razon_social
* @property Direccion direccion_id
* @property Representante representante_rut
* @property boolean estado
*
*/
class Inmobiliaria extends NewModel
{
use hasRUT;
protected static $_table = 'inmobiliarias';
public function direccion()
{
return $this->belongs_to(Direccion::class, 'direccion_id')->findOne();
}
public function representante()
{
return $this->belongs_to(Representante::class, 'representante_rut', 'rut')->findOne();
}
public function estado()
{
return ($estado != 0);
}
public function proyectos()
{
return $this->has_many(Proyecto::class, 'inmobiliaria_rut', 'rut')->findMany();
}
public function inversionistas()
{
return $this->has_many_through(Socio::class, Participacion::class, 'socio_id', 'inmobiliaria_rut', 'rut')->findMany();
}
}
?>

View File

@ -0,0 +1,27 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Inmobiliaria inmobiliaria_rut
* @property Socio socio_rut
* @property double participacion
*
*/
class Participacion extends NewModel
{
protected static $_table = 'participaciones';
public function inmobiliaria()
{
return $this->belongsTo(Inmobiliaria::class, 'inmobiliaria_rut', 'rut')->findOne();
}
public function socio()
{
return $this->belongsTo(Socio::class, 'socio_rut', 'rut')->findOne();
}
}

View File

@ -0,0 +1,56 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use Incoviba\nuevo\Common\Direccion;
use App\Alias\NewModel;
use App\Definition\hasRUT;
/**
*
* @author Aldarien
* @property int rut
* @property char dv
* @property string nombres
* @property string apellidos
* @property int telefono
* @property Direccion direccion_id
*
*/
class Representante extends NewModel
{
use hasRUT;
protected static $_table = 'representantes';
public function direccion()
{
return $this->belongsTo(Direccion::class, 'direccion_id')->findMany();
}
public function nombreCompleto()
{
return $this->nombres . ' ' . $this->apellidos;
}
public function inmobiliarias()
{
return $this->hasMany(Inmobiliaria::class, 'representante_rut', 'rut')->findMany();
}
public function agentes()
{
return $this->hasMany(Agente::class, 'representante_rut', 'rut')->findMany();
}
public function apelativo()
{
if ($this->sexo == 'f') {
return 'doña';
}
return 'don';
}
public function articulo()
{
if ($this->sexo == 'f') {
return 'la';
}
return 'el';
}
}

View File

@ -0,0 +1,23 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int rut
* @property char dv
* @property string nombre
*
*/
class Socio extends NewModel
{
protected static $_table = 'socios';
protected static $_id_column = 'rut';
public function participaciones()
{
return $this->hasMany(Participacion::class, 'socio_rut', 'rut')->findMany();
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
*
*/
class TipoAgente extends NewModel
{
protected static $_table = 'tipo_agentes';
//
public function agentes()
{
return $this->hasMany(Agente::class, 'tipo_agente_id')->findMany();
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
*
*/
class TipoCobro extends NewModel
{
protected static $_table = 'tipo_cobros';
//
public function cobros()
{
return $this->hasMany(Cobro::class, 'tipo_cobro_id')->findMany();
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
*
*/
class TipoContrato extends NewModel
{
protected static $_table = 'tipo_contratos';
//
public function contratos()
{
return $this->hasMany(Contrato::class)->findMany();
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
*
*/
class TipoEstadoCobro extends NewModel
{
protected static $_table = 'tipo_estado_cobros';
//
public function estados()
{
return $this->hasMany(EstadoCobro::class, 'estado_id')->findMany();
}
}

View File

@ -0,0 +1,46 @@
<?php
namespace Incoviba\nuevo\Inmobiliaria;
use Incoviba\nuevo\Common\UF;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Cuenta cuenta_de
* @property Cuenta cuenta_para
* @property int valor
* @property Date fecha
* @property string glosa
*
*/
class TransaccionContable extends NewModel
{
protected static $_table = 'transaccion_contables';
public function de()
{
return $this->belongsTo(CuentaContable::class, 'cuenta_de');
}
public function para()
{
return $this->belongsTo(CuentaContable::class, 'cuenta_para');
}
public function valor($tipo = 'pesos')
{
if ($tipo == 'ufs') {
$uf = model(UF::class)->where('fecha', $this->fecha)->findOne();
if (!$uf) {
$uf = model(UF::class)->create();
$uf->fecha = $this->fecha;
$uf->getValor();
$uf->save();
}
return ($this->valor / $uf->valor) ?: 0;
}
return $this->valor;
}
}

View File

@ -0,0 +1,25 @@
<?php
namespace Incoviba\nuevo\Proyecto;
use App\Alias\NewEstado;
/**
*
* @author Aldarien
* @property Proyecto proyecto_id
* @property TipoEstadoProyecto estado_id
*
*/
class EstadoProyecto extends NewEstado
{
protected static $_table = 'estado_proyectos';
public function proyecto()
{
return $this->belongsTo(Proyecto::class, 'proyecto_id')->findOne();
}
public function estado()
{
return $this->belongsTo(TipoEstadoProyecto::class, 'estado_id')->findOne();
}
}

View File

@ -0,0 +1,22 @@
<?php
namespace Incoviba\nuevo\Proyecto;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
* @property int orden
*
*/
class Etapa extends NewModel
{
protected static $_table = 'etapas';
public function tipos()
{
return $this->hasMany(TipoEstadoProyecto::class, 'etapa_id')->findMany();
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Incoviba\nuevo\Proyecto;
use App\Definition\hasRUT;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property string nombre
*
*/
class Participe extends NewModel
{
use hasRUT;
protected static $_table = 'participes';
public function proyectos()
{
return $this->hasManyThrough(Proyecto::class, ProyectoParticipe::class, 'proyecto_id', 'participe_rut', 'rut')->findMany();
}
public function participaciones()
{
return $this->hasMany(ProyectoParticipe::class, 'participe_rut', 'rut')->findMany();
}
}

View File

@ -0,0 +1,132 @@
<?php
namespace Incoviba\nuevo\Proyecto;
use App\Alias\NewModel;
use Incoviba\nuevo\Inmobiliaria\Inmobiliaria;
use Incoviba\nuevo\Common\Direccion;
use App\Definition\hasEstado;
/**
*
* @author Aldarien
* @property int id
* @property string nombre
* @property string nombre_completo
* @property Inmobiliaria inmobiliaria_rut
* @property Direccion direccion_id
* @property boolean portal
* @property string descripcion
*
*/
class Proyecto extends NewModel
{
use hasEstado;
protected static $_table = 'proyectos';
public function inmobiliaria()
{
return $this->belongsTo(Inmobiliaria::class, 'inmobiliaria_rut', 'rut')->findOne();
}
public function direccion()
{
return $this->belongsTo(Direccion::class, 'direccion_id')->findOne();
}
public function participaciones()
{
return $this->hasMany(ProyectoParticipe::class, 'proyecto_id')->findMany();
}
public function participes()
{
return $this->hasManyThrough(Participe::class, ProyectoParticipe::class, 'proyecto_id', 'participe_rut', 'rut')->findMany();
}
public function unidades()
{
return $this->hasMany(UnidadProyecto::class, 'proyecto_id')->findMany();
}
public function cantidad($tipo = 'departamento')
{
$total = 0;
$unidades = $this->unidades;
foreach ($unidades as $unidad) {
if ($unidad->tipo->descripcion == $tipo) {
$total += $unidad->unidades->count();
}
}
return $total;
}
public function unidadesPrincipales()
{
if ($this->tipoUnidades()) {
return $this->cantidad('departamento');
} else {
return $this->cantidad('casa');
}
}
public function pisos()
{
$max_piso = 0;
$unidades = $this->unidades;
foreach ($unidades as $unidad) {
$piso = $unidad->unidades->max('piso');
if ($max_piso < $piso) {
$max_piso = $piso;
}
}
return $max_piso;
}
public function m2Construidos()
{
$total = 0;
$unidades = $this->unidades;
foreach ($unidades as $unidad) {
$total += $unidad->m2->total() * $unidad->unidades->count();
}
return $total;
}
public function tipoUnidades()
{
return (!$this->unidades->isEmpty() and $this->unidades[0]->tipo->descripcion == 'departamento');
}
public function ventas()
{
$ventas = [];
foreach ($this->unidades as $up) {
foreach ($up->unidades as $u) {
if (isset($u->propiedad)) {
$ventas->add($u->propiedad->venta);
}
}
}
$ventas = sort($ventas, function($a, $b) {
return $a->propiedad->unidadPrincipal->numeracion - $b->propiedad->unidadPrincipal->numeracion;
});
return $ventas;
}
public function ventasActivas()
{
$ventas = $this->ventas();
$output = [];
foreach ($ventas as $venta) {
$estado = $venta->ultimoEstado()->estado->descripcion;
if ($estado == 'promesado' or $estado == 'escriturado' or $estado == 'entregado') {
$output []= $venta;
}
}
return $output;
}
public function pVendido()
{
return $this->ventasActivas()->count() / $this->unidadesPrincipales();
}
public function m2Vendidos()
{
$ventas = $this->ventasActivas();
$sum = 0;
foreach ($ventas as $venta) {
$sum += $venta->propiedad->unidadPrincipal->unidadProyecto->m2->vendibles();
}
return $sum;
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Incoviba\nuevo\Proyecto;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Proyecto proyecto_id
* @property Participe participe_rut
* @property double participacion
*
*/
class ProyectoParticipe extends NewModel
{
protected static $_table = 'proyecto_participes';
public function proyecto()
{
$this->belongsTo(Proyecto::class, 'proyecto_id')->findOne();
}
public function participe()
{
$this->belongsTo(Participe::class, 'participe_rut', 'rut')->findOne();
}
}

View File

@ -0,0 +1,75 @@
<?php
namespace Incoviba\nuevo\Proyecto;
use App\Alias\NewModel;
use Incoviba\old\Proyecto\Proyecto as P;
use Carbon\Carbon;
/**
*
* @author Aldarien
* @property int $id
* @property Proyecto $proyecto_id
* @property string texto
* @property DateTime inicio
* @property DateTime cierre
*
*/
class Tema extends NewModel
{
protected static $_table = 'temas';
public function proyecto()
{
$proyecto = $this->belongsTo(Proyecto::class)->findOne();
if ($proyecto) {
return $proyecto;
}
return $this->belongsTo(P::class)->findOne();
}
public function inicio()
{
return Carbon::parse($this->inicio, config('app.timezone'));
}
public function cierre()
{
return Carbon::parse($this->cierre, config('app.timezone'));
}
public function texto()
{
$text = $this->texto;
$text = explode("\n", $text);
foreach ($text as &$line) {
$line = trim(rtrim($line, '.')) . '.';
if ($line != ltrim($line, '-')) {
$line = '&nbsp;' . $line;
}
}
$text = implode('<br />', $text);
preg_match_all('/\[\[.*\]\]/', $text, $matches);
$search = [];
$replace = [];
if (count($matches[0]) > 0) {
foreach ($matches[0] as $match) {
$search []= $match;
list($model, $where, $value) = explode(':', str_replace(['[',']'], ['', ''], $match));
$class = '\\Incoviba\\old\\' . $model;
$obj = model($class)->where($where, $value)->findOne();
$str = $value;
if ($obj->venta()) {
$str = '<a href="';
$str .= url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $obj->venta()->id]);
$str .= '">' . $value . '</a>';
}
$replace []= $str;
}
}
$text = str_replace($search, $replace, $text);
return $text;
}
}
?>

View File

@ -0,0 +1,28 @@
<?php
namespace Incoviba\nuevo\Proyecto;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
* @property int orden
* @property Etapa etapa_id
*
*/
class TipoEstadoProyecto extends NewModel
{
protected static $_table = 'tipo_estado_proyectos';
public function etapa()
{
return $this->belongsTo(Etapa::class, 'etapa_id')->findOne();
}
public function estados()
{
return $this->hasMany(EstadoProyecto::class, 'estado_id')->findMany();
}
}

View File

@ -0,0 +1,21 @@
<?php
namespace Incoviba\nuevo\Proyecto;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
*
*/
class TipoUnidad extends NewModel
{
protected static $_table = 'tipo_unidades';
public function unidades()
{
return $this->hasMany(UnidadProyecto::class, 'tipo_id')->findMany();
}
}

View File

@ -0,0 +1,50 @@
<?php
namespace Incoviba\nuevo\Proyecto;
use App\Alias\NewModel;
use Incoviba\nuevo\Common\M2;
use Incoviba\nuevo\Venta\Unidad;
/**
*
* @author Aldarien
* @property int id
* @property Proyecto proyecto_id
* @property TipoUnidad tipo_id
* @property string nombre
* @property string tipologia
* @property M2 m2_id
* @property string descripcion
*
*/
class UnidadProyecto extends NewModel
{
protected static $_table = 'unidad_proyectos';
public function proyecto()
{
return $this->belongsTo(Proyecto::class, 'proyecto_id')->findOne();
}
public function m2()
{
return $this->belongsTo(M2::class, 'm2_id')->findOne();
}
public function tipo()
{
return $this->belongsTo(TipoUnidad::class, 'tipo_id')->findOne();
}
public function unidades()
{
return $this->hasMany(Unidad::class, 'unidad_proyecto_id')->findMany();
}
public function orientaciones()
{
$orientaciones = [];
foreach ($this->unidades as $unidad) {
if (array_search($unidad->orientacion, $orientaciones) === false) {
$orientaciones []= $unidad->orientacion;
}
}
return $orientaciones;
}
}

View File

@ -0,0 +1,59 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
use Incoviba\nuevo\Inmobiliaria\Agente;
use Carbon\Carbon;
use Incoviba\nuevo\Proyecto\Proyecto;
use App\Definition\hasEstado;
/**
*
* @author Aldarien
* @property int $id
* @property Proyecto $proyecto_id
* @property Agente $agente_id
* @property Propietario $propietario_rut
* @property Reserva $reserva_id
* @property date $fecha
* @property double $valor
* @property double $pie
* @property double $credito
*
*/
class Cierre extends NewModel
{
use hasEstado;
protected static $_table = 'cierres';
public function proyecto()
{
return $this->belongsTo(Proyecto::class, 'proyecto_id')->findOne();
}
public function agente()
{
return $this->belongsTo(Agente::class, 'agente_id')->findOne();
}
public function propietario()
{
return $this->belongsTo(Propietario::class, 'propietario_rut')->findOne();
}
public function reserva()
{
return $this->belongsTo(Reserva::class, 'reserva_id')->findOne();
}
public function fecha()
{
return Carbon::parse($this->fecha, config('app.timezone'));
}
public function pie($type = 'ufs')
{
if ($type == 'ufs') {
return $this->pie;
}
$uf = uf($this->fecha());
return $this->pie * $uf->uf->value;
}
}
?>

View File

@ -0,0 +1,23 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Venta venta_id
* @property string texto
* @property boolean estado
*
*/
class Comentario extends NewModel
{
protected static $_table = 'comentarios';
public function venta()
{
return $this->belongsTo(Venta::class, 'venta_id')->findOne();
}
}

27
src/nuevo/Venta/Cuota.php Normal file
View File

@ -0,0 +1,27 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Pie pie_id
* @property Pago pago_id
* @property int numero
*
*/
class Cuota extends NewModel
{
protected static $_table = 'cuotas';
public function pie()
{
return $this->belongsTo(Pie::class, 'pie_id')->findOne();
}
public function pago()
{
return $this->belongsTo(Pago::class, 'pago_id')->findOne();
}
}

View File

@ -0,0 +1,47 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
use App\Definition\hasEstado;
/**
*
* @author Aldarien
* @property int id
* @property Venta venta_id
*
*/
class Entrega extends NewModel
{
use hasEstado;
protected static $_table = 'entregas';
public function venta()
{
return $this->belongs_to(Venta::class, 'venta_id')->findOne();
}
public function fondos()
{
return $this->has_many_through(Pago::class, FondoEntrega::class, 'entrega_id', 'pago_id')->findMany();
}
public function mediciones()
{
return $this->has_many_through(Medicion::class, MedicionEntrega::class, 'entrega_id', 'medicion_id')->findMany();
}
public function observaciones()
{
return $this->has_many_through(Observacion::class, EntregaObservacion::class, 'entrega_id', 'observacion_id')->findMany();
}
public function observacionesPendientes()
{
return $this->has_many_through(Observacion::class, EntregaObservacion::class, 'entrega_id', 'observacion_id')
->select('observaciones.*')
->rawJoin('JOIN (SELECT e1.* FROM (SELECT MAX(id) AS id, observacion_id FROM estado_observaciones GROUP BY observacion_id) e0 JOIN estado_observaciones e1 ON e1.id = e0.id)', ['ep.observacion_id', '=', 'observaciones.id'], 'ep')
->leftOuterJoin('tipo_estado_observaciones', ['tipo_estado_observaciones.id', '=', 'ep.tipo_estado_observacion_id'])
->where('tipo_estado_observaciones.descripcion', 'ingresada')
->findMany();
}
}
?>

View File

@ -0,0 +1,26 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewEstado;
/**
*
* @author Aldarien
* @property Cierre $cierre_id
* @property TipoEstadoCierre $estado_id
*
*/
class EstadoCierre extends NewEstado
{
protected static $_table = 'estado_cierres';
public function cierre()
{
return $this->belongsTo(Cierre::class)->findOne();
}
public function estado()
{
return $this->belongsTo(TipoEstadoCierre::class)->findOne();
}
}
?>

View File

@ -0,0 +1,26 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewEstado;
/**
*
* @author Aldarien
* @property Observacion observacion_id
* @property TipoEstadoObservacion tipo_estado_observacion_id
*
*/
class EstadoObservacion extends NewEstado
{
protected static $_table = 'estado_observaciones';
public function observacion()
{
return $this->belongs_to(Observacion::class, 'observacion_id')->findOne();
}
public function tipo()
{
return $this->belongs_to(TipoEstadoObservacion::class, 'tipo_estado_observacion_id')->findOne();
}
}
?>

View File

@ -0,0 +1,25 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewEstado;
/**
*
* @author Aldarien
* @property Pago pago_id
* @property TipoEstadoPago estado_id
*
*/
class EstadoPago extends NewEstado
{
protected static $_table = 'estado_pagos';
public function pago()
{
return $this->belongsTo(Pago::class, 'pago_id')->findOne();
}
public function estado()
{
return $this->belongsTo(TipoEstadoPago::class, 'estado_id')->findOne();
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Incoviba\nuevo\Venta;
use Carbon\Carbon;
use App\Alias\NewEstado;
/**
*
* @author Aldarien
* @property Postventa postventa_id
* @property TipoEstadoPostventa tipo_estado_postventa_id
*
*/
class EstadoPostventa extends NewEstado
{
protected static $_table = 'estado_postventas';
public function postventa()
{
return $this->belongs_to(Postventa::class, 'postventa_id')->findOne();
}
public function tipo()
{
return $this->belongs_to(TipoEstadoPostventa::class, 'tipo_estado_postventa_id')->findOne();
}
}
?>

View File

@ -0,0 +1,25 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewEstado;
/**
*
* @author Aldarien
* @property Venta venta_id
* @property TipoEstadoVenta estado_id
*
*/
class EstadoVenta extends NewEstado
{
protected static $_table = 'estado_ventas';
public function venta()
{
return $this->belongsTo(Venta::class, 'venta_id')->findOne();
}
public function estado()
{
return $this->belongsTo(TipoEstadoVenta::class, 'estado_id')->findOne();
}
}

View File

@ -0,0 +1,31 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Venta venta_id
* @property TipoFondo tipo_id
* @property Pago pago_id
*
*/
class FondoVenta extends NewModel
{
protected static $_table = 'fondo_ventas';
public function venta()
{
return $this->belongs_to(Venta::class, 'venta_id')->findOne();
}
public function tipo()
{
return $this->belongs_to(TipoFondo::class, 'tipo_id')->findOne();
}
public function pago()
{
return $this->belongs_to(Pago::class, 'pago_id')->findOne();
}
}

View File

@ -0,0 +1,35 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property Pie pie_id
* @property Pago escritura_id
* @property Pago credito_id
* @property Pago subsidio_id
*
*/
class FormaPago extends NewModel
{
protected static $_table = 'forma_pago';
public function pie()
{
return $this->belongsTo(Pie::class, 'pie_id')->findOne();
}
public function escritura()
{
return $this->belongsTo(Pago::class, 'escritura_id')->findOne();
}
public function credito()
{
return $this->belongsTo(Pago::class, 'credito_id')->findOne();
}
public function subsidio()
{
return $this->belongs_to(Subsidio::class, 'subsidio_id')->findOne();
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property TipoMedicion tipo_medicion_id
* @property double valor
* @property Date fecha
*
*/
class Medicion extends NewModel
{
protected static $_table = 'mediciones';
public function tipoMedicion()
{
return $this->belongs_to(TipoMedicion::class, 'tipo_medicion_id')->findOne();
}
}
?>

View File

@ -0,0 +1,20 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel as Model;
use App\Definition\hasEstado;
/**
*
* @author Aldarien
* @property int id
* @property string text
*
*/
class Observacion extends Model
{
use hasEstado;
protected static $_table = 'observaciones';
}
?>

35
src/nuevo/Venta/Pago.php Normal file
View File

@ -0,0 +1,35 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
use Incoviba\nuevo\Common\Banco;
use App\Definition\hasEstado;
/**
*
* @author Aldarien
* @property int id
* @property TipoPago tipo_id
* @property string identificador
* @property int valor
* @property Banco banco_id
* @property Date fecha
* @property double uf
* @property string pagador
*
*/
class Pago extends NewModel
{
use hasEstado;
protected static $_table = 'pagos';
public function tipo()
{
return $this->belongsTo(TipoPago::class, 'tipo_id')->findOne();
}
public function banco()
{
return $this->belongsTo(Banco::class, 'banco_id')->findOne();
}
}

39
src/nuevo/Venta/Pie.php Normal file
View File

@ -0,0 +1,39 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property int cuotas
* @property double valor
* @property Pie asociado_id
* @property double uf
*
*/
class Pie extends NewModel
{
protected static $_table = 'pies';
public function asociado()
{
$pie = $this->belongsTo(Pie::class, 'asociado_id');
if ($pie) {
return $pie->findOne();
}
return null;
}
public function Cuotas()
{
return $this->hasMany(Cuota::class, 'pie_id')->findMany();
}
public function CuotasPagadas()
{
return $this->hasMany(Cuota::class, 'pie_id')->filter(function($cuota) {
$estado = $cuota->pago->ultimoEstado()->estado->descripcion;
return ($estado == 'depositado' or $estado == 'abonado');
});
}
}

View File

@ -0,0 +1,38 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Definition\hasEstado;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Venta venta_id
*
*/
class Postventa extends NewModel
{
use hasEstado;
protected static $_table = 'postventas';
public function venta()
{
return $this->belongs_to(Venta::class, 'venta_id')->findOne();
}
public function observaciones()
{
return $this->has_many_through(Observacion::class, PostventaObservacion::class, 'postventa_id', 'observacion_id')->findMany();
}
public function observacionesPendientes()
{
return $this->has_many_through(Observacion::class, PostventaObservacion::class, 'postventa_id', 'observacion_id')
->select('observaciones.*')
->rawJoin('JOIN (SELECT e1.* FROM (SELECT MAX(id) AS id, observacion_id FROM estado_observaciones GROUP BY observacion_id) e0 JOIN estado_observaciones e1 ON e1.id = e0.id)', ['ep.observacion_id', '=', 'observaciones.id'], 'ep')
->leftOuterJoin('tipo_estado_observaciones', ['tipo_estado_observaciones.id', '=', 'ep.tipo_estado_observacion_id'])
->where('tipo_estado_observaciones.descripcion', 'ingresada')
->findMany();
}
}
?>

View File

@ -0,0 +1,27 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Postventa postventa_id
* @property Observacion observacion_id
*
*/
class PostventaObservacion extends NewModel
{
protected $_table = 'postventa_observaciones';
public function postventa()
{
return $this->belongs_to(Postventa::class, 'postventa_id')->findOne();
}
public function observacion()
{
return $this->belongs_to(Observacion::class, 'observacion_id')->findOne();
}
}
?>

View File

@ -0,0 +1,27 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Venta venta_id
* @property TipoPremio tipo_id
* @property double valor
*
*/
class Premio extends NewModel
{
protected static $_table = 'premios';
public function venta()
{
return $this->belongsTo(Venta::class, 'venta_id')->findOne();
}
public function tipo()
{
return $this->belongsTo(TipoPremio::class, 'tipo_id')->findOne();
}
}

View File

@ -0,0 +1,30 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Unidad unidad_id
* @property double valor
*
*/
class Propiedad extends NewModel
{
protected static $_table = 'propiedades';
public function unidadPrincipal()
{
return $this->belongsTo(Unidad::class, 'unidad_id')->findOne();
}
public function unidades()
{
return $this->hasMany(UnidadPropiedad::class, 'propiedad_id')->findMany();
}
public function venta()
{
return $this->hasMany(Venta::class, 'propiedad_id')->findOne();
}
}

View File

@ -0,0 +1,71 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
use Incoviba\nuevo\Common\Direccion;
use App\Definition\hasRUT;
/**
*
* @author Aldarien
* @property string nombres
* @property string apellido_paterno
* @property string apellido_materno
* @property int direccion_id
* @property int telefono
* @property Propietario representante_rut
* @property Propietario otro_rut
*
*/
class Propietario extends NewModel
{
use hasRUT;
protected static $_table = 'propietarios';
public function direccion()
{
return $this->belongsTo(Direccion::class, 'direccion_id')->findOne();
}
public function representante()
{
$prop = $this->belongsTo(Propietario::class, 'representante_rut', 'rut');
if ($prop) {
return $prop->findOne();
}
return null;
}
public function otro()
{
$prop = $this->belongsTo(Propietario::class, 'otro_rut', 'rut');
if ($prop) {
return $prop->findOne();
}
return null;
}
public function nombreCompleto()
{
return implode(' ', [$this->nombres, $this->apellido_paterno, $this->apellido_materno]);
}
public function represntado()
{
$prop = $this->has_many(Propietario::class, 'representante_rut', 'rut');
if ($prop) {
return $prop->findOne();
}
return null;
}
public function ventas()
{
return $this->hasMany(Venta::class, 'propietario_rut', 'rut')->findMany();
}
public function articulo()
{
if ($this->sexo == 'f') {
return 'la';
}
return 'el';
}
}

View File

@ -0,0 +1,28 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
use Incoviba\nuevo\Proyecto\Proyecto;
/**
*
* @author Aldarien
* @property int id
* @property Proyecto proyecto_id
* @property TipoMedicion tipo_medicion_id
*
*/
class ProyectoTipoMedicion extends NewModel
{
protected static $_table = 'proyecto_tipo_mediciones';
public function proyecto()
{
return $this->belongs_to(Proyecto::class, 'proyecto_id')->findOne();
}
public function tipo()
{
return $this->belongs_to(TipoMedicion::class, 'tipo_medicion_id')->findOne();
}
}
?>

View File

@ -0,0 +1,30 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int $id
* @property Unidad $unidad_id
*
*/
class Reserva extends NewModel
{
protected static $_table = 'reservas';
/**
*
* @return Unidad
*/
public function unidad()
{
return $this->belongsTo(Unidad::class, 'unidad_id')->findOne();
}
public function unidades()
{
return $this->hasMany(UnidadReserva::class, 'reserva_id')->findMany();
}
}
?>

View File

@ -0,0 +1,10 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewTipo;
class TipoEstadoCierre extends NewTipo
{
protected static $_table = 'tipo_estado_cierres';
}
?>

View File

@ -0,0 +1,10 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewTipo;
class TipoEstadoObservacion extends NewTipo
{
protected static $_table = 'tipo_estado_observaciones';
}
?>

View File

@ -0,0 +1,14 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewTipo;
class TipoEstadoPago extends NewTipo
{
protected static $_table = 'tipo_estado_pagos';
public function estados()
{
return $this->hasMany(EstadoPago::class, 'estado_id')->findMany();
}
}

View File

@ -0,0 +1,17 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewTipo;
/**
*
* @author Aldarien
* @property int id
* @property string descripcion
*
*/
class TipoEstadoPostventa extends NewTipo
{
protected static $_table = 'tipo_estado_postventas';
}
?>

View File

@ -0,0 +1,14 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewTipo;
class TipoEstadoVenta extends NewTipo
{
protected static $_table = 'tipo_estado_ventas';
public function estados()
{
return $this->hasMany(EstadoVenta::class, 'estado_id')->findMany();
}
}

View File

@ -0,0 +1,14 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewTipo;
class TipoFondo extends NewTipo
{
protected static $_table = 'tipo_fondos';
public function fondos()
{
return $this->hasMany(FontoVenta::class, 'tipo_id')->findMany();
}
}

View File

@ -0,0 +1,10 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewTipo;
class TipoMedicion extends NewTipo
{
protected static $_table = 'tipo_mediciones';
}
?>

View File

@ -0,0 +1,14 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewTipo;
class TipoPago extends NewTipo
{
protected static $_table = 'tipo_pagos';
public function pagos()
{
return $this->hasMany(Pago::class, 'tipo_id')->findMany();
}
}

View File

@ -0,0 +1,14 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewTipo;
class TipoPremio extends NewTipo
{
protected static $_table = 'tipo_premios';
public function premios()
{
return $this->hasMany(Premio::class, 'tipo_id')->findMany();
}
}

View File

@ -0,0 +1,47 @@
<?php
namespace Incoviba\nuevo\Venta;
use Incoviba\nuevo\Proyecto\UnidadProyecto;
use App\Alias\NewModel;
use Incoviba\nuevo\Inmobiliaria\CuentaContable;
/**
*
* @author Aldarien
* @property int id
* @property UnidadProyecto unidad_proyecto_id
* @property int piso
* @property string linea
* @property string numeracion
* @property string orientacion
*
*/
class Unidad extends NewModel
{
protected static $_table = 'unidades';
public function unidadProyecto()
{
return $this->belongsTo(UnidadProyecto::class, 'unidad_proyecto_id')->findOne();
}
public function uPropiedad()
{
$up = $this->hasMany(UnidadPropiedad::class, 'unidad_id');
if ($up) {
return $up->findOne();
}
return null;
}
public function propiedad()
{
$prop = $this->hasMany(Propiedad::class, 'unidad_id');
if ($prop) {
return $prop->findOne();
}
return null;
}
public function cuentas()
{
return $this->belongsTo(CuentaContable::class, 'cuenta_unidades', 'unidad_id', 'cuenta_id')->findMany();
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int id
* @property Propiedad propiedad_id
* @property Unidad unidad_id
* @property double valor
*
*/
class UnidadPropiedad extends NewModel
{
protected static $_table = 'unidad_propiedades';
public function propiedad()
{
return $this->belongsTo(Propiedad::class, 'propiedad_id')->findOne();
}
public function unidad()
{
return $this->belongsTo(Unidad::class, 'unidad_id')->findOne();
}
}

View File

@ -0,0 +1,27 @@
<?php
namespace Incoviba\nuevo\Venta;
use App\Alias\NewModel;
/**
*
* @author Aldarien
* @property int $id
* @property Reserva reserva_id
* @property Unidad unidad_id
*
*/
class UnidadReserva extends NewModel
{
protected static $_table = 'unidad_reservas';
public function reserva()
{
return $this->belongsTo(Reserva::class, 'reserva_id')->findOne();
}
public function unidad()
{
return $this->belongsTo(Unidad::class, 'unidad_id')->findOne();
}
}
?>

104
src/nuevo/Venta/Venta.php Normal file
View File

@ -0,0 +1,104 @@
<?php
namespace Incoviba\nuevo\Venta;
use Carbon\Carbon;
use App\Alias\NewModel;
use Incoviba\nuevo\Inmobiliaria\Agente;
use App\Definition\hasEstado;
/**
*
* @author Aldarien
* @property int id
* @property Propietario propietario_rut
* @property Propiedad propiedad_id
* @property FormaPago forma_pago_id
* @property Date fecha_promesa
* @property double valor_promesa
* @property double uf
* @property boolean relacionado
* @property Agente agente_id
* @property DateTime created_at
* @property DateTime updated_at
*
*/
class Venta extends NewModel
{
use hasEstado;
protected static $_table = 'ventas';
public function propietario()
{
return $this->belongs_to(Propietario::class, 'propietario_rut', 'rut')->findOne();
}
public function propiedad()
{
return $this->belongs_to(Propiedad::class, 'propiedad_id')->findOne();
}
public function formaPago()
{
return $this->belongs_to(FormaPago::class, 'forma_pago_id')->findOne();
}
public function agente()
{
$agente = $this->belongs_to(Agente::class, 'agente_id');
if ($agente) {
return $agente->findOne();
}
return null;
}
public function valor()
{
return $this->valor_promesa * $this->uf;
}
public function proyecto()
{
return $this->propiedad->unidadPrincipal->unidadProyecto->proyecto();
}
public function comision()
{
return $this->agente->comision($this->proyecto->inmobiliaria->rut);
}
public function ufM2()
{
if (!$this->agente) {
return 0;
}
return ($this->valor_promesa - $this->premios->sum('valor') - $this->comision() - $this->propiedad->unidades->sum('valor')) / $this->propiedad->unidadPrincipal->unidadProyecto->m2->vendibles();
}
public function fechaPromesa()
{
return Carbon::parse($this->fecha_promesa, config('app.timezone'));
}
public function premios()
{
$premios = $this->has_many(Premio::class, 'venta_id');
if ($premios) {
return $premios->findMany();
}
return [];
}
public function comentarios()
{
$comentarios = $this->has_many(Comentario::class, 'venta_id');
if ($comentarios) {
return $comentarios->findMany();
}
return [];
}
public function fondos()
{
return $this->has_many(FondoVenta::class, 'venta_id')->findMany();
}
public function postventas()
{
$postventas = $this->has_many(Postventa::class, 'venta_id');
if ($postventas) {
return $postventas->findMany();
}
return null;
}
}

29
src/old/Common/Banco.php Normal file
View File

@ -0,0 +1,29 @@
<?php
namespace Incoviba\old\Common;
use App\Alias\OldModel as Model;
/**
*
* @author Aldarien
*
* @property int id
* @property string nombre
*
*/
class Banco extends Model
{
public function nombreCompleto()
{
$str = '';
switch ($this->nombre) {
case 'Estado':
case 'Chile':
case 'Edwards':
$str .= 'Banco ';
}
$str .= $this->nombre;
return $str;
}
}
?>

22
src/old/Common/Comuna.php Normal file
View File

@ -0,0 +1,22 @@
<?php
namespace Incoviba\old\Common;
use App\Alias\OldModel as Model;
/**
*
* @author Aldarien
*
* @property int id
* @property string descripcion
* @property Provincia provincia
*
*/
class Comuna extends Model
{
public function provincia()
{
return $this->belongs_to(Provincia::class, 'provincia')->findOne();
}
}
?>

View File

@ -0,0 +1,36 @@
<?php
namespace Incoviba\old\Common;
use App\Alias\OldModel as Model;
/**
*
* @author Aldarien
*
* @property int id
* @property string calle
* @property int numero
* @property string extra
* @property Comuna comuna
*
*/
class Direccion extends Model
{
public function comuna()
{
return $this->belongs_to(Comuna::class, 'comuna')->findOne();
}
public function completa($comuna = false)
{
$str = $this->calle . ' ' . $this->numero;
if ($this->extra != '') {
$str .= ', ' . $this->extra;
}
if ($comuna) {
$str .= ', ' . $this->comuna()->descripcion;
}
return $str;
}
}
?>

View File

@ -0,0 +1,26 @@
<?php
namespace Incoviba\old\Common;
use App\Alias\OldModel as Model;
/**
*
* @author Aldarien
*
* @property int id
* @property string descripcion
* @property Region region
*
*/
class Provincia extends Model
{
public function region()
{
return $this->belongsTo(Region::class, 'region')->findOne();
}
public function comunas()
{
return $this->hasMany(Comuna::class, 'provincia')->findMany();
}
}
?>

44
src/old/Common/Region.php Normal file
View File

@ -0,0 +1,44 @@
<?php
namespace Incoviba\old\Common;
use App\Alias\OldModel as Model;
/**
*
* @author Aldarien
*
* @property int id
* @property string descripcion
* @property char numeral
* @property int numeracion
*
*/
class Region extends Model
{
private $provincias = null;
private $comunas = null;
public function provincias()
{
if ($this->provincias == null) {
$this->provincias = $this->hasMany(Provincia::class, 'region')->findMany();
}
return $this->provincias;
}
public function comunas()
{
if ($this->comunas == null) {
$provincias = $this->provincias();
$comunas = [];
foreach ($provincias as $prov) {
$comunas = array_merge($comunas, $prov->comunas());
}
usort($comunas, function($a, $b) {
return strcmp($a->descripcion, $b->descripcion);
});
$this->comunas = $comunas;
}
return $this->comunas;
}
}
?>

View File

@ -0,0 +1,23 @@
<?php
namespace Incoviba\old\Inmobiliaria;
use App\Alias\OldModel as Model;
use Incoviba\old\Common\Banco;
/**
* @property int $id
* @property Inmobiliaria $inmobiliaria
* @property Banco $banco
* @property string $cuenta
*/
class Cuenta extends Model
{
public function inmobiliaria()
{
return $this->belongsTo(Inmobiliaria::class, 'inmobiliaria', 'rut')->findOne();
}
public function banco()
{
return $this->belongsTo(Banco::class, 'banco')->findOne();
}
}

View File

@ -0,0 +1,135 @@
<?php
namespace Incoviba\old\Inmobiliaria;
use App\Alias\OldModel as Model;
use Incoviba\old\Common\Banco;
use Incoviba\old\Proyecto\Proyecto;
/**
*
* @author Aldarien
*
* @property int $rut
* @property char $dv
* @property string $razon
* @property string $abreviacion
* @property string $cuenta
* @property Banco $banco
* @property TipoSociedad $sociedad
*
*/
class Inmobiliaria extends Model
{
public static $_id_column = 'rut';
public function banco()
{
return $this->cuenta()->banco();
//return $this->belongsTo(Banco::class, 'banco')->findOne();
}
public function proyectos()
{
return $this->hasMany(Proyecto::class, 'inmobiliaria', 'rut')->orderByAsc('descripcion')->findMany();
}
public function nombre(bool $tipo = false)
{
return $this->abreviacion . (($tipo) ? ' ' . $this->sociedad()->abreviacion . '.' : '');
}
public function rut()
{
return format('rut', $this->rut) . '-' . $this->dv;
}
public function sociedad() {
return $this->belongsTo(TipoSociedad::class, 'sociedad')->findOne();
}
public function razon(bool $tipo = false, bool $abreviado = false) {
return $this->razon . (($tipo) ? ' ' . (($abreviado) ? $this->sociedad()->abreviacion . '.' : $this->sociedad()->descripcion) : '');
}
/**
* $data = ['descripcion', 'calle', 'numero', 'extra', 'comuna']
*/
public function addProyecto(array $data)
{
//$proyecto = model(Proyecto::class)->where('inmobiliaria', $this->rut)->where('descripcion', $data['descripcion'])->findOne();
$data = [
'inmobiliaria' => $this->rut,
'descripcion' => $data['descripcion']
];
$proyecto = (new Factory(Proyecto::class))->where($data)->find();
if (!$proyecto) {
//$proyecto = model(Proyecto::class)->create();
$proyecto = (new Factory(Proyecto::class))->create($data);
/*$proyecto->inmobiliaria = $this->rut;
$proyecto->descripcion = $data['descripcion'];*/
$proyecto->setDireccion($data);
$proyecto->save();
}
}
public function removeProyecto(array $data)
{
$proyecto = (new Factory(Proyecto::class))->where([
'inmobiliaria' => $this->rut,
'descripcion' => $data['descripcion']
])->find();
if ($proyecto) {
$proyecto->delete();
}
}
public function cuenta()
{
if (count($this->cuentas()) == 0) {
return false;
}
return $this->cuentas()[0];
}
public function cuentas()
{
return $this->hasMany(Cuenta::class, 'inmobiliaria', 'rut')->findMany();
}
public function addCuenta(array $data)
{
if (!is_numeric($data['banco'])) {
$banco = (new Factory(Banco::class))->where(['descripcion' => $data['banco']])->find();
$data['banco'] = $banco->id;
}
$data = [
'inmobiliaria' => $this->rut,
'cuenta' => $data['cuenta'],
'banco' => $data['banco']
];
$cuenta = (new Factory(Cuenta::class))->where($data)->find();
if (!$cuenta) {
$cuenta = (new Factory(Cuenta::class))->create($data);
$cuenta->save();
}
}
public function removeCuenta(array $data)
{
$cuenta = (new Factory(Cuenta::class))->where(['inmobiliaria' => $this->rut]);
if (isset($data['cuenta'])) {
$cuenta = $cuenta->where(['cuenta' => $data['cuenta']]);
}
if (isset($data['banco'])) {
if (!is_numeric($data['banco'])) {
$banco = (new Factory(Banco::class))->where(['descripcion' => $data['banco']])->find();
$data['banco'] = $banco->id;
}
$cuenta = $cuenta->where(['banco' => $data['banco']]);
}
$cuenta = $cuenta->find();
if ($cuenta) {
$cuenta->delete();
}
}
public function modify(array $data)
{
$fields = ['rut', 'dv', 'razon', 'abreviacion'];
foreach ($data as $column => $value) {
if (array_search($column, $fields) !== false) {
$this->$column = $value;
}
}
$this->cuenta()->modify($data);
}
}
?>

View File

@ -0,0 +1,24 @@
<?php
namespace Incoviba\old\Inmobiliaria;
use App\Alias\OldModel as Model;
/**
*
* @property int id
* @property int padre
* @property int hijo
*
*/
class RelacionInmobiliarias extends Model
{
public function padre()
{
return $this->belongsTo(Inmobiliaria::class, 'padre', 'rut')->findOne();
}
public function hijo()
{
return $this->belongsTo(Inmobiliaria::class, 'hijo', 'rut')->findOne();
}
}
?>

View File

@ -0,0 +1,12 @@
<?php
namespace Incoviba\old\Inmobiliaria;
use App\Alias\OldModel as Model;
/**
* @property int $id
* @property string $descripcion
* @property string $abreviacion
*/
class TipoSociedad extends Model {
}

View File

@ -0,0 +1,41 @@
<?php
namespace Incoviba\old\Proyecto;
use App\Alias\OldModel as Model;
use Incoviba\old\Common\Direccion;
/**
*
* @author Aldarien
*
* @property int id
* @property TipoAgente tipo
* @property int rut
* @property string descripcion
* @property string representante
* @property int telefono
* @property string correo
* @property Direccion direccion
* @property string giro
* @property string abreviacion
*
*/
class Agente extends Model
{
public function direccion()
{
return $this->belongs_to(Direccion::class, 'direccion')->findOne();
}
public function tipo()
{
return $this->belongs_to(TipoAgente::class, 'tipo')->findOne();
}
public function tipos(int $tipo = 0)
{
if ($tipo == 0) {
return $this->hasMany(AgenteTipo::class, 'agente')->findMany();
}
return $this->hasMany(AgenteTipo::class, 'agente')->where('tipo', $tipo)->findOne();
}
}
?>

View File

@ -0,0 +1,20 @@
<?php
namespace Incoviba\old\Proyecto;
use App\Alias\OldModel as Model;
/**
* @property Agente $agente
* @property TipoAgente $tipo
*/
class AgenteTipo extends Model
{
public function agente()
{
return $this->belongsTo(Agente::class, 'agente')->findOne();
}
public function tipo()
{
return $this->belongsTo(TipoAgente::class, 'tipo')->findOne();
}
}

View File

@ -0,0 +1,86 @@
<?php
namespace Incoviba\old\Proyecto;
use Carbon\Carbon;
use App\Alias\OldModel as Model;
/**
* @property int $id
* @property int $proyecto
* @property \DateTime $fecha
* @property double $avance
* @property double $estado_pago
* @property int $pagado
* @property double $uf
* @property \DateTime $fecha_pagado
*/
class AvanceConstruccion extends Model
{
public static $_table = 'avance_construccion';
public function proyecto()
{
return $this->belongsTo(Proyecto::class, 'proyecto')->findOne();
}
public function fecha(\DateTime $fecha = null)
{
if ($fecha == null) {
return Carbon::parse($this->fecha, config('app.timezone'));
}
$this->fecha = $fecha->format('Y-m-d');
}
protected $pagare;
public function pagare()
{
if ($this->pagare == null) {
$this->pagare = $this->hasMany(Pagare::class, 'estado_pago', 'numero')
->where('proyecto', $this->proyecto)
->findOne();
}
return $this->pagare;
}
protected $pagares;
public function pagares()
{
if ($this->pagares == null) {
$this->pagares = $this->hasMany(Pagare::class, 'estado_pago', 'numero')
->where('proyecto', $this->proyecto)
->findMany();
}
return $this->pagares;
}
public function uf()
{
if ($this->uf == 0) {
$uf = uf($this->fecha());
if ($uf->total > 0) {
$this->uf = $uf->uf->value;
$this->save();
}
}
return $this->uf;
}
public function pagado($tipo = 'ufs')
{
if ($tipo == 'ufs') {
return $this->pagado / $this->uf();
}
return $this->pagado;
}
public function fechaPago(\DateTime $fecha = null)
{
if ($fecha == null) {
return Carbon::parse($this->fecha_pagado, config('app.timezone'));
}
$this->fecha_pagado = $fecha->format('Y-m-d');
}
public function edit(array $data)
{
foreach ($data as $column => $value) {
if (isset($this->$column) and $this->$column != $value) {
$this->$column = $value;
}
}
$this->save();
}
}

View File

@ -0,0 +1,35 @@
<?php
namespace Incoviba\old\Proyecto;
use App\Alias\OldModel as Model;
/**
*
* @property int id
* @property Proyecto proyecto
* @property Agente agente
* @property TipoCobro tipo
* @property date fecha
* @property float valor
* @property float iva
* @property float uf
* @property string identificador
* @property string glosa
*
*/
class Cobro extends Model
{
public function proyecto()
{
return $this->has_one(Proyecto::class);
}
public function agente()
{
return $this->has_one(Agente::class);
}
public function tipo()
{
return $this->has_one(TipoCobro::class);
}
}
?>

View File

@ -0,0 +1,21 @@
<?php
namespace Incoviba\old\Proyecto;
use App\Alias\OldModel as Model;
/**
*
* @property int id
* @property Proyecto proyecto
* @property int tipo
* @property float valor
*
*/
class Costo extends Model
{
public function proyecto()
{
return $this->has_one(Proyecto::class, 'proyecto')->findOne();
}
}
?>

View File

@ -0,0 +1,25 @@
<?php
namespace Incoviba\old\Proyecto;
use App\Alias\OldModel as Model;
/**
*
* @property int id
* @property Cobro cobro
* @property date fecha
* @property TipoEstadoCobro estado
*
*/
class EstadoCobro extends Model
{
public function cobro()
{
return $this->has_one(Cobro::class, 'cobro')->findOne();
}
public function tipo()
{
return $this->has_one(TipoEstadoCobro::class, 'estado')->findOne();
}
}
?>

View File

@ -0,0 +1,30 @@
<?php
namespace Incoviba\old\Proyecto;
use Carbon\Carbon;
use App\Alias\OldModel as Model;
/**
*
* @property int id
* @property Proyecto proyecto
* @property TipoEstadoProyecto estado
* @property date fecha
*
*/
class EstadoProyecto extends Model
{
public function proyecto()
{
return $this->belongs_to(Proyecto::class, 'proyecto')->findOne();
}
public function tipo()
{
return $this->belongs_to(TipoEstadoProyecto::class, 'estado')->findOne();
}
public function fecha()
{
return Carbon::parse($this->fecha, config('app.timezone'));
}
}
?>

View File

@ -0,0 +1,29 @@
<?php
namespace Incoviba\old\Proyecto;
use Carbon\Carbon;
use App\Alias\OldModel as Model;
/**
* @property int $id
* @property ProyectoAgente $agente
* @property \DateTime $fecha
* @property TipoEstadoProyectoAgente $tipo
*/
class EstadoProyectoAgente extends Model
{
public function agente()
{
return $this->belongsTo(ProyectoAgente::class, 'agente')->findOne();
}
public function fecha(\DateTime $fecha = null) {
if ($fecha == null) {
return Carbon::parse($this->fecha, config('app.timezone'));
}
$this->fecha = $fecha->format('Y-m-d');
}
public function tipo()
{
return $this->belongsTo(TipoEstadoProyectoAgente::class, 'tipo')->findOne();
}
}

View File

@ -0,0 +1,18 @@
<?php
namespace Incoviba\old\Proyecto;
use App\Alias\OldModel as Model;
/**
*
* @author Aldarien
*
* @property int id
* @property string descripcion
* @property int orden
*
*/
class EtapaProyecto extends Model
{
}
?>

Some files were not shown because too many files have changed in this diff Show More