156
INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y ADMINISTRATIVAS “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA PLANTA ENSAMBLADORA DE BICICLETAST E S I S QUE PARA OBTENER EL TÍTULO DE: INGENI ERO INFORM ÁT IC A P R E S E N T A N : J OSE ALFREDO CARBAJAL SANTILLA N DANIEL VILLANUEVA MARTINEZ VALL E QUE PARA OBTENER EL TÍTULO DE: LICENCIADO EN ADMINISTRACIÓN INDUSTRIAL P R E S E N T A N : JESUS DANIEL GALICIA CASTREJÓN MARIA MAGDALENA ROJAS LOZANO QUE PARA OBTENER EL TÍTULO DE: LICENCIADO EN CIENCIAS DE LA INFORMÁTICA P R E S E N T A : JUAN ANTONIO GONZALEZ ROMERO MÉXICO. DF 2010

“REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

INSTITUTO POLITÉCNICO NACIONAL

UNIDAD PROFESIONAL INTERDISCIPLINARIA DE INGENIERÍA Y CIENCIAS SOCIALES Y

ADMINISTRATIVAS

“REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA PLANTA ENSAMBLADORA DE BICICLETAS”

T E S I S

Q U E P A R A O B T E N E R E L T Í T U L O D E : I N G E N I E R O I N F O R M Á T I C A

P R E S E N T A N : J O S E A L F R E D O C A R B A J A L S A N T I L L A N D A N I E L V I L L A N U E V A M A R T I N E Z V A L L E

Q U E P A R A O B T E N E R E L T Í T U L O D E :

LICENCIADO EN ADMINISTRACIÓN INDUSTRIAL

P R E S E N T A N :

J E S U S D A N I E L G A L I C I A C A S T R E J Ó N

M A R I A M A G D A L E N A R O J A S L O Z A N O

Q U E P A R A O B T E N E R E L T Í T U L O D E :

LICENCIADO EN CIENCIAS DE LA INFORMÁTICA

P R E S E N T A :

J U A N A N T O N I O G O N Z A L E Z R O M E R O

MÉXICO. DF 2010 2009

Page 2: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

ÍNDICE.

RESUMEN i

INTRODUCCIÓN ii

CAPÍTULO I MARCO TEÓRICO.

1.1 LA ADMINISTRACIÓN DE LAS EMPRESAS. 1

1.1.1 PLANEACIÓN. 1

1.1.2 ORGANIZACIÓN 1

1.1.3 DIRECCIÓN. 2

1.1.4 CONTROL. 2

1.2 FUNCIONES BÁSICAS DE LA EMPRESA. 2

1.3 LA PLANEACIÓN DE LA PRODUCCIÓN. 6

1.3.1 LAS ESTRATEGIAS DE LA PLANEACIÓN. 9

1.3.2 EL CONTROL DE LA PLANEACIÓN 10

1.3.3 PRINCIPIOS PARA LA IMPLEMENTACIÓN DEL CONTROL. 11

1.3.4 CARACTERÍSTICAS DEL CONTROL. 12

1.3.5 EL CICLO DEL CONTROL. 13

1.3.6 TIPOS DE INVENTARIOS. 14

1.3.7 EL CONTROL DE INVENTARIOS. 15

1.3.8 COSTOS DE PRODUCIR. 16

1.3.9 COSTOS DE LOS INVENTARIOS. 16

1.3.10 DESCUENTOS EN LOS INVENTARIOS. 17

1.3.11 INVENTARIOS ESTOCÁSTICOS. 18

1.3.12 MODELO PROBABILÍSTICO DE CANTIDAD DE ORDEN

VARIABLE CICLO FIJO. 18

1.3.13 MODELO PROBABILÍSTICO DE ORDEN FIJA CICLO VARIABLE 20

1.4 LA TOMA DE DECISIONES. 21

1.4.1 DECISIONES PROGRAMADAS. 22

1.4.2 DECISIONES NO PROGRAMADAS. 23

1.4.3 PANORAMAS DE DECISIÓN 23

1.4.4 CERTEZA 23

1.4.5 INCERTIDUMBRE. 24

Page 3: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

1.4.6 PROCESO PARA LA TOMA DE DECISIONES. 24

1.4.7 IDENTIFICAR Y ANALIZAR ELPROBLEMA. 24

1.4.8 CRITERIOS DE DECISIÓN. 25

1.4.9 GENERACIÓN DE ALTERNATIVAS. 25

1.4.10 EVALUACIÓN DE LAS ALTERNATIVAS. 26

1.4.11 SELECCIÓN DE LA ALTERNATIVA. 26

1.4.12 IMPLEMENTACIÓN DE LA DECISIÓN. 26

1.4.13 EVALUACIÓN DE LOS RESULTADOS. 26

1.4.14 LA INFORMÁTICA EN LA TOMA DE DECISIONES. 27

1.4.15 LA TOMA DE DECISIONES Y LA EMPRESA. 27

1.4.16 BARRERAS PARA LA TOMA DE DECISIONES. 27

1.4.17 CUALIDADES PERSONALES PARA LA TOMA DE DECISIONES. 29

1.5 EL MANEJO DE LA INFORMACIÓN. 30

1.5.1 LA INFORMACIÓN Y LA COMPETITIVIDAD. 30

1.5.2 LOS SISTEMAS DE INFORMACIÓN. 31

1.5.3 CICLO DE VIDA DEL SOFTWARE. 33

1.5.4 ETAPAS DEL DESARROLLO DE SOFTWARE. 33

1.6 ENTORNOS DE PROGRAMACIÓN. 34

1.6.1 PROGRAMACIÓN ORIENTADA A OBJETOS. 35

1.6.2 JAVA. 38

1.6.3 JAVA Y LA BASE DE DATOS. 42

1.7 DISEÑO DE BASES DE DATOS. 44

1.7.1 BASES DE DATOS 44

1.7.2 SISTEMAS GENERADORES DE BASES DE DATOS. 45

CAPITULO II DATOS GENERALES DE LA EMPRESA.

2.1 EL UMBRAL DE LA EMPRESA. 46

2.2 ORGANIGRAMA DE LA EMPRESA. 46

2.3 FUNCIONES DE LA ORGANIZACIÓN DE LA EMPRESA. 47

2.4 LOCALIZACIÓN GEOGRÁFICA DE LA PLANTA.. 48

Page 4: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

CAPITULO III ACTIVIDADES DE LA EMPRESA.

3.1 NUESTROS PROCESOS. 49

3.1.1 HISTORIA DE LAS BICICLETAS. 49

3.1.2 CLASIFICACIÓN GENERAL DE LAS BICICLETAS. 51

3.1.2.1 BICICLETA PLEGABLE 54

3.2 DIAGRAMA DE PROCESO DEL ENSAMBLADO. 56

CAPÍTULO IV PROPUESTA DE SOLUCIÓN.

4.1 REPORTEADOR DEL PROCESO. 62

4.2 DISEÑO 63

4.2.1 DIAGRAMAS DE FLUJO DE DATOS LÓGICOS Y FÍSICOS 63

4.2.2 DIAGRAMAS UML 65

4.2.3 DIAGRAMA ENTIDAD RELACIÓN 67

4.2.4 DISEÑO DE INTERFAZ GRAFICA DEL USUARIO 68

4.2.5 DISEÑO DE SALIDA/ENTRADA DE DATOS EN PANTALLA 72

4.3 CODIFICACIÓN O DESARROLLO 74

4.3.1 ARQUITECTURA PROPUESTA DEL SISTEMA 74

4.3.2 ARQUITECTURA DE LA BD 77

4.4 PRUEBAS. 78

4.5 IMPLEMENTACIÓN. 78

4.6 CÓDIGO FUENTE. 79

CONCLUSIONES 146

BIBLIOGRAFÍA 148

ANEXOS 149

Page 5: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

i

RESUMEN.

En los últimos años en nuestro país, la bicicleta se ha considerada más como un juguete que como

un medio de transporte, a excepción de las zonas rurales más apartadas del centro del país, en

donde todavía se considera este equipo como un medio importante para el transporte de

mercancías y de personas en sus diferentes modelos y medidas, pero el principal mercado es en la

actualidad es el de los niños y los adolecentes, ya que por sus características propias de la edad la

inquietud y el deseo de movimiento los hacen el mercado ideal para este tipo de producto, que a

través de los años ha sufrido modificaciones que lo hacen cada vez más atractivo para ellos,

aunado a esto el panorama económico nacional es de por si deprimente, con el alza de impuestos

para el año 2010, se prevé que se frene la inversión en varias industrias del sector empresarial

privado, lo que traerá a un muy corto plazo una feroz competencia por los mercados ya

establecidos.

Y es en este escenario en el que nuestra empresa se tiene que desarrollar, crecer y seguir

manteniendo el lugar que después de tantos años de operaciones ha obtenido dentro de los gustos

y preferencias del cliente, ahora para auxiliarnos en esta tarea hemos diseñado una herramienta

que nos proporcionará la información necesaria para una adecuada toma de decisiones por medio

del uso de tecnologías de información vanguardistas, esto es; por medio de una aplicación web

vamos poder conocer la información referente a el estado de el almacén de la organización, los

niveles de producción y las necesidades de material a un muy corto futuro, de hecho al mismo

tiempo que se realice un pedido el sistema nos va a reportar si contamos con los materiales

adecuados y completos para surtir el pedido o por el contrario si nos va a hacer falta algún insumo,

este reportador pretende solucionar las incertidumbres que cada año se presentan en un mercado

que es cíclico, o sea que en determinadas temporadas crece en su demanda, después de analizar

el panorama económico se vuelve todo un riesgo el invertir en un producto que a lo largo del

tiempo no se tiene la certeza de que se vaya a vender o hasta cuando se vaya a vender, lo que

conlleva en una serie de costos como los de la administración de los recursos financieros, la propia

materia prima, el almacenaje, la infraestructura, el embalaje, los espacios necesarios, el personal,

los equipos para transportar carga, y toda una serie de características que debe de satisfacer

nuestra empresa para poder seguir brindando un servicio de calidad a nuestros clientes en tiempo

y forma, siendo este el principal objetivo a alcanzar hemos puesto todo nuestro empeño y

dedicación para la consecución de este fin esperando que esto sea solo el comienzo del desarrollo

web para las empresas mexicanas que se atreven a incursionar en estas nuevas formas de hacer

negocios.

Page 6: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

ii

INTRODUCCION.

LA GLOBALIZACIÓN DE LOS MERCADOS

El mundo esta cambiando, y esto se debe en gran parte a las nuevas relaciones comerciales,

políticas y sociales de los países, y a que cada vez estos son más independientes los unos de los

otros, todo esto es producto de los descubrimientos científicos y tecnológicos que ha logrado la

humanidad en períodos de tiempo tan relativamente cortos, a este fenómeno le hemos

denominado “globalización”, y en esencia se refiere a la reducción de las barreras al intercambio

comercial y al flujo libre de capitales entre las naciones, y que como resultado, se obtiene un

aumento en el intercambio internacional de bienes y servicios, así como un mayor flujo de capital

entre las fronteras.

"Una poderosa fuerza está conduciendo al mundo hacia una comunidad única y convergente, esta

fuerza es la tecnología. Ha proletarizado la comunicación, el transporte y los viajes, haciéndose

accesible, por su facilidad y menor costo, a los lugares más aislados y para las multitudes más

pobres del mundo. Casi todas las personas, en todas partes, desean las cosas de las que han oído

hablar, que han visto o han experimentado a través de los nuevos medios tecnológicos que

impulsan sus necesidades y deseos. Esto conduce cada vez más hacia la comunidad global,

homogenizando, por tanto, a los mercados de todas partes. Ya pasó la época en que los precios,

márgenes y utilidades en el exterior eran, por lo general, mejores que en el país de origen. En este

mundo globalizado, la organización que carece de un enfoque global claro y no atiende las simples

economías de simplicidad y estandarización, se verá cada vez más, acechada por problemas".

El fenómeno económico-social que conocemos como la globalización de los mercados, tuvo sus

inicios al final de la Segunda Guerra Mundial (1939-1945), con los tratados multilaterales de

comercio internacional, Estos acuerdos habrían de culminar con el Acuerdo General de las Tarifas

y el Comercio, el GATT por sus siglas en ingles (General Agreement on Tariffs and Trade), y en

1948, el GATT estableció los principios para la negociación entre los países, considerando

reducciones de los aranceles aduaneros y sobre las restricciones al comercio internacional.

Otros factores que han ayudado a estimular el fenómeno de la globalización tiene que ver con las

mejoras que se han realizado a las infraestructuras de los procesos productivos, y la logística de la

transportación, telecomunicaciones e información, y a las mejoras que se han realizado en aras de

proteger los derechos de la propiedad intelectual

Page 7: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

ii iii

Es en este contexto económico-social que las organizaciones en vías de desarrollo (PyME’s, como

las conocemos en México), tienen que competir para lograr posicionarse en un ambiente nacional

cada vez más agresivo, luchando en sus propios mercados con empresas transnacionales, que

además de todo cuentan con más recursos, para ganar esta batalla es necesario acrecentar los

valores implícitos de sus productos y de su organización como la funcionalidad, calidad,

confiabilidad, nivel de servicio y competitividad de precio.

Y es en este punto en el que los egresados del Instituto Politécnico Nacional debemos de ser

congruentes con nuestro compromiso social hacia la Nación y el desarrollo Tecnológico, aportando

soluciones que nos permitan como sociedad en general y como sector productivo en lo particular,

posicionarnos en la vanguardia del desarrollo científico, facilitando esta transición económico y

social con desarrollos que nos permitan tomar decisiones en un momento en el que se pueden

conseguirlas las mejores condiciones para lograr el compromiso de la organización, y es este el

punto medular del presente trabajo, en donde participamos egresados de diferentes carreras, pero

todos con un mismo objetivo; el eficientar el desarrollo sustentable de la empresa, con un modelo

de toma de decisiones orientado a la productividad y la eficiencia de las actividades del grupo de

trabajo, sabemos que este es apenas un pequeño adelanto de los cambios que debemos de

realizar, pero también estamos consiente de que el camino más largo comienza con un paso.

Page 8: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

1

CAPITULO I MARCO TEÓRICO

1.1 LA ADMINISTRACIÓN DE LAS EMPRESAS.

El origen de la Administración tiene sus raíces junto con el origen del trabajo, y nace desde que las

primeras sociedades se organizaban para la cacería, pasando por todos los períodos del desarrollo

social y tecnológico, hasta nuestros días en los que disfrutamos de las ventajas de la

automatización y la robótica, esto gracias al desarrollo de la computación y de los circuitos

integrados, que le han dado un gran auge al mejoramiento de el tratamiento de la información, más

sin embargo y para obtener el máximo beneficio de estos productos no podemos perder de vista

las bases y las técnicas que dieron origen a lo que hoy conocemos como la Administración

Científica, ya que gracias a ella se puede obtener la eficiencia del sistema, la optimización de los

recursos técnicos y humanos, y la simplificación del trabajo, por lo que podemos entender que la

administración es el conjunto de esfuerzos coordinados de una organización cuyo principal fin es el

de conseguir realizar las metas y objetivos de un grupo social denominado empresa a través de el

uso adecuado y racionalizado de sus recursos. Para lograr esto es necesario aplicar las técnicas

del proceso administrativo que describe el maestro Agustín Reyes Ponce; Planeación (¿que se va

a hacer y con que?), Organización (¿Cómo se va a hacer?), Dirección (ver que se haga), Control

(como se ha hecho).

1.1.1 PLANEACIÓN.

La planeación es una proyección a futuro cuyo principal objetivo es el de proporcionar una

estrategia de acción para poder lograr los objetivos de la empresa tomando en cuenta sus

políticas, los recursos con los que cuenta, los programas por cumplir, y los procedimientos a

utilizar.

1.1.2 ORGANIZACIÓN.

La podemos comprender como el conjunto de esfuerzos coordinados de todas las personas que

forman la empresa con el objetivo de optimizar todos los recursos que tienen a su alcance para el

logro de las metas y objetivos para los que se han reunido.

Page 9: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

2

1.1.3 DIRECCIÓN.

La dirección es la actividad que realiza una persona que ostenta el liderazgo y tiene la

responsabilidad dentro de una empresa, para lograr lo planificado encausando los esfuerzos de

una parte o de toda la organización, por medio de; la comunicación, el liderazgo y la motivación

como herramientas para logar las metas y objetivos de este grupo social.

1.1.4 CONTROL.

Es la acción por medio de la cual podremos evaluar los resultados presentes o futuros de un

proceso, con base en la medición actual de los resultados y en donde podemos corregir las

posibles desviaciones modificando los valores de entrada, que se pudieran ver afectados como

resultado de las variables que conocemos como imprevistos o premisas.

Premisas.- Una premisa en un evento que no podemos controlar directamente y que pueden

afectar el desarrollo de lo planeado, por sus características las podemos clasificar en;

Internas.- Su origen se encuentra en la empresa y pueden influir en el logro de la metas y

objetivos; ausentismo, rotación de personal, accidentes, innovaciones tecnológicas, rechazo

del personal, económicas, financieras, entre otras.

Externas.- Su origen se encuentra afuera de la empresa, pero pueden tener un impacto

negativo en nuestra planificación y pueden ser; Político, Legales, Fiscales, Económicos,

Sociales, Técnicos, de Mercado, y otros de diversa índole.

1.2 FUNCIONES BÁSICAS DE LA EMPRESA.

Todas las organizaciones están conformadas por un sinnúmero de departamentos que se

encuentran íntimamente relacionados con la finalidad de lograr los objetivos planeados, estas

áreas comparten la responsabilidad de llevar a cabo las acciones necesarias para este fin y así

mismo entre todos disfrutarán de los logros obtenidos, de tal forma que cada uno de ellos tiene que

Page 10: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

3

desarrollar una parte del trabajo, y con esa idea es que se han creado diversas áreas que se

describen a continuación:

PRODUCCIÓN.- Es el área gerencial que se encarga de formular y desarrollar los métodos más

adecuados para la manufactura de los productos que realiza la empresa, el proporciona y

coordina; el equipo, la mano de obra, las instalaciones, los materiales y herramientas necesarios, y

a su cargo tiene los siguientes departamentos:

� Ingeniería del Producto.

o Diseño de los productos.

o Pruebas de Ingeniería.

o Auxiliar al departamento de mercadotecnia.

� Ingeniería de Planta

o Diseño de las instalaciones y sus especificaciones.

o Mantenimiento de las instalaciones, los equipos y el herramental.

� Ingeniería Industrial.

o Estudio de Métodos de Trabajo.

o Medición del Trabajo.

o Distribución de la Planta

.

� Planeación y Control de la Producción.

o Programación de los Trabajos.

o Reportes de Avances de la Producción.

o Estándares de Fabricación.

� Adquisiciones.

o Compras Nacionales e Internacionales.

o Almacén de Materia Prima (control de Inventarios).

� Control de Calidad.

o Normas y Especificaciones Nacionales e Internacionales.

o Inspección y Prueba.

o Reciclaje de Materiales.

� Manufactura.

Page 11: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

4

o Almacén de Herramental y Equipo de Seguridad.

o Almacén de Producto Terminado (control de Inventario).

MERCADOTECNIA.- Es un departamento prioritario ya que gracias a el es que se van a poder

cumplir las metas de la empresa, su finalidad es la de recopilar toda la información referente al

comportamiento del mercado y la forma como se le podrá influir, con esta información podremos

determinar las características de nuestros productos con respecto a la forma, la presentación, las

cantidades, el empaque, el costo, los diferente tipos de usuarios, entre otros factores,

asegurándose de que su distribución se realice de tal manera que nuestros productos se

encuentren a disposición de los consumidores en el momento oportuno, la cantidad adecuada, y a

un precio competitivo, sus funciones se refieren a:

� La Investigación de Mercados.

� Planeación y Desarrollo del Producto.

o Empaque.

o Marca.

� Precio.

� Logística y Distribución.

� Administración de Ventas.

o Promoción de ventas.

o Publicidad.

� Comunicación.

o Relaciones Públicas.

� Estrategias de Mercadeo.

FINANZAS.- Es el Departamento que se encarga de conseguir el dinero que necesita la

organización para que puedan funcionar adecuadamente todos los departamentos, es la

responsabilidad de esta área el hacer un máximo aprovechamiento de los recursos económicos a

través de una administración sana y adecuada, identificando las mejores y más bondadosas

Page 12: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

5

fuentes de financiamiento (con respecto a los intereses), para la organización sus principales

funciones son:

� Financiamiento.

o Planeación Financiera.

o Relaciones Financieras.

o Tesorería.

o Obtención de Recursos.

o Inversiones.

� Contraloría.

o Contabilidad General.

o Contabilidad de Costos.

o Presupuestos.

o Auditoría Interna.

o Crédito y Cobranzas.

o Impuestos.

RECURSOS HUMANOS.- Este departamento tiene la función de adquirir y conservar el recurso

humano necesario para que la organización pueda cumplir con sus metas y objetivos, esto trabajo

comienza con la selección y el reclutamiento y prosigue con la capacitación y actualización de

conocimientos y destrezas necesarios para desempeñar sus actividades, también es el

responsable de recabar la información con respecto a los registros referentes a la seguridad social,

y a la que tienen derecho los trabajadores, también es el encargado de calcular los pagos

extraordinarios por tiempo extra cuando este es necesario y por jornada natural, así como el

calculo de los impuestos, retardos, y descuentos que se generen como consecuencia de sus

actividades en la organización. Sus principales funciones son:

� Selección y Reclutamiento

o Selección

o Reclutamiento.

o Contratación.

o Inducción al Trabajo.

� Capacitación y Desarrollo.

o Capacitación.

Page 13: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

6

o Adiestramiento.

o Desarrollo

� Sueldos y Salarios.

o Análisis y Valuación de Puestos.

o Medición del Desempeño.

o Remuneración y Vacaciones.

� Relaciones Laborales.

o Comunicación.

o Contratos Colectivos de Trabajo.

o Disciplina.

o Relaciones de Trabajo.

� Servicios y Prestaciones.

o Actividades Recreativas.

o Actividades Culturales.

o Prestaciones.

� Higiene y Seguridad Industrial.

o Servicio Médico.

o Campañas de Seguridad.

o Accidentes de Trabajo

o Ausentismo.

� Planeación de los Recursos Humanos.

o Inventario de Recursos Humanos.

o Rotación de Personal.

o Auditoría de Personal.

1.3 LA PLANEACIÓN DE LA PRODUCCIÓN.

El poder anticiparse a todas las circunstancias que de una u otra manera alteren o modifiquen los

trabajos de manufactura que ya con anterioridad se han planeado y autorizado, es la principal

característica de este proceso, si lo hemos proyectado adecuadamente las acciones que pueden

Page 14: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

7

sufrir modificaciones o alteraciones, serán mínimas o en el mejor de los casos nulas, de lo contrario

nos veremos envueltos en una serie de premisas que harán cada vez más difícil el poder lograr las

metas y objetivos del grupo. Para no perder de vista esta realidad es necesario que cuando se

elaboren los planes se cuide muy bien de observar ciertas características necesarias para poder

optimizar los recursos de la organización y aprovechar al máximo el esfuerzo de los diferentes

grupos de trabajo, y las podemos identificar a continuación:

� Facilitar el desarrollo de la empresa al optimizar la utilización de los recursos.

� Minimizar el número y el impacto de las premisas que se pudieran presentar.

� Preparar al grupo de trabajo para las eventualidades que se pudieran presentar con una mejor

oportunidad de éxito.

� Proyectar una mentalidad a futuro para mantenerse prevenidos con respecto a las nuevas

condiciones que se pudieran establecer como consecuencia de eventos fortuitos que pudieran

ocurrir alrededor de la empresa.

� Establecer un método cuantitativo para que la toma de decisiones sea en verdad

fundamentada en información fehaciente, disminuyendo los riesgos y evitando las

imprecisiones.

� Proporcionar un método de trabajo eficiente con el que todos los integrantes de la empresa

estén comprometidos y que sirva como base para el desarrollo de las acciones de la

organización.

� Establecer los métodos más adecuados para llevar acabo el control de las decisiones

evaluando varias alternativas al mismo tiempo.

� Se incrementa el sentimiento de pertinencia y cohesión de los trabajadores, al estar todos

comprometidos con los mismos planes, incrementando de manera significativa la productividad

y la eficacia de la organización.

Principios de la Planeación.- Para realizar un plan eficiente también se hace necesario observar los

siguientes principios:

Page 15: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

8

� Factibilidad.- Los planes deben de ser realizables, por lo que es necesario mantener la

objetividad del proyecto durante todo el tiempo en dure la realización de este.

� Cuantificación.- La precisión de la información es la que le va a dar el valor a lo planificado, la

utilización de estadísticas, cálculos primarios, razonamientos en base a estudios de factibilidad,

modelos matemáticos, y datos numéricos como; datos reales y exactos, nos van a permitir

reducir el margen de riesgos y le va a dar más certeza a nuestros pronósticos.

� Flexibilidad.- Los planes debe de ser susceptibles a modificarse o a establecer nuevas

directrices que nos permitan responder una contingencia, para esto es importante que

contengan holguras o rutas alternativas de acción para poder enfrentar; cambios de gobierno,

nuevas políticas de exportación-importación, caída de los mercados nacionales o

internacionales, efectos inflacionarios de los costos, entre otros.

� Unidad.- Todos los departamentos deben de contar con un plan de acción individual que se

debe de acoplar a un plan general, permitiendo la acción conjunta e interdisciplinaria

coordinada y equilibrada de todos los integrantes de la empresa.

� Sobre el Cambio de Estrategias.- Cuando lo planeado sufre cambios por cualquier evento que

pudiera ocurrir fuera de control, y se vuelve realizable a un largo plazo, es necesario rehacerlo,

para esto se utiliza otra estrategia la cual tiene los mismos objetivos de la organización pero

con cambios sustanciales que le permitirán el poder realizarlos en un plazo más adecuado y

bajo las condiciones mas provechosas.

Tipología de la Planeación.- Como sabemos la planeación es el resultado de un elaborado trabajo

que nos permitirá optimizar los recursos con los que contamos para poder lograr los objetivos, y los

podemos clasificar por el tiempo establecido para su realización:

a) Planes a Corto Plazo.- Cuando se elaboran para que se realicen en un plazo menor o igual a

un año, y estos a su vez se pueden clasificar en:

i. Inmediatos.- Cuando su realización se establece en un período de hasta seis meses.

ii. Mediatos.- Cuando su realización se establece en un período de seis meses a un año.

b) Mediano Plazo.- El período de realización es de uno a tres años.

Page 16: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

9

