Está en la página 1de 54

UNIVERSIDAD PERUANA DE CIENCIAS

APLICADAS
FACULTAD DE INGENIERÍA
INGENIERÍA INDUSTRIAL

CURSO:

Algoritmos

SECCIÓN:

IV41

TRABAJO FINAL

EMPRESA: BRRAO. S.A.C

PROFESOR:

Dulio Aranda Ipince

INTEGRANTES:

· Azaña Castillo Raúl (U201726202)


· Gómez Gonzales Marcoaurelio (U20161C636)
· Silva Castro, Daniela Darely (U201810904)

LIMA – PERÚ

1
ÍNDICE

INTRODUCCIÓN
DESCRIPCIÓN DE LA EMPRESA______________________________. 3
ANÁLISIS DEL SECTOR______________________________________ 4
ANÁLISIS INTERNO – MAPA DE PROCESOS____________________ 5
MISIÓN Y VISIÓN DE LA 6

EMPRESA____________________________
MARCO TEÓRICO
DESCRIPCIÓN DEL PROYECTO_______________________________ 7
PLANTEAMIENTO DE LA IDEA_______________________________ 7
CONTENIDO________________________________________________ 7
RESULTADOS ______________________________________________ 10
PROBLEMÁTICA
IDENTIFICACIÓN DEL PROBLEMA___________________________ 10
DEFINICIÓN DEL PROBLEMA________________________________. 11
ASPECTOS A 11

CONSIDERAR___________________________________
ETAPAS DE LAL SOLUCIÓN__________________________________ 12
ALCANCE DEL PROYECTO___________________________________ 22
RECURSOS _________________________________________________ 22
PLANTEAMIENTO DE LA SOLUCIÓN
OBJETIVOS 22

_________________________________________________
MODELOS 23

__________________________________________________
MODELO DE SOLUCIÓN 23

LÓGICA___________________________

BIBLIOGRAFÍA 52

2
1. INTRODUCCIÓN

El uso del programa Microsoft Excel ha ido creciendo conforme pasan los años. Sin
embargo, desde que se creó en 1985 ha sido de utilidad para infinidad de empresas. Este
programa se caracteriza por realizar cálculos importantes y básicos para el estudio de
una empresa o de algún resultado de investigación de datos, además de realizar gráficos
varios. Una de las funciones que llama la atención del programa es la de Desarrollador.
Por esto, en el curso de Algoritmos se proporciona conocimientos fundamentales sobre
programación, tales como el control de flujo de programas, la administración de
almacenamiento de datos y las estructuras de datos elementales. Además, se estudia la
importancia del desarrollador de Excel llamado Visual Basic for Applications (VBA),
promoviendo el análisis, entendimiento y aprendizaje del proceso de pensamiento
computacional a través de la traducción de problemas de ingeniería del entorno real a
problemas de computación. Asimismo, se busca contribuir al desarrollo de
competencias generales de Razonamiento cuantitativo y Pensamiento innovador.

El siguiente informe detalla nuestro proyecto final del curso, el cual se basa en
gestionar, organizar y mejorar los procesos de operación en el almacén de la empresa
BRRAO S.A.C. con la ayuda de una macro (Excel VBA). En este, procederemos a
ayudar con los informes de almacén de la empresa, también la distribución óptima de
insumos y materiales respecto con los proyectos programados durante un periodo de
tiempo que puedan dar soporte a los procesos funcionales que ayuden a las diferentes
actividades de la empresa y sobre todo a medir la eficiencia de las cotizaciones
comparando los gastos obtenidos en los proyectos en obra reales en comparación a lo
cotizado.

Se requiere la creación de la aplicación en VBA para poder llegar a obtener un almacén


debidamente gestionado, ya que se podrá estabilizar la producción con la demanda,
debido que intentará sincronizar las distintas carencias entre la fabricación y la
demanda. Por otro lado, se garantiza la oferta permanente de algunos productos. Lo que
se busca realizar con este proyecto es ordenar de una mejor manera el manejo del
almacén de productos para las operaciones de la empresa, manejando entradas y salidas
de los materiales. Y gestionar debidamente a los trabajadores asignados a cada proyecto.

3
1.1. DESCRIPCIÓN DE LA EMPRESA

BRRAO S.A.C., es una empresa fundada en 2008, dedicada a brindar Servicios de


Sistemas de Protección Contra Incendios, Sistema de Seguridad Electrónica, CCTV,
Intrusión e Integración de Sistemas, contamos con personal técnico altamente
calificado en diferentes áreas.

Su trabajo es reconocido por la excelente prestación de servicios en todo el Perú y


tratan de encontrar la mejor solución para nuestros clientes estando en constante
búsqueda y desarrollo de la última tecnología. Además, cuentan con profesionales
de amplia y reconocida experiencia en cada una de las áreas de la ingeniería
(Electricidad, Electrónica, Mecánica y Sistemas).

BRRAO S.A.C brinda los Servicios de Sistemas de Protección Contra Incendios,


Sistema de Seguridad Electrónica, CCTV, Intrusión e Integración de Sistemas:

A continuación, se presentan los servicios:

SISTEMA DE PROTECCIÓN CONTRA INCENDIOS:


Sistemas de Detección:

Son sistemas que se encargan de prevenir y anunciar cualquier indicio o señal de


Incendio, mediante el uso de equipos para la detección preventiva, tales como:
Detectores de Humo, Detectores de Calor, Activadores Manuales, Difusores de
Sonido, Señalizaciones, extintores manuales etc.

Con el uso de estos equipos, podemos adelantarnos a una situación de peligro y


tomar medidas oportunas para mantener a salvo tanto nuestras vidas, como nuestros
bienes.
Es importante tener en cuenta, que el uso de dispositivos de detección oportuna de
incendio, a salvado millones de vidas e innumerables bienes, por este motivo nos es
obligatorio recomendar a todos aquellos que estén interesados en ponerse en
resguardo, la importancia de contar con equipos de alta tecnología y rendimiento.

4
Sistema de Alarma de Incendio:

El sistema de alarma de incendio es el responsable de la información de todos los


usuarios afectados en un área particular de la inminente ocurrencia de un incendio o
en el mismo principio.

Por lo general, este sistema no es nada más domesticado y se compone de detectores


automáticos, basados en la detección de humo, llamas o calor, para las estaciones
manuales, basados en la observación de los derechos humanos de alarma contra
incendios principio posterior de enviar sus señales a un panel de control. Esta central
de alarme por una vez envía de alerta para dispositivos de señalización audiovisual
como e luces de emergencia. Este panel de control a su vez envía señales para
alertar a los dispositivos de señalización visual, tales como sirenas y luces de
emergencia

Sistemas de Extinción Sinorix:

Proporcionan a mejora perfecta para una extinción de incendios rápida e infalible.


En caso de que se produzca un incendio, el sistema de extinción automático
interviene de forma instantánea, con lo que el incendio se extingue rápidamente o se
sofoca en su inicio.

Descubre de forma inmediata la fuente del incendio y en la mayoría de los casos lo


señalan antes de que se desarrolle. Al mismo tiempo, la inteligencia incorporada en
el sistema garantiza a correcta evaluación del peligro y evita pérdidas de producción
por falsas alarmas.

Proporcionan a mejora perfecta para una extinción de incendios rápida e infalible.


En caso de que se produzca un incendio, el sistema de extinción automático
interviene de forma instantánea, con lo que el incendio se extingue rápidamente o se
sofoca en su inicio.

Sistemas de Extinción FM-200:

5
La base para la extinción de incendios de áreas críticas es el gas FM-200 es un
agente extintor limpio, seguro y aceptado por regulaciones ambientales, además
cumple con estándares de SOLUCIONES seguridad como UL, EPA y NFPA,
actualmente es considerado como a elección líder en el mercado. El Gas FM-200
actúa químicamente apagando el incendio a nivel molecular, inhibiendo la reacción
de la combustión

Sistema de Extinción por Espuma:

Los sistemas de extinción mediante espuma son sistemas fijos. Se usan para fuegos
de materiales sólidos y líquidos y, con ciertas restricciones, en incendios de
materiales gaseosos.

