You are on page 1of 72

INDICE

I. INTRODUCCION............................................................................................1
II. OBJETIVO DEL MANUAL..............................................................................1
III. PROCEDIMIENTOS.......................................................................................1
1 FUNCIONAMIENTO GENERAL....................................................................1
2 PROCEDIMIENTO ACCESO AL SISTEMA.................................................16
3 PROCEDIMIENTO GESTION DE PRESUPUESTOS.................................24
3.1....................................................................REGISTRO DE PRESUPUESTO
24
3.2......................................CONSULTA DE BORRADORES DE PRESUPUESTOS
31
3.3............................................ACTUALIZAR BORRADOR DE PRESUPUESTOS
34
3.4...................................................FIRMAR BORRADOR DE PRESUPUESTOS
37
3.5................................................ELIMINAR BORRADOR DE PRESUPUESTOS
39
3.6.............................................CONSULTA DE PRESUPUESTOS APROBADOS
42
3.7...............................................................PENDIENTES DE PRESUPUESTOS
46
4 PROCEDIMIENTO GESTIN DE ADECUACIN......................................52
4.1......................................................................REGISTRO DE ADECUACIN
52
4.2.................................................CONSULTAR BORRADOR DE ADECUACION
58
4.3................................................ACTUALZAR BORRADOR DE ADECUACION
59
4.4.......................................................FIRMAR BORRADOR DE ADECUACIN
60
4.5................................................ELIMINAR BORRADOR DE PRESUPUESTOS
61
4.6.............................................CONSULTA DE ADECUACIONES APROBADAS
64
4.7...................................................................PENDIENTES DE ADECUACIN
65
IV. ANEXOS.......................................................................................................68
TABLA DE ILUSTRACIO
FIGURA 1. DIAGRAMA DE NAVEGACIN DEL SISTEMA DEL PROGRAMA OPERATIVO ANUAL..............2
FIGURA 2. DIAGRAMA DE CASOS DE USO............................................................................2
FIGURA 3. DIAGRAMA DE BASE DE DATOS DE SGC...............................................................3
FIGURA 4. CASO DE USO ACCESO AL SISTEMA...................................................................16
FIGURA 5. DIAGRAMA DE ESTADO PARA EL ACCESO AL SISTEMA.............................................17
FIGURA 6. DIAGRAMA DE ROBUSTEZ PARA ACCESO AL SISTEMA.............................................18
FIGURA 7. DIAGRAMA DE SECUENCIA PARA ACCESO AL SISTEMA............................................18
FIGURA 26. LISTA DE USUARIOS......................................................................................20
FIGURA 8. CASO DE USO PRESUPUESTOS..........................................................................24
FIGURA 9. DIAGRAMA DE ESTADOS PARA REGISTRO DE PRESUPUESTOS...................................28
FIGURA 10. DIAGRAMA DE ROBUSTEZ PARA REGISTRO DE PRESUPUESTOS...............................29
FIGURA 11. DIAGRAMA DE SECUENCIA PARA REGISTRO DE PRESUPUESTOS..............................29
FIGURA 12.DIAGRAMA DE ESTADOS PARA BORRADORES DE PRESUPUESTOS.............................40
FIGURA 13. DIAGRAMA DE ROBUSTEZ PARA BORRADORES DE PRESUPUESTOS..........................41
FIGURA 14. DIAGRAMA DE SECUENCIA PARA BORRADORES DE PRESUPUESTOS.........................41
FIGURA 15. DIAGRAMA DE ESTADOS PARA CONSULTA DE PRESUPUESTOS APROBADOS...............43
FIGURA 16. DIAGRAMA DE ESTADOS PARA PENDIENTES........................................................49
FIGURA 17. DIAGRAMA DE ROBUSTEZ PARA PENDIENTES......................................................49
FIGURA 18. DIAGRAMA DE SECUENCIA PARA PENDIENTES.....................................................50
FIGURA 19. CASOS DE USO PARA ADECUACIN.................................................................52
FIGURA 20. DIAGRAMA DE ESTADOS PARA REGISTRO DE ADECUACIN....................................54
FIGURA 21. DIAGRAMA DE REGISTRO DE ADECUACIN........................................................55
FIGURA 22. DIAGRAMA DE SECUENCIA PARA REGISTRO DE ADECUACIN.................................55
FIGURA 23. DIAGRAMA DE ESTADOS PARA BORRADORES DE ADECUACIN...............................62
FIGURA 24. DIAGRAMA DE ROBUSTEZ PARA BORRADOR DE ADECUACIN................................62
FIGURA 25. DIAGRAMA DE SECUENCIA PARA BORRADOR DE ADECUACIN...............................63
YYANEXO 1. EJEMPLO DE METAS DEL PTA......................................................................67
ANEXO 2. ESTRUCTURA PROGRAMTICA PRESUPUESTAL......................................................68
I. INTRODUCCION

Para mantener en funcionamiento el sistema de control del Programa Operativo


Anual, en conjunto con el Departamento de Planeacin, Programacin y
Presupuestacin se ha elaborado el presente manual con el fin de aportar
informacin detallada de los procedimientos que lleva acabo esta unidad
administrativa, y lograr alcanzar los objetivos encomendados contribuyendo a
la orientacin del personal que est involucrado en esta rea sobre la ejecucin
de las actividades, contribuyendo as con una gua sobre la forma en que
opera e interviene cada usuario.

Cabe sealar que el presente manual deber revisarse peridicamente con


respecto a la fecha de emisin, o bien cada vez que exista una modificacin a
la estructura del Programa Operativo Anual o de algn otro proceso ajeno que
afecte o modifique su funcionamiento, esto con el objeto de mantener
actualizado dicho manual.

II. OBJETIVO DEL MANUAL

Este Manual tiene como propsito contar como una gua clara y especfica que
garantice la ptima operacin y desarrollo de las diferentes actividades del
Programa Operativo Anual por medio del sistema informtico de Gestin de
Calidad, ya sea del personal de la unidad administrativa con experiencia o
nuevos elementos en el rea.

III. PROCEDIMIENTOS

1 FUNCIONAMIENTO GENERAL
Este sistema de control para el Programa Operativo Anual se conforma de
diversas ventanas las cuales cumplen un propsito especfico, a la hora de
hacer uso del sistema, cada ventana puede o no llevar a otra segn sea el flujo
que valla a seguirse, en el siguiente diagrama de navegacin el usuario puede
observar el flujo de cada una de ellas.
En caso de que este diagrama no le ofrezca el enfoque que desea puede
apoyarse en el Manual de Usuario del sistema.

Figura 1. Diagrama de Navegacin del Sistema del Programa Operativo Anual.

En este manual se trataran los procesos relacionados con los mdulos de


presupuestos y adecuacin del sistema de control del Programa Operativo
Anual, y a continuacin se presentan los procedimientos que intervienen el
ellos los cuales son los que se muestran en la Figura 2.
Figura 2. Diagrama de Casos de Uso.

Para llevar a cabo cada una de ellas se hizo uso de programacin web en
conjunto con una base de datos a la cual se le dio el nombre de
proyectovinculacion, con fines de actualizacin se mostrara la codificacin
general de los mdulos del sistema.

La base de datos creada para el Sistema de Gestin de Calidad, se conforma


de 42 tablas de las cuales fueron creadas a partir de formatos pertenecientes al
Programa de Trabajo Anual y el Programa Operativo Anual, los cuales
comparten una relacin de informacin, el proceso del PTA alimenta con
informacin el desarrollo del POA, con elementos como Meta (vase Anexo 1),
las cuales son fundamentales para el registro del procedimiento inicial que son
los presupuestos del POA, para el uso de estas metas en los presupuestos se
realiza un estructura programtica presupuestal que arroja todas las claves
presupuestales (vase Anexo 2), con lo cual se conocen los funcionarios
responsables de cada meta, las acciones que se llevaran a cabo, a que
proceso estratgico y proceso clave pertenecen.

Toda esta informacin es almacenada en las tablas creadas en la base de


datos como se puede ver en la Figura 3, en donde se muestran las relaciones
ACCION_PTA
Column DataType P N U BI U Z A Defaul Commen
name K N Q N N F I t t
cve_accpta INT(10)
id_accpta VARCHAR(
2)
desc_accpt TEXT
a
num_mpta INT(10)
con las tablas que almacenan la informacin antes mencionada, y de la cual se
derivan otras que intervienen en el proceso presupuestos y adecuacin.

Figura 3. Diagrama de Base de Datos de SGC.

DICCIONARIO DE DATOS DE proyectovinculacion

