“implementación sencha architect en el desarrollo del

72
UNIVERSIDAD POLITÉCNICA DE SINALOA PROGRAMA ACADÉMICO DE INGENIERÍA EN INFORMÁTICA “Implementación Sencha Architect en el Desarrollo del Sistema Cuentas por Cobrar” Para obtener la acreditación de las estadías profesionales y contar con los créditos para el grado de Ingeniero Informática Autor: Liliana Guadalupe García Guevara Asesor: Dra. Vanessa Guadalupe Félix Aviña Asesor OR: ING. Gerardo Morales Tirado Mazatlán, Sinaloa 21 de septiembre de 2019.

Upload: khangminh22

Post on 01-May-2023

0 views

Category:

Documents


0 download

TRANSCRIPT

UNIVERSIDAD POLITÉCNICA DE SINALOA

PROGRAMA ACADÉMICO DE INGENIERÍA EN INFORMÁTICA

“Implementación Sencha Architect en el

Desarrollo del Sistema Cuentas por

Cobrar”

Para obtener la acreditación de las estadías profesionales y contar

con los créditos para el grado de Ingeniero Informática

Autor:

Liliana Guadalupe García Guevara

Asesor:

Dra. Vanessa Guadalupe Félix Aviña

Asesor OR:

ING. Gerardo Morales Tirado

Mazatlán, Sinaloa 21 de septiembre de 2019.

2

Agradecimientos

Agradezco a mi familia, especialmente a mi mamá por siempre ayudarme a

dar lo mejor de mí y nunca rendirme, gracias a todos los sacrificios que ha hecho

he podido cumplir las metas que me he propuesto a lo largo de mi vida.

A Pyansa por brindarme la oportunidad de realizar las estadías en su

departamento de TICS, además al Ing. Gerardo Morales Tirado por asesorarme

durante mi periodo de estadías y al Ing. Carlos Daniel Zárate Guerrero por

apoyarme con la utilización de nuevas herramientas, además de ayudarme a

integrarme al equipo de trabajo y brindarme su apoyo durante todo el periodo de

estadías.

A la Dra. Vanessa Guadalupe Félix Aviña por apoyarme en la correcta

realización de este documento de investigación y ser un gran ejemplo a seguir en la

vida.

3

4

5

6

7

Índice temático

Resumen ............................................................................................................... 10

Abstract ................................................................................................................. 10

Introducción ........................................................................................................... 11

1.1 Antecedentes .................................................................................................. 13

1.1.1 Localización .................................................................................................. 13

1.1.2 Objetivos de la institución ............................................................................. 14

1.1.3 Misión ........................................................................................................... 14

1.1.4 Visión............................................................................................................ 15

1.2 Planteamiento del problema ............................................................................ 15

1.2.1 Propuesta de investigación .......................................................................... 15

1.3 Objetivos de la investigación ........................................................................... 16

1.3.1 Objetivos generales ...................................................................................... 16

1.3.2 Objetivos específicos.................................................................................... 16

1.4 Preguntas de la investigación .......................................................................... 16

1.5 Hipótesis .......................................................................................................... 17

1.6 Limitaciones y supuestos ................................................................................ 17

1.7 Relevancia ....................................................................................................... 17

2.1. ¿Qué es programación web? ......................................................................... 19

2.1.2 Historia de los sitios web .............................................................................. 20

2.1.4 Ventajas sistemas web ................................................................................. 21

2.1.5 Desventajas Sistema Web ........................................................................... 22

2.1.6 Tareas principales de un programador ......................................................... 23

2.2 IDE .................................................................................................................. 23

2.3 Framework ...................................................................................................... 24

2.4. Lenguajes de programación ........................................................................... 26

2.4.1 PHP .............................................................................................................. 27

2.4.2 Cake PHP ..................................................................................................... 29

2.4.3 SQL .............................................................................................................. 30

2.4.4 JavaScript ..................................................................................................... 31

8

2.4.5 Sencha ......................................................................................................... 33

2.4.5.1 Características de Sencha ........................................................................ 33

2.4.5.2 Sencha Ext JS ........................................................................................... 35

2.4.5.3 Sencha Extreact ........................................................................................ 35

2.4.5.4 Sencha Text .............................................................................................. 35

2.4.5.5 CMD .......................................................................................................... 35

2.4.5.6 Sencha Architect ....................................................................................... 36

2.4.5.7 IDE Plugins ................................................................................................ 36

2.4.5.8 Sencha Inspector ...................................................................................... 37

2.4.5.9 Sencha Touch ........................................................................................... 37

2.4.6 Sublime Text ................................................................................................ 37

2.5.7 Cuentas por cobrar ....................................................................................... 40

2.5.8 Factura ......................................................................................................... 42

3.1 Diseño ............................................................................................................. 46

3.2 Desarrollo del sistema ..................................................................................... 49

3.3 Herramientas de Desarrollo ............................................................................. 54

Resultados y discusión .......................................................................................... 63

Recomendaciones y/o sugerencias ....................................................................... 64

Conclusión............................................................................................................. 65

Glosario ................................................................................................................. 66

Bibliografía ............................................................................................................ 69

9

Índice de figuras

Figura 1. Ubicación de la empresa PYANSA. ....................................................... 13

Figura 2. Fundamentos del desarrollo web ........................................................... 19

Figura 3. Clasificación de los lenguajes de programación. ................................... 21

Figura 4. Ejemplo de IDE. ..................................................................................... 24

Figura 5. MVC ....................................................................................................... 25

Figura 6. Compiladores ......................................................................................... 27

Figura 7. Páginas Web .......................................................................................... 27

Figura 8. Ejemplo sintaxis PHP ............................................................................. 28

Figura 9. Funciones básicas de SQL .................................................................... 30

Figura 10. Sintaxis de JavaScript .......................................................................... 32

Figura 11. Logotipo de Sencha ............................................................................. 33

Figura 12. Interfaz de Sencha Architect ................................................................ 36

Figura 13. Menú Sublime Text .............................................................................. 38

Figura 14. Interfaz principal Sublime Text. ............................................................ 39

Figura 15. Interfaz de Sistema Cuentas por Cobrar .............................................. 41

Figura 16. Factura ................................................................................................. 42

Figura 17. Product Backlog ................................................................................... 48

Figura 18. Menú Principal...................................................................................... 49

Figura 19. Formulario en Sencha .......................................................................... 51

Figura 20. Grid Panel en Sencha .......................................................................... 53

Figura 21. Función Read ....................................................................................... 55

Figura 22. Función Create ..................................................................................... 55

Figura 23. Función Actualiza ................................................................................. 56

Figura 24. Función Update .................................................................................... 57

Figura 25. Función Load ....................................................................................... 58

Figura 26. Función Create ..................................................................................... 59

Figura 27. Función Actualiza ................................................................................. 60

Figura 28. Función Update .................................................................................... 61

Figura 29. Envío de PDF ....................................................................................... 62

10

Resumen

El departamento de Informática de Pyansa se encarga del desarrollo de los

sistemas de las empresas pertenecientes a Grupo Alerta, debido a que es una

empresa con muchos años al servicio y los sistemas se encuentran en lenguajes

antiguos para los que ya no hay soporte ni se han desarrollado actualizaciones se

ha decidido la actualización de los sistemas a lenguajes más novedosos y sencillos

de utilizar.

Uno de sus sistemas es Cuentas por cobrar, el cual se decidió desarrollar en

el framework Sencha Architect junto con Cake PHP, el cual se planea agilice los

procesos del cliente, mejore la seguridad y disminuya el soporte y mantenimiento.

Abstract

The IT department of Pyansa is responsible for the development of the

systems of the companies belonging to Grupo Alerta, because it is a company with

many years of service and the systems are in old languages for which there is no

longer support or have been developed updates it has been decided to update the

systems to newer and easier to use languages.

One of its systems is Cuentas por Cobrar, which was decided to develop in

the Sencha Architect framework together with Cake PHP, which is planned to

streamline customer processes, improve security and reduce support and

maintenance.

11

Introducción

Debido a la actualización de los sistemas desarrollados en Pyansa se decidió

la creación del sistema Cuentas por Cobran, el cual se creó en lenguajes sencillos

y un framework en el que el diseño se realizará de manera fácil, ahorrando líneas

de código y tiempo al no tener que diseñar cada uno de los componentes que se

muestran en las vistas del sistema.

Además del framework Sencha Architec también se decidió utilizar Cake PHP

como controlador del sistema, el cual se espera que mejore los procesos en los que

se realiza la comunicación entre el sistema y la base de datos.

Durante el desarrollo del sistema se planea que se abarquen distintos

módulos que harán que el proceso de cobros de la empresa a la que va dirigida

mejore y con esto el soporte disminuya de manera considerable.

Algunos de los módulos desarrollados serán: Carnets de colegiaturas e

inscripciones, facturación, cobros, asignación de camiones, cuotas, etc.

