Ejemplo de Trabajo Final

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 54

“Año del Bicentenario del Perú: 200 años de Independencia”

FACULTAD DE INGENIERÍA

CARRERA DE INGENIERÍA INDUSTRIAL

TRABAJO DE APLICACIÓN FINAL


“Diseño de un software encargado de gestionar los registros
en el área administrativa de la empresa Distribuidora Gas
San Antonio”
CURSO: SOFTWARE PARA INGENIEROS (IN318)

SECCIÓN: IV52

PROFESOR: CONTRERAS CHÁVEZ, ESTANISLAO

INTEGRANTES:

N° Apellidos y nombres Código Participación

1 CAJACURI SERPA, ANGEL WILDER 201920088 100%

2 CAMARENA SIHUINCHO, MAYCKOL 201924290 100%

3 MONTALVÁN RAMON, ANGEL DANIEL 201920641 100%

4 PAREJA PALOMINO, SAMUEL BENJAMIN 201920506 100%

5 RAMOS RUIZ, DULCE YESSENIA GERALDINE 201920322 100%

LIMA – PERÚ
RESUMEN

El nombre del proyecto a presentar es “Diseño de un software encargado de gestionar los


registros en el área administrativa de la empresa Distribuidora Gas San Antonio”. Como
lo indica el título, este trabajo de investigación se basa en un problema real que acontece
en el área de administrativa de la empresa Primax Gas San Antonio. Ésta es una
distribuidora de gas licuado de petróleo (GLP) que inició sus operaciones en el distrito de
Carabayllo en el año 2016.

Actualmente, Primax Gas San Antonio no cuenta con un registro de clientes. Por ende, se
busca automatizar sus registros de datos para generar estadísticas e informes mensuales
para la toma de decisiones correspondientes al área de administración.

El objetivo principal es aplicar todos los conocimientos aprendidos en el curo de Software


para Ingenieros, creando un código en lenguaje Python que brinde la solución al problema
de la empresa. Además de emplear conocimientos previos de los cursos de Algoritmos y
Modelación Orientada a Objetos. La adaptación de dicho código reflejará una mejora en
la automatización de los registros dentro del área administrativa, la cual acarreará una
mejor experiencia para los clientes, el aumento de ganancias y mejor posicionamiento
para la distribuidora.
Este proyecto contiene cinco capítulos. El primer capítulo es la presentación ejecutiva del
problema abordado y la solución a proponer. En el tercer capítulo se presentará el marco
teórico, donde se plantearán las bases teóricas y conceptos claves de los procesos y
sistemas utilizados en la elaboración del trabajo. El tercer capítulo abarca de la
descripción de la empresa y la identificación detallada de su problema central, además de
las herramientas de análisis y diseño orientado a objetos. El cuarto capítulo consta de la
propuesta de mejora cualitativa, la cual muestra una diferencia entre TO-BE y AS-IS y
determina las ventajas de una sobre la otra. Por último, el quinto capítulo comprende la
propuesta de algoritmo y componentes en Python, es decir, la presentación final del
código realizado en dicho lenguaje.

La propuesta para afrontar la problemática de la empresa seleccionada es diseñar un


código en el lenguaje de programación Python con la finalidad de registrar información
administrativa, tales como agregar, modificar y buscar clientes a través de un historial,
así como procesar su información de compra.
ÍNDICE

RESUMEN.................................................................................................................................... 2
Capítulo 1: Presentación................................................................................................................ 4
Capítulo 2: Marco Teórico ............................................................................................................ 5
2.1. REVISIÓN DE LA LITERATURA.......................................................................... 5
2.2. BASE TEÓRICA ...................................................................................................... 5
2.3. CONCEPTOS CLAVE ............................................................................................. 6
2.3.1. PROCESO DE NEGOCIO DE LA EMPRESA .......................................................... 6
2.3.2. PROBLEMAS EN EL SECTOR DE GLP ENVASADO ........................................... 7
2.3.3. SISTEMAS TÉCNICOS ............................................................................................. 7
Capítulo 3: Descripción de la empresa .......................................................................................... 9
3.1. ANTECEDENTES ........................................................................................................... 11
3.2. IDENTIFICACIÓN DEL PROBLEMA .......................................................................... 11
3.3 JUSTIFICACIÓN DEL PROBLEMA .............................................................................. 13
3.4 HIPÓTESIS DE SOLUCIÓN ........................................................................................... 15
3.5 HERRAMIENTAS DE ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS ................ 16
Capítulo 4: Propuesta de mejora cualitativa o mejora del tema .................................................. 22
4.1. MAPEO DE PROCESOS AS-IS /TO-BE ....................................................................... 22
4.1.1. AS-IS (SITUACIÓN ACTUAL)............................................................................... 22
4.1.2. TO-BE (SITUACIÓN FUTURA) ............................................................................. 23
4.1.3. VENTAJES DE TO-BE SOBRE AS-IS ................................................................... 28
Capítulo 5: Propuesta del algoritmo y componente en Python ................................................... 29
5.1. CÓDIGO EN PYTHON ................................................................................................... 29
5.2. HERRAMIENTAS Y MÓDULOS UTILIZADOS PARA EL DESARROLLO ............ 35
CONCLUSIONES ...................................................................................................................... 35
RECOMENDACIONES ............................................................................................................. 35
BIBLIOGRAFÍA......................................................................................................................... 36
ANEXOS..................................................................................................................................... 38
Capítulo 1: Presentación

El COVID-19 y el impacto que ha tenido en los negocios, ha sido muy significativo para
todas las empresas, puesto que el contacto físico es casi inevitable en cualquier
establecimiento, y como consecuencia, se ha dejado de operar y generar diversas
utilidades en los distintos sectores económicos. Sin embargo, algunas empresas buscan
mantenerse a flote en el negocio a través de la venta en delivery, tal es el caso de la
empresa Primax Gas San Antonio que busca optimizar el registro de sus clientes
habituales.

Primax Gas San Antonio es una empresa distribuidora de gas ubicada en el distrito de
Carabayllo, que lleva operando en el lugar alrededor de 15 años. La empresa se encarga
de la distribución y venta de tres tipos de gas GLP, que vendrían a ser las marcas Primax,
Progas y Primax Plus.

Hasta el momento, la empresa continúa con su labor de distribuidora de galones de gas,


a pesar del aumento en torno a la competencia, y el claro descenso en el índice de ventas,
esto debido al alza del precio de los insumos en materia prima de gas, que de manera
directa influyen en el precio final de los galones, y otros factores, han provocado que, con
el tiempo, la cantidad de ventas y ganancias de la empresa disminuyan alrededor del 25%.

Se ha identificado que la empresa tiene problemas en su área de ventas, específicamente


en la administración y logística. Pues, el stock de los productos hasta el momento ha sido
contabilizado de una manera ineficaz, se encontraron errores de contabilización entre 5 a
10 balones por semana. Además, los registros de clientes, de ventas y deudas se pierden,
ya que están en hojas y en pizarras. En consecuencia, todos estos factores en conjunto han
sido los causantes de los problemas dentro de la administración que están llevando a la
empresa a su descenso en torno a las ventas. De modo que, se ha determinado cuáles son
las principales variables que conforman esta área para poder utilizarlas en la solución de
este problema.