ADECUACION
Column DataType PK N U BI U Z A Defa Comm
name N Q N N F I ult ent
cve_ade INT(10)
status_ade SET('0','1','2','3','
4','5','6')
fec_ade DATE
num_ofi_ade INT(10)
cve_enc INT(10)
cve_firpoa INT(10)
firma_solicita INT(10) '0'
nte
firma_subdir INT(10) '0'
eccion
firma_validap INT(10) '0'
oa
firma_directo INT(10) '0'
r
BIEN_INVERSION
Column DataType P N U BI U Z A Defau Comme
name K N Q N N F I lt nt
cve_bienv INT(10)
e
no_bienve VARCHAR(5)
desc_bien VARCHAR(10
ve 0)

AMPLIACION
Column DataTyp P N U B U Z A Default Comment
name e K N Q I N F I
N
cve_am INT(10)
pl
montsol FLOAT
_ampl
just_am TEXT
pl
status_a SET('0','1 '' 0-al crear. 1-
mpl ','2','3') aprobada. 2-existe
adecuacin. 3-
rechazada
fecsol_a TIMESTA CURRENT_TI
mpl MP MESTAMP
cve_det INT(10)
presu
cve_enc INT(10)

BITACORA_AMPL
Column name DataType P N U BI U Z AI Defau Comme
K N Q N N F lt nt
cve_bitampl INT(10)
fecreg_bta DATETIM
E
mntantpres_b FLOAT
ta
mntprtant_bt FLOAT
a
mntprtaut_bt FLOAT
a
cve_ampl INT(10)
cve_presu INT(10)
cve_detpresu INT(10)

CAPITULO
Column DataTyp PK NN UQ BIN UN ZF AI Defaul Commen
name e t t
cve_cap INT(10)
descbien_c TEXT
ap
cant_cap INT(10)
justi_cap TEXT
cve_detpres INT(10)
u

CAPITULO_ESPECIAL
Column DataTyp PK NN UQ BIN UN ZF AI Defaul Commen
name e t t
cve_capes INT(10)
descev_cap TEXT
es
sedev_cape TEXT NULL
s
iniper_cape DATE
s
finper_cape DATE
s
just_capes TEXT
cve_detpre INT(10)
su

COMENTARIO_ADEC
Column DataTyp P N U B U Z A Default Comment
name e K N Q I N F I
N
cve_com INT(10)
ade
comen_c TEXT NULL
omade
fecha_co TIMEST CURRENT_TI
made AMP MESTAMP

cve_enc INT(10)
cve_ade INT(10)

COMENTARIO_AMP
Column DataType P N U B U Z A Default Commen
name K N Q I N F I t
N
cve_com INT(10)
a
comen_c TEXT
oma
fecha_co TIMESTA CURRENT_TIMESTA
ma MP MP
cve_amp INT(10)
l
cve_enc INT(10)
COMENTARIO_PRESU
Column DataType P N U BI U Z A Default Comm
name K N Q N N F I ent
cve_comp INT(10)
re
comen_co TEXT
mpre
fecha_co TIMESTA CURRENT_TIMES
mpre MP TAMP
cve_firpoa INT(10)
cve_enc INT(10)

COMENTARIO_REQ
Column DataType P N U BI U Z A Default Comm
name K N Q N N F I ent
cve_com INT(10)
comen_c TEXT
om
fecha TIMESTA CURRENT_TIMES
MP TAMP
cve_req INT(10)
cve_enc INT(10)

DEPARTAMENTO
Column DataType P N U BI U Z A Defau Comme
name K N Q N N F I lt nt
cve_dpto INT(10)
nom_dpto VARCHAR(50
)
cveRef_dpt INT(10)
o

DETALLE_AMPLIACION
Column DataType P N U BI U Z A Default Comm
name K N Q N N F I ent
cve_deta INT(10)
mp
fecha_det TIMESTA CURRENT_TIMES
amp MP TAMP
cve_enc INT(10)
cve_ampl INT(10)

DETALLE_DOS_PRESU
Column DataTyp PK NN UQ BIN UN ZF AI Defaul Commen
name e t t
cve_dedopr INT(10)
justi_dedop TEXT
r
cve_detpre INT(10)
su
DETALLE_EMPLEADO
Column DataType P N U BI U Z A Defau Comme
name K N Q N N F I lt nt
cve_detem INT(10)
p
id_detemp VARCHAR(45
)
pwd_detem VARCHAR(45
p )
numtarj_e INT(10)
mp

DETALLE_MNTPRES
Column name DataType P N U BI U Z A Defau Comme
K N Q N N F I lt nt
cve_detmnt INT(10)
mntlimit_det DECIMAL(14,
mnt 2)
cve_dpto INT(10)
cve_mntpres INT(10)

DETALLE_PRESUPUESTO
Column name DataType P N U BI U Z A Defa Comme
K N Q N N F I ult nt
cve_detpresu INT(10)
monto_detpres DECIMAL(12,
u 2)
cve_part VARCHAR(1
0)
cve_presu INT(10)
cve_ade INT(10)

DETALLE_REQ
Column DataType P N U BI U Z A Defau Comme
name K N Q N N F I lt nt
cve_detreq INT(10)
cant_drq INT(10)
costest_dr DECIMAL(14,
q 2)
dscbien_dr TEXT
q
cve_part VARCHAR(10)
cve_req INT(10)
cve_unime INT(10)
d

DETALLE_SUBPRE_INVERSION
Column DataTyp PK NN UQ BIN UN ZF AI Defaul Commen
name e t t
cve_dsbi INT(10)
justi_dsbi TEXT
cve_spr INT(10)
cve_detreq INT(10)
cve_cap INT(10)

DETALLE_SUBPRESU_PARTIDA
Column name DataTyp P N U BIN U Z AI Defaul Comme
e K N Q N F t nt
cve_dspr INT(10)
servicio_dspr TEXT
sede_dspr TEXT NULL
inicio_per_ds DATE
pr
fin_per_dspr DATE
justi_dspr TEXT
cve_spr INT(10)
cve_capes INT(10)

EMPLEADO
Column DataType P N U B U Z A Defaul Comment
name K N Q I N F I t
N
numTarj_e INT(10)
mp
rfc_emp VARCHAR(12)
curp_emp VARCHAR(18)
tag_emp VARCHAR(10)
nom_emp VARCHAR(50)
app_emp VARCHAR(50)
apm_emp VARCHAR(50)
email_emp VARCHAR(100)
tel_emp VARCHAR(20)
status_em SET('ACTIVO','INACTIV 'ACTIV
p O') O'

ENCARGADO
Column DataType P N UQ BIN U ZF AI Defaul Commen
name K N N t t
cve_enc INT(10)
status_enc SET('1','0' '1'
)
cve_dpto INT(10)
cve_detemp INT(10)

FIRMA
Colum DataTyp P N U B U Z A Default Comment
n name e K N Q I N F I
N
num_fi INT(10)
rma
fecha_f TIMEST CURRENT_TI Fecha y hora de la
irma AMP MESTAMP firma
IP_firm VARCH Ip desde donde se
a AR(100) realiz la firma
img_fir VARCH
ma AR(200)
cve_en INT(10) Clave del departamento
c que realizo la firma

FIRMA_POA
Column name DataType P N U BI U Z A Defa Comm
K N Q N N F I ult ent
cve_firpoa INT(10)
fecanio_firpoa YEAR
status_presu SET('0','1','2','3','4'
,'5','6')
firma_solicita INT(10)
nte
firma_subdire INT(10)
ccion
firma_validap INT(10)
oa
firma_director INT(10)

FUNCRESPONSABLES
Column name DataType PK NN UQ BIN UN ZF AI Default
cve_funcResp INT(10)
fecha TIMESTAMP CURRENT_TIMESTAMP
CURRENT_TIMESTAMP
cve_enc INT(10)
cve_accpta INT(10)

GASTO_EJERCIDO
Column name DataTy P N U BI U Z A Defau Comme
pe K N Q N N F I lt nt
cve_gaseje INT(10)
fcompra_gaseje DATE
fregistrocompra_g DATE
aseje
monto_gaseje FLOAT
cve_req INT(10)

INSTITUTO
Column name DataType P N U BI U Z A Defau Comme
K N Q N N F I lt nt
cve_ins VARCHAR(1
2)
denominacion VARCHAR(4
_ins 5)

MENU
Column DataType P N U BI U Z A Defau Comme
name K N Q N N F I lt nt
cve_menu INT(10)
nompes_m VARCHAR(20
en )
cve_enc INT(10)

META_PTA
Column DataType P N U BI U Z AI Defau Comme
name K N Q N N F lt nt
num_mpta INT(10)
id_mpta VARCHAR(2
)
dscins_mp TEXT
ta
cve_procla INT(10)

MONTO_PRESU
Column name DataTyp P N U BI U Z AI Defaul Comme
e K N Q N N F t nt
cve_mntpres INT(10)
status_mntpre SET('0','1
s ')
fecanio_mntpr YEAR
es
OPCION_SUBPRE
Column DataType P N U BI U Z A Defa Comm
name K N Q N N F I ult ent
cve_opcsub INT(10)
codigo_opcs VARCHAR(20)
ub
referencia_o VARCHAR(100) NUL
pcsub L
revision_opc VARCHAR(3)
sub
status_opcs SET('ACTUAL','ANTI
ub GUO')
indicador_o SET('BIEN','RESTRI',
pcsub 'REQ')

ORDEN_FIRMA_REQ
Column DataType P N U BI U Z A Defau Comme
name K N Q N N F I lt nt
cve_ofr INT(10)
status SET('0','1','2','3',
'4')
cve_enc INT(10)

PARTIDA
Column DataType P N U BI U Z A Defau Comme
name K N Q N N F I lt nt
cve_part VARCHAR(20
)
desc_part TEXT

PARTIDA_INVERSION
Column DataType P N U BI U Z A Defau Comme
name K N Q N N F I lt nt
cve_parinv INT(10)
cve_part VARCHAR(20
)

PARTIDA_RESTRINGIDA
Column DataType P N U BI U Z A Defau Comme
name K N Q N N F I lt nt
cve_pares INT(10)
desc_pare VARCHAR(20 NULL
s 0)
cve_part VARCHAR(20)

PRESUPUESTO
Column DataType P N U BI U Z A Default Comm
name K N Q N N F I ent
cve_pres INT(10)
u
fecela_pr TIMESTA CURRENT_TIMES
esu MP TAMP
cve_func INT(10)
Resp
cve_firpo INT(10)
a

PROCESO_CLAVE
Column DataType P N U BI U Z A Defau Comment
name K N Q N N F I lt
cve_procla INT(10)
id_procla VARCHAR(2)
nom_procla VARCHAR(50)
cve_procest INT(10)

PROCESO_ESTRATEGICO
Column DataType P N U BI U Z A Defau Comme
name K N Q N N F I lt nt
cve_proce INT(10)
st
id_procest VARCHAR(2)
nom_proce VARCHAR(30
st )

SUBPRESUPUESTO
Column DataType P N U BI U Z A Defaul Comme
name K N Q N N F I t nt
cve_spr INT(10)
num_spr INT(10)
cve_req INT(10)
cve_ins VARCHAR(1
2)
cve_opcsub INT(10)

UNIDAD_MEDIDA
Column DataType P N U BI U Z A Defau Comme
name K N Q N N F I lt nt
cve_unimed INT(10)
unidad_unim VARCHAR(1
ed 0)

REQUISICION
Column name DataType P N U BI U Z A Defa Comm
K N Q N N F I ult ent
cve_req INT(10)
folio_req INT(10)
fecsol_req DATE
fecbiennec_re DATE
q
dentroPOA_re SET('SI','NO') 'SI'
q
just_req TEXT
status_req SET('0','1','2','3','
4','5')
cve_presu INT(10) NULL
firma_solicita INT(10) '0'
nte
firma_subdire INT(10) '0'
ccion
firma_validap INT(10) '0'
oa
firma_director INT(10) '0'
cve_opcsub INT(10)
2 PROCEDIMIENTO ACCESO AL SISTEMA

Figura 4. Caso de Uso Acceso al Sistema

2.1 Propsito del Procedimiento


Permitir el acceso al sistema de Sistema de Gestin de Calidad, para el uso del
Programa Operativo Anual.

2.2 Alcance
Cualquier encargado de departamento puede acceder al sistema por medio de
un usuario y contrasea que se le asigno de manera preliminar.

2.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.

2.4 Mtodo de Trabajo

a) Polticas y lineamientos
Para realizar este procedimiento el usuario debe haber sido registrado
manualmente en la base de datos del sistema y conocer su usuario y/o
contrasea para acceder.

b) Descripcin de Actividad
Flujo Bsico:
1. Se presenta al usuario la interfaz de "Bienvenida".
2. El usurario deber ingresar usuario y contrasea, que se le han sido
generado y asignado posteriormente y presionar a continuacin el botn
de Ingresar.
3. El sistema validara si el usuario y contrasea ingresados, se encuentran
creados para el uso de la base de datos proyectovinculacion, as como
estar registrados en una tabla dentro de ella, si son correctos acceder
al sistema y mostrara la ventana principal Ilustracin 3, as tambin se le
creara una sesin la cual almacena usuario y contrasea para permitirle
refrescar la pgina si lo cree necesario, sin necesidad de volver a iniciar
sesin.
Flujo alternativo:
3a. Si en el flujo bsico, el usuario ingresa un usuario y/o contrasea
incorrectos, el sistema muestra un mensaje de error, notificndole al
usuario. El usuario puede optar en volver a ejecutar el flujo bsico o
finalizar el caso de uso.

2.5 Diagramas UML

Figura 5. Diagrama de estado para el Acceso al Sistema.


Figura 6. Diagrama de Robustez para Acceso al Sistema.

Figura 7. Diagrama de Secuencia para Acceso al Sistema.

2.6 Codificacion

Para el acceso al sistema se crearon los usurarios a nivel base de datos los
cuales fueron 22 usuarios de la siguiente manera:

CREATE USER 'direccionITZ'@'%.%.%.%' IDENTIFIED BY '92DR9I635';

Se realiz el cambio del mecanismo de hash de las contraseas ya que el


servidor no soprtaba las contraseas con un valor hash ms largo de 41-bytes,
este cambio se realiza de la siguiente manera:

PASSWORD.SET PASSWORD FOR 'direccionITZ'@'%.%.%.%'


=OLD_PASSWORD('92DR9I635');

A todos los usuarios se les dieron privilegios sobre el uso total de la base de
datos, por el momento no se realiz un anlisis de privilegios con restricciones
ms limitadas, ya que se pretenda incluir en el sistema mdulos del PTA, que
an no han sido definidos.
GRANT ALL PRIVILEGES ON proyectovinculacion.* to
'direcionITZ'@'127.0.0.1' IDENTIFIED BY '92DR9I635';
A continuacin se muestran los 22 usuarios a nivel base de datos creados para
el sistema, los cuales pueden ingresar de cualquier rango de IP gracias a la
declaracin del host %. %.%.%.

User Host Password


cntrComp %.%.%.% 6682539a24a2c39f
cntrInfo %.%.%.% 051f218358e9fc88
direccionITZ %.%.%.% 5059a6eb038b2422
divEstProf %.%.%.% 552caf697b870c6e
dptActExt %.%.%.% 64b05b14023de6fa
dptCienBas %.%.%.% 7f1ef8643715ce0d
dptCienEcon %.%.%.% 1ebb02f7713c88ad
dptCienTie %.%.%.% 5bf40aa1492da1c3
dptComDif %.%.%.% 52493f244da92535
dptDesAca %.%.%.% 78467a762a6c7607
dptGstTecVin %.%.%.% 320674122ff71edb
dptIngInd %.%.%.% 23b3d0492be25740
dptPlaPsPg %.%.%.% 73af34c364ac67a0
dptRecFina %.%.%.% 4050661a556b27c8
dptRecHum %.%.%.% 05034ab1529ab0d6
dptRecMatSer %.%.%.% 66bb549f61ac4e38
dptSerEsc %.%.%.% 04b6f4100b94d083
dptSisyComp %.%.%.% 482013073e7b695c
dpvalipoa %.%.%.% 743ef0577c7b6337
sbdAcadem %.%.%.% 47d62d9e29fc218b
sbdPlanyVinc %.%.%.% 5dca35e00cd526ef
sbdServAdm %.%.%.% 2c0b7001353af100
Para efectos de validacin internan del sistema se cre una tabla llamada
detalle_empleado, donde se registran los usuarios con los datos bsicos
usuario y contrasea, aadiendo la relacin con la tabla empleado gracias al
campo numtarj_emp, justo con esta informacin los encargados de
departamento logran el acceso al sistema.

Figura 8. Lista de Usuarios

Para el inicio de sesin se realiz la siguiente programacin, la cual se divide


en 3 archivos distintos por el uso de M-V-C:
- Index.html
La estructura en HTML presenta la vista del inicio de sesin del sistema en el
cual son requeridos los datos Usuario y Contrasea, para realizar la siguiente
validacin por medio del controlador dada la funcin loguin ().
<form action="javascript:login()" method="POST">
<table id="tlg" class='centrar'>
<tr>
<td><input type="text" value="" required="required" placeholder="Usuario" id="user"
/></td>
</tr><tr><td>&nbsp;</td></tr>
<tr>
<td><input type="password" value="" required="required" placeholder=" " id="pwd"
/></td>
</tr>
<tr><td>&nbsp;</td></tr>
<tr>
<td colspan='2'><input type="submit" value="INGRESAR" /></td>
</tr>
</table><br /><br /><br /><br /><br />
<div id="respuesta" ><!-- antes el id era contenido checar --></div>
<br /><br /><br /><br /><br />
</form>
- Control.js
La funcin loguin recupera los datos ingresados en el formulario y las enva al
modelo donde se realiza la llamada a la base de datos, esta misma funcin
devuelve la respuesta a otra de nombre reslog().
function login(){
var obj = init();
var user = document.getElementById("user").value;
var pwd = document.getElementById("pwd").value;
obj.datos.append("bandera","validar");
obj.datos.append("user",user);
obj.datos.append("pwd",pwd);
obj.sol.addEventListener("load",reslog,false);
obj.sol.open("POST","modelo.php",true);
obj.sol.send(obj.datos);
}

Esta funcin valida la respuesta de la base de datos, en donde si el primer y el


segundo carcter de la respuesta sean <b, este devolver el mensaje de error,
de lo contrario se ingresara el sistema y se cargan los datos del usuario y se
manda llamar la funcin pendientes (), que se mostrara en su apartado
correspondiente.
function reslog(e){
if(((e.target.responseText.charAt(0))=='<')&&((e.target.responseText.charAt(1)) == 'b')){
document.getElementById("respuesta").innerHTML="Usuario y Contrasea
Incorrectos..!!";
}
var obj = JSON.parse(e.target.responseText);
if(obj[0].charAt(0) == '.'){
$("#flip").css('display', 'block');
document.getElementById("info_usuario").innerHTML=obj[0];
document.getElementById("fuera").innerHTML=obj[1];
pendientes();
} else {
// document.getElementById("respuesta").innerHTML=e.target.responseText;
}
}

- Modelo.php
Aqu se realiza la llamada a la base de datos donde se verifica que el usuario
exista en la base de datos, se guardan los datos de usuario y contrasea para
generar una sesin de php, y se realiza una consulta para obtener los datos del
usuario que ingreso y poder mostrarlos en la ventana general.
case "validar":
$host = $_SERVER['REMOTE_ADDR']; $db = "proyectovinculacion";
$mysqli = new mysqli($host,$_POST['user'],$_POST['pwd'],$db);
if(($mysqli->connect_error)){ }

$_SESSION['user'] =$_POST['user'];
$_SESSION['pwd'] = $_POST['pwd'];

@$qry = $mysqli->query("SELECT dep.cve_dpto, em.numTarj_emp, cve_enc, em.nom_emp,


em.app_emp, em.apm_emp, dep.nom_dpto FROM empleado em JOIN detalle_empleado dem
ON em.numTarj_emp = dem.numTarj_emp JOIN encargado en ON dem.cve_detemp =
en.cve_detemp JOIN departamento dep ON en.cve_dpto= dep.cve_dpto where
dem.id_detemp='".$_SESSION['user']."' and status_enc='1';");
@$row = $qry->fetch_assoc();
$mysqli->query("SET NAMES 'utf8'");
$mysqli->set_charset("utf8");
$dsc.=".<img IMG SRC='images/tec_alberca.jpg' id='foto_usuario'>
<label id='nom_emp'>$row[nom_dpto]</label><br>
<label id='nom_emp'>$row[nom_emp] $row[app_emp]</label><br>
<label> $row[apm_emp] </label>
<input type='hidden' id='emp' value='$row[numTarj_emp]' />
<input type='hidden' id='dpto' value='$row[cve_dpto]' />
<input type='hidden' id='cve_encargado' value='$row[cve_enc]'/>
<input type='hidden' id='nom_dpto' value='$row[nom_dpto]' />";
$salir.="<label id='off'>Cerrar Sesin</label> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img IMG SRC='images/exit.png'
id='salir_session' onclick='javascript:cerrar_session();'>";
$log = array("$dsc","$salir","$error");
$res = json_encode($log);
echo($res);
break;

En ocasiones es necesario actualizar las pginas por lo que se implement el


uso de sesiones en php que permiten conservar el loguin, colocando la funcin
versesion(), en la estructura central del HTML.

<body onLoad="versesion();" id="cuerpo">

La funcin lleva al modelo para verificar la sesin y devuelve la respuesta en la


funcin resverses().
function versesion(){
var obj=init();
obj.datos.append("bandera","sesion");
obj.sol.addEventListener("load",resverses,false);
obj.sol.open("POST","modelo.php",true);
obj.sol.send(obj.datos);
}

El modelo desde el ingreso al sistema crea la sesin por medio de


session_start(); para despus sacar el usuario para ver si existe en la sesin,
de ser as realiza nuevamente la consulta para mostrar los datos del usuario,
de los contrario no sucede nada, ya que no han iniciado sesin.
case "sesion":
if(isset($_SESSION['user'])){
$host = $_SERVER['REMOTE_ADDR']; $db = "proyectovinculacion";
$mysqli = @new mysqli($host,$_SESSION['user'],$_SESSION['pwd'],$db);
if(!$mysqli->connect_error){
$mysqli->query("SET NAMES 'utf8'"); $mysqli->set_charset("utf8");
$qry = $mysqli->query("SELECT dep.cve_dpto, em.numTarj_emp, en.cve_enc,
em.nom_emp, em.app_emp, em.apm_emp, dep.nom_dpto FROM empleado em JOIN
detalle_empleado dem ON em.numTarj_emp = dem.numTarj_emp JOIN encargado en ON
dem.cve_detemp = en.cve_detemp JOIN departamento dep ON en.cve_dpto=
dep.cve_dpto where dem.id_detemp='".$_SESSION['user']."' and status_enc='1';");
$row = $qry->fetch_assoc();
$mysqli->query("SET NAMES 'utf8'");
$mysqli->set_charset("utf8");
$dsc.=".<img IMG SRC='images/tec_alberca.jpg' id='foto_usuario'> <label
id='nom_emp'>$row[nom_dpto]</label><br>
<label id='nom_emp'>$row[nom_emp] $row[app_emp]</label><br>
<label> $row[apm_emp] </label>
<input type='hidden' id='emp' value='$row[numTarj_emp]' />
<input type='hidden' id='dpto' value='$row[cve_dpto]' />
<input type='hidden' id='cve_encargado' value='$row[cve_enc]'/>
<input type='hidden' id='nom_dpto' value='$row[nom_dpto]' />";
$salir.="<label id='off'>Cerrar Sesin</label> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img IMG SRC='images/exit.png'
id='salir_session' onclick='javascript:cerrar_session();'>";
$log = array("$dsc","$salir");
$res = json_encode($log);
echo($res);
}else{
session_destroy();
session_start();
echo "* Revise user y pwd";
}
}else{
session_destroy();
session_start();

}
break;

De vuelta en el controlador la funcin deveulve la respuesta en el rea de la


informacin del usuario y manda llamar nuevamente a la funcin de
pendientes().
function resverses(e){
//alert(e.target.responseText);
var obj = JSON.parse(e.target.responseText);
if(obj[0].charAt(0) == '.'){
$("#flip").css('display', 'block');
document.getElementById("info_usuario").innerHTML=obj[0];
document.getElementById("fuera").innerHTML=obj[1];
pendientes();
} else {
document.getElementById("respuesta").innerHTML=e.target.responseText;
}
}
3 PROCEDIMIENTO GESTION DE PRESUPUESTOS
Dicho procedimiento comprende todos los casos de uso relacionados con los
presupuestos de cada departamento, los cuales pueden registrar presupuestos
como borradores o bien firmarlos, consultar sus borradores, actualizarlos,
firmarlos y eliminarlos, tambin realizar solicitudes de revisin y aprobacin
llamado pendientes, en los que intervienen los cuatro responsables
involucrados en los procesos del Programa Operativo Anual, todos estos
procedimientos sern descritos a detalle a continuacin.

Figura 9. Caso de Uso Presupuestos

3.1 REGISTRO DE PRESUPUESTO

3.1.1 Propsito del Procedimiento


Realizar el registro de la informacin en los presupuestos pertenecientes al
departamento en cuestin.

3.1.2 Alcance
Se deben registrar las partidas presupuestales que se usaran durante el ciclo
del POA y se les deber asignar un monto previsible para los gastos del
periodo, todo esto para cumplir la meta establecida en cada uno de los
presupuestos de los cuales es responsable el departamento.

3.1.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.
3.1.4 Mtodo de Trabajo

a) Polticas y lineamientos

Para realizar este procedimiento el usuario deber conocer las descripciones


de las partidas presupuestales, necesarias para realizar la bsqueda de las
mismas la cual se lleva a cabo por medio de claves, en caso de no conocer
dichas descripciones deber consultar el Anexo 1.

b) Descripcin de Actividades
Flujo Bsico:

1. En el Men Principal del Sistema se despliega un submen con las


opciones de PTA y POA Ilustracin 4.
2. Dentro del submen se encuentran las pestaas de Presupuestos,
Requisiciones de Bienes y Servicios, Subpresupuestos, Montos Limite,
Adecuacin y Reduccin.
3. Al dar clic en la pestaa de Presupuesto se muestran en la parte
superior de la ventana las opciones de Nuevo, Borradores, Consultas y
Pendientes.
4. Si se da clic en la pestaa de NUEVO se carga una vista con un
apartado donde se muestra el monto lmite del departamento y el monto
acumulado usado dentro del o los diferentes presupuestos, que se
muestran ms abajo en un conjunto de pestaas que llevan por nombre
las claves presupuestales, dentro de las mismas estn tres apartados en
modo de tabla, el primer apartado es la informacin del presupuesto en
el que se encuentra, muestra accin, meta y su fecha correspondiente.
Los 3 siguientes apartados son las tablas que almacenaran las
diferentes partidas que pueden ser elegidas de los captulos 1000, 2000,
3000, 4000 y 5000.
5. Para agregar las partidas a las tablas se realiza por medio de una
bsqueda dinmica que se encuentra en la parte izquierda de la ventana
la cual contiene una caja de texto donde se introduce el nmero o
nmeros de la partida, y esta muestra los nmeros de las partidas que
coinciden.
6. Una vez desplegadas se elige una y se arrastra dentro del rea de
presupuestos en donde se localizan las tablas, al soltar se agrega un
rengln en la tabla correspondiente:
a. Si la partida arrastrada es del captulo 5000 se agregara el rengln a
la ltima tabla donde se inserta el nmero de partida, su descripcin
detallada y posteriormente se solicitan los requisitos de, propuesta de
monto para la partida, descripcin del bien a adquirir, la cantidad, el
precio unitario aproximado, lo que al llenarse proporciona
automticamente, el monto propuesto de la partida, y por ltimo la
justificacin del por qu se realiza la adquisicin de dicho bien o
servicio, este tipo de partidas se refiere en su mayora a bienes
materiales los cuales son adquiridos por un determinado nmero de
piezas, por lo tanto para cada tipo de bien se debe usar la misma
partida cuantas veces sea necesario para cubrir las necesidades del
departamento Ilustracin 15.
b. Si la partida arrastrada es alguna de las siguientes: 33604, 33605,
36101, 38201, 38301, 38401, 44101, 44102, se creara una fila en la
segunda tabla, donde se agregara el nmero de la partida, su
descripcin detallada, una caja de texto para determinar el monto
propuesto, una descripcin del servicio o evento, la sede del evento
esta es opcional, seleccionar del primer calendario la fecha inicial del
servicio o evento, y del segundo calendario la fecha de trmino del
mismo, y por ltimo la una justificacin clara del porque la realizacin
del evento y el porqu del monto propuesto para este, para este tipo
de partidas se puede arrastrar las veces que sean necesarios para
detallar cada evento o servicio que se requiera.
c. Si la partida arrastrada es del captulo 1000, 2000, 3000(excepto las
mencionadas en el punto b), se generara una fila en la primera tabla,
la cual aadir el nmero de partida, su descripcin, una caja de
texto para el monto propuesto, y una caja de texto que es opcional en
la cual se detalla del porqu del monto para dicha partida si es que el
departamento lo considera necesario, en este caso este tipo de
partidas se usan solo una vez, por lo que el departamento debe
saber qu tipo de gastos pueden atribuirse a este tipo de partidas y
concentrarlo en un solo monto para cada presupuesto.
7. Cada vez que se llene algn monto propuesto de una partida, se realiza
el clculo de los montos de dicha tabla y se refleja en un la ltima fila de
la misma como total, as como el acumulado de los subtotales de las 3
tablas del presupuesto y por ultimo una suma de todos los montos
acumulados de todos los presupuestos, lo que se refleja como el Monto
Total del POA, lo que le permite saber cundo excede el lmite, y le
ayuda a redistribuir el dinero de manera eficiente.
8. Una vez que se han elegido las partidas y han sido llenados los
requisitos obligatorios, en cada uno de los presupuestos se puede optar
por el caso de uso FIRMAR o el caso de uso guardar como
BORRADOR.
Flujo alternativo:

4a. Si en el flujo bsico del punto 4, ya ha realizado y firmado un POA para


el ao siguiente, el sistema arrojara un vista con el siguiente mensaje
Los Presupuesto del Ao (siguiente) ya se Firmaron Espere Respuesta
o verifquelo en el rea de CONSULTAS, para informarle al usuario que
no podr realizar otro POA hasta el ao siguiente, dentro de la vista se
muestra un botn de Aceptar que lo llevara de vuelta a la ventana
principal.

6a. Si en el flujo bsico del punto 6c, el usuario arrastra una partida del
captulo 1000, 2000 o 3000 menos las excepciones, de la cual ya uso en
ese presupuesto, se le mostrara un mensaje de alerta para hacerle
saber el por qu no puede realizar dicha accin.
7a. Si en el flujo bsico del punto 7, el usuario cuenta con un acumulado
que excede el monto limite, el Monto Total se vuelve color rojo y se le
muestra un mensaje de alerta diciendo: El Monto Total de sus
Presupuestos excede del lmite Revise sus Totales, y se inhabilita el
botn de firmar.
7b. El usuario deber dar clic en Aceptar y cambiar una o ms cantidades
para no exceder el monto especificado, o bien podr optar por guardar
su presupuesto como BORRADOR y consultar al departamento de
planeacin para algn ajuste o aclaracin de manera personal.
8a. Si en el flujo bsico del punto 8, el usuario no ha llenado correctamente
por lo menos con una partida en cada presupuesto, se le mostrara un
mensaje de alerta para hacerle saber que no puede realizar la accin de
BORRADOR o FIRMAR, sin antes atender los requisitos que se le
solicitan.
8b. Si en el flujo bsico del punto 8, algn campo est vaco o en ceros se le
mostrara un mensaje de alerta al usuario para hacerle saber por qu no
puede realizar dicha accin, y podr FIRMAR o hacer BORRADOR
hasta que atienda las observaciones.
8c. Si en el flujo bsico del punto 8, el usuario elige en presionar el botn
CANCELAR se termina el caso de uso y se pierde todo la informacin
recabada y se muestra la ventana principal del caso de uso Gestin de
PENDIENTES.

3.1.5 Diagramas UML

Figura 10. Diagrama de Estados para Registro de Presupuestos


Figura 11. Diagrama de Robustez para Registro de Presupuestos.

Figura 12. Diagrama de Secuencia para Registro de Presupuestos.


3.1.6 Codificacin
Para el registro de presupuestos se realiza por medio de la cargo de la
siguiente funcin la cual obtiene la clave del encargado y la enva al modelo, y
la respuesta es obtenida en resCargaPresupuesto(e).
function carga_presupuesto(){
var obj=init();
var enc = document.getElementById("cve_encargado").value;
obj.datos.append("bandera","cargaFormP1");
obj.datos.append("enc",enc);
obj.sol.addEventListener("load",resCargaPresupuesto,false);
obj.sol.open("POST","modelo.php",true);
obj.sol.send(obj.datos);
}

function resCargaPresupuesto(e){
document.getElementById("contenido").innerHTML=(e.target.responseText);
}

En el modelo se crea la vista que se mostrara en el contenido incrustado por el


controlador, para generar el rea de montos limite, y el nmero de pestaas de
los presupuestos, se realizan consultas a la base de datos y tambin se realiza
la validacin de que no exista un presupuesto de ese ao firmado por el
departamento antes de cargar el formulario.
case "cargaFormP1":
$mysqli = conectarBD(); date_default_timezone_set('UTC'); $date_year = date('Y');
$anio_pres=$date_year+1;
$qr =("select * from v_clave_presupuestal where cve_enc IN(select cve_enc from encargado
where cve_dpto=(select cve_dpto from encargado where cve_enc='".$_POST['enc']."'));");
if(($sql=$mysqli->query($qr))){
$vexist = $mysqli->query("select fp.cve_firpoa from firma_poa fp join presupuesto p on
fp.cve_firpoa = p.cve_firpoa join funcresponsables fc on p.cve_funcresp = fc.cve_funcresp join
encargado enc on fc.cve_enc = enc.cve_enc where status_presu <> '0' and fecanio_firpoa ='".
$anio_pres."' and enc.cve_enc IN(select cve_enc from encargado where cve_dpto =( select
cve_dpto from encargado where cve_enc='".$_POST['enc']."')) group by cve_firpoa;");

if(($vexist->num_rows)>0){
echo "<div class ='salida-info'><br /><br /><br /><br /><br /><br />
<p> Los Presupuesto del Ao ".$anio_pres." ya se Firmaron!!! </p><br />
<input type='button' value='Aceptar' onclick='javascript:pendientes();'
id='btn_acept'/><br /><br /></div>";
}else{
$exist = $mysqli->query("SELECT mp.fecanio_mntpres, dmp.mntlimit_detmnt,
dpt.cve_dpto, e.cve_enc FROM detalle_mntpres dmp JOIN monto_presu mp ON
dmp.cve_mntpres = mp.cve_mntpres JOIN departamento dpt ON dmp.cve_dpto =
dpt.cve_dpto JOIN encargado e on dpt.cve_dpto = e.cve_dpto where e.cve_enc='".
$_POST['enc']."' and dpt.cve_dpto =(select cve_dpto from encargado where cve_enc ='".
$_POST['enc']."');");
$row = $exist->fetch_assoc(); $mnt_limit = $row[mntlimit_detmnt];
$j=1; $x = "<div class='mnt-pres'>
<label class='mnt-firpoa'>Monto Limite: $</label><label id='mntlim-pres' class='mntlim-
firpoa'> $mnt_limit </label> &nbsp; &nbsp;&nbsp; &nbsp;
<label class='mnt-firpoa'>Monto Total: $ </label><label class='mntlim-firpoa'
id='mntTot_pres'> 0.00 </label><br><br>
<input type='hidden' class='cve-fir' value='' id='cve-bfirpoa' /> </div>
<div class='binder'>"; $n=1;
$mysqli->query("SET NAMES 'utf8'");
while($r = $sql->fetch_assoc()){ $bin="bin-".$n;
$x.=aqu se generan las tablas para las partidas;
$n++; }
echo $x."</div><div id='sidebar' style='border:dotted'>
<input type='text' id='input' class='autopartida' onkeypress='return justNumbers(event);'
placeholder='Ejem = 21201' onCopy = 'return false;' onPaste = 'return false;'
onselectstart='return false;' onkeyup=\"javascript:autocompletar('lista',this.value);\" value='2'/>

<span id='reloj'></span><div id='lista'><br /><br /></div>


</div> <div class='botones-pres'> <a id='bnt-fir-pres' onclick='firmarPresupuesto();'
class='myButton'>FIRMAR</a>
<a onclick='obtenerPresupuesto();' class='myButton'>BORRADOR</a>
<a onclick='pendientes();' class='myButton'>CANCELAR</a></div>
</form>";
}}else{
echo "Fall consulta de Presupuesto (" . $mysqli->errno . ") " . $mysqli->error;
}
break;

En cuanto a la eleccin de partidas se utiliza una bsqueda dinmica


if(isset($_POST["word"])){ $mysqli = conectarBD();
if(($qry = $mysqli->query("select cve_part from partida where cve_part like '".
$_POST['word']."%' LIMIT 5;"))){
if(($qry->num_rows)<1){
echo "<label id='msgp'>Esta Partida No Existe ..!!</label>";
}else{
$i=0; $mysqli->query("SET NAMES 'utf8'");
while($row = $qry->fetch_assoc()){
$input="input".$i; echo "<br><input id=".$input." readonly='readonly' class='inplist'
draggable='true' ondragstart='arrastra(event)' value=".$row['cve_part']."><br>";
$i++;
}}}else{
echo "Fall Consulta (" . $mysqli->errno . ") " . $mysqli->error;
}
}

3.2 CONSULTA DE BORRADORES DE PRESUPUESTOS

3.2.1 Propsito del Procedimiento


Consultar lista de borradores de presupuestos emitidos anteriormente.

3.2.2 Alcance
En este caso de uso requiere haber iniciado el caso de uso de Registro de
Presupuestos, para tener el registro anterior, una vez realizado, se dan de alta
los presupuestos y se almacenan sin firmas, para poder ser consultados
posteriormente, uno de ellos puede ser firmado para comenzar con el proceso
de aprobacin, o bien optar por el caso de uso de Eliminar Borrador, Actualizar
Borrador, o Cancelar.
3.2.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.

3.2.4 Mtodo de Trabajo

a) Polticas y lineamientos
Para realizar este procedimiento el usuario debe conocer el No. De Operacin
o la fecha de registro del borrador, ya que puede darse el caso que se
encuentre con una lista de quince borradores, de cualquier forma la lista de
borradores est en orden descendente, el ltimo borrador emitido ser el
primero en la lista.

b) Descripcin de Actividad
Flujo Bsico:
1. Una vez hecho el caso de uso Gestin de Presupuestos se da clic en la
pestaa de BORRARES.
2. Se muestra una lista con el nmero de identificacin del documento, la
fecha de elaboracin y un nombre consecutivo que le asigna el sistema
cuando es creado.
3. El usuario elegir cualquier rengln que desee y dar clic y puede optar
por realizar cualquiera de los siguiente casos de uso:
o Firmar borrador.
o Actualizar borrador.
o Eliminar borrador.
Flujo alternativo:
3a. Si en el flujo bsico del punto 3, el usuario elige presionar el botn
CANCELAR se termina el caso de uso y se pierde todo la informacin
recabada. Una vez presionado el botn se muestra la ventana principal
de PENDIENTES.

3.2.5 Codificacin
La consulta se lleva a cabo por medio de la funcin carga_borradorPres() que
enva la clave del encargado al modelo para realizar la consulta y devuelve la
respuesta a la funcin reslistaBorPres(e).
function carga_borradorPres(){
var obj=init();
var enc = document.getElementById("cve_encargado").value;
obj.datos.append("bandera","listabor_pres");
obj.datos.append("enc",enc);
obj.sol.addEventListener("load",reslistaBorPres,false);
obj.sol.open("POST","modelo.php",true);
obj.sol.send(obj.datos);
}
function reslistaBorPres(e){
//alert(e.target.responseText);
document.getElementById("contenido").innerHTML=(e.target.responseText);
}

Para el listado de los presupuestos se realiza una consulta para saber si existe
un presupuesto firmado que se encuentre en vigencia de no ser as se realiza
la consulta que obtiene los datos de los borradores de los presupuestos.

case "listabor_pres":
$mysqli = conectarBD(); $date_year = date('Y'); $anio_pres=$date_year +1;
$vexist = $mysqli->query("select fp.cve_firpoa from firma_poa fp join presupuesto p on
fp.cve_firpoa = p.cve_firpoa join funcresponsables fc on p.cve_funcresp = fc.cve_funcresp
join encargado enc on fc.cve_enc = enc.cve_enc where status_presu <> '0' and
fecanio_firpoa ='".$anio_pres."' and enc.cve_enc IN(select cve_enc from encargado where
cve_dpto =( select cve_dpto from encargado where cve_enc='".$_POST['enc']."')) group by
cve_firpoa;");
if(($vexist->num_rows)>0){
echo "<br /><br /><br /><br /><br /><br /><p> Los Presupuesto del Ao ".$anio_pres." ya se
Firmaron Espere Respuesta !!! </p><br />
<input type='button' value='Aceptar' onclick='javascript:pendientes();' id='btn_acept'/><br
/><br />";
}else{
if (($qry = $mysqli->query("select date(fecela_presu) as fecha, DATE_FORMAT(fecela_presu,
'%H:%I:%S' ) as hora, fp.cve_firpoa from departamento d JOIN encargado e ON d.cve_dpto =
e.cve_dpto JOIN funcresponsables f ON e.cve_enc = f.cve_enc JOIN presupuesto p ON
f.cve_funcresp = p.cve_funcresp JOIN firma_poa fp ON p.cve_firpoa = fp.cve_firpoa where
d.cve_dpto IN(select cve_dpto from encargado where cve_dpto=(select cve_dpto from
encargado where cve_enc='".$_POST['enc']."')) and status_presu ='0' and fecanio_firpoa='".
$anio_pres."' group by fp.cve_firpoa order by fecela_presu desc LIMIT 15;"))){
$mysqli->query("SET NAMES 'utf8'"); $i=1; $lista="<table id='lis-bor-pres' class='borradores'>
<tr><th><label>No. Borrador</label></th><th><label>No. de
Operaci&oacute;n</label></th><th><label>Fecha</label></th>
<th><label>Nombre de Borrador</label></th></tr>";
while($row = $qry->fetch_assoc()){
$lista.="<tr onclick=\"obtenerBorradorPres('$row[cve_firpoa]');\">
<td><label>$i</label></td><td><label>$row[cve_firpoa]</label></td>
<td><label>$row[fecha]</label></td><td>Borrador-Presupuesto-$row[hora]-$i</td></tr>";
$i++; }
$lista.="<th colspan='4'><br></th></table>"; echo $lista;
}else{
echo "Fall select lista borradores (" . $mysqli->errno . ") " . $mysqli->error;
} }
break;
3.3 ACTUALIZAR BORRADOR DE PRESUPUESTOS

3.3.1 Propsito del Procedimiento


Actualizar la informacin guardada en un borrador de presupuestos emitido
anteriormente.

3.3.2 Alcance
En este apartado el encargado podr modificar la informacin del borrador de
su eleccin en el caso de uso Consulta de Borradores.

3.3.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.

3.3.4 Mtodo de Trabajo

a) Polticas y lineamientos
Este procedimiento se apega a la misma poltica del caso de uso de CONTROL
DE PRESUPUESTOS