c) Largo Plazo.- Son los que se proyectan a un plazo mayor a los tres años.

Otra clasificación nos dice que dependiendo del departamento que la elabora, la planificación se

puede identificar como:

Estratégica.- Establece los parámetros generales de la planificación siendo el documento que

servirá de base par la elaboración de los demás documentos o planes, este trabajo se realizará

bajo la dirección de los miembros de mayor jerarquía de la compañía y su función es la de controlar

el uso y disposición de los recursos de la empresa, es a largo plazo y comprende todos los

departamentos de la organización.

Táctica o Funcional.- Especifica más ampliamente las acciones individuales a desarrollar por los

diferentes departamentos de la empresa, y la manera como se relacionan con el plan estratégico

general, este plan es establecido y coordinado por los jefes de nivel medio y su objetivo es el

racionalizar adecuadamente el uso de los recursos de la organización, este plan es a mediano y

corto plazo.

Operativa.- Es regulado por los planes tácticos y su función es la de asignar las actividades más

detalladas que debe de realizar los jefes de departamento y el personal a su cargo, estos planes

son a corto plazo y su influencia abarca lo referente a una sola área de actividad.

1.3.1 LAS ESTRATEGIAS DE LA PLANEACIÓN.

Para que una adecuada planificación pueda tener el impacto que se desea, es importante que esta

se desarrolle bajo un panorama global, esto es involucrando a todos los departamentos junto con

sus metas y objetivos, dentro de este esquema los más involucrados serían los que tiene que ver

con la calidad del producto, la forma de distribuirlo, la ubicación de las instalaciones, y no menos

importante el control de los inventarios, todo este esquema debe de estar alrededor de la calidad

de servicio que ofrecemos como organización, ya que de esto va a depender nuestro

posicionamiento en el mercado y las posibles expansiones comerciales que pudiéramos obtener.

Page 17: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

10

ESTRATEGIA DE INVENTARIO: ESTRATEGIA DE TRANSPORTE:

� Pronóstico. � Fundamentos del Transporte.

� Decisiones de Inventario. � Decisiones del Transporte.

� Decisiones de Programación de

Compra y Suministro.

� Fundamentos del

Almacenamiento.

� Decisiones de OBJETIVOS DEL SERVICIO AL CLIENTE.

Almacenamiento � El Producto.

� Servicio de Logística.

� Procesamiento de Pedidos y Sistemas de Información.

ESTRATEGIA DE LOCALIZACION:

� Decisiones de Localización.

� Proceso de Planeación de la Red.

Fig. 1.1 Las estrategias de la planeación.

1.3.2 EL CONTROL DE LA PLANEACIÓN.

El control es la técnica que utilizamos para conocer el estado de las acciones que nos interesan, y

un adecuado manejo de él, nos permitirá modificar las variables de entrada para poder obtener los

resultados que deseamos, de ahí que debamos de conocer cuales son los factores que lo hacen

importante:

� Establece los parámetros para modificar las actividades, con el fin de poder alcanzar los

objetivos planteados.

Page 18: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

11

� Se puede implementar a las personas, las cosas, y las acciones.

� Analiza de manera inmediata las acciones que nos pueden ocasionar alguna desviación del

sistema y nos permite predecir su aparición a futuro.

� Localiza a los sectores encargados de la supervisión desde el momento en que se toman las

medidas correctivas.

� Proporciona la información necesaria sobre los resultados del control, para la elaboración de

los nuevos planes.

� Minimiza costos al corregir los errores.

� Su aplicación permite la adecuada optimización de los recursos y por consiguiente el aumento

de la productividad.

1.3.3 PRINCIPIOS PARA LA IMPLEMENTACIÓN DEL CONTROL.

Equilibrio.- A cada departamento se le debe de dar la responsabilidad de llevar el control de las

actividades que le corresponden, con respecto al plan general de la organización.

Dirigido a los Objetivos.- El control se debe de establecer en base a las metas y objetivos de la

empresa, y se le debe de estructurar de tal forma que sirva como guía de acción para las

actividades de cada uno de los departamentos, esta medida nos permitirá poder medir el

desempeño de la organización y el desarrollo de la etapa conforme a lo planificado. La efectividad

del control se encuentra en relación directa con los resultados obtenidos, demás esta medida nos

permitirá aplicar las correcciones necesarias para que nuestro sistema no sufra desviaciones más

allá de las permitidas por las tolerancias y holguras especificadas en el plan estratégico.

De la Oportunidad del Control.- Los programas de Control deben estar diseñados de tal forma, que

nos permita poder implementar las medidas correctivas necesarias antes de que las desviaciones

de los resultados rebasen a las tolerancias, esto nos permitirá tener siempre un manejo adecuado

de la información y nos asegurará la fiabilidad de la toma de decisiones.

De las Desviaciones.- Es importante el analizar cuidadosamente todas las desviaciones que se

presenten, ya que solamente de esta manera es como será posible el poder detectar situaciones

Page 19: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

12

que nos están modificando los resultados esperados o que los puedan a modificar a futuro, por

esto es importante siempre contar con medidas preventivas y correctivas que nos permitan retomar

el curso de las acciones planteadas originalmente.

De los Costos.- Todos los sistemas de control que se implementen en la organización deben de ser

económicamente factibles, debe de existir un análisis entre los costos del sistema y los beneficios

que se obtendrán mediante la utilización de éste, ya que de lo contrario correremos el riesgo de

incrementar nuestros costos de operación y de esta manera alterar los resultados del plan

estratégico general.

De las Áreas Prioritarias.- Este tipo de programas deben de estar enfocados a las áreas de la

empresa que son más prioritarias con respecto a las metas y objetivos de la organización, con la

finalidad de reducir tiempos perdidos por errores y los costos que estos implican, por lo que las

debemos de tener identificadas con respecto a las funciones estratégicas de cada departamento y

área.

De la Imprecisión del control.- Este principio establece que; “…La función controladora por ningún

motivo debe de comprender a la función controlada, debido a pierde efectividad el control…”, lo

que debemos de interpretar como; que las personas involucradas en la obtención de los resultados

de un área ó departamento en particular, no son los sujetos idóneos para ser responsables de la

actividad de controlar, ya que su juicio y objetividad se pudieran ver afectados por los resultados

obtenidos, o en un determinado caso pudieran manejar estos resultados.

1.3.4 CARACTERÍSTICAS DEL CONTROL.

Ya que determinamos que el control es un actor importante para el logro de las metas y objetivos

es importante que hablemos de las características que lo identifican:

Definir la Naturaleza de la Estructura Empresarial.- El control debe de estar diseñado

explícitamente para el tipo de empresa y para la actividad a regular, esto quiere decir que si

nuestra empresa se dedica al armado de bicicletas, es necesario desarrollar un sistema que sirva a

este tipo de organizaciones, si el desarrollo se diseño para el control de ventas, ahí aplicarlo, o de

la logística, o contable, o de almacenes, ya que una PyME no es igual a una gran corporación

Page 20: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

13

trasnacional y no tiene los mismos recursos ni necesidades, por lo que adaptar programas muy

rara vez ha funcionado y nunca se utilizan al 100%.

Oportunidad.- El control debe de proporcionar la información requerida en un tiempo adecuado

para que nos permita tomar las decisiones que impidan que el desarrollo de las actividades no se

desvíen, y se puedan cumplir los objetivos de la organización en el tiempo estipulado.

Accesibilidad.- Este principio también es utilizado en los programas informáticos y se utiliza para

que los usuarios puedan utilizar los sistemas que se han desarrollado de una manera amigable,

esto quiere decir que los usuarios no tienen que ser expertos en computación para poder utilizar e

interpretar los resultados, por lo que estos paquetes facilitan el logro de las metas planteadas.

Ubicación Estratégica.- Estos sistemas deben de estar implementados en las áreas más

importantes e involucradas con los objetivos de la organización, pero es importante que estas

áreas sean tales que cuando el sistema detecte una posible desviación, tengamos el tiempo y la

oportunidad para poder tomar la iniciativa y evitar ó anular eta premisa antes de que la anomalía

sea de un alto costo.

En base a lo expuesto podemos definir que es importante aplicar los sistemas de control a los

siguientes Factores Cuantitativos y Cualitativos; Cantidad (Volúmenes), Tiempo (Períodos

Programados), Costo (Dinero y Recursos) y Calidad (Características de los Productos o Funciones

de la Organización).

1.3.5 EL CICLO DEL CONTROL.

Otra de las características del control es la que tiene que ver con el tiempo en el que se tiene que

aplicar, para que este sea eficiente y de los resultados que se esperan de él, se debe de aplicar en

todo momento y los podemos clasificar de la siguiente manera.

� Control Prístino.- Es el que se realiza con antelación de las actividades de la organización

� Control Frecuente.- Es el que se realiza al mismo tiempo en el que se inicializa el proceso y

debe de continuar hasta que se finalice este.

Page 21: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

14

� Control Subsiguiente.- Su aplicación se realiza después de haberse realizado el proceso y su

objetivo es proporcionar resultados acerca de las actividades planeadas con respecto a las

realizadas.

De tal manera que el control de los inventarios es el responsable de manejar en forma optima las

existencias de los almacenes, no importando el almacén que sea, de Herramientas y Refacciones,

de Materia Prima, de Producto Terminado, de Semi-Productos, entre otros. La idea de implementar

estos controles es la de eficientar el uso de los recursos económicos de la empresa, evitando

costos innecesarios por mantener un gran inventario o por falta de existencias en el almacén.

Esto no obliga a mantener un inventario de protección que nos permita satisfacer las necesidades

de la planta, ya que la falta de un producto puede llevar al paro de la producción causando grandes

pérdidas económicas, si digamos que por no cumplir con un plazo de entrega nos llegasen a

cancelar un pedido, o nos cobrasen una penalización por incumplimiento.

1.3.6 TIPOS DE INVENTARIOS.

De Materias Primas.- Son aquellas que se utilizan en el proceso y que a través de un

maquinado o una serie de operaciones sufren un primer cambio.

De Productos Terminados.- Son los productos que resultan de una serie de operaciones

manuales o automáticas y que comercializa la empresa.

De Semi Productos.- Son las partes que solo representan un ensamble del producto terminado.

De Herramientas y Refacciones.- No forman parte del proceso pero son necesarias para

mantener el equipo de producción y las instalaciones en buen estado de funcionamiento.

Para efectuar este control se han desarrollado diferentes técnicas a través del tiempo, pero las

precisas y adaptables a los diferentes procesos son las que se manejan a través de la computación

y los sistemas informáticos.

Page 22: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

15

1.3.7 EL CONTROL DE INVENTARIOS.

Su principal objetivo es el de encontrar el equilibrio entre los costos y el número de productos manufacturados, ya que como se ha mencionado antes, mientras más grande sea el inventario más caro resulta mantenerlo, por lo que es importante identificar cuales son sus principales objetivos:

Tener a disposición el número adecuado de materias primas o semi-productos terminados,

para poder cumplir con los compromisos de la organización.

Erradicar las pérdidas cuyo origen sea el no poder cumplir con los compromisos de ventas.

Erradicar las pérdidas ocasionadas por exceso de inventario o por obsolescencia de las partes.

Minimizar los paros de producción por no contar con materiales suficientes para satisfacer la

demanda.

Minimizar los gastos ocasionados por mantener materiales ociosos, materiales equivocados,

depreciación, costos de almacenaje, mantenimiento de las instalaciones, entre otros.

La importancia que actualmente tiene el Control de Inventarios para las empresas, lo hace

merecedor de utilizar o de identificar los cuatro factores dentro de sus atributos y características;

Cantidad.- Las cantidades de insumos y otros elementos como; refacciones, herramientas,

materiales diversos para el mantenimiento de equipos e instalaciones, entre otros, que se

utilizan en el sistema productivo ocupan un espacio y un equipo asociado (cajón, anaquel,

pared, etc.), inclusive el personal necesario para controlar esto implica la contratación de una o

dos personas extras, sin pasar por alto el espacio que ocupan y las características que debe

de contener este para el adecuado estado de los materiales y equipos.

Tiempo.- El tiempo que estos materiales permanezcan en el almacén representan el costo

asociado a su manutención, ya que para que un equipo o material proporcione el servicio para

el que fue diseñado este debe de estar en magníficas condiciones.

Costo.- Sueldo y salarios de los almacenistas, capacitación, adiestramiento, costos de las

instalaciones, adecuaciones, espacios, energía eléctrica, mantenimiento de los inmuebles,

sistemas de seguridad entre otros, hacen que mientras más grande sea el almacén, más caro

resulta mantenerlo, y se incrementan los costos de operación.

Page 23: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

16

Calidad.- Los materiales y equipos deben de ser los adecuados para el servicio que van a

prestar y el departamento de compras debe de verificar que estos posean las características

por lo que fueron adquiridos, de esta forma podremos asegurar la calidad de nuestros

productos o servicios y mantener o acrecentar el prestigio de la organización.

Los Inventarios se pueden comprender como los bienes tangibles de la empresa que se tienen

para la venta en el curso ordinario del negocio o para ser consumidos en la producción de bienes o

servicios para su posterior comercialización, por lo que podemos identificarlos como inventario de

Materia Prima, y de Producto Terminado, los inventarios comprenden también; productos en

proceso, repuestos y accesorios, empaques, envases y los inventarios en tránsito. La base de toda

empresa comercial es la compra y venta de bienes o servicios; es aquí donde reside la importancia

del manejo del inventario por parte de la misma, este manejo permitirá conocer la situación

económica de la empresa.

1.3.8 COSTOS DE PRODUCIR.

Costo De La Materia Prima.- Esta es una inversión unitaria, que es el resultado de dividir el total

del precio del lote entre el número de unidades producidas, este valor se puede disminuir entre

más materia prima se compre, lo que se conoce como compras al mayoreo.

Costo De Preparación.- Para que el sistema productivo pueda ponerse en marcha es necesario

que antes se tome un tiempo para que este pueda ofrecer el rendimiento para el que fue diseñado,

sin embargo se incluyen en el mismo las siguientes funciones; la solicitud al proveedor de la

materia prima, el tiempo que se tarde el departamento de compras en negociar el precio de

compra, el pago de los impuestos que se generen, la transportación de la materia prima, los

acarreos y la estiba de la materia prima dentro de nuestras instalaciones.

1.3.9 COSTOS DE LOS INVENTARIOS.

Costo Por No Mantener Un Stock.- Es el sobre precio que se debe de pagar por adquirir materiales

en una situación de urgencia, ya que si no planificamos adecuadamente la producción y nos hace

falta material par continuar laborando, es necesario comprarlo al costo que sea, ya que resulta más

caro tener la planta detenida un turno que esta opción (sueldo de los trabajadores, energía

eléctrica, costo de preparación del equipo, entre otros). Por lo que se hace necesario mantener un

inventario de seguridad denominado “STOCK” o inventario de seguridad.

Costo Del Inventario.- Es el costo asociado a todos los recursos que se necesitan para poder

mantener la materia prima en la empresa, desde la construcción de las instalaciones, su

mantenimiento, las adaptaciones y adecuaciones físicas que se necesiten para poder asegurar la

Page 24: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

17

integridad de los insumos (materia prima), la energía eléctrica que utilizará el personal que llevará

el control, el personal necesario, su capacitación y adiestramiento, las herramientas y equipos

necesarios para poder manejarla, entre otros.

El costo de inventario se puede clasificar en tres rubros:

� Costo De Capital.- Lo representa el capital invertido en la mercancía almacenada que se

encuentra ociosa, o que de una u otra forma no se puede utilizar, esto también puede ser

ocasionado por que la calidad de los insumos no es la adecuada y puede estar afectado

todo un lote de material, o no es de las especificaciones solicitadas tratándose de

refacciones o equipos, pero como ya se pago y se encuentra en el almacén nos ocasiona

un costo.

� Costo De Almacenamiento.- Es el costo que se genera por el uso del área del almacén, su

acondicionamiento y su mantenimiento, y esto se multiplica por el tiempo que el material

pase en esta área.

� Costo De Deterioro.- Es el valor económico que nuestra materia prima va perdiendo por; la

pérdida de sus propiedades, los faltantes en el embalaje, las mermas del material, la

obsolescencia de los equipos, herramientas y refacciones, y su misma descompostura por

falta de uso.

1.3.10 DESCUENTOS EN LOS INVENTARIOS.

Descuentos Por Volumen De Compra.- Al comprar una mayor cantidad de materia prima o

semiproducto terminado se puede negociar con el proveedor una disminución en el precio que

comúnmente se tenga, esta estrategia se conoce como descuentos por cantidad de compra, la

razón es que al solicitar un mayor volumen, los costos de producción y manejo (fletes y acarreos)

disminuyen, en este panorama el reto principal es solicitar la cantidad exacta para ahorrar en

costos, si rebasamos este volumen, los beneficios pueden disminuir y se corre el riesgo de que se

conviertan en un gasto innecesario. Es importante aclarar que la cantidad adquirida, no siempre

será la que marca el lote económico, sino que se deberá de considerar la cantidad que minimice

los costos anuales de almacenamiento, pedido y recepción. En este modelo de descuentos por

cantidad, sí los pedidos solicitados son entregados al mismo tiempo, se recomienda utilizar las

técnicas de; “LOTE ECONOMICO”, sí las entregas son graduales, se utilizará la técnica de;

“LOTES DE PRODUCCION”.

Page 25: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

18

1.3.11 INVENTARIOS ESTOCÁSTICOS.

Cuando se tiene una certeza de que es lo que va a suceder con respecto a los productos y

materiales que integran los inventarios, estos datos se convierten en; probabilísticos y estadísticos,

y se les puede dar un tratamiento para conocer su comportamiento, a esta abstracción matemática

se le conoce como;

Modelo Estocástico.- Se le conoce así cuando a las fluctuaciones de un proceso productivo se les

analiza con un sistema de probabilidad, tomando datos históricos como referencia para proyectar

cantidades para un periodo futuro.

Se pueden manejar dos modelos de inventarios estocásticos:

1.3.12 MODELO PROBABILÍSTICO DE CANTIDAD DE ORDEN

VARIABLE, CICLO FIJO.

Este método controla los ciclos de abastecimiento por periodos establecidos, la periodicidad es

variable o está sujeta a un ciclo específico, el tamaño de la orden es variable en cada periodo. El

sistema de tiempo fijo y el consumo variable, se deberá aplicar cuando no se conocen las

fluctuaciones que se puedan presentar, las cuales pueden ser externas e internas y no reconocen

cantidades exactas como en el tiempo fijo, el sistema de revisión de las existencias, se realiza

periódicamente. En este método se establecerían políticas de reabastecimiento automático por

periodos uniformes, el objetivo de este método es suprimir o reducir la constante vigilancia en las

existencias, que se tiene en un sistema de cantidades de reorden fijas.

FORMULAS:

1) Nivel de servicio:

n. s. = )100(

N

FN −

N = número de revisiones anuales F = faltantes anuales

Determinar el periodo recomendable de revisión, se determina: r ≤ L, es el resultado de la fórmula

de cantidad relevante esperada, n donde L es el lote y r es la revisión.

Page 26: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

19

2) Inventario de seguridad:

I. S. (β) = σ Z T

L γ+

L = Tiempo de entrega (unidades)

T = Tiempo contemplado para cumplir el pronóstico (unidades)

γ = Tiempo o tipo de revisión (unidades)

Z = Valor en las tablas de distribución normal típica

Inventario De Seguridad.- Es el nivel de existencias constante mínimo que se debe de tener en el

almacén por si existiese un decremento en el mismo durante un periodo determinado, esto se

podría presentar antes o después de la recepción de un pedido o la solicitud del siguiente, por lo

general cada pedido de materia prima debe de ser suficiente para fabricar un lote de productos, el

proceso que se sigue en este tipo de inventario, consiste en solicitar un pedido de material

exactamente después de recibir el material pedido con anterioridad, y se debe de recibir

exactamente en el final de período para que no ocasione costos.

3) Inventario promedio:

_

Ip = ).(.)(

2βSIL

D+

4) Inventario máximo:

_

I máximo = D (γ + L) + I. S. (β)

4) Cantidad a pedir:

Q = I máximo – O. γ. – I. F.

O. γ. = Ordenes en tránsito al momento de la revisión

I. F. = Inventario físico al momento de la revisión.

Page 27: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

20

1.3.13 MODELO PROBABILÍSTICO DE ORDEN FIJA CICLO

VARIABLE (punto de reorden).

Este método determina la cantidad que se adquirirá, así como el periodo exacto de su

reabastecimiento, el cual siempre estará sujeto a una demanda del mercado.

METODOLOGÍA.

1. Cuando se requiere reabastecer nuestro inventario, se ordena una cantidad (siempre fija en

órdenes de compra sucesivos). El periodo del abasto variará, esto debido a la demanda del

mercado.

2. Este pedimento se conforma por una cantidad que no siempre será la del lote económico

conocido (EOQ). Se solicita el reabastecimiento (orden de compra) al proveedor, dentro de un

periodo de tiempo que comprende: desde que se elabora la requisición, hasta la llegada de la

adquisición a nuestro almacén, cuando las existencias llegan al nivel llamado Mínimo (punto de

reorden), éste representa el número de piezas que conforme a los periodos de consumo

establecidos (horas, días, semanas, quincenas., mes, bimestre, trimestre, cuatrimestre,

semestre, año) se han utilizado, en este momento se abastece al almacén, y éste continuará

proporcionando los suministros al área de producción, conforme a los tiempos y planes

establecidos, mientras el proveedor nos entrega el pedido de la misma manera.

3. Debajo de este nivel existe otro llamado: Inventario de seguridad, esté se conforma con una

cantidad de unidades que siempre deben estar disponibles y su objetivo es cubrir un retraso

involuntario por premisas del proveedor o del fabricante, en el tiempo de entrega normal del

proveedor.

FORMULAS:

1. Nivel de servicio:

n. s. = %100x

N

FN −

N = Número de pedidos anuales, F = Faltantes de pedidos anuales, D = Demanda anual

Q = Cantidad óptima a pedir

N = Q

D

Page 28: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

21

2. Inventario de seguridad I. S. (β):

I. S. (β) = σ Z T

L

Desviación estándar

