# Programación de Ingeniería Mecánica UPB (1320 08)
## Integrantes

Escriba aquí una lista con el nombre de los integrantes y el nombre del pregrado que está cursando.
* Carlos Mesa. Ing Mecánica
* John Walton. Ing Mecánica

## Resumen

En este trabajo encontrará una herramienta creada con el fin de facilitar el control de inventarios de producto terminado y materias primas, a partir del ingreso de un pedido de venta en una interfaz gráfica, donde el usuario dependiendo de la necesidad, puede definir las referencias y cantidades del pedido de venta; paso seguido, el programa evalúa la existencia de producto terminado y materias primas disponible en los inventarios, de acuerdo a esta disponibilidad ordena la compra de materia prima, la orden de producción y la orden de venta de dicho pedido.

## Introducción

Actualmente las empresas manufactureras en sus actividades mercantiles se ven en la necesidad de llevar controles eficientes y en tiempo real de sus inventarios de materias primas y productos terminados involucrados en todo proceso de manufactura. Estos inventarios deben ser controlados y manipulados de forma eficiente a partir de unas necesidades de ventas y producción dictaminadas por la demanda del mercado.
En la ciudad de Medellín actualmente existe una empresa dedicada a la innovación en el mercado de las bebidas, la cual se encuentra en su etapa inicial de apertura de mercado; los productos fabricados por dicha empresa han tenido una excelente aceptación, lo que la ha obligado a buscar algún tipo de software para el control y manejo de inventarios.
A partir de esta necesidad se ha creado un programa que controla los inventarios de materias primas y productos terminados relacionados entre sí con los procesos de venta y producción.

## Marco teórico

Dentro del portafolio de venta, se manejan 4 referencias de producto:
| Producto 1 | Producto 2 | Producto 3 | Producto 4 |
En materia prima (MP) se mantiene un control de 3 tipos de materiales, MP1, MP2 y MP3, con los que se fabrican las referencias y las formulaciones de cada producto según las cantidades Xn, Yn y Zn, como lo indica la tabla:
| Referencia | Formulación |
| Producto 1 | X1*MP1 + Y1*MP2 + Z1*MP3 |
| Producto 2 | X2*MP1 + Y2*MP2 + Z2*MP3 |
| Producto 3 | X3*MP1 + Y3*MP2 + Z3*MP3 |
| Producto 4 | X4*MP1 + Y4*MP2 + Z4*MP3 |
Dado que el programa asegura que luego de realizar el pedido se mantenga una cantidad mínima en inventarios, tanto de producto terminado como de materia prima, los cálculos considerados para garantizar ésto, son:
Para el caso de stock mínimo N de producto terminado:
    Si la cantidad del pedido de venta (PV) es menor o igual a la cantidad de producto terminado (PT)
       el programa ordena producir PV
    de lo contrario
       el programa ordena producir PV - PT + N
Para el caso de stock mínimo M de materia prima (MP); según la referencia del producto, por cada elemento a producir se usará una cantidad de materia prima Xn*MP1 + Yn*MP2 + Zn*MP3, por lo que:
    Si la cantidad del pedido de venta (PV) es menor o igual a la cantidad de producto terminado (PT)
       se ordena producir una cantidad PV de producto, lo que conlleva a un gasto de MP igual a PV*(Xn*MP1 + Yn*MP2 + Zn*MP3)
       y se genera una orden de compra de MP igual a dicha cantidad para mantener el stock mínimo.
    de lo contrario
       se ordena producir una cantidad Q = PV - PT + N, que implica un gasto de MP igual a Q*(Xn*MP1 + Yn*MP2 + Zn*MP3)
       y se genera una orden de compra de MP igual a dicha cantidad.
Para mostrar el cálculo del consumo de materia prima, hemos establecido las formulaciones para cada referencia de la siguiente manera:
* Producto 1 = 3*MP1 + 2*MP2
* Producto 2 = 1*MP1 + 4*MP3
* Producto 3 = 4*MP2 + 1*MP3
* Producto 4 = 2*MP3 + 3*MP1
Se observa que cada producto requiere el uso de 5 partes de MP, debido a que las 4 referencias tienen un envase con un volumen estándar. Por ejemplo, para producir una unidad de producto 1, 3/5 partes corresponden a MP1 y 2/5 partes a MP2. Por consiguiente, si deseo producir PV o Q unidades de producto 1, se consumen Q o PV veces (3*MP1 + 2*MP2)/5.
El consumo total de cierta materia prima será la suma de cuánto de dicha MP estoy requiriendo para producir todos los productos.
No obstante, la formulación y el número de materias primas involucradas puede definirse según las necesidades del usuario o empresa.

## Diseño de la solución

