# Conflicts:
#	PROYECTO/mbsERP.4pw
This commit is contained in:
Abel López
2026-10-08 10:28:43 -04:00
52 changed files with 10038 additions and 5950 deletions
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+20 -14
View File
@@ -64,7 +64,7 @@ GLOBALS "prprgb000.4gl"
nombre_vend,nombres,apellidos CHAR(40),fcalle CHAR(25),
fcasa_num CHAR(5), fbarrio,furbanizacion CHAR(15),
monto_desc,total1,p_costos1,total_i,total_mo DECIMAL(12,2),
ult_numero,cuenta INTEGER,
ult_numero,cuenta,existe_oc INTEGER,
vetb05 RECORD LIKE vetb00005.*,
cuenta_p,ridx SMALLINT,
pbalance1,pbalance2 DEC(12,2),
@@ -798,19 +798,26 @@ FUNCTION prpcad008()
# SE COLOCO QUE EL NUMERO SE GENERARA A PARTIR DEL 01/01/2003 HACIA ATRAS POR MODIFICACION DEL
# SISTEMA Y LA INCLUSION DEL NCF A PARTIR DEL 01/01/2007
# FECHA MODIFICACION: 11/01/2007
SELECT num_oc INTO ult_numero FROM prtb00020
IF nuevo = "S" THEN
IF ult_numero IS NULL THEN
LET ult_numero = 0
END IF
LET ult_numero = ult_numero + 1
LET prtb08.num_oc = ult_numero
DISPLAY BY NAME prtb08.num_oc
UPDATE prtb00020 set num_oc = ult_numero,
# CONSECUTIVO ATOMICO: el UPDATE incrementa y bloquea la fila de prtb00020
# hasta el COMMIT, asi dos usuarios no pueden tomar el mismo num_oc
# (antes se leia y luego se escribia -> PK_prtb00012 duplicada)
BEGIN WORK
UPDATE prtb00020 SET num_oc = ISNULL(num_oc, 0) + 1,
us_crea = SUSER_SNAME(),
fech_crea = GETDATE()
SELECT num_oc INTO ult_numero FROM prtb00020
# AUTOCORRECCION: si el contador quedo por detras de prtb00012, salta al siguiente libre
LET existe_oc = 0
SELECT COUNT(*) INTO existe_oc FROM prtb00012 WHERE num_oc = ult_numero
IF existe_oc > 0 THEN
SELECT MAX(num_oc) + 1 INTO ult_numero FROM prtb00012
UPDATE prtb00020 SET num_oc = ult_numero
END IF
COMMIT WORK
LET prtb08.num_oc = ult_numero
DISPLAY BY NAME prtb08.num_oc
{ CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia1
@@ -851,9 +858,8 @@ CALL seleccionarsalida() RETURNING r_output
fech_crea = GETDATE()
WHERE @num_oc = prtb09.num_oc
UPDATE prtb00020 SET num_oc = ult_numero,
us_Crea = SUSER_SNAME(),
fech_crea = GETDATE()
# (se elimino la re-escritura de prtb00020 aqui: el consecutivo ya se tomo
# arriba de forma atomica y re-escribirlo podia retroceder el contador)
# ACTUALIZA NUMERO TEMPORAL PARA EL DESPIECE
UPDATE prtb00022 SET num_oc = prtb08.num_oc WHERE num_oc = tmpnumero
+5 -3
View File
@@ -59,7 +59,7 @@
<Grid gridHeight="22" gridWidth="100" name="Grid1" posX="1" posY="1">
<Group gridHeight="15" gridWidth="96" name="Group1" posX="1" posY="1">
<Label posX="1" posY="1" text="Tipo de Movimiento"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cod_mto" comment="1= EMPLEO 2=CAMBIO 3=NOVEDADES 4=TERMINACION o Presione Ctrl-W" defaultValue="1" fieldId="2" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="36" include="1|2|3|4" items="" name="adtb00020.cod_mto" posX="21" posY="1" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="1" table_alias_name="" widget="ComboBox"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cod_mto" comment="Seleccione el tipo de movimiento de la accion de personal" defaultValue="1" fieldId="2" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="36" items="" name="adtb00020.cod_mto" posX="21" posY="1" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="1" table_alias_name="" widget="ComboBox"/>
<Label posX="1" posY="2" text="Numero Documento"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="num_trx" fieldId="5" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="6" name="adtb00020.num_trx" noEntry="true" posX="21" posY="2" sqlTabName="adtb00020" sqlType="INTEGER" tabIndex="2" table_alias_name="" widget="Edit"/>
<Label posX="33" posY="2" text="Numero Solicitante"/>
@@ -79,7 +79,7 @@
<Label posX="39" posY="4" text="-"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoNext="true" colName="cod_puesto" comment="Digite el puesto del empleado o Presione Ctrl-W para busqueda" fieldId="12" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="3" name="adtb00020.cod_puesto" posX="41" posY="4" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="10" table_alias_name="" widget="Edit"/>
<Label posX="46" posY="4" text="Cedula"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cedula" fieldId="13" gridHeight="1" gridWidth="14" name="cedula" picture="###-#######-#" posX="55" posY="4" sqlTabName="formonly" tabIndex="11" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cedula" fieldId="13" gridHeight="1" gridWidth="14" name="cedula" posX="55" posY="4" sqlTabName="formonly" tabIndex="11" table_alias_name="" widget="Edit"/>
<Label posX="70" posY="4" text="Cuenta No:"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cuenta_no" comment="No. de Cuenta para pago automatico" fieldId="1" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="14" name="adtb00003.cuenta_no" posX="81" posY="4" sqlTabName="adtb00003" sqlType="VARCHAR" tabIndex="12" table_alias_name="" widget="Edit"/>
<Label posX="1" posY="5" text="Nombre"/>
@@ -100,10 +100,12 @@
<Item lstrtext="false" name="J" text="JORNAL"/>
</ComboBox>
<Label gridHeight="1" gridWidth="9" name="Label1" posX="63" posY="8" text="Estado Civil"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="estado_civil" comment=" S = Soltero C = Casado " defaultValue="U" fieldId="21" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="18" include="S|C" items="CASADO, SOLTERO, UNION LIBRE" name="adtb00003.estado_civil" posX="75" posY="8" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="19" table_alias_name="" widget="ComboBox">
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="estado_civil" comment="Estado civil del colaborador" defaultValue="U" fieldId="21" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="18" items="CASADO, SOLTERO, UNION LIBRE, DIVORCIADO, VIUDO" name="adtb00003.estado_civil" posX="75" posY="8" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="19" table_alias_name="" widget="ComboBox">
<Item lstrtext="false" name="C" text="CASADO"/>
<Item lstrtext="false" name="S" text="SOLTERO"/>
<Item lstrtext="false" name="U" text="UNION LIBRE"/>
<Item lstrtext="false" name="D" text="DIVORCIADO"/>
<Item lstrtext="false" name="V" text="VIUDO"/>
</ComboBox>
<Label posX="1" posY="9" text="Sexo"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="sexo" comment="Digite M Para Sexo Masculino y F Para el Femenino" defaultValue="F" fieldId="40" gridHeight="1" gridWidth="11" include="M|F" items="FEMENINO, MASCULINO" name="sexo" posX="21" posY="9" sqlTabName="formonly" sqlType="CHAR" tabIndex="20" table_alias_name="" widget="ComboBox">
+33
View File
@@ -0,0 +1,33 @@
{
------------------------------------------------------------------------
FORMULARIO : ADFMRP048
OBJETIVO : Parametros del reporte de horas de capacitacion por
colaborador. Es utilizada por: ADPRRP048
FECHA REALIZACION : Octubre 05, 2026
------------------------------------------------------------------------
}
LAYOUT (TEXT="HORAS DE CAPACITACION POR COLABORADOR", STYLE="basic")
GRID
{
<G "PARAMETROS" >
Fecha desde [f001 ] Hasta [f002 ]
Departamento [f003 ]
Ficha (opcional) [f004 ]
Filtro [f005]
}
END
ATTRIBUTES
DATEEDIT f001 = formonly.fecha_ini TYPE DATE, FORMAT="dd/mm/yyyy", REQUIRED,
COMMENT="Fecha de inicio de la capacitacion (plan o ejecucion)";
DATEEDIT f002 = formonly.fecha_fin TYPE DATE, FORMAT="dd/mm/yyyy", REQUIRED;
COMBOBOX f003 = formonly.departamento TYPE SMALLINT, NOT NULL,
COMMENT="Departamento del colaborador (TODOS = toda la empresa)";
EDIT f004 = formonly.num_emp TYPE INTEGER,
COMMENT="Deje en blanco para todos los colaboradores";
CHECKBOX f005 = formonly.solo_pend, VALUECHECKED="S", VALUEUNCHECKED="N",
TEXT="Solo colaboradores con horas pendientes",
COMMENT="Muestra solo a quienes tienen capacitaciones requeridas sin cubrir en el periodo";
END
INSTRUCTIONS
DELIMITERS " "
END
+31
View File
@@ -0,0 +1,31 @@
{
------------------------------------------------------------------------
FORMULARIO : ADFMRP049
OBJETIVO : Parametros del reporte de rotacion laboral.
Es utilizada por: ADPRRP049
FECHA REALIZACION : Octubre 05, 2026
------------------------------------------------------------------------
}
LAYOUT (TEXT="ROTACION LABORAL", STYLE="basic")
GRID
{
<G "PARAMETROS" >
Ano desde [f001 ] Hasta [f002 ]
Departamento [f003 ]
Tipo de empleado [f004 ]
Formato [f005 ]
}
END
ATTRIBUTES
EDIT f001 = formonly.ano_ini TYPE SMALLINT, REQUIRED;
EDIT f002 = formonly.ano_fin TYPE SMALLINT, REQUIRED;
COMBOBOX f003 = formonly.departamento TYPE SMALLINT, NOT NULL,
COMMENT="Departamento (TODOS = toda la empresa)";
COMBOBOX f004 = formonly.tipo_emp, NOT NULL,
ITEMS=(("TODOS","TODOS"),("NORMAL","NORMAL"),("TEMPORERO","TEMPORERO"));
COMBOBOX f005 = formonly.formato, NOT NULL,
ITEMS=(("R","RESUMEN MENSUAL"),("D","DETALLE DE SALIDAS POR CAUSA"));
END
INSTRUCTIONS
DELIMITERS " "
END
+49
View File
@@ -0,0 +1,49 @@
{
------------------------------------------------------------------------
FORMULARIO : ADFMWD017
OBJETIVO : Ventana de capacitacion (requerida / tomada) de la
Accion de Personal. Es utilizada por: ADPRMT017
FECHA REALIZACION : Octubre 05, 2026
------------------------------------------------------------------------
}
LAYOUT (TEXT="CAPACITACION DEL EMPLEADO")
GRID
{
<G "CAPACITACION" >
Movimiento [f001 ]
Requerida a cubrir [f002 ]
Capacitacion [f003 ]
[b01 ]
Tipo de evento [f004 ]
Horas requeridas [f005 ]
Fecha inicio [f006 ] Fecha fin [f007 ]
Horas tomadas [f008 ]
Institucion/Facilitador [f009 ]
Costo [f010 ]
<G "RESUMEN DEL EMPLEADO" >
Requeridas [t001 ] Tomadas [t002 ] Pendientes [t003 ]
}
END
ATTRIBUTES
EDIT f001 = formonly.tipo_desc, NOENTRY, COLOR=BLUE;
COMBOBOX f002 = formonly.id_requerida TYPE INTEGER,
COMMENT="Capacitacion requerida pendiente que cubre esta capacitacion tomada";
COMBOBOX f003 = formonly.cod_cap TYPE INTEGER,
COMMENT="Seleccione la capacitacion. Si no existe use el boton Nuevo curso";
BUTTON b01 : nuevo_curso, TEXT="Nuevo curso";
COMBOBOX f004 = formonly.evento TYPE SMALLINT, NOENTRY,
ITEMS=((1,"SEMINARIO"),(2,"CURSO"),(3,"TALLER"),(4,"CONFERENCIA"));
EDIT f005 = formonly.horas_req TYPE DECIMAL(6,2), FORMAT="##&.&&";
DATEEDIT f006 = formonly.fecha_ini TYPE DATE, FORMAT="dd/mm/yyyy";
DATEEDIT f007 = formonly.fecha_fin TYPE DATE, FORMAT="dd/mm/yyyy";
EDIT f008 = formonly.horas_tom TYPE DECIMAL(6,2), FORMAT="##&.&&";
EDIT f009 = formonly.institucion, UPSHIFT;
EDIT f010 = formonly.costo TYPE DECIMAL(12,2), FORMAT="###,##&.&&";
EDIT t001 = formonly.trq TYPE DECIMAL(8,2), NOENTRY, COLOR=BLUE, FORMAT="###&.&&";
EDIT t002 = formonly.ttm TYPE DECIMAL(8,2), NOENTRY, COLOR=BLUE, FORMAT="###&.&&";
EDIT t003 = formonly.tpd TYPE DECIMAL(8,2), NOENTRY, COLOR=RED, FORMAT="###&.&&";
END
INSTRUCTIONS
DELIMITERS " "
END
+32
View File
@@ -0,0 +1,32 @@
{
------------------------------------------------------------------------
FORMULARIO : ADFMWD018
OBJETIVO : Ventana de desvinculacion (causa de salida) de la
Accion de Personal. Es utilizada por: ADPRMT017
FECHA REALIZACION : Octubre 05, 2026
------------------------------------------------------------------------
}
LAYOUT (TEXT="DESVINCULACION DEL EMPLEADO")
GRID
{
<G "SALIDA" >
Fecha de salida [f001 ]
Causa [f002 ]
Clasificacion [f003 ]
Recontratable [f004]
Detalle [f005 ]
[f005 ]
}
END
ATTRIBUTES
DATEEDIT f001 = formonly.fecha_salida TYPE DATE, FORMAT="dd/mm/yyyy",
COMMENT="Ultimo dia laborado";
COMBOBOX f002 = formonly.cod_causa TYPE SMALLINT,
COMMENT="Causa de la salida (se usa para el indicador de rotacion)";
EDIT f003 = formonly.clase_desc, NOENTRY, COLOR=BLUE;
COMBOBOX f004 = formonly.recontratable, ITEMS=(("S","SI"),("N","NO"));
TEXTEDIT f005 = formonly.detalle, UPSHIFT, SCROLLBARS=NONE, STRETCH=X;
END
INSTRUCTIONS
DELIMITERS " "
END
+29
View File
@@ -0,0 +1,29 @@
{
------------------------------------------------------------------------
FORMULARIO : ADFMWD019
OBJETIVO : Alta de una capacitacion en el catalogo (adtb00059)
desde la ventana de capacitacion. Es utilizada por:
ADPRMT017 (boton Nuevo curso)
FECHA REALIZACION : Octubre 05, 2026
------------------------------------------------------------------------
}
LAYOUT (TEXT="NUEVA CAPACITACION")
GRID
{
<G "CATALOGO DE CAPACITACIONES" >
Nombre [f001 ]
Tipo de evento [f002 ]
Horas estandar [f003 ]
}
END
ATTRIBUTES
EDIT f001 = formonly.nom_cap, UPSHIFT, REQUIRED,
COMMENT="Nombre de la capacitacion (revise antes que no exista en la lista)";
COMBOBOX f002 = formonly.evento TYPE SMALLINT, NOT NULL,
ITEMS=((1,"SEMINARIO"),(2,"CURSO"),(3,"TALLER"),(4,"CONFERENCIA"));
EDIT f003 = formonly.horas TYPE DECIMAL(6,2), FORMAT="##&.&&",
COMMENT="Horas que dura normalmente esta capacitacion";
END
INSTRUCTIONS
DELIMITERS " "
END
+734 -36
View File
@@ -44,6 +44,38 @@ DEFINE vacacion RECORD
tipo_sueldo CHAR(20),
proporcion_vacaciones,salario_quincenal DEC(12,2)
#### VARIABLES PARA MODULO DE CAPACITACION (2026-10-05) ##########
#### tipo_mov 'CAPACITACION REQUERIDA' / 'CAPACITACION TOMADA'
#### detalle en adtb00060, catalogo en adtb00059 (adprmt017_capacitacion.sql)
DEFINE capac RECORD
tipo_desc VARCHAR(30),
id_requerida INTEGER,
cod_cap INTEGER,
evento SMALLINT,
horas_req DEC(6,2),
fecha_ini DATE,
fecha_fin DATE,
horas_tom DEC(6,2),
institucion VARCHAR(100),
costo DEC(12,2)
END RECORD
DEFINE cap_tot RECORD
trq, ttm, tpd DEC(8,2)
END RECORD
#### VARIABLES PARA DESVINCULACION (2026-10-05) ##########
#### tipo_mov 'CANCELAR' (mov. 4 DESVINCULAR) / 'DESVINCULAR' / 'TERMINO'
#### detalle en adtb00062, causas en adtb00061 (adprmt017_desvinculacion.sql)
DEFINE desv RECORD
fecha_salida DATE,
cod_causa SMALLINT,
clase_desc VARCHAR(20),
recontratable CHAR(1),
detalle VARCHAR(200)
END RECORD
DEFINE realiza_desvinculacion BOOLEAN
DEFINE realiza_capacitacion BOOLEAN,
cap_sql STRING
#### MODULO MENU GENERAL DE ACCION DE NOMINA #####
MAIN
@@ -479,6 +511,28 @@ FUNCTION adpcad017()
END IF
END IF
## LLAMA LA VENTANA DE CAPACITACION (REQUERIDA / TOMADA)
IF xtipo = "CAPACITACION REQUERIDA" OR xtipo = "CAPACITACION TOMADA" THEN
CALL capacitacion('A') RETURNING realiza_capacitacion
IF NOT realiza_capacitacion THEN
RETURN
END IF
NEXT FIELD observacion
END IF
## LLAMA LA VENTANA DE DESVINCULACION (CAUSA DE SALIDA)
IF es_desvinculacion(xtipo) THEN
IF empleado_desactivado(acc_per.num_emp) THEN
CALL fgl_winmessage("INFO","ESTE EMPLEADO YA ESTA DESACTIVADO","info")
NEXT FIELD num_emp
END IF
CALL desvinculacion('A') RETURNING realiza_desvinculacion
IF NOT realiza_desvinculacion THEN
RETURN
END IF
NEXT FIELD observacion
END IF
AFTER FIELD sueldo_ac
IF acc_per.sueldo_ac IS NULL OR acc_per.sueldo_ac < 0 THEN
LET numero_msg = 16
@@ -666,9 +720,18 @@ FUNCTION adpcad017()
RETURN
END IF
## SE ASEGURA DE QUE TODA LA INFORMACION ESTE CORRECTA
PROMPT "Informacion Correcta? (S/N).." FOR CHAR opt
LET opt = UPSHIFT(opt)
## SE ASEGURA DE QUE TODA LA INFORMACION ESTE CORRECTA
IF fgl_winquestion("ACCION DE PERSONAL","La informacion esta correcta? Desea grabar la accion?",
"YES","YES|NO","question",0) = "YES" THEN
LET opt = "S"
ELSE
LET opt = "N"
# Antes de 2026-10-05 un "N" seguia de largo: mensaje de grabado,
# UPDATE de adtb00028 con num_trx nulo y pregunta de impresion.
LET numero_msg = 2
CALL msg(numero_msg)
RETURN
END IF
## SI NO HA OCURRIDO NINGUN PROBLEMA SE PROCEDE A INSERTAR LA INFORMACION
## EN LA TABLA DE ACCION DE PERSONAL
@@ -751,8 +814,17 @@ FUNCTION adpcad017()
VALUES (vacacion.num_nomi,acc_per.nomina,acc_per.num_emp,acc_per.departamento,acc_per.departamento,acc_per.nivel_emp,
acc_per.cod_puesto,vacacion.cod_mov2,salario_quincenal,usuarios,getdate(),
acc_per.num_trx,acc_per.cod_mto)
END IF
END IF
END IF
IF xtipo = "CAPACITACION REQUERIDA" OR xtipo = "CAPACITACION TOMADA" THEN
CALL graba_capacitacion()
END IF
## DESVINCULACION: DESACTIVA AL EMPLEADO (status_t = 'D') Y GUARDA LA CAUSA
IF es_desvinculacion(xtipo) THEN
CALL graba_desvinculacion()
END IF
################## DATOS PARA INSERTAR O MODIFICAR PETB00003 ############
@@ -877,16 +949,9 @@ FUNCTION adpcad017()
COMMIT WORK
END IF
## ACTUALIZA LA TABLA DE EMPLEADOS EN CUANTO AL MOVIMIENTO DE LAS TERMINACIONES
## DE LA ACCION DE PERSONAL
IF xtipo = "TERMINO" THEN
UPDATE adtb00003 SET status_t = "T"
WHERE num_emp = acc_per.num_emp
UPDATE adtb00021 SET status_t = "T"
WHERE num_emp = acc_per.num_emp
END IF
## LAS TERMINACIONES (TERMINO/CANCELAR/DESVINCULAR) SE GRABAN DENTRO DE LA
## TRANSACCION EN graba_desvinculacion() (2026-10-05). Antes ponia status_t='T'
## pero el movimiento existente es 'CANCELAR' y nunca entraba aqui.
## ACTUALIZA LA TABLA DE SECUENCIA NUMERICA
UPDATE adtb00028 SET num_trx = acc_per.num_trx
@@ -895,19 +960,28 @@ FUNCTION adpcad017()
LET numero_msg = 1
CALL msg(numero_msg)
CLEAR FORM
LABEL preg:
PROMPT "Desea Imprimir Este Documento (S/N)?..." FOR CHAR optt
LET optt = UPSHIFT(optt)
IF optt IS NULL OR (optt != "S" AND optt != "N") THEN
GOTO preg
END IF
IF fgl_winquestion("ACCION DE PERSONAL","Accion grabada. Desea imprimir el documento?",
"NO","YES|NO","question",0) = "YES" THEN
LET optt = "S"
ELSE
LET optt = "N"
END IF
IF optt = "S" THEN
CALL configureoutput("PDF") RETURNING handler
START REPORT imp_accion TO XML HANDLER handler
OUTPUT TO REPORT imp_accion()
FINISH REPORT imp_accion
RUN imprime
# 2026-10-05: antes usaba configureoutput("PDF"), que carga el motor
# SIN diseno (loadCurrentSettings(NULL)) -> PDF en blanco. Ahora usa
# el mismo adprmt017.4rp que la consulta.
IF fgl_report_loadCurrentSettings("adprmt017.4rp") THEN
CALL fgl_report_selectDevice("PDF")
CALL fgl_report_selectPreview(TRUE)
LET handler = fgl_report_commitCurrentSettings()
IF handler IS NOT NULL THEN
START REPORT imp_accion TO XML HANDLER handler
OUTPUT TO REPORT imp_accion()
FINISH REPORT imp_accion
END IF
ELSE
CALL fgl_winmessage("INFO","No se pudo cargar el diseno adprmt017.4rp","stop")
END IF
END IF
END FUNCTION
@@ -1559,7 +1633,13 @@ FUNCTION adpcmf017()
UPDATE notb00007 SET status_t ="E",
us_mod = usuarios,
fech_mod = getdate()
WHERE num_trx = acc_per.num_trx AND cod_mto = acc_per.cod_mto
WHERE num_trx = acc_per.num_trx AND cod_mto = acc_per.cod_mto
IF xtipo = "CAPACITACION REQUERIDA" OR xtipo = "CAPACITACION TOMADA" THEN
CALL anula_capacitacion(acc_per.num_trx)
END IF
IF es_desvinculacion(xtipo) THEN
CALL anula_desvinculacion(acc_per.num_trx, acc_per.num_emp)
END IF
COMMIT WORK
LET numero_msg = 39
CALL msg(numero_msg)
@@ -1704,8 +1784,19 @@ nombre5 clipped," ",nombre6 clipped," ",apellido5 clipped," ",apellido6 clipped
END IF
CALL vacaciones('C') RETURNING realiza_vacaciones # CUANDO ESTA CONSULTANDO ES 'C' Y ADICIONANDO ES 'A'
END IF
## DATOS CAPACITACION
IF xtipo = "CAPACITACION REQUERIDA" OR xtipo = "CAPACITACION TOMADA" THEN
CALL carga_capacitacion(acc_per.num_trx)
CALL capacitacion('C') RETURNING realiza_capacitacion
END IF
## DATOS DESVINCULACION
IF es_desvinculacion(xtipo) THEN
IF carga_desvinculacion(acc_per.num_trx) THEN
CALL desvinculacion('C') RETURNING realiza_desvinculacion
END IF
END IF
@@ -1946,7 +2037,574 @@ FUNCTION vacaciones(operacion)
END IF
END FUNCTION
## VENTANA DE LOS NIVELES DEL LOS EMPLEADOS
##################################################################
## CAPACITACION (2026-10-05)
## 'CAPACITACION REQUERIDA' : plan de horas por empleado (tipo_reg 'R')
## 'CAPACITACION TOMADA' : horas ejecutadas (tipo_reg 'T'), puede
## cubrir una requerida (id_requerida)
## Tablas adtb00059/adtb00060 via SQL dinamico (no estan en smarmotech.sch)
##################################################################
FUNCTION capacitacion(operacion)
DEFINE operacion VARCHAR(1),
es_requerida BOOLEAN,
pend DEC(8,2),
xcod INTEGER,
xnum INTEGER
LET int_flag = FALSE
LET es_requerida = (xtipo = "CAPACITACION REQUERIDA")
OPEN WINDOW adwindow17 AT 10,12 WITH FORM "adfmwd017"
ATTRIBUTE(BORDER,FORM LINE FIRST + 2)
CALL combo_capacitaciones()
CALL combo_requeridas(acc_per.num_emp, operacion = 'C')
CALL totales_capacitacion(acc_per.num_emp)
IF operacion = 'A' THEN
INITIALIZE capac.* TO NULL
LET capac.tipo_desc = xtipo
LET capac.fecha_ini = acc_per.fech_efec
INPUT BY NAME capac.* WITHOUT DEFAULTS ATTRIBUTE(UNBUFFERED)
BEFORE INPUT
DISPLAY BY NAME cap_tot.*
IF es_requerida THEN
CALL DIALOG.setFieldActive("id_requerida", FALSE)
CALL DIALOG.setFieldActive("horas_tom", FALSE)
CALL DIALOG.setFieldActive("fecha_fin", FALSE)
ELSE
CALL DIALOG.setFieldActive("horas_req", FALSE)
END IF
ON CHANGE id_requerida
IF capac.id_requerida IS NOT NULL THEN
CALL datos_requerida(capac.id_requerida)
RETURNING capac.cod_cap, capac.evento, pend
LET capac.horas_req = pend
IF capac.horas_tom IS NULL THEN
LET capac.horas_tom = pend
END IF
CALL DIALOG.setFieldActive("cod_cap", FALSE)
ELSE
LET capac.cod_cap = NULL
LET capac.evento = NULL
LET capac.horas_req = NULL
CALL DIALOG.setFieldActive("cod_cap", TRUE)
END IF
ON CHANGE cod_cap
IF capac.cod_cap IS NOT NULL THEN
CALL datos_curso(capac.cod_cap) RETURNING capac.evento, pend
IF es_requerida THEN
LET capac.horas_req = pend
ELSE
IF capac.horas_tom IS NULL THEN
LET capac.horas_tom = pend
END IF
END IF
END IF
ON ACTION nuevo_curso
CALL nuevo_curso() RETURNING xcod
IF xcod IS NOT NULL THEN
CALL combo_capacitaciones()
LET capac.cod_cap = xcod
CALL datos_curso(capac.cod_cap) RETURNING capac.evento, pend
IF es_requerida THEN
LET capac.horas_req = pend
ELSE
LET capac.horas_tom = pend
END IF
END IF
AFTER INPUT
IF int_flag THEN
EXIT INPUT
END IF
IF capac.cod_cap IS NULL THEN
CALL fgl_winmessage("INFO","DEBE SELECCIONAR LA CAPACITACION","info")
NEXT FIELD cod_cap
END IF
IF es_requerida THEN
IF capac.horas_req IS NULL OR capac.horas_req <= 0 THEN
CALL fgl_winmessage("INFO","DEBE INDICAR LAS HORAS REQUERIDAS","info")
NEXT FIELD horas_req
END IF
# Evita duplicar una requerida que todavia esta pendiente
LET xnum = 0
LET cap_sql =
"SELECT COUNT(*) FROM adtb00060 r WHERE r.num_emp = ? AND r.cod_cap = ? ",
" AND r.tipo_reg = 'R' AND r.status_t IS NULL ",
" AND r.horas_req > ISNULL((SELECT SUM(t.horas_tom) FROM adtb00060 t ",
" WHERE t.id_requerida = r.id_cap AND t.status_t IS NULL),0)"
PREPARE p_cap_dup FROM cap_sql
EXECUTE p_cap_dup INTO xnum USING acc_per.num_emp, capac.cod_cap
IF xnum > 0 THEN
IF fgl_winquestion("INFO",
"ESTE EMPLEADO YA TIENE ESTA CAPACITACION REQUERIDA PENDIENTE. DESEA REGISTRARLA DE NUEVO?",
"NO","YES|NO","QUESTION",0) = "NO" THEN
NEXT FIELD cod_cap
END IF
END IF
ELSE
IF capac.horas_tom IS NULL OR capac.horas_tom <= 0 THEN
CALL fgl_winmessage("INFO","DEBE INDICAR LAS HORAS TOMADAS","info")
NEXT FIELD horas_tom
END IF
IF capac.fecha_ini IS NULL THEN
CALL fgl_winmessage("INFO","DEBE INDICAR LA FECHA DE INICIO","info")
NEXT FIELD fecha_ini
END IF
IF capac.fecha_fin IS NOT NULL AND capac.fecha_fin < capac.fecha_ini THEN
CALL fgl_winmessage("INFO","LA FECHA FIN NO PUEDE SER MENOR QUE LA FECHA INICIO","info")
NEXT FIELD fecha_fin
END IF
IF capac.id_requerida IS NOT NULL AND capac.horas_tom > capac.horas_req THEN
IF fgl_winquestion("INFO",
"LAS HORAS TOMADAS EXCEDEN LAS HORAS PENDIENTES DE LA REQUERIDA. CONTINUAR?",
"NO","YES|NO","QUESTION",0) = "NO" THEN
NEXT FIELD horas_tom
END IF
END IF
END IF
END INPUT
ELSE
LET capac.tipo_desc = xtipo
DISPLAY BY NAME capac.*, cap_tot.*
MENU "Capacitacion"
COMMAND "Cerrar" "Cierra la ventana de capacitacion"
EXIT MENU
ON ACTION close
EXIT MENU
END MENU
END IF
CLOSE WINDOW adwindow17
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
INITIALIZE capac.* TO NULL
RETURN FALSE
END IF
RETURN TRUE
END FUNCTION
## LLENA EL COMBO DEL CATALOGO DE CAPACITACIONES
FUNCTION combo_capacitaciones()
DEFINE cb ui.ComboBox,
xcod INTEGER,
xnom VARCHAR(100)
LET cb = ui.ComboBox.forName("formonly.cod_cap")
IF cb IS NULL THEN
RETURN
END IF
CALL cb.clear()
LET cap_sql =
"SELECT cod_cap, nom_cap FROM adtb00059 WHERE status_t IS NULL ORDER BY nom_cap"
PREPARE p_cap_cat FROM cap_sql
DECLARE c_cap_cat CURSOR FOR p_cap_cat
FOREACH c_cap_cat INTO xcod, xnom
CALL cb.addItem(xcod, xnom CLIPPED)
END FOREACH
FREE c_cap_cat
END FUNCTION
## LLENA EL COMBO DE CAPACITACIONES REQUERIDAS DEL EMPLEADO
## p_todas = FALSE solo las que tienen horas pendientes (captura)
FUNCTION combo_requeridas(p_num_emp, p_todas)
DEFINE p_num_emp INTEGER,
p_todas BOOLEAN,
cb ui.ComboBox,
xid INTEGER,
xnom VARCHAR(100),
pend DEC(8,2)
LET cb = ui.ComboBox.forName("formonly.id_requerida")
IF cb IS NULL THEN
RETURN
END IF
CALL cb.clear()
LET cap_sql =
"SELECT r.id_cap, c.nom_cap, ",
" ISNULL(r.horas_req,0) - ISNULL((SELECT SUM(t.horas_tom) FROM adtb00060 t ",
" WHERE t.id_requerida = r.id_cap AND t.status_t IS NULL),0) ",
"FROM adtb00060 r JOIN adtb00059 c ON c.cod_cap = r.cod_cap ",
"WHERE r.num_emp = ? AND r.tipo_reg = 'R' AND r.status_t IS NULL ",
"ORDER BY c.nom_cap"
PREPARE p_cap_req FROM cap_sql
DECLARE c_cap_req CURSOR FOR p_cap_req
FOREACH c_cap_req USING p_num_emp INTO xid, xnom, pend
IF NOT p_todas AND pend <= 0 THEN
CONTINUE FOREACH
END IF
CALL cb.addItem(xid, xnom CLIPPED || " (" || (pend USING "<<<&.&&") || " h pend.)")
END FOREACH
FREE c_cap_req
END FUNCTION
## TOTALES DE HORAS DEL EMPLEADO: REQUERIDAS, TOMADAS Y PENDIENTES
FUNCTION totales_capacitacion(p_num_emp)
DEFINE p_num_emp INTEGER
LET cap_tot.trq = 0
LET cap_tot.ttm = 0
LET cap_sql =
"SELECT ISNULL(SUM(CASE WHEN tipo_reg = 'R' THEN horas_req END),0), ",
" ISNULL(SUM(CASE WHEN tipo_reg = 'T' THEN horas_tom END),0) ",
"FROM adtb00060 WHERE num_emp = ? AND status_t IS NULL"
PREPARE p_cap_tot FROM cap_sql
EXECUTE p_cap_tot INTO cap_tot.trq, cap_tot.ttm USING p_num_emp
# Pendiente = lo requerido que falta por cubrir (las tomadas sin requerida no restan)
LET cap_sql =
"SELECT ISNULL(SUM(CASE WHEN x.pend > 0 THEN x.pend ELSE 0 END),0) FROM ( ",
" SELECT ISNULL(r.horas_req,0) - ISNULL((SELECT SUM(t.horas_tom) FROM adtb00060 t ",
" WHERE t.id_requerida = r.id_cap AND t.status_t IS NULL),0) pend ",
" FROM adtb00060 r WHERE r.num_emp = ? AND r.tipo_reg = 'R' AND r.status_t IS NULL) x"
PREPARE p_cap_pend FROM cap_sql
EXECUTE p_cap_pend INTO cap_tot.tpd USING p_num_emp
END FUNCTION
## TIPO DE EVENTO Y HORAS ESTANDAR DE UN CURSO DEL CATALOGO
FUNCTION datos_curso(p_cod)
DEFINE p_cod INTEGER,
xev SMALLINT,
xhoras DEC(8,2)
LET cap_sql = "SELECT evento, horas FROM adtb00059 WHERE cod_cap = ?"
PREPARE p_cap_cur FROM cap_sql
EXECUTE p_cap_cur INTO xev, xhoras USING p_cod
RETURN xev, xhoras
END FUNCTION
## CURSO, EVENTO Y HORAS PENDIENTES DE UNA CAPACITACION REQUERIDA
FUNCTION datos_requerida(p_id)
DEFINE p_id INTEGER,
xcod INTEGER,
xev SMALLINT,
pend DEC(8,2)
LET cap_sql =
"SELECT r.cod_cap, c.evento, ",
" ISNULL(r.horas_req,0) - ISNULL((SELECT SUM(t.horas_tom) FROM adtb00060 t ",
" WHERE t.id_requerida = r.id_cap AND t.status_t IS NULL),0) ",
"FROM adtb00060 r JOIN adtb00059 c ON c.cod_cap = r.cod_cap WHERE r.id_cap = ?"
PREPARE p_cap_dreq FROM cap_sql
EXECUTE p_cap_dreq INTO xcod, xev, pend USING p_id
RETURN xcod, xev, pend
END FUNCTION
## AGREGA UN CURSO AL CATALOGO adtb00059 Y DEVUELVE SU CODIGO
FUNCTION nuevo_curso()
DEFINE nc RECORD
nom_cap VARCHAR(100),
evento SMALLINT,
horas DEC(6,2)
END RECORD,
xnom VARCHAR(100),
xev SMALLINT,
xhoras DEC(6,2),
xcod INTEGER
# Ventana adfmwd019: nombre, tipo y horas en un solo paso
LET int_flag = FALSE
LET nc.nom_cap = NULL
LET nc.evento = 2
LET nc.horas = NULL
OPEN WINDOW adwindow19 AT 12,14 WITH FORM "adfmwd019"
ATTRIBUTE(BORDER,FORM LINE FIRST + 2)
INPUT BY NAME nc.* WITHOUT DEFAULTS ATTRIBUTE(UNBUFFERED)
AFTER INPUT
IF int_flag THEN
EXIT INPUT
END IF
IF nc.nom_cap IS NULL OR length(nc.nom_cap CLIPPED) = 0 THEN
CALL fgl_winmessage("INFO","DEBE INDICAR EL NOMBRE DE LA CAPACITACION","info")
NEXT FIELD nom_cap
END IF
IF nc.horas IS NOT NULL AND nc.horas < 0 THEN
CALL fgl_winmessage("INFO","LAS HORAS NO PUEDEN SER NEGATIVAS","info")
NEXT FIELD horas
END IF
END INPUT
CLOSE WINDOW adwindow19
IF int_flag THEN
LET int_flag = FALSE
RETURN NULL
END IF
LET xnom = upshift(nc.nom_cap CLIPPED)
LET xev = nc.evento
IF xev IS NULL OR xev < 1 OR xev > 4 THEN
LET xev = 2
END IF
LET xhoras = nc.horas
IF xhoras IS NULL THEN
LET xhoras = 0
END IF
LET xcod = NULL
LET cap_sql = "SELECT cod_cap FROM adtb00059 WHERE nom_cap = ? AND status_t IS NULL"
PREPARE p_cap_bnom FROM cap_sql
EXECUTE p_cap_bnom INTO xcod USING xnom
IF xcod IS NOT NULL THEN
CALL fgl_winmessage("INFO","ESA CAPACITACION YA EXISTE EN EL CATALOGO, SE SELECCIONA","info")
RETURN xcod
END IF
LET cap_sql =
"INSERT INTO adtb00059 (nom_cap, evento, horas, us_crea, fech_crea) ",
"VALUES (?, ?, ?, SUSER_SNAME(), GETDATE())"
PREPARE p_cap_ins_cat FROM cap_sql
EXECUTE p_cap_ins_cat USING xnom, xev, xhoras
EXECUTE p_cap_bnom INTO xcod USING xnom
RETURN xcod
END FUNCTION
## GRABA EL DETALLE DE CAPACITACION DE LA ACCION (dentro de la transaccion)
FUNCTION graba_capacitacion()
DEFINE xtipo_reg CHAR(1)
IF xtipo = "CAPACITACION REQUERIDA" THEN
LET xtipo_reg = "R"
LET capac.id_requerida = NULL
LET capac.horas_tom = NULL
LET capac.fecha_fin = NULL
ELSE
LET xtipo_reg = "T"
LET capac.horas_req = NULL
END IF
LET cap_sql =
"INSERT INTO adtb00060 (num_trx, num_emp, tipo_reg, cod_cap, id_requerida, ",
" horas_req, horas_tom, fecha_ini, fecha_fin, institucion, costo, us_crea, fech_crea) ",
"VALUES (?,?,?,?,?,?,?,?,?,?,?, SUSER_SNAME(), GETDATE())"
PREPARE p_cap_ins FROM cap_sql
EXECUTE p_cap_ins USING acc_per.num_trx, acc_per.num_emp, xtipo_reg, capac.cod_cap,
capac.id_requerida, capac.horas_req, capac.horas_tom,
capac.fecha_ini, capac.fecha_fin, capac.institucion, capac.costo
END FUNCTION
## CARGA EL DETALLE DE CAPACITACION DE UNA ACCION PARA CONSULTA
FUNCTION carga_capacitacion(p_trx)
DEFINE p_trx INTEGER
INITIALIZE capac.* TO NULL
LET cap_sql =
"SELECT a.id_requerida, a.cod_cap, c.evento, a.horas_req, a.fecha_ini, a.fecha_fin, ",
" a.horas_tom, a.institucion, a.costo ",
"FROM adtb00060 a JOIN adtb00059 c ON c.cod_cap = a.cod_cap WHERE a.num_trx = ?"
PREPARE p_cap_sel FROM cap_sql
EXECUTE p_cap_sel INTO capac.id_requerida, capac.cod_cap, capac.evento, capac.horas_req,
capac.fecha_ini, capac.fecha_fin, capac.horas_tom,
capac.institucion, capac.costo
USING p_trx
END FUNCTION
## ANULA EL DETALLE DE CAPACITACION JUNTO CON LA ACCION
FUNCTION anula_capacitacion(p_trx)
DEFINE p_trx INTEGER
LET cap_sql =
"UPDATE adtb00060 SET status_t = 'E', us_mod = ?, fech_mod = GETDATE() WHERE num_trx = ?"
PREPARE p_cap_anu FROM cap_sql
EXECUTE p_cap_anu USING usuarios, p_trx
END FUNCTION
##################################################################
## DESVINCULACION (2026-10-05)
## La desactivacion del empleado (adtb00003.status_t = 'D') se hace
## por la accion de personal; noprmt016 ya no desactiva.
## Causa codificada en adtb00062 (catalogo adtb00061) para Rotacion.
##################################################################
FUNCTION es_desvinculacion(p_tipo)
DEFINE p_tipo VARCHAR(25)
LET p_tipo = p_tipo CLIPPED
RETURN (p_tipo = "CANCELAR" OR p_tipo = "DESVINCULAR" OR p_tipo = "TERMINO")
END FUNCTION
FUNCTION empleado_desactivado(p_num_emp)
DEFINE p_num_emp INTEGER,
xst CHAR(1)
LET xst = NULL
SELECT a.status_t INTO xst FROM adtb00003 a WHERE a.num_emp = p_num_emp
RETURN (xst = "D")
END FUNCTION
FUNCTION desvinculacion(operacion)
DEFINE operacion VARCHAR(1),
cb ui.ComboBox,
xcod SMALLINT,
xdesc VARCHAR(60),
xingreso DATE
LET int_flag = FALSE
OPEN WINDOW adwindow18 AT 10,12 WITH FORM "adfmwd018"
ATTRIBUTE(BORDER,FORM LINE FIRST + 2)
LET cb = ui.ComboBox.forName("formonly.cod_causa")
CALL cb.clear()
LET cap_sql = "SELECT cod_causa, desc_causa FROM adtb00061 WHERE status_t IS NULL ORDER BY cod_causa"
PREPARE p_desv_cat FROM cap_sql
DECLARE c_desv_cat CURSOR FOR p_desv_cat
FOREACH c_desv_cat INTO xcod, xdesc
CALL cb.addItem(xcod, xdesc CLIPPED)
END FOREACH
FREE c_desv_cat
IF operacion = 'A' THEN
INITIALIZE desv.* TO NULL
LET desv.fecha_salida = acc_per.fech_efec
LET desv.recontratable = "S"
INPUT BY NAME desv.* WITHOUT DEFAULTS ATTRIBUTE(UNBUFFERED)
ON CHANGE cod_causa
LET desv.clase_desc = clase_causa(desv.cod_causa)
AFTER INPUT
IF int_flag THEN
EXIT INPUT
END IF
IF desv.fecha_salida IS NULL THEN
CALL fgl_winmessage("INFO","DEBE INDICAR LA FECHA DE SALIDA","info")
NEXT FIELD fecha_salida
END IF
LET xingreso = NULL
SELECT a.fech_efec INTO xingreso FROM adtb00003 a WHERE a.num_emp = acc_per.num_emp
IF xingreso IS NOT NULL AND desv.fecha_salida < xingreso THEN
CALL fgl_winmessage("INFO","LA FECHA DE SALIDA ES MENOR QUE LA FECHA DE INGRESO","info")
NEXT FIELD fecha_salida
END IF
IF desv.cod_causa IS NULL THEN
CALL fgl_winmessage("INFO","DEBE SELECCIONAR LA CAUSA DE LA SALIDA","info")
NEXT FIELD cod_causa
END IF
IF desv.recontratable IS NULL THEN
CALL fgl_winmessage("INFO","INDIQUE SI EL EMPLEADO ES RECONTRATABLE","info")
NEXT FIELD recontratable
END IF
END INPUT
ELSE
LET desv.clase_desc = clase_causa(desv.cod_causa)
DISPLAY BY NAME desv.*
MENU "Desvinculacion"
COMMAND "Cerrar" "Cierra la ventana de desvinculacion"
EXIT MENU
ON ACTION close
EXIT MENU
END MENU
END IF
CLOSE WINDOW adwindow18
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
INITIALIZE desv.* TO NULL
RETURN FALSE
END IF
RETURN TRUE
END FUNCTION
## DESCRIPCION DE LA CLASE DE LA CAUSA (VOLUNTARIA / INVOLUNTARIA / OTRA)
FUNCTION clase_causa(p_cod)
DEFINE p_cod SMALLINT,
xclase CHAR(1)
LET xclase = NULL
LET cap_sql = "SELECT clase FROM adtb00061 WHERE cod_causa = ?"
PREPARE p_desv_clase FROM cap_sql
EXECUTE p_desv_clase INTO xclase USING p_cod
CASE xclase
WHEN "V" RETURN "VOLUNTARIA"
WHEN "I" RETURN "INVOLUNTARIA"
WHEN "O" RETURN "OTRA"
END CASE
RETURN NULL
END FUNCTION
## GRABA LA DESVINCULACION Y DESACTIVA AL EMPLEADO (dentro de la transaccion)
FUNCTION graba_desvinculacion()
DEFINE xdep, xpuesto SMALLINT,
xtipo_emp VARCHAR(20),
xingreso DATE,
xdesc VARCHAR(60),
xmotivo VARCHAR(255)
SELECT a.departamento, a.cod_puesto, a.tipo_empleado, a.fech_efec
INTO xdep, xpuesto, xtipo_emp, xingreso
FROM adtb00003 a
WHERE a.num_emp = acc_per.num_emp
LET cap_sql =
"INSERT INTO adtb00062 (num_trx, num_emp, fecha_salida, cod_causa, recontratable, detalle, ",
" departamento, cod_puesto, tipo_empleado, fech_ingreso, origen, us_crea, fech_crea) ",
"VALUES (?,?,?,?,?,?,?,?,?,?,'A', SUSER_SNAME(), GETDATE())"
PREPARE p_desv_ins FROM cap_sql
EXECUTE p_desv_ins USING acc_per.num_trx, acc_per.num_emp, desv.fecha_salida, desv.cod_causa,
desv.recontratable, desv.detalle, xdep, xpuesto, xtipo_emp, xingreso
# Motivo al inicio de adtb00003.observacion (lo que ya habia se conserva detras)
LET xdesc = NULL
LET cap_sql = "SELECT desc_causa FROM adtb00061 WHERE cod_causa = ?"
PREPARE p_desv_desc FROM cap_sql
EXECUTE p_desv_desc INTO xdesc USING desv.cod_causa
LET xmotivo = xdesc CLIPPED, " ", desv.fecha_salida USING "dd/mm/yyyy"
IF desv.detalle IS NOT NULL THEN
LET xmotivo = xmotivo CLIPPED, " ", desv.detalle CLIPPED
END IF
IF desv.recontratable = "N" THEN
LET xmotivo = xmotivo CLIPPED, " NO REINGRESO"
END IF
LET cap_sql =
"UPDATE adtb00003 SET status_t = 'D', fecha_salida = ?, ",
" observacion = LEFT(? + CASE WHEN observacion IS NULL OR LTRIM(observacion) = '' ",
" THEN '' ELSE ' | ' + observacion END, 255), ",
" us_mod = SUSER_SNAME(), fech_mod = GETDATE() ",
"WHERE num_emp = ?"
PREPARE p_desv_emp FROM cap_sql
EXECUTE p_desv_emp USING desv.fecha_salida, xmotivo, acc_per.num_emp
END FUNCTION
## CARGA LA DESVINCULACION DE UNA ACCION PARA CONSULTA
FUNCTION carga_desvinculacion(p_trx)
DEFINE p_trx INTEGER
INITIALIZE desv.* TO NULL
LET cap_sql =
"SELECT fecha_salida, cod_causa, recontratable, detalle FROM adtb00062 WHERE num_trx = ?"
PREPARE p_desv_sel FROM cap_sql
EXECUTE p_desv_sel INTO desv.fecha_salida, desv.cod_causa, desv.recontratable, desv.detalle
USING p_trx
# Las desvinculaciones anteriores a 2026-10-05 no tienen detalle
RETURN (desv.cod_causa IS NOT NULL)
END FUNCTION
## ANULA LA DESVINCULACION Y REACTIVA AL EMPLEADO SI NO TIENE OTRA SALIDA VIGENTE
FUNCTION anula_desvinculacion(p_trx, p_num_emp)
DEFINE p_trx, p_num_emp INTEGER
LET cap_sql =
"UPDATE adtb00062 SET status_t = 'E', us_mod = ?, fech_mod = GETDATE() WHERE num_trx = ?"
PREPARE p_desv_anu FROM cap_sql
EXECUTE p_desv_anu USING usuarios, p_trx
# Acciones anteriores a 2026-10-05 no tienen detalle: no se reactiva al empleado
IF sqlca.sqlerrd[3] = 0 THEN
RETURN
END IF
LET cap_sql =
"UPDATE adtb00003 SET status_t = NULL, fecha_salida = NULL, us_mod = ?, fech_mod = GETDATE() ",
"WHERE num_emp = ? AND status_t = 'D' ",
" AND NOT EXISTS (SELECT 1 FROM adtb00062 d WHERE d.num_emp = ? AND d.status_t IS NULL)"
PREPARE p_desv_react FROM cap_sql
EXECUTE p_desv_react USING usuarios, p_num_emp, p_num_emp
END FUNCTION
## VENTANA DE LOS NIVELES DEL LOS EMPLEADOS
FUNCTION busca_nivel()
OPEN WINDOW busqueda AT 10,10 WITH FORM "adfmwd008"
ATTRIBUTE (BORDER,FORM LINE FIRST + 2, comment line last)
@@ -2036,8 +2694,13 @@ DEFINE doble_of,doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_of,
depende,codigo_s,cod_provincia,codigo_n,serie SMALLINT,
fecha_nac DATE,
provincia,nombre_nac CHAR(30),
hoy VARCHAR(25)
hoy VARCHAR(25),
# Bloque de detalle para CAPACITACION / DESVINCULACION (2026-10-05).
# es_vac = 1 muestra el bloque de vacaciones del .4rp; 0 muestra el detalle.
es_vac SMALLINT,
det_tit, det1, det2, det3 VARCHAR(150),
xnom_det VARCHAR(100)
OUTPUT
TOP MARGIN 4
LEFT MARGIN 0
@@ -2085,9 +2748,43 @@ ON EVERY ROW
SELECT @desc_mto INTO mov_emp.desc_mto
FROM adtb00009
WHERE @cod_mto = acc_per.cod_mto
WHERE @cod_mto = acc_per.cod_mto
## DETALLE SEGUN EL MOVIMIENTO (CAPACITACION / DESVINCULACION)
LET es_vac = 1
LET det_tit = NULL LET det1 = NULL LET det2 = NULL LET det3 = NULL
IF xtipo = "CAPACITACION REQUERIDA" OR xtipo = "CAPACITACION TOMADA" THEN
LET es_vac = 0
LET xnom_det = NULL
LET cap_sql = "SELECT nom_cap FROM adtb00059 WHERE cod_cap = ?"
PREPARE p_imp_cap FROM cap_sql
EXECUTE p_imp_cap INTO xnom_det USING capac.cod_cap
LET det_tit = xtipo CLIPPED
LET det1 = "CAPACITACION: ", xnom_det CLIPPED
IF xtipo = "CAPACITACION REQUERIDA" THEN
LET det2 = "HORAS REQUERIDAS: ", capac.horas_req USING "<<<&.&&",
" FECHA INICIO: ", capac.fecha_ini USING "dd/mm/yyyy"
ELSE
LET det2 = "HORAS TOMADAS: ", capac.horas_tom USING "<<<&.&&",
" DEL ", capac.fecha_ini USING "dd/mm/yyyy",
" AL ", capac.fecha_fin USING "dd/mm/yyyy"
END IF
LET det3 = "INSTITUCION/FACILITADOR: ", capac.institucion CLIPPED,
" COSTO: ", capac.costo USING "<<<,<<&.&&"
END IF
IF es_desvinculacion(xtipo) THEN
LET es_vac = 0
LET xnom_det = NULL
LET cap_sql = "SELECT desc_causa FROM adtb00061 WHERE cod_causa = ?"
PREPARE p_imp_desv FROM cap_sql
EXECUTE p_imp_desv INTO xnom_det USING desv.cod_causa
LET det_tit = "DESVINCULACION"
LET det1 = "FECHA DE SALIDA: ", desv.fecha_salida USING "dd/mm/yyyy",
" CAUSA: ", xnom_det CLIPPED, " (", clase_causa(desv.cod_causa) CLIPPED, ")"
LET det2 = "RECONTRATABLE: ", desv.recontratable
LET det3 = "DETALLE: ", desv.detalle CLIPPED
END IF
PRINTX acc_per.num_trx,mov_emp.desc_mto,
acc_per.fecha ,acc_per.fech_efec,apellido9,nombre9 ,
direccion,dias2,
@@ -2107,5 +2804,6 @@ ON EVERY ROW
nombre_dpto,
acc_per.cod_mto ,
mov_emp.desc_mto,
acc_per.observacion,vacacion.*,p_companias.nombre,hoy,descrip3,descrip4,descrip5
acc_per.observacion,vacacion.*,p_companias.nombre,hoy,descrip3,descrip4,descrip5,
es_vac,det_tit,det1,det2,det3
END REPORT
+110
View File
@@ -0,0 +1,110 @@
/* ------------------------------------------------------------------
ADPRMT017 - Accion de Personal: movimientos de CAPACITACION
Fecha : 2026-10-05
Crea : adtb00059 (catalogo de capacitaciones)
adtb00060 (capacitacion por empleado: requerida / tomada)
movimientos en adtb00009
vista vw_capacitacion_empleado (requeridas vs tomadas)
Correr en: marmotech (probar primero en .40.9)
Idempotente: se puede correr mas de una vez.
------------------------------------------------------------------- */
SET NOCOUNT ON;
/* 1. Catalogo de capacitaciones */
IF OBJECT_ID('dbo.adtb00059') IS NULL
BEGIN
CREATE TABLE dbo.adtb00059 (
cod_cap INT IDENTITY(1,1) NOT NULL CONSTRAINT pk_adtb00059 PRIMARY KEY,
nom_cap VARCHAR(100) NOT NULL,
evento SMALLINT NULL, -- 1 Seminario 2 Curso 3 Taller 4 Conferencia (igual que adtb00022)
horas DECIMAL(6,2) NULL, -- horas estandar del curso
status_t CHAR(1) NULL,
us_crea VARCHAR(50) NULL,
fech_crea DATETIME NULL,
us_mod VARCHAR(50) NULL,
fech_mod DATETIME NULL
);
CREATE UNIQUE INDEX ux_adtb00059_nom ON dbo.adtb00059(nom_cap) WHERE status_t IS NULL;
END
GO
/* 2. Capacitacion por empleado
tipo_reg 'R' = requerida (plan), 'T' = tomada (ejecutada)
Una 'T' puede referenciar la 'R' que cubre (id_requerida). */
IF OBJECT_ID('dbo.adtb00060') IS NULL
BEGIN
CREATE TABLE dbo.adtb00060 (
id_cap INT IDENTITY(1,1) NOT NULL CONSTRAINT pk_adtb00060 PRIMARY KEY,
num_trx INT NOT NULL, -- adtb00020.num_trx
num_emp INT NOT NULL,
tipo_reg CHAR(1) NOT NULL CONSTRAINT ck_adtb00060_tipo CHECK (tipo_reg IN ('R','T')),
cod_cap INT NOT NULL CONSTRAINT fk_adtb00060_cap REFERENCES dbo.adtb00059(cod_cap),
id_requerida INT NULL CONSTRAINT fk_adtb00060_req REFERENCES dbo.adtb00060(id_cap),
horas_req DECIMAL(6,2) NULL,
horas_tom DECIMAL(6,2) NULL,
fecha_ini DATE NULL,
fecha_fin DATE NULL,
institucion VARCHAR(100) NULL,
costo DECIMAL(12,2) NULL,
status_t CHAR(1) NULL, -- 'E' = anulado (junto con la accion)
us_crea VARCHAR(50) NULL,
fech_crea DATETIME NULL,
us_mod VARCHAR(50) NULL,
fech_mod DATETIME NULL
);
CREATE INDEX ix_adtb00060_emp ON dbo.adtb00060(num_emp, tipo_reg) INCLUDE (cod_cap, horas_req, horas_tom, status_t);
CREATE INDEX ix_adtb00060_trx ON dbo.adtb00060(num_trx);
CREATE INDEX ix_adtb00060_req ON dbo.adtb00060(id_requerida);
END
GO
/* 3. Movimientos de accion de personal */
IF NOT EXISTS (SELECT 1 FROM dbo.adtb00009 WHERE tipo_mov = 'CAPACITACION REQUERIDA')
INSERT INTO dbo.adtb00009 (cod_mto, desc_mto, tipo_mov, status_t, us_crea, fech_crea)
SELECT ISNULL(MAX(cod_mto),0) + 1, 'CAPACITACION REQUERIDA', 'CAPACITACION REQUERIDA', NULL, SUSER_SNAME(), GETDATE()
FROM dbo.adtb00009;
IF NOT EXISTS (SELECT 1 FROM dbo.adtb00009 WHERE tipo_mov = 'CAPACITACION TOMADA')
INSERT INTO dbo.adtb00009 (cod_mto, desc_mto, tipo_mov, status_t, us_crea, fech_crea)
SELECT ISNULL(MAX(cod_mto),0) + 1, 'CAPACITACION TOMADA', 'CAPACITACION TOMADA', NULL, SUSER_SNAME(), GETDATE()
FROM dbo.adtb00009;
GO
/* 4. Vista: por empleado, cada capacitacion requerida con lo tomado debajo.
Las tomadas sin requerida asociada salen con tipo 'T' y horas_req 0. */
IF OBJECT_ID('dbo.vw_capacitacion_empleado') IS NOT NULL
DROP VIEW dbo.vw_capacitacion_empleado;
GO
CREATE VIEW dbo.vw_capacitacion_empleado AS
SELECT e.num_emp,
RTRIM(e.nom1_emp) + ' ' + RTRIM(e.apell1_emp) AS empleado,
e.departamento,
d.nom_dpto,
r.tipo_reg,
r.id_cap,
c.cod_cap,
c.nom_cap,
c.evento,
CASE c.evento WHEN 1 THEN 'SEMINARIO' WHEN 2 THEN 'CURSO'
WHEN 3 THEN 'TALLER' WHEN 4 THEN 'CONFERENCIA' END AS tipo_evento,
CASE WHEN r.tipo_reg = 'R' THEN ISNULL(r.horas_req,0) ELSE 0 END AS horas_requeridas,
CASE WHEN r.tipo_reg = 'R'
THEN ISNULL((SELECT SUM(t.horas_tom) FROM dbo.adtb00060 t
WHERE t.id_requerida = r.id_cap AND t.status_t IS NULL),0)
ELSE ISNULL(r.horas_tom,0) END AS horas_tomadas,
CASE WHEN r.tipo_reg = 'R'
THEN ISNULL(r.horas_req,0) - ISNULL((SELECT SUM(t.horas_tom) FROM dbo.adtb00060 t
WHERE t.id_requerida = r.id_cap AND t.status_t IS NULL),0)
ELSE 0 END AS horas_pendientes,
r.fecha_ini,
r.fecha_fin,
r.institucion,
r.costo,
r.num_trx
FROM dbo.adtb00060 r
JOIN dbo.adtb00059 c ON c.cod_cap = r.cod_cap
JOIN dbo.adtb00003 e ON e.num_emp = r.num_emp
LEFT JOIN dbo.adtb00001 d ON d.departamento = e.departamento
WHERE r.status_t IS NULL
AND (r.tipo_reg = 'R' OR r.id_requerida IS NULL);
GO
@@ -0,0 +1,34 @@
# ADPRMT017 – Movimientos de Capacitación (2026-10-05)
Pedido de RRHH: indicador **Horas de Capacitación**. Por cada colaborador se registran las capacitaciones **requeridas** con sus horas y luego las **tomadas**, que cubren a las requeridas.
## Backup
`addir\backup_adprmt017_20261005\` contiene adprmt017.4gl, .rdd, adfmmt017.4fd/.per y los binarios que estaban en `addir\bin` y `PROYECTO\bin`.
Para volver atrás: copiar `adprmt017.4gl` del backup sobre el actual, recompilar y desplegar. Las tablas nuevas no afectan a nadie si no se usan.
## Qué se agregó
| Pieza | Detalle |
|---|---|
| `adtb00009` | 2 movimientos nuevos: `CAPACITACION REQUERIDA`, `CAPACITACION TOMADA` (cod_mto = MAX+1) |
| `adtb00059` | Catálogo de capacitaciones: nombre, tipo de evento (1 Seminario, 2 Curso, 3 Taller, 4 Conferencia, igual que adtb00022) y horas estándar |
| `adtb00060` | Detalle por empleado, ligado a `adtb00020.num_trx`. `tipo_reg` R/T; una T apunta a la R que cubre (`id_requerida`) |
| `vw_capacitacion_empleado` | Por empleado: requeridas con sus horas tomadas y pendientes, más las tomadas que no tienen requerida (para BI y Excel) |
| `adfmwd017.per` | Ventana nueva de capacitación. Se abre igual que la de vacaciones, después del puesto |
| `adprmt017.4gl` | Captura (`capacitacion('A')`), consulta (`'C'`), grabado dentro de la misma transacción y anulación junto con la acción |
## Flujo
1. **Nuevo**, elegir el movimiento *CAPACITACION REQUERIDA* y la ficha. Se abre la ventana: escoger la capacitación del catálogo (o usar el botón **Nuevo curso**). Las horas se toman del catálogo y se pueden editar.
2. Cuando la persona toma el curso: **Nuevo**, elegir *CAPACITACION TOMADA* y en **Requerida a cubrir** escoger la pendiente. Se llena el curso y las horas pendientes; luego se ponen las fechas, las horas reales, la institución y el costo.
3. El recuadro **Resumen del empleado** muestra el total de horas requeridas, tomadas y pendientes.
4. **eLiminar** (anular) la acción también anula su detalle de capacitación.
## Despliegue (pendiente)
1. Correr `adprmt017_capacitacion.sql` en marmotech (la sintaxis se validó en .40.8 con NOEXEC; no se ejecutó nada).
2. Compilar la forma y el programa. Ambos compilan limpio en 3.20.14 y en fgl602:
`fglform adfmwd017.per` → `adfmwd017.42f`; `fglcomp adprmt017.4gl` → `adprmt017.42m`.
3. Copiar `adprmt017.42m` y `adfmwd017.42f` a `PROYECTO\bin`.
4. No hace falta tocar `adfmmt017.4fd` ni regenerar smarmotech.sch: las tablas nuevas se usan con SQL dinámico.
## Notas
- **adprmt019 (Adiestramientos)** no se tocó. Usa `adtb00022`, que solo tiene 2 registros, no guarda horas ni distingue requerida de tomada, y tiene **usuario y clave en claro** en el MAIN (`kpolanco`). Además las acciones del menú están cruzadas: *nuevo* llama a la búsqueda y *buscar* llama a la captura. Se puede retirar o migrar después.
- Para **Rotación**: el movimiento 4 DESVINCULAR tiene `tipo_mov = 'CANCELAR'`, pero adprmt017 marca `status_t='T'` solo si es `'TERMINO'`. Por eso las desvinculaciones no marcan al empleado como terminado y además no guardan la causa. Hay que revisarlo antes de automatizar la rotación.
+139
View File
@@ -0,0 +1,139 @@
/* ------------------------------------------------------------------
ADPRMT017 - Accion de Personal: DESVINCULAR (indicador de Rotacion)
Fecha : 2026-10-05
Crea : adtb00061 (catalogo de causas de salida)
adtb00062 (detalle de desvinculacion por accion)
vista vw_rotacion_mensual
La desactivacion (adtb00003.status_t = 'D') pasa a hacerse SOLO por
la accion de personal; noprmt016 ya no desactiva.
Idempotente.
------------------------------------------------------------------- */
SET NOCOUNT ON;
/* 1. Catalogo de causas
clase: V = voluntaria, I = involuntaria, O = otra
cuenta_rotacion: 'N' para traslados dentro del grupo (no es salida real) */
IF OBJECT_ID('dbo.adtb00061') IS NULL
BEGIN
CREATE TABLE dbo.adtb00061 (
cod_causa SMALLINT NOT NULL CONSTRAINT pk_adtb00061 PRIMARY KEY,
desc_causa VARCHAR(60) NOT NULL,
clase CHAR(1) NOT NULL CONSTRAINT ck_adtb00061_clase CHECK (clase IN ('V','I','O')),
cuenta_rotacion CHAR(1) NOT NULL CONSTRAINT df_adtb00061_cuenta DEFAULT 'S',
status_t CHAR(1) NULL,
us_crea VARCHAR(50) NULL,
fech_crea DATETIME NULL
);
INSERT INTO dbo.adtb00061 (cod_causa, desc_causa, clase, cuenta_rotacion, us_crea, fech_crea) VALUES
( 1, 'RENUNCIA', 'V', 'S', SUSER_SNAME(), GETDATE()),
( 2, 'ABANDONO DE TRABAJO', 'V', 'S', SUSER_SNAME(), GETDATE()),
( 3, 'DIMISION', 'V', 'S', SUSER_SNAME(), GETDATE()),
( 4, 'DESAHUCIO', 'I', 'S', SUSER_SNAME(), GETDATE()),
( 5, 'DESPIDO', 'I', 'S', SUSER_SNAME(), GETDATE()),
( 6, 'CIERRE DE OPERACION / MINA', 'I', 'S', SUSER_SNAME(), GETDATE()),
( 7, 'FIN DE CONTRATO / TEMPORADA', 'I', 'S', SUSER_SNAME(), GETDATE()),
( 8, 'NO SUPERO PERIODO DE PRUEBA', 'I', 'S', SUSER_SNAME(), GETDATE()),
( 9, 'MUTUO ACUERDO', 'O', 'S', SUSER_SNAME(), GETDATE()),
(10, 'PENSION / RETIRO', 'O', 'S', SUSER_SNAME(), GETDATE()),
(11, 'FALLECIMIENTO', 'O', 'S', SUSER_SNAME(), GETDATE()),
(12, 'TRASLADO A OTRA EMPRESA DEL GRUPO', 'O', 'N', SUSER_SNAME(), GETDATE()),
(99, 'OTRA', 'O', 'S', SUSER_SNAME(), GETDATE());
END
GO
/* 2. Detalle de desvinculacion (una fila por accion DESVINCULAR) */
IF OBJECT_ID('dbo.adtb00062') IS NULL
BEGIN
CREATE TABLE dbo.adtb00062 (
id_desv INT IDENTITY(1,1) NOT NULL CONSTRAINT pk_adtb00062 PRIMARY KEY,
num_trx INT NULL, -- adtb00020.num_trx (NULL = historico)
num_emp INT NOT NULL,
fecha_salida DATE NOT NULL,
cod_causa SMALLINT NOT NULL CONSTRAINT fk_adtb00062_causa REFERENCES dbo.adtb00061(cod_causa),
recontratable CHAR(1) NULL, -- S / N
detalle VARCHAR(200) NULL,
departamento SMALLINT NULL, -- foto al momento de la salida
cod_puesto SMALLINT NULL,
tipo_empleado VARCHAR(20) NULL, -- NORMAL / TEMPORERO
fech_ingreso DATE NULL,
origen CHAR(1) NOT NULL CONSTRAINT df_adtb00062_origen DEFAULT 'A', -- A accion, H historico
status_t CHAR(1) NULL, -- 'E' anulada
us_crea VARCHAR(50) NULL,
fech_crea DATETIME NULL,
us_mod VARCHAR(50) NULL,
fech_mod DATETIME NULL
);
CREATE INDEX ix_adtb00062_fecha ON dbo.adtb00062(fecha_salida) INCLUDE (num_emp, cod_causa, departamento, tipo_empleado, status_t);
CREATE INDEX ix_adtb00062_emp ON dbo.adtb00062(num_emp);
CREATE INDEX ix_adtb00062_trx ON dbo.adtb00062(num_trx);
END
GO
/* 3. El movimiento 4 DESVINCULAR queda con tipo_mov 'CANCELAR'
(adprmt017 reconoce CANCELAR, DESVINCULAR y TERMINO). No se cambia. */
/* 4. Rotacion mensual por departamento y tipo de empleado.
salidas_rotacion excluye causas con cuenta_rotacion = 'N'.
Plantilla = empleados con ingreso <= inicio de mes y sin salida antes del inicio. */
IF OBJECT_ID('dbo.vw_rotacion_mensual') IS NOT NULL
DROP VIEW dbo.vw_rotacion_mensual;
GO
CREATE VIEW dbo.vw_rotacion_mensual AS
WITH meses AS (
SELECT CAST('2022-01-01' AS DATE) AS ini
UNION ALL
SELECT DATEADD(MONTH, 1, ini) FROM meses WHERE ini < DATEADD(MONTH, -1, CAST(GETDATE() AS DATE))
),
emp AS (
SELECT a.num_emp, a.departamento, ISNULL(a.tipo_empleado,'NORMAL') AS tipo_empleado,
a.fech_efec, a.fecha_salida
FROM dbo.adtb00003 a
WHERE a.num_emp >= 39 -- fichas < 39 no son empleados reales
AND (a.status_t IS NULL OR a.status_t = 'D')
),
sal AS (
SELECT d.num_emp, d.fecha_salida, d.departamento, ISNULL(d.tipo_empleado,'NORMAL') AS tipo_empleado,
c.clase, c.cuenta_rotacion
FROM dbo.adtb00062 d JOIN dbo.adtb00061 c ON c.cod_causa = d.cod_causa
WHERE d.status_t IS NULL
)
SELECT m.ini AS mes,
YEAR(m.ini) AS anio,
MONTH(m.ini) AS mes_num,
g.departamento,
dp.nom_dpto,
g.tipo_empleado,
g.plantilla_inicio,
ISNULL(i.ingresos,0) AS ingresos,
ISNULL(s.salidas,0) AS salidas,
ISNULL(s.salidas_rotacion,0) AS salidas_rotacion,
ISNULL(s.voluntarias,0) AS voluntarias,
ISNULL(s.involuntarias,0) AS involuntarias,
ISNULL(s.otras,0) AS otras,
CASE WHEN g.plantilla_inicio > 0
THEN CAST(100.0 * ISNULL(s.salidas_rotacion,0) / g.plantilla_inicio AS DECIMAL(6,2)) END AS rotacion_pct
FROM meses m
CROSS APPLY (
SELECT e.departamento, e.tipo_empleado, COUNT(*) AS plantilla_inicio
FROM emp e
WHERE e.fech_efec <= m.ini AND (e.fecha_salida IS NULL OR e.fecha_salida >= m.ini)
GROUP BY e.departamento, e.tipo_empleado
) g
OUTER APPLY (
SELECT COUNT(*) AS ingresos FROM emp e
WHERE e.departamento = g.departamento AND e.tipo_empleado = g.tipo_empleado
AND e.fech_efec >= m.ini AND e.fech_efec < DATEADD(MONTH,1,m.ini)
) i
OUTER APPLY (
SELECT COUNT(*) AS salidas,
SUM(CASE WHEN x.cuenta_rotacion = 'S' THEN 1 ELSE 0 END) AS salidas_rotacion,
SUM(CASE WHEN x.clase = 'V' THEN 1 ELSE 0 END) AS voluntarias,
SUM(CASE WHEN x.clase = 'I' THEN 1 ELSE 0 END) AS involuntarias,
SUM(CASE WHEN x.clase = 'O' THEN 1 ELSE 0 END) AS otras
FROM sal x
WHERE x.departamento = g.departamento AND x.tipo_empleado = g.tipo_empleado
AND x.fecha_salida >= m.ini AND x.fecha_salida < DATEADD(MONTH,1,m.ini)
) s
LEFT JOIN dbo.adtb00001 dp ON dp.departamento = g.departamento;
GO
@@ -0,0 +1,34 @@
# ADPRMT017 – Desvinculación por Acción de Personal (2026-10-05)
Objetivo: el indicador de **Rotación** (mes a mes y por causa). La desactivación del empleado ahora se hace **solo** por la acción de personal.
## Antes
- **noprmt016** ("Activar/Desactivar") ponía `adtb00003.status_t = 'D'` sin fecha ni causa.
- En **noprmt003** RRHH escribía a mano la `fecha_salida` y el motivo en `observacion` (texto libre: "DESAHUCIO", "RENUNCIA 30/03/2026"...).
- En adprmt017 el movimiento 4 DESVINCULAR (`tipo_mov = 'CANCELAR'`) solo grababa `adtb00020`. El código esperaba `'TERMINO'`, que no existe, y además ese bloque estaba fuera de la transacción.
## Ahora
| Programa | Cambio |
|---|---|
| adprmt017 | DESVINCULAR (tipo CANCELAR, DESVINCULAR o TERMINO) abre la ventana `adfmwd018`: fecha de salida, causa (catálogo), si es recontratable y un detalle. Dentro de la misma transacción: inserta en `adtb00062` y actualiza `adtb00003` (`status_t='D'`, `fecha_salida`, y el motivo al **inicio** de `observacion`, conservando lo que ya había detrás). Si el empleado ya está en D, no deja continuar. |
| adprmt017 (eLiminar) | Anular una desvinculación nueva anula `adtb00062` y **reactiva** al empleado (status NULL, fecha_salida NULL) si no tiene otra salida vigente. Las acciones viejas, sin detalle, no reactivan a nadie. |
| noprmt016 | Se quitó la opción **Desactivar**. Se dejó **Activar** (para reingresos). |
| noprmt003 | `fecha_salida` salió de las 2 UPDATE activas y en `nofmmt003.4fd` quedó `noEntry` (compilar en GST). `observacion` sigue editable. |
## Tablas y vista (ya creadas en .40.8 / marmotech)
- `adtb00061` causas: 1 Renuncia, 2 Abandono, 3 Dimisión (V); 4 Desahucio, 5 Despido, 6 Cierre de operación, 7 Fin de contrato/temporada, 8 No superó prueba (I); 9 Mutuo acuerdo, 10 Pensión, 11 Fallecimiento, 12 Traslado dentro del grupo (`cuenta_rotacion = 'N'`), 99 Otra (O).
- `adtb00062` detalle: guarda una foto del departamento, el puesto, `tipo_empleado` (NORMAL/TEMPORERO) y la fecha de ingreso al momento de la salida.
- `vw_rotacion_mensual`: por mes, departamento y tipo de empleado: plantilla al inicio, ingresos, salidas, salidas que cuentan para rotación, voluntarias, involuntarias, otras y % de rotación. Usa un CTE recursivo desde 2022, que llega al límite de 100 meses en 2030.
## Histórico (pendiente de aprobación)
`adprmt017_desvinculacion_historico.sql` clasifica las salidas desde 2022 leyendo `observacion`. Vista previa (con rollback): 686 salidas → Desahucio 342, Renuncia 127, Abandono 31, Cierre 8, Fallecimiento 7, Traslado 3, Fin de contrato 2, Prueba 1, Pensión 1, **Otra 164** (sin texto o sin causa reconocible). Para deshacer: `DELETE FROM adtb00062 WHERE origen='H'`.
## Temporeros
Solo 2 empleados tienen `tipo_empleado = 'TEMPORERO'`. Para medir la entrada y salida de temporeros, RRHH tiene que marcarlos en la maestra (noprmt003). La vista ya los separa.
## Backups
- `addir\backup_adprmt017_20261005\`: original y `adprmt017_con_capacitacion.4gl`, que es la versión intermedia.
- `nodir\backup_noprmt003_016_20261005\`: noprmt003, noprmt016, sus formas y binarios.
## Despliegue
Copiar a `PROYECTO\bin` (todo compilado con 3.20): `adprmt017.42m`, `adfmwd017.42f`, `adfmwd018.42f`, `noprmt003.42m`, `noprmt016.42m`, y el `nofmmt003.42f` que se genere en GST.
@@ -0,0 +1,44 @@
/* ------------------------------------------------------------------
Carga historica de salidas (2022 en adelante) en adtb00062
desde adtb00003 (status_t = 'D' + fecha_salida + observacion libre).
origen = 'H'. Para deshacer: DELETE FROM adtb00062 WHERE origen = 'H'
Correr DESPUES de adprmt017_desvinculacion.sql. Idempotente.
------------------------------------------------------------------- */
SET NOCOUNT ON;
;WITH h AS (
SELECT a.num_emp, a.fecha_salida, a.departamento, a.cod_puesto,
ISNULL(a.tipo_empleado,'NORMAL') AS tipo_empleado, a.fech_efec,
UPPER(ISNULL(a.observacion,'')) AS obs
FROM dbo.adtb00003 a
WHERE a.status_t = 'D'
AND a.fecha_salida >= '2022-01-01'
AND a.num_emp >= 39
AND NOT EXISTS (SELECT 1 FROM dbo.adtb00062 d WHERE d.num_emp = a.num_emp AND d.fecha_salida = a.fecha_salida)
)
INSERT INTO dbo.adtb00062 (num_trx, num_emp, fecha_salida, cod_causa, recontratable, detalle,
departamento, cod_puesto, tipo_empleado, fech_ingreso, origen, us_crea, fech_crea)
SELECT NULL, h.num_emp, h.fecha_salida,
CASE WHEN h.obs LIKE '%CAMBIO DE EMPRESA%' OR h.obs LIKE '%CAMBIO A ORDEL%'
OR h.obs LIKE '%CAMBIO A CARIBBEAN%' OR h.obs LIKE '%TRASLAD%' THEN 12
WHEN h.obs LIKE '%CIERRE%' THEN 6
WHEN h.obs LIKE '%DESAHUCIO%' THEN 4
WHEN h.obs LIKE '%DESPID%' THEN 5
WHEN h.obs LIKE '%RENUNCIA%' THEN 1
WHEN h.obs LIKE '%ABANDONO%' THEN 2
WHEN h.obs LIKE '%DIMISION%' THEN 3
WHEN h.obs LIKE '%3 MESES%' OR h.obs LIKE '%PRUEBA%' THEN 8
WHEN h.obs LIKE '%FIN DE CONTRATO%' OR h.obs LIKE '%TEMPORADA%' THEN 7
WHEN h.obs LIKE '%MUTUO%' THEN 9
WHEN h.obs LIKE '%PENSION%' OR h.obs LIKE '%RETIRO%' THEN 10
WHEN h.obs LIKE '%FALLEC%' THEN 11
ELSE 99 END,
CASE WHEN h.obs LIKE '%NO REINGRESO%' OR h.obs LIKE '%NO RECONTRAT%' THEN 'N' END,
LEFT(NULLIF(LTRIM(RTRIM(h.obs)),''), 200),
h.departamento, h.cod_puesto, h.tipo_empleado, h.fech_efec, 'H', SUSER_SNAME(), GETDATE()
FROM h;
SELECT c.desc_causa, COUNT(*) n
FROM dbo.adtb00062 d JOIN dbo.adtb00061 c ON c.cod_causa = d.cod_causa
WHERE d.origen = 'H'
GROUP BY c.desc_causa ORDER BY 2 DESC;
+276
View File
@@ -0,0 +1,276 @@
{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP048
OBJETIVO : Horas de capacitacion por colaborador (indicador RRHH).
Por colaborador: cada capacitacion REQUERIDA con sus
horas y, debajo, las TOMADAS que la cubren; luego las
tomadas no planificadas. Totales por colaborador y
generales con % de cumplimiento.
Datos: adtb00060 (detalle) / adtb00059 (catalogo),
registrados por ADPRMT017 (Accion de Personal).
FECHA REALIZACION : Octubre 05, 2026
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
DEFINE p RECORD
fecha_ini DATE,
fecha_fin DATE,
departamento SMALLINT,
num_emp INTEGER,
solo_pend CHAR(1)
END RECORD
DEFINE filtros VARCHAR(200)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL adprrp048()
END MAIN
FUNCTION adprrp048()
DEFINE x RECORD
num_emp INTEGER,
empleado VARCHAR(60),
nom_dpto VARCHAR(40),
nom_puesto VARCHAR(40),
fila VARCHAR(20),
nom_cap VARCHAR(100),
tipo_evento VARCHAR(15),
fecha_ini DATE,
fecha_fin DATE,
h_req DECIMAL(8,2),
h_tom DECIMAL(8,2),
h_pend DECIMAL(8,2),
h_tom_t DECIMAL(8,2),
institucion VARCHAR(100)
END RECORD
DEFINE cb ui.ComboBox,
xdep SMALLINT,
xnom VARCHAR(40),
nfilas INTEGER
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM adfmrp048 FROM "adfmrp048"
DISPLAY FORM adfmrp048
LET cb = ui.ComboBox.forName("formonly.departamento")
CALL cb.clear()
CALL cb.addItem(0, "TODOS")
DECLARE c_dep48 CURSOR FOR
SELECT a.departamento, a.nom_dpto FROM adtb00001 a
WHERE a.status_t IS NULL ORDER BY a.nom_dpto
FOREACH c_dep48 INTO xdep, xnom
CALL cb.addItem(xdep, xnom CLIPPED)
END FOREACH
LET p.fecha_ini = MDY(1, 1, YEAR(TODAY))
LET p.fecha_fin = MDY(12, 31, YEAR(TODAY))
LET p.departamento = 0
LET p.num_emp = NULL -- variable de modulo: arranca en 0, no en NULL
LET p.solo_pend = "N"
INPUT BY NAME p.* WITHOUT DEFAULTS ATTRIBUTE(UNBUFFERED)
AFTER INPUT
IF int_flag THEN
EXIT INPUT
END IF
IF p.fecha_ini IS NULL OR p.fecha_fin IS NULL OR p.fecha_fin < p.fecha_ini THEN
CALL fgl_winmessage("INFO","REVISE EL RANGO DE FECHAS","info")
NEXT FIELD fecha_ini
END IF
END INPUT
IF int_flag THEN
LET int_flag = FALSE
CALL msg(2)
RETURN
END IF
----------------------------------------------------------------------
-- Filas: R (requerida, con lo tomado acumulado), T ligada (debajo de su
-- requerida) y T no planificada (al final). El rango de fechas se mide
-- sobre la fecha de inicio de la requerida (o de la tomada si no tiene).
----------------------------------------------------------------------
LET selec =
"SELECT e.num_emp, ",
" RTRIM(e.nom1_emp)+' '+RTRIM(e.apell1_emp)+ISNULL(' '+RTRIM(e.apell2_emp),''), ",
" ISNULL(d.nom_dpto,''), ISNULL(pu.nom_puesto,''), ",
" CASE WHEN r.tipo_reg = 'R' THEN 'REQUERIDA' ",
" WHEN r.id_requerida IS NOT NULL THEN ' TOMADA' ",
" ELSE 'NO PLANIFICADA' END, ",
" c.nom_cap, ",
" CASE c.evento WHEN 1 THEN 'SEMINARIO' WHEN 2 THEN 'CURSO' ",
" WHEN 3 THEN 'TALLER' WHEN 4 THEN 'CONFERENCIA' ELSE '' END, ",
" r.fecha_ini, r.fecha_fin, ",
" CASE WHEN r.tipo_reg = 'R' THEN ISNULL(r.horas_req,0) END, ",
" CASE WHEN r.tipo_reg = 'R' THEN ISNULL(t.tom,0) ELSE ISNULL(r.horas_tom,0) END, ",
" CASE WHEN r.tipo_reg = 'R' THEN ",
" CASE WHEN ISNULL(r.horas_req,0) - ISNULL(t.tom,0) > 0 ",
" THEN ISNULL(r.horas_req,0) - ISNULL(t.tom,0) ELSE 0 END END, ",
" CASE WHEN r.tipo_reg = 'T' THEN ISNULL(r.horas_tom,0) ELSE 0 END, ",
" ISNULL(r.institucion,'') ",
"FROM adtb00060 r ",
" JOIN adtb00059 c ON c.cod_cap = r.cod_cap ",
" JOIN adtb00003 e ON e.num_emp = r.num_emp ",
" LEFT JOIN adtb00001 d ON d.departamento = e.departamento ",
" LEFT JOIN adtb00004 pu ON pu.cod_puesto = e.cod_puesto ",
" LEFT JOIN adtb00060 q ON q.id_cap = r.id_requerida ",
" LEFT JOIN (SELECT id_requerida, SUM(horas_tom) tom FROM adtb00060 ",
" WHERE tipo_reg = 'T' AND status_t IS NULL AND id_requerida IS NOT NULL ",
" GROUP BY id_requerida) t ON t.id_requerida = r.id_cap ",
"WHERE r.status_t IS NULL ",
" AND ISNULL(q.fecha_ini, r.fecha_ini) BETWEEN ? AND ? "
LET filtros = "Periodo: ", p.fecha_ini USING "dd/mm/yyyy", " al ", p.fecha_fin USING "dd/mm/yyyy"
IF p.departamento IS NOT NULL AND p.departamento <> 0 THEN
LET selec = selec, " AND e.departamento = ", p.departamento USING "<<<<&"
SELECT a.nom_dpto INTO xnom FROM adtb00001 a WHERE a.departamento = p.departamento
LET filtros = filtros CLIPPED, " Departamento: ", xnom CLIPPED
ELSE
LET filtros = filtros CLIPPED, " Departamento: TODOS"
END IF
IF p.num_emp IS NOT NULL AND p.num_emp <> 0 THEN
LET selec = selec, " AND e.num_emp = ", p.num_emp USING "<<<<<<&"
LET filtros = filtros CLIPPED, " Ficha: ", p.num_emp USING "<<<<<<&"
END IF
IF p.solo_pend = "S" THEN
LET selec = selec,
" AND EXISTS (SELECT 1 FROM adtb00060 r2 ",
" LEFT JOIN (SELECT id_requerida, SUM(horas_tom) tom FROM adtb00060 ",
" WHERE tipo_reg = 'T' AND status_t IS NULL GROUP BY id_requerida) t2 ",
" ON t2.id_requerida = r2.id_cap ",
" WHERE r2.num_emp = r.num_emp AND r2.tipo_reg = 'R' AND r2.status_t IS NULL ",
" AND r2.fecha_ini BETWEEN ? AND ? ",
" AND ISNULL(r2.horas_req,0) - ISNULL(t2.tom,0) > 0) "
LET filtros = filtros CLIPPED, " Solo con pendientes"
END IF
LET selec = selec,
" ORDER BY ISNULL(d.nom_dpto,''), 2, e.num_emp, ",
" CASE WHEN r.tipo_reg = 'T' AND r.id_requerida IS NULL THEN 1 ELSE 0 END, ",
" ISNULL(r.id_requerida, r.id_cap), ",
" CASE WHEN r.tipo_reg = 'R' THEN 0 ELSE 1 END, r.fecha_ini"
PREPARE p_rep48 FROM selec
DECLARE c_rep48 CURSOR FOR p_rep48
-- Configuracion del motor de reportes (.4rp)
LET r_filename = "adprrp048.4rp"
LET preview = TRUE
IF NOT fgl_report_loadCurrentSettings(r_filename) THEN
CALL fgl_winmessage("INFO","No se pudo cargar el diseno adprrp048.4rp","stop")
RETURN
END IF
CALL seleccionarSalida() RETURNING r_output
CALL fgl_report_selectDevice(r_output)
CALL fgl_report_selectPreview(preview)
IF r_output = "XLSX" THEN
CALL fgl_report_configurexlsxdevice(NULL,NULL,NULL,FALSE,FALSE,NULL,1)
END IF
LET handler = fgl_report_commitCurrentSettings()
IF handler IS NULL THEN
RETURN
END IF
LET nfilas = 0
START REPORT capacitacion TO XML HANDLER handler
IF p.solo_pend = "S" THEN
OPEN c_rep48 USING p.fecha_ini, p.fecha_fin, p.fecha_ini, p.fecha_fin
ELSE
OPEN c_rep48 USING p.fecha_ini, p.fecha_fin
END IF
WHILE TRUE
FETCH c_rep48 INTO x.*
IF STATUS = NOTFOUND THEN
EXIT WHILE
END IF
LET nfilas = nfilas + 1
OUTPUT TO REPORT capacitacion(x.*)
END WHILE
CLOSE c_rep48
FINISH REPORT capacitacion
IF nfilas = 0 THEN
CALL fgl_winmessage("INFO","No hay capacitaciones registradas con esos parametros","info")
END IF
END FUNCTION
FUNCTION pct48(a, b)
DEFINE a, b DECIMAL(10,2)
IF b IS NULL OR b = 0 THEN
RETURN 0
END IF
RETURN (a / b) * 100
END FUNCTION
REPORT capacitacion(x)
DEFINE x RECORD
num_emp INTEGER,
empleado VARCHAR(60),
nom_dpto VARCHAR(40),
nom_puesto VARCHAR(40),
fila VARCHAR(20),
nom_cap VARCHAR(100),
tipo_evento VARCHAR(15),
fecha_ini DATE,
fecha_fin DATE,
h_req DECIMAL(8,2),
h_tom DECIMAL(8,2),
h_pend DECIMAL(8,2),
h_tom_t DECIMAL(8,2),
institucion VARCHAR(100)
END RECORD
DEFINE fecha_rep CHAR(10),
hora CHAR(8),
fini, ffin CHAR(10),
g_req, g_tom, g_pend, g_cumpl DECIMAL(10,2),
t_req, t_tom, t_pend, t_cumpl DECIMAL(10,2),
t_emp INTEGER
ORDER EXTERNAL BY x.num_emp
FORMAT
FIRST PAGE HEADER
LET fecha_rep = TODAY USING "dd/mm/yyyy"
LET hora = CURRENT HOUR TO SECOND
LET t_emp = 0
PRINTX p_companias.nombre, fecha_rep, hora, filtros
BEFORE GROUP OF x.num_emp
LET t_emp = t_emp + 1
PRINTX x.num_emp, x.empleado, x.nom_dpto, x.nom_puesto
ON EVERY ROW
LET fini = x.fecha_ini USING "dd/mm/yyyy"
LET ffin = x.fecha_fin USING "dd/mm/yyyy"
PRINTX x.fila, x.nom_cap, x.tipo_evento, fini, ffin,
x.h_req, x.h_tom, x.h_pend, x.institucion
AFTER GROUP OF x.num_emp
LET g_req = GROUP SUM(x.h_req)
LET g_tom = GROUP SUM(x.h_tom_t)
LET g_pend = GROUP SUM(x.h_pend)
IF g_req IS NULL THEN LET g_req = 0 END IF
IF g_tom IS NULL THEN LET g_tom = 0 END IF
IF g_pend IS NULL THEN LET g_pend = 0 END IF
LET g_cumpl = pct48(g_req - g_pend, g_req)
PRINTX g_req, g_tom, g_pend, g_cumpl
ON LAST ROW
LET t_req = SUM(x.h_req)
LET t_tom = SUM(x.h_tom_t)
LET t_pend = SUM(x.h_pend)
IF t_req IS NULL THEN LET t_req = 0 END IF
IF t_tom IS NULL THEN LET t_tom = 0 END IF
IF t_pend IS NULL THEN LET t_pend = 0 END IF
LET t_cumpl = pct48(t_req - t_pend, t_req)
PRINTX t_emp, t_req, t_tom, t_pend, t_cumpl
END REPORT
+354
View File
@@ -0,0 +1,354 @@
{
-------------------------------------------------------------------------------
PROGRAMA : ADPRRP049
OBJETIVO : Rotacion laboral (indicador RRHH).
R = Resumen mensual: plantilla al inicio del mes,
ingresos, salidas (voluntarias / involuntarias /
otras) y % de rotacion; total y rotacion anual.
D = Detalle de salidas agrupado por causa.
Datos: vista vw_rotacion_mensual y adtb00062/adtb00061
(desvinculaciones registradas por ADPRMT017; historico
2022+ cargado con origen 'H').
Rotacion % = salidas que cuentan para rotacion /
plantilla al inicio (los traslados dentro del grupo
no cuentan). Anual = salidas del ano / plantilla
promedio de los meses del ano.
FECHA REALIZACION : Octubre 05, 2026
-------------------------------------------------------------------------------
}
GLOBALS "adprgb000.4gl"
DEFINE p RECORD
ano_ini SMALLINT,
ano_fin SMALLINT,
departamento SMALLINT,
tipo_emp VARCHAR(10),
formato CHAR(1)
END RECORD
DEFINE filtros VARCHAR(200)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL adprrp049()
END MAIN
FUNCTION adprrp049()
DEFINE cb ui.ComboBox,
xdep SMALLINT,
xnom VARCHAR(40)
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM adfmrp049 FROM "adfmrp049"
DISPLAY FORM adfmrp049
LET cb = ui.ComboBox.forName("formonly.departamento")
CALL cb.clear()
CALL cb.addItem(0, "TODOS")
DECLARE c_dep49 CURSOR FOR
SELECT a.departamento, a.nom_dpto FROM adtb00001 a
WHERE a.status_t IS NULL ORDER BY a.nom_dpto
FOREACH c_dep49 INTO xdep, xnom
CALL cb.addItem(xdep, xnom CLIPPED)
END FOREACH
LET p.ano_ini = YEAR(TODAY) - 1
LET p.ano_fin = YEAR(TODAY)
LET p.departamento = 0
LET p.tipo_emp = "TODOS"
LET p.formato = "R"
INPUT BY NAME p.* WITHOUT DEFAULTS ATTRIBUTE(UNBUFFERED)
AFTER INPUT
IF int_flag THEN
EXIT INPUT
END IF
IF p.ano_ini IS NULL OR p.ano_fin IS NULL OR p.ano_fin < p.ano_ini
OR p.ano_ini < 2022 THEN
CALL fgl_winmessage("INFO","REVISE LOS ANOS (EL HISTORICO EMPIEZA EN 2022)","info")
NEXT FIELD ano_ini
END IF
END INPUT
IF int_flag THEN
LET int_flag = FALSE
CALL msg(2)
RETURN
END IF
LET filtros = "Anos: ", p.ano_ini USING "<<<<", " a ", p.ano_fin USING "<<<<"
IF p.departamento IS NOT NULL AND p.departamento <> 0 THEN
SELECT a.nom_dpto INTO xnom FROM adtb00001 a WHERE a.departamento = p.departamento
LET filtros = filtros CLIPPED, " Departamento: ", xnom CLIPPED
ELSE
LET filtros = filtros CLIPPED, " Departamento: TODOS"
END IF
LET filtros = filtros CLIPPED, " Tipo de empleado: ", p.tipo_emp CLIPPED
IF p.formato = "D" THEN
LET r_filename = "adprrp049d.4rp"
ELSE
LET r_filename = "adprrp049.4rp"
END IF
LET preview = TRUE
IF NOT fgl_report_loadCurrentSettings(r_filename) THEN
CALL fgl_winmessage("INFO","No se pudo cargar el diseno " || r_filename CLIPPED,"stop")
RETURN
END IF
CALL seleccionarSalida() RETURNING r_output
CALL fgl_report_selectDevice(r_output)
CALL fgl_report_selectPreview(preview)
IF r_output = "XLSX" THEN
CALL fgl_report_configurexlsxdevice(NULL,NULL,NULL,FALSE,FALSE,NULL,1)
END IF
LET handler = fgl_report_commitCurrentSettings()
IF handler IS NULL THEN
RETURN
END IF
IF p.formato = "D" THEN
CALL detalle_salidas()
ELSE
CALL resumen_mensual()
END IF
END FUNCTION
## R: UNA FILA POR MES (SUMA DE LOS DEPARTAMENTOS / TIPOS FILTRADOS)
FUNCTION resumen_mensual()
DEFINE x RECORD
anio SMALLINT,
mes_num SMALLINT,
mes_nom VARCHAR(12),
plantilla INTEGER,
ingresos INTEGER,
salidas INTEGER,
salidas_rot INTEGER,
voluntarias INTEGER,
involuntarias INTEGER,
otras INTEGER,
rot_pct DECIMAL(8,2)
END RECORD
DEFINE n INTEGER
LET selec =
"SELECT anio, mes_num, SUM(plantilla_inicio), SUM(ingresos), SUM(salidas), ",
" SUM(salidas_rotacion), SUM(voluntarias), SUM(involuntarias), SUM(otras) ",
"FROM vw_rotacion_mensual WHERE anio BETWEEN ? AND ? "
IF p.departamento IS NOT NULL AND p.departamento <> 0 THEN
LET selec = selec, " AND departamento = ", p.departamento USING "<<<<&"
END IF
IF p.tipo_emp <> "TODOS" THEN
LET selec = selec, " AND tipo_empleado = '", p.tipo_emp CLIPPED, "'"
END IF
LET selec = selec, " GROUP BY anio, mes_num ORDER BY anio, mes_num"
PREPARE p_res49 FROM selec
DECLARE c_res49 CURSOR FOR p_res49
LET n = 0
START REPORT rotacion TO XML HANDLER handler
FOREACH c_res49 USING p.ano_ini, p.ano_fin
INTO x.anio, x.mes_num, x.plantilla, x.ingresos, x.salidas,
x.salidas_rot, x.voluntarias, x.involuntarias, x.otras
LET n = n + 1
LET x.mes_nom = nombre_mes(x.mes_num)
LET x.rot_pct = pct49(x.salidas_rot, x.plantilla)
OUTPUT TO REPORT rotacion(x.*)
END FOREACH
FINISH REPORT rotacion
IF n = 0 THEN
CALL fgl_winmessage("INFO","No hay datos con esos parametros","info")
END IF
END FUNCTION
## D: DETALLE DE SALIDAS AGRUPADO POR CAUSA
FUNCTION detalle_salidas()
DEFINE y RECORD
clase VARCHAR(15),
cod_causa SMALLINT,
desc_causa VARCHAR(60),
fecha_sal DATE,
num_emp INTEGER,
empleado VARCHAR(60),
nom_dpto VARCHAR(40),
nom_puesto VARCHAR(40),
tipo_emp VARCHAR(20),
meses INTEGER,
recont VARCHAR(3),
detalle VARCHAR(200)
END RECORD
DEFINE n INTEGER
LET selec =
"SELECT CASE c.clase WHEN 'V' THEN 'VOLUNTARIA' WHEN 'I' THEN 'INVOLUNTARIA' ELSE 'OTRA' END, ",
" c.cod_causa, c.desc_causa, d.fecha_salida, d.num_emp, ",
" RTRIM(e.nom1_emp)+' '+RTRIM(e.apell1_emp)+ISNULL(' '+RTRIM(e.apell2_emp),''), ",
" ISNULL(dp.nom_dpto,''), ISNULL(pu.nom_puesto,''), ISNULL(d.tipo_empleado,'NORMAL'), ",
" CASE WHEN d.fech_ingreso IS NULL THEN NULL ELSE DATEDIFF(month, d.fech_ingreso, d.fecha_salida) END, ",
" CASE d.recontratable WHEN 'S' THEN 'SI' WHEN 'N' THEN 'NO' ELSE '' END, ",
" ISNULL(d.detalle,'') ",
"FROM adtb00062 d ",
" JOIN adtb00061 c ON c.cod_causa = d.cod_causa ",
" JOIN adtb00003 e ON e.num_emp = d.num_emp ",
" LEFT JOIN adtb00001 dp ON dp.departamento = d.departamento ",
" LEFT JOIN adtb00004 pu ON pu.cod_puesto = d.cod_puesto ",
"WHERE d.status_t IS NULL AND YEAR(d.fecha_salida) BETWEEN ? AND ? "
IF p.departamento IS NOT NULL AND p.departamento <> 0 THEN
LET selec = selec, " AND d.departamento = ", p.departamento USING "<<<<&"
END IF
IF p.tipo_emp <> "TODOS" THEN
LET selec = selec, " AND ISNULL(d.tipo_empleado,'NORMAL') = '", p.tipo_emp CLIPPED, "'"
END IF
LET selec = selec,
" ORDER BY CASE c.clase WHEN 'V' THEN 1 WHEN 'I' THEN 2 ELSE 3 END, c.cod_causa, d.fecha_salida"
PREPARE p_det49 FROM selec
DECLARE c_det49 CURSOR FOR p_det49
LET n = 0
START REPORT salidas TO XML HANDLER handler
FOREACH c_det49 USING p.ano_ini, p.ano_fin INTO y.*
LET n = n + 1
OUTPUT TO REPORT salidas(y.*)
END FOREACH
FINISH REPORT salidas
IF n = 0 THEN
CALL fgl_winmessage("INFO","No hay salidas con esos parametros","info")
END IF
END FUNCTION
FUNCTION nombre_mes(m)
DEFINE m SMALLINT
CASE m
WHEN 1 RETURN "ENERO"
WHEN 2 RETURN "FEBRERO"
WHEN 3 RETURN "MARZO"
WHEN 4 RETURN "ABRIL"
WHEN 5 RETURN "MAYO"
WHEN 6 RETURN "JUNIO"
WHEN 7 RETURN "JULIO"
WHEN 8 RETURN "AGOSTO"
WHEN 9 RETURN "SEPTIEMBRE"
WHEN 10 RETURN "OCTUBRE"
WHEN 11 RETURN "NOVIEMBRE"
WHEN 12 RETURN "DICIEMBRE"
END CASE
RETURN NULL
END FUNCTION
FUNCTION pct49(a, b)
DEFINE a, b DECIMAL(12,2)
IF b IS NULL OR b = 0 OR a IS NULL THEN
RETURN 0
END IF
RETURN (a / b) * 100
END FUNCTION
REPORT rotacion(x)
DEFINE x RECORD
anio SMALLINT,
mes_num SMALLINT,
mes_nom VARCHAR(12),
plantilla INTEGER,
ingresos INTEGER,
salidas INTEGER,
salidas_rot INTEGER,
voluntarias INTEGER,
involuntarias INTEGER,
otras INTEGER,
rot_pct DECIMAL(8,2)
END RECORD
DEFINE fecha_rep CHAR(10),
hora CHAR(8),
a_plant DECIMAL(10,2),
a_ing, a_sal, a_rot, a_vol, a_inv, a_otr INTEGER,
a_pct DECIMAL(8,2),
t_ing, t_sal, t_vol, t_inv, t_otr INTEGER
ORDER EXTERNAL BY x.anio
FORMAT
FIRST PAGE HEADER
LET fecha_rep = TODAY USING "dd/mm/yyyy"
LET hora = CURRENT HOUR TO SECOND
PRINTX p_companias.nombre, fecha_rep, hora, filtros
BEFORE GROUP OF x.anio
PRINTX x.anio
ON EVERY ROW
PRINTX x.mes_nom, x.plantilla, x.ingresos, x.salidas, x.voluntarias,
x.involuntarias, x.otras, x.rot_pct
AFTER GROUP OF x.anio
LET a_plant = GROUP AVG(x.plantilla)
LET a_ing = GROUP SUM(x.ingresos)
LET a_sal = GROUP SUM(x.salidas)
LET a_rot = GROUP SUM(x.salidas_rot)
LET a_vol = GROUP SUM(x.voluntarias)
LET a_inv = GROUP SUM(x.involuntarias)
LET a_otr = GROUP SUM(x.otras)
LET a_pct = pct49(a_rot, a_plant)
PRINTX a_plant, a_ing, a_sal, a_vol, a_inv, a_otr, a_pct
ON LAST ROW
LET t_ing = SUM(x.ingresos)
LET t_sal = SUM(x.salidas)
LET t_vol = SUM(x.voluntarias)
LET t_inv = SUM(x.involuntarias)
LET t_otr = SUM(x.otras)
PRINTX t_ing, t_sal, t_vol, t_inv, t_otr
END REPORT
REPORT salidas(y)
DEFINE y RECORD
clase VARCHAR(15),
cod_causa SMALLINT,
desc_causa VARCHAR(60),
fecha_sal DATE,
num_emp INTEGER,
empleado VARCHAR(60),
nom_dpto VARCHAR(40),
nom_puesto VARCHAR(40),
tipo_emp VARCHAR(20),
meses INTEGER,
recont VARCHAR(3),
detalle VARCHAR(200)
END RECORD
DEFINE fecha_rep CHAR(10),
hora CHAR(8),
fsal CHAR(10),
g_cant, t_cant INTEGER
ORDER EXTERNAL BY y.cod_causa
FORMAT
FIRST PAGE HEADER
LET fecha_rep = TODAY USING "dd/mm/yyyy"
LET hora = CURRENT HOUR TO SECOND
PRINTX p_companias.nombre, fecha_rep, hora, filtros
BEFORE GROUP OF y.cod_causa
PRINTX y.desc_causa, y.clase
ON EVERY ROW
LET fsal = y.fecha_sal USING "dd/mm/yyyy"
PRINTX fsal, y.num_emp, y.empleado, y.nom_dpto, y.nom_puesto,
y.tipo_emp, y.meses, y.recont, y.detalle
AFTER GROUP OF y.cod_causa
LET g_cant = GROUP COUNT(*)
PRINTX g_cant
ON LAST ROW
LET t_cant = COUNT(*)
PRINTX t_cant
END REPORT
@@ -0,0 +1,160 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ManagedForm databaseName="smarmotech" fileVersion="31400" gstVersion="31408" name="ManagedForm" uid="{a549c11f-213c-4b69-ba25-7ba8e81abe58}">
<AGSettings>
<DynamicProperties version="2"/>
</AGSettings>
<Record additionalTables="" joinLeft="" joinOperator="" joinRight="" name="Undefined" order="" uid="{7d471b21-63f0-43b8-a8d9-f13f84ba45e9}" where="">
<RecordField colName="cod_mto" defaultValue="1" fieldIdRef="2" fieldType="TABLE_COLUMN" name="adtb00020.cod_mto" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{c1910f49-63bc-4f6d-aa7a-a0a56830d12e}"/>
<RecordField colName="num_trx" fieldIdRef="5" fieldType="TABLE_COLUMN" name="adtb00020.num_trx" sqlTabName="adtb00020" sqlType="INTEGER" table_alias_name="" uid="{bad78dcd-5ecc-4f0c-903b-9c1f60503f44}"/>
<RecordField colName="cod_sol" fieldIdRef="6" fieldType="TABLE_COLUMN" name="adtb00020.cod_sol" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{a37cf6ad-6034-41ba-a4ae-b4332f7cb2c5}"/>
<RecordField colName="fecha" fieldIdRef="7" fieldType="TABLE_COLUMN" name="adtb00020.fecha" sqlTabName="adtb00020" sqlType="DATE" table_alias_name="" uid="{e6e8db60-eca0-4f4f-a4a2-90b6113426bc}"/>
<RecordField colName="fech_efec" fieldIdRef="8" fieldType="TABLE_COLUMN" name="adtb00020.fech_efec" sqlTabName="adtb00020" sqlType="DATE" table_alias_name="" uid="{169afb14-f444-4974-9265-4b473bdbdadd}"/>
<RecordField colName="pnis" fieldIdRef="0" name="pnis" sqlTabName="formonly" table_alias_name="" uid="{1aaeb140-d426-4d15-b612-26047d56b5f8}"/>
<RecordField colName="num_emp" fieldIdRef="9" fieldType="TABLE_COLUMN" name="adtb00020.num_emp" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{cb242072-b73c-4429-8920-3e37e4146e79}"/>
<RecordField colName="departamento" fieldIdRef="10" fieldType="TABLE_COLUMN" name="adtb00020.departamento" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{52724440-1489-4cb1-9516-57a814edfb29}"/>
<RecordField colName="nivel_emp" fieldIdRef="11" fieldType="TABLE_COLUMN" name="adtb00020.nivel_emp" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{cd972710-19a7-4371-87c1-689f9968b674}"/>
<RecordField colName="cod_puesto" fieldIdRef="12" fieldType="TABLE_COLUMN" name="adtb00020.cod_puesto" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{7d817b85-b333-4438-935d-b6f72f34308a}"/>
<RecordField colName="cedula" fieldIdRef="13" name="cedula" sqlTabName="formonly" table_alias_name="" uid="{942edd09-4d6c-4266-beb6-a06177c87c4b}"/>
<RecordField colName="cuenta_no" fieldIdRef="1" fieldType="TABLE_COLUMN" name="adtb00003.cuenta_no" sqlTabName="adtb00003" sqlType="VARCHAR" table_alias_name="" uid="{f48e2a21-0619-46dd-bb71-71efdf9f5ca5}"/>
<RecordField colName="descrip1" fieldIdRef="14" name="descrip1" sqlTabName="formonly" table_alias_name="" uid="{58277d32-b999-4232-bfa3-5c1e29875d75}"/>
<RecordField colName="descrip2" fieldIdRef="15" name="descrip2" sqlTabName="formonly" table_alias_name="" uid="{ed02fb7a-54b2-49cb-8f23-c822fbf31ceb}"/>
<RecordField colName="nombre_dpto" fieldIdRef="16" name="nombre_dpto" sqlTabName="formonly" table_alias_name="" uid="{7f62e7e2-a2b0-46e2-a69a-c46213a82610}"/>
<RecordField colName="nom_puesto" fieldIdRef="17" fieldType="TABLE_COLUMN" name="adtb00004.nom_puesto" sqlTabName="adtb00004" sqlType="CHAR" table_alias_name="" uid="{023d641d-52e3-439a-9fa0-5cbee4d2f579}"/>
<RecordField colName="sueldo_ac" fieldIdRef="18" fieldType="TABLE_COLUMN" name="adtb00020.sueldo_ac" precisionDecimal="10" scaleDecimal="2" sqlTabName="adtb00020" sqlType="DECIMAL" table_alias_name="" uid="{9c3607a4-0061-45b5-846a-d2a4a8c5d5f6}"/>
<RecordField colName="" fieldIdRef="19" fieldType="NON_DATABASE" name="nomina" sqlTabName="" sqlType="CHAR" table_alias_name="" uid="{40a9f585-d0d3-4743-a0c5-1f1ae112d230}"/>
<RecordField colName="estado_civil" defaultValue="U" fieldIdRef="21" fieldType="TABLE_COLUMN" name="adtb00003.estado_civil" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{28c263a5-ee09-4d8b-993d-92d7d84c455a}"/>
<RecordField colName="sexo" defaultValue="F" fieldIdRef="40" name="sexo" sqlTabName="formonly" sqlType="CHAR" table_alias_name="" uid="{94e4714a-3064-43a3-9045-c91a7081c93e}"/>
<RecordField colName="tipo_sangre" defaultValue="AB+" fieldIdRef="23" fieldType="TABLE_COLUMN" name="adtb00012.tipo_sangre" sqlTabName="adtb00012" sqlType="CHAR" table_alias_name="" uid="{48ededba-cbcb-40c6-9b48-adbbdc5de259}"/>
<RecordField colName="sueldo_lq" defaultValue="0" fieldIdRef="42" name="sueldo_lq" precisionDecimal="12" scaleDecimal="2" sqlTabName="formonly" sqlType="DECIMAL" table_alias_name="" uid="{b5e885ec-de5f-4de8-ab56-0f0466d82bb3}"/>
<RecordField colName="observacion" fieldIdRef="24" fieldType="TABLE_COLUMN" name="adtb00020.observacion" sqlTabName="adtb00020" sqlType="CHAR" table_alias_name="" uid="{c84f4da4-673b-4935-89dd-170371ee0b6d}"/>
<RecordField colName="num1_emp" fieldIdRef="25" fieldType="TABLE_COLUMN" name="adtb00020.num1_emp" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{f83c838d-f907-4c8b-abaf-f4eee1eb62ee}"/>
<RecordField colName="departamento1" fieldIdRef="26" fieldType="TABLE_COLUMN" name="adtb00020.departamento1" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{03c26a0c-5471-48c1-8b6c-fed247129b95}"/>
<RecordField colName="nivel1_emp" fieldIdRef="27" fieldType="TABLE_COLUMN" name="adtb00020.nivel1_emp" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{ce9714aa-f0ac-45a7-baec-73c070650df6}"/>
<RecordField colName="cod1_puesto" fieldIdRef="28" fieldType="TABLE_COLUMN" name="adtb00020.cod1_puesto" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{6c3f6861-ca38-4b80-a3ed-01729c29a1e3}"/>
<RecordField colName="descrip3" fieldIdRef="29" name="descrip3" sqlTabName="formonly" table_alias_name="" uid="{4898d4f5-1654-47f8-9cdd-718988bbd005}"/>
<RecordField colName="num2_emp" fieldIdRef="30" fieldType="TABLE_COLUMN" name="adtb00020.num2_emp" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{fd3d592f-dbb2-4343-9827-c36a460ce034}"/>
<RecordField colName="departamento2" fieldIdRef="31" fieldType="TABLE_COLUMN" name="adtb00020.departamento2" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{b6174a7b-bb09-4886-a1b9-89dca1bcf3a0}"/>
<RecordField colName="nivel2_emp" fieldIdRef="32" fieldType="TABLE_COLUMN" name="adtb00020.nivel2_emp" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{63ccced3-c219-441e-8647-feb32a8e802f}"/>
<RecordField colName="cod2_puesto" fieldIdRef="33" fieldType="TABLE_COLUMN" name="adtb00020.cod2_puesto" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{cf9a79bf-f263-408a-b963-a10d2d2f430d}"/>
<RecordField colName="descrip4" fieldIdRef="34" name="descrip4" sqlTabName="formonly" table_alias_name="" uid="{379bce2d-2ce5-4f57-9d55-7f3f7b3a67fe}"/>
<RecordField colName="num3_emp" fieldIdRef="35" fieldType="TABLE_COLUMN" name="adtb00020.num3_emp" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{152d4176-3204-4e6e-a6a3-e4f92787b1bc}"/>
<RecordField colName="departamento3" fieldIdRef="36" fieldType="TABLE_COLUMN" name="adtb00020.departamento3" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{328a1957-b303-4bde-b913-2cc142eff874}"/>
<RecordField colName="nivel3_emp" fieldIdRef="37" fieldType="TABLE_COLUMN" name="adtb00020.nivel3_emp" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{44853c93-2b42-407e-8368-50f11cbb316c}"/>
<RecordField colName="cod3_puesto" fieldIdRef="38" fieldType="TABLE_COLUMN" name="adtb00020.cod3_puesto" sqlTabName="adtb00020" sqlType="SMALLINT" table_alias_name="" uid="{46b5abec-9a78-4be3-9bda-7b8ec9a57841}"/>
<RecordField colName="descrip5" fieldIdRef="39" name="descrip5" sqlTabName="formonly" table_alias_name="" uid="{9c9d8c1b-5031-4cf5-ab44-3dadafdfdf3b}"/>
<RecordField colName="us_crea" fieldIdRef="43" fieldType="TABLE_COLUMN" name="adtb00020.us_crea" sqlTabName="adtb00020" sqlType="CHAR" table_alias_name="" uid="{c6163a70-937c-4d17-b991-f427a5139045}"/>
<RecordField colName="us_mod" fieldIdRef="45" fieldType="TABLE_COLUMN" name="adtb00020.us_mod" sqlTabName="adtb00020" sqlType="CHAR" table_alias_name="" uid="{eb0bacfe-2dde-40f2-9fb5-9e0548d4882a}"/>
<RecordField colName="fech_crea" fieldIdRef="44" fieldType="TABLE_COLUMN" name="adtb00020.fech_crea" qual1="YEAR" qualFraction="FRACTION(3)" sqlTabName="adtb00020" sqlType="DATETIME" table_alias_name="" uid="{69edd8d5-620a-49cf-b77a-6f9166a2e408}"/>
<RecordField colName="fech_mod" fieldIdRef="46" fieldType="TABLE_COLUMN" name="adtb00020.fech_mod" qual1="YEAR" qualFraction="FRACTION(3)" sqlTabName="adtb00020" sqlType="DATETIME" table_alias_name="" uid="{7547110d-f3f4-42a6-8b1a-db0b0e04fa54}"/>
<RecordField colName="" fieldIdRef="3" name="fecha5" sqlTabName="" table_alias_name="" uid="{1793c072-7959-4c58-a5b1-e7c2fed143b3}"/>
<RecordField colName="" fieldIdRef="4" name="estado_accion" sqlTabName="" table_alias_name="" uid="{39f544a6-146d-4da8-a564-811bbfbc65be}"/>
</Record>
<Form gridHeight="24" gridWidth="103" name="adfmmt017" style="basic" text="FORMULARIO MANTENIMIENTO ACCION DE PERSONAL">
<ToolBar name="ToolBar1">
<ToolBarItem comment="Adicionar Registos" image="new" name="nuevo" text="Nuevo"/>
<ToolBarItem comment="Buscar Regustros" image="find" name="buscar" text="Buscar"/>
<ToolBarSeparator name="ToolBarSeparator1"/>
<ToolBarItem comment="Salir del Programa" image="quit" name="salir" text="Salir"/>
</ToolBar>
<Grid gridHeight="22" gridWidth="100" name="Grid1" posX="1" posY="1">
<Group gridHeight="15" gridWidth="96" name="Group1" posX="1" posY="1">
<Label posX="1" posY="1" text="Tipo de Movimiento"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cod_mto" comment="1= EMPLEO 2=CAMBIO 3=NOVEDADES 4=TERMINACION o Presione Ctrl-W" defaultValue="1" fieldId="2" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="36" include="1|2|3|4" items="" name="adtb00020.cod_mto" posX="21" posY="1" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="1" table_alias_name="" widget="ComboBox"/>
<Label posX="1" posY="2" text="Numero Documento"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="num_trx" fieldId="5" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="6" name="adtb00020.num_trx" noEntry="true" posX="21" posY="2" sqlTabName="adtb00020" sqlType="INTEGER" tabIndex="2" table_alias_name="" widget="Edit"/>
<Label posX="33" posY="2" text="Numero Solicitante"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cod_sol" comment="Digite el Numero del Solicitante" fieldId="6" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="4" name="adtb00020.cod_sol" posX="53" posY="2" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="3" table_alias_name="" widget="Edit"/>
<Label posX="1" posY="3" text="Fecha"/>
<DateEdit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fecha" comment="Digite la fecha de elaboracion de la accion" fieldId="7" fieldType="TABLE_COLUMN" format="dd/mm/yyyy" gridHeight="1" gridWidth="10" name="adtb00020.fecha" posX="21" posY="3" sqlTabName="adtb00020" sqlType="DATE" tabIndex="4" table_alias_name="" widget="DateEdit"/>
<Label posX="33" posY="3" text="Fecha Efectiva"/>
<DateEdit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fech_efec" comment="Digite la fecha de efectividad de la accion" fieldId="8" fieldType="TABLE_COLUMN" format="dd/mm/yyyy" gridHeight="1" gridWidth="10" name="adtb00020.fech_efec" posX="53" posY="3" sqlTabName="adtb00020" sqlType="DATE" tabIndex="5" table_alias_name="" widget="DateEdit"/>
<Label gridHeight="1" gridWidth="10" name="Label5" posX="65" posY="3" text="Fecha Entrada"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="3" gridHeight="1" gridWidth="14" name="fecha5" posX="81" posY="3" sqlTabName="" tabIndex="43" table_alias_name="" title="Edit1" widget="Edit"/>
<Label posX="1" posY="4" text="Ficha No."/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoNext="true" colName="num_emp" comment="Digite la ficha del empleado o Presione Ctrl-W para busqueda" fieldId="9" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="4" name="adtb00020.num_emp" posX="21" posY="4" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="7" table_alias_name="" widget="Edit"/>
<Label posX="26" posY="4" text="-"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoNext="true" colName="departamento" comment="Digite el departamento del empleado o Presione Ctrl-W para busqueda" fieldId="10" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="4" name="adtb00020.departamento" posX="28" posY="4" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="8" table_alias_name="" widget="Edit"/>
<Label posX="33" posY="4" text="-"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoNext="true" colName="nivel_emp" comment="Digite el nivel del empleado o Presione Ctrl-W para busqueda" fieldId="11" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="3" name="adtb00020.nivel_emp" posX="35" posY="4" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="9" table_alias_name="" widget="Edit"/>
<Label posX="39" posY="4" text="-"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoNext="true" colName="cod_puesto" comment="Digite el puesto del empleado o Presione Ctrl-W para busqueda" fieldId="12" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="3" name="adtb00020.cod_puesto" posX="41" posY="4" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="10" table_alias_name="" widget="Edit"/>
<Label posX="46" posY="4" text="Cedula"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cedula" fieldId="13" gridHeight="1" gridWidth="14" name="cedula" picture="###-#######-#" posX="55" posY="4" sqlTabName="formonly" tabIndex="11" table_alias_name="" widget="Edit"/>
<Label posX="70" posY="4" text="Cuenta No:"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cuenta_no" comment="No. de Cuenta para pago automatico" fieldId="1" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="14" name="adtb00003.cuenta_no" posX="81" posY="4" sqlTabName="adtb00003" sqlType="VARCHAR" tabIndex="12" table_alias_name="" widget="Edit"/>
<Label posX="1" posY="5" text="Nombre"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="descrip1" fieldId="14" gridHeight="1" gridWidth="30" name="descrip1" noEntry="true" posX="21" posY="5" sqlTabName="formonly" tabIndex="13" table_alias_name="" widget="Edit"/>
<Label posX="53" posY="5" text="Apellido"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="descrip2" fieldId="15" gridHeight="1" gridWidth="30" name="descrip2" noEntry="true" posX="63" posY="5" sqlTabName="formonly" tabIndex="14" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="nombre_dpto" fieldId="16" gridHeight="1" gridWidth="30" name="nombre_dpto" noEntry="true" posX="21" posY="6" sqlTabName="formonly" tabIndex="15" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="nom_puesto" fieldId="17" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="29" name="adtb00004.nom_puesto" noEntry="true" posX="53" posY="6" sqlTabName="adtb00004" sqlType="CHAR" tabIndex="16" table_alias_name="" widget="Edit"/>
<Label posX="1" posY="7" text="NIS"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="pnis" comment="CODIGO IDENTIFICACION SEGURIDAD SOCIAL" fieldId="0" gridHeight="1" gridWidth="22" name="pnis" posX="21" posY="7" sqlTabName="formonly" tabIndex="6" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="10" name="Label6" posX="53" posY="7" text="Estatus"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" color="blue" fieldId="4" gridHeight="1" gridWidth="16" name="estado_accion" posX="65" posY="7" sqlTabName="" tabIndex="44" table_alias_name="" title="Edit1" widget="Edit"/>
<Label posX="1" posY="8" text="Sueldo/Salario"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="sueldo_ac" comment="Digite el sueldo/salario del empleado" fieldId="18" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="11" name="adtb00020.sueldo_ac" posX="21" posY="8" precisionDecimal="10" scaleDecimal="2" sqlTabName="adtb00020" sqlType="DECIMAL" tabIndex="17" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="6" name="Label4" posX="39" posY="8" text="Nomina"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="" comment="Digite S = Semanal, Q = Quincenal, V = Vendedor" fieldId="19" fieldType="NON_DATABASE" gridHeight="1" gridWidth="11" items="QUINCENAL, JORNAL" length="1" name="nomina" posX="46" posY="8" sqlTabName="" sqlType="CHAR" tabIndex="18" table_alias_name="" widget="ComboBox">
<Item lstrtext="false" name="Q" text="QUINCENAL"/>
<Item lstrtext="false" name="J" text="JORNAL"/>
</ComboBox>
<Label gridHeight="1" gridWidth="9" name="Label1" posX="63" posY="8" text="Estado Civil"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="estado_civil" comment=" S = Soltero C = Casado " defaultValue="U" fieldId="21" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="18" include="S|C" items="CASADO, SOLTERO, UNION LIBRE" name="adtb00003.estado_civil" posX="75" posY="8" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="19" table_alias_name="" widget="ComboBox">
<Item lstrtext="false" name="C" text="CASADO"/>
<Item lstrtext="false" name="S" text="SOLTERO"/>
<Item lstrtext="false" name="U" text="UNION LIBRE"/>
</ComboBox>
<Label posX="1" posY="9" text="Sexo"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="sexo" comment="Digite M Para Sexo Masculino y F Para el Femenino" defaultValue="F" fieldId="40" gridHeight="1" gridWidth="11" include="M|F" items="FEMENINO, MASCULINO" name="sexo" posX="21" posY="9" sqlTabName="formonly" sqlType="CHAR" tabIndex="20" table_alias_name="" widget="ComboBox">
<Item lstrtext="false" name="F" text="FEMENINO"/>
<Item lstrtext="false" name="M" text="MASCULINO"/>
</ComboBox>
<Label gridHeight="1" gridWidth="12" name="Label2" posX="33" posY="9" text="Tipo de Sangre"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="tipo_sangre" defaultValue="AB+" fieldId="23" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="11" items="AB+, B-, O+, O-, A+, A-" name="adtb00012.tipo_sangre" posX="46" posY="9" sqlTabName="adtb00012" sqlType="CHAR" tabIndex="21" table_alias_name="" widget="ComboBox">
<Item lstrtext="false" name="AB+" text="AB+"/>
<Item lstrtext="false" name="B+" text="B-"/>
<Item lstrtext="false" name="O+" text="O+"/>
<Item lstrtext="false" name="O-" text="O-"/>
<Item lstrtext="false" name="A+" text="A+"/>
<Item lstrtext="false" name="A-" text="A-"/>
</ComboBox>
<Label gridHeight="1" gridWidth="14" name="Label3" posX="58" posY="9" text="Monto Liquidacion"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="sueldo_lq" defaultValue="0" fieldId="42" gridHeight="1" gridWidth="18" name="sueldo_lq" posX="75" posY="9" precisionDecimal="12" scaleDecimal="2" sqlTabName="formonly" sqlType="DECIMAL" tabIndex="22" table_alias_name="" widget="Edit"/>
<Label posX="1" posY="10" text="Observaciones"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="observacion" fieldId="24" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="74" name="adtb00020.observacion" posX="21" posY="10" sqlTabName="adtb00020" sqlType="CHAR" tabIndex="23" table_alias_name="" widget="Edit"/>
<Label posX="1" posY="11" text="Solicitado"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoNext="true" colName="num1_emp" comment="Digite la ficha del empleado solicitante o Presione Ctrl-W para busqueda" fieldId="25" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="5" name="adtb00020.num1_emp" posX="21" posY="11" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="24" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="departamento1" fieldId="26" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="5" name="adtb00020.departamento1" noEntry="true" posX="28" posY="11" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="25" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="nivel1_emp" fieldId="27" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="4" name="adtb00020.nivel1_emp" noEntry="true" posX="35" posY="11" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="26" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cod1_puesto" fieldId="28" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="4" name="adtb00020.cod1_puesto" noEntry="true" posX="40" posY="11" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="27" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="descrip3" fieldId="29" gridHeight="1" gridWidth="49" name="descrip3" noEntry="true" posX="46" posY="11" sqlTabName="formonly" tabIndex="28" table_alias_name="" widget="Edit"/>
<Label posX="1" posY="12" text="Autorizado"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoNext="true" colName="num2_emp" comment="Digite el numero del empleado que autoriza o Presione Ctrl-W para busqueda" fieldId="30" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="5" name="adtb00020.num2_emp" posX="21" posY="12" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="29" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="departamento2" fieldId="31" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="5" name="adtb00020.departamento2" noEntry="true" posX="28" posY="12" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="30" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="nivel2_emp" fieldId="32" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="4" name="adtb00020.nivel2_emp" noEntry="true" posX="35" posY="12" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="31" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cod2_puesto" fieldId="33" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="4" name="adtb00020.cod2_puesto" noEntry="true" posX="40" posY="12" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="32" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="descrip4" fieldId="34" gridHeight="1" gridWidth="49" name="descrip4" noEntry="true" posX="46" posY="12" sqlTabName="formonly" tabIndex="33" table_alias_name="" widget="Edit"/>
<Label posX="1" posY="13" text="Aprobado"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoNext="true" colName="num3_emp" comment="Digite el numero del empleado que aprueba o Presione Ctrl-W para busqueda" fieldId="35" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="5" name="adtb00020.num3_emp" posX="21" posY="13" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="34" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="departamento3" fieldId="36" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="5" name="adtb00020.departamento3" noEntry="true" posX="28" posY="13" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="35" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="nivel3_emp" fieldId="37" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="4" name="adtb00020.nivel3_emp" noEntry="true" posX="35" posY="13" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="36" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cod3_puesto" fieldId="38" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="4" name="adtb00020.cod3_puesto" noEntry="true" posX="40" posY="13" sqlTabName="adtb00020" sqlType="SMALLINT" tabIndex="37" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="descrip5" fieldId="39" gridHeight="1" gridWidth="49" name="descrip5" noEntry="true" posX="46" posY="13" sqlTabName="formonly" tabIndex="38" table_alias_name="" widget="Edit"/>
</Group>
<Group gridHeight="4" gridWidth="97" name="Group2" posX="1" posY="17">
<Label posX="1" posY="1" text="Usuario Creador"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="us_crea" fieldId="43" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="17" name="adtb00020.us_crea" noEntry="true" posX="20" posY="1" sqlTabName="adtb00020" sqlType="CHAR" tabIndex="39" table_alias_name="" widget="Edit"/>
<Label posX="40" posY="1" text="Usuario Modificador"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="us_mod" fieldId="45" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="16" name="adtb00020.us_mod" noEntry="true" posX="61" posY="1" sqlTabName="adtb00020" sqlType="CHAR" tabIndex="40" table_alias_name="" widget="Edit"/>
<Label posX="1" posY="2" text="Fecha Creacion"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fech_crea" fieldId="44" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="17" name="adtb00020.fech_crea" noEntry="true" posX="20" posY="2" qual1="YEAR" qualFraction="FRACTION(3)" sqlTabName="adtb00020" sqlType="DATETIME" tabIndex="41" table_alias_name="" widget="Edit"/>
<Label posX="40" posY="2" text="Fecha Modificacion"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fech_mod" fieldId="46" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="16" name="adtb00020.fech_mod" noEntry="true" posX="61" posY="2" qual1="YEAR" qualFraction="FRACTION(3)" sqlTabName="adtb00020" sqlType="DATETIME" tabIndex="42" table_alias_name="" widget="Edit"/>
</Group>
</Grid>
</Form>
<DiagramLayout>
<![CDATA[AAAAAgAAAEwAewA3AGQANAA3ADEAYgAyADEALQA2ADMAZgAwAC0ANAAzAGIAOAAtAGEAOABkADkALQBmADEAMwBmADgANABiAGEANAA1AGUAOQB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ==]]>
</DiagramLayout>
</ManagedForm>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="31405" version="6.00">
<report:Settings RWPageWidth="letterwidth" RWPageLength="letterlength" RWLeftMargin="0.5inch" RWTopMargin="0.5inch" RWRightMargin="0.5inch" RWBottomMargin="0.5inch">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
<report:Format-image/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../addir/adprmt017.rdd" RWFglReportName="imp_accion"/>
<report:Conflicts/>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report">
<MINIPAGE name="Page Root" width="max" length="max">
<LAYOUTNODE name="Header" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox" floatingBehavior="enclosed" text="adprmt017"/>
<rtl:input-variable name="p_companias.nombre" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox3" width="max-3cm" fontSize="14" fontBold="true" floatingBehavior="enclosed" textAlignment="center" text="{{p_companias.nombre.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="SubHeader" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox1" width="max-2.5cm" fontSize="10" fontBold="true" floatingBehavior="enclosed" textAlignment="center" text="ACCION NOMINAS"/>
<rtl:input-variable name="hoy" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox2" floatingBehavior="enclosed" text="{{hoy.trim()}}"/>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="Informacion1" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="mov_emp.desc_mto" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox4" width="2.5inch" floatingBehavior="enclosed" text="{{mov_emp.desc_mto}}" borderWidth="1" borderStyle="none"/>
<rtl:input-variable name="acc_per.num_trx" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox5" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;DOCUMENTO: &quot;+acc_per.num_trx.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)}}" borderWidth="1" borderStyle="none"/>
<rtl:input-variable name="acc_per.fecha" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox6" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;FECHA: &quot;+acc_per.fecha}}" borderWidth="1" borderStyle="none"/>
</LAYOUTNODE>
<LAYOUTNODE name="Informacion2" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="nombre9" type="FGLString" expectedLocation="expectedHere"/>
<rtl:input-variable name="nombre10" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;NOMBRES:&quot;+nombre9.trim()+&quot; &quot;+nombre10.trim()}}" borderWidth="1" borderStyle="none"/>
<rtl:input-variable name="apellido9" type="FGLString" expectedLocation="expectedHere"/>
<rtl:input-variable name="apellido10" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox1" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;APELLIDOS:&quot;+apellido9.trim()+&quot; &quot;+apellido10}}"/>
<rtl:input-variable name="acc_per.fech_efec" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox2" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;FECHA EFECTIVA:&quot;+acc_per.fech_efec}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Informacion3" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="vacacion.fecha_sal" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox7" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;FECHA SALIDA:&quot;+vacacion.fecha_sal}}"/>
<rtl:input-variable name="vacacion.fecha_ent" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox8" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;FECHA ENT:&quot;+vacacion.fecha_ent}}"/>
<rtl:input-variable name="vacacion.dias_tomados" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox9" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;DIAS TOMADOS:&quot;+vacacion.dias_tomados.format(&quot;&amp;&amp;&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Informacion4" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="vacacion.dias_vac" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox10" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;DIAS PAGADOS:&quot;+vacacion.dias_vac.format(&quot;&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="vacacion.num_nomi" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox11" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;NUMERO NOMINA:&quot;+vacacion.num_nomi.format(&quot;&amp;&amp;&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="vacacion.num_nomi" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox12" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;NOMINA NO C:&quot;+vacacion.num_nomi.format(&quot;&amp;&amp;&amp;&amp;&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Informacion5" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="vacacion.pano" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox13" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;PERIODO:&quot;+vacacion.pano}}"/>
<rtl:input-variable name="vacacion.dias_tomados" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox14" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;DIAS A TOMAR:&quot;+vacacion.dias_tomados}}"/>
<rtl:input-variable name="dias2" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox15" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;DIAS PAGADOS:&quot;+dias2}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Informacion6" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="vacacion.valor_vacaciones" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox16" width="2.5inch" fontSize="8" fontBold="true" floatingBehavior="enclosed" text="{{&quot;VALOR VACACIONES:&quot;+vacacion.valor_vacaciones.format(&quot;###,###.##&quot;)}}"/>
</LAYOUTNODE>
</rtl:match>
<LAYOUTNODE name="Autorizaciones1" width="1.2inch" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox17" length="1inch" floatingBehavior="enclosed"/>
</LAYOUTNODE>
<LAYOUTNODE name="Autorizciones2" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="descrip3" type="FGLString" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox20" width="5inch" floatingBehavior="enclosed" text="{{&quot;SOLICITADO POR: &quot;+descrip3.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Autorizaciones3" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="descrip4" type="FGLString" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox21" width="5inch" floatingBehavior="enclosed" text="{{&quot;AUTORIZADO: &quot;+descrip4.trim()}}" borderWidth="1" borderStyle="solid"/>
</LAYOUTNODE>
<LAYOUTNODE name="Autorizaciones4" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="descrip5" type="FGLString" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox22" width="5inch" floatingBehavior="enclosed" text="{{&quot;APROBADO: &quot;+descrip5.trim()}}" borderWidth="1" borderStyle="solid"/>
</LAYOUTNODE>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+15 -4
View File
@@ -42,7 +42,18 @@
<rtl:input-variable name="acc_per.fech_efec" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox2" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;FECHA EFECTIVA:&quot;+acc_per.fech_efec}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Informacion3" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="es_vac" type="FGLNumeric" expectedLocation="expectedHere"/>
<LAYOUTNODE name="Detalle" rtl:condition="es_vac==0" width="min" length="min" fontSize="8" floatingBehavior="enclosed" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="det_tit" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="detTit" width="7.5inch" fontSize="9" fontBold="true" floatingBehavior="enclosed" text="{{det_tit.trim()}}"/>
<rtl:input-variable name="det1" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="det1Box" width="7.5inch" floatingBehavior="enclosed" text="{{det1.trim()}}"/>
<rtl:input-variable name="det2" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="det2Box" width="7.5inch" floatingBehavior="enclosed" text="{{det2.trim()}}"/>
<rtl:input-variable name="det3" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="det3Box" width="7.5inch" floatingBehavior="enclosed" text="{{det3.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Informacion3" rtl:condition="es_vac==1" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="vacacion.fecha_sal" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox7" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;FECHA SALIDA:&quot;+vacacion.fecha_sal}}"/>
<rtl:input-variable name="vacacion.fecha_ent" type="FGLString" expectedLocation="expectedHere"/>
@@ -50,7 +61,7 @@
<rtl:input-variable name="vacacion.dias_tomados" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox9" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;DIAS TOMADOS:&quot;+vacacion.dias_tomados.format(&quot;&amp;&amp;&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Informacion4" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<LAYOUTNODE name="Informacion4" rtl:condition="es_vac==1" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="vacacion.dias_vac" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox10" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;DIAS PAGADOS:&quot;+vacacion.dias_vac.format(&quot;&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="vacacion.num_nomi" type="FGLNumeric" expectedLocation="expectedHere"/>
@@ -58,7 +69,7 @@
<rtl:input-variable name="vacacion.num_nomi" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox12" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;NOMINA NO C:&quot;+vacacion.num_nomi.format(&quot;&amp;&amp;&amp;&amp;&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Informacion5" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="1" borderStyle="solid">
<LAYOUTNODE name="Informacion5" rtl:condition="es_vac==1" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="vacacion.pano" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox13" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;PERIODO:&quot;+vacacion.pano}}"/>
<rtl:input-variable name="vacacion.dias_tomados" type="FGLNumeric" expectedLocation="expectedHere"/>
@@ -66,7 +77,7 @@
<rtl:input-variable name="dias2" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox15" width="2.5inch" floatingBehavior="enclosed" text="{{&quot;DIAS PAGADOS:&quot;+dias2}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Informacion6" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="1" borderStyle="solid">
<LAYOUTNODE name="Informacion6" rtl:condition="es_vac==1" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="vacacion.valor_vacaciones" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox16" width="2.5inch" fontSize="8" fontBold="true" floatingBehavior="enclosed" text="{{&quot;VALOR VACACIONES:&quot;+vacacion.valor_vacaciones.format(&quot;###,###.##&quot;)}}"/>
</LAYOUTNODE>
+120
View File
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="3140a" version="6.00">
<report:Settings RWPageWidth="11.00inch" RWPageLength="8.50inch" RWLeftMargin="0.4inch" RWTopMargin="0.4inch" RWRightMargin="0.4inch" RWBottomMargin="0.4inch">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
<report:Format-image/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../addir/adprrp048.rdd" RWFglReportName="capacitacion"/>
<report:Conflicts/>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report" minOccurs="1" maxOccurs="1">
<MINIPAGE name="Page Root" width="max" length="max" alignment="near">
<LAYOUTNODE name="encabezados" width="max" length="min" fontSize="8" port="anyPageHeader" floatingBehavior="enclosed">
<LAYOUTNODE name="compania" width="min" length="max" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="progId" width="1inch" alignment="baseline" floatingBehavior="enclosed" text="adprrp048"/>
<rtl:input-variable name="p_companias.nombre" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="empresa" width="7.2inch" floatingBehavior="enclosed" textAlignment="center" text="{{p_companias.nombre.trim()}}"/>
<rtl:input-variable name="fecha_rep" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="fechaRep" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="{{fecha_rep}}"/>
<rtl:input-variable name="hora" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="horaRep" width="0.9inch" floatingBehavior="enclosed" textAlignment="right" text="{{hora}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="titulo" width="min" length="max" fontSize="11" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="tituloTxt" width="10.1inch" floatingBehavior="enclosed" textAlignment="center" text="HORAS DE CAPACITACION POR COLABORADOR"/>
</LAYOUTNODE>
<LAYOUTNODE name="filtrosNode" width="min" length="max" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="filtros" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="filtrosTxt" width="10.1inch" floatingBehavior="enclosed" textAlignment="center" text="{{filtros.trim()}}"/>
</LAYOUTNODE>
<WORDBOX name="sepEnc" width="max" length="4" floatingBehavior="enclosed" text=" "/>
<LAYOUTNODE name="encCols" width="min" length="max" fontSize="7.5" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" bgColor="#E8D9E6" borderWidth="0.5" borderStyle="solid">
<WORDBOX name="hFila" width="1.1inch" floatingBehavior="enclosed" text="MOVIMIENTO"/>
<WORDBOX name="hCap" width="2.9inch" floatingBehavior="enclosed" text="CAPACITACION"/>
<WORDBOX name="hTipo" width="0.9inch" floatingBehavior="enclosed" text="TIPO"/>
<WORDBOX name="hIni" width="0.8inch" floatingBehavior="enclosed" text="INICIO"/>
<WORDBOX name="hFin" width="0.8inch" floatingBehavior="enclosed" text="FIN"/>
<WORDBOX name="hReq" width="0.65inch" floatingBehavior="enclosed" textAlignment="right" text="H. REQ."/>
<WORDBOX name="hTom" width="0.65inch" floatingBehavior="enclosed" textAlignment="right" text="H. TOM."/>
<WORDBOX name="hPend" width="0.65inch" floatingBehavior="enclosed" textAlignment="right" text="H. PEND."/>
<WORDBOX name="hEspacio" width="0.1inch" floatingBehavior="enclosed" text=" "/>
<WORDBOX name="hInst" width="1.5inch" floatingBehavior="enclosed" text="INSTITUCION"/>
</LAYOUTNODE>
</LAYOUTNODE>
<rtl:match name="FirstPageHeader" nameConstraint="FirstPageHeader" minOccurs="0" maxOccurs="1"/>
<rtl:match name="Group num_emp" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="grpEnc" width="min" length="max" fontSize="8" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" bgColor="#F3EEF3">
<rtl:input-variable name="x.num_emp" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="gFicha" width="0.7inch" floatingBehavior="enclosed" format="&lt;&lt;&lt;&lt;&lt;&amp;" value="{{x.num_emp}}"/>
<rtl:input-variable name="x.empleado" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="gEmp" textAlignment="left" width="3.6inch" floatingBehavior="enclosed" text="{{x.empleado.trim()}}"/>
<rtl:input-variable name="x.nom_dpto" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="gDpto" textAlignment="left" width="2.9inch" floatingBehavior="enclosed" text="{{x.nom_dpto.trim()}}"/>
<rtl:input-variable name="x.nom_puesto" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="gPuesto" textAlignment="left" width="2.9inch" floatingBehavior="enclosed" text="{{x.nom_puesto.trim()}}"/>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="fila" width="min" length="max" fontSize="7.5" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="x.fila" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="dFila" width="1.1inch" floatingBehavior="enclosed" text="{{x.fila}}"/>
<rtl:input-variable name="x.nom_cap" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="dCap" width="2.9inch" floatingBehavior="enclosed" text="{{x.nom_cap.trim()}}"/>
<rtl:input-variable name="x.tipo_evento" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="dTipo" width="0.9inch" floatingBehavior="enclosed" text="{{x.tipo_evento.trim()}}"/>
<rtl:input-variable name="fini" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="dIni" width="0.8inch" floatingBehavior="enclosed" text="{{fini}}"/>
<rtl:input-variable name="ffin" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="dFin" width="0.8inch" floatingBehavior="enclosed" text="{{ffin}}"/>
<rtl:input-variable name="x.h_req" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dReq" class="grwNumericValue" width="0.65inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;.&amp;&amp;" value="{{x.h_req}}"/>
<rtl:input-variable name="x.h_tom" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dTom" class="grwNumericValue" width="0.65inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;.&amp;&amp;" value="{{x.h_tom}}"/>
<rtl:input-variable name="x.h_pend" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dPend" class="grwNumericValue" width="0.65inch" anchorX="1" fontBold="true" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;.&amp;&amp;" value="{{x.h_pend}}"/>
<WORDBOX name="dEspacio" width="0.1inch" floatingBehavior="enclosed" text=" "/>
<rtl:input-variable name="x.institucion" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="dInst" width="1.5inch" floatingBehavior="enclosed" text="{{x.institucion.trim()}}"/>
</LAYOUTNODE>
</rtl:match>
<MINIPAGE name="lineaPie" width="max" length="0.5" bgColor="#7E0C6E"/>
<LAYOUTNODE name="grpPie" width="min" length="max" fontSize="7.5" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="pTit" width="3.0inch" floatingBehavior="enclosed" text="Total colaborador"/>
<rtl:input-variable name="g_cumpl" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="pCumplTit" width="1.1inch" floatingBehavior="enclosed" text="Cumplimiento %"/>
<DECIMALFORMATBOX name="pCumpl" width="1.5inch" floatingBehavior="enclosed" format="---&amp;.&amp;&amp;" value="{{g_cumpl}}"/>
<WORDBOX name="pVacio" width="0.9inch" floatingBehavior="enclosed" text=" "/>
<rtl:input-variable name="g_req" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="pReq" class="grwNumericValue" width="0.65inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;.&amp;&amp;" value="{{g_req}}"/>
<rtl:input-variable name="g_tom" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="pTom" class="grwNumericValue" width="0.65inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;.&amp;&amp;" value="{{g_tom}}"/>
<rtl:input-variable name="g_pend" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="pPend" class="grwNumericValue" width="0.65inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;.&amp;&amp;" value="{{g_pend}}"/>
</LAYOUTNODE>
<WORDBOX name="sepGrp" width="max" length="6" floatingBehavior="enclosed" text=" "/>
</rtl:match>
<rtl:match name="OnLastRow" nameConstraint="OnLastRow" minOccurs="0" maxOccurs="1">
<LAYOUTNODE name="totGen" width="min" length="max" fontSize="8.5" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" bgColor="#E8D9E6" borderWidth="0.5" borderStyle="solid">
<rtl:input-variable name="t_emp" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="tTit" width="1.2inch" floatingBehavior="enclosed" text="TOTAL GENERAL"/>
<DECIMALFORMATBOX name="tEmp" width="0.5inch" floatingBehavior="enclosed" format="&lt;&lt;&lt;&lt;&amp;" value="{{t_emp}}"/>
<WORDBOX name="tEmpTit" width="1.3inch" floatingBehavior="enclosed" text="colaboradores"/>
<rtl:input-variable name="t_cumpl" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="tCumplTit" width="1.1inch" floatingBehavior="enclosed" text="Cumplimiento %"/>
<DECIMALFORMATBOX name="tCumpl" width="1.5inch" floatingBehavior="enclosed" format="---&amp;.&amp;&amp;" value="{{t_cumpl}}"/>
<WORDBOX name="tVacio" width="0.9inch" floatingBehavior="enclosed" text=" "/>
<rtl:input-variable name="t_req" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="tReq" class="grwNumericValue" width="0.65inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;.&amp;&amp;" value="{{t_req}}"/>
<rtl:input-variable name="t_tom" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="tTom" class="grwNumericValue" width="0.65inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;.&amp;&amp;" value="{{t_tom}}"/>
<rtl:input-variable name="t_pend" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="tPend" class="grwNumericValue" width="0.65inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;.&amp;&amp;" value="{{t_pend}}"/>
</LAYOUTNODE>
</rtl:match>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+113
View File
@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="3140a" version="6.00">
<report:Settings RWPageWidth="8.50inch" RWPageLength="11.00inch" RWLeftMargin="0.4inch" RWTopMargin="0.4inch" RWRightMargin="0.4inch" RWBottomMargin="0.4inch">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
<report:Format-image/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../addir/adprrp049.rdd" RWFglReportName="rotacion"/>
<report:Conflicts/>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report" minOccurs="1" maxOccurs="1">
<MINIPAGE name="Page Root" width="max" length="max" alignment="near">
<LAYOUTNODE name="encabezados" width="max" length="min" fontSize="8" port="anyPageHeader" floatingBehavior="enclosed">
<LAYOUTNODE name="compania" width="min" length="max" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="progId" width="0.9inch" alignment="baseline" floatingBehavior="enclosed" text="adprrp049"/>
<rtl:input-variable name="p_companias.nombre" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="empresa" width="4.8inch" floatingBehavior="enclosed" textAlignment="center" text="{{p_companias.nombre.trim()}}"/>
<rtl:input-variable name="fecha_rep" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="fechaRep" width="0.9inch" floatingBehavior="enclosed" textAlignment="right" text="{{fecha_rep}}"/>
<rtl:input-variable name="hora" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="horaRep" width="0.8inch" floatingBehavior="enclosed" textAlignment="right" text="{{hora}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="titulo" width="min" length="max" fontSize="11" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="tituloTxt" width="7.4inch" floatingBehavior="enclosed" textAlignment="center" text="ROTACION LABORAL - RESUMEN MENSUAL"/>
</LAYOUTNODE>
<LAYOUTNODE name="filtrosNode" width="min" length="max" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="filtros" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="filtrosTxt" width="7.4inch" floatingBehavior="enclosed" textAlignment="center" text="{{filtros.trim()}}"/>
</LAYOUTNODE>
<WORDBOX name="sepEnc" width="max" length="4" floatingBehavior="enclosed" text=" "/>
<LAYOUTNODE name="encCols" width="min" length="max" fontSize="7.5" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" bgColor="#E8D9E6" borderWidth="0.5" borderStyle="solid">
<WORDBOX name="hMes" width="1.3inch" floatingBehavior="enclosed" text="MES"/>
<WORDBOX name="hPlant" width="0.85inch" floatingBehavior="enclosed" textAlignment="right" text="PLANTILLA"/>
<WORDBOX name="hIng" width="0.85inch" floatingBehavior="enclosed" textAlignment="right" text="INGRESOS"/>
<WORDBOX name="hSal" width="0.85inch" floatingBehavior="enclosed" textAlignment="right" text="SALIDAS"/>
<WORDBOX name="hVol" width="0.85inch" floatingBehavior="enclosed" textAlignment="right" text="VOLUNT."/>
<WORDBOX name="hInv" width="0.85inch" floatingBehavior="enclosed" textAlignment="right" text="INVOLUNT."/>
<WORDBOX name="hOtr" width="0.85inch" floatingBehavior="enclosed" textAlignment="right" text="OTRAS"/>
<WORDBOX name="hRot" width="0.95inch" floatingBehavior="enclosed" textAlignment="right" text="ROTACION %"/>
</LAYOUTNODE>
</LAYOUTNODE>
<rtl:match name="FirstPageHeader" nameConstraint="FirstPageHeader" minOccurs="0" maxOccurs="1"/>
<rtl:match name="Group anio" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="grpEnc" width="min" length="max" fontSize="8.5" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" bgColor="#F3EEF3">
<WORDBOX name="gTit" width="0.5inch" floatingBehavior="enclosed" text="AÑO"/>
<rtl:input-variable name="x.anio" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="gAnio" width="1.0inch" floatingBehavior="enclosed" format="&amp;&amp;&amp;&amp;" value="{{x.anio}}"/>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="fila" width="min" length="max" fontSize="7.5" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="x.mes_nom" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="dMes" width="1.3inch" floatingBehavior="enclosed" text="{{x.mes_nom}}"/>
<rtl:input-variable name="x.plantilla" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dPlant" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{x.plantilla}}"/>
<rtl:input-variable name="x.ingresos" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dIng" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{x.ingresos}}"/>
<rtl:input-variable name="x.salidas" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dSal" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{x.salidas}}"/>
<rtl:input-variable name="x.voluntarias" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dVol" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{x.voluntarias}}"/>
<rtl:input-variable name="x.involuntarias" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dInv" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{x.involuntarias}}"/>
<rtl:input-variable name="x.otras" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dOtr" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{x.otras}}"/>
<rtl:input-variable name="x.rot_pct" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dRot" class="grwNumericValue" width="0.95inch" anchorX="1" fontBold="true" floatingBehavior="enclosed" textAlignment="right" format="---&amp;.&amp;&amp;" value="{{x.rot_pct}}"/>
</LAYOUTNODE>
</rtl:match>
<MINIPAGE name="lineaPie" width="max" length="0.5" bgColor="#7E0C6E"/>
<LAYOUTNODE name="grpPie" width="min" length="max" fontSize="7.5" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="pTit" width="1.3inch" floatingBehavior="enclosed" text="TOTAL AÑO / PROM."/>
<rtl:input-variable name="a_plant" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="pPlant" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{a_plant}}"/>
<rtl:input-variable name="a_ing" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="pIng" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{a_ing}}"/>
<rtl:input-variable name="a_sal" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="pSal" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{a_sal}}"/>
<rtl:input-variable name="a_vol" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="pVol" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{a_vol}}"/>
<rtl:input-variable name="a_inv" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="pInv" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{a_inv}}"/>
<rtl:input-variable name="a_otr" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="pOtr" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{a_otr}}"/>
<rtl:input-variable name="a_pct" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="pRot" class="grwNumericValue" width="0.95inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---&amp;.&amp;&amp;" value="{{a_pct}}"/>
</LAYOUTNODE>
<WORDBOX name="sepGrp" width="max" length="6" floatingBehavior="enclosed" text=" "/>
</rtl:match>
<rtl:match name="OnLastRow" nameConstraint="OnLastRow" minOccurs="0" maxOccurs="1">
<LAYOUTNODE name="totGen" width="min" length="max" fontSize="8" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" bgColor="#E8D9E6" borderWidth="0.5" borderStyle="solid">
<WORDBOX name="tTit" width="1.3inch" floatingBehavior="enclosed" text="TOTAL PERIODO"/>
<WORDBOX name="tPlant" width="0.85inch" floatingBehavior="enclosed" text=" "/>
<rtl:input-variable name="t_ing" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="tIng" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{t_ing}}"/>
<rtl:input-variable name="t_sal" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="tSal" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{t_sal}}"/>
<rtl:input-variable name="t_vol" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="tVol" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{t_vol}}"/>
<rtl:input-variable name="t_inv" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="tInv" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{t_inv}}"/>
<rtl:input-variable name="t_otr" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="tOtr" class="grwNumericValue" width="0.85inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{t_otr}}"/>
</LAYOUTNODE>
<WORDBOX name="nota" width="max" length="min" fontSize="7" fontItalic="true" floatingBehavior="enclosed" text="Rotacion % = salidas que cuentan para rotacion / plantilla al inicio del mes. Anual = salidas del año / plantilla promedio. Los traslados dentro del grupo no cuentan."/>
</rtl:match>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+97
View File
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="3140a" version="6.00">
<report:Settings RWPageWidth="11.00inch" RWPageLength="8.50inch" RWLeftMargin="0.4inch" RWTopMargin="0.4inch" RWRightMargin="0.4inch" RWBottomMargin="0.4inch">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
<report:Format-image/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../addir/adprrp049.rdd" RWFglReportName="salidas"/>
<report:Conflicts/>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report" minOccurs="1" maxOccurs="1">
<MINIPAGE name="Page Root" width="max" length="max" alignment="near">
<LAYOUTNODE name="encabezados" width="max" length="min" fontSize="8" port="anyPageHeader" floatingBehavior="enclosed">
<LAYOUTNODE name="compania" width="min" length="max" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="progId" width="1inch" alignment="baseline" floatingBehavior="enclosed" text="adprrp049"/>
<rtl:input-variable name="p_companias.nombre" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="empresa" width="7.2inch" floatingBehavior="enclosed" textAlignment="center" text="{{p_companias.nombre.trim()}}"/>
<rtl:input-variable name="fecha_rep" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="fechaRep" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="{{fecha_rep}}"/>
<rtl:input-variable name="hora" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="horaRep" width="0.9inch" floatingBehavior="enclosed" textAlignment="right" text="{{hora}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="titulo" width="min" length="max" fontSize="11" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="tituloTxt" width="10.1inch" floatingBehavior="enclosed" textAlignment="center" text="ROTACION LABORAL - DETALLE DE SALIDAS POR CAUSA"/>
</LAYOUTNODE>
<LAYOUTNODE name="filtrosNode" width="min" length="max" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="filtros" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="filtrosTxt" width="10.1inch" floatingBehavior="enclosed" textAlignment="center" text="{{filtros.trim()}}"/>
</LAYOUTNODE>
<WORDBOX name="sepEnc" width="max" length="4" floatingBehavior="enclosed" text=" "/>
<LAYOUTNODE name="encCols" width="min" length="max" fontSize="7.5" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" bgColor="#E8D9E6" borderWidth="0.5" borderStyle="solid">
<WORDBOX name="hFec" width="0.8inch" floatingBehavior="enclosed" text="SALIDA"/>
<WORDBOX name="hFicha" width="0.5inch" floatingBehavior="enclosed" text="FICHA"/>
<WORDBOX name="hNom" width="2.1inch" floatingBehavior="enclosed" text="COLABORADOR"/>
<WORDBOX name="hDep" width="1.6inch" floatingBehavior="enclosed" text="DEPARTAMENTO"/>
<WORDBOX name="hPue" width="1.6inch" floatingBehavior="enclosed" text="PUESTO"/>
<WORDBOX name="hTipo" width="0.75inch" floatingBehavior="enclosed" text="TIPO"/>
<WORDBOX name="hMeses" width="0.6inch" floatingBehavior="enclosed" textAlignment="right" text="MESES"/>
<WORDBOX name="hEsp" width="0.1inch" floatingBehavior="enclosed" text=" "/>
<WORDBOX name="hRec" width="0.5inch" floatingBehavior="enclosed" text="RECONT."/>
<WORDBOX name="hDet" width="1.55inch" floatingBehavior="enclosed" text="DETALLE"/>
</LAYOUTNODE>
</LAYOUTNODE>
<rtl:match name="FirstPageHeader" nameConstraint="FirstPageHeader" minOccurs="0" maxOccurs="1"/>
<rtl:match name="Group cod_causa" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="grpEnc" width="min" length="max" fontSize="8.5" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" bgColor="#F3EEF3">
<rtl:input-variable name="y.desc_causa" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="gCausa" width="4.0inch" textAlignment="left" floatingBehavior="enclosed" text="{{y.desc_causa.trim()}}"/>
<rtl:input-variable name="y.clase" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="gClase" width="3.0inch" textAlignment="left" floatingBehavior="enclosed" text="{{&quot;(&quot;+y.clase.trim()+&quot;)&quot;}}"/>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="fila" width="min" length="max" fontSize="7.5" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="fsal" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="dFec" width="0.8inch" floatingBehavior="enclosed" text="{{fsal}}"/>
<rtl:input-variable name="y.num_emp" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dFicha" width="0.5inch" floatingBehavior="enclosed" format="&lt;&lt;&lt;&lt;&lt;&amp;" value="{{y.num_emp}}"/>
<rtl:input-variable name="y.empleado" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="dNom" width="2.1inch" floatingBehavior="enclosed" text="{{y.empleado.trim()}}"/>
<rtl:input-variable name="y.nom_dpto" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="dDep" width="1.6inch" floatingBehavior="enclosed" text="{{y.nom_dpto.trim()}}"/>
<rtl:input-variable name="y.nom_puesto" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="dPue" width="1.6inch" floatingBehavior="enclosed" text="{{y.nom_puesto.trim()}}"/>
<rtl:input-variable name="y.tipo_emp" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="dTipo" width="0.75inch" floatingBehavior="enclosed" text="{{y.tipo_emp.trim()}}"/>
<rtl:input-variable name="y.meses" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="dMeses" class="grwNumericValue" width="0.6inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,--&amp;" value="{{y.meses}}"/>
<WORDBOX name="dEsp" width="0.1inch" floatingBehavior="enclosed" text=" "/>
<rtl:input-variable name="y.recont" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="dRec" width="0.5inch" floatingBehavior="enclosed" text="{{y.recont}}"/>
<rtl:input-variable name="y.detalle" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="dDet" width="1.55inch" floatingBehavior="enclosed" text="{{y.detalle.trim()}}"/>
</LAYOUTNODE>
</rtl:match>
<MINIPAGE name="lineaPie" width="max" length="0.5" bgColor="#7E0C6E"/>
<LAYOUTNODE name="grpPie" width="min" length="max" fontSize="7.5" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="pTit" width="1.3inch" floatingBehavior="enclosed" text="Salidas por esta causa:"/>
<rtl:input-variable name="g_cant" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="pCant" width="1.0inch" floatingBehavior="enclosed" format="---,--&amp;" value="{{g_cant}}"/>
</LAYOUTNODE>
<WORDBOX name="sepGrp" width="max" length="6" floatingBehavior="enclosed" text=" "/>
</rtl:match>
<rtl:match name="OnLastRow" nameConstraint="OnLastRow" minOccurs="0" maxOccurs="1">
<LAYOUTNODE name="totGen" width="min" length="max" fontSize="8.5" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" bgColor="#E8D9E6" borderWidth="0.5" borderStyle="solid">
<WORDBOX name="tTit" width="1.6inch" floatingBehavior="enclosed" text="TOTAL DE SALIDAS:"/>
<rtl:input-variable name="t_cant" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="tCant" width="1.0inch" floatingBehavior="enclosed" format="---,--&amp;" value="{{t_cant}}"/>
</LAYOUTNODE>
</rtl:match>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+83
View File
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="60003" version="7.00">
<report:Settings RWPageWidth="letterwidth" RWPageLength="letterlength" RWLeftMargin="0.5cm" RWTopMargin="0.5cm" RWRightMargin="0.5cm" RWBottomMargin="0.5cm">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
<report:Format-image/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../GUI/ipdir/ipprrp013.rdd" RWFglReportName="estadistica"/>
<report:Conflicts/>
<rtl:stylesheet>
<rtl:match name="Report" nameConstraint="Report">
<PXML>
<MINIPAGE name="Page Root" width="max" length="max" alignment="near">
<LAYOUTNODE name="Page Header" width="max" length="min" port="anyPageHeader">
<MINIPAGE name="StripeLayouter3" width="min" length="max" layoutDirection="leftToRight">
<PAGENOBOX name="PageNoBox" x="1.23857" y="max" anchorX="0" anchorY="1" alignment="baseline" baselineType="leftleft" floatingBehavior="enclosed" textAlignment="right"/>
<WORDBOX name="WordBox4" floatingBehavior="enclosed" text="IPPRRP013"/>
<WORDBOX name="WordBox5" x="1.2386" y="453.061" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="PAGINA"/>
<rtl:input-variable name="p_companias.nombre" type="FGLString" expectedLocation="expectedAhead"/>
<WORDWRAPBOX name="p_companias.nombre Value" x="1.2386" y="184.611" width="width(&quot;M&quot;)*25" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="{{p_companias.nombre}}"/>
</MINIPAGE>
<MINIPAGE name="MiniPage7" width="1.5cm" length="max" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="WordBox9" x="5.539" y="40.8204" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="SISTEMA DE INVENTARIO DE PRODUCTOS TERMINADOS"/>
<WORDBOX name="WordBox11" x="22.5047" y="143.465" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="DIAS DE INVENTARIO"/>
<rtl:input-variable name="fecha" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox23" x="5.539" y="437.976" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="{{&quot;FECHA: &quot;+fecha}}"/>
<rtl:input-variable name="hora" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox24" x="27.0497" y="437.976" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="{{&quot;HORA: &quot;+hora}}"/>
</MINIPAGE>
<MINIPAGE name="Table Header" width="min" length="max" alignment="near" layoutDirection="leftToRight">
<WORDBOX name="Spacer" alignment="baseline" baselineType="leftleft" port="itemSeparator" text=" "/>
<LAYOUTNODE name="LayoutNode3" width="min" length="max" alignment="near" fontSize="8" fontBold="true" layoutDirection="leftToRight" floatingBehavior="free">
<WORDBOX name="WordBox13" floatingBehavior="enclosed" text="CODIGO"/>
<WORDBOX name="WordBox14" width="1cm" floatingBehavior="enclosed" text=""/>
<WORDBOX name="WordBox15" floatingBehavior="enclosed" text="DESCRIPCION"/>
<WORDBOX name="WordBox16" width="3cm" alignment="center" floatingBehavior="enclosed" text=""/>
<WORDBOX name="WordBox17" alignment="baseline" floatingBehavior="enclosed" text="VENTAS DEL PERIODO"/>
<WORDBOX name="WordBox18" width="0.6cm" floatingBehavior="enclosed" text=""/>
<WORDBOX name="WordBox19" floatingBehavior="enclosed" text="EXISTENCIA"/>
<WORDBOX name="WordBox33_2" width="0.5cm" alignment="center" floatingBehavior="enclosed" text=""/>
<WORDBOX name="WordBox34" floatingBehavior="enclosed" text="DIAS CON ORDEN"/>
<WORDBOX name="WordBox36" width="0.5cm" floatingBehavior="enclosed" text=""/>
<WORDBOX name="WordBox37" floatingBehavior="enclosed" text="FECHA VENTA"/>
</LAYOUTNODE>
<MINIPAGE name="Separator" width="1" length="max" bgColor="#000000" layoutDirection="leftToRight"/>
</MINIPAGE>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="LayoutNode8" width="min" length="max" alignment="near" fontSize="7" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="x.cod_n" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_grupo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_tipo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_sec" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox18_1" alignment="baseline" baselineType="leftleft" text="{{x.cod_n.format(&quot;###&quot;)+&quot;&quot;+x.cod_grupo.format(&quot;###&quot;)+&quot;&quot;+x.cod_tipo.format(&quot;###&quot;)+&quot;&quot;+x.cod_sec.format(&quot;####&quot;)}}"/>
<WORDBOX name="WordBox19_1" width=".3cm" alignment="baseline" baselineType="leftleft"/>
<rtl:input-variable name="x.descrip_esp" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox33" width="6.5cm" alignment="baseline" baselineType="leftleft" text="{{x.descrip_esp.trim()}}"/>
<WORDBOX name="WordBox21" width="2.4cm" alignment="baseline" baselineType="leftleft"/>
<rtl:input-variable name="x.consumo" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox29" width="1cm" alignment="baseline" floatingBehavior="enclosed" text="{{x.consumo.format(&quot;####&quot;)}}"/>
<LAYOUTNODE name="LayoutNode5" width="0.5cm" length="min" floatingBehavior="enclosed"/>
<rtl:input-variable name="x.existe" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox31_1" width="1cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{x.existe.format(&quot;###,###&quot;)}}"/>
<WORDBOX name="WordBox31_2" width="1cm" floatingBehavior="enclosed" text=""/>
<rtl:input-variable name="x.dias" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox32" width="1cm" floatingBehavior="enclosed" text="{{x.dias.format(&quot;###,###&quot;)}}"/>
<WORDBOX name="WordBox38" width="2cm" floatingBehavior="enclosed" text=""/>
<rtl:input-variable name="fecha_v" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox39" floatingBehavior="enclosed" text="{{fecha_v}}"/>
</LAYOUTNODE>
</rtl:match>
<MINIPAGE name="MiniPage7_1" width="min" length="min">
<WORDBOX name="WordBox31" length=".5cm" floatingBehavior="enclosed" text=""/>
<rtl:input-variable name="total_registros" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox33_1" floatingBehavior="enclosed" text="{{&quot;TOTAL ARTICULOS IMPRESOS: &quot;+total_registros.format(&quot;&gt;&gt;&gt;&gt;&quot;)}}"/>
</MINIPAGE>
</MINIPAGE>
</PXML>
</rtl:match>
</rtl:stylesheet>
</report:Report>
+96
View File
@@ -0,0 +1,96 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="3140a" version="6.00">
<report:Settings RWPageWidth="letterlength" RWPageLength="letterwidth" RWLeftMargin="0.5cm" RWTopMargin="0.5cm" RWRightMargin="0.5cm" RWBottomMargin="0.5cm">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
<report:Format-image/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="ipprrp013.rdd" RWFglReportName="resumen"/>
<report:Conflicts/>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report">
<MINIPAGE name="Page Root" width="max" length="max" alignment="near">
<LAYOUTNODE name="Page Header" width="max" length="min" port="anyPageHeader">
<MINIPAGE name="StripeLayouter3" width="min" length="max" layoutDirection="leftToRight">
<PAGENOBOX name="PageNoBox" x="1.23857" y="max" anchorX="0" anchorY="1" alignment="baseline" baselineType="leftleft" floatingBehavior="enclosed" textAlignment="right"/>
<WORDBOX name="WordBox4" floatingBehavior="enclosed" text="IPPRRP013"/>
<WORDBOX name="WordBox5" x="1.2386" y="453.061" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="PAGINA"/>
<rtl:input-variable name="p_companias.nombre" type="FGLString" expectedLocation="expectedAhead"/>
<WORDWRAPBOX name="p_companias.nombre Value" x="1.2386" y="184.611" width="width(&quot;M&quot;)*25" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="{{p_companias.nombre}}"/>
</MINIPAGE>
<MINIPAGE name="MiniPage7" width="1.5cm" length="max" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="WordBox9" x="5.539" y="40.8204" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="SISTEMA DE INVENTARIO DE PRODUCTOS TERMINADOS"/>
<WORDBOX name="WordBox11" x="22.5047" y="143.465" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="RESUMEN DE MARGEN Y ROTACION POR CLASE"/>
<rtl:input-variable name="fecha" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox23" x="5.539" y="437.976" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="{{&quot;FECHA: &quot;+fecha}}"/>
<rtl:input-variable name="hora" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox24" x="27.0497" y="437.976" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="{{&quot;HORA: &quot;+hora}}"/>
</MINIPAGE>
<MINIPAGE name="PeriodoLine" width="min" length="max" layoutDirection="leftToRight">
<rtl:input-variable name="fecha1" type="FGLString" expectedLocation="expectedAhead"/>
<rtl:input-variable name="fecha2" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBoxP1" floatingBehavior="enclosed" text="{{&quot;PERIODO: &quot;+fecha1+&quot; a &quot;+fecha2}}"/>
</MINIPAGE>
<MINIPAGE name="Table Header" width="min" length="max" alignment="near" layoutDirection="leftToRight">
<WORDBOX name="Spacer" alignment="baseline" baselineType="leftleft" port="itemSeparator" text=" "/>
<LAYOUTNODE name="LayoutNodeHdr" width="min" length="max" alignment="near" fontSize="8" fontBold="true" layoutDirection="leftToRight" floatingBehavior="free">
<WORDBOX name="H_clase" width="5cm" floatingBehavior="enclosed" text="CLASE"/>
<WORDBOX name="H_cat" width="3.5cm" floatingBehavior="enclosed" text="CATEGORIA"/>
<WORDBOX name="H_prod" width="1.4cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="#PROD"/>
<WORDBOX name="H_vinv" width="2.6cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="VALOR INV"/>
<WORDBOX name="H_vta" width="2.6cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="VENTA PERIODO"/>
<WORDBOX name="H_gan" width="2.6cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="GANANCIA"/>
<WORDBOX name="H_mg" width="1.6cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="MARGEN %"/>
<WORDBOX name="H_rot" width="1.8cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="ROT.PROM"/>
<WORDBOX name="H_est" width="1.2cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="#EST"/>
<WORDBOX name="H_rev" width="1.2cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="#REV"/>
</LAYOUTNODE>
<MINIPAGE name="Separator" width="1" length="max" bgColor="#000000" layoutDirection="leftToRight"/>
</MINIPAGE>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="ClaseLine" width="min" length="max" alignment="near" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="r.cod_n" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="r.nombre_clase" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="V_clase" width="5cm" alignment="baseline" baselineType="leftleft" text="{{r.cod_n.format(&quot;####&quot;).trim()+&quot; &quot;+r.nombre_clase.trim()}}"/>
<rtl:input-variable name="r.categoria" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="V_cat" width="3.5cm" alignment="baseline" baselineType="leftleft" text="{{r.categoria.trim()}}"/>
<rtl:input-variable name="r.c_prod" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="V_prod" width="1.4cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{r.c_prod.format(&quot;###,##&amp;&quot;)}}"/>
<rtl:input-variable name="r.c_valor_inv" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="V_vinv" width="2.6cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{r.c_valor_inv.format(&quot;###,###,###,##&amp;.&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="r.c_ventas" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="V_vta" width="2.6cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{r.c_ventas.format(&quot;###,###,###,##&amp;.&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="r.c_ganancia" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="V_gan" width="2.6cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{r.c_ganancia.format(&quot;###,###,###,##&amp;.&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="r.c_margen" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="V_mg" width="1.6cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{r.c_margen.format(&quot;##&amp;.&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="r.c_rot_prom" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="V_rot" width="1.8cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{r.c_rot_prom.format(&quot;###,##&amp;.&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="r.c_estrella" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="V_est" width="1.2cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{r.c_estrella.format(&quot;###,##&amp;&quot;)}}"/>
<rtl:input-variable name="r.c_revisar" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="V_rev" width="1.2cm" alignment="baseline" color="{{r.c_revisar&gt;0?Color.RED:Color.BLACK}}" baselineType="leftleft" textAlignment="right" text="{{r.c_revisar.format(&quot;###,##&amp;&quot;)}}"/>
</LAYOUTNODE>
</rtl:match>
<MINIPAGE name="TotalSep" width="1" length="max" bgColor="#000000" layoutDirection="leftToRight"/>
<MINIPAGE name="TotalLine" width="min" length="max" alignment="near" fontSize="8" fontBold="true" layoutDirection="leftToRight">
<rtl:input-variable name="g_prod" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="T_lbl" width="8.5cm" floatingBehavior="enclosed" text="{{&quot;TOTAL GENERAL (productos: &quot;+g_prod.format(&quot;###,##&amp;&quot;).trim()+&quot;)&quot;}}"/>
<rtl:input-variable name="g_valor_inv" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="T_vinv" width="2.6cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="{{g_valor_inv.format(&quot;###,###,###,##&amp;.&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="g_ventas" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="T_vta" width="2.6cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="{{g_ventas.format(&quot;###,###,###,##&amp;.&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="g_ganancia" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="T_gan" width="2.6cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="{{g_ganancia.format(&quot;###,###,###,##&amp;.&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="g_margen" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="T_mg" width="1.6cm" alignment="baseline" floatingBehavior="enclosed" textAlignment="right" text="{{g_margen.format(&quot;##&amp;.&amp;&amp;&quot;)}}"/>
</MINIPAGE>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+100
View File
@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="3140a" version="6.00">
<report:Settings RWPageWidth="25.00cm" RWPageLength="29.70cm" RWLeftMargin="0.511993cm" RWTopMargin="1.3cm" RWRightMargin="0.430673cm" RWBottomMargin="1.3cm">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
<report:Format-image/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../ipdir/ipprrp053.rdd" RWFglReportName="rpt_ipprrp053"/>
<report:Conflicts>
<report:Conflict nodeName="LayoutNode31_1_1" message="Node was in trigger &quot;OnLastRow [0; 1]&quot;, but trigger was removed during schema update"/>
</report:Conflicts>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report" minOccurs="1" maxOccurs="1">
<MINIPAGE name="pageRoot" width="max" length="766.687" alignment="near" fontName="Arial">
<rtl:match name="FirstPageHeader" nameConstraint="FirstPageHeader" minOccurs="0" maxOccurs="1">
<LAYOUTNODE name="Layout Node7" width="min" length="min" alignment="center" swapX="true" port="firstPageHeader">
<LAYOUTNODE name="Titulo" width="min" length="max" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="0.2" borderStyle="solid" borderColor="#828282">
<WORDBOX name="WordBox159" width="66" alignment="baseline" floatingBehavior="enclosed" text="ipprrp053"/>
<WORDWRAPBOX name="p_companias.nombre Value" width="549.417" length="14.7813" alignment="baseline" floatingBehavior="enclosed" text="{{&quot;MARMOTECH S.A.&quot;}}" textAlignment="center"/>
<WORDBOX name="WordBox159_1" width="66" alignment="baseline" floatingBehavior="enclosed" text=""/>
</LAYOUTNODE>
<MINIPAGE name="StripeLayouter14" width="16.245" length="max" alignment="center" layoutDirection="leftToRight">
<WORDBOX name="WordBox2_1_1" width="146" alignment="baseline" fontBold="true" floatingBehavior="enclosed" textAlignment="left" text="Fecha desde:" borderWidth="0"/>
<WORDBOX name="WordBox2_1" width="153" alignment="baseline" fontBold="true" floatingBehavior="enclosed" textAlignment="left" text="Hasta:" borderWidth="0"/>
<rtl:input-variable name="fecha1" type="FGLString" expectedLocation="expectedHere"/>
<DATEFORMATBOX name="fech_inicio Value" class="grwDateValue" x="0.4891" y="80.0076" width="62.125" anchorX="0" anchorY="0" floatingBehavior="enclosed" format="{{&quot;dd/mm/yyyy&quot;}}" value="{{Date.fromIsoValue(fecha1.isoValue)}}"/>
<rtl:input-variable name="fecha2" type="FGLString" expectedLocation="expectedHere"/>
<DATEFORMATBOX name="fech_corte Value" class="grwDateValue" x="0.4891" y="186.04" width="102.969" anchorX="0" anchorY="0" floatingBehavior="enclosed" format="{{&quot;dd/mm/yyyy&quot;}}" value="{{Date.fromIsoValue(fecha2.isoValue)}}"/>
</MINIPAGE>
<MINIPAGE name="Enc.Secundario" width="min" length="min" alignment="near" layoutDirection="leftToRight" borderWidth="0.2" borderStyle="solid" borderColor="#828282">
<WORDBOX name="WordBox2" width="679.635" alignment="near" fontBold="true" floatingBehavior="enclosed" textAlignment="center" text="INFORME TRANSACCIONES INVENTARIOS" borderWidth="0"/>
<rtl:input-variable name="fecha_actual" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="x.fecha_factura Value" width="141.56" length="22.3906" alignment="near" fontBold="true" floatingBehavior="enclosed" textAlignment="right" text="{{fecha_actual}}" borderWidth="0"/>
</MINIPAGE>
</LAYOUTNODE>
</rtl:match>
<rtl:match name="Group codigo_mov" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="LayoutNode31_1" width="26.5682" length="max" alignment="near" fontSize="9" layoutDirection="leftToRight" borderWidth="1" borderColor="#dfdfdf">
<rtl:input-variable name="x.codigo_mov" type="FGLNumeric" expectedLocation="expectedWayAhead"/>
<rtl:input-variable name="x.descripcion_mov" type="FGLString" expectedLocation="expectedWayAhead"/>
<WORDBOX name="karr_ordenes.valor Value9" class="grwNumericValue" width="254.866" length="25.0469" anchorX="1" alignment="center" fontSize="10" fontBold="true" baselineType="leftleft" textAlignment="left" text="{{&quot;(&quot;+x.codigo_mov+&quot;)&quot;+&quot; &quot;+x.descripcion_mov}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="encabezadod" width="max" length="min" swapX="true">
<MINIPAGE name="StripeLayouter23" width=".1cm" bgColor="#cc" layoutDirection="leftToRight"/>
<MINIPAGE name="encabezadodetalle" width="min" length="max" bgColor="#cccccc" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="WordBox44" width="92.688" length="12.3906" alignment="center" fontSize="8" baselineType="leftleft" textAlignment="center" text="{{&quot;FECHA&quot;}}"/>
<WORDWRAPBOX name="WordWrapBox17" width="84.52" alignment="center" fontSize="8" baselineType="leftleft" text="DOCUMENTO" textAlignment="center"/>
<WORDWRAPBOX name="WordBox120_1_2" width="156.347" alignment="center" fontSize="8" floatingBehavior="enclosed" text="ORIGEN&#10;" textAlignment="center"/>
<WORDWRAPBOX name="WordBox120_4" width="141.347" length="9.1719" alignment="center" fontSize="8" floatingBehavior="enclosed" text="PRODUCTO&#10;" textAlignment="center"/>
<WORDBOX name="WordBox120_1_1" width="84.3465" alignment="center" fontSize="8" floatingBehavior="enclosed" textAlignment="center" text="CANTIDAD"/>
<WORDBOX name="WordBox120_1" width="84.3465" alignment="center" fontSize="8" floatingBehavior="enclosed" textAlignment="center" text="COSTO"/>
</MINIPAGE>
<MINIPAGE name="StripeLayouter25" width=".1cm" bgColor="#cc" layoutDirection="leftToRight"/>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="LayoutNode31" width="34.5682" length="max" alignment="near" fontSize="9" layoutDirection="leftToRight" borderWidth="1" borderStyle="solid" borderColor="#dfdfdf">
<rtl:input-variable name="print_fecha" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox4" width="86.359" length="24.3281" alignment="baseline" fontSize="8" floatingBehavior="enclosed" text="{{print_fecha}}" trimText="both" textAlignment="center"/>
<rtl:input-variable name="print_doc" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox" width="85.197" length="24.2783" alignment="baseline" fontSize="8" baselineType="leftleft" textAlignment="center" text="{{print_doc}}"/>
<LAYOUTNODE name="espacio" width="min" length="3.5197" layoutDirection="leftToRight"/>
<LAYOUTNODE name="espacio5_1" width="21" length="5" layoutDirection="leftToRight"/>
<rtl:input-variable name="print_almacen" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="x.almacen Value" class="grwStringValue" width="width(&quot;M&quot;)*20" length="26.3281" floatingBehavior="enclosed" text="{{print_almacen}}" textAlignment="center"/>
<LAYOUTNODE name="espacio5_1_7" width="21" length="4" layoutDirection="leftToRight"/>
<rtl:input-variable name="x.producto" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="x.producto Value" class="grwStringValue" width="136.688" length="33.3281" fontSize="9" floatingBehavior="enclosed" text="{{x.producto}}" textAlignment="center"/>
<LAYOUTNODE name="espacio5_1_1" width="20" length="5" layoutDirection="leftToRight"/>
<rtl:input-variable name="x.cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="x.cantidad Value" class="grwNumericValue" width="89.9844" length="25.0469" anchorX="1" floatingBehavior="enclosed" textAlignment="center" format="---,---,---,---,---,--&amp;.&amp;&amp;" value="{{x.cantidad}}"/>
<LAYOUTNODE name="espacio5_1_1_1" width="20" length="5" layoutDirection="leftToRight"/>
<rtl:input-variable name="x.costo_standard" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="x.costo_standard Value" class="grwNumericValue" length="25.183" anchorX="1" floatingBehavior="enclosed" textAlignment="center" format="---,---,---,---,---,--&amp;.&amp;&amp;" value="{{x.costo_standard}}"/>
</LAYOUTNODE>
</rtl:match>
<LAYOUTNODE name="LayoutNode31_1_1_1" width="25.433" length="max" alignment="near" fontSize="9" layoutDirection="leftToRight" borderWidth="1" borderStyle="solid" borderColor="#000000">
<rtl:input-variable name="grupo_registros" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox18" width="173.996" length="24.3281" alignment="center" fontBold="true" floatingBehavior="enclosed" text="{{&quot;Total movimiento: &quot;+grupo_registros}}" trimText="both" textAlignment="left"/>
<LAYOUTNODE name="espacio5_1_8" width="20" length="353.377" layoutDirection="leftToRight"/>
<rtl:input-variable name="grupo_cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="arr_costos.codigo_bloque Value7" class="grwStringValue" width="107.174" length="25.0469" fontBold="true" floatingBehavior="enclosed" textAlignment="center" value="{{grupo_cantidad}}"/>
</LAYOUTNODE>
</rtl:match>
<rtl:match name="OnLastRow" nameConstraint="OnLastRow" minOccurs="0" maxOccurs="1">
<LAYOUTNODE name="LayoutNode31_1_1" width="25.433" length="max" alignment="near" fontSize="9" layoutDirection="leftToRight" borderWidth="1" borderStyle="solid" borderColor="#000000">
<rtl:input-variable name="total_registros" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox11" width="174.36" length="24.3281" alignment="center" fontBold="true" floatingBehavior="enclosed" text="{{&quot;Total registros: &quot;+total_registros}}" trimText="both" textAlignment="left"/>
<LAYOUTNODE name="espacio5_1_5" width="20" length="353.377" layoutDirection="leftToRight"/>
<rtl:input-variable name="total_cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="arr_costos.codigo_bloque Value6" class="grwStringValue" width="107.174" length="25.0469" fontBold="true" floatingBehavior="enclosed" textAlignment="center" value="{{total_cantidad}}"/>
</LAYOUTNODE>
</rtl:match>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+174
View File
@@ -0,0 +1,174 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="60003" version="7.00">
<report:Settings RWPageWidth="letterwidth" RWPageLength="letterlength" RWLeftMargin="0.5cm" RWTopMargin="0.5cm" RWRightMargin="0.5cm" RWBottomMargin="0.5cm">
<report:FormatList>
<report:Format-PDF/>
<report:Format-image/>
<report:Format-SVG/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../vedir/veprmt022.rdd" RWFglReportName="imp_factura"/>
<report:Conflicts>
<report:Conflict nodeName="MiniPage1" message="Node was in trigger &quot;Group factura [0; unbounded]&quot;, but trigger was removed during schema update"/>
<report:Conflict nodeName="subtotal" message="Node was in trigger &quot;Group factura [0; unbounded]&quot;, but trigger was removed during schema update"/>
<report:Conflict nodeName="final" message="Node was in trigger &quot;Group factura [0; unbounded]&quot;, but trigger was removed during schema update"/>
</report:Conflicts>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report">
<MINIPAGE name="MiniPage1" width="max" length="min" fontName="Arial">
<LAYOUTNODE name="Layout Node7" width="min" length="min" alignment="near" swapX="true" port="firstPageHeader">
<LAYOUTNODE name="Encabezado" width="min" length="max" alignment="near" layoutDirection="leftToRight" floatingBehavior="enclosed">
<LAYOUTNODE name="LayoutNode40" width="min" length="min" alignment="far" layoutDirection="topToBottom" floatingBehavior="enclosed">
<LAYOUTNODE name="imagen" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<IMAGEBOX name="ImageBox1_1_1" length="70" alignment="near" floatingBehavior="enclosed" url="{{&quot;file:///E:/MARMOTECHC/BIN320/IMAGENES/logo.png&quot;}}" intendedResolution="120"/>
</LAYOUTNODE>
<LAYOUTNODE name="infocia" width="min" length="min" anchorY="1" fontSize="12" floatingBehavior="enclosed">
<WORDBOX name="WordBox9" alignment="near" fontBold="true" baselineType="leftleft" text="{{sucnombre.trim()}}"/>
<WORDWRAPBOX name="WordWrapBox5" width="width(&quot;M&quot;)*33" fontSize="9" floatingBehavior="enclosed" text="{{direccion_sucursal.trim()}}"/>
<LAYOUTNODE name="ourAdress" x="0" width="min" length="min" anchorX="0" layoutDirection="leftToRight" floatingBehavior="enclosed">
<LAYOUTNODE name="Layout Node11" width="min" length="min">
<WORDBOX name="WordBox11_1" alignment="near" fontSize="9" baselineType="leftleft" text="{{&quot;RNC:&quot;}}"/>
<WORDBOX name="WordBox12" alignment="baseline" fontSize="9" baselineType="leftleft" text="Telefono:"/>
</LAYOUTNODE>
<LAYOUTNODE name="Layout Node12" width="min" length="min">
<WORDBOX name="WordBox93" alignment="baseline" fontSize="9" floatingBehavior="enclosed" text="{{p_companias.rnc}}"/>
<WORDBOX name="WordBox15" alignment="baseline" fontSize="9" baselineType="leftleft" text="{{p_companias.telefono}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox32_1_1" alignment="baseline" baselineType="leftleft" text="{{&quot;Fecha Emision: &quot;+x.fecha_factura.value}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
</LAYOUTNODE>
<LAYOUTNODE name="NCF" x="20" y="290" width="282.6" length="min" alignment="near" floatingBehavior="enclosed">
<WORDBOX name="WordBox31_1" width="max" alignment="baseline" fontSize="12" fontBold="true" baselineType="leftleft" textAlignment="right" text="{{descripcion.trim()}}"/>
<WORDBOX name="WordBox73_1" width="max" alignment="baseline" fontSize="12" baselineType="leftleft" textAlignment="right" text="{{ch_ncf.trim()}}"/>
<WORDBOX name="ch_fecha Value" rtl:condition="ncffechaVencimiento==1" width="max" alignment="near" floatingBehavior="enclosed" textAlignment="right" text="{{&quot;Vencimiento Secuencia: &quot;+ch_fecha}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
<MINIPAGE name="razonsolcial" width="min" length="max" alignment="far" layoutDirection="leftToRight" roundedCorners="true" borderWidth="1" borderStyle="solid" borderTopColor="#0087cb" borderRightColor="#ffffff" borderBottomColor="#0087cb" borderLeftColor="#ffffff">
<LAYOUTNODE name="customerAddress" x="0.5cm" width="min" length="min" anchorY="1" layoutDirection="leftToRight" floatingBehavior="enclosed">
<LAYOUTNODE name="Layout Node15" width="min" length="min" alignment="near" fontSize="8">
<LAYOUTNODE name="Layout Node17" width="min" length="min" fontItalic="true" layoutDirection="leftToRight">
<WORDBOX name="WordBox18" alignment="baseline" fontBold="true" baselineType="leftleft" text="{{&quot;Razon Social Cliente: &quot;}}"/>
<WORDBOX name="WordBox19" alignment="near" baselineType="leftleft" text="{{&quot;(&quot;+x.tipo_cliente.format(&quot;&lt;&lt;&quot;)+&quot;-&quot;+x.sec_cliente.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)+&quot;)&quot;+x.nombre.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="Layout Node33" width="min" length="min" layoutDirection="leftToRight">
<WORDBOX name="WordBox64" width="2.2cm" alignment="baseline" fontBold="true" baselineType="leftleft" text="{{&quot;RNC o CEDULA: &quot;}}"/>
<WORDBOX name="WordBox105" floatingBehavior="enclosed" text="{{rnc.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="direccion" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox125" width="2.2cm" alignment="near" fontBold="true" floatingBehavior="enclosed" text="{{&quot;Direccion: &quot;}}"/>
<WORDWRAPBOX name="WordWrapBox6" width="width(&quot;M&quot;)*34" floatingBehavior="enclosed" text="{{x.direccion}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="telefonoemail" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox126" width="2.2cm" floatingBehavior="enclosed" text="Telefono"/>
<WORDBOX name="WordBox123" width="2.3cm" floatingBehavior="enclosed" text="{{cliente_bas.telefono}}"/>
<WORDBOX name="WordBox127" width="4cm" floatingBehavior="enclosed" text="{{&quot; Email:&quot;+cemail.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="representante" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox128" width="2.2cm" floatingBehavior="enclosed" text="Representante"/>
<WORDBOX name="WordBox124" width="4cm" floatingBehavior="enclosed" text="{{x.nombre_vend.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode52" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox121" floatingBehavior="enclosed" text="{{&quot;TASA: &quot;+x.prima_us}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
</LAYOUTNODE>
<LAYOUTNODE name="datosfactura" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<LAYOUTNODE name="LayoutNode53" x="14.1732" width="278.239" length="min" alignment="baseline" layoutDirection="topToBottom" floatingBehavior="enclosed">
<LAYOUTNODE name="LayoutNode55" x="120" width="min" length="min" fontSize="12" fontBold="true" fontItalic="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox129" width="3cm" floatingBehavior="enclosed" text="Factura No.:"/>
<WORDBOX name="WordBox130" width="2cm" alignment="far" floatingBehavior="enclosed" text="{{x.factura.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode56" x="120" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox131" width="3cm" alignment="far" floatingBehavior="enclosed" text="Cotizacion No.:"/>
<WORDBOX name="WordBox132" floatingBehavior="enclosed" text="{{x.conduce.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode57" x="120" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox133" width="3cm" floatingBehavior="enclosed" text="Orden No.:"/>
<WORDBOX name="WordBox134" floatingBehavior="enclosed" text="{{x.orden.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode58" x="120" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox135" width="4cm" alignment="baseline" floatingBehavior="enclosed" text="{{&quot;Condicion Cobros: &quot;+condicion.descrip.trim()}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
</LAYOUTNODE>
</MINIPAGE>
<LAYOUTNODE name="LayoutNode41" width="15" length="min" alignment="near" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox" alignment="baseline" floatingBehavior="enclosed"/>
</LAYOUTNODE>
<MINIPAGE name="StripeLayouter19" width="min" length="max" bgColor="#e5e5e5" fontBold="true" layoutDirection="leftToRight" roundedCorners="true" borderWidth=".9" borderStyle="solid">
<WORDBOX name="WordBox40" width="2.7cm" alignment="baseline" baselineType="leftleft" textAlignment="center" text="Cantidad"/>
<WORDWRAPBOX name="WordWrapBox1" width="8cm" alignment="baseline" baselineType="leftleft" floatingBehavior="free" text="Descripcion"/>
<WORDWRAPBOX name="WordWrapBox" width="width(&quot;M&quot;)*6" alignment="baseline" floatingBehavior="enclosed" text="Unidad de Medida" textAlignment="center"/>
<WORDBOX name="WordBox41" width="2cm" alignment="baseline" baselineType="rightright" textAlignment="right" text="Precio"/>
<WORDBOX name="WordBox98_1" width="5.5cm" floatingBehavior="enclosed" textAlignment="right" text="Total"/>
</MINIPAGE>
<MINIPAGE name="StripeLayouter21" width=".2cm" layoutDirection="leftToRight"/>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<MINIPAGE name="PAGINADETALLE" width="max" lengthAdjustment="shrinkToChildren" swapX="true" hidePageFooterOnLastPage="true" roundedCorners="true" borderWidth=".08" borderStyle="solid">
<MINIPAGE name="DETALLEFACTURA" width="min" length="max" layoutDirection="leftToRight">
<LAYOUTNODE name="LayoutNode31" width="min" length="max" fontSize="8" layoutDirection="leftToRight" roundedCorners="true" borderWidth=".9" borderStyle="solid">
<WORDBOX name="cantidad" width="2.5cm" alignment="baseline" baselineType="leftleft" textAlignment="left" text="{{z.cantidad.format(&quot;###,##&amp;.##&quot;)}}"/>
<WORDWRAPBOX name="WordWrapBox3" width="8cm" alignment="baseline" baselineType="leftleft" text="{{z.descrip_esp.trim()}}"/>
<WORDBOX name="WordBox97" width="2cm" alignment="baseline" floatingBehavior="enclosed" text="{{z.unidad_med.trim()}}"/>
<WORDBOX name="precio" width="2cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{z.precio.format(&quot;###,###.##&quot;)}}"/>
<WORDBOX name="monto" width="6cm" anchorY="1" alignment="baseline" bgColor="#d3d3d3" baselineType="leftleft" floatingBehavior="enclosed" textAlignment="right" text="{{z.monto_fact.format(&quot;##,###,###.##&quot;)}}"/>
</LAYOUTNODE>
</MINIPAGE>
</MINIPAGE>
</rtl:match>
<LAYOUTNODE name="subtotal" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox100" width="17.4cm" floatingBehavior="enclosed" text="Subtotal" borderStyle="none"/>
<WORDBOX name="WordBox101" width="3.1cm" alignment="baseline" bgColor="#d3d3d3" floatingBehavior="enclosed" textAlignment="right" text="{{simbolo.trim()+x.sub_total.format(&quot;###,###,###.##&quot;)}}" roundedCorners="true" borderWidth=".9" borderStyle="solid"/>
</LAYOUTNODE>
<LAYOUTNODE name="final" width="min" length="min" layoutDirection="topToBottom" floatingBehavior="enclosed">
<LAYOUTNODE name="LayoutNode45" width="min" length="min" alignment="near" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox109" width="17.4cm" alignment="baseline" floatingBehavior="enclosed" text="Descuento"/>
<WORDBOX name="WordBox110" width="3.1cm" alignment="baseline" bgColor="#d3d3d3" floatingBehavior="enclosed" textAlignment="right" text="{{simbolo.trim()+x.desc_valor.format(&quot;###,###,###.##&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode46" width="min" length="min" alignment="near" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox111" width="17.4cm" floatingBehavior="enclosed" text="{{&quot;Neto S/Impuesto&quot;}}"/>
<WORDBOX name="WordBox112" width="3.1cm" alignment="baseline" bgColor="#d3d3d3" floatingBehavior="enclosed" textAlignment="right" text="{{simbolo.trim()+neto_s_imp.format(&quot;###,###,###.##&quot;)}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="ITBIS" width="min" length="min" alignment="near" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="false">
<WORDBOX name="WordBox160" width="17.4cm" floatingBehavior="enclosed" text="{{&quot;Itbis&quot;}}"/>
<WORDBOX name="WordBox102_1" width="3.1cm" alignment="baseline" bgColor="#d3d3d3" floatingBehavior="enclosed" textAlignment="right" text="{{simbolo.trim()+x.itbi.format(&quot;###,###,###.##&quot;)}}" roundedCorners="true" borderWidth=".9" borderStyle="solid"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode43" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox103" width="17.3cm" alignment="far" floatingBehavior="enclosed" text="Total" roundedCorners="true" borderWidth=".9" borderStyle="solid"/>
<WORDBOX name="WordBox104" width="3.1cm" bgColor="#d3d3d3" floatingBehavior="enclosed" textAlignment="right" text="{{simbolo.trim()+x.total_fact.format(&quot;###,###,###.##&quot;)}}" roundedCorners="true" borderWidth=".9" borderStyle="solid"/>
</LAYOUTNODE>
<MINIPAGE name="MiniPage2" width=".1cm" bgColor="#0087cb" layoutDirection="leftToRight"/>
<WORDBOX name="WordBox106" length="1cm" floatingBehavior="enclosed"/>
<LAYOUTNODE name="totalesmonedas" rtl:condition="x.prima_us&gt;1" x="max-5.3cm" width="min" length="min" fontSize="9" layoutDirection="topToBottom" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox148" width="4cm" length=".7cm" alignment="baseline" fontBold="true" floatingBehavior="enclosed" textAlignment="center" text="{{&quot;INFORMACION EN RD$&quot;}}"/>
<LAYOUTNODE name="LayoutNode67" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox155" width="2cm" floatingBehavior="enclosed" text="{{&quot;ITBIS:&quot;}}"/>
<WORDBOX name="WordBox156" width="3cm" floatingBehavior="enclosed" textAlignment="right" text="{{chitbis.trim()}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode68" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox157" width="2cm" floatingBehavior="enclosed" text="{{&quot;MONTO TOTAL:&quot;}}"/>
<WORDBOX name="WordBox158" width="3cm" floatingBehavior="enclosed" textAlignment="right" text="{{chneto.trim()}}"/>
</LAYOUTNODE>
<WORDBOX name="WordBox159" length="1cm" floatingBehavior="enclosed"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode69" width="min" length="min" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDWRAPBOX name="WordWrapBox7" width="width(&quot;M&quot;)*60" length="1cm" floatingBehavior="enclosed" text="{{&quot;OBSERVACIONES: &quot;+observacion.trim()}}"/>
</LAYOUTNODE>
<MINIPAGE name="MiniPage" rtl:condition="muestraQR==1" width="min" length="max" layoutDirection="leftToRight">
<BARCODEBOX name="BarCodeBox1" width="4cm" length="4cm" alignment="near" floatingBehavior="enclosed" codeType="qr-code" codeValue="{{dataqrcode.trim()}}"/>
</MINIPAGE>
<LAYOUTNODE name="LayoutNode44" rtl:condition="muestraQR==1" width="min" length="min" floatingBehavior="enclosed">
<WORDBOX name="WordBox108" floatingBehavior="enclosed" text="{{&quot;Codigo de Seguridad:&quot;+xhash.trim()}}"/>
<WORDBOX name="WordBox107" floatingBehavior="enclosed" text="{{&quot;Fecha de Firma Digital: &quot;+chfechafirmadigital.trim()}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+15 -6
View File
@@ -514,19 +514,28 @@ FUNCTION req_insert()
DEFINE ultimo,numeroOrden INT
# WHENEVER ERROR CONTINUE
SELECT a.num_req INTO ultimo FROM cctb00019 a
# 05/10/2026 - consecutivo dentro de la transaccion con bloqueo
# (evita num_req duplicado en cctb00025, ver requisiciondespacho.4gl)
BEGIN WORK
PREPARE p_numreq FROM "SELECT ISNULL(MAX(num_req),0) FROM cctb00019 WITH (UPDLOCK, HOLDLOCK)"
EXECUTE p_numreq INTO ultimo
PREPARE p_maxreq FROM "SELECT ISNULL(MAX(num_req),0) FROM cctb00025 WITH (UPDLOCK, HOLDLOCK)"
EXECUTE p_maxreq INTO numeroOrden
IF ultimo IS NULL THEN
LET ultimo = 0
END IF
IF numeroOrden > ultimo THEN
LET ultimo = numeroOrden
END IF
LET numeroOrden = NULL
LET ultimo = ultimo + 1
LET requisicion.num_req = ultimo
UPDATE cctb00019 SET num_req = requisicion.num_req,us_crea=usuarios,fech_crea=getdate()
UPDATE cctb00019 SET num_req = requisicion.num_req,us_crea=usuarios,fech_crea=getdate()
# GUARDA MASTER TABLE
# PREPARE s FROM "SELECT @@IDENTITY"
BEGIN WORK
# EXECUTE s INTO requisicion.num_req
DISPLAY BY NAME requisicion.num_req
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -629,7 +629,7 @@ REPORT estadistica(x,dias2,c_dias)
FORMAT
FIRST PAGE HEADER
LET hora = time
LET fecha = today
LET fecha = today
LET total_registros = 0
LET tcantidad = 0
LET fecha_v = NULL
@@ -653,14 +653,14 @@ REPORT estadistica(x,dias2,c_dias)
# BUSCA ULTIMA FECHA DE COMPRA Y VENTA DEL PRODUCTO
LET fecha_v = NULL
SELECT convert(char(10),MAX(a.fecha_factura),103) INTO fecha_v
SELECT MAX(a.fecha_factura) INTO fecha_v
FROM vetb00003 d,vetb00002 a
WHERE d.factura = a.factura AND
d.cod_n=x.cod_n AND d.cod_grupo=x.cod_grupo AND
d.cod_tipo = x.cod_tipo AND d.cod_sec = x.cod_sec AND
a.status_t is NULL
LET fecha_oc = NULL
SELECT ISNULL(convert(char(10),MAX(a.fech_oc),103)," ") INTO fecha_oc
SELECT MAX(a.fech_oc) INTO fecha_oc
FROM cotb00015 d,cotb00014 a
WHERE d.num_oc = a.num_oc AND
d.cod_n=x.cod_n AND d.cod_grupo=x.cod_grupo AND
+33 -31
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" version="2.00">
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="60003" version="7.00">
<report:Settings RWPageWidth="letterwidth" RWPageLength="letterlength" RWLeftMargin="0.5cm" RWTopMargin="0.5cm" RWRightMargin="0.5cm" RWBottomMargin="0.5cm">
<report:FormatList>
<report:Format-SVG/>
@@ -8,22 +8,26 @@
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../GUI/ipdir/ipprrp013.rdd" RWFglReportName="estadistica"/>
<report:Conflicts/>
<rtl:stylesheet>
<rtl:match nameConstraint="Report">
<PXML name="Pxml1">
<rtl:match name="Report" nameConstraint="Report">
<PXML>
<MINIPAGE name="Page Root" width="max" length="max" alignment="near">
<LAYOUTNODE name="Page Header" width="max" length="min" port="anyPageHeader">
<MINIPAGE name="StripeLayouter3" width="min" length="max" layoutDirection="leftToRight">
<PAGENOBOX name="PageNoBox" x="1.23857" y="max" anchorX="0" anchorY="1" alignment="baseline" baselineType="leftleft" floatingBehavior="enclosed" textAlignment="right"/>
<WORDBOX name="WordBox4" floatingBehavior="enclosed" text="IPPRRP013"/>
<WORDBOX name="WordBox5" x="1.2386" y="453.061" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="PAGINA"/>
<WORDWRAPBOX name="p_companias.nombre Value" x="1.2386" y="184.611" width="width(&quot;M&quot;)*20" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="ELEMENTS"/>
<rtl:input-variable name="p_companias.nombre" type="FGLString" expectedLocation="expectedAhead"/>
<WORDWRAPBOX name="p_companias.nombre Value" x="1.2386" y="184.611" width="width(&quot;M&quot;)*25" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="{{p_companias.nombre}}"/>
</MINIPAGE>
<MINIPAGE name="MiniPage7" width="1.5cm" length="max" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="WordBox9" x="5.539" y="40.8204" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="SISTEMA DE INVENTARIO DE PRODUCTOS TERMINADOS"/>
<WORDBOX name="WordBox11" x="22.5047" y="143.465" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="DIAS DE INVENTARIO"/>
<WORDBOX name="WordBox23" x="5.539" y="437.976" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="{{&quot;FECHA: &quot;+fecha.value}}"/>
<WORDBOX name="WordBox24" x="27.0497" y="437.976" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="{{&quot;HORA: &quot;+hora.value}}"/>
<rtl:input-variable name="fecha" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox23" x="5.539" y="437.976" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="{{&quot;FECHA: &quot;+fecha}}"/>
<rtl:input-variable name="hora" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox24" x="27.0497" y="437.976" anchorX="0" anchorY="0" floatingBehavior="enclosed" text="{{&quot;HORA: &quot;+hora}}"/>
</MINIPAGE>
<MINIPAGE name="Table Header" width="min" length="max" alignment="near" layoutDirection="leftToRight">
<WORDBOX name="Spacer" alignment="baseline" baselineType="leftleft" port="itemSeparator" text=" "/>
@@ -43,35 +47,33 @@
<MINIPAGE name="Separator" width="1" length="max" bgColor="#000000" layoutDirection="leftToRight"/>
</MINIPAGE>
</LAYOUTNODE>
<rtl:match nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="GRUPO" width="max" length="min" floatingBehavior="enclosed">
<WORDBOX name="WordBox26" floatingBehavior="enclosed" text=""/>
<WORDBOX name="WordBox24_1" alignment="baseline" floatingBehavior="enclosed" text="{{&quot;GRUPO: &quot;+x.grupo}}"/>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="LayoutNode8" width="min" length="max" alignment="near" fontSize="7" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="x.cod_n" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_grupo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_tipo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_sec" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox18_1" alignment="baseline" baselineType="leftleft" text="{{x.cod_n.format(&quot;###&quot;)+&quot;&quot;+x.cod_grupo.format(&quot;###&quot;)+&quot;&quot;+x.cod_tipo.format(&quot;###&quot;)+&quot;&quot;+x.cod_sec.format(&quot;####&quot;)}}"/>
<WORDBOX name="WordBox19_1" width=".3cm" alignment="baseline" baselineType="leftleft"/>
<rtl:input-variable name="x.descrip_esp" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox33" width="6.5cm" alignment="baseline" baselineType="leftleft" text="{{x.descrip_esp.trim()}}"/>
<WORDBOX name="WordBox21" width="2.4cm" alignment="baseline" baselineType="leftleft"/>
<rtl:input-variable name="x.consumo" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox29" width="1cm" alignment="baseline" floatingBehavior="enclosed" text="{{x.consumo.format(&quot;####&quot;)}}"/>
<LAYOUTNODE name="LayoutNode5" width="0.5cm" length="min" floatingBehavior="enclosed"/>
<rtl:input-variable name="x.existe" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox31_1" width="1cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{x.existe.format(&quot;###,###&quot;)}}"/>
<WORDBOX name="WordBox31_2" width="1cm" floatingBehavior="enclosed" text=""/>
<rtl:input-variable name="x.dias" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox32" width="1cm" floatingBehavior="enclosed" text="{{x.dias.format(&quot;###,###&quot;)}}"/>
<WORDBOX name="WordBox38" width="2cm" floatingBehavior="enclosed" text=""/>
<rtl:input-variable name="fecha_v" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox39" floatingBehavior="enclosed" text="{{fecha_v}}"/>
</LAYOUTNODE>
<rtl:match nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="LayoutNode7" width="min" length="min" floatingBehavior="enclosed">
<WORDBOX name="WordBox26_1" floatingBehavior="enclosed" text="{{&quot;TIPO: &quot;+x.tipo}}"/>
<WORDBOX name="WordBox30" floatingBehavior="enclosed" text=""/>
</LAYOUTNODE>
<rtl:match nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="LayoutNode8" width="min" length="max" alignment="near" fontSize="7" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox18_1" alignment="baseline" baselineType="leftleft" text="{{x.cod_n.format(&quot;###&quot;)+&quot;&quot;+x.cod_grupo.format(&quot;###&quot;)+&quot;&quot;+x.cod_tipo.format(&quot;###&quot;)+&quot;&quot;+x.cod_sec.format(&quot;####&quot;)}}"/>
<WORDBOX name="WordBox19_1" width=".3cm" alignment="baseline" baselineType="leftleft"/>
<WORDBOX name="WordBox33" width="6.5cm" alignment="baseline" baselineType="leftleft" text="{{x.descrip_esp.trim()}}"/>
<WORDBOX name="WordBox21" width="2.4cm" alignment="baseline" baselineType="leftleft"/>
<WORDBOX name="WordBox29" width="1cm" alignment="baseline" floatingBehavior="enclosed" text="{{x.consumo.format(&quot;####&quot;)}}"/>
<LAYOUTNODE name="LayoutNode5" width="0.5cm" length="min" floatingBehavior="enclosed"/>
<WORDBOX name="WordBox31_1" width="1cm" alignment="baseline" baselineType="leftleft" textAlignment="right" text="{{x.existe.format(&quot;###,###&quot;)}}"/>
<WORDBOX name="WordBox31_2" width="1cm" floatingBehavior="enclosed" text=""/>
<WORDBOX name="WordBox32" width="1cm" floatingBehavior="enclosed" text="{{x.dias.format(&quot;###,###&quot;)}}"/>
<WORDBOX name="WordBox38" width="2cm" floatingBehavior="enclosed" text=""/>
<WORDBOX name="WordBox39" floatingBehavior="enclosed" text="{{x.fecha}}"/>
</LAYOUTNODE>
</rtl:match>
</rtl:match>
</rtl:match>
<MINIPAGE name="MiniPage7_1" width="min" length="min">
<WORDBOX name="WordBox31" length=".5cm" floatingBehavior="enclosed" text=""/>
<rtl:input-variable name="total_registros" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox33_1" floatingBehavior="enclosed" text="{{&quot;TOTAL ARTICULOS IMPRESOS: &quot;+total_registros.format(&quot;&gt;&gt;&gt;&gt;&quot;)}}"/>
</MINIPAGE>
</MINIPAGE>
+2 -1
View File
@@ -43,6 +43,7 @@ FUNCTION ipprrp053()
OPEN FORM ipfmrp053 FROM "ipfmrp053"
DISPLAY FORM ipfmrp053
CALL ui.Window.getCurrent().setText("Informe Transacciones Inventarios")
INPUT BY NAME fecha1, fecha2
@@ -112,7 +113,7 @@ FUNCTION ipprrp053()
LET r_filename = "ipprrp053.4rp"
IF fgl_report_loadCurrentSettings(r_filename) THEN
LET preview = 1
CALL selectoutput() RETURNING r_output
CALL selectOutputSimple() RETURNING r_output
CALL fgl_report_selectDevice(r_output)
CALL fgl_report_selectPreview(preview)
LET handler = fgl_report_commitCurrentSettings()
+100
View File
@@ -0,0 +1,100 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="3140a" version="6.00">
<report:Settings RWPageWidth="25.00cm" RWPageLength="29.70cm" RWLeftMargin="0.511993cm" RWTopMargin="1.3cm" RWRightMargin="0.430673cm" RWBottomMargin="1.3cm">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
<report:Format-image/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../ipdir/ipprrp053.rdd" RWFglReportName="rpt_ipprrp053"/>
<report:Conflicts>
<report:Conflict nodeName="LayoutNode31_1_1" message="Node was in trigger &quot;OnLastRow [0; 1]&quot;, but trigger was removed during schema update"/>
</report:Conflicts>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report" minOccurs="1" maxOccurs="1">
<MINIPAGE name="pageRoot" width="max" length="766.687" alignment="near" fontName="Arial">
<rtl:match name="FirstPageHeader" nameConstraint="FirstPageHeader" minOccurs="0" maxOccurs="1">
<LAYOUTNODE name="Layout Node7" width="min" length="min" alignment="center" swapX="true" port="firstPageHeader">
<LAYOUTNODE name="Titulo" width="min" length="max" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" borderWidth="0.2" borderStyle="solid" borderColor="#828282">
<WORDBOX name="WordBox159" width="66" alignment="baseline" floatingBehavior="enclosed" text="ipprrp053"/>
<WORDWRAPBOX name="p_companias.nombre Value" width="549.417" length="14.7813" alignment="baseline" floatingBehavior="enclosed" text="{{&quot;MARMOTECH S.A.&quot;}}" textAlignment="center"/>
<WORDBOX name="WordBox159_1" width="66" alignment="baseline" floatingBehavior="enclosed" text=""/>
</LAYOUTNODE>
<MINIPAGE name="StripeLayouter14" width="16.245" length="max" alignment="center" layoutDirection="leftToRight">
<WORDBOX name="WordBox2_1_1" width="146" alignment="baseline" fontBold="true" floatingBehavior="enclosed" textAlignment="left" text="Fecha desde:" borderWidth="0"/>
<WORDBOX name="WordBox2_1" width="153" alignment="baseline" fontBold="true" floatingBehavior="enclosed" textAlignment="left" text="Hasta:" borderWidth="0"/>
<rtl:input-variable name="fecha1" type="FGLString" expectedLocation="expectedHere"/>
<DATEFORMATBOX name="fech_inicio Value" class="grwDateValue" x="0.4891" y="80.0076" width="62.125" anchorX="0" anchorY="0" floatingBehavior="enclosed" format="{{&quot;dd/mm/yyyy&quot;}}" value="{{Date.fromIsoValue(fecha1.isoValue)}}"/>
<rtl:input-variable name="fecha2" type="FGLString" expectedLocation="expectedHere"/>
<DATEFORMATBOX name="fech_corte Value" class="grwDateValue" x="0.4891" y="186.04" width="102.969" anchorX="0" anchorY="0" floatingBehavior="enclosed" format="{{&quot;dd/mm/yyyy&quot;}}" value="{{Date.fromIsoValue(fecha2.isoValue)}}"/>
</MINIPAGE>
<MINIPAGE name="Enc.Secundario" width="min" length="min" alignment="near" layoutDirection="leftToRight" borderWidth="0.2" borderStyle="solid" borderColor="#828282">
<WORDBOX name="WordBox2" width="679.635" alignment="near" fontBold="true" floatingBehavior="enclosed" textAlignment="center" text="INFORME TRANSACCIONES INVENTARIOS" borderWidth="0"/>
<rtl:input-variable name="fecha_actual" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="x.fecha_factura Value" width="141.56" length="22.3906" alignment="near" fontBold="true" floatingBehavior="enclosed" textAlignment="right" text="{{fecha_actual}}" borderWidth="0"/>
</MINIPAGE>
</LAYOUTNODE>
</rtl:match>
<rtl:match name="Group codigo_mov" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="LayoutNode31_1" width="26.5682" length="max" alignment="near" fontSize="9" layoutDirection="leftToRight" borderWidth="1" borderColor="#dfdfdf">
<rtl:input-variable name="x.codigo_mov" type="FGLNumeric" expectedLocation="expectedWayAhead"/>
<rtl:input-variable name="x.descripcion_mov" type="FGLString" expectedLocation="expectedWayAhead"/>
<WORDBOX name="karr_ordenes.valor Value9" class="grwNumericValue" width="254.866" length="25.0469" anchorX="1" alignment="center" fontSize="10" fontBold="true" baselineType="leftleft" textAlignment="left" text="{{&quot;(&quot;+x.codigo_mov+&quot;)&quot;+&quot; &quot;+x.descripcion_mov}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="encabezadod" width="max" length="min" swapX="true">
<MINIPAGE name="StripeLayouter23" width=".1cm" bgColor="#cc" layoutDirection="leftToRight"/>
<MINIPAGE name="encabezadodetalle" width="min" length="max" bgColor="#cccccc" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="WordBox44" width="92.688" length="12.3906" alignment="center" fontSize="8" baselineType="leftleft" textAlignment="center" text="{{&quot;FECHA&quot;}}"/>
<WORDWRAPBOX name="WordWrapBox17" width="84.52" alignment="center" fontSize="8" baselineType="leftleft" text="DOCUMENTO" textAlignment="center"/>
<WORDWRAPBOX name="WordBox120_1_2" width="156.347" alignment="center" fontSize="8" floatingBehavior="enclosed" text="ORIGEN&#10;" textAlignment="center"/>
<WORDWRAPBOX name="WordBox120_4" width="141.347" length="9.1719" alignment="center" fontSize="8" floatingBehavior="enclosed" text="PRODUCTO&#10;" textAlignment="center"/>
<WORDBOX name="WordBox120_1_1" width="84.3465" alignment="center" fontSize="8" floatingBehavior="enclosed" textAlignment="center" text="CANTIDAD"/>
<WORDBOX name="WordBox120_1" width="84.3465" alignment="center" fontSize="8" floatingBehavior="enclosed" textAlignment="center" text="COSTO"/>
</MINIPAGE>
<MINIPAGE name="StripeLayouter25" width=".1cm" bgColor="#cc" layoutDirection="leftToRight"/>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="LayoutNode31" width="34.5682" length="max" alignment="near" fontSize="9" layoutDirection="leftToRight" borderWidth="1" borderStyle="solid" borderColor="#dfdfdf">
<rtl:input-variable name="print_fecha" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox4" width="86.359" length="24.3281" alignment="baseline" fontSize="8" floatingBehavior="enclosed" text="{{print_fecha}}" trimText="both" textAlignment="center"/>
<rtl:input-variable name="print_doc" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox" width="85.197" length="24.2783" alignment="baseline" fontSize="8" baselineType="leftleft" textAlignment="center" text="{{print_doc}}"/>
<LAYOUTNODE name="espacio" width="min" length="3.5197" layoutDirection="leftToRight"/>
<LAYOUTNODE name="espacio5_1" width="21" length="5" layoutDirection="leftToRight"/>
<rtl:input-variable name="print_almacen" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="x.almacen Value" class="grwStringValue" width="width(&quot;M&quot;)*20" length="26.3281" floatingBehavior="enclosed" text="{{print_almacen}}" textAlignment="center"/>
<LAYOUTNODE name="espacio5_1_7" width="21" length="4" layoutDirection="leftToRight"/>
<rtl:input-variable name="x.producto" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="x.producto Value" class="grwStringValue" width="136.688" length="33.3281" fontSize="9" floatingBehavior="enclosed" text="{{x.producto}}" textAlignment="center"/>
<LAYOUTNODE name="espacio5_1_1" width="20" length="5" layoutDirection="leftToRight"/>
<rtl:input-variable name="x.cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="x.cantidad Value" class="grwNumericValue" width="89.9844" length="25.0469" anchorX="1" floatingBehavior="enclosed" textAlignment="center" format="---,---,---,---,---,--&amp;.&amp;&amp;" value="{{x.cantidad}}"/>
<LAYOUTNODE name="espacio5_1_1_1" width="20" length="5" layoutDirection="leftToRight"/>
<rtl:input-variable name="x.costo_standard" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="x.costo_standard Value" class="grwNumericValue" length="25.183" anchorX="1" floatingBehavior="enclosed" textAlignment="center" format="---,---,---,---,---,--&amp;.&amp;&amp;" value="{{x.costo_standard}}"/>
</LAYOUTNODE>
</rtl:match>
<LAYOUTNODE name="LayoutNode31_1_1_1" width="25.433" length="max" alignment="near" fontSize="9" layoutDirection="leftToRight" borderWidth="1" borderStyle="solid" borderColor="#000000">
<rtl:input-variable name="grupo_registros" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox18" width="173.996" length="24.3281" alignment="center" fontBold="true" floatingBehavior="enclosed" text="{{&quot;Total movimiento: &quot;+grupo_registros}}" trimText="both" textAlignment="left"/>
<LAYOUTNODE name="espacio5_1_8" width="20" length="353.377" layoutDirection="leftToRight"/>
<rtl:input-variable name="grupo_cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="arr_costos.codigo_bloque Value7" class="grwStringValue" width="107.174" length="25.0469" fontBold="true" floatingBehavior="enclosed" textAlignment="center" value="{{grupo_cantidad}}"/>
</LAYOUTNODE>
</rtl:match>
<rtl:match name="OnLastRow" nameConstraint="OnLastRow" minOccurs="0" maxOccurs="1">
<LAYOUTNODE name="LayoutNode31_1_1" width="25.433" length="max" alignment="near" fontSize="9" layoutDirection="leftToRight" borderWidth="1" borderStyle="solid" borderColor="#000000">
<rtl:input-variable name="total_registros" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox11" width="174.36" length="24.3281" alignment="center" fontBold="true" floatingBehavior="enclosed" text="{{&quot;Total registros: &quot;+total_registros}}" trimText="both" textAlignment="left"/>
<LAYOUTNODE name="espacio5_1_5" width="20" length="353.377" layoutDirection="leftToRight"/>
<rtl:input-variable name="total_cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="arr_costos.codigo_bloque Value6" class="grwStringValue" width="107.174" length="25.0469" fontBold="true" floatingBehavior="enclosed" textAlignment="center" value="{{total_cantidad}}"/>
</LAYOUTNODE>
</rtl:match>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+14 -2
View File
@@ -630,11 +630,13 @@
<Application binaryName="ipprrp013" dependencies="1763548104,-1026233879,-764824792,-1423229125" externalDependencies="libgre.42x" id="-960000026" label="ipprrp013">
<Configuration commandLineArguments="jpeguero Peguero2023" id="-961000026" label="Configuration"/>
<File compilerOptions="--build-rdd" filePath="ipdir/ipprrp013.4gl"/>
<File filePath="bin/ipprrp013r.4rp"/>
<File filePath="ipdir/ipfmrp013.4fd"/>
</Application>
<Application binaryName="ipprrp053" dependencies="1763548104,-1026233879,-764824792" externalDependencies="libgre.42x" id="-960000027" label="ipprrp053">
<Application binaryName="ipprrp053" dependencies="1763548104,-1026233879,-764824792,-1423229125" externalDependencies="libgre.42x" id="-960000027" label="ipprrp053">
<Configuration commandLineArguments="jpeguero Peguero2023" id="-961000027" label="Configuration"/>
<File compilerOptions="--build-rdd" filePath="ipdir/ipprrp053.4gl"/>
<File filePath="ipdir/ipfmrp053.4fd"/>
</Application>
<Application binaryName="ipprrp014" dependencies="1763548104,-1026233879,-764824792" externalDependencies="libgre.42x" id="-960000028" label="ipprrp014">
<Configuration commandLineArguments="jpeguero Peguero2023" id="-961000028" label="Configuration"/>
@@ -745,6 +747,7 @@
</Library>
</Group>
<Group id="46006545" label="RECURSOS HUMANOS">
<Group id="328490448" label="ADMINISTRACION PERSONAL"/>
<Library binaryName="FORMULARIOS_AD" id="1612573873" label="FORMULARIOS_AD">
<File filePath="addir/adfmwd004.per"/>
</Library>
@@ -888,6 +891,7 @@
<File filePath="nodir/noprrp045.4gl"/>
<File filePath="bin/noprrp045.4rp"/>
</Application>
<Group id="942743738" label="NOMINA"/>
</Group>
<Group id="-802694369" label="REPORTE ENTRADA">
<Library binaryName="FORMULARIO_AL" id="267647114" label="FORMULARIO_AL"/>
@@ -942,6 +946,8 @@
<File filePath="vedir/vefmwd102.per"/>
</Library>
<Library binaryName="FUNCIONES_VE" dependencies="-1026233879" id="-1093277845" label="FUNCIONES_VE">
<File filePath="vedir/codigoncf.4gl"/>
<File filePath="otrodir/formaspago.4gl"/>
<File filePath="vedir/vefumt001.4gl"/>
<File filePath="vedir/veprgb000.4gl"/>
</Library>
@@ -961,9 +967,15 @@
<Configuration commandLineArguments="jsoto lmmjvsd2014" id="684926648" label="Configuration"/>
<File filePath="vedir/veprmt025.4gl"/>
</Application>
<Application binaryName="veprmt001" dependencies="-1093277845,-1026233879,-764824792" id="200550882" label="veprmt001">
<Application binaryName="veprmt001" dependencies="-1093277845,-1026233879,-764824792,-1423229125" externalDependencies="libgre.42x" id="200550882" label="veprmt001">
<Configuration commandLineArguments="jsoto lmmjvsd2014" id="1427917002" label="Configuration"/>
<File filePath="vedir/veprmt001.4gl"/>
<File filePath="otrodir/buscarnc.4gl"/>
<File filePath="vedir/veconduce.4gl"/>
<File filePath="vedir/vecontroexistencia.4gl"/>
<File compilerOptions="--build-rdd" filePath="vedir/vefactura.4gl"/>
<File filePath="bin/veprmt022.4rp"/>
<File filePath="otrodir/verifica_cantidad.4gl"/>
</Application>
<Application binaryName="veprmt024" dependencies="-1093277845,-1026233879,-764824792" id="773751002" label="veprmt024">
<Configuration commandLineArguments="jsoto lmmjvsd2014" id="1651668050" label="Configuration"/>
@@ -0,0 +1,360 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ManagedForm databaseName="smarmotech" fileVersion="40100" gstVersion="60003" name="ManagedForm" uid="{5bf98cc1-b062-4aac-994b-1a85d5a86fdc}">
<AGSettings>
<DynamicProperties version="4"/>
</AGSettings>
<Record additionalTables="" joinLeft="" joinOperator="" joinRight="" name="Undefined" order="" uid="{490c8c5c-b330-43bd-aa59-a3860119ae91}" where="">
<RecordField colName="num_emp" fieldIdRef="6" fieldType="TABLE_COLUMN" name="adtb00003.num_emp" sqlTabName="adtb00003" sqlType="SMALLINT" table_alias_name="" uid="{4feb0513-abfb-4b70-8499-21c92fd11753}"/>
<RecordField colName="" fieldIdRef="7" fieldType="NON_DATABASE" name="departamento" sqlTabName="" sqlType="SMALLINT" table_alias_name="" uid="{081e8811-7d0d-4d9c-b03e-460eb2cf5dec}"/>
<RecordField colName="" fieldIdRef="9" fieldType="NON_DATABASE" name="cod_puesto" sqlTabName="" sqlType="SMALLINT" table_alias_name="" uid="{98692374-598f-4135-bd52-1b9a5de2b55b}"/>
<RecordField colName="fotos" fieldIdRef="2" name="fotos" sqlTabName="formonly" table_alias_name="" uid="{5375c60d-38e3-4385-84dd-079727a2e943}"/>
<RecordField colName="nom1_emp" fieldIdRef="10" fieldType="TABLE_COLUMN" name="adtb00003.nom1_emp" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{2dc450d3-aa01-44ed-a8ce-e9bc8dd30999}"/>
<RecordField colName="nom2_emp" fieldIdRef="11" fieldType="TABLE_COLUMN" name="adtb00003.nom2_emp" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{0f8c40d8-ce4b-409e-ae3f-13d664146844}"/>
<RecordField colName="apell1_emp" fieldIdRef="12" fieldType="TABLE_COLUMN" name="adtb00003.apell1_emp" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{2ee8839c-b094-4265-9df4-b1e6c297e3d9}"/>
<RecordField colName="apell2_emp" fieldIdRef="13" fieldType="TABLE_COLUMN" name="adtb00003.apell2_emp" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{f5fcc1e4-a1b6-4b99-8116-35a56583997d}"/>
<RecordField colName="nom_puesto" fieldIdRef="14" fieldType="TABLE_COLUMN" name="adtb00004.nom_puesto" sqlTabName="adtb00004" sqlType="CHAR" table_alias_name="" uid="{3937d342-cbef-4d86-8ddb-b219f3266e3c}"/>
<RecordField colName="nom_dpto" fieldIdRef="15" fieldType="TABLE_COLUMN" name="adtb00001.nom_dpto" sqlTabName="adtb00001" sqlType="CHAR" table_alias_name="" uid="{e63f176e-6785-4264-9c4f-333d938f82f0}"/>
<RecordField colName="calle" fieldIdRef="16" fieldType="TABLE_COLUMN" name="adtb00003.calle" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{5bab2a43-0644-4814-80b0-5468ab21a59d}"/>
<RecordField colName="barrio" fieldIdRef="18" fieldType="TABLE_COLUMN" name="adtb00003.barrio" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{9163e4e4-0468-4086-9129-ef219a1e7004}"/>
<RecordField colName="urbanizacion" fieldIdRef="19" fieldType="TABLE_COLUMN" name="adtb00003.urbanizacion" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{6d5bac99-2518-452c-9699-917f69a25241}"/>
<RecordField fieldIdRef="20" fieldType="NON_DATABASE" length="11" name="cedula" sqlType="CHAR" table_alias_name="" uid="{d8f19aa3-9af4-4eaf-97d6-f6cf347c5b8b}"/>
<RecordField colName="serie" fieldIdRef="21" fieldType="TABLE_COLUMN" name="adtb00003.serie" sqlTabName="adtb00003" sqlType="SMALLINT" table_alias_name="" uid="{ff2361ba-847d-4264-a4f6-bd7a906baf3f}"/>
<RecordField colName="telefono" fieldIdRef="26" name="telefono" sqlTabName="formonly" table_alias_name="" uid="{2403c8ca-2915-4bc0-8e61-ad9ac59d1af7}"/>
<RecordField colName="fech_nac" fieldIdRef="22" fieldType="TABLE_COLUMN" name="adtb00003.fech_nac" sqlTabName="adtb00003" sqlType="DATE" table_alias_name="" uid="{a436bb39-2337-42ad-999c-636881481a86}"/>
<RecordField colName="cod_nac" fieldIdRef="23" fieldType="TABLE_COLUMN" name="adtb00003.cod_nac" sqlTabName="adtb00003" sqlType="SMALLINT" table_alias_name="" uid="{3b8f576a-9c8c-49ff-9501-0a90922909dd}"/>
<RecordField colName="nom_nac" fieldIdRef="24" fieldType="TABLE_COLUMN" name="adtb00007.nom_nac" sqlTabName="adtb00007" sqlType="CHAR" table_alias_name="" uid="{8f620000-0694-472f-b5de-0e24adb061b8}"/>
<RecordField colName="estado_civil" fieldIdRef="27" fieldType="TABLE_COLUMN" name="adtb00003.estado_civil" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{45e29cdd-6c02-4d3d-b787-fe08d4e101b9}"/>
<RecordField colName="tipo_sangre" fieldIdRef="29" fieldType="TABLE_COLUMN" name="adtb00003.tipo_sangre" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{024a7ab0-ce3e-45d5-a735-26421d2ff1ec}"/>
<RecordField colName="nomina" fieldIdRef="31" fieldType="TABLE_COLUMN" name="adtb00003.nomina" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{ca455153-595d-4863-808c-489142306153}"/>
<RecordField colName="descrip" fieldIdRef="32" name="descrip" sqlTabName="formonly" table_alias_name="" uid="{04438030-690f-4fd8-aaa2-83e1c027f1cc}"/>
<RecordField colName="fech_efec" fieldIdRef="33" fieldType="TABLE_COLUMN" name="adtb00003.fech_efec" sqlTabName="adtb00003" sqlType="DATE" table_alias_name="" uid="{75116c66-c029-4375-b161-4266dc5c8497}"/>
<RecordField colName="paga_seg" fieldIdRef="39" fieldType="TABLE_COLUMN" name="adtb00003.paga_seg" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{970d97eb-8d78-477d-b6e4-21b61e4c89cf}"/>
<RecordField colName="cod_seg1" fieldIdRef="36" fieldType="TABLE_COLUMN" name="adtb00003.cod_seg1" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{4c841bde-c6a1-4acb-b898-3d9190d51412}"/>
<RecordField colName="cod_seg2" fieldIdRef="37" fieldType="TABLE_COLUMN" name="adtb00003.cod_seg2" sqlTabName="adtb00003" sqlType="SMALLINT" table_alias_name="" uid="{3794cf6b-4e5d-4fd0-8a18-5a1c718bd892}"/>
<RecordField colName="localidad" fieldIdRef="1" name="localidad" sqlTabName="formonly" table_alias_name="" uid="{4f1c881a-9d71-4d55-b09e-07df6d063466}"/>
<RecordField colName="descrip_st" fieldIdRef="5" name="descrip_st" sqlTabName="formonly" table_alias_name="" uid="{d44c1245-2fc3-4423-a1f3-1c8c000764fc}"/>
<RecordField colName="casa_num" fieldIdRef="17" fieldType="TABLE_COLUMN" name="adtb00003.casa_num" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{111bf751-06b7-4dff-944d-e2b930f046e0}"/>
<RecordField colName="credito" fieldIdRef="0" name="credito" sqlTabName="formonly" table_alias_name="" uid="{7894fd9c-4095-4233-8283-7ea87b343bfa}"/>
<RecordField colName="licencia" fieldIdRef="25" fieldType="TABLE_COLUMN" name="adtb00003.licencia" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{5c751079-1303-4ce4-acb1-b0c3b7673794}"/>
<RecordField colName="p_sexo" fieldIdRef="34" name="p_sexo" sqlTabName="formonly" sqlType="CHAR" table_alias_name="" uid="{3b6f1e9e-8a35-4bf9-92be-a084d3d9f799}"/>
<RecordField colName="tipo_sexo" fieldIdRef="35" name="tipo_sexo" sqlTabName="formonly" table_alias_name="" uid="{cd8e0645-387e-443c-984e-33307ed137d6}"/>
<RecordField colName="cod_seg3" defaultValue="1" fieldIdRef="38" fieldType="TABLE_COLUMN" name="adtb00003.cod_seg3" sqlTabName="adtb00003" sqlType="SMALLINT" table_alias_name="" uid="{a6011d93-8ed9-4413-b5a6-2fda05931cb6}"/>
<RecordField colName="sueldo_ac" fieldIdRef="30" fieldType="TABLE_COLUMN" name="adtb00003.sueldo_ac" precisionDecimal="10" scaleDecimal="2" sqlTabName="adtb00003" sqlType="DECIMAL" table_alias_name="" uid="{b8e6fc34-0883-4d61-84bc-5af562c0914b}"/>
<RecordField colName="fecha_salida" fieldIdRef="3" name="fecha_salida" sqlTabName="formonly" sqlType="DATE" table_alias_name="" uid="{274f2ebc-ed68-4c84-b93a-bd05f9c9bc26}"/>
<RecordField colName="cuenta_no" fieldIdRef="4" fieldType="TABLE_COLUMN" name="adtb00003.cuenta_no" sqlTabName="adtb00003" sqlType="VARCHAR" table_alias_name="" uid="{d6e44c3a-0ebb-4f95-a907-aec3572a66d8}"/>
<RecordField colName="status_t" fieldIdRef="40" fieldType="TABLE_COLUMN" name="adtb00003.status_t" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{6406bdfc-baa3-4ae1-8cbc-a27e94f80087}"/>
<RecordField colName="us_crea" fieldIdRef="41" fieldType="TABLE_COLUMN" name="adtb00003.us_crea" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{dcb5b900-e5b7-41fb-a209-e4a20a25d78b}"/>
<RecordField colName="us_mod" fieldIdRef="43" fieldType="TABLE_COLUMN" name="adtb00003.us_mod" sqlTabName="adtb00003" sqlType="CHAR" table_alias_name="" uid="{54f0e4da-9591-4237-8410-1d86f9b928aa}"/>
<RecordField colName="fech_crea" fieldIdRef="42" fieldType="TABLE_COLUMN" name="adtb00003.fech_crea" qual1="YEAR" qualFraction="FRACTION(3)" sqlTabName="adtb00003" sqlType="DATETIME" table_alias_name="" uid="{75ef7ce8-7920-4307-bbd5-d9abe540b50f}"/>
<RecordField colName="fech_mod" fieldIdRef="44" fieldType="TABLE_COLUMN" name="adtb00003.fech_mod" qual1="YEAR" qualFraction="FRACTION(3)" sqlTabName="adtb00003" sqlType="DATETIME" table_alias_name="" uid="{5240b45f-83a6-4d2b-8948-ea05adb49fdb}"/>
<RecordField colName="fecha_salida" fieldIdRef="45" name="fecha_ultimo_aumento" sqlTabName="formonly" sqlType="DATE" table_alias_name="" uid="{515ff4ef-a63a-4afb-8956-1e9b3856d1d4}"/>
<RecordField colName="" fieldIdRef="46" name="sec_vend_sup" sqlTabName="" table_alias_name="" uid="{447e0eb3-7e79-49f0-ad7f-8ee5340d744d}"/>
<RecordField colName="" fieldIdRef="58" name="sec_vend_supervisor" sqlTabName="" table_alias_name="" uid="{dc4a28ee-6dc7-482f-bdd8-7599eb260431}"/>
<RecordField colName="" fieldIdRef="59" name="nombre_supervisor" sqlTabName="" table_alias_name="" uid="{75342cd2-3685-48de-8efa-6542b501d001}"/>
<RecordField colName="" defaultValue="1" fieldIdRef="60" name="tipocuenta" sqlTabName="" table_alias_name="" uid="{3ddb28a4-0d03-4daa-8d5d-56bf41ad4b48}"/>
<RecordField colName="" defaultValue="10101070" fieldIdRef="61" name="codbancodestino" sqlTabName="" table_alias_name="" uid="{de0451f9-623b-4b44-8c57-62b0e84617f6}"/>
<RecordField colName="" fieldIdRef="62" name="digiverbancodestino" sqlTabName="" table_alias_name="" uid="{c49fb61c-0e8a-4fa8-b210-9c2f9f4fe19c}"/>
<RecordField colName="" defaultValue="FIJO" fieldIdRef="63" name="tipo_sueldo" sqlTabName="" table_alias_name="" uid="{e750b10f-ad62-408b-b65f-71094d6f91ae}"/>
<RecordField colName="" fieldIdRef="64" name="email" sqlTabName="" table_alias_name="" uid="{cd560286-be50-4ca8-a2d3-c2fd5c6ce871}"/>
<RecordField colName="" defaultValue="NO" fieldIdRef="65" name="instalador" sqlTabName="" table_alias_name="" uid="{074c6cbc-0aaa-4841-940d-8654653666d0}"/>
<RecordField colName="" fieldIdRef="66" name="cuenta_aux" sqlTabName="" table_alias_name="" uid="{837e19e0-6f11-45bb-8636-46775a954700}"/>
<RecordField colName="" fieldIdRef="67" name="descripcion_cuenta" sqlTabName="" table_alias_name="" uid="{22b9abe4-5dd7-4e65-9dc8-c8483aaad9bc}"/>
<RecordField colName="" defaultValue="1" fieldIdRef="68" name="moneda" sqlTabName="" table_alias_name="" uid="{28072654-ebbe-4fb6-b449-7e5d9a162bb0}"/>
<RecordField colName="" fieldIdRef="69" name="valorrd" sqlTabName="" table_alias_name="" uid="{e9141fd0-b3b9-472d-9205-50d59673c275}"/>
<RecordField colName="" fieldIdRef="70" name="tasa" sqlTabName="" table_alias_name="" uid="{b02c7437-47fe-48c7-af7b-c1a1939ad755}"/>
<RecordField colName="" fieldIdRef="71" name="cuenta_out" sqlTabName="" table_alias_name="" uid="{32a4052e-b473-48b6-b724-12aed7a43f88}"/>
<RecordField colName="" fieldIdRef="72" name="departamento_out" sqlTabName="" table_alias_name="" uid="{759e2be4-f8d0-457f-874a-43fbae5a06b6}"/>
<RecordField colName="" fieldIdRef="73" name="nombre_out" sqlTabName="" table_alias_name="" uid="{fc6d87c6-7fe3-453f-8fe7-42bc1ef3f05f}"/>
<RecordField colName="" fieldIdRef="74" name="num_emp_supervisor" sqlTabName="" table_alias_name="" uid="{aa382c09-48a7-4298-ac66-535a21a2455c}"/>
<RecordField colName="" fieldIdRef="75" name="nombre_super" sqlTabName="" table_alias_name="" uid="{84c5ff1f-1f23-4a99-88cc-87080807a3ba}"/>
<RecordField colName="" fieldIdRef="76" name="nivel_emp" sqlTabName="" table_alias_name="" uid="{00c17420-b5f8-4fb5-ab3c-104e116c0d8e}"/>
<RecordField fieldIdRef="8" name="fecha_suspension" uid="{2745f11b-199a-40f3-a254-572aa945d7e0}"/>
<RecordField fieldIdRef="77" name="codigo_retiro_bco" uid="{4aabc8f7-bd3b-4959-b98f-b19ec374ba67}"/>
<RecordField defaultValue="NO" fieldIdRef="78" name="retiro_comercial" uid="{90b270e5-7681-40b2-b54b-d74ec6fddd36}"/>
<RecordField fieldIdRef="79" name="estado_legal" uid="{a8ea96fa-dc1f-43d2-8b39-1f533c6c45e7}"/>
<RecordField defaultValue="SI" fieldIdRef="80" name="genera_file_bco" uid="{22e6b273-6354-4690-aceb-a6a6f0cf088e}"/>
<RecordField fieldIdRef="81" name="observacion" uid="{386331f5-b16d-47c4-b771-bba34d2695d6}"/>
<RecordField fieldIdRef="82" name="combobox1" uid="{f4f1f6e8-9dbc-41e6-bd16-22e62d72ec18}"/>
<RecordField defaultValue="CEDULA" fieldIdRef="83" name="tipo_documento" uid="{ff65f57a-feb3-41b3-a3d0-eda9db81de3f}"/>
<RecordField defaultValue="NO" fieldIdRef="84" name="gerentemarcas" uid="{893f39f1-feea-4ccf-8817-0973928269de}"/>
<RecordField fieldIdRef="85" name="alias" uid="{8b28d403-2cfa-4509-9024-d48ad2b14368}"/>
<RecordField defaultValue="NO" fieldIdRef="86" name="enviar_volante" uid="{4983a089-4097-4fb0-9d09-6a8c63a0e25e}"/>
<RecordField defaultValue="NO" fieldIdRef="87" name="enviar_encuesta" uid="{211240e2-5f56-4fd1-885e-3c15e421b9ec}"/>
<RecordField fieldIdRef="88" name="telefonoCorporativo" uid="{d81c8030-2426-4b8f-8a18-7a5252bdae11}"/>
<RecordField fieldIdRef="89" name="numeroOficina" uid="{4e05b2fc-d82a-4fab-972b-a364da855cfc}"/>
<RecordField fieldIdRef="90" name="extension" uid="{d6637114-3d62-4201-a5ed-08e8971c47bd}"/>
<RecordField colName="" fieldIdRef="91" name="email_corporativo" sqlTabName="" table_alias_name="" uid="{beb90f8a-330e-438a-9bda-44c361411505}"/>
</Record>
<Record additionalTables="" joinLeft="" joinOperator="" joinRight="" name="s_comisiones" order="" uid="{2fd34cfe-7434-4588-9701-90230b646d4d}" where="">
<RecordField colName="" fieldIdRef="47" name="sec_vend" sqlTabName="" table_alias_name="" uid="{dc61578e-3442-4a67-a552-797118da9e81}"/>
<RecordField colName="" fieldIdRef="48" name="nombre_vend" sqlTabName="" table_alias_name="" uid="{9e620625-d063-405c-9d8a-ef723c6910b6}"/>
<RecordField colName="" fieldIdRef="49" name="porc_cobros" sqlTabName="" table_alias_name="" uid="{705695e0-9906-483a-8d75-f3dff325fb65}"/>
<RecordField colName="" fieldIdRef="50" name="porc_cobros_a" sqlTabName="" table_alias_name="" uid="{72d31938-3a8f-49ed-9ad5-fb94291aa89d}"/>
</Record>
<Record additionalTables="" joinLeft="" joinOperator="" joinRight="" name="s_adicionales" order="" uid="{d4a05e54-66e4-432d-ae50-e1dfdfa37f00}" where="">
<RecordField colName="" fieldIdRef="51" name="sec_vend1" sqlTabName="" table_alias_name="" uid="{337b6444-84de-4ddd-a61a-15acba688cd5}"/>
<RecordField colName="" fieldIdRef="57" name="nombre_vend1" sqlTabName="" table_alias_name="" uid="{4d915661-7886-4e5a-9445-7c6df960bb70}"/>
<RecordField colName="" fieldIdRef="52" name="cod_n" sqlTabName="" table_alias_name="" uid="{9a965de9-1dad-457c-b36d-029c6edf5d8a}"/>
<RecordField colName="" fieldIdRef="53" name="descripcion" sqlTabName="" table_alias_name="" uid="{d91ca76d-d57d-4f97-8e61-5a48da9f6b8d}"/>
<RecordField colName="" fieldIdRef="54" name="porc_vendedor" sqlTabName="" table_alias_name="" uid="{7eedc394-7d47-40fa-a302-af3f8baa754d}"/>
<RecordField colName="" fieldIdRef="55" name="porc_supervisor" sqlTabName="" table_alias_name="" uid="{8a401a6b-c4e7-49cc-bcf3-be7b374a14f5}"/>
<RecordField colName="" fieldIdRef="56" name="porc_directo" sqlTabName="" table_alias_name="" uid="{2a8c5b53-4611-452b-8687-65472f2d7724}"/>
</Record>
<Record additionalTables="" name="s_herramientas" uid="{a1c2e3f4-0001-4a10-9b20-11aa22bb3301}">
<RecordField colName="" fieldIdRef="92" name="h_codigo" sqlTabName="" table_alias_name="" uid="{a1c2e3f4-0002-4a10-9b20-11aa22bb3302}"/>
<RecordField colName="" fieldIdRef="93" name="h_descripcion" sqlTabName="" table_alias_name="" uid="{a1c2e3f4-0003-4a10-9b20-11aa22bb3303}"/>
<RecordField colName="" fieldIdRef="94" name="h_fecha" sqlTabName="" table_alias_name="" uid="{a1c2e3f4-0004-4a10-9b20-11aa22bb3304}"/>
<RecordField colName="" fieldIdRef="95" name="h_documento" sqlTabName="" table_alias_name="" uid="{a1c2e3f4-0005-4a10-9b20-11aa22bb3305}"/>
<RecordField colName="" fieldIdRef="96" name="h_cantidad" sqlTabName="" table_alias_name="" uid="{a1c2e3f4-0006-4a10-9b20-11aa22bb3306}"/>
</Record>
<Form gridHeight="44" gridWidth="247" name="nofmmt003" style="basic" text="MAESTRA EMPLEADOS">
<ActionDefaultList name="ActionDefaultList1">
<ActionDefault name="busca_foto" text="Buscar Fotos"/>
</ActionDefaultList>
<ToolBar name="ToolBar1">
<ToolBarItem comment="Nuevo Empleado" image="new" name="nuevo" text="Empleados"/>
<ToolBarItem comment="Criterio de busqueda" image="find" name="buscar" text="Buscar Empleado"/>
<ToolBarSeparator name="ToolBarSeparator1"/>
<ToolBarItem image="quit" name="salir" text="Salir"/>
</ToolBar>
<Folder gridHeight="43" gridWidth="246" name="Folder1" posX="1" posY="1">
<Page name="General" text="General">
<Grid gridHeight="40" gridWidth="116" name="Grid1" posX="0" posY="0">
<Group gridHeight="8" gridWidth="98" name="Group1" posX="1" posY="1" text="Empleados">
<Label posX="2" posY="1" text="Ficha No."/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="num_emp" fieldId="6" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="7" name="adtb00003.num_emp" notNull="true" posX="14" posY="1" required="true" sqlTabName="adtb00003" sqlType="SMALLINT" tabIndex="1" table_alias_name="" widget="Edit"/>
<FFImage aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoScale="true" colName="fotos" fieldId="2" gridHeight="5" gridWidth="23" name="fotos" posX="73" posY="1" sqlTabName="formonly" stretch="both" table_alias_name="" unitWidth="characters" widget="FFImage" width="17"/>
<Label gridHeight="1" gridWidth="10" name="Label42" posX="2" posY="2" text="Departamento"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="7" fieldType="NON_DATABASE" gridHeight="1" gridWidth="43" items="" length="1" name="departamento" posX="14" posY="2" sqlTabName="" sqlType="SMALLINT" tabIndex="2" table_alias_name="" widget="ComboBox"/>
<Label gridHeight="1" gridWidth="10" name="Label43" posX="2" posY="3" text="Puesto"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="9" fieldType="NON_DATABASE" gridHeight="1" gridWidth="43" items="" length="1" name="cod_puesto" posX="14" posY="3" sqlTabName="" sqlType="SMALLINT" tabIndex="3" table_alias_name="" widget="ComboBox"/>
<Button gridHeight="1" gridWidth="8" name="busca_foto" posX="62" posY="3" tabIndex="8"/>
<Label gridHeight="1" gridWidth="6" name="Label44" posX="2" posY="4" text="Nombre"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="nom1_emp" fieldId="10" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="21" name="adtb00003.nom1_emp" posX="14" posY="4" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="4" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="nom2_emp" fieldId="11" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="21" name="adtb00003.nom2_emp" posX="37" posY="4" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="5" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="9" name="Label45" posX="2" posY="5" text="Apellidos"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="apell1_emp" fieldId="12" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="21" name="adtb00003.apell1_emp" posX="14" posY="5" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="6" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="apell2_emp" fieldId="13" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="21" name="adtb00003.apell2_emp" posX="37" posY="5" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="7" table_alias_name="" widget="Edit"/>
<CheckBox defaultValue="NO" fieldId="84" gridHeight="1" gridWidth="11" name="gerentemarcas" posX="2" posY="6" tabIndex="-1" text="Gerente Marcas" title="checkbox1" valueChecked="SI" valueUnchecked="NO" widget="CheckBox"/>
<CheckBox defaultValue="NO" fieldId="86" gridHeight="1" gridWidth="11" name="enviar_volante" posX="20" posY="6" tabIndex="-1" text="Envia Volante" title="checkbox1" valueChecked="SI" valueUnchecked="NO" widget="CheckBox"/>
<CheckBox defaultValue="NO" fieldId="87" gridHeight="1" gridWidth="11" name="enviar_encuesta" posX="40" posY="6" tabIndex="-1" text="Envia Encuesta" title="checkbox1" valueChecked="SI" valueUnchecked="NO" widget="CheckBox"/>
</Group>
<Group gridHeight="23" gridWidth="45" name="Group3" posX="60" posY="9">
<Label gridHeight="1" gridWidth="13" justify="right" name="Label1" posX="4" posY="1" text="LOCALIDAD:"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="localidad" fieldId="1" gridHeight="1" gridWidth="19" items="" name="localidad" posX="18" posY="1" sqlTabName="formonly" tabIndex="28" table_alias_name="" widget="ComboBox"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label2" posX="4" posY="2" text="STATUS:"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="descrip_st" fieldId="5" gridHeight="1" gridWidth="13" name="descrip_st" posX="18" posY="2" sqlTabName="formonly" tabIndex="29" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label3" posX="4" posY="3" text="Casa No:"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="casa_num" fieldId="17" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="11" name="adtb00003.casa_num" posX="18" posY="3" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="30" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label4" posX="4" posY="4" text="Credito"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="credito" fieldId="0" gridHeight="1" gridWidth="5" include="SI|NO" items="SI, NO" name="credito" posX="18" posY="4" sqlTabName="formonly" tabIndex="31" table_alias_name="" widget="ComboBox">
<Item name="SI" text="SI"/>
<Item name="NO" text="NO"/>
</ComboBox>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label5" posX="4" posY="5" text="Licencia"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="licencia" fieldId="25" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="11" name="adtb00003.licencia" posX="18" posY="5" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="32" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label6" posX="4" posY="6" text="Sexo"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="p_sexo" comment="Digite M Para SEXO MASCULINO y F Para FEMENINO" fieldId="34" gridHeight="1" gridWidth="2" include="M|F" name="p_sexo" posX="18" posY="6" sqlTabName="formonly" sqlType="CHAR" tabIndex="33" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="tipo_sexo" fieldId="35" gridHeight="1" gridWidth="13" name="tipo_sexo" noEntry="true" posX="21" posY="6" sqlTabName="formonly" tabIndex="34" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label7" posX="4" posY="7" text="Poncha"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cod_seg3" comment="1- CONTROL ASISTENCIA 0- NO CONTROL" defaultValue="1" fieldId="38" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="5" include="1|0" items="1, 0" name="adtb00003.cod_seg3" posX="18" posY="7" sqlTabName="adtb00003" sqlType="SMALLINT" tabIndex="35" table_alias_name="" widget="ComboBox">
<Item name="1" text="1"/>
<Item name="0" text="0"/>
</ComboBox>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label8" posX="4" posY="8" text="Sueldo"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="sueldo_ac" fieldId="30" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="11" name="adtb00003.sueldo_ac" posX="18" posY="8" precisionDecimal="10" scaleDecimal="2" sqlTabName="adtb00003" sqlType="DECIMAL" tabIndex="36" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="69" gridHeight="1" gridWidth="12" name="valorrd" posX="30" posY="8" sqlTabName="" tabIndex="68" table_alias_name="" title="Edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label20" posX="4" posY="9" text="Moneda"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" defaultValue="1" fieldId="68" gridHeight="1" gridWidth="18" items="RD$, USD$" name="moneda" posX="18" posY="9" sqlTabName="" tabIndex="67" table_alias_name="" title="Edit1" widget="ComboBox">
<Item lstrtext="false" name="1" text="RD$"/>
<Item lstrtext="false" name="2" text="USD$"/>
</ComboBox>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label21" posX="4" posY="10" text="Tasa"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="70" gridHeight="1" gridWidth="11" name="tasa" posX="18" posY="10" sqlTabName="" tabIndex="69" table_alias_name="" title="Edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label9" posX="4" posY="11" text="F.Salida"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fecha_salida" fieldId="3" format="dd/mm/yyyy" gridHeight="1" gridWidth="11" name="fecha_salida" posX="18" posY="11" sqlTabName="formonly" sqlType="DATE" tabIndex="37" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label13" posX="4" posY="12" text="Tipo Cuenta"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" defaultValue="1" fieldId="60" gridHeight="1" gridWidth="19" items="CUENTA CORRIENTE, CUENTA AHORRO" name="tipocuenta" posX="18" posY="12" sqlTabName="" tabIndex="59" table_alias_name="" title="Edit1" widget="ComboBox">
<Item lstrtext="false" name="1" text="CUENTA CORRIENTE"/>
<Item lstrtext="false" name="2" text="CUENTA AHORRO"/>
</ComboBox>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label14" posX="4" posY="13" text="Banco"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" defaultValue="10101070" fieldId="61" gridHeight="1" gridWidth="19" items="BANCO POPULAR, BANCO RESERVAS" name="codbancodestino" posX="18" posY="13" sqlTabName="" tabIndex="60" table_alias_name="" title="Edit1" widget="ComboBox">
<Item lstrtext="false" name="10101070" text="BANCO POPULAR"/>
<Item lstrtext="false" name="10101010" text="BANCO RESERVAS"/>
</ComboBox>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label15" posX="4" posY="14" text="Digito Ver Banco"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="62" gridHeight="1" gridWidth="19" items="BANCO POPULAR, BANCO RESERVAS" name="digiverbancodestino" posX="18" posY="14" sqlTabName="" tabIndex="61" table_alias_name="" title="Edit1" widget="ComboBox">
<Item lstrtext="false" name="8" text="BANCO POPULAR"/>
<Item lstrtext="true" name="6" text="BANCO RESERVAS"/>
</ComboBox>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label10" posX="4" posY="15" text="Cuenta_no"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cuenta_no" fieldId="4" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="11" name="adtb00003.cuenta_no" posX="18" posY="15" sqlTabName="adtb00003" sqlType="VARCHAR" tabIndex="38" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="label50" posX="4" posY="16" text="Genera File Banco"/>
<ComboBox defaultValue="SI" fieldId="80" gridHeight="1" gridWidth="11" items="SI, NO" name="genera_file_bco" posX="18" posY="16" tabIndex="-1" title="combobox1" widget="ComboBox">
<Item lstrtext="false" name="SI" text="SI"/>
<Item lstrtext="false" name="NO" text="NO"/>
</ComboBox>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label11" posX="4" posY="17" text="Fecha Aumento"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fecha_salida" fieldId="45" format="dd/mm/yyyy" gridHeight="1" gridWidth="11" name="fecha_ultimo_aumento" posX="18" posY="17" sqlTabName="formonly" sqlType="DATE" tabIndex="44" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="label46" posX="4" posY="18" text="Fecha Suspension"/>
<Edit fieldId="8" gridHeight="1" gridWidth="11" name="fecha_suspension" posX="18" posY="18" tabIndex="-1" title="edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="label47" posX="4" posY="19" text="Codigo RETIRO"/>
<Edit fieldId="77" gridHeight="1" gridWidth="11" name="codigo_retiro_bco" noEntry="true" posX="18" posY="19" scroll="true" tabIndex="-1" title="edit1" widget="Edit"/>
<Label comment="Adiciona este empleado en el file Retiro Comercial" gridHeight="1" gridWidth="13" justify="right" name="label48" posX="4" posY="20" text="Retiro Comercial"/>
<ComboBox defaultValue="NO" fieldId="78" gridHeight="1" gridWidth="11" items="NO, SI" name="retiro_comercial" posX="18" posY="20" tabIndex="-1" title="edit1" widget="ComboBox">
<Item lstrtext="false" name="NO" text="NO"/>
<Item lstrtext="false" name="SI" text="SI"/>
</ComboBox>
<Label gridHeight="1" gridWidth="10" justify="right" name="label49" posX="4" posY="21" text="Estado Legal"/>
<ComboBox fieldId="79" gridHeight="1" gridWidth="20" items="ACTIVO, FASE, FASE-ACTIVO" name="estado_legal" posX="18" posY="21" tabIndex="-1" title="combobox1" widget="ComboBox">
<Item lstrtext="false" name="ACTIVO" text="ACTIVO"/>
<Item lstrtext="false" name="FASE" text="FASE"/>
<Item lstrtext="false" name="FASE-ACTIVO" text="FASE-ACTIVO"/>
</ComboBox>
</Group>
<Group gridHeight="24" gridWidth="59" name="Group2" posX="1" posY="10" text="Generales">
<Label gridHeight="1" gridWidth="10" name="Label25" posX="1" posY="1" text="Nivel Educacion"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="76" gridHeight="1" gridWidth="30" items="" name="nivel_emp" posX="14" posY="1" sqlTabName="" tabIndex="75" table_alias_name="" title="Edit1" widget="ComboBox"/>
<Label gridHeight="1" gridWidth="10" name="label37" posX="45" posY="1" text="Alias"/>
<Label gridHeight="1" gridWidth="6" name="Label39" posX="1" posY="2" text="Puesto"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="nom_puesto" fieldId="14" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="30" name="adtb00004.nom_puesto" noEntry="true" posX="14" posY="2" sqlTabName="adtb00004" sqlType="CHAR" tabIndex="9" table_alias_name="" widget="Edit"/>
<Edit case="upper" fieldId="85" gridHeight="1" gridWidth="10" name="alias" posX="45" posY="2" scroll="true" tabIndex="-1" title="edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="6" name="Label40" posX="1" posY="3" text="Depto."/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="nom_dpto" fieldId="15" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="30" name="adtb00001.nom_dpto" noEntry="true" posX="14" posY="3" sqlTabName="adtb00001" sqlType="CHAR" tabIndex="10" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="5" hidden="true" name="Label33" posX="45" posY="3" text="Serie"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoNext="true" colName="serie" comment="Digite la serie del empleado" fieldId="21" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="6" hidden="true" name="adtb00003.serie" posX="51" posY="3" sqlTabName="adtb00003" sqlType="SMALLINT" tabIndex="15" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="10" name="Label24" posX="1" posY="4" text="Supervisor"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="74" gridHeight="1" gridWidth="10" name="num_emp_supervisor" posX="14" posY="4" sqlTabName="" tabIndex="73" table_alias_name="" title="Edit1" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="75" gridHeight="1" gridWidth="19" name="nombre_super" posX="25" posY="4" scroll="true" sqlTabName="" tabIndex="74" table_alias_name="" title="Edit2" widget="Edit"/>
<Label gridHeight="1" gridWidth="4" name="Label38" posX="1" posY="5" text="Dir."/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="calle" fieldId="16" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="26" name="adtb00003.calle" posX="14" posY="5" scroll="true" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="11" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="12" name="Label36" posX="1" posY="6" text="Urbanizacion"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="barrio" fieldId="18" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="15" name="adtb00003.barrio" posX="14" posY="6" scroll="true" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="12" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="urbanizacion" fieldId="19" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="10" name="adtb00003.urbanizacion" posX="43" posY="6" scroll="true" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="13" table_alias_name="" widget="Edit"/>
<ComboBox defaultValue="CEDULA" fieldId="83" gridHeight="1" gridWidth="12" items="CEDULA, PASAPORTE" name="tipo_documento" posX="1" posY="7" tabIndex="-1" title="combobox2" widget="ComboBox">
<Item lstrtext="false" name="CEDULA" text="CEDULA"/>
<Item lstrtext="false" name="PASAPORTE" text="PASAPORTE"/>
</ComboBox>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoNext="false" comment="Digite la cedula del empleado en formato 99999999999" fieldId="20" fieldType="NON_DATABASE" gridHeight="1" gridWidth="11" length="11" name="cedula" posX="14" posY="7" sqlType="CHAR" tabIndex="14" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="14" name="Label34" posX="29" posY="7" text="Fecha de Naci."/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fech_nac" comment="Digite la fecha de nacimiento del empleado" fieldId="22" fieldType="TABLE_COLUMN" format="dd/mm/yyyy" gridHeight="1" gridWidth="10" name="adtb00003.fech_nac" posX="44" posY="7" sqlTabName="adtb00003" sqlType="DATE" tabIndex="17" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="8" name="Label35" posX="1" posY="8" text="Telefono"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="telefono" fieldId="26" format="(###)###-####" gridHeight="1" gridWidth="13" name="telefono" posX="14" posY="8" scroll="true" sqlTabName="formonly" tabIndex="16" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="11" name="label54" posX="29" posY="8" text="Num. Oficina"/>
<Edit fieldId="89" format="(###)###-####" gridHeight="1" gridWidth="13" name="numeroOficina" posX="41" posY="8" scroll="true" tabIndex="-1" title="edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="12" name="label53" posX="1" posY="9" text="Tel. Corporativo (flota)"/>
<Edit fieldId="88" format="(###)###-####" gridHeight="1" gridWidth="13" name="telefonoCorporativo" posX="14" posY="9" scroll="true" tabIndex="-1" title="edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="7" name="label55" posX="30" posY="9" text="Extension"/>
<Edit fieldId="90" format="####" gridHeight="1" gridWidth="9" name="extension" posX="43" posY="9" tabIndex="-1" title="edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="12" name="Label32" posX="1" posY="10" text="Nacionalidad"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" autoNext="true" colName="cod_nac" comment="Digite la nacionalidad del empleado" fieldId="23" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="2" name="adtb00003.cod_nac" posX="14" posY="10" sqlTabName="adtb00003" sqlType="SMALLINT" tabIndex="18" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="nom_nac" fieldId="24" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="27" name="adtb00007.nom_nac" noEntry="true" posX="19" posY="10" sqlTabName="adtb00007" sqlType="CHAR" tabIndex="19" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="12" name="Label28" posX="1" posY="11" text="Estado Civil"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="estado_civil" comment="Digite S = Soltero, C = Casado" fieldId="27" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="13" include="S|C" items="CASADO, SOLTERO, DIVORCIADO, UNION LIBRE" name="adtb00003.estado_civil" posX="14" posY="11" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="20" table_alias_name="" widget="ComboBox">
<Item lstrtext="false" name="C" text="CASADO"/>
<Item lstrtext="false" name="S" text="SOLTERO"/>
<Item lstrtext="false" name="D" text="DIVORCIADO"/>
<Item lstrtext="false" name="U" text="UNION LIBRE"/>
</ComboBox>
<Label gridHeight="1" gridWidth="14" name="Label27" posX="28" posY="11" text="Tipo de Sangre"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="tipo_sangre" comment="Digite el tipo de sangre del empleado" fieldId="29" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="3" name="adtb00003.tipo_sangre" posX="43" posY="11" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="21" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="6" name="Label29" posX="1" posY="12" text="Nomina"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="nomina" comment="Digite Q = Quincenal, S = Semanal, V = Vendedor J-Jornales" fieldId="31" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="3" include="Q|S|V|J" name="adtb00003.nomina" posX="8" posY="12" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="22" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="descrip" fieldId="32" gridHeight="1" gridWidth="13" name="descrip" noEntry="true" posX="14" posY="12" sqlTabName="formonly" tabIndex="23" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" name="Label41" posX="28" posY="12" text="Fecha Entrada"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fech_efec" fieldId="33" fieldType="TABLE_COLUMN" format="dd/mm/yyyy" gridHeight="1" gridWidth="10" name="adtb00003.fech_efec" posX="43" posY="12" sqlTabName="adtb00003" sqlType="DATE" tabIndex="24" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="11" name="Label30" posX="1" posY="13" text="Paga Seguro"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="upper" colName="paga_seg" comment="Digite S si el empleado paga SEGURO, N en caso contario" fieldId="39" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="1" include="S|N" name="adtb00003.paga_seg" posX="14" posY="13" required="true" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="25" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="10" name="Label26" posX="28" posY="13" text="Codigo TSS"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cod_seg1" fieldId="36" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="10" name="adtb00003.cod_seg1" posX="43" posY="13" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="26" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="cod_seg2" fieldId="37" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="2" name="adtb00003.cod_seg2" posX="55" posY="13" sqlTabName="adtb00003" sqlType="SMALLINT" tabIndex="27" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="10" name="Label31" posX="1" posY="14" text="Supervisor"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="46" gridHeight="1" gridWidth="10" name="sec_vend_sup" posX="14" posY="14" sqlTabName="" tabIndex="45" table_alias_name="" title="Edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="10" name="label52" posX="28" posY="14" text="Horario"/>
<ComboBox fieldId="82" gridHeight="1" gridWidth="10" items="" name="combobox1" posX="43" posY="14" required="true" tabIndex="-1" title="combobox1" widget="ComboBox"/>
<Label gridHeight="1" gridWidth="10" name="Label16" posX="1" posY="15" text="Tipo Sueldo"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" defaultValue="FIJO" fieldId="63" gridHeight="1" gridWidth="21" items="FIJO, VARIABLE" name="tipo_sueldo" posX="14" posY="15" sqlTabName="" tabIndex="62" table_alias_name="" title="ComboBox1" widget="ComboBox">
<Item lstrtext="false" name="FIJO" text="FIJO"/>
<Item lstrtext="false" name="VARIABLE" text="VARIABLE"/>
</ComboBox>
<Label gridHeight="1" gridWidth="10" name="Label17" posX="1" posY="16" text="Email"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="lower" colName="" fieldId="64" gridHeight="1" gridWidth="21" name="email" posX="14" posY="16" scroll="true" sqlTabName="" tabIndex="63" table_alias_name="" title="Edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="10" name="Label19" posX="36" posY="16" text="Cuenta Finanzas"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="66" gridHeight="1" gridWidth="10" name="cuenta_aux" posX="47" posY="16" sqlTabName="" tabIndex="65" table_alias_name="" title="Edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="10" name="label56" posX="1" posY="17" text="Email Corporativo"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" case="lower" colName="" fieldId="91" gridHeight="1" gridWidth="21" name="email_corporativo" posX="14" posY="17" scroll="true" sqlTabName="" tabIndex="-1" table_alias_name="" title="Edit1" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="67" gridHeight="1" gridWidth="20" name="descripcion_cuenta" posX="37" posY="17" scroll="true" sqlTabName="" tabIndex="66" table_alias_name="" title="Edit2" widget="Edit"/>
<Label gridHeight="1" gridWidth="10" name="Label18" posX="1" posY="18" text="Instalador"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" defaultValue="NO" fieldId="65" gridHeight="1" gridWidth="10" items="SI, NO" name="instalador" posX="14" posY="18" sqlTabName="" tabIndex="64" table_alias_name="" title="ComboBox1" widget="ComboBox">
<Item lstrtext="false" name="SI" text="SI"/>
<Item lstrtext="false" name="NO" text="NO"/>
</ComboBox>
<Label gridHeight="1" gridWidth="10" name="Label22" posX="1" posY="19" text="Codigo E/S"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" comment="Digite codigo sistema control entrada / salida empleado" fieldId="71" gridHeight="1" gridWidth="10" name="cuenta_out" posX="14" posY="19" sqlTabName="" tabIndex="70" table_alias_name="" title="Edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="10" name="Label23" posX="1" posY="20" text="Depto"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" comment="Departamento Sistema E/S" fieldId="72" gridHeight="1" gridWidth="10" name="departamento_out" posX="14" posY="20" sqlTabName="" tabIndex="71" table_alias_name="" title="Edit1" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="73" gridHeight="1" gridWidth="29" name="nombre_out" posX="27" posY="20" sqlTabName="" tabIndex="72" table_alias_name="" title="Edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="10" name="label51" posX="1" posY="21" text="Observaciones"/>
<Edit fieldId="81" gridHeight="1" gridWidth="42" name="observacion" posX="14" posY="21" scroll="true" tabIndex="-1" title="edit1" widget="Edit"/>
</Group>
<Group gridHeight="4" gridWidth="98" name="Group4" posX="1" posY="35">
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="status_t" fieldId="40" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="1" name="adtb00003.status_t" noEntry="true" posX="3" posY="1" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="39" table_alias_name="" widget="Edit"/>
<Label posX="5" posY="1" text="Usuario Creador"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="us_crea" fieldId="41" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="9" name="adtb00003.us_crea" noEntry="true" posX="22" posY="1" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="40" table_alias_name="" widget="Edit"/>
<Label posX="40" posY="1" text="Usuario Modificador"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="us_mod" fieldId="43" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="9" name="adtb00003.us_mod" noEntry="true" posX="60" posY="1" sqlTabName="adtb00003" sqlType="CHAR" tabIndex="41" table_alias_name="" widget="Edit"/>
<Label posX="5" posY="2" text="Fecha Creacion"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fech_crea" fieldId="42" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="16" name="adtb00003.fech_crea" noEntry="true" posX="22" posY="2" qual1="YEAR" qualFraction="FRACTION(3)" sqlTabName="adtb00003" sqlType="DATETIME" tabIndex="42" table_alias_name="" widget="Edit"/>
<Label posX="40" posY="2" text="Fecha Creacion"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fech_mod" fieldId="44" fieldType="TABLE_COLUMN" gridHeight="1" gridWidth="16" name="adtb00003.fech_mod" noEntry="true" posX="60" posY="2" qual1="YEAR" qualFraction="FRACTION(3)" sqlTabName="adtb00003" sqlType="DATETIME" tabIndex="43" table_alias_name="" widget="Edit"/>
</Group>
</Grid>
</Page>
<Page hidden="true" name="Page2" text="Comisiones">
<VBox gridHeight="29" gridWidth="138" name="VBox1" posX="1" posY="1">
<Grid gridHeight="27" gridWidth="138" name="Grid2" posX="0" posY="1">
<Group gridHeight="11" gridWidth="126" name="Group5" posX="2" posY="1" text="Comisiones Generales">
<Label gridHeight="1" gridWidth="10" name="Label12" posX="3" posY="1" text="SUPERVISOR"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="58" gridHeight="1" gridWidth="6" name="sec_vend_supervisor" posX="15" posY="1" sqlTabName="" tabIndex="57" table_alias_name="" title="Edit1" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="59" gridHeight="1" gridWidth="73" name="nombre_supervisor" posX="22" posY="1" sqlTabName="" tabIndex="58" table_alias_name="" title="Edit2" widget="Edit"/>
<Table gridHeight="7" gridWidth="96" name="Table1" posX="2" posY="3" totalRows="5">
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="47" gridHeight="1" gridWidth="11" name="sec_vend" posX="0" posY="0" sqlTabName="" tabIndex="46" table_alias_name="" title="Vendedor" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="48" gridHeight="1" gridWidth="50" name="nombre_vend" noEntry="true" posX="11" posY="0" sqlTabName="" tabIndex="47" table_alias_name="" title="Nombre" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="49" gridHeight="1" gridWidth="15" name="porc_cobros" posX="61" posY="0" sqlTabName="" tabIndex="48" table_alias_name="" title="Porciento Supervisor" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="50" gridHeight="1" gridWidth="15" name="porc_cobros_a" posX="76" posY="0" sqlTabName="" tabIndex="49" table_alias_name="" title="Porciento" widget="Edit"/>
</Table>
</Group>
<Group gridHeight="14" gridWidth="131" name="Group6" posX="2" posY="13" text="Comisiones por productos">
<Table gridHeight="6" gridWidth="119" name="Table2" posX="4" posY="2" totalRows="5">
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="51" gridHeight="1" gridWidth="8" name="sec_vend1" posX="0" posY="0" sqlTabName="" tabIndex="50" table_alias_name="" title="Codigo Vendedor" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="57" gridHeight="1" gridWidth="20" name="nombre_vend1" noEntry="true" posX="8" posY="0" scroll="true" sqlTabName="" tabIndex="56" table_alias_name="" title="Nombre" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="52" gridHeight="1" gridWidth="10" name="cod_n" posX="28" posY="0" sqlTabName="" tabIndex="51" table_alias_name="" title="Clase" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="53" gridHeight="1" gridWidth="25" name="descripcion" noEntry="true" posX="38" posY="0" scroll="true" sqlTabName="" tabIndex="52" table_alias_name="" title="Descripcion" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="54" gridHeight="1" gridWidth="16" name="porc_vendedor" posX="63" posY="0" sqlTabName="" tabIndex="53" table_alias_name="" title="Porciento Vendedor" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="55" gridHeight="1" gridWidth="16" name="porc_supervisor" posX="79" posY="0" sqlTabName="" tabIndex="54" table_alias_name="" title="Porciento Supervisor" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="56" gridHeight="1" gridWidth="16" name="porc_directo" posX="95" posY="0" sqlTabName="" tabIndex="55" table_alias_name="" title="Porciento Directo" widget="Edit"/>
</Table>
</Group>
</Grid>
</VBox>
</Page>
<Page name="page1" text="Herramientas">
<Grid gridHeight="20" gridWidth="116" name="GridHerr" posX="0" posY="0">
<Group gridHeight="18" gridWidth="98" name="GroupHerr" posX="1" posY="1" text="Herramientas asignadas">
<Table gridHeight="15" gridWidth="94" name="TableHerr" posX="2" posY="1" totalRows="12">
<Edit fieldId="92" gridHeight="1" gridWidth="12" name="h_codigo" noEntry="true" posX="0" posY="0" tabIndex="" title="Codigo" widget="Edit"/>
<Edit fieldId="93" gridHeight="1" gridWidth="40" name="h_descripcion" noEntry="true" posX="12" posY="0" scroll="true" tabIndex="" title="Descripcion" widget="Edit"/>
<Edit fieldId="94" gridHeight="1" gridWidth="12" name="h_fecha" noEntry="true" posX="52" posY="0" tabIndex="" title="Fecha" widget="Edit"/>
<Edit fieldId="95" gridHeight="1" gridWidth="14" name="h_documento" noEntry="true" posX="64" posY="0" scroll="true" tabIndex="" title="Documento" widget="Edit"/>
<Edit fieldId="96" gridHeight="1" gridWidth="10" name="h_cantidad" noEntry="true" posX="78" posY="0" tabIndex="" title="Cantidad" widget="Edit"/>
</Table>
</Group>
</Grid>
</Page>
</Folder>
</Form>
<DiagramLayout>
<![CDATA[AAAAAgAAAEwAewA0ADkAMABjADgAYwA1AGMALQBiADMAMwAwAC0ANAAzAGIAZAAtAGEAYQA1ADkALQBhADMAOAA2ADAAMQAxADkAYQBlADkAMQB9AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAEwAewBhADEAYwAyAGUAMwBmADQALQAwADAAMAAxAC0ANABhADEAMAAtADkAYgAyADAALQAxADEAYQBhADIAMgBiAGIAMwAzADAAMQB9QEQAAA8AAAJARAAADwAAAgAAAAAAAAAAAQAAAEwAewAyAGYAZAAzADQAYwBmAGUALQA3ADQAMwA0AC0ANAA1ADgAOAAtADkANwAwADEALQA5ADAAMgAzADAAYgA2ADQANgBkADQAZAB9QCAAAJgAArtAIAAAmAACuz90euFHrhR7AQAAAEwAewBkADQAYQAwADUAZQA1ADQALQA2ADYAZQA0AC0ANAAzADIAZAAtAGEAZQA1ADAALQBlADEAZABmAGQAZgBhADMANwBmADAAMAB9QFIAAKsAAxJANzM0D5mdkT94k3S8an76AQ==]]>
</DiagramLayout>
</ManagedForm>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,160 @@
{
----------------------------------------------------------------------------
PROGRAMA : NOPRMT016
OBEJTIVO : Activar / Desactivar empleados para la nomina
PROGRAMADOR : Ing. Juan Soto
FECHA : Enero 17, 1993.
----------------------------------------------------------------------------
}
GLOBALS
"noprgb000.4gl"
DEFINE p_datos RECORD
num_emp SMALLINT,
tipo_emp CHAR(1),
nombre_t CHAR(15),
nombre CHAR(30)
END RECORD
DEFINE nomb1,nomb2 CHAR(30)
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
#LET usuarios = 'jsoto'
#LET clave = 'lmmjvsd2009'
CONNECT to "smarmotech" USER usuarios USING clave
SELECT a.* INTO p_companias.* FROM companias a
CALL noprmt016()
END MAIN
FUNCTION noprmt016()
OPTIONS
FORM LINE 8,
ERROR LINE 24
CLEAR SCREEN
OPEN FORM nofmmt016 FROM "nofmmt016"
DISPLAY FORM nofmmt016
MENU "OPCION"
COMMAND "Activar"
"<CTRL-C> Cancela operacion"
CALL activo()
COMMAND "Desactivar"
"<CTRL-C> Cancela Operacion"
CALL desactivo()
COMMAND "Salir"
EXIT MENU
END MENU
END FUNCTION
FUNCTION activo()
INITIALIZE p_datos.* TO NULL
INPUT BY NAME p_datos.*
AFTER FIELD num_emp
IF p_datos.num_emp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
SELECT nom1_emp,apell1_emp,nomina INTO nomb1,nomb2,p_datos.tipo_emp
FROM adtb00003
WHERE num_emp = p_datos.num_emp
IF status = notfound THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
CASE
WHEN p_datos.tipo_emp = "Q"
LET p_datos.nombre_t = "QUINCENAL"
EXIT CASE
WHEN p_datos.tipo_emp = "S"
LET p_datos.nombre_t = "SEMANAL"
EXIT CASE
WHEN p_datos.tipo_emp = "V"
LET p_datos.nombre_t = "VENDEDOR"
EXIT CASE
OTHERWISE
LET p_datos.nombre_t = "NO EXISTE"
EXIT CASE
END CASE
LET p_datos.nombre = nomb1 clipped," ",nomb2 clipped
DISPLAY BY NAME p_datos.nombre,p_datos.nombre_t ATTRIBUTE (BOLD)
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
EXIT INPUT
END INPUT
UPDATE adtb00003 set status_t = null,
us_mod = suser_sname(),
fech_mod = GETDATE()
WHERE num_emp = p_datos.num_emp
LET numero_msg = 190
CALL msg(numero_msg)
END FUNCTION
FUNCTION desactivo()
INITIALIZE p_datos.* TO NULL
INPUT BY NAME p_datos.*
AFTER FIELD num_emp
IF p_datos.num_emp is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
SELECT nom1_emp,apell1_emp,nomina INTO nomb1,nomb2,p_datos.tipo_emp
FROM adtb00003
WHERE num_emp = p_datos.num_emp
IF status = notfound THEN
LET numero_msg = 12
CALL msg(numero_msg)
NEXT FIELD num_emp
END IF
CASE
WHEN p_datos.tipo_emp = "Q"
LET p_datos.nombre_t = "QUINCENAL"
EXIT CASE
WHEN p_datos.tipo_emp = "S"
LET p_datos.nombre_t = "SEMANAL"
EXIT CASE
WHEN p_datos.tipo_emp = "V"
LET p_datos.nombre_t = "VENDEDOR"
EXIT CASE
OTHERWISE
LET p_datos.nombre_t = "NO EXISTE"
EXIT CASE
END CASE
LET p_datos.nombre = nomb1 clipped," ",nomb2 clipped
DISPLAY BY NAME p_datos.nombre,p_datos.nombre_t ATTRIBUTE (BOLD)
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
EXIT INPUT
END INPUT
UPDATE adtb00003 set status_t = "D" ,
us_mod = suser_sname(),
fech_mod = GETDATE()
WHERE num_emp = p_datos.num_emp
LET numero_msg = 191
CALL msg(numero_msg)
END FUNCTION
+1 -1
View File
@@ -172,7 +172,7 @@
<Label gridHeight="1" gridWidth="13" justify="right" name="Label21" posX="4" posY="10" text="Tasa"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" fieldId="70" gridHeight="1" gridWidth="11" name="tasa" posX="18" posY="10" sqlTabName="" tabIndex="69" table_alias_name="" title="Edit1" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label9" posX="4" posY="11" text="F.Salida"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fecha_salida" fieldId="3" format="dd/mm/yyyy" gridHeight="1" gridWidth="11" name="fecha_salida" posX="18" posY="11" sqlTabName="formonly" sqlType="DATE" tabIndex="37" table_alias_name="" widget="Edit"/>
<Edit aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="fecha_salida" fieldId="3" format="dd/mm/yyyy" gridHeight="1" gridWidth="11" name="fecha_salida" noEntry="true" posX="18" posY="11" sqlTabName="formonly" sqlType="DATE" tabIndex="37" table_alias_name="" widget="Edit"/>
<Label gridHeight="1" gridWidth="13" justify="right" name="Label13" posX="4" posY="12" text="Tipo Cuenta"/>
<ComboBox aggregateColName="" aggregateName="" aggregateTableAliasName="" aggregateTableName="" colName="" defaultValue="1" fieldId="60" gridHeight="1" gridWidth="19" items="CUENTA CORRIENTE, CUENTA AHORRO" name="tipocuenta" posX="18" posY="12" sqlTabName="" tabIndex="59" table_alias_name="" title="Edit1" widget="ComboBox">
<Item lstrtext="false" name="1" text="CUENTA CORRIENTE"/>
+1205 -1203
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -42,9 +42,9 @@ FUNCTION noprmt016()
COMMAND "Activar"
"<CTRL-C> Cancela operacion"
CALL activo()
COMMAND "Desactivar"
"<CTRL-C> Cancela Operacion"
CALL desactivo()
# 2026-10-05: la desactivacion se hace por la Accion de Personal
# (ADPRMT017, movimiento DESVINCULAR) para registrar fecha y causa
# de salida (indicador de rotacion). desactivo() queda sin uso.
COMMAND "Salir"
EXIT MENU
END MENU
+1 -1
View File
@@ -39,7 +39,7 @@ FUNCTION autorizacioncontado(pcotizacion,valor_cotizado,pagado,usuarios,xmonto_a
xfecha_oc,psecvend,usuarios)
RETURNING xnum_req,valor_requisicion
END IF
IF xnum_req IS NULL THEN
IF xnum_req IS NULL OR xnum_req = 0 THEN
SELECT MAX(a.num_req) INTO xnum_req FROM cctb00026 a WHERE a.cotizacion_no = pcotizacion
AND a.status_t IS NULL
END IF
@@ -0,0 +1,90 @@
FUNCTION autorizacioncontado(pcotizacion,valor_cotizado,pagado,usuarios,xmonto_avance,xnum_doc,xtipo_doc,xnombre_cliente)
DEFINE pcotizacion,xnum_oc,pcondpago,ptipocliente,psecliente,xnum_req,psecvend,xnum_doc INT,
xfecha_oc,xtipo_Doc CHAR(10),
usuarios,xestado VARCHAR(50),
valor_cotizado,xmonto_avance,pagado,valor_requisicion DEC(12,2),
descripcion_estado,nombre_ven,xnombre_cliente,estado VARCHAR(100)
SELECT a.num_oc,a.tipo_cliente,a.sec_cliente,a.cond_pago,a.sec_vend, CONVERT(CHAR(10),a.fecha_oc,103)
INTO xnum_oc,ptipocliente,psecliente,pcondpago,psecvend,xfecha_oc
FROM prtb00012 a WHERE a.cotizacion_no = pcotizacion AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
LET descripcion_estado = 'REQUISICION ',xnum_req USING "<<<<<<<<",
' NO AUTORIZADA POR SISTEMA, LA COTIZACION NO TIENE ORDEN, CONDICION AL CONTADO'
LET xestado = 'NO AUTORIZADA'
LET estado = descripcion_estado
INSERT INTO cctb00031 (fecha,us_crea,sec_vend,tipo_cliente,
sec_cliente,nombreCliente,num_req,limite_cr,monto_cotizacion,
balance,estado,tipo_doc_ref,monto_req,num_recibo,tipo_doc,
monto_avance,valor_cotizacion,descrip_estado,cotizacion_no,nombrevendedor,num_oc)
VALUES (getdate(),'MBS',psecvend,ptipocliente,psecliente,
xnombre_cliente,xnum_req,'0',valor_cotizado,'0',xestado,
xtipo_Doc,valor_cotizado,xnum_doc,xtipo_Doc,
xmonto_avance,valor_cotizado,descripcion_estado,xnum_oc,nombre_ven,xnum_oc )
RETURN
END IF
SELECT RTRIM(a.nom1_emp)+ISNULL(a.apell1_Emp,'') INTO nombre_ven
FROM adtb00003 a WHERE a.num_emp = psecvend
SELECT DISTINCT a.cotizacion_no FROM cctb00026 a WHERE a.cotizacion_no = pcotizacion
AND a.status_t IS NULL
## CUANDO NO TIENE LA REQUISICION DE DESPACHOS
IF STATUS = NOTFOUND THEN
CALL requisiciondespacho(xnum_oc,ptipocliente,psecliente,Pcondpago,valor_cotizado,
xfecha_oc,psecvend,usuarios)
RETURNING xnum_req,valor_requisicion
END IF
IF xnum_req IS NULL THEN
SELECT MAX(a.num_req) INTO xnum_req FROM cctb00026 a WHERE a.cotizacion_no = pcotizacion
AND a.status_t IS NULL
END IF
LET estado ="LA REQUISICION ",xnum_req USING "<<<<<<<<", " NO AUTORIZADA"
UPDATE cctb00001 SET num_req = xnum_req
WHERE tipo_doc =xtipo_Doc AND num_doc = xnum_doc AND
tipo_cliente =ptipocliente AND
sec_cliente = psecliente
IF xmonto_avance +pagado >= valor_cotizado THEN
LET xestado = 'AUTORIZADA'
UPDATE cctb00025 SET estado =xestado,us_mod = 'MBS',fech_mod = getdate()
WHERE num_req = xnum_req
LET descripcion_estado = 'REQUISICION ',xnum_req USING "<<<<<<<<",
' AUTORIZADA POR SISTEMA, LA COTIZACION ES AL CONTADO'
LET estado = descripcion_estado
INSERT INTO cctb00031 (fecha,us_crea,sec_vend,tipo_cliente,
sec_cliente,nombreCliente,num_req,limite_cr,monto_cotizacion,
balance,estado,tipo_doc_ref,monto_req,num_recibo,tipo_doc,
monto_avance,valor_cotizacion,descrip_estado,cotizacion_no,nombrevendedor,num_oc)
VALUES (getdate(),'MBS',psecvend,ptipocliente,psecliente,
xnombre_cliente,xnum_req,'0',valor_cotizado,'0',xestado,
xtipo_Doc,valor_cotizado,xnum_doc,xtipo_Doc,
xmonto_avance,valor_cotizado,descripcion_estado,xnum_oc,nombre_ven,xnum_oc )
ELSE
LET descripcion_estado = 'REQUISICION ',xnum_req USING "<<<<<<<<",
' NO AUTORIZADA POR SISTEMA, LA COTIZACION ES AL CONTADO'
LET xestado = 'NO AUTORIZADA'
LET estado = descripcion_estado
INSERT INTO cctb00031 (fecha,us_crea,sec_vend,tipo_cliente,
sec_cliente,nombreCliente,num_req,limite_cr,monto_cotizacion,
balance,estado,tipo_doc_ref,monto_req,num_recibo,tipo_doc,
monto_avance,valor_cotizacion,descrip_estado,cotizacion_no,nombrevendedor,num_oc)
VALUES (getdate(),'MBS',psecvend,ptipocliente,psecliente,
xnombre_cliente,xnum_req,'0',valor_cotizado,'0',xestado,
xtipo_Doc,valor_cotizado,xnum_doc,xtipo_Doc,
xmonto_avance,valor_cotizado,descripcion_estado,xnum_oc,nombre_ven,xnum_oc )
END IF
RETURN estado
END FUNCTION
+15 -4
View File
@@ -6,13 +6,24 @@
ACTUALIZA LA REQUISICION DE DESPACHO
}
FUNCTION autorizarequisicion(balance,monto_actual_req, monto_req_autorizadas, limite_cr,tienefactura,factura)
DEFINE balance,monto_actual_req, monto_req_autorizadas, limite_cr,valor_total DEC(12,2),
FUNCTION autorizarequisicion(balance,monto_actual_req, monto_req_autorizadas, limite_cr,tienefactura,factura,ztipocliente)
DEFINE balance,monto_actual_req, monto_req_autorizadas, limite_cr,valor_total,tasa,
monto_control DEC(12,2),
string_estado STRING,
tienefactura VARCHAR(2),
autoriza BOOLEAN,
factura INT
factura,ztipocliente INT
# BUSCA TASA
SELECT a.ultima_tasa INTO tasa FROM vetb00060 a
WHERE a.tipo_cliente = ztipocliente
IF tasa > 1 THEN
LET monto_control = 1.60 * tasa
ELSE
LET monto_control = 100
END IF
LET valor_total = monto_req_autorizadas+monto_actual_req
IF tienefactura = "SI" THEN
LET string_estado = "ESTA REQUISICION NO FUE AUTORIZADA, TIENE FACTURAS VENCIDAS EL CLIENTE, UNA DE LAS FACTURAS ES ",factura USING "<<<<<<<<"
@@ -23,7 +34,7 @@ FUNCTION autorizarequisicion(balance,monto_actual_req, monto_req_autorizadas, li
#CUANDO EL CLIENTE TIENE SALDO A FAVOR
IF balance < 0 THEN
IF ((balance * -1)) >=valor_total THEN
IF ((balance * -1))+monto_control >=valor_total THEN
LET autoriza = TRUE
LET string_estado = "ESTA REQUISICION ESTA AUTORIZADA, PORQUE EL BALANCE DE ",balance USING "##,###,###.##",
+10 -10
View File
@@ -146,15 +146,15 @@ FUNCTION evaluaclientes
FOREACH busca_vencido INTO xaplicacion,xpendiente
IF xpendiente > 0 THEN
SELECT MAX( a.tipo_doc),MAX(a.fecha_ven)
INTO Xtipodoc,Xfechavence
FROM cctb00001 a
WHERE a.status_t IS NULL AND a.num_doc = a.aplica_a AND
SELECT MAX( a.tipo_doc),MAX(a.fecha_ven)
INTO Xtipodoc,Xfechavence
FROM cctb00001 a
WHERE a.status_t IS NULL AND a.num_doc = a.aplica_a AND
a.num_doc=xaplicacion AND
a.tipo_doc not in ("PG","NC","PC","OC","DV","AV","AP") and
a.tipo_cliente=xtipocliente AND
a.tipo_doc not in ("PG","NC","PC","OC","DV","AV","AP") and
a.tipo_cliente=xtipocliente AND
a.sec_cliente=xseccliente
LET dias = 0
IF xfechavence IS NULL THEN
CONTINUE FOREACH
@@ -174,8 +174,8 @@ FUNCTION evaluaclientes
EXIT FOREACH
END IF
END IF
END IF
# OUTPUT TO REPORT prueba(xaplicacion,xpendiente,xfechavence,dias)
END IF
# OUTPUT TO REPORT prueba(xaplicacion,xpendiente,xfechavence,dias)
END FOREACH
END IF
@@ -188,7 +188,7 @@ FUNCTION evaluaclientes
LET monto_cotizacion = 0
END IF
#FUNCTION PARAMETROS AUTORIZACIONES DESPACHO
CALL autorizarequisicion(balance,xmonto,monto_cotizacion,xlimite,tienefactura,facturas) RETURNING autoriza,string_estado
CALL autorizarequisicion(balance,xmonto,monto_cotizacion,xlimite,tienefactura,facturas,xtipocliente) RETURNING autoriza,string_estado
SELECT a.correo INTO emailto FROM seg0003 a,seg0000 b
WHERE b.sec_vend = xsec_vend AND
+63 -40
View File
@@ -18,37 +18,38 @@
pusuarios CHAR(50),
selec STRING,
txtmensaje VARCHAR(200),
pubicacion VARCHAR(170)
pubicacion VARCHAR(170),
idx_max INT
DEFINE arr_requisicion DYNAMIC ARRAY OF RECORD
procesa CHAR(3),
num_oc INT,
fecha CHAR(10),
cotizacion_no INT,
tipo_cliente SMALLINT,
sec_cliente INT,
nombre CHAR(30),
cantidad_1 DEC(12,5),
DEFINE arr_requisicion DYNAMIC ARRAY OF RECORD
procesa CHAR(3),
num_oc INT,
fecha CHAR(10),
cotizacion_no INT,
tipo_cliente SMALLINT,
sec_cliente INT,
nombre CHAR(30),
cantidad_1 DEC(12,5),
cantidad DEC(12,5),
area SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion CHAR(30),
unidad_med CHAR(3),
cantidad_ord1 DEC(12,5),
cantidad_ord DEC(12,5),
cantidad_pendiente DEC(12,5),
precio DEC(12,2),
descuento DEC(12,2),
descvalor DEC(12,2),
valor DEC(12,2)
area SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion CHAR(30),
unidad_med CHAR(3),
cantidad_ord1 DEC(12,5),
cantidad_ord DEC(12,5),
cantidad_pendiente DEC(12,5),
precio DEC(12,2),
descuento DEC(12,2),
descvalor DEC(12,2),
valor DEC(12,2)
END RECORD,
pitbis,xmonto,monto_cotizacion DEC(12,2),
estado_req varchar(30),
cuenta smallint
SET CONNECTION "MSSQL"
LET monto_cotizacion = xmonto
@@ -61,16 +62,37 @@
# PREPARE s FROM "SELECT @@IDENTITY"
SELECT a.num_req INTO xnumreq FROM cctb00019 a
IF xnumreq IS NULL THEN
LET xnumreq = 0
END IF
LET xnumreq = xnumreq + 1
# 05/10/2026 - Error -268 PK_cctb00025 duplicada: el consecutivo se leia
# fuera de la transaccion y sin bloqueo (con RCSI dos usuarios leen el mismo
# num_req). Ahora se lee DENTRO de BEGIN WORK con UPDLOCK,HOLDLOCK y se
# compara contra MAX(cctb00025) por si el contador quedo atrasado.
WHENEVER ERROR CONTINUE
BEGIN WORK
PREPARE p_numreq FROM "SELECT ISNULL(MAX(num_req),0) FROM cctb00019 WITH (UPDLOCK, HOLDLOCK)"
EXECUTE p_numreq INTO xnumreq
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
PREPARE p_maxreq FROM "SELECT ISNULL(MAX(num_req),0) FROM cctb00025 WITH (UPDLOCK, HOLDLOCK)"
EXECUTE p_maxreq INTO idx_max
IF xnumreq IS NULL THEN
LET xnumreq = 0
END IF
IF idx_max > xnumreq THEN
LET xnumreq = idx_max
END IF
LET xnumreq = xnumreq + 1
UPDATE cctb00019 SET num_req = xnumreq,us_crea=pusuarios,fech_crea=getdate()
# EXECUTE s INTO xnumreq
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
LET selec =
"INSERT INTO cctb00034 (id_kit,cotizacion_no,num_oc,num_req,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad)",
"SELECT a.id_kit,a.cotizacion_no,a.num_oc,'",xnumreq USING "<<<<<<","',a.secuencia,a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad ",
@@ -82,8 +104,8 @@ BEGIN WORK
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
LET estado_req = 'NO AUTORIZADA'
@@ -169,8 +191,8 @@ BEGIN WORK
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
@@ -208,8 +230,8 @@ BEGIN WORK
EXECUTE comando
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
@@ -221,8 +243,8 @@ BEGIN WORK
"NO DESPACHADA",xmonto)
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
CALL fgl_winmessage("ERROR",SQLERRMESSAGE,"STOP")
RETURN 0,0
END IF
COMMIT WORK
@@ -246,5 +268,6 @@ BEGIN WORK
# subject, procedimiento )
# CALL fgl_Winmessage("INFORMACION",chmensaje,"STOP")
WHENEVER ERROR STOP
RETURN xnumreq,xmonto
END FUNCTION
@@ -0,0 +1,250 @@
{
FUNCION : requisiciondespacho()
OBJETIVO : hacer la requisicion de despacho automatica
FECHA : 27/08/2011
DESARROLLADO POR : Ing. Juan Soto
}
SCHEMA smarmotech
FUNCTION requisiciondespacho(xnum_oc,xtipo_cliente,xsec_cliente,xcondpago,xmonto,xfecha_oc,
xsec_vend,pusuarios)
DEFINE xnum_oc INT,
xfecha_oc DATE,
xsec_vend,xkit INT,
xnumreq,xtipo_cliente,xsec_cliente,pcotizacion INT,
idx,xcondpago smallint,
chmensaje,procedimiento,cuerpo_correo,subject STRING,
vendedorEmail,nombre_vendedor CHAR(60),
pusuarios CHAR(50),
selec STRING,
txtmensaje VARCHAR(200),
pubicacion VARCHAR(170)
DEFINE arr_requisicion DYNAMIC ARRAY OF RECORD
procesa CHAR(3),
num_oc INT,
fecha CHAR(10),
cotizacion_no INT,
tipo_cliente SMALLINT,
sec_cliente INT,
nombre CHAR(30),
cantidad_1 DEC(12,5),
cantidad DEC(12,5),
area SMALLINT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
descripcion CHAR(30),
unidad_med CHAR(3),
cantidad_ord1 DEC(12,5),
cantidad_ord DEC(12,5),
cantidad_pendiente DEC(12,5),
precio DEC(12,2),
descuento DEC(12,2),
descvalor DEC(12,2),
valor DEC(12,2)
END RECORD,
pitbis,xmonto,monto_cotizacion DEC(12,2),
estado_req varchar(30),
cuenta smallint
SET CONNECTION "MSSQL"
LET monto_cotizacion = xmonto
SELECT b.nom1_emp || ' '||b.apell1_emp,a.email
INTO nombre_vendedor,vendedorEmail
FROM seg0000 a,adtb00003 b
WHERE a.sec_vend = xsec_vend and
a.sec_vend = b.num_emp
# PREPARE s FROM "SELECT @@IDENTITY"
SELECT a.num_req INTO xnumreq FROM cctb00019 a
IF xnumreq IS NULL THEN
LET xnumreq = 0
END IF
LET xnumreq = xnumreq + 1
BEGIN WORK
UPDATE cctb00019 SET num_req = xnumreq,us_crea=pusuarios,fech_crea=getdate()
# EXECUTE s INTO xnumreq
LET selec =
"INSERT INTO cctb00034 (id_kit,cotizacion_no,num_oc,num_req,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec,cantidad)",
"SELECT a.id_kit,a.cotizacion_no,a.num_oc,'",xnumreq USING "<<<<<<","',a.secuencia,a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad ",
"FROM prtb00031 a ",
" WHERE ",
" a.num_oc ='", xnum_oc USING "<<<<<<","'"
PREPARE xcctb34 FROM selec
EXECUTE xcctb34
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
END IF
LET estado_req = 'NO AUTORIZADA'
DECLARE insertaReq CURSOR FOR
SELECT a.num_oc,a.cotizacion_no,b.secuencia,b.area,b.cod_n,b.cod_grupo,b.cod_tipo,
b.cod_Sec,b.cantidad_1,b.cantidad,b.cantidad_1,b.cantidad,c.precio,
c.porc_Desc,(c.precio*c.cantidad) * (c.porc_desc/100),a.tipo_cliente,a.sec_cliente,
d.nombre_cliente,d.porc_itbi,c.id_kit,a.ubicacion,d.direccion_proyecto
FROM prtb00012 a,prtb00023 b,vetb00051 c,vetb00050 d
WHERE a.num_oc = b.num_oc and
a.cotizacion_no = c.cotizacion_no and
a.cotizacion_no = d.cotizacion_no and
a.num_oc = xnum_oc and
b.cod_n = c.cod_n and
b.cod_grupo = c.cod_grupo and
b.cod_tipo = c.cod_tipo and
b.cod_sec = c.cod_sec AND
b.area = c.area
UNION
SELECT a.num_oc,a.cotizacion_no,b.secuencia,b.area,b.cod_n,b.cod_grupo,b.cod_tipo,
b.cod_Sec,b.cantidad_1,b.cantidad,b.cantidad_1,b.cantidad,c.precio,
c.porc_Desc,(c.precio*c.cantidad) * (c.porc_desc/100),a.tipo_cliente,a.sec_cliente,
d.nombre_cliente,d.porc_itbi,c.id_kit,a.ubicacion,d.direccion_proyecto
FROM prtb00012 a,prtb00023 b,vetb00031 c,vetb00050 d
WHERE a.num_oc = b.num_oc and
a.cotizacion_no = c.cotizacion_no and
a.cotizacion_no = d.cotizacion_no and
a.num_oc = xnum_oc and
b.cod_n = c.cod_n and
b.cod_grupo = c.cod_grupo and
b.cod_tipo = c.cod_tipo and
b.cod_sec = c.cod_sec AND
b.area = c.area
LET idx = 1
LET pcotizacion = 0
LET xmonto = 0
# DISPLAY " ESTOY EN ESTO ",xnum_oc
FOREACH insertareq INTO arr_requisicion[idx].num_oc,
arr_requisicion[idx].cotizacion_no,
idx,
arr_requisicion[idx].area,
arr_requisicion[idx].cod_n,
arr_requisicion[idx].cod_grupo,
arr_requisicion[idx].cod_tipo,
arr_requisicion[idx].cod_Sec,
arr_requisicion[idx].cantidad_1,
arr_requisicion[idx].cantidad,
arr_requisicion[idx].cantidad_ord,
arr_requisicion[idx].cantidad_ord1,
arr_requisicion[idx].precio,
arr_requisicion[idx].descuento,
arr_requisicion[idx].descvalor,
arr_requisicion[idx].tipo_cliente,
arr_requisicion[idx].sec_cliente,
arr_requisicion[idx].nombre,
pitbis,xkit,
pubicacion
#DISPLAY " VOY PARA LA 26, en el foreach cantidad ",arr_requisicion[idx].cantidad_ord
IF arr_requisicion[idx].cantidad_ord IS NOT NULL THEN
LET pcotizacion = arr_requisicion[idx].cotizacion_no
IF arr_requisicion[idx].descvalor IS NULL THEN
LET arr_requisicion[idx].descvalor=0
END IF
LET arr_requisicion[idx].valor = (arr_requisicion[idx].cantidad *arr_requisicion[idx].precio) -
arr_requisicion[idx].descvalor
LET arr_requisicion[idx].valor = arr_requisicion[idx].valor + (arr_requisicion[idx].valor * (pitbis/100))
LET xmonto = arr_requisicion[idx].valor + xmonto
INSERT INTO cctb00026 (num_req,num_oc,cotizacion_no,id,area,cod_n,cod_grupo,cod_tipo,cod_Sec,
cantidad_ord1,cantidad_ord,cantidad_1,cantidad,precio,
descuento,descvalor,valor,us_crea,fech_crea,estado,id_kit)
VALUES (xnumreq,arr_requisicion[idx].num_oc,arr_requisicion[idx].cotizacion_no,
idx,arr_requisicion[idx].area,arr_requisicion[idx].cod_n,arr_requisicion[idx].cod_grupo,
arr_requisicion[idx].cod_tipo,arr_requisicion[idx].cod_Sec,
arr_requisicion[idx].cantidad_ord1,arr_requisicion[idx].cantidad_ord,
arr_requisicion[idx].cantidad_1,
arr_requisicion[idx].cantidad,
arr_requisicion[idx].precio,arr_requisicion[idx].descuento,
arr_requisicion[idx].descvalor,
arr_requisicion[idx].valor,SUSER_SNAME(),GETDATE(),estado_req,xkit)
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
END IF
# EXECUTE xcctb34 USING xkit
# IF STATUS < 0 THEN
# ROLLBACK WORK
# RETURN xnumreq,xmonto
# END IF
END IF
LET idx = idx +1
END FOREACH
# CONTROL MONTO REQUISION
{ IF xmonto > monto_cotizacion THEN
# ROLLBACK WORK
LET xnumreq = 0
LET xmonto=0
RETURN xnumreq,xmonto
END IF
}
IF pcotizacion IS NOT NULL THEN
SELECT DISTINCT a.cotizacion_no FROM vetb00022 a WHERE a.cotizacion_no = pcotizacion
IF STATUS <> NOTFOUND THEN
LET selec =
"INSERT INTO cctb00027 (num_req,etiqueta,num_oc,secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec, ",
"Lado_1,lado_2,lado_3,cantidad,medida,cantidad_r,medida_r,us_crea,",
"fech_crea)",
" SELECT '",xnumreq,"',etiqueta,'",xnum_oc,"',secuencia,area,cod_n,cod_grupo,cod_tipo,cod_sec,lado_1,lado_2,lado_3,",
"ISNULL(cantidad,0),medida,ISNULL(cantidad,0),medida,'",pusuarios CLIPPED,"',getdate() FROM vetb00022 WHERE cotizacion_no= ",
pcotizacion USING "<<<<<<<<"
PREPARE comando FROM selec
EXECUTE comando
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
END IF
END IF
END IF
INSERT INTO cctb00025 (num_req,fecha,sec_vend,sec_vend_aprobado,us_crea,fech_crea,
estado,fecha_autorizacion,estado_despacho,monto_req)
VALUES (xnumreq,today,xsec_vend,null,SUSER_NAME(),GETDATE(),estado_req,getdate(),
"NO DESPACHADA",xmonto)
IF STATUS < 0 THEN
ROLLBACK WORK
CALL fgl_winmessage("ERROR",SQLCA.SQLCODE,"INFO")
RETURN xnumreq,xmonto
END IF
COMMIT WORK
IF xcondpago <> 4 and xcondpago<> 10 THEN
CALL entramensaje(xnumreq,pcotizacion,"A",pusuarios)
END IF
IF xcondpago = 4 OR xcondpago = 10 THEN
INSERT INTO cctb00029 (num_req,mensaje,us_crea,fech_crea) VALUES (xnumreq,pubicacion,pusuarios,getdate())
END IF
LET chmensaje = "NUMERO DE REQUISICION: ",xnumreq USING "<<<<<<"
LET subject = "AVISO REQUISICION DESPACHO NO. ",xnumreq USING "&&&&&&"
LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED
LET cuerpo_correo = "VENDEDOR : ",nombre_vendedor CLIPPED
LET cuerpo_correo = cuerpo_correo CLIPPED," FECHA REQUISICION : ",xfecha_oc USING "DD/MM/YYYY"
LET cuerpo_correo = cuerpo_correo CLIPPED," NUMERO DE ORDEN: ",xnum_oc USING "&&&&&&"
LET cuerpo_correo = cuerpo_correo CLIPPED," CLIENTE: ",arr_requisicion[1].nombre
# CALL envia_correo('rantonio@marmotech.com.do;jsantelises@marmotech.com.do',vendedorEmail,cuerpo_correo,
# subject, procedimiento )
# CALL fgl_Winmessage("INFORMACION",chmensaje,"STOP")
RETURN xnumreq,xmonto
END FUNCTION
+16 -6
View File
@@ -55,6 +55,7 @@ FUNCTION convierteorden(
pprecio, monto_cotizacion DEC(12, 2),
pdesc DEC(8, 2),
pkit INT,
existe_oc INT,
pfecha_compromiso DATE
CALL STARTLOG("veconvierte.txt")
@@ -71,11 +72,8 @@ FUNCTION convierteorden(
LET pcantidad = 0
LET pcantidad1 = 0
SELECT num_oc INTO ult_numero FROM prtb00020
IF ult_numero IS NULL THEN
LET ult_numero = 0
END IF
LET ult_numero = ult_numero + 1
# El consecutivo num_oc se toma DENTRO de la transaccion (ver BEGIN WORK)
LET ult_numero = 0
LET xsecvend_a = NULL
SELECT a.tipo_cliente,
@@ -122,8 +120,20 @@ FUNCTION convierteorden(
WHENEVER ANY ERROR STOP
BEGIN WORK
# CONSECUTIVO ATOMICO: el UPDATE incrementa y bloquea la fila de prtb00020
# hasta el COMMIT/ROLLBACK, asi dos usuarios no pueden tomar el mismo num_oc
# (antes se leia fuera de la transaccion -> PK_prtb00012 duplicada)
UPDATE prtb00020
SET num_oc = ult_numero, us_crea = xusuario, fech_crea = GETDATE()
SET num_oc = ISNULL(num_oc, 0) + 1, us_crea = xusuario, fech_crea = GETDATE()
SELECT num_oc INTO ult_numero FROM prtb00020
# AUTOCORRECCION: si el contador quedo por detras de prtb00012
# (otro programa creo ordenes sin avanzarlo), salta al siguiente libre
LET existe_oc = 0
SELECT COUNT(*) INTO existe_oc FROM prtb00012 WHERE num_oc = ult_numero
IF existe_oc > 0 THEN
SELECT MAX(num_oc) + 1 INTO ult_numero FROM prtb00012
UPDATE prtb00020 SET num_oc = ult_numero
END IF
IF xsecvend_a IS NULL OR xsecvend_a = 0 THEN