b) Descripcin de Actividad
Flujo Bsico:
1. Despus de haber hecho el caso de uso de Consulta de borradores, se
mostrara una vista con los mismos apartados que en el caso de uso
Gestin de Presupuesto, con la diferencia que tendr almacenada la
informacin proporcionada anteriormente que se recupera de la base de
datos con los campos editables.
2. El usuario realizara los cambios que crea pertinentes en la informacin
de los presupuesto, los cambios posibles, pueden ser eliminar las filas
que ya existen en cualquiera de las tablas de presupuestos, agregar
nuevas filas en cualquier tabla, o bien modificar los datos almacenados.
3. Cualquiera que sea la modificacin que se realice estas estarn sujetas
a las mismas validaciones que se llevaron a cabo en su registro
preliminar.
4. Una vez realizadas las modificaciones a los presupuestos, el usuario
deber dar clic en el botn de ACTUALIZAR, se guardaran los datos y
se muestra un mensaje de BORRADOR ACTUALIZADO.

3.3.5 Codificacin
Para actualizar un borrador una vez elegido uno anteriormente se procede a
ejecutar la funcin actualizarBorPresu(), que enva los datos del presupuesto al
modelo para ser guardados y devuelve la confirmacin con la funcin
resAcBPres(e).
function actualizarBorPresu(){
var datos = info_presupuesto();
if(datos){
var sol=new XMLHttpRequest();
datos.append("bandera","actualizarBorPres");
sol.addEventListener("load",resAcBPres,false);
sol.open("POST","modelo.php",true);
sol.send(datos);
} }