12

Capítulo l

Organización/Empresa

13

1.1 Antecedentes

Pyansa fue fundada en el año de 1975 en la ciudad de Culiacán, Sinaloa. Su

función es la de atender a un Grupo de Empresas, brindando asesoría legal en

diferentes áreas como Informática, Impuestos, Contabilidad, Administración y todo

lo que necesiten para desarrollar su función social, alineándose a las reglas de los

Gobiernos Federales, Estatales y Municipales, además de las propias reglas de los

Socios de la Empresa.

Pyansa se traslada a la ciudad de Mazatlán, Sinaloa en el año de 1977,

donde actualmente se encuentra brindando servicio a 47 empresas, asesorándolas

en las áreas de Contabilidad, Administración, Finanzas, Soporte Técnico,

Mantenimiento a Equipo de Cómputo y Desarrollo de Sistemas.

1.1.1 Localización

Pyansa se encuentra ubicada en la avenida Aquiles Serdán No. Ext. 1507,

Int. 2-A, Colonia: Centro C.P. 82000, Mazatlán, Sinaloa.

Localización de la empresa

Fuente: Google Maps

Figura 1. Ubicación de la empresa PYANSA.

14

1.1.2 Objetivos de la institución

Nos esforzamos por desarrollar e implantar estrategias en nuestras

Empresas que aseguren nuestro liderazgo en la creación de valor para nuestros

Clientes, Empleados, Proveedores, Comunidades e Inversionistas, donde opera

cada una de nuestras unidades de negocios. Tenemos la certeza de que una

permanente orientación hacia la competitividad y servicio efectivo son

fundamentales para la Misión de Grupo Alerta.

Creemos que el personal que labora en las Empresas del Grupo, al actuar

con integridad, nos da ventaja competitiva. Al desarrollar nuestras actividades con

honestidad, responsabilidad y respeto, construimos vínculos perdurables de

confianza y de mutuo beneficio en todas nuestras interacciones. Fomentamos la

comunicación clara y directa porque sabemos que la diversidad de opiniones nos

enriquece. Estamos convencidos que la colaboración entre las Empresas del Grupo

y quienes laboran en ellas, agiliza la toma de decisiones y conduce a cada una de

las unidades de negocios a alcanzar mejores resultados.

Expresamos nuestro profesionalismo mediante una permanente

actualización, comunicación efectiva y disposición para compartir nuestro esfuerzo

y conocimiento a trabajar en equipo. Buscamos de manera pro activa e innovadora,

satisfacer las necesidades y expectativas de nuestros grupos de interés. La mejora

continua es uno de nuestros principales hilos conductores.

1.1.3 Misión

La Misión de Grupo Alerta es ofrecer productos y prestar servicios de calidad

que generen clientes totalmente satisfechos, mediante el uso óptimo de los recursos

disponibles en un marco de respeto a los principios y valores éticos fundamentales,

para generar Empresas líderes, rentables y en constante evolución.

15

1.1.4 Visión

Ser uno de los 10 grupos de empresas más importantes de Sinaloa, por su

liderazgo en innovación tecnológica, cultura empresarial y organización.

1.2 Planteamiento del problema

Debido a la ventaja que han tenido en los últimos años los sistemas web la

empresa Pyansa se propuso la actualización de distintos sistemas, uno de los que

ha presentado problemas últimamente y que se decidió desarrollar es el sistema de

Cuentas por cobrar de una de las empresas a las que le brinda sus servicios.

El sistema a desarrollar tendrá que contar con distintos módulos que hagan

posible la creación, actualización, modificación y eliminación de todos los datos

necesario para la generación de carnets de pago y para posteriormente ser

facturados.

El desarrollo se manejará mediante la herramienta Sencha Architect, la cual

debe agilizar los procesos de diseño debido a que cuenta con la posibilidad de

utilizar un entorno gráfico.

1.2.1 Propuesta de investigación

Como solución a lo planteado en el punto anterior se propone:

La investigación de la herramienta Sencha Arquitect.

La investigación de las librerías utilizadas por la herramienta mencionada

anteriormente para la generación de reportes en el sistema.

Una investigación de qué son las cuentas por cobrar, cómo se utilizan, qué

datos son necesarios para facturar y cómo realizar el proceso.

Un estudio del sistema anterior, enfocándonos en cuáles son los procesos

que están fallando y cuáles se pueden agilizar.

La realización de los Catálogos necesarios para la facturación y los Carnets.

El desarrollo de los módulos necesarios para la operación del sistema.

16

1.3 Objetivos de la investigación

1.3.1 Objetivos generales

Desarrollar un sistema por medio de herramientas web para la agilización de

los procesos de cobro y facturación de la empresa en la que se implementará,

además de reducir el soporte brindado en el departamento de TIC´S.

1.3.2 Objetivos específicos

Desarrollar módulo de catálogos: Contará con las funciones de agregar,

modificar, eliminar y mostrará una tabla con los registros de la base de

datos para las opciones de bancos, uso de CFDI, fechas de ingreso y

movimientos.

Desarrollar módulo operaciones: Contará con las opciones de facturación,

asignar camiones y carnets.

Generar de reportes en cada módulo por medio de la librería FPDF.

Agilizar los procesos de instalación.

1.4 Preguntas de la investigación

¿Cuál es la ventaja de implementar herramientas gráficas para la reducción

del tiempo de desarrollo de un sistema web?

¿Qué es un sistema de cuentas por cobrar?

¿De qué elementos se compone un sistema de cuentas por cobrar?

¿Cuál es la ventaja de un sistema web sobre uno de escritorio?

17

¿Qué es Sencha Architect?

1.5 Hipótesis

La utilización de herramientas gráficas web agilizará el desarrollo del sistema

de cuentas por cobrar en un 30%, además de reducir el soporte brindado

diariamente y los tiempos de instalación.

1.6 Limitaciones y supuestos

La herramienta utilizada para el desarrollo del sistema web es poco conocida

en la actualidad por lo que dificultará la búsqueda de información.

La implementación del módulo de facturación tendrá dificultad debido a la falta de

experiencia con los lenguajes utilizados para su desarrollo.

1.7 Relevancia

La utilización de herramientas gráficas para el desarrollo de sistemas web

implica una gran optimización de código, lo que conlleva a reducir el tiempo de

desarrollo y por ende el costo y soporte de los sistemas.

18

Capítulo ll

Marco teórico

19

2.1. ¿Qué es programación web?

La programación o desarrollo web, se trata de construir y dar mantenimiento

a sitios web, lo cual debe permitir el funcionamiento correcto, rápido y limpio para

que los usuarios obtengan la mejor experiencia posible, en la figura 2 podemos

observar los fundamentos en los que se base el desarrollo web, los cuales al

elaborarse de manera correcta hacen fácil el mantenimiento y uso de los sistemas

web.

Fundamentos del desarrollo web

Fuente: https://sites.google.com/a/utecnologica.edu.bo/realidad-aumentada-en-la-educacion/4-apa-

tecnico-de-procesos-y-recursos

Figura 2. Fundamentos del desarrollo web

20

2.1.2 Historia de los sitios web

El 20 de diciembre de 1990, Tim Berners-Lee presentó la primera página web

de la historia, alojada en un NeXT Cube (computadora creada por Steve Jobs) del

CERN, convirtiéndose así en el primer servidor web de la historia. Este sitio web

informaba sobre todo lo relativo al proyecto World Wide Web, como los detalles

técnicos o el equipo de personas que habían participado.

EL proyecto evolucionó, incrementando en número de servidores y de sitios

web, con lo que el CERN, viendo el potencial que tenía, no dudó en presentar la

World Wide Web de forma pública el 30 de abril de 1993.

La programación web ha ido evolucionando progresivamente a medida que

se incrementaban las funcionalidades cada vez más complejas que el mercado

demandaba a los sitios webs. Las páginas webs estáticas, en las que sólo se

requería de código HTML, evolucionaron hacia las páginas dinámicas, en las que

ya se necesitaba una aplicación en el servidor que interactuara con las bases de

datos y construyera la página web según las peticiones del internauta.

Estos lenguajes de programación, como los que podemos observar en la

figura 3, eran simples pero muy potentes a la vez, y a medida que aumentaban las

demandas, también fueron evolucionando hasta ser lenguajes más robustos como

lo son ahora, que incorporan herramientas de Programación Orientada a Objetos

(OOP según su sigla en inglés) alcanzando así a los lenguajes de programación

más completos. Una vez llegados a este punto, miles de programadores en todo el

mundo se lanzaron a hacer sus propias aplicaciones web para dar respuesta a la

creciente demanda en complejidad de los sitios webs. Y así comenzaron a surgir

los Frameworks [1].

21

Lenguajes de programación

Fuente: http://lenguajesproghye.blogspot.com/2015/01/blog-post.html

Figura 3. Clasificación de los lenguajes de programación.