Los constantes problemas que presentan los negocios por falta de una buena organización,
como lo son las pérdidas y quejas de sus potenciales clientes, hacen de la solución que
planteamos para la empresa una herramienta bastante útil y en efecto necesaria, porque
comprobamos que la solución en el programa Python que planteamos, va a lograr que se
genere una mejor organización, mucho más ordenada y bastante simplificada que como
consecuencia disminuirá e incluso erradicará los recurrentes problemas que podrían
existir dentro de la empresa. De este modo, la empresa adquirirá mayor precisión y
seguridad en los registros, los clientes obtendrán un mejor servicio por parte de la
empresa, por consiguiente, la mype obtendrá una mayor clientela que esta vez sea fija y
un notable incremento en las ventas.
Capítulo 2: Marco Teórico

Este capítulo abarca la recopilación de una investigación previa, las bases teóricas y los
conceptos fundamentales que ayudarán a comprender el desarrollo del trabajo de
investigación, desde la indagación del lenguaje de programación Python hasta los
conceptos básicos que forman parte del negocio de este proyecto.

2.1. REVISIÓN DE LA LITERATURA

Paper 1: Programa basado en Python para integrar la gestión de documentos y procesos


de trabajo en una empresa

En esta investigación reconocemos la existencia del desarrollo de un programa usado para


digitalizar y automatizar la gestión dentro de una empresa. Dentro del campo empresarial
se desea conseguir el nivel de digitalización que los usuarios exigen. Por ello, esta
empresa trabaja con un software SAGL (Sistema de Apoyo de Gestión Logística), que
asiste en el área de gestión y logística. El programa mencionado es una base de datos que
compila contratos de compra de materiales, cantidad, tipo de material, descripciones,
entre otros. Sin embargo, no tiene la capacidad de integrar y compartir la información
recopilada entre los trabajadores, de modo que no es posible agilizar las tareas entre estos.
En consecuencia, se implementó un nuevo programa basado en un código de lenguaje de
programación en Python y en la biblioteca PyQt5. Al almacenar la información requerida
en la base de datos, se refleja el buen manejo de una cantidad importante de datos, ya que
dicha base permite el almacenamiento de diversos tipos de archivos, tales como datos
binarios. Finalmente, se determinó que el software creado a partir del programa Python
posee la capacidad de cumplir con las demandas de los usuarios; asimismo, posibilita la
mejora de la productividad en la empresa.

2.2. BASE TEÓRICA

A continuación, se presentan las bases teóricas que sustentan la investigación acerca del
uso del lenguaje de programación Python y lo que se requiere hacer para lograr la
satisfacción del cliente.

De acuerdo con Frittelli et al. (2013), durante años ha existido una controversia entre la
enseñanza adecuada de la programación. De hecho, cada centro de estudios elige la
alternativa idónea para ellos. La ventaja del uso de Python es que este es un lenguaje
multiparadigma, por lo que admite el desarrollo de programas en forma estructurada,
orientada a objetos y funcional. Python presenta simplicidad en el código fuente; por lo
tanto, se utiliza tanto en el campo estudiantil como en el profesional. Un programa
ejecutado en Python comprende únicamente un código que elabora una tarea específica.
En definitiva, dicho programa es la alternativa ideal para ser aplicada en un caso, ya sea
simple o complejo.

Jamaluddin y Ruswanti (2017) sugieren que, para perdurar en una industria, la empresa
se ve en la necesidad de crear una estrategia que satisfaga a sus clientes. Esta acción
origina la lealtad de los usuarios de sus productos o servicios, lo cual es la manera ideal
de fomentar una competitividad sostenible. Asimismo, Ngo y Nguyen (2016) señalan que
para toda empresa que desee un trato estrecho con el cliente es primordial la satisfacción
de éste.

Para lograr que los clientes estén satisfechos con la empresa, ésta deberá hacer uso de un
código de programación en Python que permita la obtención del stock actualizado de cada
uno de los productos, el registro correcto de los datos de cada cliente, el total de ventas y
los ingresos del mes, así como la cantidad de envíos por zonas distribuidas, de modo que,
indique el momento preciso en el que se necesitará el abastecimiento de insumos, la
demanda de cada producto y las zonas a las que se realizan más envíos.

Como indicó Durán (2017), en el formato columnar, todos los valores de un atributo de
la tabla son almacenados como un vector usando múltiples bloques de memoria y todos
los vectores de atributos de una tabla son almacenados secuencialmente. Al organizar los
valores en la forma de un vector de atributos permite una fácil compresión de datos y
también permite una alta velocidad de escaneo y filtraje. Esto resulta en mucho
procesamiento secuencial donde el formato columnar tiene una enorme ventaja
comparada con la tradicional base de datos de disco orientado a filas. Es de suma
importancia almacenar la información de los clientes y productos en una base de datos
para administrar el negocio correctamente y poseer un fácil acceso a la data.
Adicionalmente, esto ocasiona la mejoría en la atención al consumidor. En el proceso de
factura es necesario el registro de los datos completos del cliente, la zona de delivery y la
cantidad de los productos a vender incluyendo sus respectivos códigos. El código de
programación será capaz de rellenar la descripción del producto y el precio total a pagar,
que incluye el precio del producto y el precio de delivery de manera automática. Además,
deberá disminuir los productos vendidos del total de stock disponible.

2.3. CONCEPTOS CLAVE

2.3.1. PROCESO DE NEGOCIO DE LA EMPRESA

También llamado Business Process. Es un conjunto de tareas interrelacionadas entre sí,


las cuales se ejecutan para la producción de un producto o el ofrecimiento de cierto
servicio a los clientes. Además, su correcta ejecución es de suma importancia para atraer
nuevos clientes.
2.3.1.1. Proceso de compras

Es una serie de actividades que realizan las personas al intentar adquirir un producto o
servicio. En este proceso, los posibles compradores eligen el producto o servicio a
adquirir. Además, analizan la razón de dicha necesidad y los beneficios que su adquisición
podría producir.

2.3.1.2. Proceso entrega del producto

Se define como la actividad final dentro de un proceso logístico. Como lo indica su


nombre, es el servicio de entrega de cierto producto, lo que se conoce como delivery. Es
necesario respetar la forma de envío establecida en el proceso de compra, verificando el
transporte, tiempo y lugar de entrega.

2.3.1.3. Proceso post venta

Es una serie de actividades, tales como entrega de cupones o contacto con el comprador,
que se ejecutan luego de haber terminado una venta con la finalidad de obtener la
fidelización de dicha persona. Asimismo, suele ser el contacto de la empresa con el
cliente, vía telefónica o email para conocer la experiencia de éste.

2.3.2. PROBLEMAS EN EL SECTOR DE GLP ENVASADO


Se define como los inconvenientes que pueden presentarse dentro del sector de trabajo.
Asimismo, se incluyen las acciones ilegales que se ejecutan en ciertas áreas.

2.3.2.1. Adulterar cilindros de GLP

Se refiere a la acción de pintar, enmarcar y envasar cilindros que no le pertenecen a una