σ = 1

)( 2

−∑n

DD

σ = Desviación estándar

Z = Valor de la tabla de la distribución normal típica con respecto al nivel de

servicio

L = Tiempo de entrega, expresado en unidades

T = Tiempo considerado para el pronóstico expresado en unidades

3. Punto de reorden (P. R.):

_

P. R. = D (L) + I. S. (β)

4. Inventario promedio (Ip):

Ip = ).(.

2βSI

Q+

5. Inventario máximo ( I max):

I max = Q + I. S. (β)

1.4 LA TOMA DE DECISIONES.

Una decisión puede variar en trascendencia y connotación, los administradores consideran a la

toma de decisiones como su trabajo principal, porque constantemente tienen que decidir lo que

debe hacerse, quién ha de hacerlo, cuándo y dónde, y hasta cómo se hará. Sin embargo, la toma

de decisiones sólo es un paso de la planeación, incluso cuando se hace con rapidez y dedicándole

poca atención o cuando influye sobre la acción sólo durante unos minutos.

Page 29: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

22

Es el proceso mediante el cual se realiza una elección entre diferentes alternativas o formas para

resolver diferentes problemas a los que nos enfrentamos en la vida, estas se pueden presentar en

diferentes contextos: a nivel laboral, familiar, sentimental, empresarial, etc., es decir, en todo

momento se toman decisiones, la diferencia entre cada una es el proceso o la forma en la cual se

llega a ellas, la toma de decisiones consiste, básicamente, en elegir una alternativa entre las

disponibles, para resolver un problema actual o potencialmente a un futuro, que pude ser cercano

o lejano (aún cuando no se evidencie un problema latente).

La toma de decisiones a nivel individual es caracterizada por que una persona haga uso de su

capacidad de razonar y proyectar a futuro para elegir una decisión a un problema que se le

presente en la vida; es decir, si una persona tiene un problema, ésta deberá ser capaz de

resolverlo individualmente a través de tomar decisiones con ese motivo especifico, en la toma de

decisiones importa la elección de un camino a seguir de entre varios que se han estudiado, por lo

que en un momento anterior deben considerarse diferentes alternativas de acción. Si estas últimas

no están presentes, no existirá decisión.

Por lo general para tomar una decisión, no importa la naturaleza del problema, es necesario

conocer, comprender, y analizar a fondo la situación que nos preocupa, para así poder darle

solución; en algunos casos estos inconvenientes por ser tan simples y cotidianos, se realiza el

proceso de forma implícita y se soluciona muy rápidamente, pero existen otros casos en los que las

consecuencias de entre una u otra alternativa pueden tener repercusiones en la vida y si esto se

da en un contexto laboral; podría determinarse el alcanzar las metas y objetivos de la organización.

1.4.1 DECISIONES PROGRAMADAS.

Las decisiones programadas se toman de acuerdo con políticas, procedimientos o reglas, escritas

o no escritas, que facilitan la toma de decisiones en situaciones recurrentes porque limitan o

excluyen alternativas. Por ejemplo, un gerente de personal rara vez tiene que preocuparse por el

salario de un empleado recién contratado porque, por lo general, las empresas cuentan con un

tabulador de sueldos y salarios para todos los puestos. Existen procedimientos rutinarios para

tratar problemas rutinarios, las decisiones programadas se usan para abordar problemas

recurrentes. Sean complejos o simples. Si un problema es recurrente y si los elementos que lo

componen se pueden definir, pronosticar y analizar, entonces puede ser candidato para una

decisión programada. Por ejemplo, las decisiones en cuanto a la cantidad de un producto dado que

se llevará en inventario puede entrañar la búsqueda de muchos datos y pronósticos, pero un

Page 30: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

23

análisis detenido de los elementos del problema puede producir una serie de decisiones rutinarias

y programadas.

En cierta medida, las decisiones programadas limitan nuestra libertad, porque la persona tiene

menos espacio para decidir que hacer. No obstante, el propósito real de las decisiones

programadas es liberarnos. Las políticas, las reglas o los procedimientos que usamos para tomar

decisiones programadas nos ahorran tiempo, permitiéndonos con ello dedicar atención a otras

actividades más importantes.

1.4.2 DECISIONES NO PROGRAMADAS.

También llamadas no estructuradas, son decisiones que se toman en problemas o situaciones que

se presentan con poca frecuencia, o aquellas que necesitan de un modelo o proceso específico de

solución, por ejemplo: “Lanzamiento de un nuevo producto al mercado”, en este tipo de decisiones

es necesario seguir un modelo de toma de decisión para generar una solución específica para este

problema en concreto. Las decisiones no programadas abordan problemas poco frecuentes o

excepcionales, si un problema no se ha presentado con la frecuencia suficiente como para que lo

cubra una política o si resulta tan importante que merece trato especial, deberá ser manejado

como una decisión no programada, problemas como asignar los recursos de una organización, que

hacer con una línea de producción que fracasó, como mejorar las relaciones con la comunidad,

normalmente, requerirán decisiones no programadas.

1.4.3 PANORAMAS DE DESICIÓN.

El ambiente en los cuales se toman las decisiones, se pueden clasificar según el conocimiento y

control que se tenga sobre las variables que intervienen o influencian el problema, ya que la

decisión final o la solución que se tome va a estar condicionada por dichas variables.

1.4.4 CERTEZA.

Se tiene conocimiento total sobre el problema y sus variables, las alternativas de solución que se

planteen van a causar siempre resultados conocidos e invariables, al tomar la decisión solo se

debe de pensar en la alternativa que genere mayor beneficio. En este tipo de decisiones, las

posibles alternativas de solución tienen cierta probabilidad conocida de generar un resultado, en

Page 31: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

24

estos casos se pueden usar modelos matemáticos o también un modelo de decisión puede hacer

uso de la probabilidad objetiva o subjetiva para estimar el posible resultado. La probabilidad

objetiva es la posibilidad de que ocurra un resultado basándose en hechos concretos, puede ser

cifras de años anteriores o estudios realizados para este fin. En la probabilidad subjetiva se

determina el resultado basándose en opiniones y juicios personales.

1.4.5 INCERTIDUMBRE.

Se posee información deficiente para tomar cualquier decisión, no se tiene ningún control sobre la

situación, no se conoce como puede variar o la interacción de la variables del problema, se pueden

plantear diferentes alternativas de solución pero no se le puede asignar probabilidad a los

resultados que arrojen.

Por lo que podemos clasificarlas de la manera siguiente:

� Estructurada.- No se sabe que puede pasar entre diferentes alternativas, pero sí se conoce

que puede ocurrir entre varias posibilidades.

� No estructurada.- No se sabe que puede ocurrir ni las probabilidades para las posibles

soluciones, es decir no se tienen ni idea de que pueda pasar.

1.4.6 PROCESO PARA LA TOMA DE DECISIONES.

Esta selección de alternativas debe de realizarse de una forma metodológica y controlada, para

que se pueda confiar en los resultados a obtener, el siguiente es el proceso que podemos utilizar

para realizar este trabajo:

1.4.7 IDENTIFICAR Y ANALIZAR EL PROBLEMA.

Esta etapa consiste en comprender las condiciones y variables que en un determinado momento

pueden afectar los resultados deseados, es decir encontrar el problema y reconocer que se debe

de tomar una decisión para llegar a la solución de este, este problema puede ser actual, porque

existen las variables entre la condición presente real y la deseada, o potencial, porque se estima

que dichas variables existirán en el futuro.

Page 32: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

25

1.4.8 CRITERIOS DE DECISIÓN.

Son las políticas y normatividades adecuadas que necesitamos conocer y que son relevantes al

momento de tomar la decisión, es decir aquellas pautas de las cuales depende la decisión que se

tome. Como la mayoría de los criterios nos parecerán importantes al momento de la selección de

alternativas, es conveniente asignar un valor relativo a la importancia que tiene cada uno en la

decisión que se tome, por que todos son importantes pero no de igual forma, muchas veces, la

identificación de los criterios no se realiza en forma consciente previa a las siguientes etapas, sino

que las decisiones se toman sin explicitar los mismos, a partir de la experiencia personal de los

tomadores de decisiones, en la práctica, cuando se deben tomar decisiones muy complejas y en

particular en grupo, puede resultar útil explicitarlos, para evitar que al momento de analizar las

alternativas se manipulen los criterios para favorecer a una u otra alternativa de solución.

1.4.9 GENERACIÓN DE LAS ALTERNATIVAS.

Se trata de desarrollar distintas posibles soluciones al problema que se enfrenta, ya que como bien

sabemos dependiendo del tiempo del que se disponga, no resulta factible para la mayoría de los

casos conocer todas las soluciones que se pudieran tomar para solucionar el problema en

cuestión, cuantas más alternativas se tengan va ser mucho más probable encontrar una que

resulte satisfactoria. Desde otro punto de vista, el desarrollo de un número exagerado de

soluciones puede tornar la elección sumamente dificultosa, y por ello tampoco es necesariamente

favorable continuar desarrollando alternativas en forma indefinida. Para generar una gran cantidad

de alternativas factibles, es necesaria también una gran cantidad de creatividad, existen diferentes

técnicas para potenciar la creatividad, tales como la lluvia de ideas, las relaciones forzadas, la

sinéctica, entre otras.

Sinéctica.- Se trata de la "Técnica de Gordon" (creada por William J. Gordon), pero con el tiempo

este sistema se modificó y se le llamó “SINÉCTICA”, en esta técnica se seleccionan

cuidadosamente a algunas personas que formarán parte del equipo sinéctico según su aptitud y

experiencia para la resolución de un problema, el cual puede involucrar a toda la organización, el

líder del grupo desempeña un importante papel en este método, ya que sólo él conoce la

naturaleza específica del problema, su función consiste en estrechar y dirigir cuidadosamente la

discusión sin revelar el problema de que se trata, el principal motivo para actuar así, es impedir que

el grupo llegue a una solución prematura, este sistema se basa en una compleja serie de

interacciones para el surgimiento de una solución, que con frecuencia se trata de la innovación de

algún producto.

Page 33: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

26

1.4.10 EVALUACION DE LAS ALTERNATIVAS.

Consiste en hacer un estudio detallado de cada una de las posibles soluciones que se generaron

para resolver el problema, es decir comparar sus ventajas y desventajas de manera individual con

respecto a los criterios de decisión, y una con respecto a la otra, asignándoles un valor ponderado.

Por lo general estas evaluaciones se realizan por medio de técnicas científicas que se conocen

como métodos cuantitativos, de esta forma podemos graficar, tabular, medir, analizar, o utilizar

cualquier otro esquema que nos permita obtener un solución factible por medio de la comparación

de los resultados.

1.4.11 SELECCIÓN DE LA ALTERNATIVA.

Es aquí en donde vamos a decidir cual de todas las posibles soluciones es la más adecuada para

la obtención de lo resultados esperados, para realizar este trabajo existen técnicas que nos ayudan

a tomar la decisión según el resultado que se busque:

� Maximizar los Resultados.- Tomar la mejor decisión posible.

� Satisfacer lo Urgente.- Elegir la primera opción que sea mínimamente aceptable satisfaciendo

de esta forma una meta u objetivo inmediato.

� Optimizar los Resultados.- La que genere el mejor equilibrio posible entre distintas metas.

1.4.12 IMPLEMENTACIÓN DE LA DECISIÓN.

Una vez diseñada y aceptada la posible solución es momento de aplicarla, una vez puesta en

marcha podemos controlar su desempeño e ir evaluando los resultados obtenidos, de tal forma que

esta implementación probablemente derive en la toma de nuevas decisiones, aunque sean de

menor importancia.

1.4.13 EVALUACIÓN DE LOS RESULTADOS.

El paso siguiente es el de medir los resultados para saber si se han cumplido las metas y objetivo

planificados, si el resultado no es el que se esperaba es conveniente darle un poco más de tiempo

Page 34: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

27

para obtener resultados satisfactorios, ó si definitivamente la decisión no fue la acertada se debe

iniciar el proceso inmediatamente para hallar una nueva decisión. El nuevo proceso que se inicie

contará con más información relevante y se tendrá conocimiento de los errores cometidos en el

primer intento, además se debe de tener en cuenta de que algunos procesos de decisión están en

continuo cambio, es decir, las decisiones que se tomen continuamente van a tener que ser

modificadas, por la evolución que se tenga del sistema o por la aparición de nuevas variables que

lo afecten.

1.4.14 LA INFORMÁTICA EN LA TOMA DE DECISIONES.

Actualmente el proceso de toma de decisiones ya se puede automatizar, por lo menos en áreas en

donde la solución es claramente visible, ya sea por medio de una gráfica o a través de otro tipo de

formato, esto es posible gracias al tratamiento de la información, por lo que esta es fundamental,

ya que sin ella no resultaría posible comparar las alternativas existentes o desarrollar alternativas

nuevas, en las organizaciones, que se encuentran sometidas constantemente a la toma de

decisiones, la información adquiere un rol fundamental, y por ello un valor inigualable, para

procesar los datos de la organización y transformarlos en reportes adecuados para una

comparación, es fundamental desarrollar sistema informáticos, además de estas aplicaciones

existen sistemas diseñados especialmente para ayudar a el proceso de toma de decisiones, que se

conocen como Sistemas de soporte a decisiones o Sistemas de apoyo a la decisión.

1.4.15 LA TOMA DE DECISIONES Y LA EMPRESA.

En base a lo anterior podemos entender entonces que actualmente realizar bien el trabajo no es

suficiente para el éxito de los proyectos empresariales por lo que no podemos olvidarnos de la

influencia de la "inteligencia emocional"; es decir, de adoptar una actitud abierta y responsable de

cooperación y adaptarla a las normas y modos de trabajar de nuestra organización, la manera más

adecuada de proceder a la hora de tomar decisiones en una compañía es analizar la situación

desde todos los puntos de vista posibles, después es importante actuar con seguridad y

convicción, también podemos solicitar la cooperación de los demás trabajadores con el objetivo de

involucrarlos en este proceso.

1.4.16 BARRERAS PARA LA TOMA DE DESICIONES

Prejuicios Psicológicos.- A veces los encargados de tomar decisiones están lejos de ser objetivos

en la forma que recopilan, evalúan y aplican la información, los seres humanos poseen prejuicios

que interfieren con su racionalidad objetiva.

Page 35: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

28

Ilusión de Control.- Aquí el elemento humano cree que puede influir en las situaciones aunque no

se tenga control sobre lo que va a ocurrir, muchas personas recurren a las apuestas pues

consideran que tienen la habilidad para vencer las posibilidades del azar, aún cuando la mayoría

por no decir que todos no puedan hacerlo. Cuando se habla de negocios, confiar de manera

excesiva puede resultar en un fracaso para la organización, ya que con esta actitud quienes toman

las decisiones ignoran los riesgos y por lo tanto fracasan en la evaluación objetiva de las

probabilidades de éxito.

La Perspectiva.- Esto se refiere a la manera en que se formulan o perciben los problemas o las

alternativas de decisión y a la manera en que estas influencias subjetivas pueden imponerse sobre

hechos objetivos, en la toma de decisión no se debe desestimar el futuro. Cuando por ejemplo

hablamos sobre una toma de decisión relacionada a los costos, al evaluar las alternativas, no se

debe dar más importancia a los costos y beneficios a corto plazo que a los de largo plazo, puesto

que el considerar únicamente los de corto plazo podría influir para dejar de lado aquellas variables

de largo plazo, lo que también podría resultar en situaciones negativas para la organización.

Precisamente la desestimación del futuro es, en parte, la explicación de los déficits presupuestarios

gubernamentales, la destrucción ambiental y la infraestructura urbana decadente.

Variables de Tiempo.- En el cambiante ambiente de negocios de la globalización, el premio es para

la acción rápida y sostenida del paso, las decisiones de negocios que se toman con mayor

conciencia pueden volverse irrelevantes e incluso desastrosas si los gerentes se toman demasiado

tiempo en hacerlas, por el otro lado eliminar el conflicto y tomar decisiones por cuenta propia sin

consultar a otras personas ó gerentes, puede acelerar la toma de decisión pero reduce la calidad y

efectividad de ésta.

Las siguientes son algunas recomendaciones que se pueden utilizar para la toma de decisiones

basadas en el uso de la tecnología de información:

� En lugar de planear a largo plazo y con información futurista, trabajar con información actual o

lo que también es denominado información de tiempo real, lo que no genera retrasos.

� Son involucradas las personas más eficaces y eficientes para la toma de decisiones dentro de

la organización, esto es basare en el criterio de personas expertas en la materia y de mucha

confianza, lo que les permite actuar con seguridad y rapidez, valoran las distintas opiniones,

estando consientes de que cuando las diferencias no se resuelvan, deben optar por la decisión

final del jefe.

Page 36: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

29

1.4.17 CUALIDADES PERSONALES PARA LA TOMA DE

DECISIONES.

Sin lugar a dudas existen ciertas cualidades o atributos personales que hacen que los

responsables de la toma de decisiones sean más buenos o más malos, con esta preocupación nos

hemos dado a la tarea de identificar cuatro son las cualidades que tienen mayor importancia a la

hora de analizar al tomador de decisiones:

� Experiencia.- Es lógico suponer que la habilidad de un mando para tomar decisiones crece con

la experiencia, la idea de “antigüedad laboral” en una organización con respecto a aquellos

individuos que tienen el mayor tiempo de servicio en otras, se basa en el valor de la

experiencia en el mismo puesto o en uno similar pero siempre dentro de la misma

organización, y por lo tanto reciben un mayor reconocimiento y un mejor salario aunque esto

implique un compromiso mayor, cuando se selecciona a un candidato para algún puesto de la

organización, la experiencia es un capítulo de gran importancia a la hora de la decisión. Los

éxitos o errores pasados conforman la base para la acción futura, se supone que los errores

previos son potencial de menores errores futuros, y que los éxitos logrados en épocas

anteriores serán repetidos. Para situaciones diferentes o nuevas, la experiencia puede acarrear

ventajas y desventajas, la principal desventaja es que la experiencia pueda ser inadecuada

para resolver el nuevo problema, resultando en una decisión errónea, y esto es debido en gran

parte al elemento humano, ya que las personas son voluntariosas y volubles y las soluciones

que resultan operativas un día, al otro ya no son validas. Pero también puede ser una gran

ventaja, pues da elementos para diferenciar entre situaciones similares o que alguna vez ya

fueron enfrentadas y solucionadas con éxito.

� Buen Juicio.- Se utiliza el término juicio para referirnos a la habilidad de evaluar información de

forma razonada, y está constituido por el sentido común, la madurez, la habilidad de

pensamiento y la experiencia del tomador de decisiones. Por lo tanto se supone que el juicio

mejora con la edad y la experiencia. El buen juicio se demuestra a través de ciertas habilidades

para percibir información importante, sopesar su importancia y evaluarla, el juicio es más

valioso en el manejo de problemas mal definidos o nuevos, porque precisamente de ese

análisis el tomador de decisiones sacará determinaciones y aplicará criterios para entender el

problema y simplificarlo sin distorsionarlo con la realidad.

� Creatividad.- La creatividad designa la habilidad del tomador de decisiones para combinar o

asociar ideas de manera única, para lograr un resultado nuevo y útil. El tomador de decisiones

Page 37: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

30

creativo es capaz de captar y entender el problema de manera más amplia, inclusive puede

identificar las posibles consecuencias que otros pasan por alto. Sin embargo el mayor valor de

la creatividad está en el desarrollo de alternativas, por lo que son creativos y pueden generar

suficientes ideas para encontrar el camino más óptimo y efectivo para resolver el problema.

� Habilidades Cuantitativas.- Es la habilidad de emplear técnicas presentadas como métodos

cuantitativos o cualitativos que involucran; a la investigación de operaciones, la programación

lineal, la teoría de líneas de espera y los modelos de inventarios, estas herramientas ayudan a

los mandos a tomar decisiones efectivas. Pero es muy importante no olvidar que las

habilidades cuantitativas no deben, ni pueden reemplazar al buen juicio en el proceso de toma

de decisiones.

1.5 EL MANEJO DE LA INFORMACIÓN.

En la actualidad, la información se ha convertido en una necesidad para tomar cualquier decisión,

ya que los mercados de productos y servicios están cada día mas saturados, y esto provoca la

gran diversidad de las empresas que buscan la mejor forma de satisfacer a sus clientes, pero

también conlleva un gran riesgo de perderlos por no tomar decisiones acertadas sobre sus

necesidades. La información debe contar con ciertas características que le den calidad y

asertividad, y que, además de la capacidad de disminuir la incertidumbre, ayuden al receptor a la

toma de decisiones más ventajosa. Estas propiedades son:

� Exactitud o precisión.- La información debe de acercarse lo más posible a la realidad y que

no contenga errores, para que sea confiable.

� Relevante.- Es referente al tipo de información que necesitamos bajo cierto contexto o fin,

con un nivel adecuado de detalle.

� A tiempo u oportuna.- Se debe contar con la información en el momento idóneo para la

toma de decisiones ya que si no se tiene de nada servirán los otros atributos de la

información, haciéndola inútil.

1.5.1 LA INFORMACIÓN Y LA COMPETITIVIDAD.

En un mundo competitivo el arma más poderosa es la información, la información ayuda a las

organizaciones a desempeñarse mejor, a competir con otros empresas, a innovar, a reducir el

Page 38: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

31

conflicto y adaptarse a las vicisitudes del mercado. La información mejora la diferenciación de

producto y servicios actualizados y más baratos, un mejor y más fácil acceso a los productos y

servicios, mejor calidad, respuestas y servicios más rápidos, mayor información de seguimiento y

estado del proceso, y una gama más amplia de productos y servicios.

1.5.2 LOS SISTEMAS DE INFORMACIÓN.

Un Sistema de Información (SI), es un conjunto de componentes interrelacionados que permite la

captura, procesamiento, almacenamiento y distribución de la información para el apoyo en la toma

de decisiones, la coordinación y el control en una institución, así como también puede apoyar a los

administradores y al personal en general a analizar problemas, visualizar cuestiones complejas y

crear nuevos productos.

El primer objetivo de los sistemas de información es dar respuesta a las necesidades de la

información dentro de las organizaciones, para ayudar a la toma de decisiones, y están

estructurados por los siguientes componentes estructurales:

� Entrada.- Son los datos, texto, voz e imágenes que ingresan al sistema de información y los

métodos, medios y equipos por medio de los cuales se capturan.

� Modelos.- Son abstracciones lógicas y matemáticas que manipulan la forma de entrada y datos

almacenados, para producir los resultados buscados, se representan por todas las técnicas de

modelado.

� Salidas.- Son los productos de los SI, que cubren una necesidad del usuario.

� Tecnología.- Son las herramientas y equipos que ayudan y dan soporte a los SI, como la

computadora, unidades de almacenamiento, telecomunicaciones y software.

� Base de Datos.- Es el lugar donde se almacenan todos los datos necesarios para que el

sistema funcione y pueda atender las necesidades para las que fue diseñado.

� Controles.- Son técnicas, lineamientos, entre otros, cuyo objetivo es la protección, integridad y

operación de los S

Page 39: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

32

Los objetivos del diseño son aquellos factores que influencian en el desempeño del ciclo de vida de

un SI, estas son:

� Integración.- Esta fuerza la determina la Tecnología de Información (TI), mediante la cual el SI

será capaz de eliminar los problemas espaciales y funcionales, de las diversas áreas de una

empresa.

� Interfaz usuario/sistema.- Para evitar la distorsión de la información por obstructores en el flujo,

por lo que es necesario implementar interfaces, acercando usuarios que utilicen la misma

información en diferentes niveles de procesamiento.

� Fuerzas competitivas.- La información para ser competitiva debe contener calidad y

puntualidad, para responder a las exigencias de la actualidad en la toma de decisiones.

� Calidad y Utilidad de la Información.- Está relacionada, a las necesidades de los usuarios de

un SI, y la forma como estos necesitan que la información se les presente.

� Requerimientos del sistema.- Son requerimientos operacionales inherentes al SI como la

confiabilidad, disponibilidad, flexibilidad, expectativa de vida, y el mantenimiento.

� Requerimiento de procesamientos de datos.- Se refiere al trabajo detallado del sistema

como volumen de datos, complejidad de operaciones en procesamiento, restricciones y

demandas computacionales.

� Factores organizacionales.- Son los factores que afectan la información requerida por cada

organización como tipo, tamaño, estructura y estilo gerencial.

� Requerimientos de costo-eficiencia.- Es referente a los costos de diseño de un SI contra los

beneficios económicos de implantarlo.

� Factores Humanos.- Son los principios a considerar, donde el SI servirá de apoyo al usuario y

no en contra de éste.

� Requerimientos de Factibilidad.- Son los componentes que determinan si un proyecto de SI es

candidato a realizarse, entre estas se consideran la factibilidad técnica, económica, legal,

operacional y de programación.

Page 40: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

33

Los SI se han apoyado en el uso de tecnologías de la Información para poder existir, estos

incluyen desde el uso de una maquina de escribir, hasta una supercomputadora, entonces

debemos entender que un SI se refiere al proceso global, mientras que las TI se refiere a los

medios y dispositivos tecnológicos para implementar un SI.

1.5.3 CICLO DE VIDA DEL SOFTWARE.

El ciclo de vida de cualquier software se puede concebir en fases, los cuales son:

� Nacimiento.- Esta fase da inicio al ciclo de vida con el surgimiento de una necesidad o de un

requerimiento por parte del usuario. En este momento debe hacerse un estudio de factibilidad

para decir si en realidad se justifica el desarrollo del sistema.

� Desarrollo.- Una vez realizado un estudio de factibilidad, se procede al desarrollo del sistema

en el cual se analizan los requerimientos y se elabora un diseño que servirá de base para el

mismo. Además, se elaboran los programas necesarios para que el sistema pueda operar. La

fase del desarrollo consiste en diseñar, codificar y adecuar los programas que se requieren

para resolver el problema del usuario.

� Operación.- En este momento el sistema terminado se implementa, y el usuario trabaja

introduciendo datos, obteniendo información y reportes, que soporten la operación de la

empresa. Si el sistema no satisface los requerimientos funcionales del usuario o si se detecta

algún error en los programas, es necesario pasar a la fase de mantenimiento.

� Mantenimiento.- Consiste en corregir los errores que se detectan en los programas o en las

funciones que realiza el sistema. En esta fase además el usuario puede agregar nuevos

requerimientos.

� Muerte.- Un sistema de información llega a esta fase cuando debe remplazarse por otro mejor,

a causa de la obsolescencia, o la inviabilidad del mantenimiento.

1.5.4 ETAPAS DEL DESARROLLO DE SOFTWARE.

Todo proyecto de ingeniería posee objetivos relacionados con la obtención de resultados, con

respecto a un proceso, producto ó servicio, el que es necesario generar a través de diversas

Page 41: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

34

actividades. Algunas de estas actividades pueden agruparse en fases porque globalmente

contribuyen a obtener un producto intermedio, necesario para continuar hacia el producto final y

facilitar la gestión del proyecto. Al conjunto de las fases empleadas se le denomina “etapas de

desarrollo”.

La definición de etapas facilita el control sobre los tiempos en que es necesario aplicar recursos de

todo tipo (personal, equipos, suministros, etc.) al proyecto. De esta forma la división de los

proyectos en fases y etapas es un primer paso para la reducción de su complejidad, tratándose de

escoger las partes de manera que sus relaciones entre sí sean lo más simples posibles. Un

proyecto se compone de las etapas sucesivas o tareas planificables:

� Análisis

� Diseño

� Codificación o desarrollo

� Implementación de sistemas

1.6 ENTORNOS DE PROGRAMACIÓN.

Un programa o software es una serie de instrucciones que manipula una computadora y producen

un resultado específico. Al proceso de escribir un programa o software se llama programación, y al

conjunto de instrucciones que se utilizan para construir un programa se le llama lenguaje de

programación.

A los lenguajes de programación se les puede clasificar de la siguiente forma:

� Lenguaje máquina.- Es el lenguaje elemental y nativo de los ordenadores, son conocidos

también como ejecutables, y usan números binarios para representar las instrucciones; este

juego de números binarios están compuestos de dos partes, la primera representa la

instrucción y la segunda la dirección. Cada fabricante y ordenador tiene su propio lenguaje

máquina.

� Lenguaje ensamblador.- Es el primer avance para la programación, ya que éste lenguaje

sustituye las instrucciones binarias por símbolos o palabras. Dado que es más fácil el uso de

símbolos que el uso de sistemas binarios, el lenguaje ensamblador es un traductor al lenguaje

maquina.

Page 42: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

35

� Lenguaje de bajo nivel.- Los lenguajes maquina y ensamblador se consideran de bajo nivel.

Esto se debe a que ambos utilizan instrucciones que están vinculadas directamente a un tipo

de computadora.

� Lenguaje de alto nivel.- Los lenguajes de alto nivel, utilizan instrucciones similares a los

lenguajes que utilizamos los humanos, y se pueden ejecutar en diversos tipos de

computadoras. Cabe mencionar que son lenguajes mas allegados al lenguaje natural de los

humanos.

� Lenguaje orientado a procedimientos.- Son los lenguajes de programación cuyas instrucciones

disponibles se utilizan para crear unidades independientes, conocidas como procedimientos. El

objetivo de un procedimiento es aceptar datos apropiados y transformados para producir un

resultado específico.

� Lenguaje orientado a objetos.- Este tipo de lenguaje, soporta la abstracción de la realidad

mediante objetos. Los objetos cuentan con características propias que los distinguen de sus

semejantes e interactúan con otros.

Actualmente existen diversos lenguajes de programación, cada uno cuenta con una colección de

instrucciones, características y entorno de programación propios, algunos de los más utilizados

son:

� Java

� Delphi

� C

� Basic

� Fortran

� Cobol

� Pascal

1.6.1 PROGRAMACIÓN ORIENTADA A OBJETOS.

La programación orientada a objetos es una evolución lógica de la programación estructurada, en

la que el concepto de variables locales a un procedimiento o función, que no son accesibles a otros

procedimientos y funciones, se hace extensible a los propios subprogramas que acceden a estas

Page 43: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

36

variables. Pero la programación orientada a objetos va mucho más allá. En realidad, cambia la

concepción de la metodología de diseño de los programas.

En la programación orientada a objetos, se definen objetos que conforman una aplicación, estos

objetos están formados por una serie de características y operaciones que se pueden realizar

sobre los mismos. Estos objetos no están aislados en la aplicación, sino que se comunican entre

ellos. Un objeto es una persona, animal o cosa. Se distingue de otros objetos por tener unas

determinadas características y “sirve” para algo, o dicho de otra forma, se pueden realizar distintas

operaciones con o sobre ese objeto.

Clases.- Las clases son declaraciones de objetos, también se podrían definir como abstracciones

de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un

objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es

programar una clase.

Propiedades.- Las propiedades o atributos son las características de los objetos. Cuando definimos

una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de

que las propiedades son algo así como variables donde almacenamos datos relacionados con los

objetos.

Métodos.- Son las funcionalidades asociadas a los objetos. Cuando estamos programando las

clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto.

Objetos.- Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar

tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a

partir de una clase se llama instanciar. Por ejemplo, un objeto de la clase persona es el nombre. El

concepto o definición de persona sería la clase, pero cuando ya estamos hablando de una persona

en concreto Pedro paramo, Luis miguel o cualquier otra, la llamamos objeto. Para crear un objeto

se tiene que escribir una instrucción especial que puede ser distinta dependiendo el lenguaje de

programación que se emplee, pero será algo parecido a esto.

miCoche = new Coche()

Con la palabra new especificamos que se tiene que crear una instancia de la clase que sigue a

continuación. Dentro de los paréntesis podríamos colocar parámetros con los que inicializar el

objeto de la clase coche.

Page 44: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

37

Estados en objetos.- Cuando tenemos un objeto sus propiedades toman valores. Por ejemplo,

cuando tenemos un coche la propiedad color tomará un valor en concreto, como por ejemplo rojo o

gris metalizado, el valor concreto de una propiedad de un objeto se llama estado. Para acceder a

un estado de un objeto para ver su valor o cambiarlo se utiliza el operador punto.

miCoche.color = rojo

El objeto es miCoche, luego colocamos el operador punto y por último el nombre de la propiedad a

la que deseamos acceder. En este ejemplo estamos cambiando el valor del estado de la propiedad

del objeto a rojo con una simple asignación.

Mensajes en objetos.- Un mensaje en un objeto es la acción de efectuar una llamada a un método.

Por ejemplo, cuando le decimos a un objeto coche que se ponga en marcha estamos pasándole el

mensaje “ponte en marcha”.

Para mandar mensajes a los objetos utilizamos el operador punto, seguido del método que

deseamos invocar.

miCoche.ponerseEnMarcha()

En este ejemplo pasamos el mensaje ponerseEnMarcha(). Hay que colocar paréntesis igual que

cualquier llamada a una función, adentro irían los parámetros.

Las propiedades que debe cumplir un lenguaje para ser considerado Orientado a Objetos son;

Encapsulamiento, Herencia, y Polimorfismo.

El Encapsulamiento.- Consiste en la propiedad que tienen los objetos de ocultar sus atributos, e

incluso los métodos, a otras partes del programa u otros objetos. La forma natural de construir una

clase es la de definir una serie de atributos que, en general, no son accesibles fuera del mismo

objeto, sino que únicamente pueden modificarse a través de los métodos que son definidos como

accesibles desde el exterior de esa clase.

La Herencia.- Es una de las principales ventajas de la POO. Esta propiedad permite definir clases

descendientes de otras, de forma que la nueva clase (la clase descendiente) hereda de la clase

antecesora todos sus atributos y métodos. La nueva clase puede definir nuevos atributos y

métodos o incluso puede redefinir atributos y métodos ya existentes (por ejemplo: cambiar el tipo

de un atributo o las operaciones que realiza un determinado método). Es la forma natural de definir

Page 45: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

38

objetos en la vida real. La mayoría de la gente diría, por ejemplo, que un chalet es una casa con

jardín. Tiene las mismas características y propiedades u operaciones que pueden realizarse sobre

una casa y, además, incorpora una nueva característica, el jardín. En otras ocasiones, se añadirá

funcionalidad (métodos) y no atributos. Esta propiedad permite la reutilización del código, siendo

muy fácil aprovechar el código de clases ya existentes, modificándolas mínimamente para

adaptarlas a las nuevas especificaciones.

El Polimorfismo.- Permite que un mismo mensaje enviado a objetos de clases distintas haga que

estos se comporten también de forma distinta (objetos distintos pueden tener métodos con el

mismo nombre o incluso un mismo objeto puede tener nombres de métodos idénticos pero con

distintos parámetros).

1.6.2 JAVA.

El lenguaje Java fue creado por Sun Microsystems Inc. en un proceso por etapas que arranca en

1990, año en el que Sun creó un grupo de trabajo, liderado por James Gosling, para desarrollar un

sistema para controlar electrodomésticos e incluso PDAs o Asistentes Personales (pequeños

ordenadores) que, además, permitiera la conexión a redes de ordenadores. Se pretendía crear un

hardware polivalente, con un Sistema Operativo eficiente (SunOS) y un lenguaje de desarrollo

denominado Oak (roble), el precursor de Java.

El proyecto finalizó en 1992 y resultó un completo fracaso debido al excesivo coste del producto,

con relación a alternativas similares, tras lo cual el grupo se disolvió. Por entonces aparece Mosaic

y la World Wide Web. Después de la disolución del grupo de trabajo, únicamente quedaba del

proyecto el lenguaje Oak. Gracias a una acertada decisión de distribuir libremente el lenguaje por

la Red de Redes y al auge y la facilidad de acceso a Internet, propiciado por la WWW, el lenguaje

se popularizó y se consiguió que una gran cantidad de programadores lo depurasen y terminasen

de perfilar la forma y usos del mismo. A partir de este momento, el lenguaje se difunde a una

velocidad vertiginosa, añadiéndosele numerosas clases y funcionalidad para TCP/IP. El nombre

del lenguaje tuvo que ser cambiado ya que existía otro llamado Oak. El nombre “Java” surgió en

una de las sesiones de “brainstorming” celebradas por el equipo de desarrollo del lenguaje.

Buscaban un nombre que evocara la esencia de la tecnología (viveza, animación, rapidez,

interactividad). Java fue elegido de entre muchísimas propuestas. No es un acrónimo, sino

únicamente algo humeante, caliente y que a muchos programadores les gusta beber en grandes

cantidades: una taza de café (Java en argot Inglés americano). De esta forma, Sun lanzó las

primeras versiones de Java a principios de 1995. Desde entonces, Sun ha sabido manejar

Page 46: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

39

inteligentemente el éxito obtenido por su lenguaje, concediéndose licencias a cualquiera sin ningún

problema, fomentando su uso entre la comunidad informática y extendiendo las especificaciones y

funcionalidad del lenguaje.

El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos

más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la

manipulación directa de punteros o memoria, las aplicaciones Java están típicamente compiladas

en un bytecode, aunque la compilación en código máquina nativo también es posible. En el tiempo

de ejecución, el bytecode es normalmente interpretado o compilado a código nativo para la

ejecución, aunque la ejecución directa por hardware del bytecode por un procesador Java también

es posible.

La implementación original y de referencia del compilador, la máquina virtual y las librerías de

clases de Java fueron desarrollados por Sun Microsystems en 1995. Desde entonces, Sun ha

controlado las especificaciones, el desarrollo y evolución del lenguaje a través del Java Community

Process, si bien otros han desarrollado también implementaciones alternativas de estas

tecnologías de Sun, algunas incluso bajo licencias de software libre. Entre noviembre de 2006 y

mayo de 2007, Sun Microsystems liberó la mayor parte de sus tecnologías Java bajo la licencia

GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que

prácticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun

que se requiere para ejecutar los programas Java todavía no es software libre).