function resAcBPres(e){
document.getElementById("contenido").innerHTML=(e.target.responseText);
}

En el modelo se saca el nmero de registros que existen en la base de datos y


se comparan con el nmero de registro a insertar para reutilizar los registros
que se encuentran actualmente.
case "actualizarBorPres":
$pres = str_replace("\\", "", $_POST['presu']); $prs = json_decode($pres);
$dtn = str_replace("\\", "", $_POST['dtn']); $dtnn = json_decode($dtn);
$dtc = str_replace("\\", "", $_POST['dtc']); $dtcc = json_decode($dtc);
$dtce = str_replace("\\", "", $_POST['dtce']); $dtcee = json_decode($dtce);
$vn = 0; $vc = 0; $vce = 0;
foreach($prs as $ren){ $mysqli = conectarBD();
if(!$hola = $mysqli->query("call update_borrador_presupuesto('".$ren->cvepres."');")) { echo
"Fall update_borrador_presupuesto: (" . $mysqli->errno . ") " . $mysqli->error;
} $j=0; $i = 0; $rc_bd = 0; $rce_bd = 0; $rn_bd = 0;
while($r = $hola->fetch_assoc()){
$v[$i][0] = $r['cve_detpresu']; $v[$i][1] = $r['cve_cap'];
$v[$i][2] = $r['cve_capes']; $i++; }
$mysqli = conectarBD(); $ren_bd = count($v); // total de detalles en bd
$ren_tablas = 1; $sum = 0; //total y tope de cada tabla
$cant_dtn = 0; $cant_dtc = 0; $cant_dtce = 0; // cant de cada tabla
$n = 1; $c=1; $ce=1; // tope de cada tabla
for($y=0; $y<sizeof($dtnn); $y++) {
if($dtnn[$y]->cont == $ren->cont){
$cant_dtn ++; } }
for($t=0; $t<sizeof($dtcc); $t++) {
if($dtcc[$t]->cont == $ren->cont){
$cant_dtc ++ } }
for($d=0; $d<sizeof($dtcee); $d++) {
if($dtcee[$d]->cont == $ren->cont){
$cant_dtce ++; } }
$sum = $cant_dtn + $cant_dtc + $cant_dtce;
while(($ren_bd > $ren_tablas) || ($ren_bd >= $ren_tablas) ){
while(($cant_dtn != 0) && ($n <= $cant_dtn) && ($ren_bd >= $ren_tablas)){
if(!$resu = $mysqli->query("CALL update_borrador_detpresu('".$v[$j][0]."','".$dtnn[$vn]-
>mntn."','".$dtnn[$vn]->prtn."','".$dtnn[$vn]->jstn."')")){
echo "Fall update_borrador_detpresu (" . $mysqli->errno . ") " . $mysqli->error; }
$ren_tablas++; $j++; $n++; $vn++; }
while(($cant_dtce != 0) && ($ce <= $cant_dtce) && ($ren_bd >= $ren_tablas)){if(!$resu =
$mysqli->query("CALL update_borrador_detalle_capes('".$v[$j][0]."','".$dtcee[$vce]->mntce."','".
$dtcee[$vce]->prtce."','".$dtcee[$vce]->event."','".$dtcee[$vce]->sede."','".$dtcee[$vce]->pini."','".
$dtcee[$vce]->pfin."','".$dtcee[$vce]->jstce."')")){ echo "Fall
update_borrador_detalle_capes (" . $mysqli->errno . ") " . $mysqli->error;
$ren_tablas++; $j++; $ce++; $vce++; }
while(($cant_dtc != 0) && ($c <= $cant_dtc) && ($ren_bd >= $ren_tablas)){if(!$resu = $mysqli-
>query("CALL update_borrador_detalle_cap('".$v[$j][0]."','".$dtcc[$vc]->mntc."','".$dtcc[$vc]-
>prtc."','".$dtcc[$vc]->dsb."','".$dtcc[$vc]->cnt."','".$dtcc[$vc]->jstc."')")){
echo "Fall update_borrador_detalle_cap (" . $mysqli->errno . ") " . $mysqli->error; }
$ren_tablas++; $j++; $c++; $vc++; }
while(($sum < $ren_bd) && ($ren_tablas <= $ren_bd)){
if(!$resu = $mysqli->query("CALL update_borrador_delete('".$v[$j][0]."')")){
echo "Fall update_borrador_delete(" . $mysqli->errno . ") " . $mysqli->error;}
$j++; $ren_tablas++; } }
while(($n <= $cant_dtn)){
if($dtnn[$vn]->jstn ==''){
if(!$resu = $mysqli->query("CALL insert_detpresu('".$dtnn[$vn]->mntn."','".$dtnn[$vn]->prtn."','".
$ren->cvepres."')")){
echo "Fall insert_detpresu (" . $mysqli->errno . ") " . $mysqli->error;}
}else{
if(!$resu = $mysqli->query("CALL insert_detjusti('".$dtnn[$vn]->mntn."','".$dtnn[$vn]->prtn."','".
$ren->cvepres."','".$dtnn[$vn]->jstn."')")){
echo "Fall insert_detpresu (" . $mysqli->errno . ") " . $mysqli->error; } } $n++;
$vn++; }
while(($ce <= $cant_dtce)){
echo "CALL insert_detcapes('".$dtcee[$vce]->mntce."','".$dtcee[$vce]->prtce."','".$ren-
>cvepres."','".$dtcee[$vce]->event."','".$dtcee[$vce]->sede."','".$dtcee[$vce]->pini."','".
$dtcee[$vce]->pfin."','".$dtcee[$vce]->jstce."') \n";
if(!$resce = $mysqli->query("CALL insert_detcapes('".$dtcee[$vce]->mntce."','".$dtcee[$vce]-
>prtce."','".$ren->cvepres."','".$dtcee[$vce]->event."','".$dtcee[$vce]->sede."','".$dtcee[$vce]-
>pini."','".$dtcee[$vce]->pfin."','".$dtcee[$vce]->jstce."')")){
echo "Fall insert_detpresu (" . $mysqli->errno . ") " . $mysqli->error;}
$ce++; $vce++; }
while(($c <= $cant_dtc)){
echo "CALL insert_detcap('".$dtcc[$vc]->mntc."','".$dtcc[$vc]->prtc."','".$ren->cvepres."','".
$dtcc[$vc]->dsb."','".$dtcc[$vc]->cnt."','".$dtcc[$vc]->jstc."')";
if(!$resc = $mysqli->query("CALL insert_detcap('".$dtcc[$vc]->mntc."','".$dtcc[$vc]->prtc."','".
$ren->cvepres."','".$dtcc[$vc]->dsb."','".$dtcc[$vc]->cnt."','".$dtcc[$vc]->jstc."')")){
echo "Fall insert_detpresu (" . $mysqli->errno . ") " . $mysqli->error; }
$c++; $vc++; } }
echo "<div class ='salida-info'> <br /><br /><br /><br /><br /><br />
<p>BORRADOR ACTUALIZADO..!!</p><br /> <br /><br /><br />
&nbsp;&nbsp;&nbsp;<input type='button' value='Aceptar' onclick='javascript:pendientes();'
id='btn_acept'/><br /><br /></div>";
break;
3.4 FIRMAR BORRADOR DE PRESUPUESTOS

3.4.1 Propsito del Procedimiento


Firmar un borrador emitido con anterioridad para proseguir con las revisiones
pertinentes.

3.4.2 Alcance
El encargado elige un borrador de la lista, si cree necesario realizar cambios o
no y proseguir a firma el formato para ser revisado y aprobado.

3.4.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.

3.4.4 Mtodo de Trabajo

a) Polticas y lineamientos
Este procedimiento se apega a la misma poltica del caso de uso de CONTROL
DE PRESUPUESTOS