Para generar la espuma, la corriente de agua transcurre a través de diferentes


equipos dónde se mezcla adecuadamente con la sustancia que genera la espuma, la
espumogen. La combinación de agua y espuma concentrada es, casi siempre,
mezclada después con aire.

Este sistema se aplica en plantas de fabricación y de reparación, plantas de


almacenamiento en tanques, refinerías, aeropuertos, laboratorios, almacenes
químicos, tanques techo fijo, tanques techo flotante, cubetas de recogida de
derramamientos, cargadores, hangars, depósitos GLP, esferas GLP, etc.

Sistemas de Extinción por Agua:

Los sistemas de agua son los más difundidos, por ser el agua el agente extintor de
abundante disponibilidad y bajo costo económico.

Los sistemas de abastecimiento por agua poseen tres componentes básicos:

1. Fuente de alimentación de agua.

2. Sistema de impulsión.

3. Red general de incendios.

La red de suministro debe garantizar la presión y caudal necesarios para los casos de
máxima demanda por parte de los sistemas de extinción, ya sean instalaciones fijas

6
(BIEs, hidrantes), sistemas automáticos (rociadores) o medios humanos de extinción
(bomberos).

Red general de incendios: Se denomina así, a las conducciones que llevan el agua
desde las fuentes de alimentación hasta los medios de extinción.

SISTEMA DE SEGURIDAD ELECTRÓNICA.

SISTEMA CIRCUITO CERRADO DE TELEVISIÓN (CCTV):

Es una tecnología de videovigilancia visual diseñada para supervisar una diversidad


de ambientes y actividades.

Se le denomina circuito cerrado ya que, al contrario de lo que pasa con la difusión,


todos sus componentes están enlazados. Además, a diferencia de la televisión
convencional, este es un sistema pensado para un número limitado de espectadores.

El circuito puede estar compuesto, simplemente, por una o más cámaras de


vigilancia conectadas a uno o más monitores de vídeo o televisores, que reproducen
las imágenes capturadas por las cámaras. Aunque, para mejorar el sistema, se suelen
conectar directamente o enlazar por red otros componentes como vídeos o
computadoras.

Estos sistemas incluyen visión nocturna, operaciones asistidas por ordenador y


detección de movimiento, que facilita al sistema ponerse en estado de alerta cuando
algo se mueve delante de las cámaras. La claridad de las imágenes puede ser
excelente, se puede transformar de niveles oscuros a claros. Todas estas cualidades
hacen que el uso del CCTV haya crecido extraordinariamente en estos últimos años

Equipos análogos (Multiplexores, matrices, VCR y cámaras) y digitales (DVR,


cámaras IP, Domo Móvil, Cámaras Digitales, etc.) de las marcas más reconocidas
del Mercado tales como: Pelco, Bosch, Siemens, IDIS, Hunt, etc.

7
8
SISTEMA CONTROL DE ACCESO:

La función principal de un Sistema de Control de acceso es Controlar el Acceso a


áreas restringidas, y evitar así que personas no autorizadas o indeseables tengan
acceso a la empresa. Además de esta función principal, un Sistema de Control de
acceso se puede usar para controlar la asistencia del personal y tener un control

9
histórico de entradas de personas a todas las áreas (buscar sospechosos en caso de
algún incidente).

Trabajamos con las marcas más conocidas del Mercado como: Sipass SIEMENS,
Winpak Northern, American Automatrixs, Nexsentry, etc.

SISTEMA DE INTRUSIÓN:

Está destinado a la protección de personas y bienes, funcionan a través de sensores


de apertura instalados en puertas y ventanas, que, en conjunto con detectores de
movimiento y rayos perimetrales posicionados estratégicamente en la propiedad,
permiten asegurar su hogar, empresas e instalaciones.

Trabajamos con sistemas y dispositivos PACOM, DSC, ADEMCO, etc.

Clientes BRRAO S.A.C:

10
La empresa considera que sus clientes son su mejor aval y principal garantía. Por
ello, agradecen la confianza que les han brindado y que ha permitido que sean una
empresa sólida y de futuro.

Por intermedio de SIEMENS S.A.C realizamos trabajos para las siguientes


empresas:

 MINERA YANACOCHA S.R.L.


 SOCIEDAD MINERA CERRO VERDE S.A.A.
 SOUTHERN PERU COPPER CORPORATION SUCURSA L DEL PERÚ
 COMPAÑIA MINERA ANTAMINA S.A.C
 MINERA GOLD FIELDS PERÚ S.A.C
 TECHING S.A.
 PETRÓLEOS DEL PERÚ - PETRO PERÚ S.A.
 EMPRESA ELÉCTRICA DE PIURA S.A. (EEPSA).
 REPSOL YPF S.A.
 EDEGEL S.A.A.
 AMÉRICA MÓVIL PERÚ S.A.C.
 OCP ECUADOR S.A.
 HOTELES ORIENT EXPRESS.
 JW MARRIOTT HOTEL LIMA.

11
1.2. ANÁLISIS DEL SECTOR

Para el proyecto tiene importancia identificar los factores que influyen en el


macro y microentorno de la empresa BRRAO S.A.C.

MACROENTORNO
 Factor económico: Para la empresa es importante la estabilidad
económica del cliente, de ello depende el brindar un servicio con
más calidad que el estándar.
 Factor ecológico: La empresa ayuda a la ecología del planeta
tratando que el uso de gases tóxicos sea nulo.
 Factor político-legal: La empresa se encuentra inscrita como
Sociedad Anónima Cerrada con RUC N° 20491911116.
 Factor Tecnológico: La empresa está en constante innovación
para poder darle la mejor tecnología en brindar sus servicios.
 Factor Sociocultural: La empresa tiene una página web amigable,
donde nos explica algunos ámbitos de la empresa. Como los
servicios que brinda, las empresas con las que trabaja
actualmente, etc.

MICROENTORNO

- Competidores: La empresa tiene una alta competitividad, pues existen


varias empresas que se dedican a brindar el servicio de diferentes
sistemas. Estos sistemas son esenciales en todos los negocios y/o
empresas, tales como:

 FISA Perú

 Siemens

 Abb

 Fire&Mantto

12
 Westfire.

- Proveedores: En este caso los proveedores de la empresa son bastante


ágiles en cuanto a la entrega, pues apenas no hay stock de algún artículo
se lo hacen saber al proveedor y ellos rápidamente hacen llegar el
artículo. Pero a la vez el sistema del proveedor es bastante desordenado y
por esto trabajaremos para tener un mejor control de almacén.

- Clientes: La empresa tiene un gran número de clientes y son reconocidos


a nivel nacional y mundial, pero, a la vez, son pocos. El plan de la
empresa es seguir creciendo y tener un mayor número de clientes, es
decir, trabajar con empresas del mismo rubro de los actuales clientes. El
punto a favor es que los actuales clientes se encuentran a gusto con el
servicio brindado.

- Sustitutos: Los sistemas que instala la empresa no tienen sustitutos, pero


algunos clientes optan por no contratarlos debido a que creen que no es
necesario.

1.3. MISIÓN, VISIÓN Y VALORES

· Misión:

Brindar tranquilidad y confianza a nuestros clientes utilizando la mejor


tecnología, entregando soluciones de seguridad electrónica para
sostener nuestra cartera de clientes fieles y satisfechos, logrando el
bienestar social, económico y familiar de nuestros colaboradores.

· Visión:

Ser una empresa líder en ética, calidad, garantía e innovación con el fin
de superar las expectativas de nuestros clientes, con el personal
capacitado y adecuado a sus necesidades; contribuyendo al crecimiento
de su organización mediante soluciones eficaces, rentables y viables
para que nuestros clientes se sientan más seguros, protegidos e
informados acerca de la seguridad de sus patrimonios y la vida de las
personas.

13
Esto lo realizamos porque nos preocupa el tener lugares de trabajo y
vivienda con mayor seguridad ante los eventuales sucesos; como
incendios, robos e identificación de personal, que permitan mejorar la
seguridad y calidad de vida de nuestros clientes.