Los objetivos de Gosling eran implementar una máquina virtual y un lenguaje con una estructura y

sintaxis similar a C++. Entre junio y julio de 1994, tras una sesión maratónica de tres días entre

John Gaga, James Gosling, Joy Naughton, Wayne Rosing y Eric Schmidt, el equipo reorientó la

plataforma hacia la Web, la promesa inicial de Gosling era Write Once, Run Anywhere (Escríbelo

una vez, ejecútalo en cualquier lugar), proporcionando un lenguaje independiente de la plataforma

y un entorno de ejecución (la JVM) ligero y gratuito para las plataformas más populares de forma

que los binarios (bytecode) de las aplicaciones Java pudiesen ejecutarse en cualquier plataforma.

El entorno de ejecución era relativamente seguro y los principales navegadores web pronto

incorporaron la posibilidad de ejecutar applets Java incrustadas en las páginas web. Java ha

experimentado numerosos cambios desde la versión primigenia, JDK 1.0, así como un enorme

incremento en el número de clases y paquetes que componen la librería estándar. La

programación orientada a objetos expresa un programa como un conjunto de estos objetos, que

colaboran entre ellos para realizar tareas. Esto permite hacer los programas y módulos más fáciles

de escribir, mantener y reutilizar.

Page 47: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

40

De esta forma, un objeto contiene toda la información que permite definirlo e identificarlo frente a

otros objetos pertenecientes a otras clases e incluso frente a objetos de una misma clase, al poder

tener valores bien diferenciados en sus atributos. A su vez, los objetos disponen de mecanismos

de interacción llamados métodos que favorecen la comunicación entre ellos. Esta comunicación

favorece a su vez el cambio de estado en los propios objetos. Esta característica lleva a tratarlos

como unidades indivisibles, en las que no se separan ni deben separarse el estado y el

comportamiento.

Los métodos (comportamiento) y atributos (estado) están estrechamente relacionados por la

propiedad de conjunto. Esta propiedad destaca que una clase requiere de métodos para poder

tratar los atributos con los que cuenta. El programador debe pensar indistintamente en ambos

conceptos, sin separar ni darle mayor importancia a ninguno de ellos, hacerlo podría producir el

hábito erróneo de crear clases contenedoras de información por un lado y clases con métodos que

manejen a las primeras por el otro. De esta manera se estaría realizando una programación

estructurada camuflada en un lenguaje de programación orientado a objetos. Esto difiere de la

programación estructurada tradicional, en la que los datos y los procedimientos están separados y

sin relación, ya que lo único que se busca es el procesamiento de unos datos de entrada para

obtener otros de salida. La programación estructurada anima al programador a pensar sobre todo

en términos de procedimientos o funciones, y en segundo lugar en las estructuras de datos que

esos procedimientos manejan. En la programación estructurada sólo se escriben funciones que

procesan datos. Los programadores que emplean éste nuevo paradigma, en cambio, primero

definen objetos para luego enviarles mensajes solicitándoles que realicen sus métodos por sí

mismos.

Java es un lenguaje de desarrollo de propósito general, y como tal es válido para realizar todo tipo

de aplicaciones profesionales, Incluye una combinación de características que lo hacen único y

está siendo adoptado por multitud de fabricantes como herramienta básica para el desarrollo de

aplicaciones comerciales de gran repercusión.

Una de las características más importantes es que los programas ejecutables, creados por el

compilador de Java, son independientes de la arquitectura, se ejecutan indistintamente en una

gran variedad de equipos con diferentes microprocesadores y sistemas operativos. De momento,