b) Descripcin de Actividad
Flujo Bsico:
1. Una vez hecho el caso de uso de consulta de Borradores de
presupuestos, se mostrara una vista con los mismos apartados que en el
caso de uso Gestin de Presupuesto, con la diferencia que tendr
almacenada la informacin proporcionada anteriormente que se
recupera de la base de datos con los campos editables.
2. El encargado del departamento verifica la informacin del borrador y si
lo cree necesario realizara los cambios que crea pertinentes en la
informacin de los presupuesto, los cambios posibles, pueden ser
eliminar las filas que ya existen en cualquiera de las tablas de
presupuestos, agregar nuevas filas en cualquier tabla, o bien modificar
los datos almacenados.
Una vez que est satisfecho con la informacin registrada proceder a
dar clic en al botn FIRMAR, los presupuestos pasan por dos
validaciones necesarias, la primera es que ningn campo se encuentre
vaco y que ningn monto propuesta sea cero o menor, y el siguiente es
que cada presupuesto cuente por lo menos con una partida para poder
ser almacenado una vez concluidas las validaciones correctamente la
informacin ser guardada y se mostrara al usuario una vista con el
mensaje PRESUPUESTO FIRMADOS, para proceder con la revisin y
aprobacin de los presupuestos.

3.4.5 Codificacin
Para realizar la firma de un borrador de presupuesto se realiza casi el mismo
proceso que en la actualizacin, ya que se registran los datos de igual manera
que en la actualizacin solo que al finalizar ese proceso se agrega la firma del
departamento solicitante.
case "firBorPres":
$pres = str_replace("\\", "", $_POST['presu']);
$prs = json_decode($pres);
$dtn = str_replace("\\", "", $_POST['dtn']);
$dtnn = json_decode($dtn);
$dtc = str_replace("\\", "", $_POST['dtc']);
$dtcc = json_decode($dtc);
$dtce = str_replace("\\", "", $_POST['dtce']);
$dtcee = json_decode($dtce);
$vn = 0; $vc = 0; $vce = 0; // posicion de cada vector
foreach($prs as $ren){ // datospres.push({"acc" : inacc[0].value, "cvepres" :
cve_pres[0].value, "cont": n});
$mysqli = conectarBD();
if(!$hola = $mysqli->query("call update_borrador_presupuesto('".$ren-
>cvepres."');")) {
echo "Fall update_borrador_presupuesto: (" . $mysqli->errno .
") " . $mysqli->error;
}
$j=0;
$i = 0;
$v = '';
$rc_bd = 0; $rce_bd = 0; $rn_bd = 0;
while($r = $hola->fetch_assoc()){
$v[$i][0] = $r['cve_detpresu'];
$v[$i][1] = $r['cve_cap'];
$v[$i][2] = $r['cve_capes'];
//echo "v ".$v[$i][0]." i ".$i."\n";
$i++;
}
$errorCorrectionLevel = 'M'; $matrixPointSize = 4;
$data = $_POST['nom'].' - '.$_POST['dpto'].' - '.date("F j, Y, g:i a").' - Clave de Presupuesto '.
$_POST['firpoa'];
$PNG_TEMP_DIR =
dirname(__FILE__).DIRECTORY_SEPARATOR.'ftemp'.DIRECTORY_SEPARATOR;
$PNG_WEB_DIR = 'ftemp/';
if(!file_exists($PNG_TEMP_DIR)) mkdir($PNG_TEMP_DIR);
$filename = $PNG_TEMP_DIR.'f.png';// $filename = $PNG_TEMP_DIR.'f'.md5($data.'|'.
$errorCorrectionLevel.'|'.$matrixPointSize).'.png';
//'ftemp/f'.md5($data.'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png'
$img = 'f'.md5($data.'|'.$errorCorrectionLevel.'|'.$matrixPointSize).'.png';
$filename = $PNG_WEB_DIR.$img; //echo $filename;
QRcode::png($data, $filename, $errorCorrectionLevel, $matrixPointSize, 2);
$rutaimg=$mysqli->real_escape_string($filename);
if($mysqli->query("call insert_firma_poa('".$_SERVER['REMOTE_ADDR']."','".$rutaimg."','".
$_POST['enc']."','".$_POST['firpoa']."');")) {
$mysqli = conectarBD();
echo"<div class ='salida-info'> <br /><br /><br /><br /><br /><br />
<p>Presupuestos Fimados</p><br /><IMG SRC='ftemp/".$img."' class='firma' ><br
/><br /><br /><input type='button' value='Aceptar' onclick='javascript:pendientes();'
id='btn_acept'/> <br /><br /></div>";
}else { echo "Fall insert_firma_poa: (" . $mysqli->errno . ") " . $mysqli->error; }
break;

3.5 ELIMINAR BORRADOR DE PRESUPUESTOS

3.5.1 Propsito del Procedimiento


Eliminar uno de los borradores de la eleccin del usuario.

3.5.2 Alcance
El encargado elige un borrador de la lista y por medio de la consulta decidir si
realiza la eliminacin.

3.5.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.

3.5.4 Mtodo de Trabajo

a) Descripcin de Actividad
Flujo Bsico:
1. Una vez hecho el caso de uso de consulta de Borradores de
presupuestos, se mostrara una vista con los mismos apartados que en el
caso de uso Gestin de Presupuestos, con la diferencia que tendr
almacenada la informacin proporcionada anteriormente que se
recupera de la base de datos con los campos editables.
2. El encargado del departamento decidir si dicho borrador ya no es til y
proseguir a dar clic en el botn ELIMINAR.
Se le mostrara un mensaje POA ELIMINADO CORRECTAMENTE.
3.5.5 Diagramas UML

Figura 13.Diagrama de Estados para Borradores de Presupuestos.


Figura 14. Diagrama de Robustez para Borradores de Presupuestos

Figura 15. Diagrama de Secuencia para Borradores de Presupuestos


3.5.6 Codificacin
Para la eliminacin de presupuestos se ejecuta la funcin
eliminar_presupuesto(), la cual enva la clave del borrador del presupuesto a
eliminar al modelo.
function eliminar_presupuesto(cve){//firmar borrador
var obj=init();
obj.datos.append("bandera","eliminar_presu");
obj.datos.append("cve",cve);
obj.sol.addEventListener("load",resElimPres,false);
obj.sol.open("POST","modelo.php",true);
obj.sol.send(obj.datos);
}
function resElimPres(e){
//alert(e.target.responseText);
document.getElementById("contenido").innerHTML=(e.target.responseText);
}

En el modelo se realiza la llamada al procedimiento almacenado para la


eliminacin del presupuesto y se devuelve la respuesta de confirmacin.

case "eliminar_presu":
$mysqli = conectarBD();
if($mysqli->query("CALL eliminar_poa('".$_POST['cve']."');")) {
echo "<div class ='salida-info'> <br /><br /><br /><br /><br /><br />
<p>POA ELIMINADO CORRECTAMENTE..!!</p><br /><br /><br />&nbsp;<input
type='button' value='Aceptar' onclick='javascript:pendientes();' id='btn_acept'/><br /><br
/></div>";
}else { echo "Fall eliminar_poa: (" . $mysqli->errno . ") " . $mysqli->error; }
break;

3.6 CONSULTA DE PRESUPUESTOS APROBADOS

3.6.1 Propsito del Procedimiento


Consultar Presupuestos aprobados.

3.6.2 Alcance
En este apartado el encargado podr consultar presupuestos de aos
anteriores as como el vigente, los cuales fueron aprobados para su
departamento.

3.6.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.
3.6.4 Mtodo de Trabajo

a) Descripcin de Actividad
Flujo Bsico:
1. Dentro del men de presupuestos se da clic en la pestaa de
CONSULTA.
2. Se muestra una lista de los presupuestos aprobados, tanto de aos
anteriores como el actual.
3. Al dar clic en cualquier rengln se mostrara la vista del POA
seleccionado con la misma presentacin que cuando se realiz, solo que
la informacin no ser editable ya que solo es material de consulta.
Al terminar la consulta el usuario puede presionar el botn Salir.

3.6.5 Diagramas UML

Figura 16. Diagrama de Estados para Consulta de Presupuestos Aprobados.

3.6.6 Codificacin
Para el procedimiento de consulta de presupuestos aprobados se ejecuta la
funcin presu_aporobado() que obtiene la clave del presupuesto y lo lleva al
modelo donde es procesado y devuelve la respuesta en la funcin
resPresAprob().
function presu_aprobado(cve){
var obj=init();
obj.datos.append("bandera","presu_aprobado");
obj.datos.append("cve",cve);
obj.sol.addEventListener("load",resPresAprob,false);
obj.sol.open("POST","modelo.php",true);
obj.sol.send(obj.datos);
}
function resPresAprob(e){
//alert(e.target.responseText);
document.getElementById("contenido").innerHTML=(e.target.responseText); }

En el modelo se crea la vista que ser devuelta como respuesta, se realizan