Valores:

● Honestidad
● Responsabilidad
● Puntualidad
● Disciplina
● Profesionalismo
● Vocación de servicio

ORGANIGRAMA EMPRESARIAL:

14
15
1.4. ANÁLISIS INTERNO

Para el análisis interno de la empresa se desarrollará una matriz FODA.

FORTALEZAS DEBILIDADES
- Cuentan con gran experiencia - La página web es un poco
en la instalación de servicios. anticuada.
- Amplio catálogo de servicios. - En la empresa no hay un
- Precios de acorde a la encargado del marketing
empresa a trabajar. online.
- Gastos de envío reducidos.
- Capacidad de inversión
OPORTUNIDADES AMENAZAS
- Existe alto volumen de - Existe mucha competencia en
potenciales clientes. el sector.
- Hay una tendencia creciente - La competencia también
en la búsqueda de brindar los cuenta con recorrida
servicios. experiencia.

16
- Se observa una mejora de la - Todavía hay falta de
situación económica. seguridad en los clientes a la
hora de optar por nuestros
servicios.
Fuentes: Elaboración Propia

2. MARCO TEÓRICO

2.1. DESCRIPCIÓN DEL PROYECTO

La empresa BRRAO S.A.C. encargada de brindar servicios de sistemas de protección


contra incendios, sistema de seguridad electrónica, CCTV, Intrusión e Integración de
sistemas, actualmente cuenta con dificultades en la gestión de almacenamiento de los
materiales. El proyecto que se llevará a cabo busca mejorar este proceso a través de un
algoritmo que permita implementar un sistema de control interno de almacenamiento,
este se encargará de gestionar la logística de entrada y salida de materiales, actualizar
los precios y registrar los materiales que presenten fallas. De esta manera, se espera
conseguir que la empresa optimice el proceso de almacenamiento y no se registren
pérdidas o fallas en los materiales para poder cumplir con las solicitudes de los
respectivos clientes.

2.2. PLANTEAMIENTO DE LA IDEA


La idea que se plantea es la creación de un programa por medio del
desarrollador propio de Excel que permita a los encargados de logística,
almacén y operaciones realizar un mejor control de los materiales y

17
herramientas destinadas a los diferentes proyectos a ejecutar. La empresa podrá
visualizar la disponibilidad de materiales y herramientas y solicitar las mismas
mediante la propuesta de macro que se les presentará. Asimismo, el programa
arrojará mensajes de error en caso se quiera solicitar un herramientas o
materiales que no se encuentren en almacén y realizará una comparación final
acerca de lo ganado o perdido por proyecto ejecutado.

2.3. CONTENIDO
El proyecto será elaborado en Excel, se contará con una base de datos del
inventario otorgado por la empresa donde se realizará la separación por
herramientas y materiales. Para realizar el programa en Excel, primero, se
tendrá que elaborar un pseudocódigo que permitirá tener una visión de lo que se
digitará en el VBA.
Este algoritmo contará con las estructuras aprendidas en las diversas unidades
del curso

Tipo de instrucciones Comando en


Visualización
selectivas VBA

Selectiva simple If – Then

Selectiva doble If – Then – Else

Selección Múltiple If – Then –


ElseIf - EndIf

18
Select case

Tipo de instrucciones Comando en


Visualización
repetitivas VBA

Do While -
Loop

Entrada controladas

For - Next

Salida controlada Do – Loop Until

19
En este proyecto también se hará uso de estructura de datos por medio de vectores y
matrices:

Tabla N°1

Tabla N°5

Estructura de datos Definición Visualización


Es un arreglo que agrupa
un conjunto de elementos
del mismo tipo bajo un
Vectores mismo nombre. Cada
elemento es identificado
por su ubicación dentro
del arreglo.
Es un arreglo de dos
dimensiones que agrupa
un conjunto de elementos
del mismo tipo bajo un
Matrices
mismo nombre. Cada
elemento es identificado
por su ubicación
en el arreglo.

Fuentes: Elaboración Propia

Además, se generarán subprogramas para la eficiencia del código:

Tabla N°6

Tipo de subprogramas Características Visualización

 Siempre devuelve un

Funciones valor como respuesta.

20
 Si hubiera uno o más
resultados, estos se
muestran dentro del
procedimiento.
 Para usar los
procedimientos se los
llama por su nombre.

Procedimientos  No pueden usarse


dentro de una
expresión (como
parte de una
 operación aritmética,
en una expresión
lógica, etc.)

Fuentes: Elaboración Propia

3. PROBLEMÁTICA:
3.1. IDENTIFICACIÒN DEL PROBLEMA

La empresa presenta las siguientes áreas dentro de su estructura de funcionamiento:


Operaciones, Administración, Recursos Humanos, Seguridad y Salud en el Trabajo,
Contabilidad y Logística siendo esta última la que reporta una mayor cantidad de
quejas acerca de su normal funcionamiento, para ser específicos el área de almacén.
Esta área no cuenta con una gestión adecuada de control interno y distribución
óptima de herramientas y materiales respecto a los proyectos programados durante
un periodo de trabajo. Ante ello se elaboró un diagrama de Pareto para representar la
problemática.

3.2. DEFINICION DEL PROBLEMA

La falta de un control adecuado dentro de un área tan importante para una empresa
como es la de almacén genera un déficit al momento de ejecución de un proyecto.
Las consecuencias conllevan a perdidas monetarias por mala gestión de
herramientas y materiales, sea por mayor o menor volumen de compra de lo que se

21
requería, perdida monetaria en materiales y/o herramientas por no ser costeados
dentro del proyecto.

3.3. ASPECTOS POR CONSIDERAR

Se considerará lo siguiente:

- Clasificación de elementos en el almacén.


- Lista de requerimiento por proyecto.
- Stock de almacén.
- Proveedores.
3.4. ETAPAS DE LA SOLUCIÒN
 Ingreso de datos:

En esta etapa se le solicitará el tipo de elemento de almacén a solicitar.

 Verificación de disponibilidad:

Con los datos ingresados, el algoritmo enunciara si los materiales requeridos se


encuentran en almacén.

 Advertencia de stock

En caso el requerimiento necesite más productos de los que haya en almacén, se


alertará de pedir compra inmediata a proveedor.

 Almacenamiento de los datos:

Los datos quedarán almacenados en la base de datos del programa.

 Mostrar los datos

Se le muestra una ventana de resumen de los datos de la reserva.

 Estado de pérdida o ganancia.


Según los datos de las cantidades utilizadas y los costos de estas, la macro nos
dará a conocer si fue favorable o no el proyecto para la empresa.
3.5. ALCANCE DEL PROYECTO
La aplicación del logaritmo será de uso exclusivo para la empresa para su
control interno. Asimismo, la aplicación gestionara la disponibilidad de
elementos en el almacén para la ejecución de proyectos según la base de datos
proporcionada por la empresa. No contemplará un análisis especifico de costeo

22
con datos reales para la elaboración del estado de ganancia o pérdida de
proyectos. Los costos serán referenciados mediante la función aleatorio de
Excel.

4. PLANTEAMIENTO DE LA SOLUCIÓN

4.1. OBJETIVOS:

Objetivo principal:

 Gestionar disponibilidad de materiales y herramientas dentro del almacén


para ejecución de proyecto.

Objetivos específicos:

 Clasificar los datos del almacén en una base de datos.


 Ejecutar entradas y salidas dentro del algoritmo.
 Comparar la ganancia o pérdida de la cantidad de proyectos a investigar.
 Informar mediante un reporte los proyectos
ACCIONES PARA LA SOLUCIÓN

Gestionar Buscar el Informar a


Tomar datos Validar datos
información mejor control logistica

Fuente: Elaboración Propia

ALTERNATIVAS VIABLES Y PERTINENTES


Dentro de las numerosas alternativas viables y pertinentes que pueden ser o no
más eficientes que la tomada como modelo de solución, se ha podido identificar
en este proyecto las siguientes alternativas viables y pertinentes:

23
 Implementar un kardex para un mejor control de inventarios.
 Etiquetar por códigos de barra los materiales y herramientas.
 Implementar un programa de desempeño para los cotizadores de
proyectos.
 Establecer una zona de stock de alta rotación con los materiales más
solicitados.

4.2. MODELOS
4.2.1. MODELO DE SOLUCION LOGICA
El aplicativo programado para la solución sigue una secuencia lógica que
permite llegar a una solución.

El procedimiento empleado será el siguiente:

Paso 1: Ingreso de datos (Primer Pseudocodigo)

En esta etapa será necesario que el usuario ingrese el tipo de elemento de


almacén solicitado. Se requiere tener la base de datos de almacén actualizada.

Paso 2: Disponibilidad 1

De acuerdo al tipo de material ingresado, el algoritmo se encargará de verificar


si se encuentra disponible y que sea mayor a cero

Paso 3: Seleccionar Caso

Se digitará el tipo de elemento apoyado del código de elemento asignad; se usará


un contador para los elementos.

Paso 4: Cantidades

Si los materiales requeridos son menores a las cantidades en almacén se


mostrará un mensaje de “solo contamos con” y si procede en aceptar con una
condición de Si o No

Paso 5: Advertencia de stock

Si el proyecto necesitara más productos de los disponibles en almacén, será


enviada una alerta solicitando una compra inmediata ala proveedor, teniendo en
cuenta los costos de materia prima.

24
Paso 6: Almacenamiento de los datos

Los datos ingresados por el usuario permanecerán almacenados en la base de


datos del programa

Paso 7: Mostrar los datos

Se mostrará una ventana de resumen con los datos oficiales de la reserva


realizada por el usuario

Paso 8: Asignación de Personal (Segundo Pseudocodigo)

El programa solicitará ingresar la cantidad de personal a cargo del proyecto.

Paso 9: Estado de pérdida o ganancia.

De acuerdo a los datos de las cantidades utilizadas y los costos de las mismas, la
macro nos mostrará si el proyecto es favorable para la empresa y nos mostrará el
porcentaje de diferencia entre los costos.

4.2.2. MODELO DE SOLUCION MATEMATICA


Costo materia prima = costo_mp + matriz materiales*cantid
Costo materia prima = costo_mp + matriz productos herramientas*cantid
Costo materia prima = costo_mp + matriz equipos almacen*cantid
Costo materia prima = costo_matprima + matriz accesorios ofic*cantid
Costo materia prima = costo_matprima + matriz equipos gerencia*cantid
Costo materia prima = costo matprima + matriz materiales mantto*cantid
Costo materia prima = costo matprima + matriz de productos
EPPS*cantid
Costo mano de obra = # de trabajadores * 1500
Costo total= costo indirecto +costo mano de obra + costo matprima
Porcentaje de excedido = ((costo real – costo total) / costo total)*100

4.2.3. EJEMPLO DE SOLUCION

4.2.4. ANALISIS DE DATOS DE ENTRADA, SALIDA E


INTERMEDIOS

25
seudocódigo: NuevoProyecto
Genera un nuevo código identificador de proyecto y limpia los posibles datos existentes.

DATOS DESCRIPCIÓN USO TIPO


Codigo_Proyecto Nuevo código de proyecto Entrada texto
Matriz_Proyecto(1000,4) Base de datos (matriz) de los Intermedi texto
proyectos o
Temporal Variable temporal para recorrer los Intermedi entero
proyectos registrados o
Cantidad Cantidad de proyectos registrados Intermedi entero
o
Item Variable temporal para recorrer los Intermedi entero
productos registrados en el último o
proyecto
Matriz_Productos_Proyecto(10, Base de datos (matriz) de productos Intermedi texto
5) del proyecto (anterior) o
Nuevo_Codigo_Proyecto Nuevo código de proyecto Salida texto

INICIO
Temporal = 2, Cantidad = 0, Codigo_Proyecto = "", Nuevo_Codigo_Proyecto =
""
Leer Matriz_Proyecto
Repetir
Temporal = Temporal + 1
Codigo_Proyecto = Matriz_Proyecto(Temporal,0)
Si Codigo_Proyecto = "" entonces
Terminar Repetir
Sino
Cantidad = Cantidad + 1
Fin de Si
Hasta Codigo_Proyecto = ""
Cantidad = Cantidad + 1
Nuevo_Codigo_Proyecto = "PROYECTO " & Cantidad
Mostrar Nuevo_Codigo_Proyecto

26
Leer Matriz_Productos_Proyecto
Para Item = 0 Hasta 10 Hacer
Matriz_Productos_Proyecto(Item, 0) = ""
Matriz_Productos_Proyecto(Item, 1) = ""
Matriz_Productos_Proyecto(Item, 2) = ""
Matriz_Productos_Proyecto(Item, 3) = ""
Matriz_Productos_Proyecto(Item, 4) = ""
Fin Para
FIN
seudocódigo: Función CalcularIngresos
Calcula la cantidad total de unidades de un producto que han ingresado al almacén.

DATOS DESCRIPCIÓN USO TIPO


Codigo Código de producto recibido como Entrada texto
parámetro
Codigo_Producto Código de producto Intermedio texto
Condicion Condición del movimiento Intermedio texto
Matriz_Movimientos(1000,6) Base de datos (matriz) de los Intermedio texto
movimientos de los productos
Auxiliar Variable temporal para recorrer los Intermedio entero
movimientos del almacén
Ingresos Acumulador de ingresos del producto Salida entero

INICIO
Codigo_Producto = "", Condicion = "", Auxiliar = 2, Ingresos = 0
Leer Codigo
Repetir
Codigo_Producto = Matriz_Movimientos(Auxiliar, 1)
Condicion = Matriz_Movimientos(Auxiliar, 3)
Si Codigo_Producto = Codigo y Condicion = "ENTRADA" entonces
Ingresos = Ingresos + Matriz_Movimientos(Auxiliar, 4)
Fin de Si
Auxiliar = Auxiliar + 1
Hasta Codigo_Producto = ""

27
Retornar Ingresos
FIN
seudocódigo: Función CalcularSalidas
Calcula la cantidad total de unidades de un producto que han salido del almacén.

DATOS DESCRIPCIÓN USO TIPO


Codigo Código de producto recibido como Entrada texto
parámetro
Codigo_Producto Código de producto Intermedio texto
Condicion Condición del movimiento Intermedio texto
Matriz_Movimientos(1000,6) Base de datos (matriz) de los Intermedio texto
movimientos de los productos
Auxiliar Variable temporal para recorrer los Intermedio entero
movimientos del almacén
Salidas Acumulador de salidas del producto Salida entero

INICIO
Codigo_Producto = "", Condicion = "", Auxiliar = 2, Salidas = 0
Leer Codigo
Repetir
Codigo_Producto = Matriz_Movimientos(Auxiliar, 1)
Condicion = Matriz_Movimientos(Auxiliar, 3)
Si Codigo_Producto = Codigo y Condicion = "SALIDA" entonces
Salidas = Salidas + Matriz_Movimientos(Auxiliar, 4)
Fin de Si
Auxiliar = Auxiliar + 1
Hasta Codigo_Producto = ""
Retornar Salidas
FIN
seudocódigo: Función ExisteProducto
Verifica si en el almacén se encuentra registrado un producto con determinado código.

DATOS DESCRIPCIÓN USO TIPO


Codigo Código de producto recibido como Entrada texto
parámetro
Codigo_Producto Código de producto Intermedio texto
28
Auxiliar Variable temporal para recorrer los Intermedio entero
productos del almacén
Matriz_Productos(1000,8) Base de datos (matriz) de los Intermedio texto
productos
Existe Variable que indica existe el producto Salida lógico

INICIO
Codigo_Producto = "", Auxiliar = 2, Existe = Falso
Leer Codigo
Repetir
Codigo_Producto = Matriz_Productos(Auxiliar, 0)
Si Codigo_Producto <> "" y Codigo_Producto = Codigo entonces
Existe = Verdadero
Fin de Si
Auxiliar = Auxiliar + 1
Hasta Codigo_Producto = "" o Existe = Verdadero
Retornar Existe
FIN