distribuidora en cuestión, haciéndolos pasar como suyos, sin el consentimiento de la
empresa original.

2.3.2.2. Trasiego

Es la acción de comprar GLP a granel, transportarlo y almacenarlo en vehículos y tanques,


respectivamente, de modo que no cumple los estándares de seguridad establecidos y
venderlo envasado de igual modo.

2.3.2.3. Envasar los cilindros con menor peso

Es el hecho de envasar los cilindros con menor cantidad de GLP a la que deberían tener,
lo que provoca que se agote en poco tiempo y afecta la economía del consumidor.

2.3.3. SISTEMAS TÉCNICOS

2.3.3.1. Lenguaje de programación

Un lenguaje de programación es definido como un conjunto de comandos que describen


el proceso deseado. Este lenguaje formal le da la facultad de escribir un grupo de órdenes
a un programador, por medio de una serie de instrucciones. Los comandos son utilizados
para orientar la programación de estructuras dentro del desarrollo web. Existen diversos
tipos de lenguajes de programación, los cuales se encuentran dentro de los lenguajes de
máquina y lenguajes simbólicos.

2.3.3.2. Python

Es un lenguaje interactivo que posee una gran facilidad para la programación orientada a
objetos. Se estima que Python es un lenguaje multiparadigma, debido a que es imperativo
y eficaz. Ofrece una gran variedad de estructuras de datos, tales como las listas, por lo
que es calificado como un lenguaje de alto nivel. Por otro lado, Python es definido como
un lenguaje dinámicamente tipado. Esto quiere decir que, durante su uso no es
imprescindible declarar el tipo de dato que contendrá cierta variable, por el contrario, el
tipo de dato se determina al instante en el que se ejecuta el código (Challenger et al, 2014).

2.3.3.3. Google Colaboratory

Es una extensión de Google Research que le brinda acceso a cualquier usuario para
escribir y ejecutar un código escrito en lenguaje Python dentro de dicho navegador.

2.3.3.4. Programación orientada a objetos

La programación orientada a objetos (POO) se fundamenta en crear un modelo del


problema de destino de sus programas. Su objetivo es hallar la manera de programar de
manera sencilla, de modo que, el problema sea visto como un caso del día a día y se
disminuyan los errores. Python es un lenguaje orientado a objetos.

2.3.3.5. StarUML
Es una herramienta utilizada para el modelamiento de software basado en los estándares
Unified Modeling Language y Model Driven Arquitecture. Se emplea para la realización
de diseños y diagramas que posteriormente servirán como guías para la creación de
códigos en lenguajes de programación.

2.3.3.5. Registro de datos

Se refiere a un registro de información. Éste permite acceder a cierta información para


realizar gestiones dentro de una empresa, centro estudiantil, entidades públicas y/o
privadas, entre otros. Es un proceso de registrar mediciones con la finalidad de
monitorearlas en tiempo real. La importancia de contar con un registro de datos es el
control del rendimiento de ciertas actividades, además de agilizar los procesamientos de
datos.

2.3.3.6. Microsoft Excel


Es una hoja de cálculos que cuenta con múltiples funciones de cálculo, gráficas y tablas
calculares. Incluso cuenta con Visual Basic, un lenguaje de programación macro para
aplicaciones.
Capítulo 3: Descripción de la empresa

La empresa Primax Gas San Antonio inició operaciones en 2016 en el distrito de


Carabayllo. Sin embargo, Rubén Espinoza, CEO de la empresa, ya había emprendido su
negocio en 2005 en el distrito de La Victoria, como figura en su ficha RUC. Según, el
CEO afirma ser primer distribuidor, en San Pedro de Carabayllo, con mayor frecuencia
en el volumen de ventas. Esta es una MYPE que se dedica a la venta y distribución de
balones de gas con un promedio diario de volumen de ventas de 80 balones y cuenta con
11 trabajadores. Dentro de su catálogo de productos, se encuentran los modelos de balón
de gas Primax, Progas y Primax Plus que están ofertados al por mayor y menor. Además,
vende artículos relacionados como mangueras y válvulas. Según su política, al vender,
obsequian regalos (platos, detergente, vasos) y se encarga de trasladar gratuitamente los
pedidos hasta la ubicación del cliente. Sus primordiales clientes son los hogares de las
zonas aledañas al local, aunque también realiza pedidos a restaurantes, chifas y
comedores populares. La principal característica de esta empresa es brindar la garantía de
un balón de gas premium y seguro.

PRODUCTOS:
CATÁLOGO DE PRODUCTOS:

Rubro:
Número de RUC: 10406392363 - ESPINOZA PANTOJA FEDERICO RUBEN
Tipo Contribuyente: PERSONA NATURAL CON NEGOCIO
Nombre Comercial: DISTRIBUIDORA PRIMAX GAS SAN ANTONIO
Domicilio Fiscal: Av. Saco Rojas mz D9 - Lt 45, San Antonio
Actividad(es) Económica(s): TIPO DE VENTA DE BALONES AL POR MENOR
Sistema Contabilidad: Manual
Misión:
Ser una empresa de energía que contribuya al desarrollo sustentable, mejorando la calidad
de vida a través de la comercialización de gas doméstico en Lima.
Visión:
Ser líderes en Carabayllo - Lima por la calidad de nuestros productos y la excelencia en
nuestros servicios, enfocándonos en la creación de valor para todos.
POLÍTICA DE LA EMPRESA
● La empresa brinda un trato cordial a todos sus clientes, y respeta sus decisiones,
tanto solicitudes como reclamos.
● Todos los trabajadores de la empresa deben estar capacitados, para mantener un
trabajo correcto y ordenado.
● Por la compra de cada producto, el cliente puede elegir entre platos, lavavajillas,
taper, lejía, etc; como un obsequio de la empresa.
● La empresa proporciona un crédito a los clientes más cercanos.

3.1. ANTECEDENTES
Debido a la pandemia, el servicio de delivery a nivel macro tuvo un crecimiento de 250%
en el último año, según el diario Gestión (2021). Por lo que las empresas de este rubro
han reaccionado positivamente al uso de las tecnologías, por ejemplo, creando sus páginas
webs, sus apps y generando publicidades en las redes sociales con la finalidad de retener
a sus clientes y generar utilidades. Por su lado, la distribuidora de gas GLP ha tenido una
regular participación en el mercado durante los años. Es decir, logró posicionarse como
una de las mayores distribuidoras en la zona de Carabayllo, vendiendo como mínimo 80
balones por día. Sin embargo, en los últimos meses, han existido diversas quejas de los
clientes acerca de la empresa. Otra razón de su irregularidad es el deficiente uso de las
tecnologías. Ha tenido complicaciones en el área administrativa. Por ejemplo, sus
operaciones de registros generales (de venta, almacén, clientes) lo realizan en pizarras y
cuadernos generando errores en la edición, demora en los cálculos y se expone a las
pérdidas de datos. Además, carece de datos estadísticos financieros, administrativos.
Actualmente, según sus registros, las ventas de los balones de gas de la distribuidora
disminuyeron en 24.35% en los últimos 5 meses.

3.2. IDENTIFICACIÓN DEL PROBLEMA