2.1.4 Ventajas sistemas web

Compatibilidad multiplataforma. Las aplicaciones web tienen un camino

mucho más sencillo para la compatibilidad multiplataforma que las

aplicaciones de software descargables.

Actualización. Las aplicaciones basadas en web están siempre actualizadas

con el último lanzamiento.

Inmediatez de acceso. Las aplicaciones basadas en web no necesitan ser

descargadas, instaladas y configuradas. Usted accede a su cuenta online a

trabajar sin importar cuál es su configuración o su hardware.

22

Menos requerimientos de memoria. Las aplicaciones basadas en web tienen

muchas más razonables demandas de memoria RAM de parte del usuario

final que los programas instalados localmente.

Menos Bugs. Las aplicaciones basadas en web deberán ser menos

propensas a colgarse y crear problemas técnicos debido a software o

conflictos de hardware con otras aplicaciones existentes, protocolos o

software personal interno. Con aplicaciones basadas en web, todos utilizan

la misma versión, y todos los bugs pueden ser corregidos tan pronto como

son descubiertos.

Múltiples usuarios concurrentes. Las aplicaciones basadas en web pueden

realmente ser utilizada por múltiples usuarios al mismo tiempo [2].

2.1.5 Desventajas Sistema Web

Necesaria una conexión a internet.

La comunicación constante con el servidor que ejecuta la aplicación

establece una dependencia a una buena conexión a internet.

El tiempo de respuesta puede llegar a ser lento dependiendo de las

características del ordenador y de la conexión a Internet que se utilice.

Al estar siempre actualizada a la última versión no es posible elegir una

versión anterior.

La aplicación web desaparece si así lo requiere el desarrollador. Las

aplicaciones tradicionales, en general, pueden seguir usándose en esos

casos [3].

23

2.1.6 Tareas principales de un programador

Los programadores de sistemas informáticos realizan tareas de

investigación, diseño y desarrollo de programas que controlan el funcionamiento

interno de los ordenadores y redes informáticas. Los programadores de sistemas

informáticos escriben programas que sean rápidos, versátiles y eficientes, a menudo

siguiendo las especificaciones proporcionadas por un analista de sistemas

informáticos. También pueden instalar, personalizar y dar soporte a estos sistemas

operativos.

Su objetivo es hacer que los sistemas informáticos (hardware y software)

funcionen de forma más eficiente. Esto incluye el estudio de los ordenadores

manejan los datos y textos, envían información a impresoras y se vinculan a los

sistemas de telecomunicaciones [4].

2.2 IDE

Un entorno de desarrollo integrado, es un entorno de programación que ha

sido empaquetado como un programa de aplicación, es decir, consiste en un editor

de código, un compilador, un depurador y un constructor de interfaz gráfica (GUI).

Los IDE proveen un marco de trabajo amigable para la mayoría de los

lenguajes de programación tales como C++, PHP, Python, Java, C#, Delphi, Visual

Basic, etc., en la figura 4 podemos observar un ejemplo del IDE NeatBeans. En

algunos lenguajes, un IDE puede funcionar como un sistema en tiempo de

ejecución, en donde se permite utilizar el lenguaje de programación en forma

interactiva, sin necesidad de trabajo orientado a archivos de texto [5].

24

Interfaz de IDE

Fuente: https://www.oracle.com/tools/technologies/netbeans-ide.html

Figura 4. Ejemplo de IDE.

2.3 Framework

Un framework es una aplicación genérica incompleta que se puede configurar

para añadirle las líneas de código que sean necesarias para programar una

determinada aplicación; una analogía de ello podría ser un rompecabezas al que se

le pueden agregar nuevas piezas para hacerlo más completo y detallado o agregarle

nuevas funciones.

Este marco de referencia o marco de trabajo nos provee un conjunto de

código que se puede utilizar y reutilizar en cualquier sistema, bien sea simple o

complejo; ofreciéndonos una forma estándar para trabajar en un lenguaje de

programación determinado; es decir empleando un paradigma ya existente; siendo

25

el Modelo-Vista-Controlador – MVC (como que se muestra en la figura 5) el más

empleado en la actualidad.

Funcionamiento del modelo MVC

Fuente: http://codigoplusplus.blogspot.com/2011/10/ejemplo-de-arquitectura-mvc-en-php.html

Figura 5. MVC

Django es uno de los framework más populares en entornos web para el

lenguaje Python; Ruby on Rails es su par en Ruby, por lo que cuando se se habla

de ellos, Django o Ruby on Rails, no se está hablando de un lenguaje de

programación en concreto sino de frameworks desarrollados para facilitar la

creación (escritura) de código en Python o Ruby.

PHP se ha convertido en el lenguaje más utilizado para desarrollar

aplicaciones web; la mayor parte de programadores, por no decir la totalidad, no

programan desde cero con este lenguaje, sino que emplean frameworks como

Symfony, Laravel, CodeIgniter o Zend, lo que les facilita enormemente el trabajo y

les ahorra mucho tiempo de programación [6].

26

2.4. Lenguajes de programación

En los últimos años los lenguajes de programación han ido evolucionado en

el desarrollo de sistemas o software, con el objetivo principal de facilitar al usuario

las actividades que realiza día con día.

En términos generales, un lenguaje de programación es una herramienta que

permite desarrollar software o programas para computadora. Los lenguajes de

programación son empleados para diseñar e implementar programas encargados

de definir y administrar el comportamiento de los dispositivos físicos y lógicos de

una computadora. Lo anterior se logra mediante la creación e implementación de

algoritmos de precisión que se utilizan como una forma de comunicación humana

con la computadora.

A grandes rasgos, un lenguaje de programación se conforma de una serie de

símbolos y reglas de sintaxis y semántica que definen la estructura principal del

lenguaje y le dan un significado a sus elementos y expresiones.

Programación es el proceso de análisis, diseño, implementación, prueba y

depuración de un algoritmo, a partir de un lenguaje que compila y genera un código

fuente ejecutado en la computadora.

La función principal de los lenguajes de programación es escribir programas

que permiten la comunicación usuario-máquina. Unos programas especiales

(compiladores o intérpretes) convierten las instrucciones escritas en código fuente,

en instrucciones escritas en lenguaje máquina (0 y 1).

Los intérpretes leen la instrucción línea por línea y obtienen el código

máquina correspondiente.

En cuanto a los compiladores, traducen los símbolos de un lenguaje de

programación a su equivalencia escrito en lenguaje máquina (proceso conocido

como compilar, como podemos observar en la figura 6). Por último, se obtiene un

programa ejecutable [7].

27

Proceso de compilación

Fuente: http://ingsistemascompilador.blogspot.com/p/usos-y-funcion-de-los-compiladores.html

Figura 6. Compiladores

2.4.1 PHP

PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje

de código abierto muy popular especialmente adecuado para el desarrollo web y

que puede ser incrustado en HTML.

Proceso levantamiento de página web

Fuente:https://www.aprenderaprogramar.com/index.php

Figura 7. Páginas Web

28

En lugar de usar muchos comandos para mostrar HTML (como en C o en

Perl), las páginas de PHP contienen HTML con código incrustado que hace "algo"