es público, puede conseguirse un JDK (Java Developer's Kit) o Kit de desarrollo de aplicaciones

Java gratis. No se sabe si en un futuro seguirá siéndolo.

Permite escribir Applets (pequeños programas que se insertan en una página HTML) y se ejecutan

en el ordenador local, aplicaciones para intra-redes, cliente/servidor, distribuidas en redes locales y

Page 48: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

41

en Internet, es fácil de aprender y está bien estructurado. Las aplicaciones son fiables, puede

controlarse su seguridad frente al acceso a recursos del sistema y es capaz de gestionar permisos

y criptografía. También, según Sun, la seguridad frente a virus a través de redes locales e Internet

está garantizada. Aunque al igual que ha ocurrido con otras tecnologías y aplicaciones, se han

descubierto, y posteriormente subsanado, “agujeros” en la seguridad de Java.

Java es un lenguaje de propósito general, puede programarse en él cualquier cosa: Aplicaciones

independientes; como con cualquier otro lenguaje de propósito general, Applets; pequeñas

aplicaciones que se ejecutan en un documento HTML, siempre y cuando el navegador soporte

Java, como ocurre con los navegadores HotJava y las últimas versiones de Netscape y el

explorador de Internet de Microsoft.

La seguridad tiene importancia fundamental en la creación de applets puesto que estos programas

son ejecutados en el navegador de cada usuario, es necesario poder garantizarle que su sistema y

sus datos están seguros de posibles virus y/o fisgoneos de terceras personas que podrían utilizar

la red como medio para fines más o menos oscuros. Es un lenguaje bien estructurado, sin punteros

y sin necesidad de tener que controlar la asignación de memoria a estructuras de datos u objetos.

Para los programadores en C++ también es sencillo el cambio, ya que la sintaxis es prácticamente

la misma que en este lenguaje, impide hacer cosas extrañas y, además, no permite abandonar la

programación orientada a objetos, como ocurre con otros lenguajes de programación.

Principales Características:

� Es intrínsecamente orientado a objetos.

� Funciona perfectamente en red.

� Aprovecha características de la mayoría de los lenguajes modernos evitando sus

inconvenientes, en particular los del C++.

� Tiene una gran funcionalidad gracias a sus librerías (clases).

� No tiene punteros manejables por el programador, aunque los maneja interna y

transparentemente.

� El manejo de la memoria no es un problema, la gestiona el propio lenguaje y no el

programador.

Page 49: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

42

� Genera aplicaciones con pocos errores posibles.

� Incorpora Multi-Threading (para permitir la ejecución de tareas concurrentes dentro de un

mismo programa).

El lenguaje Java puede considerarse como una evolución del C++. La sintaxis es parecida a la de

este lenguaje, a pesar de que puede considerarse como una evolución del C++ no acarrea los

inconvenientes del mismo, ya que Java fue diseñado partiendo de cero, es decir, no necesitaba ser

compatible con versiones anteriores de ningún lenguaje como ocurre con C++ y C. Gracias a que

fue diseñado partiendo de cero ha conseguido convertirse en un lenguaje orientado a objetos puro,

limpio y práctico. No permite programar mediante otra técnica que no sea la programación

orientada a objetos (POO). El lenguaje estrictamente hablando es interpretado, y necesita de un

proceso previo de compilación. Una vez compilado el programa, se crea un fichero que almacena

lo que se denomina bytecodes o j_code (pseudocódigo prácticamente al nivel de código máquina).

Para ejecutarlo, es necesario un intérprete, la JVM (Java Virtual Machine) máquina virtual Java. De

esta forma, es posible compilar el programa en una estación UNIX y ejecutarlo en otra con

Windows95 utilizando la máquina virtual Java para Windows95. Esta JVM se encarga de leer los

bytecodes y traducirlos a instrucciones ejecutables directamente en un determinado

microprocesador, de una forma bastante eficiente.

1.6.3 JAVA Y LA BASE DE DATOS.

Java es independiente de motor de base de datos, pero provee la conexión a las bases de datos

más utilizadas como son sybase, informix, mysql y oracle por nombrar algunas, en el presente

estudio el desarrollo se llevo a cabo con la base de datos oracle, en su versión libre XE express.

Una Base de Datos es una serie de tablas que contienen información ordenada en alguna

estructura que facilita el acceso a esas tablas, ordenarlas y seleccionar filas de las tablas según

criterios específicos. Las bases de datos generalmente tienen índices asociados a alguna de sus

columnas, de forma que el acceso sea lo más rápido posible. Las Bases de Datos son, sin lugar a

dudas, las estructuras más utilizadas en ordenadores; ya que son el corazón de sistemas

informáticos tan complejos como el censo de una nación, la nómina de empleados de una

empresa, el sistema de facturación de una multinacional, o el medio por el que nos expiden el

billete para las próximas vacaciones. En el caso, por ejemplo, del registro de trabajadores de una

empresa, se puede imaginar una tabla con los nombres de los empleados y direcciones, y sueldos,

retenciones y beneficios. Para organizar esta información, se puede empezar con una tabla que

contenga los nombres de los empleados, su dirección y su número de teléfono. También se podría

Page 50: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

43

incluir la información relativa a su sueldo, categoría, última subida de salario, etc. Los rangos de

salario para diferentes empleados probablemente sean iguales, por lo que se podría optimizar la

tabla almacenando solamente el tipo de salario en la tabla de empleados y los rangos de salario

(en euros) en otra tabla, indexada a través del tipo de salario. Por ejemplo:

Los datos de la columna Tipo de Salario están referidos a la segunda tabla. Se pueden imaginar

muchas categorías para estas tablas secundarias, como por ejemplo la provincia de residencia y

los tipos de retención de Hacienda, o si tiene seguro de vida, vivienda propia, coche, apartamento

en la playa, casa en el campo, etc. Cada tabla tiene una primera columna que sirve de clave para

las demás columnas, que ya contienen datos. La construcción de tablas en las bases de datos es

tanto un arte como una ciencia, y su estructura está referida por su forma normal. Las tablas se

dice que están en primera, segunda o tercera forma normal, o de modo abreviado como 1NF, 2NF

o 3NF.

Primera Forma Normal.- Cada celda de la tabla debe tener solamente un valor (nunca un conjunto

de valores). (1NF)

Segunda Forma Normal.- 1NF y cada columna que no es clave depende completamente de la

columna clave. Esto significa que hay una relación uno a uno entre la clave primaria y las restantes

celdas de la fila. (2NF)

Tercera Forma Normal.- 2NF y todas las columnas que no son clave son mutuamente

independientes. Esto significa que no hay columnas de datos que contengan datos calculados a

partir de los datos de otras columnas. (3NF)

Actualmente todas las bases de datos se construyen de forma que todas sus tablas están en la

Tercera Forma Normal (3NF); es decir, que las bases de datos están constituidas por un número

bastante alto de tablas, cada una de ellas con relativamente pocas columnas de información.

Page 51: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

44

1.7 DISEÑO DE BASES DE DATOS.

Las bases de datos son los componentes estructurales clave en el diseño de un sistema de

información, es la principal fuerza de integración del sistema de información de una organización.

Debe lograrse un buen ajuste en las necesidades de procesamiento de toma de decisiones de la

organización y la estructura y composición de la base de datos, si no se logra esto, se desperdician

los esfuerzos del analista de sistemas en el diseño de los demás componentes estructurales.

1.7.1 BASES DE DATOS.

Son una colección o un depósito de datos integrados, con redundancia controlada y una estructura

que refleje las interrelaciones y restricciones existentes en el mundo real. Los datos, que han de

ser compartidos por diferentes usuarios y aplicaciones, deben mantenerse independientes de

éstas, y su definición y descripción (únicas para cada tipo de datos), han de estar almacenadas

junto con los procedimientos de actualización y recuperación, deben de ser comunes y estar bien

determinados, habrán de ser capaces de conservar la seguridad (integridad, confidencialidad y

disponibilidad) del conjunto de los datos.

El diseño adecuado aunado a un acertado análisis de las necesidades del sistema, trascenderá en

las siguientes ventajas:

� Independencia de los datos respecto a los tratamientos y viceversa.

� Coherencia de los resultados

� Disponibilidad de datos para los sistemas

� Valor informativo ya que la información está relacionada

� Documentación de la información mejor y más normalizada, la cuál esta integrada con los

datos

� Eficiencia en la recopilación de la información, validación y entrada de los datos.

En los sistemas de información se puede observar la existencia de tres estructuras distintas:

� Lógica externa.-Es la vista del usuario en particular, con sus respectivos privilegios.

� Lógica global.- Son las vistas de esquemas conceptuales.

� Física o interna.- La forma en que se almacenan los datos en un medio electromagnético.

Page 52: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

45

Una base de datos simple, no seria de mucha ayuda para un sistema de información que tuviese

que gestionarla, para ello existen aplicaciones especiales para esa tarea, llamados Sistemas

Manejadores de Bases de Datos o Sistemas de Gestión de Bases de Datos (SMBD).

1.7.2 SISTEMAS GENERADORES DE BASES DE DATOS.

Un conjunto coordinado de programas, procedimientos, lenguajes, etc., que suministra tanto a los

usuarios no informáticos como a los analistas, programadores, o al mismo administrador del

sistema, los medios necesarios para describir, recuperar y manipular los datos almacenados en la

base, manteniendo su seguridad.

El SMBD, tiene las siguientes funciones principales:

� Función de descripción o definición.- Esta función debe permitir al administrador de la base

especificar los elementos de datos que la integran, su estructura y las relaciones que existen

entre ellos, las reglas de integridad, semántica, y los controles a efectuar antes de autorizar el

acceso a la base, etc., así como también las características de tipo físico y las vistas lógicas de

los usuarios. Esta función, llevada a cabo por el Lenguaje de Descripción o Definición de Datos

(DLL), propio de cada SMBD, debe suministrar los medios para definir las tres estructuras de

datos (externa, global e interna), especificando las características de los datos a cada uno de

estos niveles.

� Función de manipulación.- Esta función permite a los usuarios de la base buscar, añadir,

suprimir o modificar los datos de la misma, siempre de acuerdo con las especificaciones y las

normas de seguridad dictadas por el administrador. La función de manipulación se lleva a cabo

por medio de un Lenguaje de Manipulación de Datos (LMD), que facilita los instrumentos

necesarios para la realización de estas tareas.

� Función de utilización.- Es una función que reúne las interfaces necesarias por los usuarios

para comunicarse con la base, y proporciona un conjunto de procedimientos para el

administrador, entre los que se encuentran el Lenguaje de Control de Datos (LCD). En la

mayoría de los SMBD existen funciones de servicio, como cambiar la capacidad de los

archivos, obtener estadísticas de utilización, cargar archivos, etc.; principalmente, las

relacionadas con la seguridad física (copias de seguridad, reinicio en caso de caída del

sistema) y de protección frente a accesos no autorizados, las cuales se encuentran

comprendidas en la función de utilización.

1 De la función controlada, Pág. 177 Fundamentos de Administración. Münch Galindo, García Martínez. Ed. Trillas 2007.

Page 53: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

46

CAPITULO II DATOS GENERALES DE LA EMPRESA.

2.1 EL UMBRAL DE LA EMPRESA

El Sr. Pedro Reyes Moctezuma, fundo la actual empresa ensambladora de bicicletas en el año de

1989 en el estado de Guanajuato, específicamente en la ciudad de León, la cual se encuentra

ubicada en la calle de Laguna del Rey No. 169, Col. Brisas del Lago, CP 37207

Desde su fundación, la empresa se ha dedicado al ensamblado de bicicletas de diferentes

rodadas, y su expansión es debido al incremento de la demanda, que gracias a la calidad del

trabajo realizado se ha venido incrementando año con año en todas las medidas que se trabajan.

Este es el medio por el cual la organización ha podido desarrollarse creciendo desde un negocio

familiar, ya que en un principio el Sr. Reyes y su Esposa eran los que armaban las bicicletas, hasta

una planta ensambladora con un promedio de producción de 500 piezas de diferentes rodadas.

Actualmente la introducción de nuevas marcas y modelos ha transformado la mentalidad de los

dueños, y ha hecho necesario que esta empresa se vuelva más competitiva para poder integrarse

a una economía globalizada, por lo que es importante el desarrollar estrategias que faciliten estas

premisas, con esta preocupación es que han desarrollado una organización estructurada en los

principios básicos de la Administración.

2.2 ORGANIGRAMA DE LA EMPRESA.

GERENTE

GENERAL

GERENTE

GENERAL

STAFF

GERENTE DE

PRODUCCIÓN.

GERENTE DE

VENTAS

GERENTE DE

SISTEMAS

GERENTE DE

FINANZAS

Page 54: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

47

2.3 FUNCIONES DE LA ORGANIZACIÓN DE LA EMPRESA.

Gerente General.- Es la persona encargada de dirigir el rumbo de la organización, su trabajo

consiste en marcar las políticas, metas y objetivos de la empresa, es responsable de los

trabajadores y su bienestar, y al mismo tiempo debe de evaluar las diferentes alternativas

existentes para resolver los problemas a los que se enfrente la compañía, tomando las decisiones

pertinentes siempre teniendo en mente el beneficio económico y social de la organización, todo

esto dentro del marco de desarrollo Nacional del país para las PyMES (pequeñas y medianas

empresas), el desarrollo sustentable y el marco de legalidad aplicable al tipo de industria al que

pertenece.

Gerente de Sistemas.- Es el responsable de mantener los equipos de cómputo en las condiciones

adecuadas para que presten el servicio para el que fueron adquiridas, por lo que su trabajo

también implica estar al pendiente de las actualizaciones en línea y de los registros y permisos

pertinentes para la utilización de las diferentes aplicaciones que se utilizan ó pudieran utilizarse.

Aunado a esto, es también el que se encarga del tratamiento de la información, dándole la

estructura y forma necesarias para su posterior utilización.

Gerente de Ventas.- Es la persona asignada para promocionar nuestros productos y supervisar su

entrega, es responsable de otorgar descuentos, precios especiales, distribuciones de marca,

concesiones de transporte, identifica los diferentes canales de distribución, en base a sus

estadísticas de ventas, propone índices de producción, adquiere compromisos de ventas a nombre

de la organización y tiene a su comisión el almacén de producto terminado.

Gerente de Finanzas.- Es la persona comisionada para permanecer al tanto de los recursos

económicos de la empresa, su obligación también le confiere el obtener los mejores convenios

financieros que le permitan a la organización en un momento determinado capitalizare para

efectuar alguna inversión a los costos o intereses mas adecuados a nuestros ingresos, con las

diferentes instituciones nacionales e internacionales dedicados a estos servicios.

Gerente de Producción.- Es el individuo que se encarga de mantener en las condicione adecuadas

las instalaciones, existencias de materia prima, tiempos de manufactura y de entrega, capacitación

y adiestramiento, equipo y herramental, características de calidad, balanceo de líneas, entre otras

actividades, para ensamblar los productos necesarios y satisfacer la demanda que determine el

departamento de ventas, para esto es responsable de realizar los convenios necesarios con los

proveedores de insumos, y de controlar el almacén de materia prima principalmente en lo que

Page 55: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

48

respecta a la calidad, existencias, y capacidad de almacenamiento, por lo que se apoya del área

de compras y de la planificación de la producción.

Staff.- Conjunto de personas que bajo el mando del gerente general lo asesoran en la identificación

de las diferentes alternativas de solución.

2.4 LOCALIZACIÓN GEOGRÁFICA DE LA PLANTA.

La Empresa tiene sus instalaciones en la calle de Paseo del Moral No. 330 Colonia Jardines del

Moral CP. 37160 Cd. León Guanajuato México.

Imagen 2.1 Vista Satelital de la Empresa

Page 56: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

49

CAPITULO III ACTIVIDADES DE LA EMPRESA.

3.1 NUESTROS PROCESOS.

3.1.1 HISTORIA DE LAS BICICLETAS.

En el Antiguo Egipto había máquinas rudimentarias compuestas por dos ruedas unidas por una

barra. También en China encontramos una máquina muy similar, pero con las ruedas de bambú.

En la cultura azteca, se han encontrado vestigios de lo que podría ser algo parecido a un vehículo

con dos ruedas y que se impulsaba con un velamen. Las primeras noticias que se tienen sobre una

bicicleta datan del año 1490, aproximadamente, en la obra Codex Atlanticus, de Leonardo da Vinci.

En ellos puede verse un boceto de una bicicleta con transmisión de cadena impulsada por unos

pedales, mismo método empleado por las actuales.

En 1790 el conde francés Mede de Sivrac habría inventado en París el “celerífero”, al que también

se llama “caballo de ruedas”. Consiste en un listón de madera, terminado en una cabeza de león,

de dragón o de ciervo, y montado sobre dos ruedas. No tiene articulación alguna, y para las

maniobras hay que echar pie a tierra; esa misma rigidez hacía que todas las variaciones del

terreno repercutieran sobre el cuerpo de su montura.

Fig. 3.1 La draisiana

El draisine (1820) era el primer vehículo de dos ruedas dispuestas en línea, y el primer vehículo

práctico de propulsión humana. En 1817, el barón alemán Karl Christian Ludwig Drais von

Page 57: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

50

Sauerbronn inventó el primer vehículo de dos ruedas, al que llamó; “máquina andante” (en alemán

Laufmaschine), precursora de la bicicleta y la motocicleta. Esta “máquina andante” consistía en

una especie de carrito de dos ruedas, colocadas una detrás de otra, y un manillar. La persona se

mantenía sentada sobre una pequeña montura, colocada en el centro de un pequeño marco de

madera. Para moverse, empujaba alternativamente con el pie izquierdo y el derecho hacia

adelante, en forma parecida al movimiento de un patinador. Con este impulso, el vehículo adquiría

una velocidad casi idéntica a la de un coche. Sus brazos descansaban sobre un “apoyabrazos” de

hierro, y con las manos sostenía una vara de madera, unida a la rueda delantera, que giraba en la

dirección hacia la cual quería ir el conductor.

Este invento estaba basado en la idea de que una persona, al caminar, desperdicia mucha fuerza

por tener que desplazar su peso en forma alternada de un pie al otro. Drais logró crear este

sencillo vehículo que le permitió al hombre evitar ese trabajo. Esta máquina, denominada

inicialmente draisiana en honor a su inventor y posteriormente llamada más comúnmente

velocípedo, evolucionó rápidamente.

Fig. 3.2 Ciclista montado en un velocípedo en Cracovia, Polonia.

La construcción de la primera bicicleta con pedales se atribuye al escocés Kirkpatrick Macmillan,

en el año 1839. Una copia de la bicicleta de Macmillan se exhibe en el Museo de Ciencias en

Londres, Inglaterra. Macmillan nunca patentó el invento, que posteriormente fue copiado en 1846

por Gavin Dalzell de Lesmahagow, quien lo difundió tan ampliamente que fue considerado durante

cincuenta años el inventor de la bicicleta. Cerca de 1890, el inglés John Boyd Dunlop (aficionado al

ciclismo y creador de la misma empresa) inventó una cámara de tela y caucho, que se inflaba con

aire y se colocaba en la llanta, para evitar pinchazos, Dunlop inventó además una cubierta también

Page 58: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

51

de caucho, estos inventos de Dunlop casi no han sufrido variaciones significativas desde su

invención.

3.1.2 CLASIFICACIÓN GENERAL DE BICICLETAS.

La principal clasificación de las bicicletas toma en cuenta la función para la que están diseñadas,

así los principales tipos son:

Bicicleta Todo Terreno (BTT) o de Montaña.- Es una bicicleta destinada a terrenos agrestes,

por lo que la resistencia de sus partes es su característica principal, así como lo es la

protección de sus partes al lodo y la tierra, también cuenta con varias relaciones de transmisión

para adaptar el pedaleo a las condiciones del terreno.

Fig. 3.3 Bicicleta Todo Terreno (BTT) o de Montaña

Cross o BMX.- Es una bicicleta de cuadro y ruedas de diámetro pequeño, el tamaño de ruedas

más común es de 20" y está destinada principalmente a acrobacias y competiciones de

velocidad con saltos, normalmente no cuenta con cambio de velocidades, sino con una

relación fija.

Fig. 3.4 Cross o BMX

Page 59: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

52

Estática o para Ejercicios.- Es una máquina de ejercicios con un disco que es accionado a

través de unos pedales y con un sistema de fricción cuya fuerza puede regularse para simular

pendientes, por lo general dispone de un medidor de velocidad y uno de kilometraje, los más

sofisticados tienen contador de pulsaciones y hacen cálculos estimativos de las calorías

gastadas en el ejercicio además de registrar los datos en una memoria.

Fig. 3.5 Estática o para Ejercicios

Bicicleta de Carreras.- Es una bicicleta de cuadro y ruedas relativamente grandes en donde la

ligereza es importante, así mismo el manubrio tiene diseños particulares con cuernos para que

el ciclista adopte posiciones aerodinámicas.

Fig.3.6 Bicicleta de Carreras

Urbana o de Turismo.- Es una bicicleta destinada a la ciudad o a caminos en buen estado,

destaca su asiento y manubrio cómodos, además de contar generalmente con una o más

Page 60: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

53

canastillas para el transporte de objetos, también es común que tengan accesorios urbanos

como corneta, espejos, luces y catadióptricos reflectantes.

Fig. 3.7 Urbana o de Turismo

Híbrida.- La bicicleta híbrida apareció, con esa denominación, un poco después que las

bicicletas todo terreno, su estructura o cuadro combina características de la bicicleta de

carretera y la de montaña, sus ruedas son normalmente de 28" y más estrechas que las de

montaña, la horquilla de suspensión, en caso de llevarla, no está tan reforzada como en las

BTT, en general pesan menos que estas últimas y sus componentes no son tan resistentes,

están diseñadas para un uso en caminos tranquilos o la ciudad, por lo que suelen también

equipar luces y otros elementos de seguridad y de utilidad como portabultos.

Bicicleta para discapacitados.- Hay varios tipos de bicicleta para personas con diversos tipos

de discapacidad:

Handbikes.- En las que la dirección, la propulsión y los frenos se accionan con los brazos.

Triciclo.- Ciclos de tres ruedas para discapacitados con problemas de coordinación y

equilibrio.

Fig. 3.8 Bicicletas para discapacitados (izquierda: Handbikes; derecha: Triciclo

Page 61: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

54

Tándem.- Bicicletas con doble pedal para discapacitados visuales que necesitan ir

acompañados de un guía.

Cuadriciclo.- Bicicletas de cuatro ruedas y doble pedal para discapacitados psíquicos que

suelen ir con un monitor o acompañante.

Bicicleta generadora de electricidad.- Bicicleta estática que permite obtener energía eléctrica del

pedaleo.

Velomóvil.- Bicicleta o triciclo bajo y muy aerodinámico, cubierto por un Chasis que suele ser de

fibra de vidrio

.

Fig. 3.9 Velomóvil

Bicicleta de Transporte.- Particularmente usadas en los Países Bajos, se caracterizan por tener el

cuadro reforzado con una segunda barra superior para aportar más rigidez a la estructura de la

bicicleta, además del trasportín o porta bultos trasero tienen una parrilla delantera donde cargar la

mercancía, algunas disponen de un cajón delantero, por lo que tienen mayor capacidad de carga,

pero son más pesadas.

Bicicleta 29 Aro 29, o 29er (Two-Niners, en Inglés).- Son bicicletas de montaña que usan ruedas

ISO de 622 mm.

3.1.2.1 BICICLETA PLEGABLE.

La bicicleta plegable puede hacerse más pequeña doblándola en dos o más partes, este tipo de

bicicleta está diseñada para que cuando no esté en uso, pueda adquirir una forma que ocupe

menos espacio, ya sea para fines de almacenamiento o transporte, el hecho de poder plegarla

hace que sea más fácil de transportar y guardar, gracias a ello se puede guardar en casa o en el

Page 62: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

55

trabajo, se puede combinar su uso con el transporte público o se puede llevar en auto , en barco o

avión con más facilidad que una bicicleta tradicional, la idea de una bicicleta plegable o

desmontable es casi tan vieja como la bicicleta misma, se dice que cada novedad tecnológica en el

mundo de las bicis ya ha sido probada hace al menos cien años, y como prueba, tenemos el

velocípedo, que existía en una forma plegable en los años de 1880 (se podía desmontar la rueda

grande y plegar el cuadro para alojar la bici en una bolsa específica). Recientemente, la

popularidad de este tipo de bicicleta ha ido creciendo, durante los años de 1960, hubo un aumento

de la demanda de bicicletas plegables con ruedas pequeñas, el líder fue el Moulton (aunque a

pesar de tener ruedas pequeñas, sólo algunos modelos eran desmontables), cuyo estilo cogió el

humor de Londres durante esa época. Actualmente, la mayoría de bicicletas plegables o

desmontables tiene ruedas menores que las de una bicicleta convencional, pero casi para cada

tipo de bici, desde bici de compras, hasta bicicleta de montaña, carreras, o incluso reclinada, se

puede encontrar un diseño plegable.

En los años 70 fueron comunes las bicicletas infantiles o de paseo plegable, se trataba de

bicicletas sencillas, generalmente sin cambios, en tiempos más recientes se ha desarrollado una

industria de bicicletas plegables de altas prestaciones, con todo tipo de comodidades: cambios,

suspensión, etc. En el año 2006 Sir Clive inventó una bicicleta plegable A-bike con unas

dimensiones minúsculas una vez plegada.

Fig. 3.10 Bicicleta plegable moderna de gama alta

Page 63: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

56

3.2 DIAGRAMA DE PROCESO DEL ENSAMBLADO.

DIAGRAMA DE FLUJO DE PROCESO

Diagrama No. 1 Hoja: 1 De: 1 Método: Actual

Producto: RIN DELANTERO

Lugar: Planta: LEON

Operario: CENOBIO MOCTEZUMA

Actividad: ENSAMBLADO

Elaboró: Pedro Escobedo

Fecha: 02 04 2009

RESUMEN

Actividad Cantidad Tiempo

OPERACIONES

TRANSPORTE

DEMORA

ALMACENAMIENTO

INSPECCIÓN

OPERACIÓN COMBINADA

Total

Montaje de Llanta y Cámara

Transporte Hacia Ensamblado del Cuadro

5 Inflado de Llanta a 30 lbs/plg2

Posicionamiento de la Masa

Inserción de Rayos en la Masa

Enrayado del Rin

(Colocación del Rin)

Ajuste y Nivelación de Rayos.

Fin

1

3

4

1

1

2

Page 64: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

57

DIAGRAMA DE FLUJO DE PROCESO

Diagrama No. 2 Hoja: 1 De: 1 Método: Actual

Producto: RIN TRASERO

Lugar: Planta: LEON

Operario: CENOBIO MOCTEZUMA

Actividad: ENSAMBLADO

Elaboró: Pedro Escobedo

Fecha: 02 04 2009

RESUMEN

Actividad Cantidad Tiempo

OPERACIONES

TRANSPORTE

DEMORA

ALMACENAMIENTO

INSPECCIÓN

OPERACIÓN COMBINADA

Total

Montaje de Llanta y Cámara

Transporte Hacia Ensamblado del Cuadro

5 Inflado de Llanta a 30 lbs/plg2

Posicionamiento de la Masa

Inserción de Rayos en la Masa

Enrayado del Rin

(Colocación del Rin)

Ajuste y Nivelación de Rayos.

Fin

1

3

4

1

1

2

6 Colocación del SPRO de seis pasos (cambios de velocidad)

Page 65: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

58

DIAGRAMA DE FLUJO DE PROCESO

Diagrama No. 3 Hoja: 1 De: 3 Método: Actual

Producto: CUADRO DE BICICLETA

Lugar: Planta: LEON

Operario: Felipe Vázquez

Actividad: ENSAMBLADO

Elaboró: Pedro Escobedo

Fecha: 02 04 2009

RESUMEN

Actividad Cantidad Tiempo

OPERACIONES

TRANSPORTE

DEMORA

ALMACENAMIENTO

INSPECCIÓN

OPERACIÓN COMBINADA

Total

Acomodar Multiplicación con Biela Izquierda (Estrella)

Posicionar Manubrio Tipo Montaña.

Posicionar Desviador de Cambios Delantero.

Inmovilización y Disposición del Cuadro

Colocación de las Tasas de Dirección en el Telescopio.

Posicionamiento de la Tijera.

Colocación de Tasas del Centro (Biela del Pedal)

1

3

4

1

2

6 Ubicar el Poste del Manubrio.

5

7

Page 66: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

59

DIAGRAMA DE FLUJO DE PROCESO

Diagrama No. 4 Hoja: 2 De: 3 Método: Actual

Producto: CUADRO DE BICICLETA

Lugar: Planta: LEON

Operario: Felipe Vázquez

Actividad: ENSAMBLADO

Elaboró: Pedro Escobedo

Fecha: 02 04 2009

RESUMEN

Actividad Cantidad Tiempo

OPERACIONES

TRANSPORTE

DEMORA

ALMACENAMIENTO

INSPECCIÓN

OPERACIÓN COMBINADA

Total

Posicionar: Tornillo del Cuadro.

Poste del Asiento.

Asiento.

Ajustar Conjunto de Cambios y Frenos

Colocar Pedales.

Posicionar Desviador de Cambios Trasero.

Inserción de: Palancas de Freno.

Palancas de Cambios.

Frenos (Chicotes, Horquillas, Gomas)

Ubicación del conjunto; Rin y Neumático Delantero y Posterior.

1

8

9

0

2

3

Page 67: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

60

DIAGRAMA DE FLUJO DE PROCESO

Diagrama No. 5 Hoja: 3 De: 3 Método: Actual

Producto: CUADRO DE BICICLETA

Lugar: Planta: LEON

Operario: Felipe Vázquez

Actividad: ENSAMBLADO

Elaboró: Pedro Escobedo

Fecha: 02 04 2009

RESUMEN

Actividad Cantidad Tiempo

OPERACIONES

TRANSPORTE

DEMORA

ALMACENAMIENTO

INSPECCIÓN

OPERACIÓN COMBINADA

Total

Transporte Hacia Almacén de Producto Terminado.

Posicionar Manubrio.

Liberar Cuadro y Embalar la Bicicleta en Cubierta

Plástica de Seguridad.

4

5

1

Fin.

Page 68: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

Es importante mencionar que el color de la bicicleta lo determina el color del cuadro, y cuando se

adquieren ya cuentan con la pintura, los elementos que dete

calcomanías, los frenos, y la estrella junto con los pedales.

Es importante mencionar que el color de la bicicleta lo determina el color del cuadro, y cuando se

adquieren ya cuentan con la pintura, los elementos que determinan el color son; las llantas, las

calcomanías, los frenos, y la estrella junto con los pedales.

Fig. 3.11 Partes de la Bicicleta.

61

Es importante mencionar que el color de la bicicleta lo determina el color del cuadro, y cuando se

rminan el color son; las llantas, las

Page 69: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

62

CAPITULO IV PROPUESTA DE SOLUCIÓN

4.1 REPORTEADOR DEL PROCESO.

El reporteador consiste en un componente portable, el cual puede implementarse coma una DLL,

por esta razón sólo puede ser implementada en sistemas operativos Windows.

Algunas ventajas del reporteador son las siguientes:

• Ofrece un mayor nivel de flexibilidad frente a los cambios

• Facilita la gestión y aprovechamiento de la memoria del sistema.

• Se puede compartir entre varias aplicaciones.

• Se reduce el tamaño de los archivos ejecutables.

Sin embargo la naturaleza inherente de las DLL también ofrecer ciertas desventajas:

• Que la instalación de una aplicación la remplace con una versión incompatible

• Que la desinstalación del programa borre una DLL compartida.

Page 70: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

63

4.2 DISEÑO.

4.2.1 DIAGRAMAS DE FLUJO DE DATOS LÓGICOS Y FÍSICOS.

Diagrama de flujo de datos para generar un reporte:

Page 71: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

64

A continuación se muestra el diagrama de flujo del departamento de ventas:

Page 72: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

65

4.2.2 DIAGRAMAS UML

Este es el diagrama UML general que brinda la perspectiva completa de cómo interactúan las

áreas de la organización.

Page 73: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

66

A continuación se muestra el diagrama UML de casos de uso más comunes:

Page 74: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

67

4.2.3 DIAGRAMA ENTIDAD RELACIÓN.

A continuación se muestra un diagrama entidad relación del proceso de ventas:

Page 75: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

68

4.2.4 DISEÑO DE INTERFAZ GRÁFICA DEL USUARIO.

Esta es la pantalla de acceso:

Page 76: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

69

La pantalla del menú principal:

Esta es la pantalla de empleados

Page 77: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

70

El menú de acción de la pantalla empleados:

Page 78: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

71

Esta es la pantalla de clientes:

A continuación se muestra la pantalla de ventas:

Page 79: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

72

4.2.5 DISEÑO DE SALIDA/ENTRADA DE DATOS EN PANTALLA

La parte fundamental de la alimentación de datos y la salida es el módulo de reportes, en el cuál

sólo se parametrizan las entradas, de tal forma que sean cortes de agrupación, tal como se

muestra a continuación:

Page 80: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

73

La salida del proceso de reportes muestra la información en un archivo de Excel:

Page 81: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

74

El diseño de los reportes depende de las necesidades de la organización, se puede configurar

cualquier tipo de reporte que componga de información existente en las tablas de la base de datos.

4.3 CODIFICACIÓN O DESARROLLO

4.3.1 ARQUITECTURA PROPUESTA DEL SISTEMA

La programación por capas es un estilo de programación en el que el objetivo primordial es la

separación de la lógica de negocios de la lógica de diseño; un ejemplo básico de esto consiste en

separar la capa de datos de la capa de presentación al usuario.

La ventaja principal de este estilo es que el desarrollo se puede llevar a cabo en varios niveles y,

en caso de que sobrevenga algún cambio, sólo se ataca al nivel requerido sin tener que revisar

entre código mezclado. Un buen ejemplo de este método de programación sería el modelo de

interconexión de sistemas abiertos.

Page 82: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

75

Además, permite distribuir el trabajo de creación de una aplicación por niveles; de este modo, cada

grupo de trabajo está totalmente abstraído del resto de niveles, de forma que basta con conocer la

API que existe entre niveles.

En el diseño de sistemas informáticos actual se suele usar las arquitecturas multinivel o

Programación por capas. En dichas arquitecturas a cada nivel se le confía una misión simple, lo

que permite el diseño de arquitecturas escalables (que pueden ampliarse con facilidad en caso de

que las necesidades aumenten).

El diseño más utilizado actualmente es el diseño en tres niveles (o en tres capas).

CAPAS Y NIVELES.

1.- Capa de presentación.- Es la que ve el usuario (también se la denomina "capa de usuario"),

presenta el sistema al usuario, le comunica la información y captura la información del usuario en

un mínimo de proceso (realiza un filtrado previo para comprobar que no hay errores de formato).

Esta capa se comunica únicamente con la capa de negocio. También es conocida como interfaz

gráfica y debe tener la característica de ser "amigable" (entendible y fácil de usar) para el usuario.

2.- Capa de negocio.- Es donde residen los programas que se ejecutan, se reciben las peticiones

del usuario y se envían las respuestas tras el proceso. Se denomina capa de negocio (e incluso de

lógica del negocio) porque es aquí donde se establecen todas las reglas que deben cumplirse.

Esta capa se comunica con la capa de presentación, para recibir las solicitudes y presentar los

resultados, y con la capa de datos, para solicitar al gestor de base de datos para almacenar o

recuperar datos de él. También se consideran aquí los programas de aplicación.

Page 83: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

76

3.- Capa de datos.- Es donde residen los datos y es la encargada de acceder a los mismos. Está

formada por uno o más gestores de bases de datos que realizan todo el almacenamiento de datos,

reciben solicitudes de almacenamiento o recuperación de información desde la capa de negocio.

Todas estas capas pueden residir en un único ordenador, si bien lo más usual es que haya una

multitud de ordenadores en donde reside la capa de presentación (son los clientes de la

arquitectura cliente/servidor). Las capas de negocio y de datos pueden residir en el mismo

ordenador, y si el crecimiento de las necesidades lo aconseja se pueden separar en dos o más

ordenadores. Así, si el tamaño o complejidad de la base de datos aumenta, se puede separar en

varios ordenadores los cuales recibirán las peticiones del ordenador en que resida la capa de

negocio.

Si, por el contrario, fuese la complejidad en la capa de negocio lo que obligase a la separación,

esta capa de negocio podría residir en uno o más ordenadores que realizarían solicitudes a una

única base de datos. En sistemas muy complejos se llega a tener una serie de ordenadores sobre

los cuales corre la capa de negocio, y otra serie de ordenadores sobre los cuales corre la base de

datos.

En una arquitectura de tres niveles, los términos "capas" y "niveles" no significan lo mismo ni son

similares.

El término "capa" hace referencia a la forma como una solución es segmentada desde el punto de

vista lógico:

Presentación/ Lógica de Negocio/ Datos.

En cambio, el término "nivel" corresponde a la forma en que las capas lógicas se encuentran

distribuidas de forma física. Por ejemplo:

• Una solución de tres capas (presentación, lógica del negocio, datos) que residen en un solo

ordenador (Presentación+lógica+datos). Se dice que la arquitectura de la solución es de tres

capas y un nivel.

• Una solución de tres capas (presentación, lógica del negocio, datos) que residen en dos

ordenadores (presentación+lógica, lógica+datos). Se dice que la arquitectura de la solución es

de tres capas y dos niveles.

Page 84: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

77

• Una solución de tres capas (presentación, lógica del negocio, datos) que residen en tres

ordenadores (presentación, lógica, datos). La arquitectura que la define es: solución de tres

capas y tres niveles.

Arquitectura de Bicinet

4.3.2 ARQUITECTURA DE LA BD

Page 85: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

78

4.4 PRUEBAS

El proceso de pruebas contemplo la elaboración de una matriz de pruebas

No Descripción Módulo Resultado

1 Acceso al sistema Acceso Ok

2 Privilegios de acceso Acceso Ok

3 Captura de empleado Empleado Ok

4 Búsqueda de empleado Empleado Ok

5 Actualización empleado Empleado Ok

6 Captura de cliente Cliente Ok

7 Búsqueda de cliente Cliente Ok

8 Actualización de cliente Cliente Ok

9 Generar orden de ventas Ventas Ok

10 Generar reportes Reportes Ok

Los módulos que se incluyeron en este set de pruebas fueron los siguientes:

• Empleado

• Cliente

• Ventas

• Acceso

• Reportes

La estructura del sistema muestra un menú en común con todas los procesos que pueden

realizarse en cada módulo, llamado “Acción” es una forma de simplificar al usuario la tarea de

navegar y operar entre cada página del sistema.

4.5 IMPLEMENTACIÓN

La implementación fue realizada en un ambiente con las siguientes características

• PC Sony Vaio

• 2 GB RAM

Page 86: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

79

• 180 HD

• Windows Vista Premium

• Procesador Intel Core 2 Duo

Cabe mencionar que este sistema esta realizado en plataforma .NET e implementado en

plataforma Microsoft.

El módulo de reportes ofrece salidas en Excel por lo que necesita existir una instalación previa de

Microsoft Office.

4.6 CÓDIGO FUENTE.

<%@ Page MasterPageFile="~/BicinetMaster.master" Language="C#" AutoEventWireup="true"

CodeFile="Cliente.aspx.cs" Inherits="Presentacion_Cliente" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit"

TagPrefix="ajaxToolkit" %>

<asp:Content ContentPlaceHolderID="cphMenuTool" runat="server" ID="conMenu">

<asp:UpdatePanel ID="uplContenedor" runat="server" RenderMode="Inline">

<ContentTemplate>

<div style="width: 1012px; height: 40px;">

<table border="0"cellpadding="0" cellspacing="0">

<tr>

<td class="toolIni" >&nbsp;</td>

<td class="toolMed" style="width: 979px;"

colspan="1">

<asp:Menu ID="menuAccion" runat="server"

Orientation="Horizontal"

DynamicVerticalOffset="2"

StaticSubMenuIndent="10px"

Width="80px"

OnMenuItemClick="menuAccion_MenuItemClick">

<DynamicHoverStyle BackColor="#EFF5FB" />

<DynamicMenuStyle BackColor="#E0ECF8" />

</asp:Menu></td>

<td class="toolFin">&nbsp;</td>

</tr>

Page 87: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

80

</table>

</div>

<hr />

<br />

&nbsp;<table>

<tr>

<td>

<table style="font-size: 10pt">

<tr>

<td >

Nombre Compleato:&nbsp;</td>

<td style="width: 4px">

<asp:TextBox ID="tbxNombre" runat="server"

Width="300px"></asp:TextBox></td>

</tr>

<tr>

<td style="height: 26px" >

Dirección:

</td>

<td style="width: 4px; height: 26px;">

<asp:TextBox ID="tbxDir" runat="server" Width="600px"></asp:TextBox></td>

</tr>

<tr>

<td >

Codigo Postal:</td>

<td style="width: 4px; text-align: left; white-space:nowrap;">

<asp:TextBox ID="tbxCp" runat="server"></asp:TextBox></td>

</tr>

<tr>

<td >

RFC:

</td>

<td style="width: 4px">

<asp:TextBox ID="tbxRfc" runat="server"></asp:TextBox></td>

</tr>

<tr>

<td>

Telefono:

Page 88: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

81

</td>

<td style="width: 4px">

<asp:TextBox ID="tbxTel" runat="server"></asp:TextBox></td>

</tr>

<tr>

<td>

Ciudad:</td>

<td style="width: 4px">

<asp:TextBox ID="tbxCiudad" runat="server"></asp:TextBox></td>

</tr>

<tr>

<td>

Estado:</td>

<td style="width: 4px">

<asp:TextBox ID="tbxEstado" runat="server"></asp:TextBox></td>

</tr>

</table>

<asp:Label ID="lblMensaje" runat="server" Font-Size="10pt"

ForeColor="Red"></asp:Label></td>

<td>

<asp:ImageButton ID="imbBuscar" runat="server" AlternateText="Buscar"

ImageAlign="Top"

ImageUrl="~/imagen/buscarSta6.png"

OnClientClick="this.src='../imagen/buscarOne6a.png'; " /></td>

</tr>

</table>

&nbsp; &nbsp;

<br />

<asp:Button ID="btnLimpiar" runat="server" OnClick="btnLimpiar_Click" Text="Limpiar" />

<asp:Button ID="btnGuardar" runat="server" Text="Guardar" OnClick="btnGuardar_Click"

/>&nbsp;

<asp:Button ID="btnEditar" runat="server" Text="Editar" OnClick="btnEditar_Click" />

<asp:Button ID="btnEliminar" runat="server" Text="Eliminar" OnClick="btnEliminar_Click"

/><br />

<br />

<hr />

&nbsp;<br />

<br />

Page 89: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

82

<asp:GridView ID="gvwCliente" runat="server" Font-Size="10pt" Width="953px"

AutoGenerateColumns="False" OnSelectedIndexChanged="gvwCliente_SelectedIndexChanged">

<Columns >

<asp:CommandField ButtonType="Image"

SelectImageUrl="~/imagen/Edit7.jpg" ShowSelectButton="True" />

<asp:BoundField DataField="id" HeaderText="Id" Visible="False" />

<asp:BoundField DataField="nombre" HeaderText="Nombre" />

<asp:BoundField DataField="rfc" HeaderText="RFC" />

<asp:BoundField DataField="direccion" HeaderText="Direcci&#243;n" />

<asp:BoundField DataField="cp" HeaderText="Codigo Postal" />

<asp:BoundField DataField="telefono" HeaderText="Telefono" />

<asp:BoundField DataField="ciudad" HeaderText="Ciudad" />

<asp:BoundField DataField="estado" HeaderText="Estado" />

</Columns>

</asp:GridView>

<br />

<br />

<br />

<asp:Panel ID="pnlBuscaCliente" runat="server" CssClass="modalPopup">

<table>

<tr><td align="left"><h3>

Busqueda RFC&nbsp;

<hr /></h3></td></tr>

<tr><td align="center">

<table style="width: 250px; height: 90px">

<tr>

<td align="left">

<span style="font-size: 10pt"> Rfc Cliente:</span></td>

<td align="left">

&nbsp;<asp:TextBox ID="tbxBRfc" runat="server"></asp:TextBox></td>

</tr>

<tr>

<td align="center" colspan="2" >

<asp:Button ID="btnOk" runat="server" Text="Buscar" OnClick="btnOk_Click" />

<asp:Button ID="btnCancelar" runat="server" Text="Cancelar" />

</td>

</tr>

</table>

Page 90: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

83

</td></tr></table>

</asp:Panel>

<ajaxToolkit:ModalPopupExtender ID="mpeBuscaCliente" runat="server"

PopupControlID="pnlBuscaCliente"

OkControlID="btnCancelar"

CancelControlID="btnCancelar"

BackgroundCssClass="modalBackground"

TargetControlID="imbBuscar">

</ajaxToolkit:ModalPopupExtender>

</ContentTemplate>

</asp:UpdatePanel>

<div style="z-index:1; left: 50%; vertical-align: middle; position: absolute; top: 40%; text-align:

center;">

<asp:UpdateProgress ID="udpCliente" AssociatedUpdatePanelID="uplContenedor"

runat="server">

<ProgressTemplate>

<table><tr><td><img src="../imagen/loader4.gif"

/></td></tr><tr><td><span style="font-size: 10pt">Cargando... </span></td></tr></table>

</ProgressTemplate>

</asp:UpdateProgress>

</div>

</asp:Content>

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="_Default"

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

<head runat="server">

<title>Bicinet -- Administrador</title>

<link href="../Estilo.css" rel="stylesheet" type="text/css" />

</head>

<body>

<form id="form1" runat="server">

<div>

<table width="100%">

<tr>

<td align="center"><img src="../imagen/bicinet.gif"/></td>

Page 91: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

84

</tr>

<tr>

<td align="center">

<br />

<br />

<br />

<div style="height:100%; width:auto;">

<table >

<tr>

<td><img src="../imagen/candado.jpg" alt="candado" />&nbsp;</td>

<td align="left"><asp:Login ID="LoginSesion" runat="server"

CssClass="loginStyle" DisplayRememberMe="False" FailureAction="RedirectToLoginPage"

LoginButtonText="Entrar" PasswordLabelText="Password:" TitleText="SESION"

UserNameLabelText="Usuario:" OnAuthenticate="LoginSesion_Authenticate">

<LabelStyle Font-Names="Gautami" HorizontalAlign="Left" />

<TitleTextStyle BackColor="#C0C0FF" Font-Bold="True" Font-Names="Gill

Sans MT" ForeColor="#404040"

HorizontalAlign="Center" />

</asp:Login>

</td>

</tr>

</table>

</div>

</td>

</tr>

</table>

</div>

</form>

</body>

</html>

<%@ Page MasterPageFile="~/BicinetMaster.master" Language="C#" AutoEventWireup="true"

CodeFile="Sistema.aspx.cs" Inherits="Presentacion_Sistema" %>

<%@ Page MasterPageFile="~/BicinetMaster.master" Language="C#" AutoEventWireup="true"

CodeFile="Empleado.aspx.cs" Inherits="Presentacion_Empleado" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1"

%>

Page 92: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

85

<asp:Content ContentPlaceHolderID="cphMenuTool" runat="server" ID="conMenu">

<script type="text/jscript">

function verificaConsulta()

{

//var combobox= $find('ddlStatus');

// var lblError=$find("lblError");

// lblError.visible();

// if ($get("tbxNombre").Text=="")

// {

// lblError.hide();

// }

//

// alert('Entro por aka');

}

</script>

<asp:UpdatePanel ID="uplContenedor" runat="server" RenderMode="Inline">

<ContentTemplate>

<div style="width: 1012px; height: 27px;">

<table border="0"cellpadding="0" cellspacing="0">

<tr>

<td class="toolIni" >&nbsp;</td>

<td class="toolMed" style="width: 979px;"

colspan="1"><asp:Menu ID="menuAccion" runat="server"

Orientation="Horizontal"

DynamicVerticalOffset="2"

StaticSubMenuIndent="10px"

Width="80px"

OnMenuItemClick="menuAccion_MenuItemClick">

<DynamicHoverStyle BackColor="#EFF5FB" />

<DynamicMenuStyle BackColor="#E0ECF8" BorderWidth="0px"

BorderStyle="Ridge"/>

</asp:Menu></td>

<td class="toolFin">&nbsp;</td>

</tr>

</table>

</div>

<br />

<br />

Page 93: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

86

<hr />

<div style="width: 1012px;">

<table style="width: 1008px; font-size:12px;">

<tr>

<td style="width: 47px" >

Nombre:</td>

<td >

<asp:TextBox ID="tbxNombre" runat="server" Width="208px"

CausesValidation="True" ></asp:TextBox>

</td>

<td rowspan="7" align="left" valign="top" >

<asp:ImageButton ID="imbBuscar" runat="server" AlternateText="Buscar"

ImageUrl="~/imagen/buscarSta6.png" OnClientClick="this.src='../imagen/buscarOne6a.png'; "

ImageAlign="Top" OnClick="imbBuscar_Click"/></span><span style="font-size: 10pt"></td>

</tr>

<tr>

<td style="width: 47px; text-align: left;" >Apellido Paterno:</td>

<td><asp:TextBox ID="tbxApellido" runat="server" Width="208px"

CausesValidation="True" ></asp:TextBox></td>

</tr>

<tr>

<td style="width: 47px; text-align: left;">Apellido Materno:</td>

<td><asp:TextBox ID="tbxApeMaterno" runat="server"

Width="208px"></asp:TextBox></td>

</tr>

<tr>

<td style="width: 47px" >

Puesto:</td>

<td >

<asp:TextBox ID="tbxPuesto" runat="server" Width="208px"

CausesValidation="True" ValidationGroup="validaBusqueda"></asp:TextBox></td>

</tr>

<tr>

<td style="width: 47px" >

Username:</td>

<td >

<asp:TextBox ID="tbxUsername" runat="server" Width="208px"

CausesValidation="True" ValidationGroup="validaBusqueda"></asp:TextBox></td>

Page 94: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

87

</tr>

<tr>

<td style="width: 47px">

<span style="font-size: 10pt">Departamento:</span></td>

<td>

<asp:TextBox ID="tbxDepartamento" runat="server"

Width="208px"></asp:TextBox></td>

</tr>

<tr>

<td style="width: 47px; height: 24px;" >

Status:</td>

<td style="height: 24px" >

<asp:DropDownList ID="ddlStatus" runat="server" CausesValidation="True">

<asp:ListItem >(Seleccione)</asp:ListItem>

<asp:ListItem Value="activo">Activo</asp:ListItem>

<asp:ListItem Value="inactivo">Inactivo</asp:ListItem>

<asp:ListItem Value="suspendido">Suspendido</asp:ListItem>

</asp:DropDownList></td>

</tr>

<tr>

<td colspan="3">

<asp:CheckBox ID="chxTodos" runat="server" Font-Size="10pt" Text="Todos los

empleados." />

<asp:Button ID="btnLimpiar" runat="server" OnClick="btnLimpiar_Click"

Text="Limpiar" /></td>

</tr>

<tr>

<td colspan="3" style="height: 33px" >

<span style="font-size: 10pt">&nbsp;<asp:Label ID="lblError" runat="server"

ForeColor="Red"

Visible="False"></asp:Label><br />

&nbsp;<asp:Label ID="lblErrorDatos" runat="server" ForeColor="Red" Text="*

La selección de datos es invalida."

Visible="False"></asp:Label></span></td>

</tr>

<tr>

<td colspan="3" style="border-top: gray thin dashed; height: 230px" valign="top"

align="center">

Page 95: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

88

<br />

<asp:GridView ID="gvwEmpleado" runat="server" Font-Size="10pt"

AutoGenerateColumns="False"

OnSelectedIndexChanged="gvwEmpleado_SelectedIndexChanged" Width="999px">

<Columns >

<asp:CommandField ButtonType="Image"

SelectImageUrl="~/imagen/Edit7.jpg" ShowSelectButton="True" />

<asp:BoundField DataField="userid" HeaderText="Usuario" />

<asp:BoundField DataField="nombre" HeaderText="Nombre" />

<asp:BoundField DataField="apePaterno" HeaderText="Apellido Paterno" />

<asp:BoundField DataField="apeMaterno" HeaderText="Apellido Materno" />

<asp:BoundField DataField="puesto" HeaderText="Puesto" />

<asp:BoundField DataField="departamento" HeaderText="Departamento" />

<asp:BoundField DataField="status" HeaderText="Status" />

<asp:BoundField DataField="intentos" HeaderText="Intentos" />

</Columns>

</asp:GridView>

<asp:ObjectDataSource ID="datosInicio" runat="server"

SelectMethod="inicioSesion"

TypeName="CtrEmpleado"></asp:ObjectDataSource>

&nbsp;

</td>

</tr>

</table>

</div>

<asp:Panel ID="pnlPrivilegio" runat="server" Style="display: none"

CssClass="modalPopup">

<table>

<tr><td align="left"><h3>Privilegios

<hr /></h3></td></tr>

<tr><td align="center">

<table style="width: 250px; height: 90px">

<tr>

<td align="left">

<span style="font-size: 10pt"> Empleado:</span></td>

<td align="left">

<asp:CheckBox ID="cbxEmpleado" runat="server" /></td>

</tr>

Page 96: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

89

<tr>

<td align="left" colspan="2">

<asp:CheckBox ID="cbxAltaEmpleado" runat="server" Font-Size="10pt"

Text="Alta Empleado" /></td>

</tr>

<tr>

<td align="left" colspan="2">

<asp:CheckBox ID="cbxCambioEmpl" runat="server" Font-Size="10pt"

Text="Cambio Empleado" /></td>

</tr>

<tr>

<td align="left" colspan="2">

<asp:CheckBox ID="cbxGeneraPw" runat="server" Font-Size="10pt"

Text="Genera Contraseña" /></td>

</tr>

<tr>

<td align="left" colspan="2">

<asp:CheckBox ID="cbxEditaPriv" runat="server" Font-Size="10pt" Text="Edita

Privilegios" /></td>

</tr>

<tr>

<td align="left">

<span style="font-size: 10pt">Venta:</span></td>

<td align="left">

<asp:CheckBox ID="cbxVenta" runat="server" /></td>

</tr>

<tr>

<td align="left">

<span style="font-size: 10pt">Cliente:</span></td>

<td align="left">

<asp:CheckBox ID="cbxCliente" runat="server" /></td>

</tr>

<tr>

<td align="left">

<span style="font-size: 10pt"> Compra:</span></td>

<td align="left">

<asp:CheckBox ID="cbxCompra" runat="server" /></td>

</tr>

Page 97: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

90

<tr>

<td align="center" colspan="2" >

<asp:Button ID="btnGuardar" runat="server" Text="Guardar"

OnClick="btnGuardar_Click" />

<asp:Button ID="btnCancelar" runat="server" Text="Cancelar"

OnClick="btnCancelar_Click" />

</td>

</tr>

</table>

</td></tr></table>

</asp:Panel>

<cc1:ModalPopupExtender ID="mpePrivilegio" runat="server"

BehaviorID="mpePrivilegioAccion"

PopupControlID="pnlPrivilegio"

BackgroundCssClass="modalBackground"

OkControlID="sosporteAjax"

CancelControlID="sosporteAjax"

TargetControlID="sosporteAjax"

>

</cc1:ModalPopupExtender>

<asp:Label ID="sosporteAjax" runat="server" Enabled="False" EnableTheming="False"

EnableViewState="False" Height="9px"></asp:Label>

</ContentTemplate>

</asp:UpdatePanel>

<div style="z-index:1; left: 50%; vertical-align: middle; position: absolute; top: 25%; text-align:

center;">

<asp:UpdateProgress ID="udpEmpleado" AssociatedUpdatePanelID="uplContenedor"

runat="server">

<ProgressTemplate>

<table><tr><td><img src="../imagen/loader4.gif"

/></td></tr><tr><td><span style="font-size: 10pt">Cargando... </span></td></tr></table>

</ProgressTemplate>

</asp:UpdateProgress>

</div>

</asp:Content>

Page 98: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

91

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RptVentas.aspx.cs"

Inherits="Presentacion_RptVentas" MasterPageFile="~/BicinetMaster.master"%>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit"

TagPrefix="ajaxToolkit" %>

<%@ Register Src="../Contoles/Operaciones.ascx" TagName="Operaciones" TagPrefix="uc1" %>

<asp:Content ContentPlaceHolderID="cphMenuTool" runat="server" ID="conMenu">

<asp:UpdatePanel ID="upContenedor" runat="server">

<ContentTemplate>

<table>

<tr>

<td>

</td>

<td>

<table>

<tr>

<td>

<asp:Label ID="Label1" runat="server" Text="Fecha Inicial" Font-

Size="10pt"></asp:Label></td>

<td>

<asp:TextBox runat="server" ID="tbxfechainicial" /></td>

<td>

&nbsp;<asp:ImageButton runat="Server" ID="Image1"

ImageUrl="~/imagen/Calendar_scheduleHS.png" AlternateText="Click to show calendar" />

</td>

</tr>

<tr>

<td>

<asp:Label ID="Label2" runat="server" Text="Fecha Final" Font-

Size="10pt"></asp:Label></td>

<td><asp:TextBox runat="server" ID="tbxFecaFin" /></td>

<td>

&nbsp;<asp:ImageButton runat="Server" ID="ImageButton1"

ImageUrl="~/imagen/Calendar_scheduleHS.png" AlternateText="Click to show calendar" />

</td>

</tr>

</table>

</td>

<td>

Page 99: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

92

</td>

</tr>

<tr>

<td>

</td>

<td>

<uc1:Operaciones id="Operaciones1" runat="server">

</uc1:Operaciones>

</td>

<td>

</td>

</tr>

<tr>

<td>

</td>

<td>

<asp:Button ID="btnGenerar" runat="server" OnClick="btnGenerar_Click"

Text="Generar" /></td>

<td>

</td>

</tr>

</table>

&nbsp; &nbsp;&nbsp;

<asp:Label ID="lblErrorReport" runat="server" Visible="False"></asp:Label>

<ajaxToolkit:CalendarExtender ID="calexIni" runat="server"

TargetControlID="tbxfechainicial" PopupButtonID="Image1" Format="" >

</ajaxToolkit:CalendarExtender>

<ajaxToolkit:CalendarExtender ID="calexFin" runat="server" TargetControlID="tbxFecaFin"

PopupButtonID="ImageButton1" Format="">

</ajaxToolkit:CalendarExtender>

</ContentTemplate>

</asp:UpdatePanel>

</asp:Content>

<%@ Page MasterPageFile="~/BicinetMaster.master" Language="C#" AutoEventWireup="true"

CodeFile="Ventas.aspx.cs" Inherits="Default2" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit"

TagPrefix="ajaxToolkit" %>

<asp:Content ContentPlaceHolderID="cphMenuTool" runat="server" ID="conMenu">

Page 100: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

93

&nbsp;<asp:UpdatePanel ID="uplContenedor" runat="server" RenderMode="Inline">

<ContentTemplate>

<div style="width: 1012px; height: 40px;">

<table border="0"cellpadding="0" cellspacing="0">

<tr>

<td class="toolIni" >&nbsp;</td>

<td class="toolMed" style="width: 979px;"

colspan="1"><asp:Menu ID="menuAccion" runat="server"

Orientation="Horizontal"

DynamicVerticalOffset="2"

StaticSubMenuIndent="10px"

Width="80px"

OnMenuItemClick="menuAccion_MenuItemClick">

<DynamicHoverStyle BackColor="#EFF5FB" />

<DynamicMenuStyle BackColor="#E0ECF8" />

</asp:Menu></td>

<td class="toolFin">&nbsp;</td>

</tr>

</table>

</div>

<hr />

<br />

<table style="font-size: 10pt">

<tr>

<td>

No. Cliente:</td>

<td style="width: 3px">

<asp:Label ID="lblNoCliente" runat="server" Height="19px"

Width="151px"></asp:Label></td>

</tr>

<tr>

<td >

Cliente:

</td>

<td style="width: 3px">

<asp:TextBox ID="tbxCliente" runat="server"></asp:TextBox></td>

</tr>

<tr>

Page 101: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

94

<td >

N&uacute;mero de Orden:

</td>

<td style="width: 3px">

<asp:TextBox ID="tbxOrden" runat="server"></asp:TextBox></td>

</tr>

<tr>

<td >

Fecha entrega:

</td>

<td >

<table>

<tr>

<td style="width: 3px">

<asp:TextBox runat="server" ID="tbxfecha" /></td>

<td>

&nbsp;<asp:ImageButton runat="Server" ID="Image1"

ImageUrl="~/imagen/Calendar_scheduleHS.png" AlternateText="Click to show calendar" /></td>

</tr>

</table>

</td>

</tr>

<tr>

<td >

Status:

</td>

<td style="width: 3px">

<asp:DropDownList ID="ddlStatus" runat="server">

<asp:ListItem Value="activo">Activo</asp:ListItem>

<asp:ListItem Value="cancelado">Cancelado</asp:ListItem>

<asp:ListItem Value="parado">Parado</asp:ListItem>

<asp:ListItem Value="devuelto">Devuelto</asp:ListItem>

<asp:ListItem Value="finalizado">Finalizado</asp:ListItem>

</asp:DropDownList></td>

</tr>

<tr>

<td>

Vendedor:</td>

Page 102: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

95

<td style="width: 3px">

<asp:Label ID="lblVendedor" runat="server"></asp:Label></td>

</tr>

</table>

&nbsp;

<ajaxToolkit:CalendarExtender ID="calendarButtonExtender" runat="server"

TargetControlID="tbxfecha" Format="yyyyMMdd" PopupButtonID="Image1" />

<br />

<asp:Label ID="lblMensaje" runat="server" Font-Size="10pt"

ForeColor="Red"></asp:Label>

<br />

<asp:Label ID="lblAux" runat="server" Text="" Visible="False"></asp:Label><br />

<asp:Button ID="btnGuardar" runat="server" OnClick="btnGuardar_Click" Text="Guardar"

Visible="False" />

<asp:Button ID="btnEliminar" runat="server" Text="Eliminar" Visible="False" /><br />

<hr />

<br />

<asp:GridView ID="gvwGeneral" runat="server" AutoGenerateColumns="False" Font-

Size="10pt" Width="888px">

<Columns>

<asp:TemplateField >

<ItemTemplate>

<asp:CheckBox runat="server" ID="reg" />

</ItemTemplate>

<ItemStyle HorizontalAlign="Center" />

</asp:TemplateField>

<asp:BoundField DataField="nombre" HeaderText="Nombre" />

<asp:BoundField DataField="modelo" HeaderText="Modelo" />

<asp:BoundField DataField="precio" HeaderText="Precio" />

<asp:BoundField DataField="descripcion" HeaderText="Descripci&#243;n" />

<asp:TemplateField HeaderText="Cantidad">

<ItemTemplate>

<asp:TextBox ID="cantBici" Width="30" runat="server" ></asp:TextBox>

</ItemTemplate>

<ItemStyle HorizontalAlign="Center" />

</asp:TemplateField>

<asp:BoundField DataField="id" HeaderText="No Serie" />

</Columns>

Page 103: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

96

</asp:GridView>

<asp:GridView ID="gvwVentas" runat="server" Font-Size="10pt"

AutoGenerateColumns="False" Width="888px"

OnSelectedIndexChanged="gvwVentas_SelectedIndexChanged">

<Columns>

<asp:CommandField ButtonType="Image" SelectImageUrl="~/imagen/Edit9.jpg"

SelectText=""

ShowSelectButton="True" />

<asp:BoundField DataField="folio" HeaderText="Folio" />

<asp:BoundField DataField="idempleado" HeaderText="No Empleado" />

<asp:BoundField DataField="fechainicial" HeaderText="Fecha" />

<asp:BoundField DataField="unidades" HeaderText="Unidades" />

<asp:BoundField DataField="total" HeaderText="Total" />

<asp:BoundField DataField="iva" HeaderText="IVA" />

<asp:BoundField DataField="status" HeaderText="Status" />

<asp:BoundField DataField="fechaentrega" HeaderText="Fecha Entrega" />

</Columns>

</asp:GridView>

<br />

<br />

</ContentTemplate>

</asp:UpdatePanel>

<div style="z-index:1; left: 50%; vertical-align: middle; position: absolute; top: 40%; text-align:

center;">

<asp:UpdateProgress ID="udpCliente" AssociatedUpdatePanelID="uplContenedor"

runat="server">

<ProgressTemplate>

<table><tr><td><img src="../imagen/loader4.gif"

/></td></tr><tr><td><span style="font-size: 10pt">Cargando... </span></td></tr></table>

</ProgressTemplate>

</asp:UpdateProgress>

</div>

</asp:Content>

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="Operaciones.ascx.cs"

Inherits="WebUserControl" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit"

TagPrefix="ajaxToolkit" %>

<link href="../Extras/Estilo.css" rel="stylesheet" type="text/css" />

Page 104: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

97

<table >

<tr>

<td style="width:50px"><asp:Label runat="server" ID="lblCorte" CssClass="text azul"

text="Cortes:" Font-Size="10pt" />

</td>

<td><asp:Panel ID="pnlCarga" runat="server"><table ><tr><td><asp:DropDownList

ID="ddlCortes" runat="server" CssClass="text azul" Width="190px"/></td><td><asp:ImageButton

ID="imbCortes" runat="server" ImageUrl="../imagen/IconoAGREGAR.gif"

OnClick="imbCortes_Click" /></td></tr></table>

</asp:Panel>

</td>

</tr>

<tr>

<td>&nbsp;</td>

<td>

<asp:UpdatePanel ID="pnlLista" runat="server">

<ContentTemplate><table ><tr><td><asp:ListBox ID="lbCortes" Width="188px"

Visible="false" CssClass="cuadro azul" runat="server" Font-

Size="10pt"></asp:ListBox></td><td>&nbsp;<asp:ImageButton ID="imbBorrar" runat="server"

Visible="false" ImageUrl="../imagen/NO.gif" Height="18px" ImageAlign="Top"

OnClick="imbBorrar_Click" Width="21px" /></td></tr></table>

<div><asp:Label ID="lblError" runat="server" CssClass="text rojo" Visible="false"

/></div>

</ContentTemplate>

<Triggers>

<asp:AsyncPostBackTrigger ControlID="imbCortes" EventName="Click" />

</Triggers>

</asp:UpdatePanel>

</td>

</tr>

</table>

<%@ Page MasterPageFile="~/BicinetMaster.master" Language="C#" AutoEventWireup="true"

CodeFile="Proveedores.aspx.cs" Inherits="Presentacion_Proveedores" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1"

%>

<asp:Content ContentPlaceHolderID="cphMenuTool" runat="server" ID="conMenu">

<script type="text/jscript">

function verificaConsulta()

Page 105: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

98

{

//var combobox= $find('ddlStatus');

// var lblError=$find("lblError");

// lblError.visible();

// if ($get("tbxNombre").Text=="")

// {

// lblError.hide();

// }

//

// alert('Entro por aka');

}

</script>

<asp:UpdatePanel ID="uplContenedor" runat="server" RenderMode="Inline">

<ContentTemplate>

<div style="width: 1012px; height: 27px;">

<table border="0"cellpadding="0" cellspacing="0">

<tr>

<td class="toolIni" >&nbsp;</td>

<td class="toolMed" style="width: 979px;"

colspan="1"><asp:Menu ID="menuAccion" runat="server"

Orientation="Horizontal"

DynamicVerticalOffset="2"

StaticSubMenuIndent="10px"

Width="80px"

OnMenuItemClick="menuAccion_MenuItemClick">

<DynamicHoverStyle BackColor="#EFF5FB" />

<DynamicMenuStyle BackColor="#E0ECF8" BorderWidth="0px"

BorderStyle="Ridge"/>

</asp:Menu></td>

<td class="toolFin">&nbsp;</td>

</tr>

</table>

</div>

<br />

<br />

<hr />

<div style="width: 1012px;">

<table style="width: 1008px; font-size:12px;">

Page 106: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

99

<tr>

<td style="width: 47px" >

Nombre:</td>

<td >

<asp:TextBox ID="tbxNombre" runat="server" Width="208px"

CausesValidation="True" ></asp:TextBox>

</td>

<td rowspan="7" align="left" valign="top" >

<asp:ImageButton ID="imbBuscar" runat="server" AlternateText="Buscar"

ImageUrl="~/imagen/buscarSta6.png" OnClientClick="this.src='../imagen/buscarOne6a.png'; "

ImageAlign="Top" OnClick="imbBuscar_Click"/></span><span style="font-size: 10pt"></td>

</tr>

<tr>

<td style="width: 47px; text-align: left;" >Apellido Paterno:</td>

<td><asp:TextBox ID="tbxApellido" runat="server" Width="208px"

CausesValidation="True" ></asp:TextBox></td>

</tr>

<tr>

<td style="width: 47px; text-align: left;">Apellido Materno:</td>

<td><asp:TextBox ID="tbxApeMaterno" runat="server"

Width="208px"></asp:TextBox></td>

</tr>

<tr>

<td style="width: 47px" >

Puesto:</td>

<td >

<asp:TextBox ID="tbxPuesto" runat="server" Width="208px"

CausesValidation="True" ValidationGroup="validaBusqueda"></asp:TextBox></td>

</tr>

<tr>

<td style="width: 47px" >

Username:</td>

<td >

<asp:TextBox ID="tbxUsername" runat="server" Width="208px"

CausesValidation="True" ValidationGroup="validaBusqueda"></asp:TextBox></td>

</tr>

<tr>

<td style="width: 47px">

Page 107: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

100

<span style="font-size: 10pt">Departamento:</span></td>

<td>

<asp:TextBox ID="tbxDepartamento" runat="server"

Width="208px"></asp:TextBox></td>

</tr>

<tr>

<td style="width: 47px; height: 24px;" >

Status:</td>

<td style="height: 24px" >

<asp:DropDownList ID="ddlStatus" runat="server" CausesValidation="True">

<asp:ListItem >(Seleccione)</asp:ListItem>

<asp:ListItem Value="activo">Activo</asp:ListItem>

<asp:ListItem Value="inactivo">Inactivo</asp:ListItem>

<asp:ListItem Value="suspendido">Suspendido</asp:ListItem>

</asp:DropDownList></td>

</tr>

<tr>

<td colspan="3">

<asp:CheckBox ID="chxTodos" runat="server" Font-Size="10pt" Text="Todos los

empleados." />

<asp:Button ID="btnLimpiar" runat="server" OnClick="btnLimpiar_Click"

Text="Limpiar" /></td>

</tr>

<tr>

<td colspan="3" style="height: 33px" >

<span style="font-size: 10pt">&nbsp;<asp:Label ID="lblError" runat="server"

ForeColor="Red"

Visible="False"></asp:Label><br />

&nbsp;<asp:Label ID="lblErrorDatos" runat="server" ForeColor="Red" Text="*

La selección de datos es invalida."

Visible="False"></asp:Label></span></td>

</tr>

<tr>

<td colspan="3" style="border-top: gray thin dashed; height: 230px" valign="top"

align="center">

<br />

Page 108: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

101

<asp:GridView ID="gvwEmpleado" runat="server" Font-Size="10pt"

AutoGenerateColumns="False"

OnSelectedIndexChanged="gvwEmpleado_SelectedIndexChanged" Width="999px">

<Columns >

<asp:CommandField ButtonType="Image"

SelectImageUrl="~/imagen/Edit7.jpg" ShowSelectButton="True" />

<asp:BoundField DataField="userid" HeaderText="Usuario" />

<asp:BoundField DataField="nombre" HeaderText="Nombre" />

<asp:BoundField DataField="apePaterno" HeaderText="Apellido Paterno" />

<asp:BoundField DataField="apeMaterno" HeaderText="Apellido Materno" />

<asp:BoundField DataField="puesto" HeaderText="Puesto" />

<asp:BoundField DataField="departamento" HeaderText="Departamento" />

<asp:BoundField DataField="status" HeaderText="Status" />

<asp:BoundField DataField="intentos" HeaderText="Intentos" />

</Columns>

</asp:GridView>

<asp:ObjectDataSource ID="datosInicio" runat="server"

SelectMethod="inicioSesion"

TypeName="CtrEmpleado"></asp:ObjectDataSource>

&nbsp;

</td>

</tr>

</table>

</div>

<asp:Panel ID="pnlPrivilegio" runat="server" Style="display: none"

CssClass="modalPopup">

<table>

<tr><td align="left"><h3>Privilegios

<hr /></h3></td></tr>

<tr><td align="center">

<table style="width: 250px; height: 90px">

<tr>

<td align="left">

<span style="font-size: 10pt"> Empleado:</span></td>

<td align="left">

<asp:CheckBox ID="cbxEmpleado" runat="server" /></td>

</tr>

<tr>

Page 109: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

102

<td align="left" colspan="2">

<asp:CheckBox ID="cbxAltaEmpleado" runat="server" Font-Size="10pt"

Text="Alta Empleado" /></td>

</tr>

<tr>

<td align="left" colspan="2">

<asp:CheckBox ID="cbxCambioEmpl" runat="server" Font-Size="10pt"

Text="Cambio Empleado" /></td>

</tr>

<tr>

<td align="left" colspan="2">

<asp:CheckBox ID="cbxGeneraPw" runat="server" Font-Size="10pt"

Text="Genera Contraseña" /></td>

</tr>

<tr>

<td align="left" colspan="2">

<asp:CheckBox ID="cbxEditaPriv" runat="server" Font-Size="10pt" Text="Edita

Privilegios" /></td>

</tr>

<tr>

<td align="left">

<span style="font-size: 10pt">Venta:</span></td>

<td align="left">

<asp:CheckBox ID="cbxVenta" runat="server" /></td>

</tr>

<tr>

<td align="left">

<span style="font-size: 10pt">Cliente:</span></td>

<td align="left">

<asp:CheckBox ID="cbxCliente" runat="server" /></td>

</tr>

<tr>

<td align="left">

<span style="font-size: 10pt"> Compra:</span></td>

<td align="left">

<asp:CheckBox ID="cbxCompra" runat="server" /></td>

</tr>

<tr>

Page 110: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

103

<td align="center" colspan="2" >

<asp:Button ID="btnGuardar" runat="server" Text="Guardar"

OnClick="btnGuardar_Click" />

<asp:Button ID="btnCancelar" runat="server" Text="Cancelar"

OnClick="btnCancelar_Click" />

</td>

</tr>

</table>

</td></tr></table>

</asp:Panel>

<cc1:ModalPopupExtender ID="mpePrivilegio" runat="server"

BehaviorID="mpePrivilegioAccion"

PopupControlID="pnlPrivilegio"

BackgroundCssClass="modalBackground"

OkControlID="sosporteAjax"

CancelControlID="sosporteAjax"

TargetControlID="sosporteAjax"

>

</cc1:ModalPopupExtender>

<asp:Label ID="sosporteAjax" runat="server" Enabled="False" EnableTheming="False"

EnableViewState="False" Height="9px"></asp:Label>

</ContentTemplate>

</asp:UpdatePanel>

<div style="z-index:1; left: 50%; vertical-align: middle; position: absolute; top: 25%; text-align:

center;">

<asp:UpdateProgress ID="udpEmpleado" AssociatedUpdatePanelID="uplContenedor"

runat="server">

<ProgressTemplate>

<table><tr><td><img src="../imagen/loader4.gif"

/></td></tr><tr><td><span style="font-size: 10pt">Cargando... </span></td></tr></table>

</ProgressTemplate>

</asp:UpdateProgress>

</div>

</asp:Content>

<td align="left" colspan="2">

<asp:CheckBox ID="cbxEditaPriv" runat="server" Font-Size="10pt" Text="Edita

Privilegios" /></td>

</tr>

Page 111: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

104

<tr>

<td align="left">

<span style="font-size: 10pt">Venta:</span></td>

<td align="left">

<asp:CheckBox ID="cbxVenta" runat="server" /></td>

</tr>

<tr>

<td align="left">

<span style="font-size: 10pt">Cliente:</span></td>

<td align="left">

<asp:CheckBox ID="cbxCliente" runat="server" /></td>

</tr>

<tr>

<td align="left">

<span style="font-size: 10pt"> Compra:</span></td>

<td align="left">

<asp:CheckBox ID="cbxCompra" runat="server" /></td>

</tr>

<tr>

<td align="center" colspan="2" >

<asp:Button ID="btnGuardar" runat="server" Text="Guardar"

OnClick="btnGuardar_Click" />

<asp:Button ID="btnCancelar" runat="server" Text="Cancelar"

OnClick="btnCancelar_Click" />

</td>

</tr>

</table>

catalogosjsf

Web Pages

|-- JSFConocidoPropiedades.jsp

// JSFConocidoPropiedades.jsp

<!--

Licensed under the Apache License, Version 2.0 (the "License"); you may

not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

Page 112: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

105

WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

-->

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<HTML>

<HEAD>

<TITLE>Nuevo Conocidos</TITLE>

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

<!-- Hoja de estilo. -->

<LINK href="estilo.css" rel="Stylesheet" type="text/css">

</HEAD>

<BODY>

<f:view>

<h:form styleClass="flotando">

<h:messages errorClass="error" id="errores"/>

<TABLE class="propiedades" cellspacing="12">

<CAPTION class="propiedades">Nuevo Conocido</CAPTION>

<TR>

<TD><h:outputLabel for="clave" value="Clave:" /></TD>

<TD>

<h:inputText id="clave" size="9" readonly="true"

value="#{conocidos.clave}" styleClass="numero"

title="Clave del conocido." />

</TD>

</TR>

<TR>

<TD><h:outputLabel for="nombre" value="Nombre:" /></TD>

<TD>

<h:inputText id="nombre" size="50" maxlength="100"

value="#{conocidos.nombre}"

title="Introduzca el nombre del conocido, usando

de 1 a 100 caracteres." />

</TD>

Page 113: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

106

</TR>

<TR>

<TD><h:outputLabel for="telefono" value="Teléfono:" /></TD>

<TD>

<h:inputText id="telefono" size="50" maxlength="50"

value="#{conocidos.teléfono}"

title="Introduzca el teléfono del conocido, usando un máximo de 50 caracteres." />

</TD>

</TR>

<TR>

<TD>

<h:outputLabel for="email" value="Correo Electrónico:" />

</TD>

<TD>

<h:inputText id="email" size="50" maxlength="100"

value="#{conocidos.email}"

title="Introduzca el correo electrónico del conocido, usando un máximo de 50

caracteres."/>

</TD>

</TR>

<TR>

<TD>

<h:outputLabel for="fecha" value="Fecha de Nacimiento:" />

</TD>

<TD>

<h:inputText id="fecha" size="10" maxlength="10"

value="#{conocidos.fecha}"

converterMessage="Fecha Inválida"

title="Introduzca la fecha de nacimiento del conocido, en formato dd/mm/aaaa.">

<f:convertDateTime pattern="dd/MM/yyyy" />

</h:inputText>

</TD>

</TR>

<TR>

<TD><h:outputLabel for="direccion" value="Dirección:" /></TD>

<TD>

<h:inputTextarea id="direccion" rows="3" cols="50"

value="#{conocidos.dirección}"

Page 114: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

107

title="Introduzca la dirección del conocido."/>

</TD>

</TR>

<TR>

<TD class="acciones" colspan="2">

<h:commandButton action="#{conocidos.modifica}"

value="Aceptar" />

<h:commandButton action="éxito" value="Cancelar" />

</TD>

</TR>

</TABLE>

</h:form>

</f:view>

</BODY>

</HTML>

catalogosjsf

Web Pages

|-- JSFConocidos.jsp

// JSFConocidos.jsp

<!--

Licensed under the Apache License, Version 2.0 (the "License"); you may

not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

-->

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<HTML>

<HEAD>

Page 115: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

108

<TITLE>Conocidos</TITLE>

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

<!-- Hoja de estilo. -->

<LINK href="estilo.css" rel="Stylesheet" type="text/css">

</HEAD>

<BODY>

<f:view>

<h:messages errorClass="error" />

<h:form>

<TABLE class="toolbar">

<CAPTION>

Conocidos ( <h:outputText value="#{conocidos.total}" /> )

</CAPTION>

<TR>

<TD>

<h:commandButton action="#{conocidos.nuevo}" value="Nuevo" />

&nbsp;&nbsp;

Filtro: <h:inputText value="#{conocidos.filtro}" />

<h:commandButton action="#{conocidos.actualiza}"

value="Actualizar" />

</TD>

</TR>

</TABLE>

<h:dataTable styleClass="listado" id="tabla"

value="#{conocidos.objetos}" var="objeto"

cellspacing="0" cellpadding="3"

rowClasses="par, impar"

columnClasses="numero, ninguno, ninguno, ninguno,

ninguno, ninguno, ninguno">

<h:column >

<f:facet name="header">

<h:outputText value="Clave" />

</f:facet>

<h:outputText id="clave" value="#{objeto.clave}" />

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Nombre" />

Page 116: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

109

</f:facet>

<h:outputText id="nombre" value="#{objeto.nombre}" />

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Teléfono" />

</f:facet>

<h:outputText id="teléfono" value="#{objeto.teléfono}" />

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Correo Electrónico" />

</f:facet>

<h:outputText id="email" value="#{objeto.email}" />

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Fecha de Nacimiento">

</h:outputText>

</f:facet>

<h:outputText id="fecha" value="#{objeto.fecha}">

<f:convertDateTime pattern="dd/MM/yyyy" />

</h:outputText>

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Dirección" />

</f:facet>

<h:outputText value="#{objeto.dirección}" />

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Acciones" />

</f:facet>

<h:commandLink value="Propiedades"

action="#{conocidos.propiedades}"/>

&nbsp;

<h:commandLink value="Eliminar"

Page 117: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

110

action="#{conocidos.mestraParaEliminar}"/>

</h:column>

</h:dataTable>

</h:form>

</f:view>

</BODY>

</HTML>

catalogosjsf

Web Pages

|-- JSFConsulta.jsp

// JSFConsulta.jsp

<!--

Licensed under the Apache License, Version 2.0 (the "License"); you may

not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

-->

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<HTML>

<HEAD>

<TITLE>Conocidos</TITLE>

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

</HEAD>

<BODY>

<f:view>

<H2>Conocidos</H2>

<h:messages globalOnly="true"/>

Page 118: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

111

<h:dataTable id="tabla" value="#{listado.objetos}" var="objeto"

cellspacing="0" cellpadding="3">

<f:facet name="caption">

<h:outputText value="Conocidos" />

</f:facet>

<h:column>

<f:facet name="header">

<h:outputText value="Clave" />

</f:facet>

<h:outputText id="clave" value="#{objeto.con_clave}" />

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Nombre" />

</f:facet>

<h:outputText id="nombre" value="#{objeto.con_nombre}" />

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Teléfono" />

</f:facet>

<h:outputText id="teléfono" value="#{objeto.con_telefono}" />

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Correo Electrónico" />

</f:facet>

<h:outputText id="email" value="#{objeto.con_email}" />

</h:column>

<h:column>

<f:facet name="header">

<h:outputText value="Fecha de Nacimiento">

</h:outputText>

</f:facet>

<h:outputText id="fecha" value="#{objeto.con_fecha}">

<f:convertDateTime pattern="dd/MM/yyyy" />

</h:outputText>

</h:column>

Page 119: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

112

<h:column>

<f:facet name="header">

<h:outputText value="Dirección" />

</f:facet>

<h:outputText id="direccion" value="#{objeto.con_direccion}" />

</h:column>

</h:dataTable>

</f:view>

</BODY>

</HTML>

catalogosjsf

Web Pages

|-- JSFEliminacion.jsp

// JSFEliminacion.jsp

<!--

Licensed under the Apache License, Version 2.0 (the "License"); you may

not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

-->

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<HTML>

<HEAD>

<TITLE>Eliminaci&oacute;n de Conocidos</TITLE>

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

</HEAD>

<BODY>

<f:view>

Page 120: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

113

<h:form id="eliminacion">

<H2>Eliminaci&oacute;n de Conocidos</H2>

<h:messages style="color: red" id="errores"/>

<h:panelGrid cellspacing="12" columns="2">

<h:outputLabel for="clave" value="Clave" />

<h:inputText id="clave" size="9" maxlength="9"

value="#{formulario.clave}"

converterMessage="Clave Inválida">

<f:validateLongRange minimum="0" maximum="999999999" />

</h:inputText>

<h:outputLabel for="nombre" value="Nombre:" />

<h:outputText id="nombre" value="#{formulario.nombre}" />

<h:outputLabel for="telefono" value="Teléfono:" />

<h:outputText id="telefono" value="#{formulario.teléfono}" />

<h:outputLabel for="email" value="Correo Electrónico:" />

<h:outputText id="email" value="#{formulario.email}" />

<h:outputLabel for="fecha" value="Fecha de Nacimiento:" />

<h:outputText id="fecha" value="#{formulario.fecha}">

<f:convertDateTime pattern="dd/MM/yyyy" />

</h:outputText>

<h:outputLabel for="direccion" value="Dirección:" />

<h:outputText id="direccion" value="#{formulario.dirección}" />

</h:panelGrid>

<h:commandButton action="#{formulario.busca}" value="Buscar" />

<h:commandButton action="#{formulario.elimina}" value="Eliminar" />

</h:form>

</f:view>

</BODY>

</HTML>

catalogosjsf

Web Pages

|-- JSFInsercion.jsp

// JSFInsercion.jsp

<!--

Licensed under the Apache License, Version 2.0 (the "License"); you may

not use this file except in compliance with the License.

Page 121: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

114

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

-->

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

<HTML>

<HEAD>

<TITLE>Alta de Conocidos</TITLE>

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

</HEAD>

<BODY>

<f:view>

<h:form id="insercion">

<H2>Alta de Conocidos</H2>

<h:messages style="color: red" id="errores"/>

<h:panelGrid cellspacing="12" columns="2">

<h:outputLabel for="clave" value="Clave" />

<h:inputText id="clave" size="9" maxlength="9"

value="#{formulario.clave}"

converterMessage="Clave Inválida">

<f:validateLongRange minimum="1" maximum="999999999" />

</h:inputText>

<h:outputLabel for="nombre" value="Nombre:" />

<h:inputText id="nombre" size="50" maxlength="100"

value="#{formulario.nombre}" />

<h:outputLabel for="telefono" value="Teléfono:" />

<h:inputText id="telefono" size="50" maxlength="50"

value="#{formulario.teléfono}" />

<h:outputLabel for="email" value="Correo Electrónico:" />

<h:inputText id="email" size="50" maxlength="100"

Page 122: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

115

value="#{formulario.email}" />

<h:outputLabel for="fecha" value="Fecha de Nacimiento:" />

<h:inputText id="fecha" size="10" maxlength="10"

value="#{formulario.fecha}"

converterMessage="Fecha Inválida">

<f:convertDateTime pattern="dd/MM/yyyy" />

</h:inputText>

<h:outputLabel for="direccion" value="Dirección:" />

<h:inputTextarea id="direccion" rows="3" cols="50"

value="#{formulario.dirección}" />

</h:panelGrid>

<h:commandButton action="#{formulario.agrega}" value="Agregar" />

</h:form>

</f:view>

</BODY>

</HTML>

catalogosjsf

Web Pages

|-- JSFModificacion.jsp

// JSFModificacion.jsp

<!--

Licensed under the Apache License, Version 2.0 (the "License"); you may

not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

-->

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>

<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"

"http://www.w3.org/TR/html4/strict.dtd">

Page 123: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

116

<HTML>

<HEAD>

<TITLE>Modificaci&oacute;n de Conocidos</TITLE>

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

</HEAD>

<BODY>

<f:view>

<h:form id="modificacion">

<H2>Modificaci&oacute;n de Conocidos</H2>

<h:messages style="color: red" id="errores"/>

<h:panelGrid cellspacing="12" columns="2">

<h:outputLabel for="clave" value="Clave" />

<h:inputText id="clave" size="9" maxlength="9"

value="#{formulario.clave}"

converterMessage="Clave Inválida">

<f:validateLongRange minimum="0" maximum="999999999" />

</h:inputText>

<h:outputLabel for="nombre" value="Nombre:" />

<h:inputText id="nombre" size="50" maxlength="100"

value="#{formulario.nombre}" />

<h:outputLabel for="telefono" value="Teléfono:" />

<h:inputText id="telefono" size="50" maxlength="50"

value="#{formulario.teléfono}" />

<h:outputLabel for="email" value="Correo Electrónico:" />

<h:inputText id="email" size="50" maxlength="100"

value="#{formulario.email}" />

<h:outputLabel for="fecha" value="Fecha de Nacimiento:" />

<h:inputText id="fecha" size="10" maxlength="10"

value="#{formulario.fecha}"

converterMessage="Fecha Inválida">

<f:convertDateTime pattern="dd/MM/yyyy" />

</h:inputText>

<h:outputLabel for="direccion" value="Dirección:" />

<h:inputTextarea id="direccion" rows="3" cols="50"

value="#{formulario.dirección}" />

</h:panelGrid>

<h:commandButton action="#{formulario.busca}" value="Buscar" />

<h:commandButton action="#{formulario.modifica}" value="Guardar" />

Page 124: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

117

</h:form>

</f:view>

</BODY>

</HTML>

catalogosjsf

Web Pages

|-- JSPToc.jsp

// JSPToc.jsp

<!--

Licensed under the Apache License, Version 2.0 (the "License"); you may

not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

-->

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:url var="consulta" value="/faces/JSFConsulta.jsp" />

<c:url var="inserción" value="/faces/JSFInsercion.jsp" />

<c:url var="modificación" value="/faces/JSFModificacion.jsp" />

<c:url var="eliminación" value="/faces/JSFEliminacion.jsp" />

<c:url var="conocidos" value="/faces/JSFConocidos.jsp" />

<c:url var="base" value="/base.sql" />

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<HTML>

<HEAD>

<TITLE>Contenido</TITLE>

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

</HEAD>

<BODY>

<f:view>

Page 125: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

118

<h:form id="menu2">

<H2>Mantenimiento de Cat&aacute;logos</H2>

<UL>

<LI><A href="${consulta}" target="forma">Consulta</A>

<LI><A href="${inserción}" target="forma">Altas</A>

<LI><A href="${modificación}" target="forma">Cambios</A>

<LI><A href="${eliminación}" target="forma">Bajas</A>

<LI><A href="${conocidos}" target="forma">Todo Junto</A>

<LI>

<A href="${base}" target="forma">Creación de la Base de Datos</A>

</UL>

</h:form>

</f:view>

</BODY>

</HTML>

catalogosjsf

Web Pages

|-- JSPIndex.jsp

// JSPIndex.jsp

<!--

Licensed under the Apache License, Version 2.0 (the "License"); you may

not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

-->

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<c:url var="título" value="/CPTitulo.html" />

<c:url var="toc" value="/JSPToc.jsp" />

<c:url var="consulta" value="/faces/JSFConsulta.jsp" />

<c:url var="inserción" value="/faces/JSFInsercion.jsp" />

Page 126: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

119

<c:url var="modificación" value="/faces/JSFModificacion.jsp" />

<c:url var="eliminación" value="/faces/JSFEliminacion.jsp" />

<c:url var="base" value="/base.sql" />

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"

"http://www.w3.org/TR/html4/frameset.dtd">

<HTML>

<HEAD>

<TITLE>Mantenimiento de Cat&aacute;logos</TITLE>

<META http-equiv="Content-Type" content="text/html; charset=UTF-8">

</HEAD>

<FRAMESET rows="100, *">

<FRAME src="${título}">

<FRAMESET cols="250, *">

<FRAME src="${toc}">

<FRAME src="${consulta}" name="forma">

</FRAMESET>

<NOFRAMES>

<f:view>

<h:form id="menu1">

<H2>Mantenimiento de Cat&aacute;logos</H2>

<UL>

<LI><A href="${consulta}">Consulta</A>

<LI><A href="${inserción}">Altas</A>

<LI><A href="${modificación}">Cambios</A>

<LI><A href="${eliminación}">Bajas</A>

<LI><A href="${base}">Creación de la Base de Datos</A>

</UL>

</h:form>

</f:view>

</NOFRAMES>

</FRAMESET>

</HTML>

catalogosjsf

Web Pages

|-- base.sql

// base.sql

CREATE TABLE Conocido (

Page 127: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

120

con_clave INTEGER PRIMARY KEY,

con_nombre VARCHAR(100),

con_telefono VARCHAR(50) NOT NULL,

con_email VARCHAR(50) NOT NULL,

con_fecha DATE NOT NULL,

con_direccion LONG VARCHAR NOT NULL

);

CREATE TABLE Conocido2 (

con_clave INTEGER PRIMARY KEY GENERATED ALWAYS AS IDENTITY,

con_nombre VARCHAR(100) NOT NULL UNIQUE,

con_telefono VARCHAR(50) NOT NULL,

con_email VARCHAR(50) NOT NULL,

con_fecha DATE NOT NULL,

con_direccion LONG VARCHAR NOT NULL

)

catalogosjsf

Web Pages

|-- estilo.css

// estilo.css

.error {

color: red;

background-color: rgb(250, 222, 221);

text-align: center;

border-top-width: 1px;

border-top-style: solid;

border-top-color: red;

border-left-width: 1px;

border-left-style: solid;

border-left-color: red;

border-right-width: 1px;

border-right-style: solid;

border-right-color: red;

border-bottom-width: 1px;

border-bottom-style: solid;

border-bottom-color: red;

Page 128: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

121

padding-top: 2px;

padding-bottom: 2px;

padding-left: 4px;

padding-right: 4px;

}

.flotando

{

text-align: center;

}

TABLE.listado {

width: 100%;

color: black;

background-color: white;

border-top-width: 1px;

border-top-style: solid;

border-top-color: green;

border-left-width: 1px;

border-left-style: solid;

border-left-color: green;

border-right-width: 1px;

border-right-style: solid;

border-right-color: green;

border-bottom-width: 1px;

border-bottom-style: solid;

border-bottom-color: green;

}

TABLE.propiedades {

margin-left: auto;

margin-right: auto;

text-align: left;

color: black;

background-color: white; /* Fondo blanco. */

border-top-width: 1px;

border-top-style: solid;

border-top-color: green;

border-left-width: 1px;

border-left-style: solid;

border-left-color: green;

Page 129: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

122

border-right-width: 1px;

border-right-style: solid;

border-right-color: green;

border-bottom-width: 1px;

border-bottom-style: solid;

border-bottom-color: green;

}

CAPTION {

border-bottom-width: 1px;

border-bottom-style: solid;

padding-top: 2px;

padding-bottom: 2px;

padding-left: 4px;

padding-right: 4px;

background-color: green;

color: white;

}

CAPTION.propiedades {

margin-left: auto;

margin-right: auto;

border-bottom-width: 1px;

border-bottom-style: solid;

padding-top: 2px;

padding-bottom: 2px;

padding-left: 4px;

padding-right: 4px;

background-color: green;

color: white;

}

.toolbar {

width: 100%;

background-color: rgb(150, 219, 238);

color: black;

border-top-style: solid;

border-bottom-style: solid;

border-left-style: solid;

border-right-style: solid;

border-top-width: 1px;

Page 130: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

123

border-bottom-width: 1px;

border-left-width: 1px;

border-right-width: 1px;

border-top-color: blue;

border-bottom-color: blue;

border-left-color: blue;

border-right-color: blue;

}

TH {

color: white;

background-color: orange;

padding-top: 2px;

padding-bottom: 2px;

padding-left: 4px;

padding-right: 4px;

border-top-width: 1px;

border-top-style: solid;

border-top-color: green;

border-bottom-width: 1px;

border-bottom-style: solid;

border-bottom-color: green;

}

.numero {

text-align: right;

}

.impar {

color: black;

background-color: rgb(214, 241, 253); /* Fondo azul claro. */

padding-left: 2px;

padding-right: 2px;

}

.par {

color: black;

background-color: white;

padding-left: 2px;

padding-right: 2px;

}

.acciones {

Page 131: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

124

text-align: right;

border-top-width: 1px;

border-top-style: solid;

border-top-color: green;

padding-top: 12px;

}

catalogosjsf

Source Packages

|-- conocidos.backing

|-- BeanConocidos.java

// BeanConocidos.java

/*

* Licensed under the Apache License, Version 2.0 (the "License"); you may

* not use this file except in compliance with the License.

* You may obtain a copy of the License at

* http://www.apache.org/licenses/LICENSE-2.0

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

package conocidos.backing;

import java.sql.SQLException;

import java.util.Date;

import javax.annotation.Resource;

import javax.faces.application.FacesMessage;

import javax.faces.context.FacesContext;

import javax.faces.model.ArrayDataModel;

import javax.faces.model.DataModel;

import javax.sql.DataSource;

import conocidos.control.CtrlConocidos;

import conocidos.entity.Conocido;

public class BeanConocidos {

@Resource(name = "jdbc/conocidos")

Page 132: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

125

private DataSource ds;

private Conocido selección = new Conocido();

private String filtro = "";

private DataModel modelo;

public int getClave() {

return selección.getClave();

}

public void setClave(int clave) {

selección.setClave(clave);

}

public String getNombre() {

return selección.getNombre();

}

public void setNombre(String nombre) {

selección.setNombre(nombre);

}

public String getTeléfono() {

return selección.getTeléfono();

}

public void setTeléfono(String teléfono) {

selección.setTeléfono(teléfono);

}

public String getEmail() {

return selección.getEmail();

}

public void setEmail(String email) {

selección.setEmail(email);

}

public Date getFecha() {

return selección.getFecha();

}

public void setFecha(Date fecha) {

selección.setFecha(fecha);

}

public String getDirección() {

return selección.getDirección();

}

Page 133: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

126

public void setDirección(String dirección) {

selección.setDirección(dirección);

}

public String getFiltro() {

return filtro;

}

public void setFiltro(String filtro) {

this.filtro = filtro == null ? "" : filtro.trim();

}

public int getTotal() {

if (modelo == null) {

actualiza();

}

return modelo.getRowCount();

}

public DataModel getObjetos() {

if (modelo == null) {

actualiza();

}

return modelo;

}

public String actualiza() {

try {

modelo = new ArrayDataModel(

new CtrlConocidos(ds).consulta(filtro));

return "éxito";

} catch (SQLException e) {

procesaError(e.getLocalizedMessage());

modelo = new ArrayDataModel(new Conocido[0]);

return "error";

}

}

public String nuevo() {

selección = new Conocido();

return "nuevo";

}

public String propiedades() {

selección = (Conocido) modelo.getRowData();

Page 134: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

127

if (selección == null) {

procesaError("No hay selección.");

return "error";

} else {

return "propiedades";

}

}

public String mestraParaEliminar() {

selección = (Conocido) modelo.getRowData();

if (selección == null) {

procesaError("No hay selección.");

return "error";

} else {

return "eliminar";

}

}

public String agrega() {

try {

new CtrlConocidos(ds).agrega(selección);

selección = new Conocido();

actualiza();

return "éxito";

} catch (SQLException e) {

procesaError(e.getLocalizedMessage());

actualiza();

return "error";

}

}

public String modifica() {

try {

new CtrlConocidos(ds).modifica(selección);

actualiza();

return "éxito";

} catch (SQLException e) {

actualiza();

procesaError(e.getLocalizedMessage());

return "error";

}

Page 135: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

128

}

public String elimina() {

try {

new CtrlConocidos(ds).elimina(selección.getClave());

selección = new Conocido();

actualiza();

return "éxito";

} catch (SQLException e) {

procesaError(e.getLocalizedMessage());

actualiza();

return "error";

}

}

private static void procesaError(String msg) {

FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR,

msg, msg);

FacesContext fc = FacesContext.getCurrentInstance();

fc.addMessage(null, facesMsg);

}

}

catalogosjsf

Source Packages

|-- conocidos.backing

|-- BeanFormulario.java

// BeanFormulario.java

/*

* Licensed under the Apache License, Version 2.0 (the "License"); you may

* not use this file except in compliance with the License.

* You may obtain a copy of the License at

* http://www.apache.org/licenses/LICENSE-2.0

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

Page 136: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

129

package conocidos.backing;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.SQLIntegrityConstraintViolationException;

import java.sql.Statement;

import java.util.Date;

import javax.annotation.Resource;

import javax.faces.application.FacesMessage;

import javax.faces.context.FacesContext;

import javax.sql.DataSource;

/** Guarda el estado de los formularios. */

public class BeanFormulario {

@Resource(name = "jdbc/conocidos")

private DataSource ds;

private int clave;

private String nombre;

private String teléfono;

private String email;

private Date fecha;

private String dirección;

public int getClave() {

return clave;

}

public void setClave(int clave) {

this.clave = clave;

}

public String getNombre() {

return nombre;

}

public void setNombre(String nombre) {

this.nombre = nombre == null ? "" : nombre.trim();

}

public String getTeléfono() {

return teléfono;

Page 137: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

130

}

public void setTeléfono(String teléfono) {

this.teléfono = teléfono == null ? "" : teléfono.trim();

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email == null ? "" : email.trim();

}

public Date getFecha() {

return fecha;

}

public void setFecha(Date fecha) {

this.fecha = fecha;

}

public String getDirección() {

return dirección;

}

public void setDirección(String dirección) {

this.dirección = dirección == null ? "" : dirección;

}

public String agrega() {

Connection c = null;

PreparedStatement ps = null;

try {

valida();

c = ds.getConnection();

ps = c.prepareStatement("INSERT INTO Conocido " +

"(con_clave, con_nombre, con_telefono, " +

" con_email, con_fecha, con_direccion) " +

"VALUES(?, ?, ?, ?, ?, ?)");

ps.setInt(1, clave);

ps.setString(2, nombre);

ps.setString(3, teléfono);

ps.setString(4, email);

ps.setDate(5, new java.sql.Date(fecha.getTime()));

ps.setString(6, dirección);

Page 138: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

131

ps.executeUpdate();

return "éxito";

} catch (SQLIntegrityConstraintViolationException e) {

procesaError("Clave duplicada.");

return "error";

} catch (Exception e) {

procesaError(e.getLocalizedMessage());

return "error";

} finally {

terminaConexión(null, ps, c);

}

}

public String busca() {

Connection c = null;

PreparedStatement ps = null;

ResultSet rs = null;

try {

// Establece la conexión.

c = ds.getConnection();

// busca el objeto.

ps = c.prepareStatement("SELECT * FROM Conocido " +

"WHERE con_clave = ?");

ps.setInt(1, clave);

rs = ps.executeQuery();

// Verifica si se ecuentra el objeto.

if (rs.next()) {

clave = rs.getInt("con_clave");

nombre = rs.getString("con_nombre");

teléfono = rs.getString("con_telefono");

email = rs.getString("con_email");

fecha = new Date(rs.getDate("con_fecha").getTime());

dirección = rs.getString("con_direccion");

} else {

/* Como no se avanza al primer renglón del resultado, no hay

* conocido para esa clave. Lanza una excepción.

*/

throw new SQLException("Conocido no encontrado");

}

Page 139: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

132

return "encontrado";

} catch (SQLException e) {

procesaError(e.getLocalizedMessage());

return "error";

} finally {

terminaConexión(rs, ps, c);

}

}

public String modifica() {

Connection c = null;

PreparedStatement ps = null;

try {

valida();

// Establece la conexión.

c = ds.getConnection();

// Busca el registro y realiza los cambios.

ps = c.prepareStatement("UPDATE Conocido " +

"SET con_nombre = ?, con_telefono = ?, " +

" con_email = ?, con_fecha = ?, " +

" con_direccion = ? " +

"WHERE con_clave = ?");

ps.setString(1, nombre);

ps.setString(2, teléfono);

ps.setString(3, email);

ps.setDate(4, new java.sql.Date(fecha.getTime()));

ps.setString(5, dirección);

ps.setInt(6, clave);

ps.executeUpdate();

return "éxito";

} catch (SQLException e) {

procesaError(e.getLocalizedMessage());

return "error";

} finally {

terminaConexión(null, ps, c);

}

}

public String elimina() {

Connection c = null;

Page 140: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

133

PreparedStatement ps = null;

try {

// Establece la conexión.

c = ds.getConnection();

// Busca el conocido y lo elimina.

ps = c.prepareStatement("DELETE FROM Conocido " +

"WHERE con_clave = ?");

ps.setInt(1, clave);

ps.executeUpdate();

return "éxito";

} catch (SQLException e) {

procesaError(e.getLocalizedMessage());

return "error";

} finally {

terminaConexión(null, ps, c);

}

}

private static void procesaError(String msg) {

FacesMessage facesMsg = new FacesMessage(FacesMessage.SEVERITY_ERROR,

msg, msg);

FacesContext fc = FacesContext.getCurrentInstance();

fc.addMessage(null, facesMsg);

}

private void valida() {

if (nombre == null) {

throw new IllegalStateException("Falta el nombre.");

}

if (nombre.trim().length() == 0 || nombre.length() > 100) {

throw new IllegalStateException(

"El nombre debe contener de 1 a 100 caracteres.");

}

if (teléfono == null) {

throw new IllegalStateException("Falta el teléfono.");

}

if (teléfono.trim().length() > 100) {

throw new IllegalStateException(

"El teléfono debe contener 100 caracteres como máximo");

}

Page 141: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

134

if (email == null) {

throw new IllegalStateException("Falta el Correo Electrónico");

}

if (fecha == null) {

throw new IllegalStateException("Falta la fecha de nacimiento");

}

if (dirección == null) {

throw new IllegalStateException("Falta la dirección");

}

}

private void terminaConexión(ResultSet rs, Statement s, Connection c) {

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {

}

}

if (s != null) {

try {

s.close();

} catch (SQLException e) {

}

}

if (c != null) {

try {

c.close();

} catch (SQLException e) {

}

}

}

}

catalogosjsf

Source Packages

|-- conocidos.backing

|-- BeanListado.java

// BeanListado.java

/*

* Licensed under the Apache License, Version 2.0 (the "License"); you may

Page 142: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

135

* not use this file except in compliance with the License.

* You may obtain a copy of the License at

* http://www.apache.org/licenses/LICENSE-2.0

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

package conocidos.backing;

import java.sql.Connection;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.annotation.Resource;

import javax.faces.application.FacesMessage;

import javax.faces.context.FacesContext;

import javax.faces.model.ArrayDataModel;

import javax.faces.model.DataModel;

import javax.faces.model.ResultSetDataModel;

import javax.sql.DataSource;

/** Obtiene el condenido de la tabla <CODE>Conocidos<CODE>. */

public class BeanListado {

@Resource(name = "jdbc/conocidos")

private DataSource ds;

public DataModel getObjetos() {

Connection c = null;

Statement s = null;

ResultSet rs = null;

try {

// Establece la conexión.

c = ds.getConnection();

// busca el objeto.

s = c.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);

rs = s.executeQuery("SELECT * FROM Conocido");

ResultSetDataModel modelo = new ResultSetDataModel(rs);

return modelo;

Page 143: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

136

} catch (SQLException e) {

FacesContext.getCurrentInstance().addMessage(null,

new FacesMessage("Error al accesar la base de datos."));

return new ArrayDataModel(new Object[0]);

}

}

}