29
seudocódigo: Función ExisteStock
Verifica si en el almacén se cuenta con stock suficiente para un producto con
determinado código y cantidad.

DATOS DESCRIPCIÓN USO TIPO


Codigo Código de producto recibido como Entrada texto
parámetro
Cantidad Cantidad de producto recibida como Entrada entero
parámetro
Codigo_Producto Código de producto Intermedio texto
Cantidad_Producto Cantidad de producto Intermedio entero
Auxiliar Variable temporal para recorrer los Intermedio entero
productos del almacén
Matriz_Productos(1000,8) Base de datos (matriz) de los Intermedio texto
productos
Existe Variable que indica existe stock Salida lógico
suficiente para la cantidad solicitada
del producto

INICIO
Codigo_Producto="", Auxiliar=2, Cantidad_Producto=0, Existe=Falso
Leer Codigo, Cantidad
Repetir
Codigo_Producto = Matriz_Productos(Auxiliar, 0)
Cantidad_Producto = Matriz_Productos(Auxiliar, 5)
Si Codigo_Producto <> "" y Codigo_Producto = Codigo y
Cantidad_Producto >= Cantidad entonces
Existe = Verdadero
Fin de Si
Auxiliar = Auxiliar + 1
Hasta Codigo_Producto = "" o Existe = Verdadero
Retornar Existe
FIN

30
seudocódigo: Función ObtenerProducto
Obtiene el nombre de un producto con determinado código.

DATOS DESCRIPCIÓN USO TIPO


Codigo Código de producto recibido como Entrada texto
parámetro
Codigo_Producto Código de producto Intermedio texto
Auxiliar Variable temporal para recorrer los Intermedio entero
productos del almacén
Matriz_Productos(1000,8) Base de datos (matriz) de los Intermedio texto
productos
Nombre_Producto Nombre del producto Salida texto

INICIO
Codigo_Producto = "", Auxiliar = 2, Nombre_Producto = ""
Leer Codigo
Repetir
Codigo_Producto = Matriz_Productos(Auxiliar, 0)
Si Codigo_Producto <> "" y Codigo_Producto = Codigo entonces
Nombre_Producto = Matriz_Productos(Auxiliar, 1)
Fin de Si
Auxiliar = Auxiliar + 1
Hasta Codigo_Producto = "" o Nombre_Producto <> ""
Retornar Nombre_Producto
FIN

31
seudocódigo: Función ObtenerCostoProducto
Obtiene el nombre de un producto con determinado código.

DATOS DESCRIPCIÓN USO TIPO


Codigo Código de producto recibido como Entrada texto
parámetro
Codigo_Producto Código de producto Intermedio texto
Auxiliar Variable temporal para recorrer los Intermedio entero
productos del almacén
Matriz_Productos(1000,8) Base de datos (matriz) de los Intermedio texto
productos
Costo_Producto Costo unitario del producto Salida real

INICIO
Codigo_Producto = "", Auxiliar = 2, Costo_Producto = -1.0
Leer Codigo
Repetir
Codigo_Producto = Matriz_Productos(Auxiliar, 0)
Si Codigo_Producto <> "" y Codigo_Producto = Codigo entonces
Costo_Producto = Matriz_Productos(Auxiliar, 6)
Fin de Si
Auxiliar = Auxiliar + 1
Hasta Codigo_Producto = "" o Costo_Producto >= 0
Retornar Costo_Producto
FIN

32
seudocódigo: Función ActualizarStockProducto
Actualiza el stock de un producto con determinado código.

DATOS DESCRIPCIÓN USO TIPO


Codigo Código de producto recibido como Entrada texto
parámetro
Codigo_Producto Código de producto Intermedio texto
Auxiliar Variable temporal para recorrer los Intermedio entero
productos del almacén
Ingresos Cantidad total de ingresos del Intermedio entero
producto
Salidas Cantidad total de salidas del producto Intermedio entero
Matriz_Productos(1000,8) Base de datos (matriz) de los Intermedio texto
productos
Costo_Producto Costo unitario del producto Intermedio entero
INICIO
Codigo_Producto = "", Auxiliar = 2, Ingresos = 0, Salidas = 0, Costo_Producto
= 0.0
Leer Codigo
Repetir
Codigo_Producto = Matriz_Productos(Auxiliar, 0)
Si Codigo_Producto <> "" y Codigo_Producto = Codigo entonces
Ingresos = CalcularIngresos(Codigo)
Salidas = CalcularSalidas(Codigo)
Costo_Producto = Matriz_Productos(Auxiliar, 6)
Matriz_Productos(Auxiliar, 3) = Ingresos
Matriz_Productos(Auxiliar, 4) = Salidas
Matriz_Productos(Auxiliar, 5) = Ingresos - Salidas
Matriz_Productos(Auxiliar, 7) = (Ingresos – Salidas) *
Costo_Producto
Terminar Repetir
Fin de Si
Auxiliar = Auxiliar + 1
Hasta Codigo_Producto = "" o Costo_Producto >= 0
FIN

33
seudocódigo: Función AgregarProducto
Registra un producto al proyecto.

DATOS DESCRIPCIÓN USO TIPO


Codigo_Producto Código de producto cadena
Nombre_Producto Nombre del producto cadena
Existe_Producto Indica si existe o no el producto lógico
Existe_Stock Indica si existe stock para el lógico
producto
Cantidad_Producto Cantidad del producto entero
Temporal Variable temporal para recorrer los entero
productos del pedido.
Auxiliar Variable temporal para almacenar el Intermedi entero
índice de la fila donde se o
almacenará el producto
AuxiliarProyecto Variable temporal para almacenar el entero
índice de la fila donde se
almacenará el proyecto
AuxiliarReporte Variable temporal para almacenar el entero
índice de la fila donde se
almacenará el reporte
Costo_Producto Costo del producto real
Monto_Total Acumulador del monto total del real
proyecto
MayorCantidad Almacena la mayor cantidad de entero
productos del pedido
MayorCosto Almacena el mayor costo de real
productos del pedido
ProductoMayorCantidad Almacena el nombre del producto cadena
con mayor cantidad en el proyecto
ProductoMayorCosto Almacena el nombre del producto cadena
con mayor costo en el proyecto
Matriz_Productos_Proyecto(1000 Base de datos (matriz) de los
,5) productos del proyecto
Matriz_Proyectos(1000,4) Base de datos (matriz) de los
proyectos

INICIO

34
Codigo_Producto = "", Nombre_Producto = "", ProductoMayorCantidad = "",
ProductoMayorCosto = "", Existe_Producto = Falso, Existe_Stock = Falso,
Cantidad_Producto = 0, Auxiliar = 0, Temporal = 9, AuxiliarProyecto = 0,
AuxiliarReporte = 0, MayorCantidad = 0, Costo_Producto = 0.0, Monto_Total = 0.0,
MayorCosto = 0.0

Repetir
Si Matriz_Productos_Proyecto(Temporal, 0) = "" entonces
Auxiliar = Temporal
Fin de Si
Monto_Total = Monto_Total + Matriz_Productos_Proyecto(Temporal,4)
Temporal = Temporal + 1
Hasta Auxiliar > 0 o Temporal = 19

Temporal = 3
Repetir
Si Matriz_Proyectos(Temporal, 0) = "" entonces
AuxiliarProyecto = Temporal
Fin de Si
Temporal = Temporal + 1
Hasta AuxiliarProyecto > 0

Temporal = 3
Repetir
Si Matriz_Proyectos(Temporal, 9) = "" entonces
Si Auxiliar = 9 entonces
AuxiliarReporte = Temporal
Sino
AuxiliarReporte = Temporal – 1
Fin de Si
Terminar Repetir
Fin de Si

35
Temporal = Temporal + 1
Hasta AuxiliarReporte > 0

Si Auxiliar <> 0 entonces


Codigo_Producto = Matriz_Productos_Proyecto(4, 1)
Si Codigo_Producto = "" entonces
Mostrar "Ingrese un código de producto en la celda B4"
Terminar
Fin de Si

