From db7344bc74f8f30d18baeb42f097b918a55beee1 Mon Sep 17 00:00:00 2001 From: Aldarien Date: Mon, 14 Jun 2021 16:40:59 -0400 Subject: [PATCH 01/11] Mixed --- bin/informes/controllers/ventas.py | 282 ++++++++++++++--------------- 1 file changed, 141 insertions(+), 141 deletions(-) diff --git a/bin/informes/controllers/ventas.py b/bin/informes/controllers/ventas.py index 5078423..ab3ffce 100644 --- a/bin/informes/controllers/ventas.py +++ b/bin/informes/controllers/ventas.py @@ -1,141 +1,141 @@ -from flask import Blueprint, request, Response -import io -import json -import pandas as pd -import numpy as np -import datetime - - -ventas_blueprint = Blueprint('ventas', __name__,) - - -def format_data(data): - df = pd.DataFrame(data) - int_columns = ['Departamento', 'Estacionamientos', 'Bodegas'] - for col in int_columns: - df[col] = pd.to_numeric(df[col], errors='ignore') - float_columns = ['Valor Promesa', 'Pie', 'Pie Pagado', '% Pie Pagado', 'Bono Pie', 'Valor Operador', - 'Premios', 'Subsidio', 'Ahorro', 'Credito', 'Valor Ests & Bods', 'Valor Neto', - 'UF/m²*', 'Comision', 'Venta s/Comision', 'Precio'] - for col in float_columns: - if col in df.columns: - df[col] = pd.to_numeric(df[col], errors='coerce') - df = df.replace(np.nan, 0, regex=True) - - df['Fecha Venta'] = pd.to_datetime(df['Fecha Venta'], format='%Y-%m-%d') - df = df.sort_values(by=['Fecha Venta', 'Departamento']) - df['Fecha Venta'] = df['Fecha Venta'].dt.strftime('%d.%m.%Y') - - return df - - -def format_columns(workbook, columns): - column_settings = [{'header': column} for column in columns] - - center_format = workbook.add_format({'align': 'center'}) - amount_format = workbook.add_format({'num_format': '#,##0.00'}) - percent_format = workbook.add_format({'num_format': '0.00%'}) - - amount_columns = ['m² Ponderados', 'Valor Promesa', 'Pie', 'Pie Pagado', 'Bono Pie', 'Valor Operador', 'Premios', - 'Subsidio', 'Ahorro', 'Credito', 'Valor Ests & Bods', 'Valor Neto', 'UF/m²*', 'Comision', - 'Venta s/Comision', 'Precio'] - center_columns = ['Departamento', 'Estacionamientos', 'Bodegas'] - sum_columns = ['m² Ponderados', 'Valor Promesa', 'Pie', 'Pie Pagado', 'Bono Pie', 'Subsidio', 'Ahorro', 'Credito', - 'Valor Operador', 'Premios', 'Valor Ests & Bods', 'Valor Neto', 'Comision'] - count_columns = ['Departamento', 'Estacionamientos', 'Bodegas'] - - for (k, col) in enumerate(column_settings): - if col['header'] in amount_columns: - column_settings[k]['format'] = amount_format - if col['header'] in center_columns: - column_settings[k]['format'] = center_format - if col['header'] in sum_columns: - column_settings[k]['total_function'] = 'sum' - if col['header'] in count_columns: - column_settings[k]['total_function'] = 'count' - if col['header'] == '% Pie Pagado': - column_settings[k]['format'] = percent_format - if col['header'] == 'Propietario': - column_settings[k]['total_string'] = 'TOTAL' - - return column_settings - - -def format_excel(workbook, worksheet, data): - center_format = workbook.add_format({'align': 'center'}) - amount_format = workbook.add_format({'num_format': '#,##0.00'}) - percent_format = workbook.add_format({'num_format': '0.00%'}) - - amount_columns = ['m² Ponderados', 'Valor Promesa', 'Pie', 'Pie Pagado', 'Bono Pie', 'Valor Operador', 'Premios', - 'Subsidio', 'Ahorro', 'Credito', 'Valor Ests & Bods', 'Valor Neto', 'UF/m²*', 'Comision', - 'Venta s/Comision', 'Precio'] - center_columns = ['Departamento', 'Estacionamientos', 'Bodegas'] - - for col in amount_columns: - if col not in data.columns: - continue - k = data.columns.get_loc(col) + 1 - worksheet.set_column(k, k, cell_format=amount_format) - for col in center_columns: - if col not in data.columns: - continue - k = data.columns.get_loc(col) + 1 - worksheet.set_column(k, k, cell_format=center_format) - col = '% Pie Pagado' - k = data.columns.get_loc(col) + 1 - worksheet.set_column(k, k, cell_format=percent_format) - - return worksheet - - -@ventas_blueprint.route('', methods=['POST']) -def ventas(): - data = json.loads(request.data) - output = io.BytesIO() - writer = pd.ExcelWriter('tmp.xlsx', engine='xlsxwriter') - df = format_data(data['data']) - - start_row = 4 - if 'Compañía' in data: - start_row += 1 - df.to_excel(writer, startrow=start_row+1, startcol=1, header=False, index=False, sheet_name='Ventas') - wb = writer.book - wb.filename = output - - title_format = wb.add_format({'font_size': 16, 'bold': True}) - ws = writer.sheets['Ventas'] - (max_row, max_col) = df.shape - - if 'Compañía' in data: - ws.merge_range(1, 1, 1, max_col, data['Compañía']) - ws.merge_range(start_row-3, 1, start_row-3, max_col, data['Proyecto'], cell_format=title_format) - ws.write_string(start_row-2, 1, 'Ventas') - column_settings = format_columns(wb, df.columns) - ws.add_table(start_row, 1, max_row+start_row+1, max_col, {'name': 'Ventas', 'total_row': 1, - 'columns': column_settings, - 'style': 'Table Style Medium 1'}) - ws = format_excel(wb, ws, df) - - column_widths = { - 'B': 46, - 'C': 16, - 'D': 18, - 'E': 10, - 'F': 13, - 'G': 7, - 'H': 8, - 'I': 16, - 'J': 16, - 'K': 13, - 'L': 14 - } - for (col, wd) in column_widths.items(): - ws.set_column('{0}:{0}'.format(col), wd) - - writer.save() - output.seek(0) - date = datetime.date.today() - filename = "Informe de Ventas - {0} - {1}.xlsx".format(data['Proyecto'], date.strftime('%Y-%m-%d')) - return Response(output, mimetype="application/ms-excel", - headers={"Content-Disposition": "attachment;filename={0}".format(filename), - "Content-Type": 'application/octet-stream; charset=utf-8'}) +from flask import Blueprint, request, Response +import io +import json +import pandas as pd +import numpy as np +import datetime + + +ventas_blueprint = Blueprint('ventas', __name__,) + + +def format_data(data): + df = pd.DataFrame(data) + int_columns = ['Departamento', 'Estacionamientos', 'Bodegas'] + for col in int_columns: + df[col] = pd.to_numeric(df[col], errors='ignore') + float_columns = ['Valor Promesa', 'Pie', 'Pie Pagado', '% Pie Pagado', 'Bono Pie', 'Valor Operador', + 'Premios', 'Subsidio', 'Ahorro', 'Credito', 'Valor Ests & Bods', 'Valor Neto', + 'UF/m²*', 'Comision', 'Venta s/Comision', 'Precio'] + for col in float_columns: + if col in df.columns: + df[col] = pd.to_numeric(df[col], errors='coerce') + df = df.replace(np.nan, 0, regex=True) + + df['Fecha Venta'] = pd.to_datetime(df['Fecha Venta'], format='%Y-%m-%d') + df = df.sort_values(by=['Fecha Venta', 'Departamento']) + df['Fecha Venta'] = df['Fecha Venta'].dt.strftime('%d.%m.%Y') + + return df + + +def format_columns(workbook, columns): + column_settings = [{'header': column} for column in columns] + + center_format = workbook.add_format({'align': 'center'}) + amount_format = workbook.add_format({'num_format': '#,##0.00'}) + percent_format = workbook.add_format({'num_format': '0.00%'}) + + amount_columns = ['m² Ponderados', 'Valor Promesa', 'Pie', 'Pie Pagado', 'Bono Pie', 'Valor Operador', 'Premios', + 'Subsidio', 'Ahorro', 'Credito', 'Valor Ests & Bods', 'Valor Neto', 'UF/m²*', 'Comision', + 'Venta s/Comision', 'Precio'] + center_columns = ['Departamento', 'Estacionamientos', 'Bodegas'] + sum_columns = ['m² Ponderados', 'Valor Promesa', 'Pie', 'Pie Pagado', 'Bono Pie', 'Subsidio', 'Ahorro', 'Credito', + 'Valor Operador', 'Premios', 'Valor Ests & Bods', 'Valor Neto', 'Comision'] + count_columns = ['Departamento', 'Estacionamientos', 'Bodegas'] + + for (k, col) in enumerate(column_settings): + if col['header'] in amount_columns: + column_settings[k]['format'] = amount_format + if col['header'] in center_columns: + column_settings[k]['format'] = center_format + if col['header'] in sum_columns: + column_settings[k]['total_function'] = 'sum' + if col['header'] in count_columns: + column_settings[k]['total_function'] = 'count' + if col['header'] == '% Pie Pagado': + column_settings[k]['format'] = percent_format + if col['header'] == 'Propietario': + column_settings[k]['total_string'] = 'TOTAL' + + return column_settings + + +def format_excel(workbook, worksheet, data): + center_format = workbook.add_format({'align': 'center'}) + amount_format = workbook.add_format({'num_format': '#,##0.00'}) + percent_format = workbook.add_format({'num_format': '0.00%'}) + + amount_columns = ['m² Ponderados', 'Valor Promesa', 'Pie', 'Pie Pagado', 'Bono Pie', 'Valor Operador', 'Premios', + 'Subsidio', 'Ahorro', 'Credito', 'Valor Ests & Bods', 'Valor Neto', 'UF/m²*', 'Comision', + 'Venta s/Comision', 'Precio'] + center_columns = ['Departamento', 'Estacionamientos', 'Bodegas'] + + for col in amount_columns: + if col not in data.columns: + continue + k = data.columns.get_loc(col) + 1 + worksheet.set_column(k, k, cell_format=amount_format) + for col in center_columns: + if col not in data.columns: + continue + k = data.columns.get_loc(col) + 1 + worksheet.set_column(k, k, cell_format=center_format) + col = '% Pie Pagado' + k = data.columns.get_loc(col) + 1 + worksheet.set_column(k, k, cell_format=percent_format) + + return worksheet + + +@ventas_blueprint.route('', methods=['POST']) +def ventas(): + data = json.loads(request.data) + output = io.BytesIO() + writer = pd.ExcelWriter('tmp.xlsx', engine='xlsxwriter') + df = format_data(data['data']) + + start_row = 4 + if 'Compañía' in data: + start_row += 1 + df.to_excel(writer, startrow=start_row+1, startcol=1, header=False, index=False, sheet_name='Ventas') + wb = writer.book + wb.filename = output + + title_format = wb.add_format({'font_size': 16, 'bold': True}) + ws = writer.sheets['Ventas'] + (max_row, max_col) = df.shape + + if 'Compañía' in data: + ws.merge_range(1, 1, 1, max_col, data['Compañía']) + ws.merge_range(start_row-3, 1, start_row-3, max_col, data['Proyecto'], cell_format=title_format) + ws.write_string(start_row-2, 1, 'Ventas') + column_settings = format_columns(wb, df.columns) + ws.add_table(start_row, 1, max_row+start_row+1, max_col, {'name': 'Ventas', 'total_row': 1, + 'columns': column_settings, + 'style': 'Table Style Medium 1'}) + ws = format_excel(wb, ws, df) + + column_widths = { + 'B': 46, + 'C': 16, + 'D': 18, + 'E': 10, + 'F': 13, + 'G': 7, + 'H': 8, + 'I': 16, + 'J': 16, + 'K': 13, + 'L': 14 + } + for (col, wd) in column_widths.items(): + ws.set_column('{0}:{0}'.format(col), wd) + + writer.save() + output.seek(0) + date = datetime.date.today() + filename = "Informe de Ventas - {0} - {1}.xlsx".format(data['Proyecto'], date.strftime('%Y-%m-%d')) + return Response(output, mimetype="application/ms-excel", + headers={"Content-Disposition": "attachment;filename={0}".format(filename), + "Content-Type": 'application/octet-stream; charset=utf-8'}) From 1fb29cb87786413acd1956cd8da52b3066c99f22 Mon Sep 17 00:00:00 2001 From: Aldarien Date: Mon, 14 Jun 2021 17:41:40 -0400 Subject: [PATCH 02/11] .\config\ --- bootstrap/autoload.php | 3 ++- bootstrap/dotenv.php | 12 ++++++++++++ composer.json | 3 ++- docker-compose.yml | 4 ---- 4 files changed, 16 insertions(+), 6 deletions(-) create mode 100644 bootstrap/dotenv.php diff --git a/bootstrap/autoload.php b/bootstrap/autoload.php index b346078..7595f12 100644 --- a/bootstrap/autoload.php +++ b/bootstrap/autoload.php @@ -1,6 +1,7 @@ \ No newline at end of file +?> diff --git a/bootstrap/dotenv.php b/bootstrap/dotenv.php new file mode 100644 index 0000000..799a5b1 --- /dev/null +++ b/bootstrap/dotenv.php @@ -0,0 +1,12 @@ +isDir() or $file->getExtension() != 'env') { + continue; + } + $env = Dotenv::createImmutable($file->getPath(), $file->getBasename()); + $env->load(); +} diff --git a/composer.json b/composer.json index 62af58a..f32275b 100644 --- a/composer.json +++ b/composer.json @@ -22,7 +22,8 @@ "php-di/slim-bridge": "dev-master", "rubellum/slim-blade-view": "dev-master", "nyholm/psr7": "1.4.x-dev", - "nyholm/psr7-server": "dev-master" + "nyholm/psr7-server": "dev-master", + "vlucas/phpdotenv": "5.3.x-dev" }, "require-dev" : { "phpunit/phpunit" : "^6.3", diff --git a/docker-compose.yml b/docker-compose.yml index 0fc3e18..df1c290 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -13,8 +13,6 @@ services: php: build: . container_name: php - ports: - - 9123:9000 volumes: - .:/code @@ -22,8 +20,6 @@ services: container_name: db image: mariadb:latest restart: unless-stopped - ports: - - 3308:3306 env_file: .db.env volumes: - dbdata:/var/lib/mysql From a771714357a77babe313cf3b62d01671262add4d Mon Sep 17 00:00:00 2001 From: Aldarien Date: Mon, 14 Jun 2021 17:41:59 -0400 Subject: [PATCH 03/11] Database --- config/databases.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/databases.php b/config/databases.php index 16cd719..470a4cf 100644 --- a/config/databases.php +++ b/config/databases.php @@ -3,9 +3,9 @@ return [ 'mysql' => [ 'host' => 'localhost', //'port' => 3306, - 'database' => 'incoviba', - 'username' => 'incoviba', - 'password' => '5GQYFvRjVw2A4KcD' + 'database' => $_ENV['MYSQL_DATABASE'], + 'username' => $_ENV['MYSQL_USER'], + 'password' => $_ENV['MYSQL_PASSWORD'] ], 'mysql_copy' => [ 'host' => 'localhost', From b3fc29d19b6e761e4abfa5cbd7e47af3c179acbe Mon Sep 17 00:00:00 2001 From: Aldarien Date: Mon, 14 Jun 2021 17:44:21 -0400 Subject: [PATCH 04/11] Env files --- .adminer.env.sample | 2 ++ .db.env.sample | 4 ++++ .gitignore | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 .adminer.env.sample create mode 100644 .db.env.sample diff --git a/.adminer.env.sample b/.adminer.env.sample new file mode 100644 index 0000000..7e78794 --- /dev/null +++ b/.adminer.env.sample @@ -0,0 +1,2 @@ +ADMINER_DESIGN=dracula +ADMINER_PLUGINS=dump-json diff --git a/.db.env.sample b/.db.env.sample new file mode 100644 index 0000000..18b1117 --- /dev/null +++ b/.db.env.sample @@ -0,0 +1,4 @@ +MYSQL_DATABASE= +MYSQL_PASSWORD= +MYSQL_ROOT_PASSWORD= +MYSQL_USER= diff --git a/.gitignore b/.gitignore index 5a16a81..c5bb9c5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -.env +*.env /vendor/ composer.lock /node_modules/ From ee37338be4fec6197a3e66ba46617efc1fc9cb0d Mon Sep 17 00:00:00 2001 From: Aldarien Date: Mon, 14 Jun 2021 17:49:12 -0400 Subject: [PATCH 05/11] ENV --- .env.sample | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 .env.sample diff --git a/.env.sample b/.env.sample new file mode 100644 index 0000000..31fe938 --- /dev/null +++ b/.env.sample @@ -0,0 +1,2 @@ +BASE_URL= +MYSQL_HOST= From 670d73be38c54c6ce007788ede41390c377497d5 Mon Sep 17 00:00:00 2001 From: Aldarien Date: Mon, 14 Jun 2021 17:49:21 -0400 Subject: [PATCH 06/11] Env settings --- config/databases.php | 4 +++- setup/common/config.php | 8 ++++---- setup/env/config.php | 14 +++++++++++++- 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/config/databases.php b/config/databases.php index 470a4cf..be9c0d4 100644 --- a/config/databases.php +++ b/config/databases.php @@ -1,7 +1,9 @@ [ - 'host' => 'localhost', + 'host' => $_ENV['MYSQL_HOST'], //'port' => 3306, 'database' => $_ENV['MYSQL_DATABASE'], 'username' => $_ENV['MYSQL_USER'], diff --git a/setup/common/config.php b/setup/common/config.php index d216b5f..b16515e 100644 --- a/setup/common/config.php +++ b/setup/common/config.php @@ -10,11 +10,11 @@ return [ 'databases' => function() { $arr = [ 'mysql' => [ - 'host' => 'localhost', + 'host' => $_ENV['MYSQL_HOST'], //'port' => 3306, - 'database' => 'incoviba', - 'username' => 'incoviba', - 'password' => '5GQYFvRjVw2A4KcD' + 'database' => $_ENV['MYSQL_DATABASE'], + 'username' => $_ENV['MYSQL_USER'], + 'password' => $_ENV['MYSQL_PASSWORD'] ], 'mysql_copy' => [ 'host' => 'localhost', diff --git a/setup/env/config.php b/setup/env/config.php index 48b0973..a38e55d 100644 --- a/setup/env/config.php +++ b/setup/env/config.php @@ -1,6 +1,18 @@ isDir() or $file->getExtension() != 'env') { + continue; + } + $env = Dotenv::createImmutable($file->getPath(), $file->getBasename()); + $env->load(); +} + return [ 'debug' => false, 'benchmark' => false, - 'base_url' => '/incoviba' + 'base_url' => $_ENV['BASE_URL']//'/incoviba' ]; From e75c3dada8dd8c695c89704c8d2e37176130ff02 Mon Sep 17 00:00:00 2001 From: Aldarien Date: Mon, 7 Mar 2022 09:54:45 -0300 Subject: [PATCH 07/11] Ignore modules --- .gitignore | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index c5bb9c5..33cc76d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,9 +1,9 @@ -*.env -/vendor/ -composer.lock -/node_modules/ -package-lock.json -Pipfile.lock -/logs/ -/cache/ -/modules/ +**/*.env +**/vendor/ +**/composer.lock +**/node_modules/ +**/package-lock.json +**/Pipfile.lock +**/logs/ +**/cache/ +**/modules/ From f85f9ff3c9d620f7cee684612f31ccabab863440 Mon Sep 17 00:00:00 2001 From: Aldarien Date: Mon, 7 Mar 2022 09:59:09 -0300 Subject: [PATCH 08/11] Ignore IDE files --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 33cc76d..94a1003 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ **/logs/ **/cache/ **/modules/ +**/.idea/ From 8ed1742de824f90477435b0133eb63283442645e Mon Sep 17 00:00:00 2001 From: Aldarien Date: Mon, 7 Mar 2022 09:59:51 -0300 Subject: [PATCH 09/11] Update 2022-03-07 --- modules/operadores | 2 +- setup/app.php | 32 ++++++++++++++--------------- setup/env/config.php | 2 +- setup/settings/01_env.php | 18 ++++++++++++++++ setup/settings/02_common.php | 40 ++++++++++++++++++++++++++++++++++++ setup/settings/03_api.php | 8 ++++++++ setup/settings/04_ui.php | 11 ++++++++++ setup/setups/04_ui.php | 15 ++++++++++++++ 8 files changed, 110 insertions(+), 18 deletions(-) create mode 100644 setup/settings/01_env.php create mode 100644 setup/settings/02_common.php create mode 100644 setup/settings/03_api.php create mode 100644 setup/settings/04_ui.php create mode 100644 setup/setups/04_ui.php diff --git a/modules/operadores b/modules/operadores index 71e10c5..4f7241e 160000 --- a/modules/operadores +++ b/modules/operadores @@ -1 +1 @@ -Subproject commit 71e10c52bddbaa7a78220b69c4dd31681bf74fd5 +Subproject commit 4f7241e14674692c7e319ab3589783d38f6594f7 diff --git a/setup/app.php b/setup/app.php index 333dc42..d2e8644 100644 --- a/setup/app.php +++ b/setup/app.php @@ -5,32 +5,32 @@ use DI\Bridge\Slim\Bridge; include_once 'composer.php'; $folders = [ - 'env', - 'common', - $__environment -]; -$files = [ - 'config', + 'settings', 'setups' ]; $builder = new Builder(); -foreach ($files as $file) { - foreach ($folders as $folder) { - $filename = implode(DIRECTORY_SEPARATOR, [ - __DIR__, - $folder, - $file . '.php' - ]); - if (!file_exists($filename)) { +foreach ($folders as $f) { + $folder = implode(DIRECTORY_SEPARATOR, [ + __DIR__, + $f + ]); + if (!file_exists($folder)) { + continue; + } + $files = new DirectoryIterator($folder); + foreach ($files as $file) { + if ($file->isDir() or $file->getExtension() != 'php') { continue; } - $builder->addDefinitions($filename); + $builder->addDefinitions($file->getRealPath()); } } $container = $builder->build(); $app = Bridge::create($container); -$app->setBasePath($app->getContainer()->get('base_url')); +if ($app->getContainer()->has('base_url') and $app->getContainer()->get('base_url') != '') { + $app->setBasePath($app->getContainer()->get('base_url')); +} $app->addRoutingMiddleware(); foreach ($folders as $folder) { diff --git a/setup/env/config.php b/setup/env/config.php index a38e55d..7c3c1c4 100644 --- a/setup/env/config.php +++ b/setup/env/config.php @@ -12,7 +12,7 @@ foreach ($files as $file) { } return [ - 'debug' => false, + 'debug' => $_ENV['DEBUG'] ?? false, 'benchmark' => false, 'base_url' => $_ENV['BASE_URL']//'/incoviba' ]; diff --git a/setup/settings/01_env.php b/setup/settings/01_env.php new file mode 100644 index 0000000..6949ba9 --- /dev/null +++ b/setup/settings/01_env.php @@ -0,0 +1,18 @@ +isDir() or $file->getExtension() != 'env') { + continue; + } + $env = Dotenv::createImmutable($file->getPath(), $file->getBasename()); + $env->load(); +} + +return [ + 'debug' => $_ENV['DEBUG'] ?? false, + 'benchmark' => false, + 'base_url' => $_ENV['BASE_URL'] ?? '/incoviba' +]; diff --git a/setup/settings/02_common.php b/setup/settings/02_common.php new file mode 100644 index 0000000..b16515e --- /dev/null +++ b/setup/settings/02_common.php @@ -0,0 +1,40 @@ + 'America/Santiago', + 'locale' => 'es', + 'database' => 'mysql', + 'login_hours' => 5*24, + 'cierres' => [ + 'caducidad' => 30 + ], + 'databases' => function() { + $arr = [ + 'mysql' => [ + 'host' => $_ENV['MYSQL_HOST'], + //'port' => 3306, + 'database' => $_ENV['MYSQL_DATABASE'], + 'username' => $_ENV['MYSQL_USER'], + 'password' => $_ENV['MYSQL_PASSWORD'] + ], + 'mysql_copy' => [ + 'host' => 'localhost', + 'database' => 'incoviba3', + 'username' => 'incoviba', + 'password' => '5GQYFvRjVw2A4KcD' + ] + ]; + return $arr; + }, + 'locations' => function() { + $arr = ['base' => dirname(__DIR__, 2)]; + $arr['public'] = $arr['base'] . '/public'; + $arr['resources'] = $arr['base'] . '/resources'; + $arr['routes'] = $arr['resources'] . '/routes'; + $arr['src'] = $arr['base'] . '/src'; + $arr['app'] = $arr['base'] . '/app'; + $arr['controllers'] = $arr['app'] . '/Controller'; + $arr['money'] = 'http://provm.cl/optimus/money'; + $arr['api'] = 'http://localhost:8080/api'; + return (object) $arr; + } +]; diff --git a/setup/settings/03_api.php b/setup/settings/03_api.php new file mode 100644 index 0000000..7e1bc5b --- /dev/null +++ b/setup/settings/03_api.php @@ -0,0 +1,8 @@ + DI\decorate(function($prev, Container $c) { + return $prev . '/api'; + }) +]; diff --git a/setup/settings/04_ui.php b/setup/settings/04_ui.php new file mode 100644 index 0000000..f7839c9 --- /dev/null +++ b/setup/settings/04_ui.php @@ -0,0 +1,11 @@ + DI\decorate(function($prev, Container $c) { + $arr = (array) $prev; + $arr['cache'] = $prev->base . '/cache'; + $arr['views'] = $prev->resources . '/views'; + return (object) $arr; + }) +]; diff --git a/setup/setups/04_ui.php b/setup/setups/04_ui.php new file mode 100644 index 0000000..0bf6f5d --- /dev/null +++ b/setup/setups/04_ui.php @@ -0,0 +1,15 @@ + function(Container $c) { + return new Slim\Views\Blade( + $c->get('locations')->views, + $c->get('locations')->cache, + null, + [ + 'locations' => $c->get('locations') + ] + ); + } +]; From fb8e204f776cfc8bdde1d8ae02cd0ccf2217b6d4 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vial Date: Mon, 7 Mar 2022 12:06:12 -0300 Subject: [PATCH 10/11] FIX: valor en Escritura --- incoviba/modelos/src/old/Venta/Escritura.php | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/incoviba/modelos/src/old/Venta/Escritura.php b/incoviba/modelos/src/old/Venta/Escritura.php index 09eb21d..0763e7d 100644 --- a/incoviba/modelos/src/old/Venta/Escritura.php +++ b/incoviba/modelos/src/old/Venta/Escritura.php @@ -20,5 +20,10 @@ class Escritura extends Model { return $this->belongs_to(Pago::class, 'pago')->findOne(); } + + public function valor(string $tipo = 'pesos') + { + return $this->pago()->valor($tipo); + } } ?> From bc4dd543ae869df7b6d3a4a577e2cbafcb5f0889 Mon Sep 17 00:00:00 2001 From: Juan Pablo Vial Date: Mon, 7 Mar 2022 12:07:33 -0300 Subject: [PATCH 11/11] FIX: handling of dependencies --- Dockerfile | 8 +++++++- aldarien/asset/composer.json | 4 ++-- aldarien/config/composer.json | 4 ++-- aldarien/format/composer.json | 2 +- aldarien/response/composer.json | 2 +- aldarien/session/composer.json | 2 +- aldarien/url/composer.json | 4 ++-- aldarien/view/composer.json | 4 ++-- composer.json | 27 ++++++++++++--------------- 9 files changed, 30 insertions(+), 27 deletions(-) diff --git a/Dockerfile b/Dockerfile index ba1b508..1189fae 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,12 @@ FROM php:7.4-fpm -RUN docker-php-ext-install pdo pdo_mysql +RUN apt-get update && apt-get install -y libzip-dev libicu-dev git + +RUN docker-php-ext-install pdo pdo_mysql zip intl RUN pecl install xdebug-3.0.3 \ && docker-php-ext-enable xdebug + +COPY --from=composer /usr/bin/composer /usr/bin/composer + +WORKDIR /code diff --git a/aldarien/asset/composer.json b/aldarien/asset/composer.json index 6623a3e..ebf36ce 100644 --- a/aldarien/asset/composer.json +++ b/aldarien/asset/composer.json @@ -3,8 +3,8 @@ "description" : "Asset manager module for my apps", "type" : "library", "require" : { - "aldarien/config" : "dev-master", - "aldarien/contract" : "dev-master" + "aldarien/config" : "*", + "aldarien/contract" : "*" }, "require-dev" : { "phpunit/phpunit" : "^6.3" diff --git a/aldarien/config/composer.json b/aldarien/config/composer.json index 8225292..b37bdbc 100644 --- a/aldarien/config/composer.json +++ b/aldarien/config/composer.json @@ -10,8 +10,8 @@ } ], "require": { - "aldarien/contract": "dev-master", - "aldarien/root": "dev-master", + "aldarien/contract": "*", + "aldarien/root": "*", "symfony/yaml": "^3.3" }, "autoload": { diff --git a/aldarien/format/composer.json b/aldarien/format/composer.json index 80c49ca..d897165 100644 --- a/aldarien/format/composer.json +++ b/aldarien/format/composer.json @@ -4,7 +4,7 @@ "type" : "library", "require-dev" : { "phpunit/phpunit" : "^6", - "aldarien/config": "dev-master" + "aldarien/config": "*" }, "license" : "MIT", "authors" : [{ diff --git a/aldarien/response/composer.json b/aldarien/response/composer.json index 24744a8..8db86c3 100644 --- a/aldarien/response/composer.json +++ b/aldarien/response/composer.json @@ -4,7 +4,7 @@ "type" : "library", "require" : { "wixel/gump" : "^1.5", - "aldarien/contract" : "dev-master" + "aldarien/contract" : "*" }, "require-dev" : { "phpunit/phpunit" : "^6.3" diff --git a/aldarien/session/composer.json b/aldarien/session/composer.json index 9a043b1..f588b42 100644 --- a/aldarien/session/composer.json +++ b/aldarien/session/composer.json @@ -4,7 +4,7 @@ "type": "library", "require": { "aura/session": "^2.1", - "aldarien/contract": "dev-master" + "aldarien/contract": "*" }, "require-dev": { "phpunit/phpunit": "^6.3" diff --git a/aldarien/url/composer.json b/aldarien/url/composer.json index 540d0ed..7e69e9a 100644 --- a/aldarien/url/composer.json +++ b/aldarien/url/composer.json @@ -3,8 +3,8 @@ "description" : "Get relative path uri", "type" : "library", "require" : { - "aldarien/contract" : "dev-master", - "aldarien/root" : "dev-master", + "aldarien/contract" : "*", + "aldarien/root" : "*", "league/uri": "^5.2", "sabre/uri": "^2.1" }, diff --git a/aldarien/view/composer.json b/aldarien/view/composer.json index a18b995..b8e353e 100644 --- a/aldarien/view/composer.json +++ b/aldarien/view/composer.json @@ -4,8 +4,8 @@ "type": "library", "require": { "philo/laravel-blade": "^3.1", - "aldarien/contract": "dev-master", - "aldarien/config": "dev-master" + "aldarien/contract": "*", + "aldarien/config": "*" }, "license": "MIT", "authors": [ diff --git a/composer.json b/composer.json index f32275b..5b75c1b 100644 --- a/composer.json +++ b/composer.json @@ -3,27 +3,27 @@ "description" : "Intranet portal for Incoviba", "type" : "project", "require" : { - "aldarien/config" : "dev-master", - "aldarien/asset" : "dev-master", - "aldarien/format" : "dev-master", - "aldarien/response" : "dev-master", - "aldarien/view" : "dev-master", - "aldarien/session" : "dev-master", + "aldarien/config" : "*", + "aldarien/asset" : "*", + "aldarien/format" : "*", + "aldarien/response" : "*", + "aldarien/view" : "*", + "aldarien/session" : "*", + "aldarien/url": "*", "j4mie/paris" : "^1.5", "danielstjules/stringy" : "^3.1", "phpoffice/phpspreadsheet": "1-beta", - "aldarien/url": "dev-master", "nesbot/carbon": "^2", "phpoffice/phpword": "^0.14.0", "slam/php-excel": "^4.4", "fabpot/goutte": "^3.2", - "incoviba/modelos": "dev-master", + "incoviba/modelos": "*", "slim/slim": "4.x-dev", "php-di/slim-bridge": "dev-master", "rubellum/slim-blade-view": "dev-master", "nyholm/psr7": "1.4.x-dev", "nyholm/psr7-server": "dev-master", - "vlucas/phpdotenv": "5.3.x-dev" + "vlucas/phpdotenv": "^5.3" }, "require-dev" : { "phpunit/phpunit" : "^6.3", @@ -52,15 +52,12 @@ "type": "path", "url": "./aldarien/**", "options": { - "symlink": false - } + "symlink": false + } }, { "type": "path", - "url": "./incoviba/modelos", - "options": { - "symlink": false - } + "url": "./incoviba/modelos" } ] }