Las ventas de los balones GLP del primer cuatrimestre del año 2021, enero - abril, fueron
ligeramente constantes en 100 unidades. Sin embargo, en los últimos 5 meses, desde
mayo hasta septiembre, la distribuidora Primax Gas San Antonio registró una
disminución alrededor de un 25% en sus cantidades vendidas de balones de GLP. Como
se aprecia en el siguiente registro.
Tabla 1. Registros mensuales de balones de gas

Fuente: Elaboración propia


Además, se realizaron encuestas a los trabajadores y clientes para examinar de manera
interna y externa los presuntos problemas de la empresa.
Encuesta para los trabajadores de la empresa
Según la encuesta realizada el 22 de septiembre del 2021, el 36,4% de los trabajadores
percibe problemas en la carencia de automatización en los registros del área
administrativa.

Fuente: Elaboración propia: https://forms.gle/N127keE3igZFVb9b9

Encuesta a los clientes


Según la encuesta realizada el 23 de septiembre del 2021, el 35% de los clientes ha tenido
problemas en la falta de otorgamiento a la opción de crédito y/o promociones brindadas
por la empresa.

Fuente: Elaboración propia: https://forms.gle/qwkkijH4JQGuUNS68


Diagrama de cadena de valor de Porter en la Distribuidora PRIMAX GAS SAN
ANTONIO

Fuente: elaboración propia


En conclusión, hemos encontrado en el área de desarrollo tecnológico (administración),
que la problemática abordada consiste en la falta de automatización en los registros, la
cual genera que el administrador cometa errores manuales y que la empresa no cuente
con una excelente relación hacia los clientes por lo que se disminuyen las ventas.

3.3 JUSTIFICACIÓN DEL PROBLEMA


Problema:
“Los procesos de registros ineficientes e imprecisos del área administrativa generan la
disminución en las ventas”
En este proyecto de investigación hacia la distribuidora Primax Gas San Antonio se
evaluará la causa de la disminución en las ventas. Para ello, hemos recopilado datos para
realizar diagramas con el fin de encontrar sus causas.
Problemas:
P1: No contar con rutas óptimas en el envío
P2: Ausencia de equipos tecnológicos (laptop, computadora).
P3: Falta de mantenimiento en los medios de transporte para el pedido
P4: Carece de automatización en los registros del área administrativa (registros hojas,
pizarras)
P5: Incidencia en la calidad de servicios al cliente
Diagrama de Pareto en la Distribuidora Gas San Antonio

Fuente: Elaboración propia


Como se puede apreciar del diagrama de Pareto, los problemas P4, P2 y P5 representan
el 82% de los problemas encontrados en el área administrativa. Sin embargo, la falta de
automatización en los registros tiene mayor significancia de estudio.

Diagrama de Ishikawa de la Distribuidora Primax Gas San Antonio

Fuente: Elaboración propia


El anterior diagrama de Ishikawa hace mención a las causas principales de la falta de
automatización en el área administrativa, también se muestra las sub-causas del mismo
problema. En síntesis, las causas generalizadas serían, el uso convencional (cuadernos y
pizarras) en el registro de datos y la falta de capacitación tecnológica al personal.

EFECTOS:
La falta de automatización de registros en el área administrativa genera los siguientes
efectos. En primer lugar, los problemas con los registros de almacén, ventas y pedidos.
Debido a que el 26% de los clientes dieron a conocer que los repartidores cometieron
errores en la entrega de sus pedidos y que el 36.4% de los trabajadores indicaron no contar
con registros automatizados, sino manuales. Asimismo, carece de registro de clientes, por
ende, no cuenta con buena relación con los mismos, no otorga el beneficio al crédito, ni
promociones, ni seguimiento de sus compras. Esto es evidencia, ya que el 35% de los
clientes lo afirmaron. Finalmente, también se encontró que el 18% de los clientes
presentaron incidencias en la calidad de servicio al cliente
En conclusión, debido a las herramientas que fueron utilizadas como el diagrama de
Pareto e Ishikawa, pudimos determinar los principales problemas que afectan en el área
administrativa de la empresa. Además, el porcentaje exacto en el que se presentan, como
también las causas por las que se originan dichos problemas. Considerando todos estos
aspectos, obtuvimos el problema con mayor prioridad para la empresa, el cual toma origen
en la falta de automatización de los registros en el área administrativa.

3.4 HIPÓTESIS DE SOLUCIÓN


Para el presente trabajo, vamos a brindar una solución a todos los problemas que se
presentan en el área de administración de la distribuidora Primax Gas San Antonio,
modelando un programa y desarrollando mediante la programación de un software de
lenguaje Python, y adicionalmente una base de datos presentada en Microsoft Excel.
Estos procesos nos permitirán automatizar los registros de dicha área.
La ejecución de este programa tiene como objetivo principal controlar el registro exacto
de los clientes e interactuar con ellos como enviarles promociones o brindarles beneficios
de créditos. Además, registrar los pedidos y sus montos de manera exacta y así disminuir
errores frecuentes que presenta la empresa como la equivocación en el registro manual de
pedidos y optimizar la organización de la empresa.
3.5 HERRAMIENTAS DE ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS

LISTA DE REQUERIMIENTOS:

Registrar clie
FRQ - 001 Registrar al cliente

Descripción El sistema registrará al cliente mediante sus datos


personales, nombre, DNI, dirección, teléfono

Importancia Fundamental

FRQ - 002 Registrar información de producto

Descripción El sistema registra la información del producto, tipo de balón


de gas, puede ser Primax Gas 10 kg, Progas 10 kg o Primax
Gas 45 kg.

Importancia Fundamental

FRQ - 003 Consultar stock

Descripción El sistema consultará la cantidad de unidades que quedan en


el almacén del tipo de balón de gas registrado previamente,
esta se actualizará en un registro de Excel.

Importancia Fundamental
FRQ - 004 Seleccionar cantidad

Descripción El sistema seleccionará la cantidad a registrar del producto,


disminuyendo así en el registro del Excel.

Importancia Fundamental

FRQ - 005 Seleccionar Regalo

Descripción En el sistema se seleccionará, de una lista desplegable, un


regalo para cada balón de gas comprado, estos pueden ser
platos, detergente o vasos.

Importancia Fundamental

FRQ - 006 Guardar historial

Descripción Una vez realizado todo el proceso el sistema guardará el


historial diario de productos vendidos. También se guardará
un historial semanal.

Importancia Fundamental

FRQ - 007 Calcular monto total

Descripción Al seleccionar el tipo de balón de gas, el sistema muestra el


precio de este en la interfaz, luego, el mismo es multiplicado
por la cantidad, que previamente también fue seleccionada,
obteniendo así el monto total.
Importancia Fundamental

FRQ - 008 Mostrar detalle del pedido

Descripción Cuando finaliza el pedido, el sistema muestra un resumen del


pedido, con el DNI del cliente, regalo seleccionado, el tipo
de balón de gas, la cantidad y el monto total.

Importancia Fundamental