Existe_Producto = ExisteProducto(Codigo_Producto)
Si Existe_Producto = Verdadero entonces
Nombre_Producto = ObtenerProducto(Codigo_Producto)
Repetir
Mostrar "Ingrese la cantidad de " + Nombre_Producto +
":"
Leer Cantidad_Producto
Si Cantidad_Producto > 0 entonces
Existe_Stock = ExisteStock(Codigo_Producto,
Cantidad_Producto)
Si Existe_Stock = Falso entonces
Mostrar "No se cuenta con el stock
requerido. Ingrese una cantidad menor o ingrese otro producto"
Terminar
Sino
Costo_Producto =
ObtenerCostoProducto(Codigo_Producto)
Fin de Si
Fin de Si
Hasta Existe_Stock = Verdadero
Matriz_Productos_Proyecto(Auxiliar, 0) = Codigo_Producto
Matriz_Productos_Proyecto(Auxiliar, 1) = Nombre_Producto

36
Matriz_Productos_Proyecto(Auxiliar, 2) = Cantidad_Producto
Matriz_Productos_Proyecto(Auxiliar, 3) = Costo_Producto
Matriz_Productos_Proyecto(Auxiliar, 4) = Cantidad_Producto *
Costo_Producto
Matriz_Productos_Proyecto(19, 4) = Monto_Total +
Cantidad_Producto * Costo_Producto
Matriz_Productos_Proyecto(4, 1) = ""

Matriz_Proyectos(AuxiliarProyecto, 0) =
Matriz_Productos_Proyecto(7, 0)
Matriz_Proyectos(AuxiliarProyecto, 1) = Codigo_Producto
Matriz_Proyectos(AuxiliarProyecto, 2) = Nombre_Producto
Matriz_Proyectos(AuxiliarProyecto, 3) = Cantidad_Producto
Matriz_Proyectos(AuxiliarProyecto, 4) = Costo_Producto
Matriz_Proyectos(AuxiliarProyecto, 5) = Cantidad_Producto *
Costo_Producto

MayorCantidad = Matriz_Productos_Proyecto(9, 2)
ProductoMayorCantidad = Matriz_Productos_Proyecto(9, 0) + " –
" + Matriz_Productos_Proyecto(9, 1)
Para Item = 9 Hasta Auxiliar Hacer
Si Matriz_Productos_Proyecto(Item, 2) > MayorCantidad
entonces
MayorCantidad =
Matriz_Productos_Proyecto(Item, 2)
ProductoMayorCantidad =
Matriz_Productos_Proyecto(Item, 0)+ " – " +Matriz_Productos_Proyecto(Item, 1)
Fin de Si
Fin Para
Matriz_Productos_Proyecto(21, 2) = ProductoMayorCantidad

MayorCosto = Matriz_Productos_Proyecto(9, 4)
ProductoMayorCosto = Matriz_Productos_Proyecto(9, 0) + " – "
+ Matriz_Productos_Proyecto(9, 1)

37
Para Item = 9 Hasta Auxiliar Hacer
Si Matriz_Productos_Proyecto(Item, 4) > MayorCosto
entonces
MayorCosto = Matriz_Productos_Proyecto(Item,
4)
ProductoMayorCosto =
Matriz_Productos_Proyecto(Item, 0)+ " – " +Matriz_Productos_Proyecto(Item, 1)
Fin de Si
Fin Para
Matriz_Productos_Proyecto(22, 2) = ProductoMayorCosto
Matriz_Proyectos(AuxiliarReporte, 9) =
Matriz_Productos_Proyecto(7, 0)
Matriz_Proyectos(AuxiliarReporte, 10) = Monto_Total +
Cantidad_Producto * Costo_Producto
Sino
Mostrar "No se encontró el producto indicado. Verifique"
Fin de Si
Sino
Mostrar "Ya no se pueden ingresar más productos al proyecto"
Matriz_Productos_Proyecto(4, 1) = ""
Fin de Si
FIN
seudocódigo: Función ExisteProyecto
Verifica si se encuentra registrado un proyecto con determinado código.

DATOS DESCRIPCIÓN USO TIPO


Codigo Código de proyecto recibido como Entrada Entero
parámetro
Codigo_Proyecto Código de proyecto Intermedio texto
Auxiliar Variable temporal para recorrer los Intermedio entero
productos del almacén
Matriz_Proyectos(1000,4) Base de datos (matriz) de los Intermedio texto
proyectos
Existe Variable que indica si existe el Salida lógico
proyecto

38
INICIO
Codigo_Proyecto = "", Auxiliar = 2, Existe = Falso
Leer Codigo
Repetir
Codigo_Proyecto = Matriz_Proyectos(Auxiliar, 0)
Si Codigo_Proyecto <> "" y Codigo_Proyecto = "PROYECTO " &
Codigo entonces
Existe = Verdadero
Fin de Si
Auxiliar = Auxiliar + 1
Hasta Codigo_Proyecto = "" o Existe = Verdadero
Retornar Existe
FIN
seudocódigo: ActualizaStockAlmacen
Actualiza el stock de todos los productos registrados en el almacén

DATOS DESCRIPCIÓN USO TIPO


Codigo_Producto Código de producto intermedio texto
Auxiliar Variable temporal para recorrer los Intermedio entero
productos del almacén
Ingresos Cantidad total de ingresos del Intermedio entero
producto
Salidas Cantidad total de salidas del producto Intermedio entero
Matriz_Productos(1000,8) Base de datos (matriz) de los Intermedio texto
productos
Costo_Producto Costo unitario del producto Intermedio entero
INICIO
Codigo_Producto = "", Auxiliar = 2, Ingresos = 0, Salidas = 0, Costo_Producto
= 0.0
Repetir
Codigo_Producto = Matriz_Productos(Auxiliar, 0)
Si Codigo_Producto <> "" entonces
Ingresos = CalcularIngresos(Codigo_Producto)
Salidas = CalcularSalidas(Codigo_Producto)
Costo_Producto = Matriz_Productos(Auxiliar, 6)

39
Matriz_Productos(Auxiliar, 3) = Ingresos
Matriz_Productos(Auxiliar, 4) = Salidas
Matriz_Productos(Auxiliar, 5) = Ingresos - Salidas
Matriz_Productos(Auxiliar, 7) = (Ingresos – Salidas) *
Costo_Producto
Fin de Si
Auxiliar = Auxiliar + 1
Hasta Codigo_Producto = ""
FIN
seudocódigo: RegistrarMovimiento
Registra los movimientos de entrada y salida de los productos

DATOS DESCRIPCIÓN USO TIPO


Tipo_Movimiento Tipo de movimiento entrada texto
Codigo_Producto Código de producto entrada texto
Nombre_Producto Nombre del producto intermedio texto
Existe_Producto Indica si existe el producto intermedio lógico
Existe_Stock Indica si existe stock para el producto intermedio lógico
Cantidad_Producto Cantidad de producto entrada entero
Ultimo_Movimiento Último movimiento registrado intermedio entero
Codigo_Movimiento Código generado para el movimiento salida entero
que se va a registrar
Temporal Variable temporal que almacena el intermedio entero
código del último movimiento
Auxiliar Variable temporal para recorrer los intermedio entero
movimientos
Matriz_Movimientos(1000,5) Base de datos (matriz) de los Intermedio texto
movimientos registrados

INICIO
Tipo_Movimiento = "", Codigo_Producto = "", Nombre_Producto = "",
Existe_Producto = Falso, Existe_Stock = Falso, Cantidad_Producto = 0,
Ultimo_Movimiento = 0, Temporal = 0, Codigo_Movimiento = 0, Auxiliar = 1
Repetir
Temporal = Matriz_Movimientos(Auxiliar+1, 0)
Si Temporal <> "" entonces
Ultimo_Movimiento = Temporal

40
Fin de Si
Auxiliar = Auxiliar +1
Hasta Temporal = ""
Codigo_Movimiento = Ultimo_Movimiento + 1
Repetir
Mostrar "Ingrese el tipo de movimiento a registrar (ENTRADA O
SALIDA)"
Leer Tipo_Movimiento
Hasta Tipo_Movimiento = "ENTRADA" o Tipo_Movimiento = "SALIDA"

