Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion benchmarks/elba1.json4all
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,5 @@
,,,date:2025-10-21,,,tiempos:;,,tamannio:,personas:37,,duracion:9252
""
,,,date:2025-11-19,,,tiempos:;,,tamannio:,personas:46,,duracion:12161
,,,date:2025-11-20,,,tiempos:;,,tamannio:,personas:46,,duracion:12667
,,,date:2025-11-20,,,tiempos:;,,tamannio:,personas:46,,duracion:12667
,,,date:2025-12-19,,,tiempos:;,,tamannio:,personas:53,,duracion:16032
4 changes: 3 additions & 1 deletion src/server/app-principal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ import { novedades_horarias } from './table-novedades_horarias';
import { novedades_vigentes } from './table-novedades_vigentes';
import { per_nov_cant } from './table-per_nov_cant';
import { nov_per } from './table-nov_per';
import { nov_per_abierto } from './table-nov_per_abierto';
import { pautas } from './table-pautas';
import { inconsistencias } from './table-inconsistencias';
import { usuarios } from './table-usuarios';
Expand Down Expand Up @@ -252,7 +253,7 @@ export class AppSiper extends AppBackend{
{menuType:'proc', name:'parte_diario'},
{menuType:'proc', name:'informe_mensual'},
{menuType:'proc', name:'descanso_anual_remunerado'},
{menuType:'proc', name:'exportar_descanso_anual_remunerado'},
// {menuType:'proc', name:'exportar_descanso_anual_remunerado'},
// {menuType:'proc', name:'visor_de_fichadas'},
{menuType:'table', name:'novedades_totales', table:'nov_per', ff:[{fieldName:'annio', value:date.today().getFullYear()}]},
]}
Expand Down Expand Up @@ -429,6 +430,7 @@ export class AppSiper extends AppBackend{
novedades_vigentes ,
per_nov_cant ,
nov_per ,
nov_per_abierto ,
pautas ,
inconsistencias ,
usuarios ,
Expand Down
6 changes: 4 additions & 2 deletions src/server/procedures-principal.ts
Original file line number Diff line number Diff line change
Expand Up @@ -491,12 +491,14 @@ export const ProceduresPrincipal:ProcedureDef[] = [
parameters: [
{name:'annio' , typeName:'integer', label: 'año', references: 'annios', defaultValue:date.today().getFullYear()},
{name:'idper' , typeName:'text', label:'persona', references: 'personas', defaultValue:null},
{name:'sector' , typeName:'text', label:'sector', references: 'sectores', defaultValue:null}
{name:'sector' , typeName:'text', label:'sector', references: 'sectores', defaultValue:null},
{name:'abierto' , typeName:'boolean', label:'abierto', defaultValue:false}
],
resultOk:'showGrid',
coreFunction: async function(context: ProcedureContext, params:any){
var grillaTableName = params.abierto?'nov_per_abierto':'nov_per';
var grilla = {
tableName:'nov_per',
tableName:grillaTableName,
fixedFields: [{fieldName:'cod_nov', value:1}] as FixedFields,
tableDef:{title:'descanso anual remunerado', hiddenColumns:['esquema', 'detalle', 'detalle_multiorigen'] as string[], firstDisplayOverLimit:2000, firstDisplayCount:2000}
}
Expand Down
66 changes: 66 additions & 0 deletions src/server/table-nov_per_abierto.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
"use strict";

import {TableDefinition, TableContext} from "./types-principal";
import {annio} from "./table-annios"
import {idper} from "./table-personas"
import {cod_nov} from "./table-cod_novedades"
import {sector} from "./table-sectores"
import { sqlNovPer } from "./table-nov_per";

export function nov_per_abierto(_context: TableContext): TableDefinition {
return {
name:'nov_per_abierto',
title: 'descanso anual remunerado abierto por año origen',
editable: false,
fields:[
annio,
idper,
sector,
cod_nov,
{name: 'origen' , typeName: 'text' },
{name: 'cantidad' , typeName: 'integer'},
{name: 'usados' , typeName: 'integer', description: 'días pedidos que ya fueron tomados'},
{name: 'pendientes' , typeName: 'integer', description: 'días pedidos que todavía no ocurrieron'},
{name: 'saldo' , typeName: 'integer', description: 'días restantes bajo el supuesto que los pendientes se tomarán según fueron pedidos'},
{name: 'suma_cantidad' , typeName: 'integer'},
{name: 'suma_usados' , typeName: 'integer'},
{name: 'suma_pendientes', typeName: 'integer'},
{name: 'suma_saldo' , typeName: 'integer'},
{name: 'detalle' , typeName: 'text', clientSide: 'detalle_dias'},
{name: 'detalle_multiorigen', typeName: 'jsonb'},
{name: 'novedad' , typeName: 'text' },
],
primaryKey: [annio.name, cod_nov.name, idper.name],
softForeignKeys: [
{references: 'annios' , fields: [annio.name]},
{references: 'personas' , fields: [idper.name], displayFields:['apellido', 'nombres']},
{references: 'sectores' , fields: [sector.name]},
{references: 'cod_novedades', fields: [cod_nov.name]},
],
detailTables: [
{table:'novedades_vigentes', fields:[annio.name, idper.name, cod_nov.name], abr:'D'}
],
sql: {
isTable:false,
from:`(SELECT annio, origen, x.idper, /*apellido, nombres,*/
x.sector,
abierto_cantidad as cantidad,
coalesce(abierto_usados,0) as usados,
coalesce(abierto_pendientes,0) as pendientes,
coalesce(abierto_saldo,0) as saldo,
cantidad as suma_cantidad,
usados as suma_usados,
pendientes as suma_pendientes,
saldo as suma_saldo,
cod_nov,
novedad,
detalle_multiorigen
FROM (${sqlNovPer({abierto:true})}) x
LEFT JOIN personas p ON p.idper = x.idper
WHERE cod_nov = '1'
ORDER BY 1,3,2,4
)`
},
hiddenColumns: ['detalle', 'detalle_multiorigen', 'cod_nov'],
};
}
1 change: 1 addition & 0 deletions src/test/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ describe("connected", function(){
var adminMetadatosSession: SesionEmuladaSiper; // admin de metadatos, por ahora un admin
var borradoExitoso: boolean = false;
var fallaEnLaQueQuieroOmitirElBorrado: boolean = false;
this.timeout(5000);
before(async function(){
try{
contexto = await startBackendAPIContext(AppSiper);
Expand Down