consultas para obtener los presupuestos con sus respestivas consultas las
cuales se presuentan en el mismo formato en que fueron regustradas, solo que
a manera de consulta.
case "consulta_presAprob":
$mysqli = conectarBD(); $cve =$_POST['cveb']; $dpto =$_POST['dpto']; $i=2;
if(!$res = $mysqli->query("CALL montos_firpoa('".$_POST['cveb']."');")){
echo "Fall montos_firpoa (" . $mysqli->errno . ") " . $mysqli->error; }
$rmnts = $res->fetch_assoc(); $t_firpoa = ($rmnts['normal']) + ($rmnts['capes']) +
($rmnts['cap']); $mysqli = conectarBD();
$sql=$mysqli->query("select fc.cve_funcresp, id_procest, id_procla, pres.cve_presu, id_mpta,
dscins_mpta, id_accpta,desc_accpta, status_presu, pres.fecela_presu, fp.fecanio_firpoa from
proceso_estrategico pe join proceso_clave pc on pe.cve_procest=pc.cve_procest join meta_pta
mp on pc.cve_procla=mp.cve_procla join accion_pta ap on ap.num_mpta=mp.num_mpta join
funcresponsables fc on ap.cve_accpta=fc.cve_accpta JOIN encargado e ON fc.cve_enc =
e.cve_enc join presupuesto pres on pres.cve_funcresp = fc.cve_funcresp join firma_poa fp on
pres.cve_firpoa = fp.cve_firpoa join departamento d on e.cve_dpto = d.cve_dpto where
fp.cve_firpoa ='".$_POST['cveb']."';");
$exist = $mysqli->query("SELECT mp.fecanio_mntpres, dmp.mntlimit_detmnt, dpt.cve_dpto,
e.cve_enc FROM detalle_mntpres dmp JOIN monto_presu mp ON dmp.cve_mntpres =
mp.cve_mntpresJOIN departamento dpt ON dmp.cve_dpto = dpt.cve_dpto JOIN encargado e
ondpt.cve_dpto = e.cve_dpto join funcresponsables fc on fc.cve_enc = e.cve_enc JOIN
presupuesto p on fc.cve_funcresp = p.cve_funcresp JOIN firma_poa fir on
p.cve_firpoa = fir.cve_firpoa where fir.cve_firpoa ='".$_POST['cveb']."';");
$ml = $exist->fetch_assoc(); $mnt_limit = $ml[mntlimit_detmnt]; $comen =
comentarios_presupuesto($_POST['cveb']);
$tab_central="<br><div class='mnt-pres'><label class='mnt-firpoa'>Monto Limite:
$</label><label id='mntlim-pres' class='mntlim-firpoa'> $mnt_limit </label> &nbsp;
&nbsp;&nbsp; &nbsp; <label class='mnt-firpoa'>Monto Total: $</label><label class='mntlim-
firpoa' id='mntTot_pres'> ".$t_firpoa.".00</label><br><br> <input type='hidden' class='cve-fir'
value='".$_POST['cveb']."' id='cve-bfirpoa' />
</div><div class='binder'>";
$n=1; $a=1; $j=1; $mysqli = conectarBD();
while($r = $sql->fetch_assoc()){
$ban_tnor = false; $ban_tcapes = false; $ban_tcap = false; $bin="bin-".$n; $tot_nor=0;
if(!$resul = $mysqli->query("CALL montos_presu('".$r[cve_presu]."');")){
echo "Fall montos_firpoa (" . $mysqli->errno . ") " . $mysqli->error; }
$mntp = $resul->fetch_assoc(); $mysqli = conectarBD();
$total = ($mntp['normal']) + ($mntp['capes']) + ($mntp['cap']);
$tab_central.=" AQU FIGURA LA PRIMERA TABLA CON LA INFORMACIN DEL
PRESUPUESTO ";
$partidas = $mysqli->query("SELECT dp.*, pr.desc_part, p.cve_presu FROM partida pr JOIN
detalle_presupuesto dp ON dp.cve_part = pr.cve_part JOIN presupuesto p ON dp.cve_presu =
p.cve_presu JOIN firma_poa fp ON p.cve_firpoa = fp.cve_firpoa where p.cve_presu = '".
$r[cve_presu]."' AND fp.cve_firpoa ='".$_POST['cveb']."';");
while($rc = $partidas->fetch_assoc()){
$pce = $mysqli->query("SELECT * FROM presupuesto p JOIN detalle_presupuesto dp ON
p.cve_presu = dp.cve_presu JOIN capitulo c ON dp.cve_detpresu =c.cve_detpresu WHERE
p.cve_presu ='".$r[cve_presu]."' AND dp.cve_part='".$rc[cve_part]."';");
$pc = $mysqli->query("SELECT * FROM presupuesto p JOIN detalle_presupuesto dp ON
p.cve_presu = dp.cve_presu JOIN capitulo_especial c ON dp.cve_detpresu =c.cve_detpresu
WHERE p.cve_presu ='".$r[cve_presu]."' AND dp.cve_part='".$rc[cve_part]."';");
if(($pce->num_rows)>0 || ($pc->num_rows)>0){
}else{ $ban_tnor = true; //$ban_tnor = false; $ban_tcapes = false; $ban_tcap = false;
$tab_nor.=" AQU SE CONCENTRAN LAS PARTIDAS NORMALES DE LA PRIMERA TABLA ";
$pj = $mysqli->query("SELECT p.cve_presu, dp.*, ddp.* FROM presupuesto p JOIN
detalle_presupuesto dp ON p.cve_presu = dp.cve_presu JOIN detalle_dos_presu ddp ON
ddp.cve_detpresu = dp.cve_detpresu WHERE ddp.cve_detpresu= '".$rc[cve_detpresu]."';");
$a=0; if(($pj->num_rows)>0){ while($row = $pj->fetch_assoc()){
$tab_nor.=" <td><label class='jstn' id='jstbien.$i'>".$row[justi_dedopr]."</label></td></tr>";
$i++; }
}else{
$tab_nor.="<td><label class='jstn' id='jstbien.$i'></label></td></tr>"; $i++;
} } }
$tab_nor.="<tr class='tr_pn' id='trpn2'> <th bgcolor='#1D4889' colspan='2'>TOTAL</th>
<th bgcolor='#1D4889' class='m4'>$<label id='smTtPn$n' class='propoaT'>".
$mntp['normal']."</label></th><th bgcolor='#1D4889'></th></tr></table>
<br>";
$tab_capes="AQU SE CONENTRAN LAS PARTIDAS DE LA SEGUNDA TABLA CAPITULO
ESPECIAL";
$partidas = $mysqli->query("SELECT dp.*, pr.desc_part, p.cve_presu, cp.* FROM partida pr
JOIN detalle_presupuesto dp ON dp.cve_part = pr.cve_part JOIN capitulo_especial cp ON
dp.cve_detpresu = cp.cve_detpresu JOIN presupuesto p ON dp.cve_presu = p.cve_presu JOIN
firma_poa fp ON p.cve_firpoa = fp.cve_firpoa where p.cve_presu = '".$r[cve_presu]."' AND
fp.cve_firpoa ='".$cve."';");
while($rc = $partidas->fetch_assoc()){ $ban_tcapes = true;
$tab_capes.="AQU SE ENCUENTRAN LAS PARTIDAS DE LA ULTIMA TABLA";
$a=0; $i++; }
$tab_capes.=";
$partidas = $mysqli->query("SELECT dp.*, pr.desc_part, p.cve_presu, c.* FROM partida pr
JOIN detalle_presupuesto dp ON dp.cve_part = pr.cve_part JOIN capitulo c ON
dp.cve_detpresu = c.cve_detpresu JOIN presupuesto p ON dp.cve_presu = p.cve_presu JOIN
firma_poa fp ON p.cve_firpoa = fp.cve_firpoa where p.cve_presu = '".$r[cve_presu]."' AND
fp.cve_firpoa ='".$cve."';");
while($rc = $partidas->fetch_assoc()){
$cstbien = ($rc[monto_detpresu]) * ($rc[cant_cap]); $ban_tcap = true;
$tab_cap.=";
$a=0; $i++; } $tab_cap.="";
if(($ban_tcap) && ($ban_tcapes) && ($ban_tnor)){ $tab_central.=$tab_nor.$tab_capes.
$tab_cap."</form><br /><br /></div><br /><br /></div></div>"; }else{
if(($ban_tnor) && ($ban_tcapes)){
$tab_central.=$tab_nor.$tab_capes."nor capes</form><br /><br /></div><br /><br />
</div></div>";}else{if(($ban_tnor) && ($ban_tcap)){ $tab_central.=$tab_nor.$tab_cap."nor
cpa</form><br /><br /> </div><br /><br /></div></div>"; }else{ if(($ban_tcap)
&& ($ban_tcapes)){ $tab_central.=$tab_cap.$tab_capes." cap capes</form><br /><br
/></div><br /><br /></div></div>"; }else{ if($ban_tnor){
$tab_central.=$tab_nor."</form><br /><br /></div><br /><br /></div></div>";
}else{ if($ban_tcapes){ $tab_central.=$tab_capes."</form><br /><br /></div><br
/><br /></div></div>";
}else{ if($ban_tcap){ $tab_central.=$tab_cap."</form><br /><br /></div><br /><br
/></div></div>";
}else{ $tab_central.="</form><br /><br /></div><br /><br /></div></div>"; }
} } } } } }
if(($r['status_presu']) == '6'){ $tab_central.="<div class='botones-pres'>
<a id='bnt-fir-pres' onclick='javascript:pendientes();' class='myButton'>SALIR</a>
</div>";
}else{ $tab_central.="<div class='botones-pres'><a id='bnt-fir-pres'
onclick='firmarVistaPresu();' class='myButton'>FIRMAR</a> <a id='bnt-coment-pres'
onclick='javascript:btn_comen_presu();' class='myButton'>COMENTARIO</a> </div>"; }
$n++; } $tab_central.="</div> </div>";
if(($r = $mysqli->query("select num_firma, fecha_firma, img_firma, tag_emp, nom_dpto,
nom_emp, app_emp, apm_emp
from firma f join encargado en on en.cve_enc=f.cve_enc join departamento d on
en.cve_dpto=d.cve_dpto join detalle_empleado de on de.cve_detemp=en.cve_detemp
join empleado e on e.numtarj_emp=de.numtarj_emp where num_firma=(select
firma_solicitante from firma_poa where cve_firpoa ='".$cve."') || num_firma=(select
firma_subdireccion from firma_poa where cve_firpoa = '".$cve."') || num_firma=(select
firma_validapoa from firma_poa where cve_firpoa = '".$cve."') || num_firma=(select
firma_director from firma_poa where cve_firpoa = '".$cve."');"))) { $tab_central.= "<div id='firmas-
presu'><table class='centrar'><tr>"; while($row = $r->fetch_assoc()){ if ($row['num_firma']!
=1) { $tab_central.= "<td style='vertical-align:top; padding:20px;'><table class='tb_firm'>
<tr><td><img SRC='".$row['img_firma']."' class='firma'></td></tr> <tr><td><label>".
$row['nom_emp']." ".$row['app_emp']." ".$row['apm_emp']."</label></td></tr>
<tr><td><label>".$row['nom_dpto']."</label></td></tr><tr><td><label>".date("d-m-
Y",strtotime($row['fecha_firma'] , $now = time()))."</label></td></tr></table></td>"; }
} } echo $tab_central .= "</tr></table>";
break;

3.7 PENDIENTES DE PRESUPUESTOS

3.7.1 Propsito del Procedimiento


Realizar las revisiones pertinentes a los presupuestos realizados por cada
departamento del plantel, para poder ser aprobados.

3.7.2 Alcance
Cada departamento realiza sus presupuestos, una vez que los firman son
enviados a revisin, que son realizadas por su respectiva subdireccin, por el
departamento de planeacin quien es el encargado de la gestin de dichos
procesos, y por la direccin quien es la ltima revisin, para dar la aprobacin
final, y puedan comenzar hacer uso de l.

3.7.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento, intervienen como revisores las tres Subdirecciones,
el Departamento de Planeacin Programacin y Presupuestacin y la
Direccin del plantel.

3.7.4 Mtodo de Trabajo

a) Polticas y lineamientos
Para realizar las revisiones correctamente los usuarios que fungen como
revisores deben tener conocimiento general del trabajo realizado en los
departamentos a su cargo.

b) Descripcin de Actividad
Flujo Bsico:
1. El departamento, ha firmado sus presupuestos y en el apartado de
pendientes de su subdireccin correspondiente aparecer el nombre de
dicho departamento para su revisin.
2. Si se da clic en el nombre del departamento, se mostrara una vista
preliminar del documento a manera de consulta para su revisin.
3. La subdireccin determinara las correcciones que crea pertinentes, y
puede optar por Firmar y aprobar el POA o bien hacer
COMENTARIO.
4. Si se presiona el botn Firmar, se aprueba y firma el POA y se muestra
una leyenda de confirmacin.
5. Una vez aprobado por su subdireccin, los presupuestos pasaran a la
revisin del departamento de Planeacin, Programacin y
Presupuestacin quien cuenta con dos usuarios, para una correcta
gestin de los documentos uno de los usuarios valida y aprueba las
peticiones, mientras el otro funge como departamento, el usuario que
valida realiza la revisin y aprobacin de la peticin con las misma
opciones que la subdireccin.
6. Una vez aprobado por el departamento de Planeacin, Programacin y
Presupuestacin, los presupuestos pasaran por su ltima revisin de la
direccin del plantel con las mismas opciones anteriores.
7. Cuando la peticin haya sido aprobada, aparecer en el rea de
pendientes del departamento que la emiti para que pueda consultarla.
Despus deber presionar el botn de Aceptar, para que el rea de
pendientes quede libre y podr consultar su documento en el rea de
CONSULTAS.
Flujo alternativo:

1a. El en punto 1 del flujo bsico, en el rea de pendientes podra haber


ms de un nombre de departamento, y en dicha rea solo se mostraran
los primeros 4 nombres de los departamentos que hayan solicitado
revisin.
1b. Para poder ver todas las solicitudes pendientes deber dar clic en la
leyenda NUMERO DE PENDIENTES(x), donde se muestran el numero
correcto de las solicitudes, y este mostrara una lista del total de las
solicitudes con el nombre del departamento solicitante y su fecha de
elaboracin, as como una lista de los borradores del departamento que
esta logueado, en caso de que dicho departamento ya haya realizado la
peticin o bien sus presupuestos ya estn aprobados, aparecer una
leyenda en el rea de borradores indicndole que no puede realizar una
consulta porque ya se ha realizado el trmite de dicho ao.
1c. Para consultar una de las peticiones pendientes deber dar clic en
cualquier rengln de la tabla y se mostrara su respectiva vista para la
revisin y proceder a realizar el punto nmero 3 de este mismo caso de
uso.
3a. En el punto 3 del flujo bsico, el usuario puede optar por presionar el
botn COMENTARIO para expresar alguna observacin acerca de los
presupuestos y proceder a Firmar y aprobar dicho documento.
3b. Si el punto 3a no se lleva acabo puede ser que el usuario haya optado
por Rechazar los presupuestos, y agregar un comentario del porque no
han sido aprobados.
De tal manera que el encargado del departamento que lo ha emitido,
podr ver en el apartado de pendientes que su peticin ha sido
rechazada, al dar clic en ella podr ver los comentarios que se le
realizaron realizar las correcciones a sus presupuestos.
Una vez acatados los comentarios el encargado proceder a firmar para
una nueva revisin, con la diferencia que en su nueva revisin los
comentarios estarn visibles para conocer las correcciones que se han
efectuado.
3c. Si en el punto 3 del flujo bsico, el usuario opta por presionar el botn
Cancelar, se mostrara la ventana principal, y dicha peticin de revisin
seguir en el rea de pendientes.

3.7.5 Diagramas UML


Figura 17. Diagrama de Estados para Pendientes.

Figura 18. Diagrama de Robustez para Pendientes


Figura 19. Diagrama de Secuencia para Pendientes.
3.7.6 Codificacin
Para llevar a cabo el procedimiento de pendientes de presupuestos se ejecuta
la funcin de pendientes(), la cual enva la clave del encargado al modelo para
ser procesado y enva la respuesta a resPend(), que se encarga de incrustrar la
rspuesta del modelo en el rea de presupuestos.
function pendientes(){
document.getElementById("titulo").innerHTML = "PENDIENTES GENERALES";
document.getElementById("show_firma").style.visibility = 'hidden';
var obj=init();
var enc = document.getElementById("cve_encargado").value;
obj.datos.append("bandera","num_pendientes");
obj.datos.append("cve_enc",enc);
obj.sol.addEventListener("load",resPend,false);
obj.sol.open("POST","modelo.php",true);
obj.sol.send(obj.datos);
}
function resPend(e){
document.getElementById("show_firma").style.visibility = 'hidden';
var obj = JSON.parse(e.target.responseText);
var div_con = document.getElementById("contenido"); div_con.innerHTML="";
var div2 = document.createElement("div");
div2.setAttribute("class", "div_contenedor div_2"); div2.setAttribute("id", "p_presu");
var h1 = document.createElement("h1");
var titulo1 = document.createTextNode("PRESUPUESTO");
var cont_pen = document.createElement("div"); cont_pen.setAttribute("class",
"pendientes_presu"); cont_pen.setAttribute("id", "pendiente_presu");
cont_pen.innerHTML=(obj[0]); h1.appendChild(titulo1); div2.appendChild(h1);
div2.appendChild(cont_pen); div_con.appendChild(div2); }

El modelo recupera de la base de datos el nmero de solicitude y los nombres


de los departamentos solicitantes por medio de el procedimiento almacenado
CALL pendiente_firma_presu(''cve_enc):
case "num_pendientes":
$mysqli = conectarBD(); $date_year = date('Y'); $anio_pres=$date_year +1;
if(($sql=$mysqli->query("CALL pendiente_firma_presu('".$_POST['cve_enc']."');"))){
$mysqli->query("SET NAMES 'utf8'"); $ren_0 = 0; $ren_d0 = 0;
while($respen = $sql->fetch_assoc()){
if(($respen['status_presu'] != '0') && ($respen['status_presu'] != '5') ){
if($ren_0 < 4){
$renglon .="<br><div id='pend-presu'
onclick=\"obtenerPresDpto('$respen[cve_firpoa]');\"> $respen[nom_dpto] </div>"; $ren_0++;
}else{ $ren_0++; }
}else{ if($respen['status_presu'] == '0'){
$renglon .="<br><div id='pend-presu'
onclick=\"obtenerBorradorPres('$respen[cve_firpoa]');\"> Presupuestos Rechazados ".
$anio_pres." </div>"; $ren_d0++;
}else{ if($respen['status_presu'] == '5'){
$renglon .= "<br><div id='pend-presu'
onclick=\"obtenerPresDpto('$respen[cve_firpoa]');\"> Presupuestos Aprobados ".$anio_pres."
</div>"; $ren_d0++; } } } }
if(($ren_0 == '0') && ($ren_d0 == '0')){
$t_pres ="<br><div id='pend-presu'> NO HAY PENDIENTES (0) </div>".$renglon;
$pend = array("$t_pres","$t_adec"); $res = json_encode($pend);
}else{ if(($ren_0 != '0') && ($ren_d0 == '0')){ $t_pres ="<div id='pend-presu'
onclick=\"lista_pend_pres();\"> NUMERO DE PENDIENTES ($ren_0) </div>".$renglon;
$pendientes = array("$t_pres"); $res = json_encode($pendientes);
}else{ if($ren_d0 != '0'){ $t_pres ="<div id='pend-presu'> NUMERO DE PENDIENTES
(1*) </div>".$renglon; $pendientes = array("$t_pres","$t_adec");
$res = json_encode($pendientes); } } } }else{
echo "Fall consulta num_pendientes (" . $mysqli->errno . ") " . $mysqli->error; }

4 PROCEDIMIENTO GESTIN DE ADECUACIN


El procedimiento de gestin de adecuacin conlleva controlar las actividades
de registro y firma, registro de borradores, consulta de borradores, los cuales
pueden ser actualizados, firmados y eliminados y tambin la actividad de
pendientes en donde intervienen los cuatro responsables el Encargado del
departamento solicitante, la Subdireccin correspondiente, el departamento de
Planeacin y la Direccin del plantel, los cuales llevan a cabo las revisiones
pertinentes para la aprobacin de las solicitudes de adecuacin de los
presupuestos de cada departamento.

Figura 20. Casos de Uso para Adecuacin.

4.1 REGISTRO DE ADECUACIN

4.1.1 Propsito del Procedimiento


Registrar las posibles reducciones que crea pertinente realizar el departamento
a sus montos de los presupuestos del periodo vigente.

4.1.2 Alcance
En este caso de uso se controlan las reducciones que se pretenden aplicar a
los presupuestos del ao en vigor, para realizar las adecuaciones pertinentes y
obtener los saldos correctos del POA de cada departamento.
4.1.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.

4.1.4 Mtodo de Trabajo

a) Polticas y lineamientos
Para llevar a cabo este procedimiento el usuario deber tomar en cuenta los
gastos que podra realizar en lo que resta del ciclo de POA, para realizar
reducciones que no perjudiquen el alcanzar la meta de los presupuestos.

b) Descripcin de Actividad
Flujo Bsico:

1. Dentro del men general del POA, se encuentra la pestaa con la opcin
de Adecuacin y Reduccin, al darle clic se le mostrara un apartado con
las claves presupuestales correspondientes a cada presupuesto, y una
tabla en la cual ya se encontraran las partidas con ampliaciones con los
montos que fueron solicitados anteriormente en el apartado de
Ampliacin del men general del POA.
2. El encargado deber seleccionar una de las claves presupuestales lo
cual desplegara un rea con las partidas contenidas en ese
presupuesto.
3. A continuacin deber arrastrar una de las partidas al rea
correspondiente, lo que generara un rengln en la tabla que contiene los
montos a reducir, con los datos de dicha partida incluyendo el monto
aprobado para esa partida en el presupuesto, una suma total de las
solicitudes aprobadas por requisicin, por consiguiente se le muestra su
saldo disponible el cual es el resultado del monto del POA aprobado
menos las requisiciones autorizadas, un apartado en el cual puedan
registrar el monto a reducir de dicha partida, un monto del presupuesto
modificado que se determina con el monto del POA aprobado menos las
reducciones.
4. Dentro del apartado de la reduccin el encargado deber registrar el
monto que desea reducir de la partida que ha elegido, una vez hecho se
mostrara el nuevo monto del presupuesto modificado.
5. Por ltimo el usuario podr proporcionar una justificacin la cual es
opcional, del porque est realizando dicha reduccin.
6. En caso de que durante el registro el encargado reconsiderara algunas
de las partidas agregadas innecesarias puede elegirlas y eliminarlas de
la tabla presionando la imagen del cesto de basura.
Una vez terminado el registro de las reducciones que el encargado crea
necesarias, puede optar por el caso de uso FIRMAR o el caso de uso
guardar como BORRADOR.
Flujo alternativo:

4a. Si en el flujo bsico del punto 4, el usuario ingresa un monto que exceda
el monto de su presupuesto autorizado, se mostrara un mensaje
notificando el por qu no puede realizar esa reduccin y deber cambiar
el monto.

Si en el flujo bsico del punto 6, el usuario elige en presionar el botn


CANCELAR se termina el caso de uso y se pierde todo la informacin
recabada y se muestra la ventana principal del caso de uso Gestin de
PENDIENTES.
4.1.5 Diagramas UML

Figura 21. Diagrama de Estados para Registro de Adecuacin.

Figura 22. Diagrama de Registro de Adecuacin.


Figura 23. Diagrama de Secuencia para Registro de Adecuacin.

4.1.6 Codificacin
Para realizar el procedimiento de registro de adecuacin se ejecuta la funcin
carga_adecuacion(), la cual enva la clave del encargado al modelo para ser
procesada y devuelve la respuesta del modelo a la funcin resCargaAdec().

function carga_adecuacion(){
var obj=init();
var enc = document.getElementById("cve_encargado").value;

obj.datos.append("bandera","cargaAdecuacion");
obj.datos.append("enc",enc);
obj.sol.addEventListener("load",resCargaAdec,false);
obj.sol.open("POST","modelo.php",true);
obj.sol.send(obj.datos);
}

function resCargaAdec(e){
//alert(e.target.responseText);
document.getElementById("contenido").innerHTML=(e.target.responseText);
}

En el modelo se crea la vista de la ventana de resgistro de adecuacin, en


donde se muestra el rea de las claves presupuestales que son arrojadas por
la llamada a la base de datos por medio de la vista v_clave_presupuestal, para
despus cargar todas las partidas pertenecientes a cada presupuesto, al
arrastrar una partida se realiza otra consulta para conocer las datos que se
requieren en la adecuacin, como el proceso estratgico, la clave de la accin,
el monto del presupuesto autorizado en el POA, el monto por requisicion y el
saldo disponible, para determinar si es correcto realizarle reducciones a la
partida elegida.

case "cargaAdecuacion":
$mysqli = conectarBD();
$verificar = $mysqli->query("select * from firma_poa fp join presupuesto p on fp.cve_firpoa =
p.cve_firpoa join funcresponsables fc on p.cve_funcresp = fc.cve_funcresp JOIN encargado e
on fc.cve_enc = e.cve_enc JOIN detalle_empleado demp on e.cve_detemp =demp.cve_detemp
JOIN empleado emp on demp.numTarj_emp = emp.numTarj_emp where status_presu ='6' and
e.cve_enc IN(select cve_enc from encargado where cve_dpto=(select cve_dpto from
encargado where cve_enc='".$_POST['enc']."') and fecanio_firpoa = year(now())) group by
fp.cve_firpoa;");
$existe = $mysqli->query("select * from adecuacion where status_ade <> '0' and year(fec_ade)
= (select YEAR(now())) and cve_enc IN(select cve_enc from encargado where
cve_dpto=(select cve_dpto from encargado where cve_enc='".$_POST['enc']."'));");
if(($verificar->num_rows)==0){ echo "Aun no se puede realizar adecuacion, es necesario que
el POA ".date("Y")." sea autorizado..!!";
}else{ if(($existe->num_rows)!=0){ echo "Ya se realizo adecuacion para el ao
".date("Y")."...!!"; }else{ if(($qry = $mysqli->query("select * from v_clave_presupuestal
where cve_enc IN( select cve_enc from encargado where cve_dpto=(select cve_dpto from
encargado where cve_enc='".$_POST['enc']."'));"))) { $maxofi=$mysqli->query("SELECT
MAX(num_ofi_ade+1) as a from adecuacion;"); $rm = $maxofi->fetch_assoc();
$nofi=$rm['a']; if($rm['a']==''){ $nofi=1; }
$row = $verificar->fetch_assoc(); $cvefir = $row['cve_firpoa']; $firpoa="<input
type='hidden' value='$cvefir' id='fir-poa' />"; $i=0; while($row = $qry->fetch_assoc()){
$presupuestal = $row['id_procest'].".".$row['id_procla'].".".$row['id_mpta']."".$row['id_accpta'];
$clave .= "<td class='td_presu'><label id='cps".$i."' class='pre_cla'
onclick=\"javascript:partida_adecuacion(this.id,'".$row['cve_funcresp']."');\">".
$presupuestal."</label></td>"; $columnas .= "<td class='td_pico'><IMG
SRC='images/pico.png' id='picocps".$i."' class='pico'></td>"; $func .=$row['cve_funcresp'];
$i++; }
$x.="<table id='table_parti' class='table_parti' border='1'><tr> <td><label>CLAVES
<BR>PRESUPUESTALES </label>" .$clave."</td></tr> <tr><td>&nbsp;</td> ".
$columnas."</tr><tr id='tr_partidas' > <td rowspan='3'><label>PARTIDAS</label><br /></td>
<td id='pre_partidas0' class='td_partida_presu'></td><td id='pre_partidas1'
class='td_partida_presu'></td> <td id='pre_partidas2' class='td_partida_presu'></td></tr>
<tr id='tr_partidas2'></td></tr> </table>
<div><input type='hidden' id='responsable' /></div>
<div id='table_parti' class='table_parti'> </div> <br><br><br><div class='contenedor-ade'
border='1' ondrop=\"suelta(event,'ade');\" ondragover=\"adDrop(event);\"><label class='texto-
arrastra-ade'> -- Arrastra aqui una Partida --</label> </div>
<form id='fade' method='POST'>
<table class='tb-ade' id='ade' ><tr><th colspan='11' align='center'><label class='anios'
id='anio'>PROGRAMA OPERATIVO ANUAL ".date("Y")."</label></th>
</tr><tr><th colspan='7'></th> <th colspan='2'>No. de Oficio: </th><th colspan='2' style='
border-left:4px solid #aabcfe;'> <div id='nofi'>$nofi</div></th> </tr><tr><th colspan='7'></th>
<th colspan='2'>Fecha: </th> <th colspan='2' style=' border-left:4px solid #aabcfe;'>
<div id='fec'>".date("Y-m-d")."</div></th></tr><tr><th rowspan='2' id='mod1' class='m1'>
<img id='ade' src='images/btb.png' onclick=\"javascript:delFila('ade');\"> </th><th rowspan='2'
id='mod2' class='m2'>PROCESO ESTRATEGICO</th> <th rowspan='2' id='mod3'
m3'>ACCIN PRESUPUESTAL</th> <th rowspan='2' id='mod4' class='m4'>PARTIDA
PRESUPUESTAL</th> <th rowspan='2' id='mod5' class='m5'>PRESUPUESTO AUTORIZADO
EN POA ".date("Y")."</th><th rowspan='2' id='mod6' class='m6'>PRESUPUESTO
AUTORIZADO POR REQUISICIN</th><th rowspan='2' id='mod7' class='m7'>SALDO
DISPONIBLE ANUAL</th><th colspan='2' id='mod8' class='m8'>ADECUACIN
PRESUPUESTAL</th> <th rowspan='2' id='mod11' class='m11'>PRESUPUESTO
MODIFICADO</th><th rowspan='2' id='mod12' class='m12'>JUSTIFICACIN</th></tr><tr>
<th id='mod9' class='m9'>REDUCCIN</th><th id='mod10'
class='m10'>AMPLIACIN</th></tr>";
$ampl = $mysqli->query("select p.cve_firpoa, a.cve_detpresu, just_ampl from firma_poa fp join
presupuesto p on fp.cve_firpoa = p.cve_firpoa join detalle_presupuesto dp on p.cve_presu =
dp.cve_presu join ampliacion a on dp.cve_detpresu = a.cve_detpresu where p.cve_firpoa ='".
$cvefir."';"); $n=900000; $tauto = 0; $treq = 0; $tdisp =0; $tamp =0;
$tmod =0; while($rampl = $ampl->fetch_assoc()){ $mysqli = conectarBD();
$r = $mysqli->query("CALL datos_adecuacion('".$rampl['cve_detpresu']."')");
$rdade = $r->fetch_assoc(); $mysqli = conectarBD();
$pa = $rdade['monto_detpresu']; $pam = $rdade['monto_ampl']; $pm = $pam + $pa;
$mreq = $rdade['sum_req']; $mdisp = $pa - $mreq; $x.="<tr><td class='celchk' id='tdchek.
$n'><input class='chk' id='chck.$n' type='checkbox'></td><td><label class='procsa' id='proc.
$n'>$rdade[nom_procest]</label></td> <td><label class='accsa' id='acc.
$n'>$rdade[id_accpta]</label><input value='$rdade[cve_fucresp]' class='resp' id='fres.$n'
type='hidden'></td> <td id='tdparamp.$n' class='partsa' name='celda'><label
draggable='false;' id='label.$n' class='cvepara'>$rdade[cve_part]</label></td><td><label
class='mpaa' id='mpres.$n'>$rdade[monto_detpresu]</label></td><td><label class='mprqa'
id='mreq.$n'>$rdade[sum_req]</label></td><td><label class='mdsa' id='mdisp.
$n'>$mdisp</label></td><td><input onkeypress='return justNumbers(event);'
onblur='sumAdeRed();' class='mrdaa' id='mred.$n' type='hidden'><input class='deta' id='cvedet.
$n' value='$rdade[cve_detpresu]' type='hidden'></td><td><label class='mama' id='mamp.
$n'>$rdade[monto_ampl]</label></td><td><label class='pmda' id='presm.
$n'>$pm</label></td><td><label class='jstsa' id='jst.$n'>$rampl[just_ampl]</label></td></tr>";
$n++; $tauto = $tauto + $pa; $treq = $treq + $mreq; $tdisp = $tdisp +
$mdisp; $tamp = $tamp + $pam; $tmod = $tmod + $pm; }
$x.="<tr><th colspan='4'>TOTALES</th><th class='m4'>$<label
id='tpauto'>$tauto</label></th> <th class='m8'>$<label id='tpreq'>$treq</label></th><th
class='m4'>$<label id='tdisp'>$tdisp</label></th><th class='m8'>$<label
id='tred'>0</label></th> <th class='m4'>$<label id='tamp'>$tamp</label></th> <th
class='m8'>$<label id='tpmod'>$tmod</label></th><th><br></th></tr></table></form><br
/><br /><br><br><div class='botones-pres'><a id='bnt-fir-pres' onclick='firmarAde();'
class='myButton'>FIRMAR</a> <a onclick='obtenerAde();' class='myButton'>BORRADOR</a>
<a onclick='pendientes();' class='myButton'>CANCELAR</a></div>"; $n++; echo $firpoa.
$x;
}else{ echo "Fall cosulta cve presupuestales (" . $mysqli->errno . ") " . $mysqli->error;
} } }
break;

4.2 CONSULTAR BORRADOR DE ADECUACION

4.2.1 Propsito del Procedimiento


Consultar lista de borradores de adecuacin registrados anteriormente.

4.2.2 Alcance
En este caso de uso requiere haber iniciado el caso de uso de Registro de
Adecuacin y Reduccin, para tener el registro anterior, una vez realizado se
da de alta un formato de adecuacin y se almacena sin firmas, para poder ser
consultados posteriormente, cualquiera de ellos puede ser firmado para
comenzar con el proceso de aprobacin, o bien optar por el caso de uso de
Eliminar Borrador, Actualizar Borrador, o Cancelar.

4.2.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.

4.2.4 Mtodo de Trabajo

a) Polticas y lineamientos
Para realizar este procedimiento el usuario deber de haber concluido el
proceso de presupuestos y esto ser cuando la solicitud de
presupuestos sea aprobada.

b) Descripcin de Actividad
Flujo Bsico:
1. El usuario debe elegir en el rea de presupuestos, la opcin de
BORRADORES.
2. Se mostrara una ventana en la cual se encuentra una lista con los
borradores de adecuacin disponible.
3. El usuario deber elegir alguno de los renglones de la tabla los cuales
presentan la informacin siguiente:
- Un nmero consecutivo para enlistar los borradores.
- El nmero de operacin con la que fue registrada.
- La fecha de emisin del borrador.
- Un nombre que los identifica como borrador.
Flujo alternativo:
2a. Si en el flujo bsico nmero 2, se muestra un lista vaca, el usuario
deber llevar a cabo el caso de uso Registro de Adecuacin y registrarlo
como BORRADOR.
4.2.5 Codificacin
La codificacin de estes apartado es similar a la de los presupuestos, solo
cambian los datos obtenidos por el cotrolador pero el procedimiento de
inyeccin a la base de datos es similar.

4.3 ACTUALZAR BORRADOR DE ADECUACION

4.3.1 Propsito del Procedimiento


Actualizar la informacin guardada en un borrador de adecuacin.

4.3.2 Alcance
En este apartado el encargado podr modificar la informacin del borrador
de su eleccin en el caso de uso Consulta de Borradores.

4.3.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada
puede realizar este procedimiento.

4.3.4 Mtodo de Trabajo

a) Descripcin de Actividad
Flujo Bsico:

1. Despus de haber hecho el caso de uso de Consulta de borradores de


Adecuacin , se mostrara una vista con los mismos apartados que en el
caso de uso Registro de Adecuacin, con la diferencia que tendr
almacenada la informacin proporcionada anteriormente que se
recupera de la base de datos con los campos editables para su
modificacin.
2. El usuario realizara los cambios que crea pertinentes en la informacin
de las partidas con reducciones, los cambios posibles, pueden ser
eliminar las filas que ya existen en la tabla de adecuacin, agregar
nuevas partidas a la tabla, o bien modificar los datos almacenados
como el monto de reduccin y su respectiva justificacin.
3. Cualquiera que sea la modificacin que se realice estas estarn sujetas
a las mismas validaciones que se llevaron a cabo en su registro
preliminar.
4. Una vez realizadas las modificaciones a los presupuestos, el usuario
deber dar clic en el botn de ACTUALIZAR, se guardaran los datos y
se muestra un mensaje de BORRADOR ACTUALIZADO.

4.3.5 Codificacin
La codificacin de estes apartado es similar a la de los presupuestos, solo
cambian los datos obtenidos por el cotrolador pero el procedimiento de
inyeccin a la base de datos es similar.

4.4 FIRMAR BORRADOR DE ADECUACIN

4.4.1 Propsito del Procedimiento


Firmar un borrador emitido con anterioridad para proseguir con las revisiones
pertinentes.

4.4.2 Alcance
El encargado elige un borrador de la lista, si cree necesario realizar cambios o
no y proseguir a firma el formato para ser revisado y aprobado.

4.4.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.

4.4.4 Mtodo de Trabajo

a) Polticas y lineamientos
Este procedimiento se apega a la misma poltica del caso de uso de CONTROL
DE ADECUACION

b) Descripcin de Actividad
Flujo Bsico:
1. Una vez hecho el caso de uso de Consulta de Borradores de
Adecuacin, se mostrara una vista con los mismos apartados que en el
caso de uso Registro de Adecuacin, con la diferencia que tendr
almacenada la informacin proporcionada anteriormente que se
recupera de la base de datos con los campos editables.
2. El encargado del departamento verifica la informacin del borrador y si
lo cree necesario realizara los cambios que crea pertinentes en la
informacin de los presupuesto, los cambios posibles, pueden ser
eliminar las filas que ya existen en cualquiera de las tablas de
presupuestos, agregar nuevas filas en cualquier tabla, o bien modificar
los datos almacenados, el monto de reduccin el cual acatara la misma
validacin que durante su registro y su respectiva justificacin.
3. Una vez que est satisfecho con la informacin registrada proceder a
dar clic en al botn FIRMAR, la adecuacin ser guardada y se
mostrara al usuario una vista con el mensaje ADECUACIN
FIRMADA, para proceder con la revisin y aprobacin de la solicitud.

4.4.5 Codificacin
La codificacin de estes apartado es similar a la de los presupuestos, solo
cambian los datos obtenidos por el cotrolador pero el procedimiento de
inyeccin a la base de datos es similar.

4.5 ELIMINAR BORRADOR DE PRESUPUESTOS

4.5.1 Propsito del Procedimiento


Eliminar uno de los borradores de la eleccin del usuario.

4.5.2 Alcance
El encargado elige un borrador de la lista y por medio de la consulta decidir si
realiza la eliminacin.

4.5.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.

4.5.4 Mtodo de Trabajo

a) Descripcin de Actividad
Flujo Bsico:
1. Una vez hecho el caso de uso de consulta de Borradores de
Adecuacin, se mostrara una vista con los mismos apartados que en el
caso de uso Registro de Adecuacin, con la diferencia que tendr
almacenada la informacin proporcionada anteriormente que se
recupera de la base de datos con los campos editables.
2. El encargado del departamento decidir si dicho borrador ya no es til y
proseguir a dar clic en el botn ELIMINAR.
3. Se le mostrara un mensaje ADECUACIN ELIMINADA
CORRECTAMENTE.