catalogosjsf

Source Packages

|-- conocidos.control

|-- CtrlConocidos.java

// CtrlConocidos.java

/*

* Licensed under the Apache License, Version 2.0 (the "License"); you may

* not use this file except in compliance with the License.

* You may obtain a copy of the License at

* http://www.apache.org/licenses/LICENSE-2.0

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

package conocidos.control;

import java.sql.Connection;

import java.util.Date;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.sql.DataSource;

import entity.Conocido;

/** Realiza altas, bajas, cambios y consultas de la tabla

* <CODE>Conocido2</CODE>.

*/

public class CtrlConocidos {

private final DataSource ds;

Page 144: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

137

public CtrlConocidos(DataSource ds) {

this.ds = ds;

}

/** Construye un conocido con la información almacenada en un ResultSet.

* @param rs

* ResultSet que contiene la información recuperada de la

* base de datos.

* @return

* un objeto de la clase Conocido, que contiene la

* información almacenada en el ResultSet.

* @throws java.sql.SQLException

*/

private Conocido construyeConocido(ResultSet rs) throws SQLException {

Conocido objeto = new Conocido();

objeto.setClave(rs.getInt("con_clave"));

objeto.setNombre(rs.getString("con_nombre"));

objeto.setTeléfono(rs.getString("con_telefono"));

objeto.setEmail(rs.getString("con_email"));

objeto.setFecha(new Date(rs.getDate("con_fecha").getTime()));

objeto.setDirección(rs.getString("con_direccion"));

return objeto;

}

/** Termina la la conexión a una base de datos y cierra los elementos

* utilizados. Si alguno de los parámetros es mull, no se cierra.

* @param rs

* ResultSet que se desea cerrar.

* @param s

* Statement que se desea cerrar.

* @param c

* Connection que se desea cerrar.

*/

private void terminaConexión(ResultSet rs, Statement s, Connection c) {

if (rs != null) {

try {

rs.close();

} catch (SQLException e) {}

}

if (s != null) {

Page 145: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

138

try {

s.close();

} catch (SQLException e) {}

}

if (c != null) {

try {

c.close();

} catch (SQLException e) {}

}

}

/** Obtiene todos los conocidos.

* @return

* Un arreglo con todos los conocidos registrados.

* @throws SQLException

* si algo falla.

*/

public Conocido[] consulta(String filtro) throws SQLException {

Connection c = null;

PreparedStatement ps = null;

ResultSet rs = null;

try {

c = ds.getConnection();

String filtroReal = '%' + filtro + '%';

/* Crea el objeto que envía consultas.

* TYPE_SCROLL_INSENSITIVE - Los ResultSet creados se pueden

* recorrer hacia adelante y hacia

* atrás.

* CONCUR_READ_ONLY - Los ResultSet creados se pueden usar para

* consultar los datos de la base, pero no

* los pueden modificar.

*/

ps = c.prepareStatement("SELECT * FROM Conocido2 " +

"WHERE CHAR(con_clave) LIKE ? " +

"OR con_nombre LIKE ? " +

"OR con_telefono LIKE ? " +

"OR con_email LIKE ? " +

"OR CHAR(con_fecha) LIKE ? " +

"OR con_direccion LIKE ? " +

Page 146: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

139

} catch (SQLException e) {

FacesContext.getCurrentInstance().addMessage(null,

new FacesMessage("Error al accesar la base de datos."));

return new ArrayDataModel(new Object[0]);

}

}

}

catalogosjsf

Source Packages

|-- conocidos.control

|-- CtrlConocidos.java

// CtrlConocidos.java

/*

* Licensed under the Apache License, Version 2.0 (the "License"); you may

* not use this file except in compliance with the License.

* You may obtain a copy of the License at

* http://www.apache.org/licenses/LICENSE-2.0

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

package conocidos.control;

import java.sql.Connection;

import java.util.Date;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.sql.DataSource;

import entity.Conocido;

/** Realiza altas, bajas, cambios y consultas de la tabla

* <CODE>Conocido2</CODE>.

*/

public class CtrlConocidos {

private final DataSource ds;

Page 147: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

140

"ORDER BY con_clave",

ResultSet.TYPE_SCROLL_INSENSITIVE,

ResultSet.CONCUR_READ_ONLY);

ps.setString(1, filtroReal);

ps.setString(2, filtroReal);

ps.setString(3, filtroReal);

ps.setString(4, filtroReal);

ps.setString(5, filtroReal);

ps.setString(6, filtroReal);

rs = ps.executeQuery();

/* Obtiene el número total de registros.

* Primero se coloca en la última posición de la respuesta.

*/

rs.last();

// El número de renglón coincide con el número de elementos.

int total = rs.getRow();

// Crea un arreglo que para colocar todos los conocidos.

Conocido[] objetos = new Conocido[total];

// Se coloca antes del primer renglón para leer la respuesta.

rs.beforeFirst();

// Revisa todos los renglones de la respuesta.

for (int i = 0; rs.next() && i < objetos.length; i++) {

objetos[i] = construyeConocido(rs);

}

// Devuelve el arreglo.

return objetos;

} finally {

terminaConexión(rs, ps, c);

}

}