Para el diseño de la solución se partió de la creación de una interfaz gráfica donde pudiera suministrarse una necesidad de mercado. A partir de dicha necesidad suministrada por medio de un pedido de venta, el programa se basa en la comparación de existencias disponibles entre diferentes bases de datos como pedidos de venta, productos terminados y materias primas; y con esto, poder tomar decisiones como la de ordenar el despacho del pedido en caso de estar disponible o su producción total o parcial en caso de ser necesario.
A continuación se presenta los diagramas de flujo que obedecen al funcionamiento del programa:
* Control de Inventario
* Subproceso: Producción
* Subproceso: Compra de Materia Prima

## Descripción del programa

Este programa por medio de una interfaz gráfica permite a un funcionario de la empresa ingresar y crear los pedidos de venta. Después de seleccionadas las referencias de producto y cantidades, el programa muestra en la interfaz los subtotales relacionados a cada referencia escogida y el total general del pedido realizado, creando un archivo en Excel llamado pedidos de venta; a continuación, el programa evalúa la disponibilidad de producto terminado en un archivo ya existente llamado producto terminado, para suplir dicho pedido; si la disponibilidad de producto terminado es mayor o igual a la necesidad de venta, el programa genera una orden de pedido para su posterior despacho al cliente y a la vez genera una orden de producción de las unidades de producto despachadas para garantizar el stock mínimo de producto terminado; este paso anterior crea dos archivos en Excel, uno con el nombre orden de pedido y otro llamado orden de producción.
En caso de que el producto terminado sea inferior al pedido de venta, el programa generara una orden de producción que satisfaga las unidades de producto faltante y las unidades que garanticen los niveles de stock mínimo estipulados por la empresa, seguido a esto, el programa actualiza la base de datos llamada orden de producción; completado este proceso el programa genera la orden de venta para su posterior despacho al cliente, actualizando la base de datos de orden de venta.
Al momento de generarse la orden de producción, el programa evalúa en un archivo de Excel ya existente llamado materia prima las cantidades de materias primas requeridas, en caso de que la existencia de materias primas sea mayor o igual a la necesidad, se le da continuidad a dicha orden de producción; en caso de que la existencia de materias primas sea inferior a las cantidades requeridas, el programa generara una orden de compra para satisfacer dichos requerimientos, almacenando esta orden de compra en un archivo en Excel con este mismo nombre; luego al disponer de las compras de materias primas el programa da continuidad a los procesos de producción y venta. Finalmente se actualizan las bases de datos involucradas, dejando las bases de datos de pedidos de venta y producción en ceros y la base de datos de orden de pedido, con las unidades del pedido despachado.

### Manual de operación

Cuando el funcionario se enfrenta con la interfaz gráfica debe seguir la siguiente lógica:
* Escoger las referencias de productos según la necesidad de venta.
* Escoger la cantidad de producto relacionada a cada referencia.
* En caso de arrepentirse de las referencias y cantidades seleccionadas puede cambiar lo seleccionado por alguna de las otras opciones.
* En caso de necesitar borrar las cantidades y referencias seleccionadas se puede pulsar el botón de CANCELAR PEDIDO.
* En caso de necesitar salir y cerrar la interfaz, debe pulsar el botón SALIR
* En caso de tener el pedido definido, debe hacer clic en la opción REALIZAR PEDIDO.
* El programa mostrará un mensaje con las cantidades de producto que se producirán, pulse Ok.
* Luego mostrara un mensaje con la cantidad de materia prima que se usará durante la producción, pulse Ok.
* Posteriormente aparecerá un mensaje con la cantidad de materia prima que se debe comprar para suplir las necesidades de producción y stock mínimo, pulse Ok.
* Finalmente, el programa mostrará un mensaje donde, al pulsar Ok, mandará la orden de producción.

## Resultados

El programa arroja como resultados durante su operación una interfaz gráfica con un pedido solicitado y un conjunto de tablas y bases de datos mostradas a continuación.
* Interfaz gráfica con el pedido solicitado:
* Tabla pedido de venta
* Orden de producción
* Orden de compra de materia prima
* Tabla orden de venta
* Pedido de Venta GUI
* Mensaje orden de producción
* Mensaje gasto MP

## Conclusiones y trabajo futuro

Después de la elaboración de este trabajo, se puede concluir que:
* Con la implementación de este tipo de programas se facilita el control y manejo de inventarios, como se vio en este caso con inventarios de producto terminado y materias primas a partir de un pedido de venta.
* Una interfaz gráfica como la implementada en este programa puede llegar a ser muy útil, facilitando la interacción entre usuario y sistema.
* Es importante mantener stocks mínimos adecuados en los inventarios, para así garantizar producto terminado disponible para la venta y materia prima existente para el proceso de producción.

##### Trabajo futuro:

El programa permite realizar mejoras sobre éste, con el fin de optimizar los procesos; por ejemplo se podría buscar que el programa almacene en un archivo permanente un historial de los movimientos de inventarios, así como de los pedidos recibidos, las órdenes de venta y compra de materias primas.
También podría ser ampliado el número de productos y materias primas involucradas; además las formulaciones para producción de los productos podrían ser modificadas.