4.5.5 Codificacin
La codificacin de estes apartado es similar a la de los presupuestos, solo
cambian los datos obtenidos por el cotrolador pero el procedimiento de
inyeccin a la base de datos es similar.

4.5.6 Diagramas UML

Figura 24. Diagrama de Estados para Borradores de Adecuacin.


Figura 25. Diagrama de Robustez para Borrador de Adecuacin.
Figura 26. Diagrama de Secuencia para Borrador de Adecuacin.

4.6 CONSULTA DE ADECUACIONES APROBADAS

4.6.1 Propsito del Procedimiento


Consultar las adecuaciones que han sido aprobadas.

4.6.2 Alcance
En este apartado el encargado podr consultar las adecuaciones que han
pasado por las revisiones y han sido aprobadas para su departamento.

4.6.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento.

4.6.4 Mtodo de Trabajo

a) Descripcin de Actividad
Flujo Bsico:
1. Dentro del men de adecuacin se da clic en la pestaa de
CONSULTA.
2. Se muestra una lista de las adecuaciones aprobadas, tanto de aos
anteriores como el actual.
3. Al dar clic en cualquier rengln se mostrara la vista de la adecuacin
seleccionada con la misma presentacin que cuando se realiz, solo que
la informacin no ser editable ya que solo es material de consulta.
Al terminar la consulta el usuario puede presionar el botn Salir.