/** Agrega un objeto a la base de datos.

* @param objeto

* Referencia al objeto que contiene los datos

* @throws SQLException

* Si algo falla.

*/

public void agrega(Conocido objeto) throws SQLException {

objeto.valida();

Page 148: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

141

Connection c = null;

PreparedStatement ps = null;

try {

c = ds.getConnection();

ps = c.prepareStatement("INSERT INTO Conocido2 " +

"(con_nombre, con_telefono, con_email, con_fecha, " +

" con_direccion) " +

"VALUES(?, ?, ?, ?, ?)");

ps.setString(1, objeto.getNombre());

ps.setString(2, objeto.getTeléfono());

ps.setString(3, objeto.getEmail());

ps.setDate(4, new java.sql.Date(objeto.getFecha().getTime()));

ps.setString(5, objeto.getDirección());

ps.executeUpdate();

} finally {

terminaConexión(null, ps, c);

}

}

/** Modifica en la base de datos los campos del objeto recibido. Toma

* como criterio de búsqueda la propiedad "clave".

* @param objeto

* El conocido que se desea modificar.

* @throws SQLException

* Si se presenta algún fallo.

*/

public void modifica(Conocido objeto) throws SQLException {

Connection c = null;

PreparedStatement ps = null;

try {

// Establece la conexión.

c = ds.getConnection();

// Busca el registro y realiza los cambios.

ps = c.prepareStatement("UPDATE Conocido2 " +

"SET con_nombre = ?, con_telefono = ?, " +

" con_email = ?, con_fecha = ?, " +

" con_direccion = ? " +

"WHERE con_clave = ?");

ps.setString(1, objeto.getNombre());

Page 149: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

142

ps.setString(2, objeto.getTeléfono());

ps.setString(3, objeto.getEmail());

ps.setDate(4, new java.sql.Date(objeto.getFecha().getTime()));

ps.setString(5, objeto.getDirección());

ps.setInt(6, objeto.getClave());

ps.executeUpdate();

} finally {

terminaConexión(null, ps, c);

}

}