(en este caso, mostrar "¡Hola, soy un script de PHP!). El código de PHP está

encerrado entre las etiquetas especiales de comienzo y final <? php y ?> ( como

podemos observar en la figura 8)que permiten entrar y salir del "modo PHP".

Sintaxis PHP

Fuente: http://www.forosdelweb.com/f18/codigo-php-aparece-comentado-no-ejecuta-1142839/

Figura 8. Ejemplo sintaxis PHP

Lo que distingue a PHP de algo del lado del cliente como Javascript es

que el código es ejecutado en el servidor, generando HTML y enviándolo al cliente.

El cliente recibirá el resultado de ejecutar el script, aunque no se sabrá el código

subyacente que era. El servidor web puede ser configurado incluso para que

procese todos los ficheros HTML con PHP, por lo que no hay manera de que los

usuarios puedan saber qué se tiene debajo de la manga.

29

Lo mejor de utilizar PHP es su extrema simplicidad para el principiante,

pero a su vez ofrece muchas características avanzadas para los programadores

profesionales. No sienta miedo de leer la larga lista de características de PHP. En

unas pocas horas podrá empezar a escribir sus primeros scripts [8].

2.4.2 Cake PHP

CakePHP es un framework de desarrollo de aplicaciones web escrito en PHP,

creado sobre los conceptos de Ruby on Rails.

CakePHP tiene varias características que hacen que sea una gran elección

como framework para el desarrollo de aplicaciones rápidamente y con la menor

cantidad de molestia. Al igual que Ruby On Rails, CakePHP facilita al usuario la

interacción con la base de datos mediante el uso de ActiveRecord. Además, hace

uso del patrón Modelo Vista Controlador.

Compatible con PHP4 y PHP5

CRUD de la base de datos integrado

URLs amigables

Sistema de plantillas rápido y flexible

Ayudas para AJAX, Javascript, HTML, forms y más

Trabaja en cualquier subdirectorio del sitio

Validación integrada

Scaffolding de las aplicaciones

Access Control Lists

Sanitización de datos

Componentes de seguridad y sesión [9].

30

2.4.3 SQL

SQL es un lenguaje de computación para trabajar con conjuntos de datos y

las relaciones entre ellos. Los programas de bases de datos relacionales, como

Microsoft Office Access, usan SQL para trabajar con datos. A diferencia de muchos

lenguajes de computación, SQL no es difícil de leer y entender, incluso para un

usuario inexperto. Al igual que muchos lenguajes de computación, SQL es un

estándar internacional reconocido por organismos de estándares como ISO y ANSI.

SQL se usa para describir conjuntos de datos que pueden ayudarle a

responder preguntas. Al usar SQL, debe usar la sintaxis correcta, en la figura 9

podemos observar los procesos básicos de SQL. La sintaxis es el conjunto de reglas

mediante las que se combinan correctamente los elementos de un idioma. La

sintaxis SQL se basa en la sintaxis del idioma inglés y usa muchos de los mismos

elementos que la sintaxis de Visual Basic para Aplicaciones (VBA) [10].

Procesos básicos SQL

Fuente:https://www.google.com/search?biw=1366&bih=608&tbm=isch&sxsrf=ACYBGNR6qV9X

5v8pqcnrVki1YVEamTUyhw%3A1573536475234&sa=1&ei=20LKXerUDYiUtQXrq7TIDA&q=sql+crud&

Figura 9. Funciones básicas de SQL

31

2.4.4 JavaScript

JavaScript es un lenguaje script basado en objetos, diseñado

específicamente para hacer que las páginas web sean dinámicas e interactivas.

JavaScript es un lenguaje para hacer programación web dinámica del lado

del cliente. Un lenguaje script es un lenguaje de programación interpretado que

requiere de un intérprete, quien traduzca las sentencias escritas en el lenguaje 10

Programación de web dinámico a código máquina cada vez que el programa es

ejecutado. JavaScript es interpretado por navegadores web, los cuales representan

a los clientes.

El lenguaje JavaScript está basado en objetos, ya que proporciona una

implementación del DOM, modelo que traduce la estructura de un documento HTML

a un árbol de objetos cuando este es cargado en un navegador web. Cada objeto

tiene métodos y atributos que pueden ser invocados desde código JavaScript para

su manipulación con el propósito de cambiar cualquier elemento del documento

HTML.

JavaScript puede ser incrustado directamente en el código de un documento

HTML (como se puede observar en la figura 10) o mediante archivos separados,

con el fin de que un navegador web los interprete y los ejecute cuando sea

requerido. Los archivos creados con JavaScript son en texto plano, sin formato, que

se almacenan con la extensión .js y están asociados a documentos HTML. El código

JavaScript puede ser interpretado por cualquier navegador web moderno, como

Mozilla Firefox, Google Chrome, Opera, Safari, Internet Explorer, entre otros.

32

Sintaxis JavaScript

Fuente: https://baulderasec.wordpress.com/programacion/programando-con-

javascript/introduccion-a-la-programacion/sintaxis-de-javascript/

Figura 10. Sintaxis de JavaScript

Ventajas:

Lenguaje de scripting seguro y fiable.

Los scripts tienen capacidades limitadas, por razones de seguridad.

El código Javascript se ejecuta en el cliente.

Desventajas:

Código visible por cualquier usuario.

El código debe descargarse completamente.

Puede poner en riesgo la seguridad del sitio, con el actual problema llamado

XSS (significa en inglés Cross Site Scripting renombrado a XSS por su

similitud con las hojas de estilo CSS) [11].

33

2.4.5 Sencha

El marco de desarrollo de aplicaciones Web de Sencha ayuda a administrar

el ciclo de vida del desarrollo de software de las aplicaciones web. Se puede

diseñar, desarrollar y probar aplicaciones web que hagan un gran uso de datos y

ofrecer una experiencia buena experiencia de usuario, en la figura 11 podemos

observar el logotipo que representa esta aplicación [12].

Logotipo Sencha

Fuente: https://seeklogo.com/vector-logo/296938/sencha

Figura 11. Logotipo de Sencha

2.4.5.1 Características de Sencha

Sencha se utiliza para desarrollo de aplicaciones web interactivas que

además de flexibilizar el manejo de componentes de la página como el DOM,

Peticiones AJAX, DHTML, tiene la gran funcionalidad de crear interfaces de usuario

bastante funcionales. Creado por Jack Slocum, Brian Moeskau, Aaron Conran, Rich

Waters.

34

Ventajas

Una de las grandes ventajas de utilizar ExtJS es que nos permite crear

aplicaciones complejas utilizando componentes predefinidos.

Evita el problema de tener que validar el código para que funcione bien en

cada uno de los navegadores (Firefox, IE, Safari, Opera etc.).

El funcionamiento de las ventanas flotantes lo pone por encima de cualquier

otro.

Relación entre Cliente-Servidor balanceado: Se distribuye la carga de

procesamiento entre, permitiendo que el servidor pueda atender más clientes

al mismo tiempo.

Eficiencia de la red: Disminuye el tráfico en la red pues las aplicaciones

cuentan con la posibilidad de elegir que datos desea trasmitir al servidor y

viceversa (Criterio este que puede variar con el uso de aplicaciones de pre-

carga).

Comunicación asíncrona. En este tipo de aplicación el motor de render puede

comunicarse con el servidor sin necesidad de estar sujeta a un clic o una

acción del usuario, dándole la libertad de cargar información sin que el cliente

se dé cuenta.

Desventajas

Necesidad de una plataforma: Pues dependemos del paquete ExtJS para

obtener los resultados deseados.

El costo de una licencia LGPL.

35

2.4.5.2 Sencha Ext JS

Ext JS es un framework de JavaScript para la creación de aplicaciones Web

multiplataforma, que puede ser usado para crear aplicaciones para escritorios,

tablets y smartphones.

La edición Ext JS Premium, incluye Ext JS, D3, Adaptador, Grid de Pivot,

Calendario, Exportador, Sencha Themer, Arquitecto, Cmd, JetBrains, Visual Studio

y Eclipse IDE Plugins, Visual Studio Code Plugin e Inspector [12].

2.4.5.3 Sencha Extreact

ExtReact es el conjunto de componentes de React para la creación de

aplicaciones web intensivas en datos que utilizan React. Los componentes

interactúan entre sí, y se construyen, prueban y mantienen siguiendo una

metodolgía clara y profesional [12].

2.4.5.4 Sencha Text

Sencha Test es una solución de prueba funcional de extremo a extremo para

aplicaciones Ext JS. La solución de pruebas entre navegadores garantiza que

entregue aplicaciones de calidad y reduzca el tiempo de prueba [12].

2.4.5.5 CMD

Sencha Cmd nos ayuda en la construcción de sus aplicaciones Sencha.

Proporciona un conjunto completo de funciones de administración del ciclo de vida,

tales como etructura de proyecto, minificación de código y creación de empaqutedos

para llevar a producción [12].

36

2.4.5.6 Sencha Architect

Sencha Architect permite crear aplicaciones HTML5 arrastrando y soltando

componentes, de modo que se pasa menos tiempo en la codificación manual, se

evitan errores de codificación y el código de su aplicación se optimiza para obtener

un alto rendimiento, en la figura 12 podemos observar la interfaz de esta aplicación

[12].

Interfaz Sencha Architect

Fuente: https://www.sencha.com/blog/sencha-architect-4-0-is-now-generally-available/

Figura 12. Interfaz de Sencha Architect

2.4.5.7 IDE Plugins

Los plugins para los distintos IDE de Sencha permiten optimizar la utilización

de Sencha en los principales IDE. Los complementos admiten funciones como el

auto completado de código y la inspección. Existen plugins para los principales IDES

de desarrollo como son: Eclipse, Visual studio y Visual Estudio Code [12].

37

2.4.5.8 Sencha Inspector

Sencha Inspector es una herramienta de depuración que proporciona acceso

directo a componentes, clases y más para aplicaciones creadas con frameworks

Sencha. Le permite analizar su código para problemas, como el anidamiento

excesivo, y ayuda a mejorar el rendimiento [12].

2.4.5.9 Sencha Touch

Sencha Touch es un framework para aplicaciones web móviles basado en

HTML5 y JavaScript, el objetivo es crear aplicaciones móviles universales. Sencha

Touch está disponible en descarga gratuita. En marzo de 2015, Ext JS y Sencha

Touch se fusionaron en Ext JS 6.0. [12].

2.4.6 Sublime Text

Sublime Text es un editor de código multiplataforma, ligero y con pocas

concesiones a las florituras. Es una herramienta concebida para programar sin

distracciones. Su interfaz de color oscuro y la riqueza de coloreado de la sintaxis,

centra nuestra atención completamente, en la figura 13 podemos observar un

ejemplo del menú de esta herramienta.

38

Menú Sublime Text

Figura 13. Menú Sublime Text

Fuente:https://www.genbeta.com/herramientas/sublime-text-un-sofisticado-editor-de-codigo

multiplataforma

Permite tener varios documentos abiertos mediante pestañas, e incluso

emplear varios paneles para aquellos que utilicen más de un monitor. Dispone de

modo de pantalla completa, para aprovechar al máximo el espacio visual disponible

de la pantalla.

El programa cuenta “de serie” con 22 combinaciones de color posibles,

aunque se pueden conseguir más. Para navegar por el código cuenta con Minimap,

un panel que permite moverse por el código de forma rápida.

El sistema de resaltado de sintaxis de Sublime Text soporta un gran número

de lenguajes (C, C++, C#, CSS, D, Erlang, HTML, Groovy, Haskell, HTML, Java,

JavaScript, LaTeX, Lisp, Lua, Markdown, Matlab, OCaml, Perl, PHP, Python, R,

39

Ruby, SQL, TCL, Textile and XML), en la figura 14 podemos observar la interfaz de

Sublime.

Ejemplo Interfaz Sublime Text

Fuente: https://www.genbeta.com/herramientas/sublime-text-un-sofisticado-editor-de-codigo-

multiplataforma

Figura 14. Interfaz principal Sublime Text.

El programa dispone de auto-guardado, muchas opciones de

personalización, cuenta con un buen número de herramientas para la edición del

código y automatización de tareas. Soporta macros, Snippets y auto completar,

entre otras funcionalidades. Algunas de sus características son ampliables

mediante plugins.

Sublime Text es un programa de pago, aunque se puede descargar una

versión de prueba, plenamente funcional y sin limitación de tiempo. La licencia

individual cuesta 59 dólares. Cada programador es un pequeño maniático con sus

40

credos y sus fobias respecto de las herramientas que emplea, pero si lo que quieres

es centrarte únicamente en el código, tal vez deberías probar Sublime Text. La

aplicación está disponible para OS X, Linux y Windows [13].

2.5.7 Cuentas por cobrar

Las cuentas por cobrar son derechos de cobro que posee una entidad sobre

terceros para determinada fecha.

También se las puede definir como la prestación que hace un individuo de

algunos de sus bienes con el objetivo de que en un plazo de tiempo los adquiera

nuevamente.

Este préstamo de algún bien es pagado con dinero en sumas parciales, y si

es el caso de que no se cumple con el pago, el individuo cuenta con el derecho de

recuperar lo que vendió a crédito.

Entre las características de esta definición podemos encontrar las siguientes:

Los derechos son cobrados en el plazo acordado ya sea a corto o largo

plazo.

Se evalúa el historial crediticio y financiero del cliente antes de hacer el

préstamo.

Se solicitan referencias para efectuar las cuentas.

Se establecen términos de pagos de intereses y de beneficios por pago

puntual.

Se emplean varios métodos de pago.

En este caso las cuentas por cobrar son de importancia para una empresa

pues representan los derechos que ella tiene sobre los clientes con el fin de obtener

41

beneficios ya sea mediante mercancías o servicios que tenga la empresa y sean

vendidos.

Con este método, la empresa o entidad que registre las cuentas por cobrar

(en la figura 15 se observa un ejemplo de la interfaz), obtiene un inventario sobre

dichos derechos que obtiene y logra beneficiar a los clientes ofreciendo nuevos

métodos de pago, tales como créditos y otras formas beneficiando al cliente, y, por

ende, a la empresa [14].

Sistema de Cuentas por Cobrar

Fuente: http://www.sbperu.net/finanzas-contabilidad-p3.html

Figura 15. Interfaz de Sistema Cuentas por Cobrar

42

2.5.8 Factura

Es un documento que contiene toda la relación de la compra-venta de bienes

o servicios, tiene validez legal y fiscal, en la figura 16 podemos observar un ejemplo.

Es legal porque ampara a los involucrados dando fe que la transacción se llevó a

cabo y fiscal porque permite al contribuyente comprobar sus ingresos y egresos y

es la clave para la declaración de los impuestos. A través de ella el SAT puede

reembolsar los impuestos correspondientes a los contribuyentes.

Factura Electrónica

Fuente: https://milformatos.com/empresas-y-negocios/formato-de-factura/

Figura 16. Factura

43

Actualmente en México se emite la Factura Electrónica o Comprobante Fiscal

Digital por Internet (CFDI), el cual es un comprobante digital implementado por la

autoridad fiscal de nuestro país, apegado a los estándares definidos por el SAT en

los últimos años. Permite generar, transmitir y almacenar los comprobantes por

medios electrónicos.

Cada factura electrónica cuenta con elementos de seguridad al ser emitida:

Sello Digital. (Firma Electrónica Avanzada) lo que confirma su origen,

le da validez y la hace única.

Cadena original. La cual funciona como el resumen del contenido de

la factura.

Folio. Asignado por el SAT, que indica el número de transacción del

vendedor

Timbrado. La CFDI requiere ser timbrada por el Proveedor Autorizado

de Certificación (PAC), por lo tanto, se requiere que le compres una cantidad

específica de timbres fiscales, a menos que desees utilizar la aplicación

creada por el SAT, en la cual los timbrados no tienen costo. Si quieres un

formato de factura que no sea el que tiene el SAT revisa la lista de

proveedores aquí.

Archivo electrónico XML, es la factura que se genera, la cual tiene una

representación impresa (PDF), este archivo es el que realmente es válido

ante el SAT.

Serie del certificado digital del SAT con el que se realizó el sellado.

Fecha y hora de Certificación.

Además de los elementos que conformaban las facturas anteriores:

Registro Federal de Contribuyentes (RFC) de quien expide

Régimen Fiscal en el que tributen

44

Lugar y fecha de expedición.

RFC a favor de quien se le expide la factura

Descripción de lo que ampara la Factura (Cantidad, unidad de medida

y clase de producto o servicio).

Valor unitario en número.

Importe total señalado en número y/o letra.

Señalamiento expreso de pago (en una exhibición o en parcialidades).

Cuando proceda, el monto de impuestos trasladados, desglosados por

tasa de impuesto y, en su caso, el monto de impuestos retenidos.

Forma de Pago (efectivo, transferencia electrónica, cheque

nominativo, tarjeta de débito, crédito o servicio, etc.)

Número y fecha del documento aduanero, en ventas de primera mano

de productos de importación [15].

45

Capítulo llI

Desarrollo de Sistema y Resultados

46

3.1 Diseño

El control en los procesos de las empresas es una de las principales causas

por las que se decide desarrollar un sistema, Colegio Andes de Mazatlán cuenta

con un sistema desarrollado especialmente para la empresa por el departamento

de TICS de Pyansa.

Debido a que el sistema fue desarrollado hace varios años, este cuenta con

errores que hacen que en una gran cantidad de procesos el usuario tenga que

llamar al departamento de soporte para que sean realizados directamente en el

código del sistema, otro punto importante es que el sistema está desarrollado en

lenguajes de programación que ya no son utilizados en la empresa, lo que hace muy

difícil el mantenimiento y crecimiento de este.

Por las razones mencionadas anteriormente se decidió la realización de un

nuevo sistema de Cuentas por Cobrar para Colegio Andes en el que se planea, se

pueda realizar la generación de carnets para inscripciones y colegiaturas, además

el cobro de estos y por último el proceso de facturación de estos cobros.

El desarrollo del sistema no solo requiere de la experiencia de los

trabajadores, sino también de la correcta utilización de la metodología que sea

seleccionada por la empresa para este, en este caso se decidió manejar Scrum, la

cual es una metodología ágil y flexible para gestionar el desarrollo de software, se

basa en construir primero la funcionalidad de mayor valor para el cliente y en los

principios de inspección continua, adaptación, auto-gestión e innovación.

Algunas de las razones por las que la empresa se decidió a utilizar esta

metodología fueron:

Flexibilidad a cambios: Alta capacidad de reacción ante los cambios de

requerimientos generados por necesidades del cliente o evoluciones del

mercado. La metodología está diseñada para adaptarse a los cambios de

requerimientos que conllevan los proyectos complejos.

47

Reducción del Time to Market: El cliente puede empezar a utilizar las

funcionalidades más importantes del proyecto antes de que esté finalizado

por completo.

Mayor calidad del software: La metódica de trabajo y la necesidad de obtener

una versión funcional después de cada iteración, ayuda a la obtención de un

software de calidad superior.

Mayor productividad: Se consigue entre otras razones, gracias a la

eliminación de la burocracia y a la motivación del equipo que proporciona el

hecho de que sean autónomos para organizarse.

Maximiza el retorno de la inversión (ROI): Producción de software

únicamente con las prestaciones que aportan mayor valor de negocio gracias

a la priorización por retorno de inversión.

Predicciones de tiempos: Mediante esta metodología se conoce la velocidad

media del equipo por sprint (los llamados puntos historia), con lo que

consecuentemente, es posible estimar fácilmente para cuando se dispondrá

de una determinada funcionalidad que todavía está en el Backlog.

Reducción de riesgos: El hecho de llevar a cabo las funcionalidades de más

valor en primer lugar y de conocer la velocidad con que el equipo avanza en

el proyecto, permite despejar riesgos eficazmente de manera anticipada [16].

Como se muestra en la figura 17, gracias a la metodología Scrum se pueden

crear distintos artefactos, en este caso uno de los productos de mayor importancia

que se desarrolló durante el proceso del diseño del sistema fue el Product Backlog,

en el cual se asignaron cada una de las tareas que el sistema realizaría, el tiempo

estimado y las personas asignadas para la realización de estas.

48

Ejemplo de Product Backlog

Fuente: https://es.slideshare.net/jorgeabad1/una-introduccin-a-scrum

Figura 17. Product Backlog

49

3.2 Desarrollo del sistema

El sistema de cuentas por cobrar se basa en el cobro de colegiaturas e

inscripciones para la empresa Colegio Andes, dentro de este se desarrollaron una

gran cantidad de módulos para facilitar al usuario el registro de los cobros, así como

la creación de carnets.

En la pantalla principal se muestra el logo creado especialmente para el

sistema, así como una caja de texto con la opción de seleccionar la empresa y el

ciclo escolar en el que se trabajará, en el caso de que el usuario no haya

seleccionado alguno de estos datos los catálogos aparecerán en blanco, debido a

que es información indispensable para el correcto uso del sistema, en la figura 18

podemos observar un ejemplo de una interfaz creada en Sencha.

Ejemplo Menú Principal en Sencha.

Fuente: https://javascriptx.wordpress.com/2015/09/14/layouts-y-contenedores-en-sencha-extjs-

6/

Figura 18. Menú Principal

50

Este sistema cuenta con un menú que se divide en tres partes: catálogos,

operaciones y configuración.

Catálogos.

Debido a que dentro de un sistema de cuentas por cobrar se realizan

procesos tanto de facturación como de generación de cobros, se necesitan distintos

catálogos que faciliten al usuario dar de alta operaciones, el sistema cuenta con los

siguientes catálogos:

Formas de pago: Se dan de alta las distintas formas con las que el cliente

puede realizar el pago de las inscripciones y colegiaturas, se agrega una clave de

acuerdo a la clave asignada por el SAT para cada una de las formas de pago.

Bancos: Se agregan, modifican y consultan los bancos en los que la empresa

tiene cuentas bancarias, además se agregan todos los datos necesarios para poder

hacer depósitos en esas cuentas.

Datos de Facturación: Se agregan los datos de facturación como la razón

social, RFC, domicilio fiscal y uso de CFDI por familia para posteriormente facturar

con estos.

Usos de CFDI: Este módulo se utiliza para dar de alta los usos que el cliente

le dará a la factura, se agrega el nombre del uso y la clave que le corresponde según

el SAT.

Referencias: En este módulo se dan de alta las referencias de cada uno de

los alumnos para las colegiaturas e inscripciones, siguiendo un criterio de

asignación proporcionado por el banco para la validación del usuario que realizó el

pago y así los pagos se vean reflejados en un futuro directamente al pagar en

ventanilla, sin la necesidad de asistir al colegio para entregar un comprobante de

pago.

Instituciones: En esta opción se dan de alta las instituciones, agregando los

datos de facturación de estas como la razón social, RFC, domicilio fiscal, etc.

51

Cuotas Colegiaturas: Este catálogo sirve para dar de alta, modificar y

consultar las cuotas de colegiatura, dependiendo del grado del alumno.

Cuotas Inscripciones: Se agregan las cuotas de las inscripciones de acuerdo

a la institución y ciclo seleccionado, también se pueden aplicar promociones de

acuerdo con la fecha en la que se realice el pago.

Cuotas Transportes: Se dan de alta, modifican y cambia el estatus de las

cuotas del transporte del colegio.

Tipos de movimientos: En este catálogo se dan de alta los diferentes

movimientos que se requieren en el sistema, algunos de los cuales debido a las

necesidades con las que cuenta actualmente el sistema pueden ser: colegiaturas e

inscripciones, además de ser dados de alta, los movimientos se pueden desactivar,

modificar y consultar, en la figura 19 podemos observar un formulario creado en

Sencha.

Ejemplo de formulario

Fuente: https://javascriptx.wordpress.com/2015/09/02/desarrollo-simple-de-crud-php-para-aplicaciones-

web-con-sencha-extjs-6/

Figura 19. Formulario en Sencha

52

Operaciones.

Asignar Camión: Se agregan los meses en los que cada alumno tendrá

asignado un camión y el tipo de camión que se solicitó, generando un cobro mensual

dependiendo de las cuotas dadas de alta en el módulo cuotas transporte, el mismo

que se verá reflejado en el carnet de colegiaturas.

Carnets Colegiatura: Para generar un carnet de colegiatura, se debe

seleccionar en el sistema el alumno al que se le generará el carnet, después se

seleccionará si se necesita para todo el ciclo o se seleccionan los meses en los que

se debe generar, el sistema generará un carnet de colegiatura por mes, el cual

podrá se impreso, ya que, tendrá la opción de convertirse en PDF, si el ciclo en el

que se está trabajando es futuro el sistema aumentará el nivel educativo del alumno.

Carnets Inscripción: El módulo de carnets de inscripción funciona de la misma

manera que el módulo de colegiaturas, pero aplicado a la generación de carnets de

inscripción, por lo que solo se genera un carnet por ciclo escolar.

Cobros: En este módulo se agregan los cobros de colegiaturas e

inscripciones, al entrar a este se muestra una tabla con los datos de los cobros

realizados durante el ciclo escolar seleccionado en una caja de texto, se tiene la

opción de agregar un nuevo cobro en donde se puede agregar la matrícula del

alumno o seleccionarla mediante un buscador, también se selecciona el tipo de

carnet que será pagado, este puede ser colegiatura o inscripción, los datos de

facturación, en el caso de no haber dado de alta alguno automáticamente el sistema

selecciona público en general, además el usuario tendrá que seleccionar la forma

de pago y el sistema arrojará los totales, los cuales pueden variar dependiendo de

la beca con la que el alumno cuente, el transporte y los recargos generados por el

pago impuntual de colegiaturas.

Anualidad: Al pagar el usuario la suma de todas las colegiaturas del año, el

sistema por pronto pago se encarga de generar un descuento, dentro de este

módulo se realiza el pago de las colegiaturas y se aplica el descuento otorgado por

el colegio.

53

Utilerías.

Esta parte cuenta solo con el cierre de sesión del sistema, no obstante, se

planea agregar un módulo a este menú en el que se encontrará el manual de usuario

con toda la información necesaria para que el usuario pueda utilizar el sistema.

La mayoría de los módulos cuenta con una tabla (como se muestra en la

figura 20) donde el usuario puede observar la información dada de alta en el

sistema.

Tablas en Sencha

Fuente: https://miltecnologia.blogspot.com/2013/04/personalizar-listview-en-android.html?view=classic

Figura 20. Grid Panel en Sencha

54

3.3 Herramientas de Desarrollo

Cake PHP

El modelo vista controlador es un patrón que se utiliza para el desarrollo de software,

en el que se realiza una separación de la lógica con la que se desarrolla la aplicación

y la interfaz de esta, por lo que da como resultado tres capas, que son: El modelo,

donde se alojan los datos del sistema, los controladores donde se encuentra la

lógica de la aplicación y por último las vistas, que es el diseño de las interfaces de

usuario.

Debido a la gran cantidad de ventajas con las que cuenta Cake PHP se decidió

manejar el controlador de este framework en conjunto con la vista y modelo creados

en Sencha Architect.

En Cake PHP se realizaron principalmente las consultas para solicitudes a las bases

de datos, por lo que se tienen 4 funciones diferentes en las que la consulta varía

dependiendo de las tablas a llamar pero que la estructura se repite en cada uno de

los módulos, estas funciones son: Read, Create, Actualiza y Update, a continuación,

se explicará más a fondo cada una de estas funciones.

Función Read

Esta es la función encargada de hacer las consultas necesarias para mostrar

en las tablas donde el usuario consulta información de la base de datos, se trata de

consultas select donde se les manda un dato directamente del sistema como filtro.

Al igual que en el resto de las funciones se debe realizar la conexión con la

base de datos y llamar los datos necesarios para realizar la consulta, posteriormente

se realiza esta y se agrega a una variable el resultado, en la figura 21 podemos

observar la función.

55

Ejemplo de función Read

Fuente: Propia

Figura 21. Función Read

Función Create

En la función Create se agrega a la base de datos, esta función cuenta con

un insert desde el cual se mandan los datos que se encuentran en el formulario del

cliente, al igual que la función anterior, el resultado se envía a una variable, en la

figura 22 podemos observar la función.

Ejemplo de función Create

Fuente: Propia

Figura 22. Función Create

56

Función Actualiza

La función Actualiza se utiliza para modificar los registros ya dados de alta

en la base de datos, cuenta con la conexión a esta, un Update que está filtrado por

id y los datos que serán modificados son enviados desde Sencha por el método

Post, en la figura 23 podemos observar la función.

Ejemplo de función Read

Fuente: Propia

Figura 23. Función Actualiza

Función Update

Debido a que la información de los sistemas es de suma importancia y no se

puede perder, los datos en el sistema no se borran, solo cambia el estatus a

cancelado, por lo que la función Update se encarga de realizar este proceso.

Después de realizar la conexión a la base de datos en una variable se

guardan los datos que se van a modificar, se crea un for para que se pueda leer la

variable las veces que el array tenga datos y se hace el Update, guardando los

resultados de este en una variable, en la figura 21 podemos observar la función.

57

Ejemplo función Update

Fuente: Propia

Figura 24. Función Update

Sencha Architect

Sencha Architect facilita la creación de sitios web debido a que cuenta con

funciones en las que solo se tienen que arrastrar y soltar componentes, lo que ayuda

con el ahorro de tiempo en la codificación manual y se optimiza el código de la

aplicación.

Para la realización del sistema Cuentas por Cobrar se utilizó este framework,

utilizando su modelo y vistas, Sencha Architect es fácil de utilizar por lo que no se

requirió de una gran capacitación, además la mayoría de los procesos creados

fueron repetidos en cada uno de los módulos.

A continuación, se mostrarán los procesos necesarios para mostrar, agregar,

eliminar y modificar los datos en cada uno de los módulos.

58

Load

La función load (como se muestra en la figura 25) se encarga de cargar el

Store donde se encuentra la consulta hecha con Cake PHP y regresar el resultado

de esta, dentro de esta función se pueden enviar datos para realizar el filtrado de la

consulta, si este proceso se hace dentro de una tabla o un formulario y el nombre

de los campos corresponde al del modelo y la consulta hecha, Sencha en

automático carga los datos en la tabla o formulario, agilizando código y optimizando

los procesos.

Función Load

Fuente: Propia

Figura 25. Función Load

Función Create

La función Create (como se muestra en la figura 26) se encarga de enviar los

datos que se encuentran en el formulario al Store donde se encuentra la función de

Cake PHP que agrega a la base de datos, una vez enviados y procesados los datos

da como respuesta si el proceso se realizó exitosamente o falló.

59

Función Create

Fuente: Propia

Figura 26. Función Create

Función Actualiza

La función actualiza (como se muestra en la figura 27) se encarga de la

modificación de los datos que se encuentran en los formularios, no todos los

módulos del sistema cuentan con esta opción debido a que hay información que es

de suma importancia y no puede ser modificada por el usuario.

Funciona de una manera similar a la función Create, debido a que se encarga

de enviar todos los datos que se encuentran en el formulario al store que manda a

la ruta de la función en Cake PHP donde se encuentra la consulta que modifica cada

uno de los datos que se encuentran en el formulario, como resultado regresa si la

operación se realizó exitosamente.

60

Función Actualiza

Fuente: Propia

Figura 27. Función Actualiza

Función Update

La función Update (como se muestra en la figura 28) se encarga de modificar

el estatus de los registros dentro del sistema, esta función está dividida en dos

partes: activación del registro y desactivación, por medio de un if el sistema consulta

si el estatus del registro es activo o inactivo y lo modifica, esta consulta al igual que

las anteriores regresa un mensaje con el resultado.

61

Función Update

Fuente: Propia

Figura 28. Función Update

Librería FPDF

Dentro del sistema se necesitó el envío de un PDF con el carnet de

colegiaturas e inscripciones por medio del correo, por lo que se utilizó la librería

FPDF para el envío de estos.

Para su uso, se necesitó la instalación de esta librería y se utilizó con la

herramienta sublime text programando en PHP cada uno de los reportes. En la

figura 29 se muestra cómo se realizó el envío de correos por medio de esta librería.

62

Envío de PDF por correo

Fuente: Propia

Figura 29. Envío de PDF

63

Resultados y discusión

Los resultados realmente no se han visto, debido a que el sistema aún se

encuentra en desarrollo, se logró finalizar aproximadamente el 60% del total del

sistema, realizando pruebas durante la terminación de cada uno de los módulos.

El sistema de Cuentas por Cobrar se desarrolló en un framework confiable

que ayudó a la optimización de código, haciendo más fácil el desarrollo de este,

durante el periodo de estadías se logró terminar el desarrollo de todos los módulos

del menú catálogos y la mayor parte del menú de operaciones por lo que se avanzó

considerablemente en el desarrollo del proyecto.

Debido a que muchas de las funcionalidades del sistema se tratan de

procesos muy importantes para el colegio, cada una de estas se debe revisar y estar

bajo la supervisión tanto de las personas que manejarán el sistema como los líderes

de proyecto, es por eso que se han planeado juntas donde las encargadas del uso

del sistema lo utilizarán y pondrán a prueba, observando cuáles son los procesos

que han mejorado y cuáles pueden ser optimizados un poco más.

64

Recomendaciones y/o sugerencias

Como recomendación se sugiere que el departamento de TICS esté al

pendiente de los procesos necesarios dentro de las empresas a las que se les

desarrolla software, debido a que muchos de los procesos en los que se trabaja

dentro de los sistemas no estaban claros y entorpecen el proceso de desarrollo de

software a los programadores.

También se recomienda que haya documentación sobre las metodologías y

las formas en las que se trabaja en la empresa, así como los procesos que realizan

los sistemas desarrollados para facilitar la capacitación y los procesos de soporte y

mantenimiento de los sistemas.

Es importa que se revise el avance de los programadores y se haga una

retroalimentación a estos para mejorar procesos que no se están haciendo

correctamente.

65

Conclusión

En la actualidad, el uso de un sistema para manejar los procesos

administrativos y contables de una empresa es indispensable para el correcto

funcionamiento de esta. Es por esto que es de suma importancia que las empresas

cuenten con sistemas capaces de crecer con ellas y que faciliten y hagan confiables

los procesos que manejan.

El sistema no se terminó en su totalidad, debido a que su finalización está

contemplada para el mes de enero, se considera que una vez completado e

implementado agilice los procesos de la empresa para la que fue creado en un 30%.

En cuanto al aprendizaje, gracias al desarrollo del sistema durante el proceso

de estadías se observó el proceso que una empresa debe seguir para el correcto

desarrollo de un sistema, además las características y valores que se buscan en

cada uno de los empleados, como son la puntualidad, responsabilidad, compromiso,

trabajo en equipo, etc. los cuales hacen que los sistemas se puedan desarrollar

fácilmente y en armonía, también se observó que el liderazgo es una parte

importante del desarrollo y se reforzaron los conocimientos adquiridos durante el

periodo escolar, dejando un conocimiento en PHP, SQL y Ext.JS.

66

Glosario

Testing. Investigación técnica de un producto bajo prueba con el fin de brindar

información relativa a la calidad del software, a los diferentes actores involucrados

en un proyecto [17].

Plugins. Un Plugin es un fragmento o componente de código hecho para ampliar

las funciones de un programa o de una herramienta [18].

DOM. DOM es una abreviatura de Document Objet Model, el DOM es la

estructura de objetos que genera el navegador cuando se carga un documento y se

puede alterar mediante Javascript para cambiar dinámicamente los contenidos y

aspecto de la página [19].

AJAX. AJAX significa JavaScript asíncrono y XML (Asynchronous JavaScript and

XML). Es un conjunto de técnicas de desarrollo web que permiten que las

aplicaciones web funcionen de forma asíncrona, procesando cualquier solicitud al

servidor en segundo plano [20].

Bugs. Se refiere a un error o defecto en el software que hace que un programa no

funcione correctamente [21].

Programación Orientada a Objetos. La programación orientada a objetos (POO,

u OOP según sus siglas en inglés) es un paradigma de programación que viene a

innovar la forma de obtener resultados. Los objetos manipulan los datos de entrada

para la obtención de datos de salida específicos, donde cada objeto ofrece una

funcionalidad especial [22].

Multiplataforma. Es un término usado para referirse a los programas, sistemas

operativos, lenguajes de programación, u otra clase de software, que puedan

funcionar en diversas plataformas [23].

67

Navegador. Se conoce como navegador web (o simplemente navegador) o también

explorador web (o simplemente explorador) a un programa informático que permite

al usuario ingresar a las páginas Web que desee, siempre que conozca la dirección

URL en donde se encuentra (por ejemplo: www.google.com) o bien que haga clic

en un hipervínculo que conduzca a dicha página [24].

HTML. Es el lenguaje con el que se define el contenido de las páginas web.

Básicamente se trata de un conjunto de etiquetas que sirven para definir el texto y

otros elementos que compondrán una página web, como imágenes, listas, vídeos,

etc. [25].

Metodología ágil. Son aquellas que permiten adaptar la forma de trabajo a las

condiciones del proyecto, consiguiendo flexibilidad e inmediatez en la respuesta

para amoldar el proyecto y su desarrollo a las circunstancias específicas del entorno

[26].

Product Backlog. El product backlog (o pila de producto) es un listado de todas las

tareas que se pretenden hacer durante el desarrollo de un proyecto [27].

Hardware. Hardware es una palabra inglesa que hace referencia a las partes físicas

tangibles de un sistema informático, es decir, todo aquello que podemos tocar con

las manos. [28]

RAM. Random Access Memory (en español Memoria de Acceso Aleatorio), es una

pequeña memoria de rápidas prestaciones que usa el ordenador para trabajar

internamente y almacenar datos a los que necesita acceso rápido [29].

Software. Este término designa al equipo lógico de una computadora, opuesto a los

aspectos físicos de la misma [30].

CRUD. En computación CRUD es el acrónimo de Crear, Leer, Actualizar y Borrar

(del original en inglés: Create, Read, Update and Delete). Se usa para referirse a

las funciones básicas en bases de datos o la capa de persistencia en un software

[31].

68

Scaffolding. Es una técnica que permite a un desarrollador definir y crear

aplicaciones básicas que pueden crear, leer, actualizar y borrar objetos [32].

LGPL. (GNU Lesser General Public License en español Licencia Pública General

Reducida de GNU) es una licencia de software libre publicada por la Free Software

Foundation [33].

React. Es una librería Javascript focalizada en el desarrollo de interfaces de usuario.

Así se define la propia librería y evidentemente, esa es su principal área de trabajo

[34].

69

Bibliografía

[1] - Programación web: La evolución hacia los Frameworks", Blog Tresce, 2019.

[Online]. Sitio Web: https://www.tresce.com/blog/programacion-web-la-evolucion-

hacia-los-frameworks/.

[2] - Ventajas y beneficios de las aplicaciones Web - 2019. [Online]. Sitio Web:

https://www.internetya.co/ventajas-y-beneficios-de-las-aplicaciones-web/.

[3] - A. Vonica, "Ventajas y desventajas de las aplicaciones web.", APLICACIONES

WEB, 2019. [Online]. Available:

https://lasaplicacioneswebblog.wordpress.com/2016/10/02/ventajas-y-desventajas-

de-las-aplicaciones-web/.

[4] - P. informáticos, "Programador de sistemas informáticos -

educaweb.com", Educaweb.com, 2019. [Online]. Available:

https://www.educaweb.com/profesion/programador-sistemas-informaticos-363/.

[5] - "Entorno de Desarrollo Integrado (IDE).", fergarciac, 2019. [Online]. Sitio Web:

https://fergarciac.wordpress.com/2013/01/25/entorno-de-desarrollo-integrado-ide/.

[6] - "Que es un framework y para que se utiliza en programación", Comenzando de

Cero, 2019. [Online]. Sitio Web: https://comenzandodecero.com/que-es-un-

framework-y-para-que-se-utiliza-en-programacion/.

[7] - "¿Te interesa la informática?", Noticias Universia Argentina, 2019. [Online].

Sitio Web:

https://noticias.universia.com.ar/consejosprofesionales/noticia/2016/02/22/1136443

/conoce-cuales-lenguajes-programacion-populares.html

[8] - "¿Qué puede hacer PHP?", Php, 2019. [Online]. Sitio Web:

https://www.php.net/manual/es/intro-whatcando.php

[9] - "Cakephp - EcuRed", Ecured.cu, 2019. [Online]. Sitio Web:

https://www.ecured.cu/Cakephp.

70

[10] - Microsoft. Access SQL: conceptos básicos, vocabulario y sintaxis (2016). Sitio

Web:https://support.office.com/es-es/article/access-sql-conceptos-

b%C3%A1sicos-vocabulario-y-sintaxis-444d0303-cde1-424e-9a74-e8dc3e460671

[11] - C. Jaimez González, Programación web dinámico, 1 ed. México D.F., 2014,

p. 10.

[12] - DevOps. (2019). Qué es Sencha - DevOps. [online] Sitio Web:

http://devops.mediainline.com/que-es-sencha/

[13] Sublime Text, un sofisticado editor de código multiplataforma. (2019). [online]

Sitio Web: https://www.genbeta.com/herramientas/sublime-text-un-sofisticado-

editor-de-codigo-multiplataforma

[14] “Cuentas por cobrar - ¿Qué son?, tipos, importancia y características”.

(2019).[Online]. Sitio Web: , from https://enciclopediaeconomica.com/cuentas-por-

cobrar/

[15 ] “Formato de Factura > Ejemplos y Formatos” (2019). [Online]. Sitio Web:

https://milformatos.com/empresas-y-negocios/formato-de-factura/

[16] - "Metodología SCRUM para desarrollo de software a medida",

www.softeng.es, 2019. [Online]. Sitio Web: https://www.softeng.es/es-

es/empresa/metodologias-de-trabajo/metodologia-scrum.html.

[17] - "Nuestra visión", Ces.com.uy, 2019. [Online]. Sitio Web:

https://www.ces.com.uy/index.php/ique-es-el-testing/nuestra-vision.

[18] – ¿Qué es un Plugin y para qué sirve? - Neo Wiki | NeoAttack", Neoattack,

2019. [Online]. Sitio Web: https://neoattack.com/neowiki/plugin/.

[19] – "Qué es el DOM", Desarrolloweb.com, 2019. [Online]. Sitio Web:

https://desarrolloweb.com/articulos/que-es-el-dom.html.

[20] - ¿Qué Es AJAX Y Cómo Funciona?", Tutoriales Hostinger, 2019. [Online]. Sitio

Web: https://www.hostinger.mx/tutoriales/que-es-ajax/.

71

[21] - A. Frutos, "¿Qué es bug?", ComputerHoy, 2019. [Online]. Sitio Web:

https://computerhoy.com/noticias/software/que-es-bug-51858.

[22] - "9.3. Programación orientada a objetos — Materiales del entrenamiento de

programación en Python - Nivel básico", Entrenamiento-python-

basico.readthedocs.io, 2019. [Online]. Sitio Web: https://entrenamiento-python-

basico.readthedocs.io/es/latest/leccion9/poo.html.

[23] - Multiplataforma - EcuRed", Ecured.cu, 2019. [Online]. Sitio Web:

https://www.ecured.cu/Multiplataforma.

[24] - "Navegador Web: Concepto, Ejemplos y Qué es un buscador Web",

Concepto.de, 2019. [Online]. Sitio Web: https://concepto.de/navegador-web/.

[25] - "Qué es HTML", Desarrolloweb.com, 2019. [Online]. Sitio Web:

https://desarrolloweb.com/articulos/que-es-html.html.

[26] - V. Villán, "Las metodologías ágiles más utilizadas y sus ventajas dentro de la

empresa", Blog de IEBSchool, 2019. [Online]. Sitio Web:

https://www.iebschool.com/blog/que-son-metodologias-agiles-agile-scrum/.

[27] – J. Ramos, "Scrum: ¿Qué es el Product Backlog?", Programacionymas.com,

2019. [Online]. Sitio Web: https://programacionymas.com/blog/scrum-product-

backlog.

[28] – "Qué es el Hardware? Para qué sirve y definición", Profesional Review, 2019.

[Online]. Sitio Web: https://www.profesionalreview.com/hardware/.

[29] – RAM", Sistemas.com, 2019. [Online]. Sitio Web:

https://sistemas.com/ram.php.

[30] – Software: Concepto, Tipos de software y Cuadro sinóptico", Concepto.de,

2019. [Online]. Sitio Web: https://concepto.de/software/.

[31] – "Definición de CRUD", Lawebdelprogramador.com, 2019. [Online]. Sitio Web:

https://www.lawebdelprogramador.com/diccionario/2562-CRUD.html.

72

[32] – "Scaffolding - 1.3", Book.cakephp.org, 2019. [Online]. Sitio Web:

https://book.cakephp.org/1.3/es/The-Manual/Developing-withCakePHP-

/Scaffolding.html.

[33] – "LGPL", Documentación web de MDN, 2019. [Online]. Sitio Web:

https://developer.mozilla.org/es/docs/Glossary/LGPL.

[34] – "Qué es React. Por qué usar React", Desarrolloweb.com, 2019. [Online]. Sitio

Web: https://desarrolloweb.com/articulos/que-es-react-motivos-uso.html.