4.7 PENDIENTES DE ADECUACIN

4.7.1 Propsito del Procedimiento


Realizar las revisiones pertinentes a la adecuacin realizada por cada
departamento del plantel, para poder ser aprobada.

4.7.2 Alcance
Cada departamento realiza la solicitud de adecuacin, una vez que la firman es
enviada a revisin, las cuales son realizadas por su respectiva subdireccin,
por el departamento de planeacin quien es el encargado de la gestin de
dichos procesos, y por la direccin quien es la ltima revisin, para dar la
aprobacin final.

4.7.3 Responsables
Todo encargado de departamento con la clave que se le fue asignada puede
realizar este procedimiento, intervienen como revisores las tres Subdirecciones,
el Departamento de Planeacin Programacin y Presupuestacin y la
Direccin del plantel.

4.7.4 Mtodo de Trabajo

a) Polticas y lineamientos
Para realizar las revisiones correctamente los usuarios que fungen como
revisores deben tener conocimiento general del trabajo realizado en los
departamentos a su cargo.

b) Descripcin de Actividad
Flujo Bsico:
1. El departamento, ha firmado la solicitud de adecuacin por lo que en el
apartado de pendientes de adecuacin de su subdireccin
correspondiente aparecer el nombre de dicho departamento para su
revisin.
2. Si se da clic en el nombre del departamento, se mostrara una vista
preliminar del documento a manera de consulta para su revisin.
3. La subdireccin determinara las correcciones que crea pertinentes, y
puede optar por Firmar y aprobar la solicitud o bien hacer
COMENTARIO.
4. Si se presiona el botn Firmar, se aprueba y firma la adecuacin y se
muestra una leyenda de confirmacin.
5. Una vez aprobado por su subdireccin, los presupuestos pasaran a la
revisin del departamento de Planeacin, Programacin y
Presupuestacin quien cuenta con dos usuarios, para una correcta
gestin de los documentos uno de los usuarios valida y aprueba las
peticiones, mientras el otro funge como departamento, el usuario que
valida realiza la revisin y aprobacin de la peticin con las misma
opciones que la subdireccin.
6. Una vez aprobado por el departamento de Planeacin, Programacin y
Presupuestacin, los presupuestos pasaran por su ltima revisin de la
direccin del plantel con las mismas opciones anteriores.
7. Cuando la peticin haya sido aprobada, aparecer en el rea de
pendientes del departamento que la emiti para que pueda consultarla.
Despus deber presionar el botn de Aceptar, para que el rea de
pendientes quede libre y podr consultar su documento en el rea de
CONSULTAS.
Flujo alternativo:

1d. El en punto 1 del flujo bsico, en el rea de pendientes podra haber


ms de un nombre de departamento, y en dicha rea solo se mostraran
los primeros 4 nombres de los departamentos que hayan solicitado
revisin.
1e. Para poder ver todas las solicitudes pendientes deber dar clic en la
leyenda NUMERO DE PENDIENTES(x), donde se muestran el numero
correcto de las solicitudes, y este mostrara una lista del total de las
solicitudes con el nombre del departamento solicitante y su fecha de
elaboracin, as como una lista de los borradores del departamento que
esta logueado, en caso de que dicho departamento ya haya realizado la
peticin o bien su solicitud ya est aprobada, aparecer una leyenda en
el rea de borradores indicndole que no puede realizar una consulta
porque ya se ha realizado el trmite de dicho ao.
1f. Para consultar una de las peticiones pendientes deber dar clic en
cualquier rengln de la tabla y se mostrara su respectiva vista para la
revisin y proceder a realizar el punto nmero 3 de este mismo caso de
uso.
3d. En el punto 3 del flujo bsico, el usuario puede optar por presionar el
botn COMENTARIO para expresar alguna observacin acerca de los
presupuestos y proceder a Firmar y aprobar dicho documento.
3e. Si el punto 3a no se lleva acabo puede ser que el usuario haya optado
por Rechazar los presupuestos, y agregar un comentario del porque no
han sido aprobados.
De tal manera que el encargado del departamento que lo ha emitido,
podr ver en el apartado de pendientes que su peticin ha sido
rechazada, al dar clic en ella podr ver los comentarios que se le
realizaron realizar las correcciones a su adecuacin.
Una vez acatados los comentarios el encargado proceder a firmar para
una nueva revisin, con la diferencia que en su nueva revisin los
comentarios estarn visibles para conocer las correcciones que se han
efectuado.
3f. Si en el punto 3 del flujo bsico, el usuario opta por presionar el botn
Cancelar, se mostrara la ventana principal, y dicha peticin de revisin
seguir en el rea de pendientes.

4.7.5 Codificacin
La codificacin de estes apartado es similar a la de los presupuestos, solo
cambian los datos obtenidos por el cotrolador pero el procedimiento de
inyeccin a la base de datos es similar.
IV. ANEXOS

ANEXO 1. Ejemplo de Metas del PTA.


ANEXO 2. Estructura Programtica Presupuestal.

You might also like