CASO DE USO
● El sistema debe registrar al cliente mientras se solicita el pedido.
● El sistema debe pedir sus datos personales (nombre, DNI, dirección, teléfono) por
primera vez.
● El sistema debe de registrar los datos personales independientemente y validarlos
● El sistema debe preguntar qué tipo de balón de gas y la cantidad de balones
● El sistema debe consultar el stock del producto a vender (ver registro en Microsoft
Excel)
● El sistema debe confirmar si existe stock
SI: El sistema valida la cantidad de balones a vender
NO: El sistema deberá informar que no hay stock y dar alerta para
comunicarse con el proveedor
● El sistema debe preguntar qué regalo desea (plato, lejía, lavavajilla, táper)
● El sistema debe confirmar si existe stock de regalo
SI: El sistema valida la cantidad de regalo escogido
NO: El sistema deberá informar que no hay stock de regalo y dar alerta
para comunicarse con el proveedor
● El sistema debe almacenar cada información en diferentes listas según cada clase
● El sistema debe mostrar los detalles del pedido (nombre - dirección - producto -
tipo - regalo)
● El sistema debe mostrar el monto total del pedido
● El sistema debe preguntar si desea continuar
<< ESTA SUCESIÓN SUCEDE CADA VEZ QUE VENDE UN PRODUCTO>>
Al finalizar las ventas
● El sistema debe calcular diariamente los pedidos respectivamente con los
clientes, tipo de balón y el monto total
A la semana: EL administrado pide los datos estadísticos
● El sistema debe mostrar el historial general de los registros obtenidos

DIAGRAMA DE CASOS DE USO

Fuente: Elaboración propia (StarUML)


DIAGRAMA DE CLASES

Fuente: Elaboración propia (StarUML)


DISEÑO DE PANTALLAS:

Estas fuentes son de elaboración propia, las dos interfaces están conectadas mediante un
“extend”, debido a que, la interfaz registrar pedido necesita de la interfaz registrar cliente.
Capítulo 4: Propuesta de mejora cualitativa o mejora del tema

4.1. MAPEO DE PROCESOS AS-IS /TO-BE


Esta herramienta de gestión cooperará en la descripción y mejora de los procesos del área
administrativa de la empresa PRIMAX GAS SAN ANTONIO.

4.1.1. AS-IS (SITUACIÓN ACTUAL)


Actualmente, el proceso de registro de clientes de la empresa es ineficiente, ya que solo
anota datos, tales como dirección de envío, tipo de gas, cantidad y precio de compra en
un cuaderno común. Además, no lleva un registro completo de todos sus clientes, lo que
ocasiona que pierda el contacto con alguno de ellos. A continuación, se detalla la situación
descrita a través del siguiente diagrama de casos de uso:
Fuente: Elaboración propia (StarUML)

4.1.2. TO-BE (SITUACIÓN FUTURA)


Como propuesta de mejora, se desarrolla un sistema automatizado que sea capaz de
registrar una base de datos en Microsoft Excel para facilitar la tarea del administrador del
negocio, es decir, éste podrá registrar y solicitar información de los clientes y compras
sin complicaciones desde una laptop o computadora. Además, los clientes podrán
comunicarse con la empresa vía llamada telefónica o WhatsApp para solicitar su pedido,
sin demoras y de manera eficiente. El sistema para ejecutar contará con los siguientes
botones principales:

Cada uno de estos botones cumple con una tarea específica. En primer lugar, al hacer clic
en el botón Registrar, se abrirá una nueva ventana donde el administrador o recepcionista
de pedidos registrará los datos personales del cliente, el pedido a realizar, el premio y tipo
de pago. Asimismo, cuenta con dos botones adicionales, Aceptar para guardar los datos
proporcionados y Cancelar para desecharlos.
Al seleccionar en el botón Listar, éste dará acceso a una nueva ventana que mostrará una
base de datos, proporcionando información como la fecha de venta, nombre del cliente,
tipo de pago e importe total. Si el administrador no desea seguir viendo dicha pestaña,
dará clic al botón Cerrar.
Por otro lado, al dar clic en el botón Estadísticas, el sistema desplegará una ventana que
mostrará el resumen de cifras relevantes para la empresa, como el tipo de obsequio que
más se entrega al comprador, la cantidad de balones vendidos por tipo y el porcentaje del
medio de pago. Para salir de esta ventana, se presiona el botón Cerrar.
Por último, para cerrar la ventana del Sistema de Registros Primax, se da clic en el botón
Salir y se muestra el siguiente mensaje:
4.1.3. VENTAJAS DE TO-BE SOBRE AS-IS

4.1.3.1. Estandarización del proceso de registro de datos


La gestión del proceso de registro de datos mejora considerablemente, debido a que ahora
se cuenta con un sistema de base de datos. Esto hace que el proceso sea más rápido para
el recepcionista de pedidos, ya que solo tendrá que registrar la información mediante un
ordenador. Del mismo modo, se evidenciará una menor cifra de errores en cuanto a la
verificación del stock de productos.

4.1.3.2. Mayor satisfacción de los clientes


Un comprador nuevo tendrá mejor atención en el momento de solicitar su pedido, ya que
el registro de su información no tardará demasiado tiempo. Asimismo, los clientes tendrán
mayor beneficio, debido a que sus datos ya se encuentran guardados en la base de
registros y tienen mayor posibilidad de recibir un regalo por su compra. Adicionalmente,
ellos sabrán inmediatamente si el tipo de gas que desean adquirir está en stock.

4.1.3.3. Llevar mejor la contabilidad


El administrador de la empresa tendrá la capacidad de llevar las cuentas monetarias
correctamente. Al contabilizar el importe de venta en el sistema integrado, dicha persona
no percibirá pérdidas ocasionadas por olvido de pagos por parte de los clientes o por algún
otro motivo. Por otro lado, ya no se gastará dinero en compra de cuadernos para los
registros.
Capítulo 5: Propuesta del algoritmo y componente en Python

Para desarrollar el programa se empleó un archivo en formato xlsx el cual permite guardar
datos en formato de una tabla estructurada. Además, se utilizó la extensión “Google
Colaboratory” para ejecutar el código en lenguaje Python, desde ahí se puede cargar datos
desde la unidad, leer y escribir documentos en formato CSV y Excel. Finalmente, se
dispuso de las librerías para el lenguaje en programación en Python como Pandas,
Ipywidgets, Matplotlib, Numpy y Datetime.

5.1. CÓDIGO EN PYTHON

Importar las librerías

Clase registro

Administrar registro
Gráfico circular (Cantidad de obsequios)

Gráfico de barras (Cantidad de balones vendidos)

Gráfico circular (Importe por tipo de pago)


Gráfico de barras (Importe por tipo de gas)

Clase menú y sus funciones

Clase registrar y sus funciones


Clase listar y sus funciones
Clase estadísticas y sus funciones

Clase sistema y sus funciones


5.2. HERRAMIENTAS Y MÓDULOS UTILIZADOS PARA EL DESARROLLO
• Lenguaje de programación: Python
• Módulos: xlsx
• Entorno de desarrollo: Google Colaboratory
• Para el diseño UML: StarUML
• Los reportes y consultas se pueden exportar en archivos CSV, la cual se puede
abrir con la aplicación Microsoft Excel, estos reportes se crean en carpetas
“Reporte” y “Consulta”.

