Migraciones y testeo

This commit is contained in:
Juan Pablo Vial
2024-11-12 21:51:56 -03:00
parent e4ffcb52d8
commit c3a99d5939
9 changed files with 25658 additions and 44 deletions

View File

@ -3,6 +3,7 @@ watch:
- src
- tests
- common
- resources
fileMask: '*.php'
notifications:
passingTests: false

View File

@ -3,24 +3,26 @@
"version": "2.0.0",
"type": "project",
"require": {
"berrnd/slim-blade-view": "^1.0",
"ext-gd": "*",
"ext-openssl": "*",
"ext-pdo": "*",
"berrnd/slim-blade-view": "^1.0",
"guzzlehttp/guzzle": "^7.8",
"monolog/monolog": "^3.4",
"nyholm/psr7": "^1.8",
"nyholm/psr7-server": "^1.0",
"php-di/php-di": "^7.0",
"php-di/slim-bridge": "^3.4",
"phpoffice/phpspreadsheet": "^1.29",
"phpoffice/phpspreadsheet": "^3.0",
"predis/predis": "^2.2",
"robmorgan/phinx": "^0.16.5",
"slim/slim": "^4.11"
},
"require-dev": {
"fakerphp/faker": "^1.23",
"kint-php/kint": "^5.1",
"phpunit/phpunit": "^10.2",
"odan/phinx-migrations-generator": "^6.2",
"phpunit/phpunit": "^11",
"spatie/phpunit-watcher": "^1.23"
},
"authors": [

46
app/phinx.php Normal file
View File

@ -0,0 +1,46 @@
<?php
return
[
'paths' => [
'migrations' => '%%PHINX_CONFIG_DIR%%/resources/database/migrations',
'seeds' => '%%PHINX_CONFIG_DIR%%/resources/database/seeds'
],
'environments' => [
'default_migration_table' => 'phinxlog',
'default_environment' => 'development',
'production' => [
'adapter' => 'mysql',
'host' => $_ENV['DB_HOST'] ?? 'localhost',
'name' => $_ENV['DB_DATABASE'],
'user' => $_ENV['DB_USER'],
'pass' => $_ENV['DB_PASSWORD'],
'port' => '3306',
'charset' => 'utf8',
],
'development' => [
'adapter' => 'mysql',
'host' => $_ENV['DB_HOST'] ?? 'localhost',
'name' => $_ENV['DB_DATABASE'],
'user' => $_ENV['DB_USER'],
'pass' => $_ENV['DB_PASSWORD'],
'port' => '3306',
'charset' => 'utf8',
],
'testing' => [
'adapter' => 'mysql',
'host' => $_ENV['DB_HOST'] ?? 'localhost',
'name' => $_ENV['DB_DATABASE'],
'user' => $_ENV['DB_USER'],
'pass' => $_ENV['DB_PASSWORD'],
'port' => '3306',
'charset' => 'utf8',
]
],
'version_order' => 'creation',
'schema_file' => '%%PHINX_CONFIG_DIR%%/resources/database/schema.php',
'foreign_keys' => true,
'generate_migration_name' => true,
'default_migration_prefix' => 'incoviba_',
'mark_generated_migration' => true
];

View File

@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd"
bootstrap="vendor/autoload.php"
<phpunit
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/11.4/phpunit.xsd"
bootstrap="test.bootstrap.php"
cacheDirectory="/code/cache/tests"
executionOrder="depends,defects"
requireCoverageMetadata="false"
@ -12,7 +13,7 @@
failOnWarning="false">
<testsuites>
<testsuite name="unit">
<directory>tests/units</directory>
<directory>tests/unit</directory>
</testsuite>
<testsuite name="acceptance">
<directory>tests/integration</directory>
@ -21,14 +22,13 @@
<directory>tests/performance</directory>
</testsuite>
</testsuites>
<source restrictDeprecations="true" restrictNotices="true" restrictWarnings="true">
<source restrictNotices="true" restrictWarnings="true" ignoreIndirectDeprecations="true">
<include>
<directory>src</directory>
<directory>common</directory>
</include>
</source>
<coverage includeUncoveredFiles="true" pathCoverage="false" ignoreDeprecatedCodeUnits="true" disableCodeCoverageIgnore="true">
<coverage pathCoverage="false" ignoreDeprecatedCodeUnits="true" disableCodeCoverageIgnore="true">
<report>
<html outputDirectory="/code/public/coverage/html"/>
<php outputFile="/code/public/coverage/coverage.php"/>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,677 @@
-- Adminer 4.8.1 MySQL 11.5.2-MariaDB-ubu2404 dump
SET NAMES utf8;
SET time_zone = '+00:00';
SET foreign_key_checks = 0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
USE `incoviba`;
SET NAMES utf8mb4;
DROP TABLE IF EXISTS `action`;
CREATE TABLE `action` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`description` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `agente`;
CREATE TABLE `agente` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`tipo` int(11) DEFAULT NULL,
`rut` int(11) DEFAULT NULL,
`descripcion` varchar(100) DEFAULT NULL,
`representante` varchar(100) DEFAULT NULL,
`telefono` int(11) DEFAULT NULL,
`correo` varchar(50) DEFAULT NULL,
`direccion` int(11) DEFAULT NULL,
`giro` mediumtext DEFAULT NULL,
`abreviacion` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `idx_tipo` (`tipo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `agente_tipo`;
CREATE TABLE `agente_tipo` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`agente` int(10) unsigned NOT NULL,
`tipo` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `agente` (`agente`),
KEY `tipo` (`tipo`),
CONSTRAINT `agente_tipo_ibfk_1` FOREIGN KEY (`agente`) REFERENCES `agente` (`id`) ON DELETE NO ACTION,
CONSTRAINT `agente_tipo_ibfk_2` FOREIGN KEY (`tipo`) REFERENCES `tipo_agente` (`id`) ON DELETE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `avance_construccion`;
CREATE TABLE `avance_construccion` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`proyecto` int(10) unsigned NOT NULL,
`fecha` date NOT NULL,
`numero` int(10) unsigned NOT NULL,
`avance` double unsigned NOT NULL,
`estado_pago` double unsigned NOT NULL,
`pagado` int(10) unsigned DEFAULT NULL,
`uf` double unsigned DEFAULT NULL,
`fecha_pagado` date DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `proyecto` (`proyecto`),
CONSTRAINT `avance_construccion_ibfk_1` FOREIGN KEY (`proyecto`) REFERENCES `proyecto` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `backup`;
CREATE TABLE `backup` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`date` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `banco`;
CREATE TABLE `banco` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`nombre` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `bono_pie`;
CREATE TABLE `bono_pie` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`valor` float DEFAULT NULL,
`pago` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `pago` (`pago`),
CONSTRAINT `bono_pie_ibfk_1` FOREIGN KEY (`pago`) REFERENCES `pago` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `cartolas`;
CREATE TABLE `cartolas` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cuenta_id` int(10) unsigned NOT NULL,
`fecha` date NOT NULL,
`cargos` bigint(20) unsigned NOT NULL DEFAULT 0,
`abonos` bigint(20) unsigned NOT NULL DEFAULT 0,
`saldo` bigint(20) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `cuenta_id` (`cuenta_id`),
CONSTRAINT `cartolas_ibfk_2` FOREIGN KEY (`cuenta_id`) REFERENCES `cuenta` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `categorias_centros_costos`;
CREATE TABLE `categorias_centros_costos` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`descripcion` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `centros_costos`;
CREATE TABLE `centros_costos` (
`id` int(10) unsigned NOT NULL,
`tipo_centro_id` int(10) unsigned NOT NULL,
`categoria_id` int(10) unsigned NOT NULL,
`tipo_cuenta_id` int(10) unsigned DEFAULT NULL,
`cuenta_contable` varchar(100) NOT NULL,
`descripcion` mediumtext NOT NULL,
PRIMARY KEY (`id`),
KEY `tipo_centro_id` (`tipo_centro_id`),
KEY `categoria_id` (`categoria_id`),
KEY `tipo_cuenta_id` (`tipo_cuenta_id`),
CONSTRAINT `centros_costos_ibfk_3` FOREIGN KEY (`tipo_centro_id`) REFERENCES `tipos_centros_costos` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `centros_costos_ibfk_4` FOREIGN KEY (`categoria_id`) REFERENCES `categorias_centros_costos` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `cierre`;
CREATE TABLE `cierre` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`proyecto` int(10) unsigned NOT NULL,
`precio` double NOT NULL,
`fecha` date NOT NULL,
`relacionado` int(1) DEFAULT 0,
`propietario` int(10) unsigned DEFAULT 0,
PRIMARY KEY (`id`),
KEY `proyecto` (`proyecto`),
CONSTRAINT `cierre_ibfk_2` FOREIGN KEY (`proyecto`) REFERENCES `proyecto` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `cobro`;
CREATE TABLE `cobro` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`proyecto` int(11) DEFAULT NULL,
`agente` int(11) DEFAULT NULL,
`tipo` int(11) DEFAULT NULL,
`fecha` date DEFAULT NULL,
`valor` float DEFAULT NULL,
`iva` float DEFAULT 0,
`uf` float DEFAULT NULL,
`identificador` varchar(50) DEFAULT NULL,
`glosa` mediumtext DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `comentario`;
CREATE TABLE `comentario` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`venta` int(10) unsigned DEFAULT NULL,
`fecha` datetime DEFAULT NULL,
`texto` blob DEFAULT NULL,
`estado` int(11) DEFAULT 1,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `comuna`;
CREATE TABLE `comuna` (
`id` int(11) unsigned NOT NULL,
`descripcion` varchar(50) NOT NULL,
`provincia` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_provincia` (`provincia`),
CONSTRAINT `comuna_ibfk_1` FOREIGN KEY (`provincia`) REFERENCES `provincia` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `configurations`;
CREATE TABLE `configurations` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`value` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `costo`;
CREATE TABLE `costo` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`proyecto` int(11) DEFAULT NULL,
`tipo` int(11) DEFAULT NULL,
`valor` float DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `credito`;
CREATE TABLE `credito` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`banco` varchar(50) DEFAULT NULL,
`valor` float DEFAULT NULL,
`fecha` date DEFAULT NULL,
`uf` float DEFAULT NULL,
`abonado` int(1) DEFAULT 0,
`fecha_abono` date DEFAULT NULL,
`pago` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `cuenta`;
CREATE TABLE `cuenta` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`inmobiliaria` int(8) unsigned NOT NULL,
`banco` int(10) unsigned NOT NULL,
`cuenta` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
KEY `inmobiliaria` (`inmobiliaria`),
KEY `banco` (`banco`),
CONSTRAINT `cuenta_ibfk_1` FOREIGN KEY (`inmobiliaria`) REFERENCES `inmobiliaria` (`rut`) ON DELETE NO ACTION,
CONSTRAINT `cuenta_ibfk_2` FOREIGN KEY (`banco`) REFERENCES `banco` (`id`) ON DELETE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `cuota`;
CREATE TABLE `cuota` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`pie` int(10) unsigned NOT NULL,
`fecha` date NOT NULL,
`valor_$` int(10) unsigned NOT NULL,
`estado` tinyint(1) DEFAULT 0,
`banco` varchar(20) NOT NULL,
`fecha_pago` date DEFAULT NULL,
`abonado` tinyint(1) DEFAULT 0,
`fecha_abono` date DEFAULT NULL,
`uf` double DEFAULT 0,
`pago` int(10) unsigned DEFAULT NULL,
`numero` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `fk_pago_cuota` (`pago`),
KEY `pie` (`pie`),
CONSTRAINT `cuota_ibfk_1` FOREIGN KEY (`pago`) REFERENCES `pago` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `cuota_ibfk_2` FOREIGN KEY (`pie`) REFERENCES `pie` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `depositos`;
CREATE TABLE `depositos` (
`id` int(10) unsigned NOT NULL,
`cuenta_id` int(10) unsigned NOT NULL,
`capital` int(10) unsigned NOT NULL,
`futuro` int(10) unsigned NOT NULL,
`inicio` date NOT NULL,
`termino` date NOT NULL,
PRIMARY KEY (`id`),
KEY `cuenta_id` (`cuenta_id`),
CONSTRAINT `depositos_ibfk_2` FOREIGN KEY (`cuenta_id`) REFERENCES `cuenta` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `direccion`;
CREATE TABLE `direccion` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`calle` varchar(255) NOT NULL,
`numero` int(10) unsigned NOT NULL,
`extra` varchar(255) NOT NULL,
`comuna` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `fk_comuna` (`comuna`),
CONSTRAINT `direccion_ibfk_1` FOREIGN KEY (`comuna`) REFERENCES `comuna` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `entrega`;
CREATE TABLE `entrega` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`fecha` date NOT NULL,
`fondo_operacion` int(11) DEFAULT 0,
`fondo_reserva` int(11) DEFAULT 0,
`fecha_fondo_operacion` date DEFAULT NULL,
`fecha_fondo_reserva` date DEFAULT NULL,
`pago_operacion` int(11) DEFAULT NULL,
`pago_reserva` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `escritura`;
CREATE TABLE `escritura` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`valor` bigint(20) NOT NULL,
`fecha` date NOT NULL,
`uf` float DEFAULT NULL,
`abonado` int(11) DEFAULT 0,
`fecha_abono` date DEFAULT NULL,
`pago` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `estados_cuentas`;
CREATE TABLE `estados_cuentas` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cuenta_id` int(10) unsigned NOT NULL,
`fecha` date NOT NULL,
`active` tinyint(1) NOT NULL,
PRIMARY KEY (`id`),
KEY `cuenta_id` (`cuenta_id`),
CONSTRAINT `estados_cuentas_ibfk_2` FOREIGN KEY (`cuenta_id`) REFERENCES `cuenta` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `estado_cierre`;
CREATE TABLE `estado_cierre` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cierre` int(10) unsigned NOT NULL,
`tipo` int(10) unsigned NOT NULL,
`fecha` date NOT NULL,
PRIMARY KEY (`id`),
KEY `cierre` (`cierre`),
KEY `tipo` (`tipo`),
CONSTRAINT `estado_cierre_ibfk_3` FOREIGN KEY (`cierre`) REFERENCES `cierre` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `estado_cierre_ibfk_4` FOREIGN KEY (`tipo`) REFERENCES `tipo_estado_cierre` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `estado_cobro`;
CREATE TABLE `estado_cobro` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cobro` int(10) unsigned NOT NULL,
`fecha` date NOT NULL,
`estado` int(11) NOT NULL,
PRIMARY KEY (`id`,`cobro`,`estado`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `estado_pago`;
CREATE TABLE `estado_pago` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`pago` int(11) unsigned NOT NULL,
`fecha` date NOT NULL,
`estado` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `estado` (`estado`),
CONSTRAINT `estado_pago_ibfk_1` FOREIGN KEY (`estado`) REFERENCES `tipo_estado_pago` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `estado_precio`;
CREATE TABLE `estado_precio` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`precio` int(10) unsigned NOT NULL,
`fecha` date NOT NULL,
`estado` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `precio` (`precio`),
KEY `estado` (`estado`),
CONSTRAINT `estado_precio_ibfk_3` FOREIGN KEY (`precio`) REFERENCES `precio` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `estado_precio_ibfk_4` FOREIGN KEY (`estado`) REFERENCES `tipo_estado_precio` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `estado_problema`;
CREATE TABLE `estado_problema` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`problema` int(11) DEFAULT NULL,
`fecha` date DEFAULT NULL,
`estado` enum('ingreso','revision','correccion','ok') DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `estado_proyecto`;
CREATE TABLE `estado_proyecto` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`proyecto` int(10) unsigned NOT NULL,
`estado` int(11) unsigned NOT NULL,
`fecha` date NOT NULL,
PRIMARY KEY (`id`),
KEY `proyecto` (`proyecto`),
KEY `estado` (`estado`),
CONSTRAINT `estado_proyecto_ibfk_1` FOREIGN KEY (`proyecto`) REFERENCES `proyecto` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `estado_proyecto_ibfk_3` FOREIGN KEY (`estado`) REFERENCES `tipo_estado_proyecto` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `estado_proyecto_agente`;
CREATE TABLE `estado_proyecto_agente` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`agente` int(10) unsigned NOT NULL,
`fecha` date NOT NULL,
`tipo` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `estado_unidad_bloqueada`;
CREATE TABLE `estado_unidad_bloqueada` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`unidad` int(10) unsigned NOT NULL,
`fecha` date NOT NULL,
`tipo` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `estado_venta`;
CREATE TABLE `estado_venta` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`venta` int(10) unsigned NOT NULL,
`estado` int(11) unsigned NOT NULL DEFAULT 1,
`fecha` date NOT NULL,
PRIMARY KEY (`id`),
KEY `escritura` (`venta`),
KEY `estado` (`estado`),
CONSTRAINT `estado_venta_ibfk_1` FOREIGN KEY (`estado`) REFERENCES `tipo_estado_venta` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `estado_venta_ibfk_2` FOREIGN KEY (`venta`) REFERENCES `venta` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `etapa_proyecto`;
CREATE TABLE `etapa_proyecto` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`descripcion` varchar(20) DEFAULT NULL,
`orden` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `facturas`;
CREATE TABLE `facturas` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`venta_id` int(10) unsigned NOT NULL,
`index` int(10) unsigned NOT NULL,
`proporcion` double unsigned NOT NULL,
`data` text NOT NULL,
PRIMARY KEY (`id`),
KEY `venta_id` (`venta_id`),
CONSTRAINT `facturas_ibfk_2` FOREIGN KEY (`venta_id`) REFERENCES `venta` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `factura_proyecto_operador`;
CREATE TABLE `factura_proyecto_operador` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`proyecto_id` int(10) unsigned NOT NULL,
`operador_id` int(10) unsigned NOT NULL,
`factura` int(10) unsigned NOT NULL,
`valor_uf` double unsigned NOT NULL,
`valor_neto` int(10) unsigned NOT NULL,
`iva` int(10) unsigned DEFAULT 0,
PRIMARY KEY (`id`),
KEY `proyecto_id` (`proyecto_id`),
KEY `operador_id` (`operador_id`),
CONSTRAINT `factura_proyecto_operador_ibfk_1` FOREIGN KEY (`proyecto_id`) REFERENCES `proyecto` (`id`) ON DELETE CASCADE,
CONSTRAINT `factura_proyecto_operador_ibfk_2` FOREIGN KEY (`operador_id`) REFERENCES `agente` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `factura_venta`;
CREATE TABLE `factura_venta` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`factura_id` int(10) unsigned NOT NULL,
`venta_id` int(10) unsigned NOT NULL,
`valor` double NOT NULL,
PRIMARY KEY (`id`),
KEY `factura_id` (`factura_id`),
KEY `venta_id` (`venta_id`),
CONSTRAINT `factura_venta_ibfk_1` FOREIGN KEY (`factura_id`) REFERENCES `factura_proyecto_operador` (`id`) ON DELETE CASCADE,
CONSTRAINT `factura_venta_ibfk_2` FOREIGN KEY (`venta_id`) REFERENCES `venta` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `inmobiliaria`;
CREATE TABLE `inmobiliaria` (
`rut` int(8) unsigned NOT NULL,
`dv` char(1) DEFAULT NULL,
`razon` varchar(255) DEFAULT NULL,
`abreviacion` varchar(50) DEFAULT NULL,
`cuenta` varchar(50) DEFAULT NULL,
`banco` int(11) DEFAULT NULL,
`sociedad` int(10) unsigned DEFAULT NULL,
`sigla` varchar(4) DEFAULT NULL,
PRIMARY KEY (`rut`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `inmobiliarias_nubox`;
CREATE TABLE `inmobiliarias_nubox` (
`inmobiliaria_rut` int(8) unsigned NOT NULL,
`alias` varchar(100) NOT NULL,
`usuario` varchar(100) NOT NULL,
`contraseña` varchar(100) NOT NULL,
KEY `inmobiliaria_rut` (`inmobiliaria_rut`),
CONSTRAINT `inmobiliarias_nubox_ibfk_2` FOREIGN KEY (`inmobiliaria_rut`) REFERENCES `inmobiliaria` (`rut`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `locations`;
CREATE TABLE `locations` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`controller` varchar(50) NOT NULL,
`action` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `logins`;
CREATE TABLE `logins` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(10) unsigned NOT NULL,
`time` datetime NOT NULL,
`selector` varchar(255) NOT NULL,
`token` varchar(255) NOT NULL,
`status` int(1) NOT NULL DEFAULT 1,
PRIMARY KEY (`id`),
KEY `fk_logins_users` (`user_id`),
CONSTRAINT `fk_logins_users` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `monolog`;
CREATE TABLE `monolog` (
`channel` varchar(255) DEFAULT NULL,
`level` varchar(100) DEFAULT NULL,
`message` longtext DEFAULT NULL,
`time` datetime DEFAULT NULL,
`context` longtext DEFAULT NULL,
`extra` longtext DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `movimientos`;
CREATE TABLE `movimientos` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cuenta_id` int(10) unsigned NOT NULL,
`fecha` date NOT NULL,
`glosa` text NOT NULL,
`documento` varchar(50) NOT NULL,
`cargo` bigint(20) unsigned NOT NULL DEFAULT 0,
`abono` bigint(20) unsigned NOT NULL DEFAULT 0,
`saldo` bigint(20) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
KEY `cuenta_id` (`cuenta_id`),
CONSTRAINT `movimientos_ibfk_2` FOREIGN KEY (`cuenta_id`) REFERENCES `cuenta` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `movimientos_detalles`;
CREATE TABLE `movimientos_detalles` (
`movimiento_id` int(10) unsigned NOT NULL,
`centro_costo_id` int(10) unsigned DEFAULT NULL,
`categoria` varchar(100) DEFAULT NULL,
`detalle` text DEFAULT NULL,
`rut` int(11) DEFAULT NULL,
`digito` varchar(1) DEFAULT NULL,
`nombres` varchar(255) DEFAULT NULL,
`identificador` varchar(100) DEFAULT NULL,
KEY `movimiento_id` (`movimiento_id`),
KEY `centro_costo_id` (`centro_costo_id`),
CONSTRAINT `movimientos_detalles_ibfk_3` FOREIGN KEY (`movimiento_id`) REFERENCES `movimientos` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `movimientos_detalles_ibfk_5` FOREIGN KEY (`centro_costo_id`) REFERENCES `centros_costos` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `pagare`;
CREATE TABLE `pagare` (
`id` int(10) unsigned NOT NULL,
`proyecto` int(10) unsigned NOT NULL,
`moneda` int(10) unsigned NOT NULL,
`capital` double unsigned NOT NULL DEFAULT 0,
`tasa` double unsigned NOT NULL DEFAULT 0,
`fecha` date NOT NULL,
`fecha_banco` date NOT NULL DEFAULT '0000-00-00',
`duracion` int(10) unsigned NOT NULL DEFAULT 0,
`uf` double unsigned NOT NULL DEFAULT 0,
`abonado` int(10) unsigned NOT NULL DEFAULT 0,
`estado_pago` int(10) unsigned NOT NULL DEFAULT 99999999,
PRIMARY KEY (`id`),
KEY `moneda` (`moneda`),
KEY `proyecto` (`proyecto`),
CONSTRAINT `pagare_ibfk_1` FOREIGN KEY (`moneda`) REFERENCES `tipo_moneda_pagare` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `pagare_ibfk_2` FOREIGN KEY (`proyecto`) REFERENCES `proyecto` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `pago`;
CREATE TABLE `pago` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`valor` double NOT NULL,
`banco` int(11) DEFAULT NULL,
`tipo` int(11) DEFAULT NULL,
`identificador` varchar(50) DEFAULT NULL,
`fecha` date DEFAULT NULL,
`uf` double DEFAULT NULL,
`pagador` varchar(50) DEFAULT NULL,
`asociado` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `pagos_centros_costos`;
CREATE TABLE `pagos_centros_costos` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`pago_id` int(11) unsigned NOT NULL,
`centro_costo_id` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
KEY `pago_id` (`pago_id`),
KEY `centro_costo_id` (`centro_costo_id`),
CONSTRAINT `pagos_centros_costos_ibfk_3` FOREIGN KEY (`pago_id`) REFERENCES `pago` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `pagos_centros_costos_ibfk_4` FOREIGN KEY (`centro_costo_id`) REFERENCES `centros_costos` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `permissions`;
CREATE TABLE `permissions` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`type` int(1) unsigned NOT NULL,
`ext_id` int(10) unsigned NOT NULL,
`action_id` int(10) unsigned NOT NULL,
`status` int(1) unsigned NOT NULL DEFAULT 1,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `phinxlog`;
CREATE TABLE `phinxlog` (
`version` bigint(20) NOT NULL,
`migration_name` varchar(100) DEFAULT NULL,
`start_time` timestamp NULL DEFAULT NULL,
`end_time` timestamp NULL DEFAULT NULL,
`breakpoint` tinyint(1) NOT NULL DEFAULT 0,
PRIMARY KEY (`version`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `pie`;
CREATE TABLE `pie` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`fecha` date NOT NULL,
`valor` double unsigned NOT NULL,
`uf` double unsigned DEFAULT NULL,
`cuotas` int(10) unsigned NOT NULL,
`asociado` int(11) DEFAULT 0,
`reajuste` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `precio`;
CREATE TABLE `precio` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`unidad` int(10) unsigned NOT NULL,
`valor` double NOT NULL,
PRIMARY KEY (`id`),
KEY `unidad` (`unidad`),
CONSTRAINT `precio_ibfk_2` FOREIGN KEY (`unidad`) REFERENCES `unidad` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
DROP TABLE IF EXISTS `problema`;
CREATE TABLE `problema` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`venta` int(11) DEFAULT NULL,
`descripcion` mediumtext DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- 2024-11-12 15:11:54

46
app/test.bootstrap.php Normal file
View File

@ -0,0 +1,46 @@
<?php
require_once implode(DIRECTORY_SEPARATOR, [
__DIR__,
'vendor',
'autoload.php'
]);
function setupDatabase(string $schemaFilename): void {
printf("Loading database schema from %s", $schemaFilename);
$start = microtime(true);
$dsn = "mysql:host={$_ENV['DB_HOST']};dbname={$_ENV['DB_DATABASE']}";
$pdo = new PDO($dsn, $_ENV['DB_USER'], $_ENV['DB_PASSWORD']);
$sql = file_get_contents($schemaFilename);
$pdo->exec($sql);
$end = microtime(true);
printf(" in %.2f seconds\n", $end - $start);
}
function truncateTables(): void {
printf("Truncating tables");
$start = microtime(true);
$dsn = "mysql:host={$_ENV['DB_HOST']};dbname={$_ENV['DB_DATABASE']}";
$pdo = new PDO($dsn, $_ENV['DB_USER'], $_ENV['DB_PASSWORD']);
$pdo->exec("SET FOREIGN_KEY_CHECKS=0");
$statement = $pdo->query('SHOW TABLES');
$tables = array_map(function(array $row) {
return $row["Tables_in_{$_ENV['DB_DATABASE']}"];
}, $statement->fetchAll(PDO::FETCH_ASSOC));
foreach ($tables as $table) {
$pdo->exec("TRUNCATE TABLE `$table`");
}
$pdo->exec("SET FOREIGN_KEY_CHECKS=1");
$end = microtime(true);
printf(" in %.2f seconds\n", $end - $start);
}
$schemaFilename = implode(DIRECTORY_SEPARATOR, [__DIR__, 'resources', 'database', 'schema.sql']);
setupDatabase($schemaFilename);
register_shutdown_function(function() {
truncateTables();
});

29
testing.compose.yml Normal file
View File

@ -0,0 +1,29 @@
services:
testing:
profiles:
- testing
container_name: incoviba_tests
build: .
restart: unless-stopped
env_file:
- ${APP_PATH:-.}/.test.env
- ./.key.env
volumes:
- ${APP_PATH:-.}/:/code
- ./logs/test:/logs
command: [ '/code/bin/phpunit-watcher', 'watch' ]
depends_on:
- test-db
test-db:
profiles:
- testing
image: mysql:5.7
container_name: incoviba_test_db
restart: unless-stopped
env_file: ${APP_PATH:-.}/.test.db.env
volumes:
- test-db:/var/lib/mysql
volumes:
test-db: {}