Repetir
Mostrar "Ingrese el código del producto"
Leer Codigo_Producto
Existe_Producto = ExisteProducto(Codigo_Producto)
Si Existe_Producto = Falso entonces
Mostrar "No se encontró el producto indicado. Verifique"
Fin de Si
Hasta Existe_Producto = Verdadero

Repetir
Mostrar "Ingrese la cantidad del producto"
Leer Cantidad_Producto
Si Tipo_Movimiento = "SALIDA" entonces
Existe_Stock = ExisteStock(Codigo_Producto,
Cantidad_Producto)
Si Existe_Stock = Falso
Mostrar "No se cuenta con el stock requerido. Urge
abastecer"
Fin de Si
Sino
Existe_Stock = Verdadero
Fin de Si
41
Hasta Existe_Stock = Verdadero

Nombre_Producto = ObtenerProducto(Codigo_Producto)

Matriz_Movimientos(Auxiliar, 0) = Codigo_Movimiento
Matriz_Movimientos(Auxiliar, 1) = Codigo_Producto
Matriz_Movimientos(Auxiliar, 2) = Nombre_Producto
Matriz_Movimientos(Auxiliar, 3) = Tipo_Movimiento
Matriz_Movimientos(Auxiliar, 4) = Cantidad_Producto
Matriz_Movimientos(Auxiliar, 5) = Fecha(Fecha_Sistema)

ActualizarStockProducto(Codigo_Producto)
FIN
seudocódigo: RegistrarGastoReal
Registra el gasto real de un proyecto y compara con el costo presupuestado para obtener
la condición de pérdida o ganancia.

DATOS DESCRIPCIÓN USO TIPO


Codigo_Proyecto Código de proyecto entrada texto
Nombre_Proyecto Nombre del proyecto intermedio texto
Auxiliar Variable temporal para recorrer la intermedio entero
matriz del proyecto
Matriz_Proyectos(1000,4) Base de datos (matriz) de los intermedio texto
proyectos
Existe_Proyecto Variable que indica si existe el intermedio lógico
proyecto
Costo_Proyecto Costo presupuestado del proyecto intermedio real
Gasto_Real Gasto real del proyecto entrada Real

INICIO
Codigo_Proyecto = "", Nombre_Proyecto = "", Existe_Proyecto = Falso,
Costo_Proyecto = 0.0, Gasto_Real = 0.0, Auxiliar = 2

Repetir
Mostrar "Ingrese el número del producto"

42
Leer Codigo_Proyecto
Existe_Proyecto = ExisteProyecto(Codigo_Proyecto)
Si Existe_Proyecto = Falso entonces
Mostrar "No se encontró el proyecto indicado. Verifique"
Fin de Si
Hasta Existe_Proyecto = Verdadero

Repetir
Si Matriz_Proyectos(Auxiliar, 9) = "PROYECTO " + Codigo_Proyecto
entonces
Nombre_Proyecto = Matriz_Proyectos(Auxiliar, 9)
Costo_Proyecto = Matriz_Proyectos(Auxiliar, 10)
Salir de Repetir
Fin de Si
Auxiliar = Auxiliar +1
Hasta Nombre_Proyecto <> ""

Repetir
Mostrar "Ingrese el gasto real para el " + Nombre_Proyecto + ":"
Leer Gasto_Real
Hasta Gasto_Real > 0

Matriz_Proyectos(Auxiliar, 12) = Gasto_Real


Si Gasto_Real = Costo_Proyecto entonces
Matriz_Proyectos(Auxiliar, 13) = "-"
Sino
Si Gasto_Real > Costo_Proyecto entonces
Matriz_Proyectos(Auxiliar, 13) = "PÉRDIDA"
Fin de Si
Si Gasto_Real < Costo_Proyecto entonces
Matriz_Proyectos(Auxiliar, 13) = "GANANCIA"

43
Fin de Si
Fin de Si
FIN
5. Implementación completa de la solución en Visual Basic para Aplicaciones
(VBA)

PRINCIPAL

Private Sub CommandButton1_Click() ' hay que usar un boton para limpiar todo

' *** GENERACIÓN DE NUEVO PROYECTO ***

' Genera el código identificador del siguiente proyecto

Dim Temporal, Cantidad As Integer

Dim Codigo_Proyecto, Nuevo_Codigo_Proyecto As String

Temporal = 2

Cantidad = 0

Do

Temporal = Temporal + 1

Codigo_Proyecto = Worksheets("PROYECTOS").Cells(Temporal, "J").Value

If Codigo_Proyecto = "" Then

Exit Do

Else

Cantidad = Cantidad + 1

End If

Loop Until Codigo_Proyecto = ""

Cantidad = Cantidad + 1

44
Nuevo_Codigo_Proyecto = "PROYECTO " & Cantidad

Worksheets("PRINCIPAL").Cells(7, "A").Value = Nuevo_Codigo_Proyecto

' Se limpian los posibles datos existentes de la hoja Principal

For Item = 0 To 10

Worksheets("PRINCIPAL").Cells(9 + Item, "A") = ""

Worksheets("PRINCIPAL").Cells(9 + Item, "B") = ""

Worksheets("PRINCIPAL").Cells(9 + Item, "C") = ""

Worksheets("PRINCIPAL").Cells(9 + Item, "D") = ""

Worksheets("PRINCIPAL").Cells(9 + Item, "E") = ""

Next Item

Worksheets("PRINCIPAL").Cells(19, "E") = 0

Worksheets("PRINCIPAL").Cells(4, "B") = ""

Worksheets("PRINCIPAL").Cells(21, "C") = ""

Worksheets("PRINCIPAL").Cells(22, "C") = ""

End Sub

PROYECTO

Private Sub RegistrarGastoRealButton_Click()

Dim Codigo_Proyecto, Nombre_Proyecto As String

Dim Existe_Proyecto As Boolean

Dim Costo_Proyecto, GastoReal As Double

Dim Indice, Auxiliar As Integer

45
Do

Codigo_Proyecto = InputBox("Ingrese el número del proyecto:")

Existe_Proyecto = Módulo1.ExisteProyecto(Codigo_Proyecto)

If Existe_Proyecto = False Then

MsgBox ("No se encontró el proyecto indicado. Verifique")

End If

Loop Until Existe_Proyecto = True

Dim Existe As Boolean 'boolean se usa para verdad o falsedad

Indice = 0

Auxiliar = 2

Do

If Worksheets("PROYECTOS").Cells(Auxiliar, "J").Value = "PROYECTO " &


Codigo_Proyecto Then

Nombre_Proyecto = Worksheets("PROYECTOS").Cells(Auxiliar, "J").Value

Costo_Proyecto = Worksheets("PROYECTOS").Cells(Auxiliar, "K").Value

Exit Do

End If

Auxiliar = Auxiliar + 1

Indice = Indice + 1

Loop Until Nombre_Proyecto <> ""

Do

GastoReal = InputBox("Ingrese el gasto real para el " & Nombre_Proyecto & ":")

46
Loop Until GastoReal > 0

Worksheets("PROYECTOS").Cells(Auxiliar, "M").Value = GastoReal

If GastoReal = Costo_Proyecto Then

Worksheets("PROYECTOS").Cells(Auxiliar, "M").Value = "-"

Else

If GastoReal > Costo_Proyecto Then

Worksheets("PROYECTOS").Cells(Auxiliar, "N").Value = "PÉRDIDA"

End If

If GastoReal < Costo_Proyecto Then

Worksheets("PROYECTOS").Cells(Auxiliar, "N").Value = "GANANCIA"

End If

End If

End Sub

PRODUCTOS

Private Sub ActualizarStockButton_Click()

Dim Codigo_Producto As String

Dim Indice, Auxiliar, Ingresos, Salidas As Integer

Dim Precio_Unitario As Double

Indice = 0

Auxiliar = 2

'jale de la hoja productos para el contador