/** Elimina de la base de datos el conocido que corresponde a la clave

* recibida.

* @param clave

* Clave del conocido a eliminar.

* @throws SQLException

* Si se presenta algún fallo.

*/

public void elimina(int clave) throws SQLException {

Connection c = null;

PreparedStatement ps = null;

try {

// Establece la conexión.

c = ds.getConnection();

// Busca el conocido y lo elimina.

ps = c.prepareStatement("DELETE FROM Conocido2 " +

"WHERE con_clave = ?");

ps.setInt(1, clave);

ps.executeUpdate();

} finally {

terminaConexión(null, ps, c);

}

}

}

catalogosjsf

Source Packages

|-- conocidos.entity

|-- Conocido.java

Page 150: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

143

// Conocido.java

/*

* Licensed under the Apache License, Version 2.0 (the "License"); you may

* not use this file except in compliance with the License.

* You may obtain a copy of the License at

* http://www.apache.org/licenses/LICENSE-2.0

* Unless required by applicable law or agreed to in writing, software

* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT

* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

* See the License for the specific language governing permissions and

* limitations under the License.

*/

package conocidos.entity;

import java.util.Date;

/** Representa los datos almacenados de cada Conocido. */

public class Conocido {

private int clave;

private String nombre;

private String teléfono;

private String email;

/** Fecha de naciomiento. */

private Date fecha;

private String dirección;

public Conocido() {

}

public void copia(Conocido objeto) {

this.clave = objeto.clave;

this.nombre = objeto.nombre;

this.teléfono = objeto.teléfono;

this.email = objeto.email;

this.fecha = objeto.fecha;

this.dirección = objeto.dirección;

}

public int getClave() {

return clave;

}

public void setClave(int clave) {

Page 151: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

144

this.clave = clave;

}

public String getNombre() {

return nombre;

}

public void setNombre(String nombre) {

this.nombre = nombre == null ? "" : nombre.trim();

}

public String getTeléfono() {

return teléfono;

}

public void setTeléfono(String teléfono) {

this.teléfono = teléfono == null ? "" : teléfono.trim();

}

public String getEmail() {

return email;

}

public void setEmail(String email) {

this.email = email == null ? "" : email.trim();

}

public Date getFecha() {

return fecha;

}

public void setFecha(Date fecha) {

this.fecha = fecha;

}

public String getDirección() {

return dirección;

}

public void setDirección(String dirección) {

this.dirección = dirección == null ? "" : dirección;

}

public void valida() {

if (nombre == null) {

throw new IllegalStateException("Falta el nombre.");

}

if (nombre.trim().length() == 0 || nombre.length() > 100) {

throw new IllegalStateException(

Page 152: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

145

"El nombre debe contener de 1 a 100 caracteres.");

}

if (teléfono == null) {

throw new IllegalStateException("Falta el teléfono.");

}

if (teléfono.trim().length() > 100) {

throw new IllegalStateException(

"El teléfono debe contener 100 caracteres como máximo");

}

if (email == null) {

throw new IllegalStateException("Falta el Correo Electrónico");

}

if (fecha == null) {

throw new IllegalStateException("Falta la fecha de nacimiento"); }

if (dirección == null) {

throw new IllegalStateException("Falta la dirección");

}

}

}

catalogosjsf

Libraries

- JSF 1.2 – commons-beanutils.jar

- JSF 1.2 – commons-collections.jar

- JSF 1.2 – commons-digester.jar

- JSF 1.2 – commons-logging.jar

- JSF 1.2 – jsf-api.jar

- JSF 1.2 – jsf-impl.jar

- JSTL 1.1 – standard.jar

- JSTL 1.1 – jstl.jar

- MySQL JDBC Driver – mysql-connector-java-5.1.6.bin.jar

- JDK 1.6 (Default)

- Apache Tomcat 6.0.18

catalogosjsf

Test Libraries

- JUnit 3.8.2- junit-3.8.2.jar

- JUnit 4.5 – junit-4-5.jar

Page 153: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

146

CONCLUSIONES.

Es importante recalcar la realidad que nos rodea actualmente, la cual esta en constante cambio y

nos deja ver como nacen nuevos productos de la noche a la mañana y de la misma manera dejan

de existir otros que no impactaron lo suficiente en nuestras vidas, debido a estos acontecimientos

los productos o artefactos que quedan vigentes en lo cotidiano son explotados cada vez mas,

evolucionando estos en todas sus etapas, tal es el caso de las bicicletas que han existido por

mucho tiempo y que realmente no han sufrido un gran cambio en su estructura a lo largo de toda

su existencia.

Las bicicletas ya sea como un medio de transporte ó como un medio de entretenimiento continúan

siendo demandadas por personas de todo el mundo y todas las clases sociales, aun considerando

las evoluciones que han sufrido otros medios de transporte y la gran variedad de ofertas que han

surgido y que compiten con esta, es prioritario que para poder enfrentar los cambios a los que se

ha visto sujeto el mundo globalizado (de índole económica y social), se renueven los métodos

convencionales que hasta el día de hoy se utilizan en muchas de las PyME’s Mexicanas para la

manufactura de este producto, y que al mismo tiempo sean una herramienta más para el poder

tomar no solo decisiones de un solo género, sino que se puedan diversificar estas acciones a más

niveles de la organización, para poder producir más y mejores bicicletas y ser competitivos con un

mercado cambiante y agresivo.

Los desarrollos tecnológicos que han podido eficientar en un muy corto plazo la administración de

las organizaciones, son los sistemas computacionales, que gracias a las grandes velocidades con

la elaboran su trabajo y que al ser creados a medida de las necesidades de la empresa han podido

ayudar a mejorar en gran medida el control de las áreas y su procesos. Con la implementación de

un sistema computacional se mejora la planeación y control de la producción debido a que la

información fidedigna que brinda dicho sistema permite una óptima programación de trabajos,

obtener reportes que nos muestren la condición actual de la línea de producción y ayuda a

controlar que se cumplan con los lineamientos de la empresa tales como los estándares de

fabricación, fechas de entrega, el control de la calidad, entre otros.

El uso de los sistemas también ayuda a utilizar métodos cuantitativos para la toma de decisiones y

así disminuir los riesgos e imprecisiones que aquí existen; por tal motivo la flexibilidad que existe

en la herramienta tecnológica del reportador permite acondicionar los mismos según los criterios

principales que son ofrecidos en el módulo y así poder obtener un documento con la información

acomodada según las necesidades que tiene la administración. Controlando de esta manera los

Page 154: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

147

reportes se brinda una flexibilidad en el sistema, esta flexibilidad abre un umbral de oportunidades

a la administración por la capacidad de obtener reportes inmediatos con los criterios principales en

un formato de hoja de cálculo que permite trabajar los datos de distintas formas y además es

exportable a otras máquinas debido a que la mayoría de los equipos computacionales en las

empresas usan hoja de cálculo, lo que le da una gran versatilidad de uso en cualquier parte en que

se encuentre el tomador de decisiones de la organización. Además el uso de estas herramientas

de información brinda la seguridad de exactitud y rapidez en la retroalimentación de la empresa,

para que utilizando las técnicas más adecuadas para esta nueva forma de control de la planeación

mejoren la producción, además de ofrecer un mejor servicio al cliente que será registrado en el

sistema para futuras incidencias y llevar un historial del comportamiento comercial de este.

Page 155: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

148

BIBLIOGRAFÍA.

Cordera Martin José, Gestión de Contabilidad. Ediciones Pirámides, Madrid, 2008,

Finney, Harry A y Miller, Curso de Contabilidad, Ed. Hispano-Americana, México 2005.

Goldberg A. Rubin K, 1995, Succeeding with Objects, Decision Framework for Project,

Management, 1a Ed. Addison-Wesley.

Guajardo C. Gerardo. Contabilidad Financiera, México, 2da. Ed. McGraw-Hill, 2005.

Hangren, Harrison y Robinson, Curso Práctico de Contabilidad General y Superior. Tomo I, Ed.

Hispanoamericana, 2007.

Presupuestos, planificación y control de las utilidades. Welsch, México, 2da.edición Editorial

McGraw-Hill, 2007,

Sara González y Juan Mascareñas, La Globalización de los Mercados Financieros, Noticias de

la Unión Europea, Revista No. 172, 2008.

Yourdon E., Rise & Resurrection of the American Programmer, 1a Ed. Yourdon Press 1996.

Referencias de Internet:

www.elrincondejava.com

www.lawebdelprogramador.com

www.microsoft.com

www.monografias.com

www.programatium.com

www.sun.com

Page 156: “REPORTEADOR PARA LA TOMA DE DECISIONES EN UNA …

149

ANEXOS.