CONCLUSIONES
• Se identificó el problema principal de la disminución de las ventas en la empresa
Primas Gas San Antonio con el fin de plantear una solución.
• Se diseñó un software en lenguaje Python que optimiza el registro de ventas.
• Se elaboró estadísticas de la venta de los productos (Gráfico de barras, Gráfico
circular, Histograma, entre otros).
• Se podrán almacenar todos los datos registrados por cada compra (Cantidad
vendida, Cantidad disponible, Costos, entre otros).
• Se concluye que esta herramienta facilita el trabajo y lo hace más seguro.

RECOMENDACIONES
• Se recomienda a la empresa Primas Gas San Antonio emplear el siguiente trabajo,
con el fin de optimizar la venta de sus productos.
• Se recomienda usar la herramienta de Google Collab porque permite ver el
resultado de la ejecución, teniendo ventaja a otros programas.
• Se recomienda a la empresa Primas Gas San Antonio capacitar a sus trabajadores
encargados de ejecutar el programa.
• Se recomienda usar otras librerías más especializadas para tener un interfaz más
interactivo (Tinker).
BIBLIOGRAFÍA
- Acosta, A. M., Durán, E. G., & Padilla, R. P. (2018). Impacto de la calidad de los
servicios sobre la satisfacción de los clientes en una empresa de mantenimiento.
Revista Científica Compendium, 21(40). Recuperado de
https://revistas.uclave.org/index.php/Compendium/article/view/1656/945
[Consulta: 29 de septiembre de 2021].

- Challenger-Pérez, I., Díaz-Ricardo, Y., & Becerra-García, R. A. (2014). El


lenguaje de programación Python. Ciencias Holguín, 20(2), 1-13. Recuperado de
https://www.redalyc.org/pdf/1815/181531232001.pdf [Consulta: 28 de
septiembre de 2021].

- Durán-Cazar, J. W., Tandazo-Gaona, E. J., Morales-Morales, M. R., & Cardoso,


S. M. (2019). Performance of Columnar Database. Ingenius, 22, 47-58.
Recuperado de
https://dspace.ups.edu.ec/bitstream/123456789/17439/1/ings_v22_Dur%c3%a1n
-Cazar_Tandazo-Gaona_Morales-Morales_Morales.pdf [Consulta: 28 de
septiembre de 2021].

- Frittelli, V., Serrano, D., Teicher, R., Steffolani, F., Tartabini, M., Fernández, J.,
& Bett, G. (2013). Uso de Python como Lenguaje Inicial en Asignaturas de
Programación. Editor Responsable, 132. Recuperado de
https://www.researchgate.net/profile/Horacio-
Martin/publication/277130560_Desarrollo_epistemico_de_educandos_mediante
_un_entorno_de_educacion_virtual/links/5561d45308ae86c06b65ea99/Desarroll
o-epistemico-de-educandos-mediante-un-entorno-de-educacion-
virtual.pdf#page=133 [Consulta: 6 de octubre de 2021].

- Jamaluddin, J., & Ruswanti, E. (2017). Impact of service quality and customer
satisfaction on customer loyalty: A case study in a private Hospital in Indonesia.
IOSR Journal of Business and Management, 19(5), 23-33. Recuperado de
https://www.iosrjournals.org/iosr-jbm/papers/Vol19-issue5/Version-
1/D1905012333.pdf [Consulta: 1 de octubre de 2021].

- Mejias, A. (2020). Programa basado en Python para integrar la gestión de


documentos y procesos de trabajo en una empresa (Tesis Doctoral, Universitat
Politècnica de València). Recuperado de
https://riunet.upv.es/bitstream/handle/10251/134479/Mejias%20-
%20Programa%20basado%20en%20Python%20para%20integrar%20la%20gest
i%C3%B3n%20de%20documentos%20y%20procesos%20de%20trabajo%20e...
.pdf?sequence=1 [Consulta: 4 de octubre de 2021].
- Ngo, VM y Nguyen, HH (2016). The Relationship between Service Quality,
Customer Satisfaction and Customer Loyalty: An Investigation in Vietnamese
Retail Banking Sector. Journal of Competitiveness, 8(2), 103-116. Recuperado de
https://publikace.k.utb.cz/bitstream/handle/10563/1007082/Fulltext_1007082.pd
f?sequence=1&isAllowed=y [Consulta: 1 de octubre de 2021].

- Yépez, W. S., & Cabrera-Vallejo, M. (2016). Diagnóstico de la calidad de