Do

47
Codigo_Producto = Worksheets("PRODUCTOS").Cells(Auxiliar, "A").Value

If Codigo_Producto <> "" Then

Ingresos = Módulo1.CalcularIngresos(Codigo_Producto)

Salidas = Módulo1.CalcularSalidas(Codigo_Producto)

Precio_Unitario = Worksheets("PRODUCTOS").Cells(Auxiliar, "G").Value

Worksheets("PRODUCTOS").Cells(Auxiliar, "D").Value = Ingresos

Worksheets("PRODUCTOS").Cells(Auxiliar, "E").Value = Salidas

Worksheets("PRODUCTOS").Cells(Auxiliar, "F").Value = Ingresos - Salidas

Worksheets("PRODUCTOS").Cells(Auxiliar, "H").Value = (Ingresos - Salidas)


* Precio_Unitario

End If

Auxiliar = Auxiliar + 1

Indice = Indice + 1

Loop Until Codigo_Producto = ""

End Sub

ALMACÈN

Private Sub RegistrarMovimientoButton_Click()

Dim Tipo_Movimiento, Codigo_Producto, Nombre_Producto, Respuesta As String

Dim Existe_Producto, Existe_Stock As Boolean

Dim Cantidad_Producto, Ultimo_Movimiento, Temporal, Codigo_Movimiento As


Integer

Dim Auxiliar As Integer

48
Auxiliar = 1

Do

Temporal = Worksheets("ALMACÉN").Cells(Auxiliar + 1, "A").Value

If Temporal <> "" Then

Ultimo_Movimiento = Temporal

End If

Auxiliar = Auxiliar + 1

Loop Until Temporal = ""

Codigo_Movimiento = Ultimo_Movimiento + 1

Do

Tipo_Movimiento = InputBox("Ingrese el tipo de movimiento a registrar


(ENTRADA o SALIDA)")

Loop Until Tipo_Movimiento = "ENTRADA" Or Tipo_Movimiento = "SALIDA"

Do

Codigo_Producto = InputBox("Ingrese el código del producto")

Existe_Producto = Módulo1.ExisteProducto(Codigo_Producto)

If Existe_Producto = False Then

MsgBox ("No se encontró el producto indicado, verificar")

End If

Loop Until Existe_Producto = True

49
Do 'usen contadores

Cantidad_Producto = InputBox("Ingrese la cantidad del producto")

' Solo si es salida se verifica el stock

'aca enlazemos con la formula del modulo la de existe stock

If Tipo_Movimiento = "SALIDA" Then

Existe_Stock = Módulo1.ExisteStock(Codigo_Producto, Cantidad_Producto)

If Existe_Stock = False Then

MsgBox ("No se cuenta con el stock requerido. Urge abastecer")

End If

Else

' Para entradas

Existe_Stock = True

End If

Loop Until Existe_Stock = True

Nombre_Producto = Módulo1.ObtenerProducto(Codigo_Producto)

'asigenmos bien los nombres y no cambiemos los nombres de las hojas de calculo

Worksheets("ALMACÉN").Cells(Auxiliar, "A") = Codigo_Movimiento

Worksheets("ALMACÉN").Cells(Auxiliar, "B") = Codigo_Producto

Worksheets("ALMACÉN").Cells(Auxiliar, "C") = Nombre_Producto

Worksheets("ALMACÉN").Cells(Auxiliar, "D") = Tipo_Movimiento

Worksheets("ALMACÉN").Cells(Auxiliar, "E") = Cantidad_Producto

50
Worksheets("ALMACÉN").Cells(Auxiliar, "F") = DateValue(Now)

Módulo1.ActualizarStockProducto (Codigo_Producto)

End Sub

7. Conclusiones y Recomendaciones

 Se logró clasificar las herramientas disponibles en el almacén por cada categoría


de estas. Así será mucho más sencillo el manejo del almacén y se podrá tener
una noción de cuando sea necesario comprar más de estas.
 Implementamos el sistema de devoluciones, esto en el caso de que alguna
herramienta o material no sea necesario o reste del servicio brindado. De esta
manera se tendrá una entrada y salida más controlada de las herramientas y
materiales.
 Nuestra finalidad es facilitar la realización de los cálculos que genera el modelo,
además de poder obtener un control mediante la administración de las entradas y
salidas,
 Se recomienda a la empresa mantener el control estricto de las herramientas y
materiales para que el mal manejo no genere pérdidas en la empresa.
 También recomendamos registrar siempre a tiempo las devoluciones y
solicitudes, pues si no se hace de este modo puede generar desorden dentro del
control y conlleva a una mala verificación de inventarios. Debido a que el
algoritmo no modifica automáticamente el sotck desde el reporte de proyecto.
 Recomendamos llevar claramente la lista de trabajadores para cada servicio de
instalación de sistemas. Si no es así, se puede llegar a pagar horas extras sin ser
merecidas.
 Con el diagrama propuesto se espera un buen manejo de la misma entre los
trabajadores, siempre que sea llevado a cabo en el área de almacén en el
momento de generar pedidos, para que no existan cancelaciones de pedidos en
exceso. Además, la comunicación entre los departamentos de compras y
almacén para garantizar el funcionamiento óptimo de la cadena de suministro.

51
8. Bibliografía

 -.(2014). Manual básico para empezar a trabajar con macros de Visual Basic
para Excel. Universidad Politécnica de Valencia. Recuperado de:
http://personales.upv.es/jpgarcia/linkeddocuments/macrosvisualbasicparaexcel.
pdf
 Acosta, P. (2010). MS Excel 2007 con Programación de Macros en Visual
Basic Application. Universidad Jaime I. Recuperado de:
https://www3.uji.es/~berbel/Visual%20Basic/Manuales/Excelvbaplication
%202010.pdf
 Acosta, N. y Acosta, T. (2015). Introducción a la programación en Excel con
Visul Basic Application. Escuela Politécnica Nacional. Recuperado de:
https://bibdigital.epn.edu.ec/bitstream/15000/11934/1/Introducci%C3%B3n
%20en%20Excel%20con%20VBA.pdf
 Gonzalez, J. [Excel y Más]. (2014, Mayo 7). Gestor de Inventarios Parte 1 |
Instrucción For... Next | VBA Excel 2013 #22. [Archivo de video]. Recuperado
de: https://www.youtube.com/watch?v=dfi50tONKpo&feature=youtu.be
 Olvera González, G. P., Sánchez Y Torres, M. (2004). Reducción de quejas
mediante el control de inventarios y mejora en el flujo de información.
Universidad de las Américas Puebla. Recuperado de:
http://catarina.udlap.mx/u_dl_a/tales/documentos/lii/olvera_g_gp/

9. Apéndices y/o anexos

 Sitio web: www.brrao,com


1. Imagen de la mayoría de clientes con los que trabaja la empresa.

52
2. Trabajadores instalando los servicios que brinda la empresa.

3. Foto de un operario trabajando para instalar un servicio contra


incendios

ENLACES:

BIBLIOGRAFIA USADA PARA ALGORITMOS


 Funcion Boolean para dos tipos de datos si o no 1 o 0
https://www.youtube.com/watch?v=lRuG_i1hKU0
 https://www.youtube.com/watch?v=079NTwQmt9M
 Funciones worksheet https://www.youtube.com/watch?v=haakNzJe1pM
 Instrucciones selectivas https://www.youtube.com/watch?
v=dfi50tONKpo&t=526s
 Registro de Producto https://www.youtube.com/watch?v=fx3WR5Tnbpk
 Gestor de Inventarios Instrucción For and next https://www.youtube.com/watch?
v=dfi50tONKpo&list=PLFNWPvtjBMjubtQZtdNari34ZMyM44aqo
 Validacion Registro Repetitivo https://www.youtube.com/watch?
v=WodcbIRQWgE&list=PLFNWPvtjBMjubtQZtdNari34ZMyM44aqo&index=
2
 Comando sort (para ordenar columnas) https://www.youtube.com/watch?
v=L7C_sKIfG_o

53
 Información de la empresa

54

También podría gustarte