servicio, en la atención al cliente, en la Universidad Nacional de Chimborazo-
Ecuador. Industrial data, 19(2), 13-20. Recuperado de
https://www.redalyc.org/pdf/816/81649428003.pdf [Consulta: 29 de septiembre
de 2021].
ANEXOS
Ficha ruc de la empresa:
Base de datos Excel: (Registros)
Código en Python
"""TRABAJO_FINAL_GRUPO04.ipynb”””

import pandas as pd
import ipywidgets as widgets
import matplotlib.pyplot as plt
import numpy as np
import datetime

class Registro:
fecha= datetime.datetime.now()
nombre= ""
telefono=""
direccion=""
tipodegas= ""
precio= 0.0
cant= 0
regalo= ""
tipodepago=""

def __init__(self, fecha, nombre,telefono, direccion,tipodegas, precio, cant, regalo,


tipodepago):
self.fecha= datetime.datetime.now()
self.nombre= nombre
self.telefono= telefono
self.direccion= direccion
self.tipodegas= tipodegas
self.precio= precio
self.cant= cant
self.regalo= regalo
self.tipodepago= tipodepago

def importetotal (self):


return(self.precio * self.cant)

def dataRow(self):
return [self.fecha, self.nombre, self.telefono, self.direccion, self.tipodegas,
self.precio, self.cant, self.regalo, self.tipodepago, self.importetotal()]

class AdmRegistros:
#dataframe
dfRegistros= None
nombrearchivoexcel= ""
nombrehojaexcel= ""
def __init__(self, nombrearchivoexcel, nombrehojaexcel):
self.nombrearchivoexcel= nombrearchivoexcel
self.nombrehojaexcel= nombrehojaexcel
self.dfRegistros= pd.read_excel(nombrearchivoexcel,sheet_name=
nombrehojaexcel)

def listarR(self):
print(self.dfRegistros)

def registrarR(self, registro):


# Usar loc para añadir al final del DataFrame
self.dfRegistros.loc[self.dfRegistros.shape[0]] = registro.dataRow()
# Grabar informacion en el excel
self.dfRegistros.to_excel(self.nombrearchivoexcel,
sheet_name=self.nombrehojaexcel, index=False)

def mostrarestadistica(self):
print("---------- ESTADISTICA DE LAS CANTIDADES DE BALONES ----------
")
print(self.dfRegistros["Cant"].describe())
print("---------- ESTADISTICA DEL IMPORTE TOTAL ----------")
print(self.dfRegistros["Importe total "].describe())
print(self.dfRegistros.groupby(["Tipo de obsequio"])["Cant"].count())

# Grafico CIRCULAR PARA LOS OBSEQUIOS


y = np.array(self.dfRegistros.groupby(["Tipo de
obsequio"])["Cant"].count().tolist())
etiquetas = self.dfRegistros.groupby(["Tipo de
obsequio"])["Cant"].count().keys().tolist()
plt.pie(y, labels = etiquetas)
colores = ["#EE6055","#60D394","#AAF683","#FFD97D","#FF9B85"]
plt.pie(y, labels = etiquetas, autopct="%0.1f %%", colors=colores)
plt.axis("equal")
plt.title('CANTIDAD EN PORCENTAJE DE REGALOS ')
plt.show()

# GRAFICO DE BARRAS PARA LAS CANTIDADES DE BALONES


VENDIDAS
## Declaramos valores para el eje x
eje_x = self.dfRegistros.groupby(["Tipo de gas"])["Cant"].count().keys().tolist()
## Declaramos valores para el eje y
eje_y = np.array(self.dfRegistros.groupby(["Tipo de
gas"])["Cant"].count().tolist())
## Creamos Gráfica
plt.bar(eje_x, eje_y, facecolor ="#FF9B85")
## Legenda en el eje y
plt.ylabel('Cantidad de gas vendidas')
## Legenda en el eje x
plt.xlabel('Tipos de gas')
## Título de Gráfica
plt.title('CANTIDAD DE BALONES VENDIDOS POR CADA TIPO ')
## Mostramos Gráfica
plt.show()

# Grafico CIRCULAR PARA LOS OBSEQUIOS


y = np.array(self.dfRegistros.groupby(["Tipo de pago"])["Importe total
"].count().tolist())
etiquetas = self.dfRegistros.groupby(["Tipo de pago"])["Importe total
"].count().keys().tolist()
colores = ["#EE6055","#60D394"]
explode_vals = [0,0.15]
plt.pie(y, labels = etiquetas, autopct="%0.1f %%", colors=colores, explode =
explode_vals)
plt.axis("equal")
plt.title('CANTIDAD DE IMPORTE POR CADA TIPO PAGO ')
plt.show()

#GRAFICO DE BARRAS PARA EL IMPORTE TOTAL POR BALON


VENDIDO
eje_x = self.dfRegistros.groupby(["Tipo de gas"])["Importe total
"].count().keys().tolist()
## Declaramos valores para el eje y
eje_y = np.array(self.dfRegistros.groupby(["Tipo de gas"])["Importe total
"].sum().tolist())
print(eje_y)
## Creamos Gráfica
plt.bar(eje_x, eje_y, facecolor ="#AAF683")
## Legenda en el eje y
plt.ylabel('Cantidad de importe total')
## Legenda en el eje x
plt.xlabel('Tipos de gas')
## Título de Gráfica
plt.title('CANTIDAD (S/) DE IMPORTE TOTAL POR CADA TIPO DE GAS ')
## Mostramos Gráfica
plt.show()

class MenuForm:
itemLayout = None
formLayout = None
btnRegistrar = None
btnListar = None
btnEstadisticas = None
btnSalir = None
menuItems = None
form = None
def __init__(self, onButtonClicked):
self.itemLayout = widgets.Layout(display='flex', flex_flow='row',
justify_content='space-between')
self.formLayout =
widgets.Layout(display='flex',flex_flow='column',border='solid 2px red',
align_items='stretch',width='40%')
self.btnRegistrar = widgets.Button(description="Registrar",
button_style='success')
self.btnListar = widgets.Button(description="Listar", button_style='warning')
self.btnEstadisticas = widgets.Button(description="Estadisticas",
button_style='info')
self.btnSalir = widgets.Button(description="Salir", button_style='danger')
self.btnRegistrar.on_click(onButtonClicked)
self.btnListar.on_click(onButtonClicked)
self.btnEstadisticas.on_click(onButtonClicked)
self.btnSalir.on_click(onButtonClicked)
self.menuItems = [
widgets.Box([widgets.HTML(value='<h1>Sistema de Regitros Primax</h1',
)], layout=self.itemLayout),
widgets.Box([self.btnRegistrar],layout=self.itemLayout),
widgets.Box([self.btnListar],layout=self.itemLayout),
widgets.Box([self.btnEstadisticas],layout=self.itemLayout),
widgets.Box([self.btnSalir],layout=self.itemLayout)]
self.form = widgets.Box(self.menuItems, layout=self.formLayout)
display(self.form)
self.form.layout.display = 'none'

def show(self):
self.form.layout.display = ''

def close(self):
self.form.layout.display = 'none'

class RegistrarForm:
itemLayout = None
formLayout = None
textFecha = datetime.datetime.now()
textDatos = None
numTELEFONO = None
txtDireccion = None
tipodeGAS = None
PRECIO = None
cantbalones = None
Regalo = None
tipodePAGO = None
btnAceptar= None
btnCancelar = None
form = None
formItems = None

def __init__(self, onButtonClicked):


self.itemLayout = widgets.Layout(display='flex', flex_flow='row',
justify_content='space-between')
self.formLayout =
widgets.Layout(display='flex',flex_flow='column',border='solid 2px',
align_items='stretch',width='40%')
self.htmlStyles = widgets.HTML(value="<style>.label { color: white; padding:
8px; font-family: Arial; } .success {background-color: #04AA6D;} .info
{background-color: #2196F3;} .warning {background-color: #ff9800;} .danger
{background-color: #f44336;} .other {background-color: #e7e7e7; color: black;}
</style>")
self.htmlTitle = widgets.HTML(value="<h1> Registrar Datos </h1>",
placeholder='', description='')
#self.htmlMessage = widgets.HTML(value="", placeholder='', description='')
#self.textFecha = widgets.DatePicker(description = "Fecha")
self.textDatos = widgets.Text(description="NOMBRES", placeholder="Ingrese
al cliente")
self.numTELEFONO= widgets.IntText(description="TELEFONO")
self.txtDireccion = widgets.Textarea(description="Direccion",
placeholder="Refencia del domicilio")
self.tipodeGAS= widgets.RadioButtons(description="Tipo de Gas",
options=["Primax", "Primax Plus", "Progas"])
self.PRECIO=widgets.BoundedFloatText(description="PRECIO",
min=20,max=60, step=1)
self.cantbalones= widgets.BoundedIntText(description="CANTBALONES",
min=0, max=100, step=1)
self.Regalo= widgets.Dropdown(description="REGALO",
options=["Lavaplatos", "Vaso", "Plato", "Lejía", "NADA"])
self.tipodePAGO= widgets.RadioButtons(description="Tipo de Pago",
options=["Efectivo","Visa"])
self.btnAceptar = widgets.Button(description="Aceptar",
button_style='success')
self.btnCancelar = widgets.Button(description="Cancelar",
button_style='danger')
self.btnAceptar.on_click(onButtonClicked)
self.btnCancelar.on_click(onButtonClicked)
self.formItems = [
widgets.Box([self.htmlTitle], layout=self.itemLayout),
#widgets.Box([self.htmlStyles, self.htmlMessage], layout=self.itemLayout),
#widgets.Box([widgets.Label(value="Fecha: "), self.textFecha],
layout=self.itemLayout),
widgets.Box([widgets.Label(value='Datos: '), self.textDatos],
layout=self.itemLayout),
widgets.Box([widgets.Label(value='Telefono: '), self.numTELEFONO],
layout=self.itemLayout),
widgets.Box([widgets.Label(value='Direccion: '), self.txtDireccion],
layout=self.itemLayout),
widgets.Box([widgets.Label(value='Tipo de gas: '), self.tipodeGAS],
layout=self.itemLayout),
widgets.Box([widgets.Label(value='Precio : '), self.PRECIO],
layout=self.itemLayout),
widgets.Box([widgets.Label(value='Cantidad de balones: '), self.cantbalones],
layout=self.itemLayout),
widgets.Box([widgets.Label(value='Regalo: '), self.Regalo],
layout=self.itemLayout),
widgets.Box([widgets.Label(value='Tipo de pago: '), self.tipodePAGO],
layout=self.itemLayout),
widgets.Box([self.btnAceptar, self.btnCancelar], layout=self.itemLayout)
]
self.form = widgets.Box(self.formItems, layout=self.formLayout)
display(self.form)
self.form.layout.display = 'none'

#def message(self, msg, style):


#self.htmlMessage.value="<span class='label {0}'>{1}</span>".format(style,
msg)

def show(self):
self.form.layout.display = ''

def close(self):
self.form.layout.display = 'none'

class ListarForm:
itemLayout = None
formLayout = None
interactivePlot = None
output = None
btnCerrar = None
form = None
formItems = None
def __init__(self, onListado, onButtonClicked):
self.itemLayout = widgets.Layout(display='flex', flex_flow='row',
justify_content='space-between')
self.formLayout =
widgets.Layout(display='flex',flex_flow='column',border='solid 2px',
align_items='stretch',width='100%')
self.htmlTitle = widgets.HTML(value="<h1>Listado de Registros</h1>",
placeholder='', description='')
self.interactivePlot = widgets.interactive(onListado)
self.output = self.interactivePlot.children[-1]
self.output.layout.height = '500px'
self.btnCerrar = widgets.Button(description="Cerrar", button_style='danger')
self.btnCerrar.on_click(onButtonClicked)
self.formItems = [
widgets.Box([self.htmlTitle], layout=self.itemLayout),
widgets.Box([self.interactivePlot], layout=self.itemLayout),
widgets.Box([self.btnCerrar], layout=self.itemLayout)
]
self.form = widgets.Box(self.formItems, layout=self.formLayout)
display(self.form)
self.form.layout.display = 'none'

def show(self):
self.form.layout.display = ''

def close(self):
self.form.layout.display = 'none'

class EstadisticasForm:
itemLayout = None
formLayout = None
interactivePlot = None
output = None
btnCerrar = None
form = None
formItems = None
def __init__(self, onEstadisticas, onButtonClicked):
self.itemLayout = widgets.Layout(display='flex', flex_flow='row',
justify_content='space-between')
self.formLayout =
widgets.Layout(display='flex',flex_flow='column',border='solid 2px',
align_items='stretch',width='60%')
self.htmlTitle = widgets.HTML(value="<h1>Estadísticas Primax</h1>",
placeholder='', description='')
self.interactivePlot = widgets.interactive(onEstadisticas)
self.output = self.interactivePlot.children[-1]
self.btnCerrar = widgets.Button(description="Cerrar", button_style='danger')
self.btnCerrar.on_click(onButtonClicked)
self.formItems = [
widgets.Box([self.htmlTitle], layout=self.itemLayout),
widgets.Box([self.interactivePlot], layout=self.itemLayout),
widgets.Box([self.btnCerrar], layout=self.itemLayout)
]
self.form = widgets.Box(self.formItems, layout=self.formLayout)
display(self.form)
self.form.layout.display = 'none'

def show(self):
self.form.layout.display = ''

def close(self):
self.form.layout.display = 'none'

class Sistema:
admRegistros = None
menuForm = None
registrarForm = None
listarForm = None
estadisticasForm = None
mensajes = None

def __init__(self):
self.admRegistros = AdmRegistros("REGISTRO PRIMAX GAS.xlsx",
"Hoja1")
self.mensajes = []

def onMenuButtonClicked(self,button):
self.menuForm.close()
if (button.description=="Registrar"):
self.showRegistrarForm()
elif (button.description=="Listar"):
self.showListarForm()
elif (button.description=="Estadisticas"):
self.showEstadisticasForm()
else:
self.salir()

# Evento click de los botones Aceptar y Cancelar del formulario de registro


def onRegistrarButtonClicked(self,button):
if (button.description=="Aceptar"):
self.registrarR()
elif (button.description=="Cancelar"):
self.registrarForm.close()
self.menuForm.show()

# Evento click del boton Cerrar del formulario de listado


def onCerrarListadoClicked(self, button):
self.listarForm.close()
self.menuForm.show()

# Evento click para el boton Cerrar del formularios de estadisticas


def onCerrarEstadisticasClicked(self, button):
self.estadisticasForm.close()
self.menuForm.show()

# Metodos para crear y mostrar los formularios


def showMenuForm(self):
self.menuForm = MenuForm(self.onMenuButtonClicked)
self.menuForm.show()
def showRegistrarForm(self):
self.registrarForm = RegistrarForm(self.onRegistrarButtonClicked)
self.registrarForm.show()

def showListarForm(self):
self.listarForm = ListarForm(self.listarR, self.onCerrarListadoClicked)
self.listarForm.show()

def showEstadisticasForm(self):
self.estadisticasForm =
EstadisticasForm(self.mostrarestadistica,self.onCerrarEstadisticasClicked)
self.estadisticasForm.show()

def limpiarMensajes(self):
#self.registrarForm.message("", "")
self.mensajes.clear()

# Metodo para validar el ingreso de datos del formularo de registro


def IngresarFormulario(self):
self.limpiarMensajes()
fecha= datetime.datetime.now()
nombre= self.registrarForm.textDatos.value.upper()
telefono= self.registrarForm.numTELEFONO.value
direccion= self.registrarForm.txtDireccion.value
tipodegas= self.registrarForm.tipodeGAS.value
precio= self.registrarForm.PRECIO.value
cant= self.registrarForm.cantbalones.value
regalo= self.registrarForm.Regalo.value
tipodepago= self.registrarForm.tipodePAGO.value
return Registro(fecha, nombre, telefono, direccion, tipodegas, precio, cant,
regalo, tipodepago)
# Metodos con las acciones principales

def registrarR(self):
registro = self.IngresarFormulario()
if (registro != None):
self.admRegistros.registrarR(registro)
self.registrarForm.close()
self.menuForm.show()

def listarR(self):
self.admRegistros.listarR()

def mostrarestadistica(self):
self.admRegistros.mostrarestadistica()

def ejecutar(self):
self.showMenuForm()

def salir(self):
print("Gracias por usar el sistema atte PRIMAX")

#Programa Principal
sistema = Sistema()
sistema.ejecutar()

https://colab.research.google.com/drive/1n92jGx7faf1ytY37Kj9H-Rqo255xRQO1
Cuadro de balance: (Inventarios)

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy