1. PRELIMINARES - Repositorio Universidad de...

676
1 CAPITULO 1 1. PRELIMINARES 1.1. Antecedentes Actualmente existen muchos gimnasios que no cuentan con los sistemas suficientes para llevar un orden y control de sus socios, existiendo muchos de ellos que ingresan y controlan sus datos manualmente, ocasionando perdida de tiempo y de recursos. Nuestro modelo a seguir es el Gimnasio GOLD´S GYM, que cuenta con un sistema de control de acceso bajo la plataforma Windows con el programa FoxPro 2.6. Una de las dificultades para controlar el acceso (counter) es que no se generan procesos en línea, lo que ocasiona que no exista buena comunicación con el resto de los departamentos, así como, flexibilidad de la información. Estas dificultades son comunes en muchos gimnasios por lo que se buscará soluciones de manera general sin que existan códigos quemados. 1.2. Ámbito y Problemática El sistema de control de acceso al Gimnasio se utilizará para controlar, medir, conocer y comparar el ingreso de los socios mediante sus fechas de

Transcript of 1. PRELIMINARES - Repositorio Universidad de...

1

CAPITULO 1 1. PRELIMINARES

1.1. Antecedentes Actualmente existen muchos gimnasios que no cuentan con los sistemas

suficientes para llevar un orden y control de sus socios, existiendo muchos

de ellos que ingresan y controlan sus datos manualmente, ocasionando

perdida de tiempo y de recursos.

Nuestro modelo a seguir es el Gimnasio GOLD´S GYM, que cuenta con un

sistema de control de acceso bajo la plataforma Windows con el programa

FoxPro 2.6. Una de las dificultades para controlar el acceso (counter) es

que no se generan procesos en línea, lo que ocasiona que no exista buena

comunicación con el resto de los departamentos, así como, flexibilidad de

la información.

Estas dificultades son comunes en muchos gimnasios por lo que se

buscará soluciones de manera general sin que existan códigos quemados.

1.2. Ámbito y Problemática

El sistema de control de acceso al Gimnasio se utilizará para controlar,

medir, conocer y comparar el ingreso de los socios mediante sus fechas de

2

vencimiento que se generan por los pagos que hayan efectuado; utilizando

para su ingreso la huella digital o una tarjeta de identificación.

Los efectos en los resultados de facturación se darán a conocer en los

informes, analizando el impacto económico que ellos representen.

El departamento de counter tiene como finalidad llevar el control de las

transacciones de facturación ya sean de Facturas, Devoluciones, Ticket de

Parqueo, Ticket de Locker, Ticket de masajes, facturas por canjes, archivos

de socios, vendedores, servicios, tarjetas de crédito, procesos, reportes

para los Gimnasios.

Estos servicios dependerán de cada Gimnasio. Conforme el número de

socios incrementa el control se hace más dificultoso para ciertas

plataformas que no presentan flexibilidad; y, para los que no cuentan con

una base de datos pobre, implicaría el caos total pudiendo reflejar una mala

atención a sus usuarios.

La falta de comunicación entre los departamentos ocasiona que el ingreso

de un nuevo socio sea lento y tedioso, causando malestar a la persona que

desea pertenecer al Gimnasio.

3

1.3 . Solución de la Problemática

La solución que se plantea es que cada uno de estos lugares maneje la

información oportunamente y que no se vean opacados por la falta de

comunicación entre los departamentos, para que se generen procesos en

línea, flexibilidad y crecimiento de sus datos, manejando así grandes

volúmenes de información.

Para un gimnasio ya establecido se procederá, a demás, a eliminar la

redundancia de datos.

La solución más óptima sería que los gimnasios cuenten con un sistema y

una base de datos que controle la información de sus socios.

1.4. Definición del Proyecto

Se desea trabajar bajo una plataforma y una base de datos que sirvan

para generar procesos en línea, brindando flexibilidad y crecimiento de

sus datos, manejando así grandes volúmenes de información.

La metodología que se requerirá es la de bases relacionales, con la cual

eliminaremos la redundancia de datos (esto en el caso de un gimnasio ya

establecido).

Se propone utilizar:

4

o Plataforma Visual Basic.Net 2003

o El diseño de la base de datos se lo hará en la Herramienta SQL

SERVER 2000

Para este caso - como hemos tomado como modelo el Gimnasio Gold´s

Gym- los equipos (Hardware) serán prestados por ellos.

El sistema está parametrizado, con la finalidad de trabajar con varios

modelos de gimnasios.

1.5. Objetivos del Proyecto

1.5.1 Objetivos Generales

EL objetivo radica en crear un sistema para controlar el acceso a

gimnasios, así como, verificar y manipular las transacciones a realizar para

cada uno de sus socios.

Con el Sistema que se propone el departamento de counter tendrá un

mejor manejo de la información siendo esta oportuna, confiable ahorrando

pérdida de recursos, por lo tanto, se mejorará el flujo de la información con

el resto del departamento y áreas involucradas. Así habrá un mejor

desarrollo financiero de la institución.

1.5.2. Objetivos Específicos

El Sistema de control de acceso tiene como fin:

5

Registrar numerosas transacciones de sus diferentes usuarios

con la finalidad de tener cronológicamente las transacciones al

día y en tiempo real

Elaborar el proceso en línea de los socios activos al reloj

Biométrico, mediante un archivo plano que se enviará de la PC

al reloj para activar personas y del reloj a la PC para determinar

sus asistencias. Las características de este equipo: biométrico

marca ATS Cyber Series.

Elaboración de un formulario que muestre información del socio

con su foto al marcar con su huella biométrica en el Reloj

Generación de reportes de asistencia de socios

Elaboración de ticket de servicio, el cual nos permitirá manejar y

administrar turnos entre los socios para determinado servicio,

ya sean estos: ticket de locker, parqueo, masajes, bronceados,

etc.

Elaboración de reportes de ventas

Elaboración de reportes de servicio

Proceso de respaldo cuando el reloj no funcione que será

mediante una tarjeta de identificación con código de barra la

cual será escaneada por un lector y aparecerá en la PC los

datos del cliente que mediante la pulsación de una botonera

dará ingreso al socio

6

El objetivo de este proyecto es desarrollar un sistema que realice los

procesos detallados anteriormente y que permita la elaboración de reportes

que estarán en la capacidad de reflejar información para la comparación de

informes finales y a las funciones de planificación, control y toma de

decisiones. Dichos elementos son entre los más importantes: Canjes con

otras empresas, servicio a los socios mediante relación costo/beneficio y

convenios.

1.6. Alcance del Proyecto

Los alcances del proyecto están definidos de la siguiente manera:

• Módulo Archivos

• Módulo Seguridad

• Módulo Facturación

• Módulo Inventario

Cada uno de estos módulos contará con los submodulos

MANTENIMIENTO, PROCESOS Y CONSULTAS/REPORTE, los cuales

contarán con otros submodulos que a continuación se detallan.

7

1.6.1 MÓDULO ARCHIVOS

En el módulo archivo encontramos el submenú SALIR, que nos permitirá

abandonar el sistema.

1.6.2. MÓDULO SEGURIDAD

Este módulo da mantenimiento a las tablas que se refieren y se relacionan

con los procesos de: administración de usuarios, integración de datos,

restricción de accesos, actualización de claves.

Consta de los siguientes grupos:

1.6.2.1. Mantenimiento

• Creación de usuarios.- quienes manejarán el sistema

• Creación de sucursales.- dependiendo si el gimnasio tiene o no

otros locales (sucursales)

• Creación de parámetros.- son los datos de la empresa que adquiere

el sistema

• Creación de cajas.- se refieren a los counters

1.6.2.2. Procesos

• Permisos por usuarios.- son los accesos que se les dará a los

usuarios que manejarán el sistema

• Horarios.- Se definirán los horarios para los servicios

8

1.6.2.3. Consultas / Reportes

Comprende la salida de información para toma de decisiones ya sea de

manera visual o impresa, ya que podremos controlar las operaciones

realizadas por los usuarios.

• Consulta de usuarios

• Consulta permiso por usuario

• Reporte de horarios

1.6.3. MÓDULO FACTURACIÓN

En el Módulo de Facturación se tendrá el absoluto control de todos los

socios que hayan sido creados mediante pagos de sus facturas, además

de una ficha de servicios y tarjetas que pueden ser usadas en las

respectivas facturas. Se podrán emitir reportes de servicios, clientes,

ventas, etc.

Consta de los siguientes grupos:

1.6.3.1. Mantenimiento

Directorio de socios.-La ficha del socio además de ir con su

número de cédula deberá tener un código secuencial que

identificará a cada cliente y este será el campo de conexión con el

reloj..

9

Catálogo de tarjetas de crédito

Provincia y ciudad

1.6.3.2. Procesos

Facturas: Ingreso de información de cada socio con su

respectivo vendedor, fecha, numeración, forma de pago y

servicios que haya escogido.

Devoluciones: También llamadas notas de crédito, las

cuales

sirven para devolver al socio por algún motivo: dinero, cheque

o voucher recibido por la cajera.

Catálogo de servicios (este grupo incluye el servicio de

cafetería que se dan en ciertos gimnasios, creación de platos,

combos)

Ticket de Servicios: Tanto de parqueo, locker, masajes,

bronceados, personal trainer, pilates, que son servicios

adicionales que adquieren los socios.

Procesar el archivo de socios al reloj, es decir, enviar

información de la PC al reloj, este archivo será diseñado por el

sistema de acuerdo a los estándares del reloj

10

Procesar el archivo de marcadas el cual permitirá importar la

asistencia de socios desde el reloj a la PC y guardarlo en la

base de datos SQL.

Exportar archivos planos para la respectiva contabilización en el

sistema de contabilidad.

1.6.3.3.Consultas / Reportes

Podremos emitir cuanto se ha vendido de forma detallada y la forma

de pago en la que hemos cobrado así también podremos elaborar

reportes de ventas de vendedores, compra de socios por montos,

ventas por horas e informes de tarjetas y cheques. Entre los reportes

que contaremos está:

• Reporte de servicio

✓ ticket por fecha

✓ reporte de personal trainer

• Reporte de cliente

✓ Por sexo

✓ Por secuencia

✓ Por tipo de membresía

✓ Por listado cliente activo

✓ Reporte de asistencia de socios

• Reporte de ventas

11

✓ Diario de ventas

✓ Ventas por forma de pago

✓ Ventas por producto

✓ Ventas por banco

✓ Ventas por meses

✓ Ventas por vendedor

✓ Ventas por tarjeta

✓ Ventas por horas

• Reporte de platos

• Reporte de combos

• Reporte de platos vs. Costos

• Compras socios por montos

• Listado de provincia y ciudades

1.6.4. MÓDULO INVENTARIO

Se tratará el ingreso de los productos, así como, sus egresos. Se definirá

los siguiente:

1.6.4.1. Mantenimiento

• Directorio de productos

1.6.4.2. Procesos

• Ingreso de productos / Egreso de productos

12

1.6.4.3. Consultas / Reportes

• Existencia de productos

• Movimientos de productos por tipo

• Reporte de productos

En cada uno de los modulos hemos contemplado la opción de los

documentos impresos ya que consideramos que son de mucha ayuda, a

continuación mencionamos sus objetivos:

Mantener estándares en la creación de todos los documentos internos

de la institución para que sean fácilmente automatizados con miras a

su respectiva auditoria del Control Interno de la Organización

Mantener el control de la información de los socios de quienes usan

sus servicios

Proveer en forma oportuna y actualizada información relacionada con

los diferentes tipos de documentos que se manejan en el sistema

Apoyar la toma de decisiones en diferentes niveles administrativos

Generar con el menor esfuerzo posible y con la consistencia de un

estilo propio, los documentos internos de redacción común y a la vez

servir de fuente de consulta sobre reglamentación existente por

asunto, materia, sanciones, nombramientos y otros.

13

Reducir el tiempo de ciclo del proceso, eliminando transportes y

demoras ocasionadas por cuellos de botella

1.7.Recursos para el desarrollo del Proyecto

Para la implementación del sistema, se necesitará del cliente los

siguientes requerimientos:

1.7.1 Hardware

➢ Las máquinas instaladas donde funcionará el sistema deben tener

como mínimo las siguientes características:

512 MB de Memoria RAM

40 GB de disco duro

Procesador Pentium IV de 2.8 GH

Monitor de 15”

1 Impresora de inyección a tinta

1 Flash Memory 512 Mb

1 CD-Writer

➢ Se necesitará un computador que funcione como el servidor principal

en donde se alojará la base de datos, las características son:

512 MB de Memoria RAM (o superior)

80 GB de disco (o superior, de preferencia disco

SCSI)

Procesador Pentium IV de 3 GH (o superior)

14

Monitor de 15”

Se necesitara un Reloj Biométrico y una lectora de código de barra

(Scanner Metrologic). Así como, la adquisición de las licencias para los

sistemas operativos y para la base de datos.

1.7.2 Software

Las Plataformas a utilizar son:

Visual Basic.Net 2003

SQL Server 2000 con Server Pack 4

Sistema Operativo Windows XP pro o Windows 2000

Sistema Operativo Windows 2003 con Server Pack 4 para el

Servidor

o Cristal Report Designer 7.0

1.8 Metodología

Para la elaboración de nuestro proyecto de tesis emplearemos métodos y

técnicas de investigación entre las cuales tenemos las siguientes:

• Entrevista con el administrador con la finalidad de obtener

información más detallada de las necesidades del gimnasio así

como conocer los servicos que brindan y para poder extraer el

requerimiento principal y poderle dar solución al problema.

• Análisis de los Requerimientos que nos sirve conocer los procesos,

modelarlos y especificarlos, con este análisis nos permitirá

15

construir el modelo de datos, y los procesos que tendrá nuestro

software.

• El modelo de diseño nos proporcionara una mejor visión de las

diferentes entidades que vamos a crear, para poder conocer el

funcionamiento del sistema.

Una vez realizado estos pasos, continuamos con:

• Creación de la interfaz que permita verificar y observar el

comportamiento de los datos en la Base.

• Una vez creada la interfaz, realizar una serie de pruebas que

verifiquen si este programa funcione de acuerdo a las

expectativas planteadas.

Se verá reflejado el ciclo de vida de un sistema, comenzando por el

Análisis, Diseño, Desarrollo y Pruebas.

16

CAPITULO 2

2. ANÁLISIS 2.1. Levantamiento de información

La base del desarrollo del Sistema fue el gimnasio Gold´s Gym, que

actualmente consta de un programa hecho en Fox Pro bajo Plataforma DOS

que trabaja en ambiente multiusuario y en red; además consta de un lector

de huellas que transmite y recepta datos mediante un puerto serial que va

conectado a un computador que a su vez está enlazado con el servidor

donde se encuentra la aplicación hecha en Fox Pro.

Esa aplicación es básicamente un sistema de facturación que su principal

propósito es el de receptar socios emitiéndole una factura que es la que

propicia que el cliente entre en un estado activo o inactivo de acuerdo a su

pago del servicio; y a su vez alimenta al lector de huellas para que le permita

su ingreso o no al establecimiento.

2.2. Recopilación de los Requerimientos

• El gimnasio necesita que sus transacciones sean en línea y no por

lotes como actualmente está

17

• Se requiere seguridad en su base de datos debido a que el sistema

hecho en fox pro usa tablas nativas a las cuales pueden ingresar

cualquier usuario

• Solicita que en la ficha del cliente aparezca la foto para tener la

certeza de que es el socio

• Controlar la distribución de los horarios de los servicios que brinda el

gimnasio

• Necesita la emisión de reportes gerenciales para toma de decisiones

• Controlar los servicios tales como locker, personal trainer, masajes

porque actualmente no se emiten ningún tipo de comprobante

• Control de restricción de acceso de usuarios al sistema

• Emisión de reportes de asistencia de socios

• Opción para crear promociones de membresías (mensual, anual,

trimestral)

2.3. Análisis de los Requerimientos

En virtud de los requerimientos detallados, hemos decidido realizar un

Software que pueda brindar facilidad, seguridad y que sus transacciones

sean en línea. Con la finalidad de que el gimnasio pueda mantener su

información (datos de socios) segura trabajaremos con la base de datos

SQL Server 2000 y así podremos controlar que los datos no sean alterados y

que esa información solo sea manipulada por usuarios permitidos. Estos

18

usuarios podrán ser creados en el Sistema asignándoles un ID y un

Password y posteriormente habilitándoles los posibles accesos al sistema.

Para cubrir el requerimiento de reportes trabajaremos con la herramienta

Cristal Report 6.0, que nos facilitará la creación y emisión de reportes que

serán de mucha ayuda a la hora de verificar resultados financieros y del

personal que laborará en el gimnasio.

Nuestra misión será desarrollar un Sistema que pueda controlar a cabalidad

el ingreso de los socios al gimnasio así como los servicios y productos que

se ofrezcan. Se lo desarrollará bajo la plataforma Visual Basic.Net.

19

2.4. Diagrama Transición de Datos

LECTORA

HUELLAS

PC

SERVIDOR

CPU

PRESENTACIÓN

REPORTES

BASE

DE

DATOS

PC 2

PC 1

Datos Socios

Envío Información Marcadas

Datos Socios Petición de Reportes

Petición de Reportes

Petición de Reportes

Envío Información Marcadas

FIGURA 2.1. DIAGRAMA DE TRANSICIÓN DE DATOS

20

2.5.Diagramas Flujo de Datos

2.5.1. Ingreso de Clientes

NUEVO

ACTIVO

EMITO

FACTURA

1

INGRESA

DATOS

INICIO

INGRESO

CLIENTE

ELABORACIÓN

FACTURA

1

RENOVAR

FIN

INGRESO

AL GYM

TOMA DE

HUELLA

FACTURA

FIGURA 2.2. INGRESO DE CLIENTES

21

2.5.2. Acceso a Servicios Gimnasio

Consulta

Servicio

LOCKER

PERSONA

TRAINER

PILATES

MASAJE Bronceado

SERVICIO

ESCOGIDO

Comprar

Verificar

disponibilidad

Persona se

acerca al servicio

FACTURA

FIN

CLIENTE SE

ACERCA AL

COUNTER

NO

Emite

Comprobante

FIGURA 2.3. ACCESO A SERVICIOS GIMNASIOS

22

2.5.3. Servicio-compra de un Plato en el Gimnasio

FIGURA 2.4. SERVICIO-COMPRA DE UN PLATO EN EL GIMNASIO

INICIO

Cliente se acerca a

counter (comidas)

STOCK

> 0

SIRVO PLATO

FACTURA

Consulta plato

FIN

SI

NO

23

2.6. DIAGRAMAS CASOS DE USO Caso de Uso 1

Administrador del Sistema

FIGURA 2.5. DIAGRAMA CASO DE USO – ADMINISTRADOR SISTEMA

Mantenimiento

Base de Datos

Creación Usuarios

Creación Permisos

a Usuarios

Presentación de

Reportes

Creación de

Claves

Creación Horarios

Creación

Parámetros

Creación

Cajas

Creación

Sucursales

24

2.6.1. Descripción Caso de Uso 1

NOMBRE Administrador del Sistema

ACTORES Administrador del Sistema

FUNCIÓN Es la persona que se encargará de dar

mantenimiento a la base de datos, así como crear

usuarios, asignarles permisos y horarios, crear cajas,

sucursales, presentar reportes.

2.6.1.1. Escenarios 2.6.1.1.1. Crea usuarios y ya existe

2.6.1.1.2. Crea usuarios y asignan permisos

2.6.1.1.3. Crea usuarios y asigna horarios

2.6.1.1.4. Crea claves y ya existen

2.6.1.1.5. Crea claves y asignan a los usuarios

2.6.1.1.6. Crea sucursales y ya existen

2.6.1.1.7. Crea sucursales y asignan parámetros

2.6.1.1.8. Crea cajas y ya existen

2.6.1.1.9. Presenta reportes

2.6.1.1.10. Da manteniendo a base de datos creada

25

2.6.1.2. CLASES 2.6.1.2.1. Usuarios

2.6.1.2.2. Claves

2.6.1.2.3. Sucursales

2.6.1.2.4. Cajas

2.6.1.3. Representación Clases Crea Usuarios FIGURA 2.6. CREA USUARIOS

Envía

Resultado existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Usuario

26

Crea Claves FIGURA 2.7. CREA CLAVES Crea Sucursales FIGURA 2.8. CREA SUCURSALES

Envía

Resultado existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Claves

Envía

Resultado existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Sucursales

27

Crea Cajas FIGURA 2.9. CREA CAJAS

Envía

Resultado existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Cajas

28

Caso de Uso 2 Supervisor del Sistema FIGURA 2.10. DIAGRAMA CASO DE USO-SUPERVISOR DEL SISTEMA

Egreso de

Productos

Ingreso de

Tarjetas de Crédito

Lectura de

Marcadas

Creación

Combos

Provincias y

Ciudades

Creación de

Productos

Creación

Platos

Exportación

Archivo DBP

Ingreso de

Productos

Expt. Texto para

contabilidad

Presentación de

Reportes

29

2.6.2. Descripción Caso de Uso 2

NOMBRE Supervisor del Sistema

ACTORES Supervisor del Sistema

FUNCIÓN Es la persona que se encargará de la creación de

productos, combos, platos, controlará el ingreso y

egreso de productos, manejará el ingreso de

tarjetas de crédito con las que trabajará el

gimnasio. También controlará la lectura de

marcadas, manejará lo referente a la exportación

de archivo DBP y de texto para contabilidad.

2.6.2.1. Escenarios 2.6.2.1.1. Crea producto y ya existe

2.6.2.1.2. Controla ingreso y egreso de producto

2.6.2.1.3. Crea tarjetas de crédito y ya existen

2.6.2.1.4. Controla lectura de marcadas

2.6.2.1.5. Crea combos y ya existen

2.6.2.1.6. Crea platos y ya existen

2.6.2.1.7. Ingresa provincias y ciudades y ya existen

2.6.2.1.8. Exporta archivo DBP y texto para contabilidad

30

2.6.2.1.9. Presenta reportes

2.6.2.2. CLASES 2.6.2.2.1. Producto

2.6.2.2.2. Tarjetas de Crédito

2.6.2.2.3. Combos

2.6.2.2.4. Platos

2.6.2.2.5. Provincias y Ciudades

2.6.2.3. Representación Clases Crea Producto FIGURA 2.11. CREA PRODUCTOS

Envía

Resultado existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Producto

31

Crea Tarjetas de Crédito FIGURA 2.12. CREA TARJETAS DE CRÉDITO Crea Combos FIGURA 2.13. CREA COMBOS

Envía

Resultado existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Tarjetas de

crédito

Envía

Resultado existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Combos

32

Crea Platos FIGURA 2.14. CREA PLATOS Crea Provincias y Ciudades FIGURA 2.15. CREA PROVINCIAS Y CIUDADES

Envía

Resultado existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Platos

Envía

Resultado existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Provincias

y Ciudades

33

Caso de Uso 3 Usuario del Sistema (cajero) FIGURA 2.16. DIAGRAMA CASO DE USO-USUARIO DEL SISTEMA (CAJERO)

Ingreso de

socios

Facturas

Tickets de

servicios

Presentación de

Reportes

Devoluciones

34

2.6.3. Descripción Caso de Uso 3

NOMBRE Usuario del Sistema (Cajero)

ACTORES Usuario del Sistema (Cajero)

FUNCIÓN Es la persona que se encargará de ingresar los datos de

los socios al sistema, emitir facturas, ticket de servicios y

registrar devoluciones. También presentará reportes.

2.6.3.1. Escenarios 2.6.3.1.1. Ingresa socio y ya existe

2.6.3.1.2. Emite facturas y existe control

2.6.3.1.3. Registra Devoluciones y existe control

2.6.3.1.4. Crea ticket de servicio y ya existe

2.6.3.1.5. Presenta reportes para control

2.6.3.2. CLASES 2.6.2.2.1. Socio

2.6.2.2.2. Facturas

2.6.2.2.3. Devoluciones

2.6.2.2.4. Ticket de servicio

35

2.6.3.3. Representación Clases Crea Socio FIGURA 2.17. CREA SOCIO Crea Facturas FIGURA 2.18. CREA FACTURAS

Envía

Resultado existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Socio

Envía

Factura existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Factura

36

Crea Devoluciones FIGURA 2.19. CREA DEVOLUCIONES Crea Ticket de Servicio FIGURA 2.20. CREA TICKET DE SERVICIO

Envía

Devolución registrada

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Devoluciones

Envía

Resultado existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Ticket de Servicio

37

Caso de Uso 4 Cliente FIGURA 2.21. DIAGRAMA CASO DE USO - CLIENTE-LECTORA DE HUELLAS 2.6.4. Descripción Caso de Uso 4

NOMBRE Cliente – Lectora de Huellas

ACTORES Cliente

FUNCIÓN La persona pone su huella en el lector de huella, de

ahí se podrá visualizar el nombre del cliente, número

de cédula y fecha de vencimiento de la membresía al

gimnasio

LECTORA DE HUELLAS

Pone su

huella

Visualiza nombre,

número de cédula y

fecha vencimiento

38

2.6.4.1. Escenarios 2.6.4.1.1. Cliente ingresa su huella

2.6.4.1.2. Huella es registrada por el lector de huella

2.6.4.1.3. Cliente visualiza datos personales y membresía

2.6.4.2. CLASES 2.6.4.2.1. Lectora de huellas

2.6.4.2.2. Datos cliente

2.6.4.3. Representación Clases Crea Lectora de Huellas FIGURA 2.22. CREA LECTORA DE HUELLAS

Envía huella

Huella registrada

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Lectora de Huellas

39

Crea Datos Cliente FIGURA 2.23. CREA DATOS CLIENTE

Envía huella

Visualiza sus datos

Y membresía

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Datos Cliente

40

Caso de Uso 5 Usuario

FIGURA 2.24. DIAGRAMA CASO DE USO: USUARIO-DATOS CLIENTES 2.6.5. Descripción Caso de Uso 5

NOMBRE Usuario – Datos Cliente

ACTORES Usuario

FUNCIÓN El usuario ingresa datos de los clientes, verifica el tipo de

membresía y la fecha de vencimiento de la misma

DATOS CLIENTES

CLIENTES

Ingresa datos

clientes

Verifica fecha de

vencimiento

Verifica tipo

de membresía

membresía

41

2.6.5.1. Escenarios 2.6.5.1.1. Usuario ingresa datos cliente y ya existen datos

2.6.5.1.2. Usuario verifica tipo de membresía y vencimiento

2.6.5.2. CLASES 2.6.5.2.1. Cliente

2.6.5.2.2. Membresía (tipo y vencimiento)

2.6.5.3. Representación Clases Crea Cliente FIGURA 2.25. CREA CLIENTE

Envía datos

Existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Cliente

42

Crea Membresía (tipo y vencimiento) FIGURA 2.26. CREA MEMBRESIA (TIPO Y VENCIMIENTO)

Envía datos

Visualiza tipo

Membresía y

Fecha de vencimiento

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Membresía (tipo y vencimiento)

43

Caso de Uso 6 Usuario FIGURA 2.27. DIAGRAMA CASO DE USO – USUARIO-FACTURAS

FACTURAS

CLIENTESCCLIENTE

SCCLIENTES Ingresa datos

clientes

Ingresa

Membresía / Servicio

o Producto

Ingresa forma

de pago

Imprime

factura

44

2.6.6. Descripción Caso de Uso 6

NOMBRE Usuario – Facturas

ACTORES Usuario

FUNCIÓN El usuario ingresará datos del cliente en la factura, el producto

o servicio a comprar, detalla la forma de pago e imprime la

factura

2.6.6.1. Escenarios 2.6.6.1.1. Ingresa datos factura y ya existe

2.6.6.1.2. Imprime factura

2.6.6.2. CLASES 2.6.4.2.1. Factura (datos cliente)

2.6.4.2.2. Imprime-factura

45

2.6.6.3. Representación Clases Crea Factura FIGURA 2.28. CREA FACTURA Crea Imprime-Factura FIGURA 2.29. CREA IMPRIME-FACTURA

Envía datos

Existe

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Factura

Envía datos

Visualiza Factura

elaborada

I

N

F

O

R

M

A

C

I

O

N

Procesa

información

Imprime-Factura

46

2.7. DIAGRAMA OBJETOS RELACIÓN

Petición

Información

Presentación

de Reportes

Verificación

Horarios

Administrador

Base de

Datos

PC

Reportes

FIGURA 2.30. DIAGRAMA OBJETO RELACIÓN

47

2.8. DIAGRAMA ORIENTADO A OBJETOS

Nombre = ”Francisco”

Cédula = 0919759870

Tipo Membresía =

Mensual

objeto Objeto

Valor del

Atributo

enlace

COUNTER

SERVICIO

DE

COMIDA

SERVICIOS

PT/PL/BRO/MASAJES/

PARQUEO

COMPAÑÍA

CÉDULA CEDULA

Persona

FIGURA 2.31. DIAGRAMA ORIENTADO A OBJETOS

48

CAPITULO 3

3. DISEÑO

3.1. Diseño de datos

Objetos

Administrador

Atributos

Nombre del Administrador Contraseña

Asistencia

Objetos

Asistencia

Atributos

Numero Codigosecuen Nombre Fecha Hora

49

Objetos

Bronceados

Atributos

Numero Numerocaja Cliente Sesion Horainicial Horafinal Tipomembresia Comentario Fecha

Bronceados

Objetos

Cabecera _ factura

Atributos

Numero Tipo Sucursal Caja Numerocaja Fecha Cliente Vendedor CajeroTotal Hora Comentario Observacion

Porcedescto1 Porcedescto2

Porceiva Subtotal Descuento1

Descuento2

Impuesto Impreso

Cabecera _ factura

50

Objetos

Cabecera_Inventario

Atributos numero Tipo Sucursal Caja Numerocaja Tipoingreso Proveedor Subtotalprecio Ivaprecio Totalprecio Subtotalcosto Ivacosto Totalcosto Fecha Hora Usuario Observaciones Impreso Eliminados

Cabecera_Inventario

Objetos

Caja

Atributos

Codcaja Descripcion Estado

Caja

51

Objetos

Combo_Cabecera

Atributos

numero Codcombo Nombre Precio Estado Fecha_creacion Fecha_mod

Combo_Cabecera

Objetos

Combo_Detalle

Atributos

numero Codcombo Codprodserv Estado Cantidad Costo Fecha_creacion Fecha_mod Total Precio Descuento

Combo_Detalle

52

Objetos

Detalle_Factura

Atributos

Id (numero) Numerocab Tipo Sucursal Caja Numerocaja Codigoproducto Fecha Cantidad Total1 Total2 Descuento1 Descuento2 Valordescuento1 Valordescuento2 Precio Costo Iva Hora

Detalle_Factura

53

Objetos

Detalle_Inventario

Atributos

Numero Numerocab Tipo Sucursal Caja Numerocaja Codigoproducto Cantidad Precio Costo Totalp Totalc Iva Fecha Hora

Detalle_Inventario

Objetos

Existencias

Atributos

Numero Tipo Sucursal Caja Numerocaj Numerocab Codigo Fecha Cantidad

Existencias

54

Objetos

Horarios

Atributos

Tipo Nombre Codigo Descripcion Horainicial Horafinal

Horarios

Objetos

Locker

Atributos

Id (numero) Numerocaja Cliente Fecha Tipomembresia Comentario

Locker

55

Objetos

Modulo

Atributos

Codmodulo Descripcion Estado

Modulo

Objetos

Masajes

Atributos

Id (numero) Numerocaja Cliente Masajista Sesion Horainicial Horafinal Tipomembresia Comentario Fecha

Masajes

56

Objetos

Opciones_Por_Modulo

Atributos

Codopcion Codmodulo Codopcxmod Descripcion Opcformulario Opcobservacion Opcfechacreac Opcestado Codusul Pci

Opciones_Por_Modulo

57

Objetos

Pagos_Factura

Atributos

Numero Numerocab Tipo Sucursal Caja Numerocaja Fecha Formapago Porcobrar Valorrecibido Codigotarjeta Numerotarjeta Nombrecliente Telefonotarjeta Lote Fechacheque Codigobanco Numerocheque Ctacte Nombreempleado Cedulaempleado Cancelado Hora

Pagos_Factura

58

Objetos

Parqueo

Atributos

numero Numerocaja Cliente Fecha Horainicial Tipomembresia Comentario

Parqueo

Objetos

Parametros

Atributos

Nombrempresa Direccion Porcentajeiva Telefonoemp Ruc Porcentdescto Sucursal Caja Secuencia Ruta

Parametros

59

Objetos

Permiso_Por_Usuario

Atributos

Codperxusu Codcedulausu Codopc Estado

Permiso_Por_Usuario

60

Objetos

Persona

Atributos

Codpers Codigosecuen Cedula Codtipoper Pernombre Perapellido Perdireccion Pertelefono Permail Perfax Codciudad Codzona Fechaingreso Fechasalida Percomentario Fechamodif Codempl Perdescto Fechanac Perestdcivil Persexo Perestado Perempresa Perruc Tipo

Persona

61

Objetos

Persona_Trainer

Atributos

Numero Numerocaja Cliente Personal Sesion Horainicial Horafinal Tipomembresia Estado Comentario Fecha

Persona_Trainer

Objetos

Pilates

Atributos

Numero Numerocaja Cliente Pilates Sesion Horainicial Horafinal Tipomembresia Estado Comentario Fecha

Pilates

62

Objetos

Platos_Cabecera

Atributos

Numero Codplato Codprodserv Nombre Precio Estado Fecha_creacion Fecha_mod Costo

Platos_Cabecera

Objetos

Platos_Detalle

Atributos

Numero Codplato Codprodserv Estado Cantidad Costo Fecha_creacion Fecha_mod Precio Medida Total

Platos_Detalle

63

Objetos

Producto_Serv

Atributos

Codprodserv Codpadre Nombre Protipo Codestado Profecing Proiva Proprecio Proprecio2 Proprecio3 Prodesc Profechmodif Prostock Descripcion Costo Tipomembre Dias Estado

Producto_Serv

64

Objetos

Proveedor

Atributos

Codigo Cedula Codtipoprov Prorsocial Proobservacion Estado

Proveedor

Objetos

Secuencias

Atributos

Secuencial Tipo Sucursal Caja Numero

Secuencias

65

Objetos

Sicag_Busquedas

Atributos

Gen_tabla Gen_columna Gen_descripcion Gen_tipo Gen_longitud Gen_observacion

Sicag_Busquedas

Objetos

Sucursal

Atributos

Codsucur Descripcion Estado

Sucursal

66

Objetos

Tarjetas_Credito

Atributos

Codtarjcred Descripcion Abreviatura Estado Codbanco

Tarjetas_Credito

Objetos

Tipo_Banco

Atributos

Codtipobanko Descripcion Estado

Tipo_Banco

67

Objetos

Tipo_Persona

Atributos

CODTIPOPERS DESCRIPCION

Tipo_Persona

Objetos

Usuario

Atributos

Codusu Codcedula Usupassword Usuuser Usufeccreac Usuestado

Usuario

Objetos

Detalle_Zona

Atributos

Numero Codigozona Codigociudad Nombreciudad Estadociudad

Detalle_Zona

68

3.2. Diagrama entidad-relación

FIGURA 3.1. DIAGRAMA ENTIDAD-RELACIÓN

69

3.3. Diagrama de contexto de arquitectura y funcionalidad del proyecto

FIGURA 3.2. DIAGRAMA DE CONTEXTO DE ARQUITECTURA Y FUNCIONALIDAD DEL PROYECTO

SISTEMA

CONTROL DE

ACCESO A

GIMNASIO

COUNTER

PRESENTACIÓN

DE LA

INFORMACIÓN

ADMINISTRADOR

(SERVIDOR)

RELOJ

BIOMÉTRICO

BASE DE

DATOS

Ingreso de la

Información

Refleja Situación del

socio

Ve como funciona el

sistema

Salida de la Información

Ingreso y salida de la información del

sistema y reloj

70

3.4. Diagrama arquitectónico de flujo de datos

FIGURA 3.3. DIAGRAMA ARQUITECTÓNICO DE FLUJO DE DATOS 1

INTERFAZ CON ADMINISTRADOR REPORTES

PRESENTACION DE INFORMACIÓN

BASE DE DATOS

PETICIÓN

REPORTE

SALIDA DE

INFORMACIÓN

PETICIÓN DE REPORTE

INFORMACIÓN DE REPORTE

71

INTERFAZ CON ADMINISTRADOR

PERSONAL TRAINER

PRESENTACION DE INFORMACIÓN

BASE DE DATOS

PETICIÓN

PERSONAL TRAINER

SALIDA DE

INFORMACIÓN

PETICIÓN DE PERSONAL TRAINER

INFORMACIÓN DE PERSONAL TRAINER

FIGURA 3.4. DIAGRAMA ARQUITECTÓNICO DE FLUJO DE DATOS 2

72

INTERFAZ CON ADMINISTRADOR

FACTURA PRESENTACION DE INFORMACIÓN

BASE DE DATOS

PETICIÓN

FACTURA

SALIDA DE

INFORMACIÓN

PETICIÓN DE FACTURA

INFORMACIÓN DE FACTURA

FIGURA 3.5. DIAGRAMA ARQUITECTÓNICO DE FLUJO DE DATOS 3

74

3.5. Diseño de Interfaz

La interfaz se la realizó pensando en los usuarios que la manejarán,

con la finalidad de que sea totalmente interactiva y de fácil manejo.

Trabajamos con las formas, declarando objetos con sus respectivas

clases .

Las pantallas realizadas se las apreciará en el manual de usuario.

75

INICIO

Ingreso de Administrador

Ingreso de Login

Login es correcto si o no?

Ingreso al Sistema Gimnasio

Ver Diario de Ventas

Desea Diario

De Ventas

texto

Diario de Ventas texto

Diario de Ventas gráfico

FIN

SI

NO

3.6. Diseño a nivel de componentes

FIGURA 3.6. DISEÑO A NIVEL DE COMPONENTES 1

76

INICIO

Ingreso de Administrador

Ingreso de Login

Login es correcto si o no?

Ingreso al Sistema Gimnasio

Ver comportamiento de usuario

Desea ver

comportamiento

de usuario

Comportamiento de usuario gráfico

FIN

SI

NO

Comportamiento de usuario texto

FIGURA 3.7. DISEÑO A NIVEL DE COMPONENTES 2

77

CAPITULO 4

4. DESARROLLO Y PRUEBA DEL SISTEMA 4.1. Desarrollo

Una vez que concluimos el diseño procedimos a la programación con

la herramienta VISUAL BASIC.NET 2003, SQL SERVER 2000 y

CRISTAL REPORT, es decir dimos paso a la codificación de todas

las especificaciones de las dos etapas de análisis y diseño.

Se procedió a la creación de la Base de Datos, de las tablas,

procedimientos, definimos las clases.

El sistema consta de los siguientes módulos:

o Módulo Archivo

o Módulo Seguridad

o Módulo de Facturación

o Módulo de Inventario

La codificación la encontramos en el manual técnico

78

4.2. Pruebas

Las pruebas se han realizado acorde a las necesidades que se nos

presentaron en el desarrollo del sistema, se fueron coordinando las

relaciones entre las tablas, se fueron creando usuarios y claves donde

se pudo definir la seguridad que se le estaba dando al sistema y a la

base de datos. Una vez finalizado todo el sistema procedimos a

realizar la prueba con el reloj biométrico y la huella digital

comprobando que el sistema cumple a cabalidad con todos los

requerimientos planteados.

79

CONCLUSIONES

Con el desarrollo del sistema los gimnasios contarán con información

oportuna y veraz, satisfaciendo la necesidad de registro diario de las

operaciones de la institución

Se generaran procesos en línea, brindando flexibilidad y crecimiento

de sus datos, manejando grandes volúmenes de información,

facilitando así el trabajo del counter a la llegada de un socio nuevo

Se brindará un mejor servicio a los socios

Se reducirá el tiempo de ciclo del proceso, eliminando transportes y

demoras ocasionadas por cuellos de botella

80

RECOMENDACIONES

El gimnasio debe proporcionar computadoras con las características

detalladas en el presente manual, para un óptimo rendimiento

Se debe dar soporte al usuario para familiarizarlo con el sistema

Se deberá adecuar el sistema a las necesidades prioritarias de los

usuarios.

81

PRESUPUESTO APROXIMADO PARA EL DESARROLLO DEL

SISTEMA

HUMANO $ 8.400

2 Desarrolladores y/o Analistas ($ 350 mes) $8.400

HARDWARE $ 5.830

• 2 PC con las siguientes características: $1.500

512 MB de RAM

Mínimo 40 GB de disco duro

Procesador Pentium IV de 2.8 GByte

Monitor de 15’

• 1 PC Servidor con las siguientes características: $1050

1 GB de RAM

Mínimo 80 GB de disco duro

Procesador Pentium IV de 3 GHz

Monitor de 15’

• 1 Impresora Lexmark $ 65

• 1 Flash Memory 256 Mbyte $ 50

• 1 Reloj Biometrico $ 2890

• 1 Scanner Metrologic $ 275

82

SOFTWARE $ 7.700

Licencias (Valor Promedio) para los siguientes Software:

• Visual Basic.Net 2003 $1.200

• SQL Server 2000 $2.000

• Sistema Operativo Windows XP $1.500

• Windows 2003 Server $3.000

TOTAL $21.930

UNIVERSIDAD DE GUAYAQUIL

Facultad de Ciencias Matemáticas y Físicas

Carrera de Ingeniería en Sistemas Computacionales

Sistema para Controlar el Acceso a Gimnasios

TESIS DE GRADO

Previo a la Obtención del Título de:

INGENIERO EN SISTEMAS COMPUTACIONALES

Preliminares, Análisis

Autores:

Mariuxi Rodríguez Jurado Richard Sánchez Pincay

GUAYAQUIL – ECUADOR

Año: 2007

AGRADECIMIENTO

Nuestro agradecimiento está

dedicado especialmente a Dios,

por su bondad infinita, por su

comprensión y por su sabiduría.

A nuestros padres por habernos

guiado por el camino del bien, a

nuestros hermanos, esposo (a),

hijos, amigos y demás familiares

que contribuyeron dándonos

fuerza y apoyo desde la escuela,

colegio y universidad.

DEDICATORIA

“A ti mi Señor Jesús, por tu

bondad infinita”.

Todo nuestro esfuerzo y en

especial nuestro triunfo en esta

etapa estudiantil y en todo el

camino recorrido se lo dedicamos

a nuestros padres, que con su

lucha diaria y dedicación lograron

convertirnos en lo que hoy somos,

personas y profesionales de bien.

Extensiva esta dedicatoria a

nuestra familia, esposo (a), hijos,

que nos dieron una mano amiga,

apoyándonos en todo momento.

TRIBUNAL DE GRADUACIÓN

__________________________ _____________________

Ing. Xxx Ing. Xxxxx

Decano Director de Tesis

__________________________ ______________________

Ing. Xxxxx Ing. Xxxx

Vocal Vocal

_________________________

Ab.

Secretario

DECLARACIÓN EXPRESA

“La autoría de la tesis de grado corresponde exclusivamente los suscrito(s),

perteneciendo a la Universidad de Guayaquil los derechos que generen la

aplicación de la misma”

(Reglamento de Graduación de la Carrera de Ingeniería en Sistemas

Computacionales, Art. 26).

RESUMEN

El sistema de control de acceso desarrollado se basa en la necesidad de los

gimnasios de poder controlar el volumen de socios, sus ingresos, sus

consumos y de esa manera poder reflejar en sus balances la situación

financiera.

Nuestro modelo a seguir es el gimnasio Gold´s Gym quien cuenta con un

sistema bajo la plataforma Windows con el programa FoxPro 2.6 que no

permitía generar procesos en línea lo que ocasionaba pérdida de tiempo y

malestar en los socios nuevos para ingresar al gimnasio -se hacía lento y

tedioso- debido a que cuando el número de socios se incrementaba, el

control se hacía mas dificultoso (no presenta flexibilidad) lo que implicaba el

caos total. Esto también se debe a la falta de comunicación entre los

departamentos.

Para modificar todas las dificultades presentadas en los párrafos anteriores

hemos propuesto un Sistema de Control de Acceso a Gimnasios creado bajo

la plataforma Visual Basic. Net 2003 y base de datos SQL Server 2000, de

esta manera aseguramos que la información se manejará oportunamente,

existiendo comunicación entre los departamentos para que se generen

procesos en línea, flexibilidad y crecimiento de sus datos, manejando así

grandes volúmenes de información.

Se podrá controlar, medir, conocer y comparar el ingreso de los socios

mediante sus fechas de vencimiento que se generan por los pagos que

hayan efectuado; utilizando para su ingreso la huella digital o una tarjeta de

identificación.

Los efectos en los resultados de facturación se darán a conocer en los

informes, analizando el impacto económico que ellos representen.

INDICE GENERAL

Agradecimiento II

Dedicatoria III

Tribunal de Graduación IV

Declaración Expresa V

Resumen VI

Índice General VII

PARTE I

INTRODUCCIÓN

CAPÍTULO 1

1. PRELIMINARES 1 1.1. Antecedentes 1

1.2. Ámbito y Problemática 1-2

1.3. Solución de la Problemática 3

1.4. Definición del Proyecto 3-4

1.5. Objetivos del Proyecto 4

1.5.1 Objetivos Generales 4

1.5.2. Objetivos Específicos 4-6

1.6. Alcance del Proyecto 6

1.6.1 Módulo Archivos 7

1.6.2 Módulo Seguridad 7

1.6.2.1. Mantenimiento 7

1.6.2.2. Procesos 7

1.6.2.3. Consultas / Reportes 8

1.6.3. Modulo Facturación 8

1.6.3.1. Mantenimiento 8-9

1.6.3.2. Procesos 9-10

1.6.3.3. Consultas / Reportes 10-11

1.6.4. Modulo Inventario 11

1.6.4.1. Mantenimiento 11

1.6.4.2. Procesos 11

1.6.4.3. Consultas / Reportes 12-13

1.7.Recursos para el desarrollo del Proyecto 13

1.7.1 Hardware 13-14

1.7.2 Software 14

1.8 Metodología 14-15

CAPÍTULO 2

2. Análisis 16

2.1. Levantamiento de Información 16

2.2. Recopilación de los Requerimientos 16-17

2.3. Análisis de los Requerimientos 17-18

2.4. Diagrama transición de Datos 19

2.5. Diagramas flujo de datos 20

2.5.1. Ingreso de Clientes 20

2.5.2. Acceso a servicios gimnasio 21

2.5.3. Servicio-compra de un plato en el gimnasio 22

2.6. Diagramas casos de uso 1-6 23-43

2.6.1. Descripción Caso de Uso 1 24

2.6.1.1. Escenarios 24

2.6.1.2. Clases 25

2.6.1.3. Representación Clases 25-27

2.6.2. Descripción Caso de Uso 2 29

2.6.2.1. Escenarios 29-30

2.6.2.2. Clases 30

2.6.2.3. Representación Clases 30-32

2.6.3. Descripción Caso de Uso 3 34

2.6.3.1. Escenarios 34

2.6.3.2. Clases 34

2.6.3.3. Representación Clases 35-36

2.6.4. Descripción Caso de Uso 4 37

2.6.4.1. Escenarios 38

2.6.4.2. Clases 38

2.6.4.3. Representación Clases 38-39

2.6.5. Descripción Caso de Uso 5 40

2.6.5.1. Escenarios 41

2.6.5.2. Clases 41

2.6.5.3. Representación Clases 41-42

2.6.6. Descripción Caso de Uso 6 44

2.6.6.1. Escenarios 44

2.6.6.2. Clases 44

2.6.6.3. Representación Clases 45

2.7. Diagrama objeto relación 46

2.8. Diagrama Orientado a objetos 47

CAPITULO 3

3. Diseño 48

3.1. Diseño de Datos 48-67

3.2. Diagrama entidad-relación 68

3.3. Diagrama de contexto de arquitectura y

funcionabilidad del proyecto 69

3.4. Diagrama arquitectónico de flujo de datos 70-72

3.5. Diseño de Interfaz 74

3.6. Diseño a nivel de componentes 75-76

CAPITULO 4

4. Desarrollo y Prueba del Sistema 77

4.1. Desarrollo 77

4.2. Pruebas 78

Conclusiones 79

Recomendaciones 80

Presupuesto aproximado para el desarrollo del sistema 81-82

INDICE DE FIGURAS

Figura 2.1. Diagrama de transición de datos 19

Figura 2.2. Diagrama ingreso de cliente 20

Figura 2.3. Acceso a servicios gimnasio 21

Figura 2.4. Servicios-compra de un plato en gimnasio 22

Figura 2.5. Diagrama caso de uso-Administrador

del sistema 23

Figura 2.6. Crea Usuarios 25

Figura 2.7. Crea Claves 26

Figura 2.8. Crea Sucursales 26

Figura 2.9. Crea Cajas 27

Figura 2.10. Diagrama caso de uso-Supervisor del sistema 28

Figura 2.11. Crea Productos 30

Figura 2.12. Crea Tarjetas de Crédito 31

Figura 2.13. Crea Combos 31

Figura 2.14. Crea Platos 32

Figura 2.15. Crea Provincias y Ciudades 32

Figura 2.16.Diagrama caso de uso-usuario del sistema(cajero) 33

Figura 2.17. Crea Socio 35

Figura 2.18. Crea Facturas 35

Figura 2.19. Crea Devoluciones 36

Figura 2.20. Crea Ticket de Servicio 36

Figura 2.21. Diagrama caso de uso-cliente lectora de huellas 37

Figura 2.22. Crea Lectora de Huellas 38

Figura 2.23. Crea Datos Cliente 39

Figura 2.24. Diagrama caso de uso-usuario datos cliente 40

Figura 2.25. Crea Cliente 41

Figura 2.26. Crea Membresía (Tipo y Vencimiento) 42

Figura 2.27. Diagrama caso de uso-facturas 43

Figura 2.28. Crea Factura 45

Figura 2.29. Crea Imprime-Factura 45

Figura 2.30. Diagrama Objeto relación 46

Figura 2.31. Diagrama orientado a objetos 47

Figura 3.1 Diagrama entidad-relación 68

Figura 3.2. Diagrama de contexto de arquitectura y

funcionabilidad del proyecto 69

Figura 3.3. Diagrama arquitectura de flujo de datos 1 70

Figura 3.4. Diagrama arquitectura de flujo de datos 2 71

Figura 3.5. Diagrama arquitectura de flujo de datos 3 72

Figura 3.6. Diseño a nivel de componentes 1 75

Figura 3.7. Diseño a nivel de componentes 2 76

INTRODUCCIÓN

El Sistema desarrollado ayudará a controlar, medir, conocer y comparar el

ingreso de socios a los gimnasios.

La solución que se plantea es que cada uno de estos lugares maneje la

información oportunamente y que no se vean opacados por la falta de

comunicación entre los departamentos, para que se generen procesos en

línea, flexibilidad y crecimiento de sus datos, manejando así grandes

volúmenes de información.

Para un gimnasio ya establecido se procederá, a demás, a eliminar la

redundancia de datos.

El sistema se lo ha desarrollado bajo la plataforma Visual Basic.Net 2003 y

base de datos SQL Server 2000, además utilizamos Cristal Report Designer

7.0.

Debemos contar con una máquina que funcionará como servidor principal,

debe tener las siguientes características:

▪ 512 MB de Memoria RAM (o superior)

▪ 80 GB de disco (o superior, de preferencia disco SCSI)

▪ Procesador Pentium IV de 3 GH (o superior)

▪ Monitor de 15”

Las máquinas donde funcionará el sistema deben tener como mínimo las

siguientes características:

▪ 512 MB de Memoria RAM

▪ 40 GB de disco duro

▪ Procesador Pentium IV de 2.8 GH

▪ Monitor de 15”

▪ 1 Impresora de inyección a tinta

▪ 1 Flash Memory 512 Mb

▪ 1 CD-Writer

También necesitaremos un Reloj Biométrico y una lectora de código de

barra. Así como, la adquisición de las licencias para los sistemas

operativos y para la base de datos.

Además, las máquinas de usuario deberán tener instalado CRISTAL

REPORTS 7.0.

Se podrán visualizar los reportes tales como:

▪ Reportes por fechas

▪ Reportes por códigos

▪ Reportes históricos

▪ Reportes de auditoria

▪ Reportes de ventas

Para poder ingresar al sistema el administrador deberá crear usuarios con

claves, de tal manera que cada usuario digite su ID y contraseña. Además,

se le definirá los campos a los cuales puede acceder, existiendo restricciones

para muchos.

De esta manera controlaremos los movimientos de cada usuario en el

Sistema.

1

CAPITULO 1

1. TABLAS BASE DE DATOS

1.1. DICCIONARIO DE DATOS

• Tabla ASISTENCIA

CAMPO TIPO

ID (NUMERO) numeric (9)

CODIGOSECUEN nvarchar (13)

NOMBRE nvarchar (50)

FECHA datetime (8)

HORA char (10)

Esta tabla guarda los datos de ingresos de socios al gimnasio, a

continuación describimos sus campos:

- ID (NUMERO): Es el código secuencial

- CODIGOSECUEN: Contiene el numero de cédula del socio,

usuario, proveedor, empleado

- NOMBRE: Es el nombre del socio, usuario, proveedor o

empleado

- FECHA: Es la fecha en la que ingresa (pone su huella)

- HORA: Es la hora en la que pone su huella

2

• Tabla BRONCEADOS

CAMPO TIPO

ID (NUMERO) numeric (9)

NUMEROCAJA numeric (9)

CLIENTE nvarchar (50)

SESION nvarchar (3)

HORAINICIAL nvarchar (8)

HORAFINAL nvarchar (8)

TIPOMEMBRESIA int (4)

COMENTARIO nvarchar (40)

FECHA datetime (8)

Tabla transaccional que registra los datos de todos los bronceados

efectuados a un socio, a continuación describimos sus campos:

- ID (NUMERO): Es el código secuencial

- NUMEROCAJA: Es el número a guardar en la tabla secuencial

- CLIENTE: Es el nombre del cliente que desea el servicio

- SESION: Es el tipo de servicio

- HORAINCIAL: Es la hora en que debe inciar el cliente a tomar

el servico

- HORAFINAL.: Es la hora en que finaliza el servicio que escogió

el cliente

- TIPOMEMBRESIA: Es la membresía que tiene el socio en su

catálogo de cliente

3

- COMENTARIO: Se puede describir cualquier novedad, es un

espacio para detallar algo en particular

- FECHA: Es la fecha de registro (operación)

• Tabla CABECERA_FACTURA

CAMPO TIPO

ID(NUMERO) int (4)

TIPO char (2)

SUCURSAL char (2)

CAJA char (3)

NUMEROCAJA numeric 9(10,0)

FECHA datetime (8)

CLIENTE nvarchar (10)

VENDEDOR nvarchar (10)

CAJERO nvarchar (10)

COMENTARIO nvarchar (1500)

OBSERVACION nvarchar (100)

PORCEDESCTO1 decimal 9(18,0)

PORCEDESCTO2 decimal 9(18,0)

PORCEIVA decimal 9(18,0)

SUBTOTAL float (8)

DESCUENTO1 float (8)

DESCUENTO2 float (8)

IMPUESTO float (8)

TOTAL float (8)

IMPRESO char (1)

HORA char (10)

4

Esta tabla guarda las transacciones de ventas efectuadas por los

vendedores

- ID (NUMERO): Es el código secuencial

- TIPO: Es el tipo de la transacción en este caso es NV (nota de

venta)

- SUCURSAL: Se identifica en que local se está realizando la

transacción.

- CAJA: Es el número que corresponde a la máquina donde se

efectua la operación

- NUMEROCAJA: Es el número secuencial que corresponde a

esa sucursal y a esa caja

- CLIENTE: Es el número de cédula de la persona a la que está

facturando

- VENDEDOR: Es el código de la persona que realiza la factura

- CAJERO: Es el Códgio del cajero que realiza la factura

- COMENTARIO: Se puede describir cualquier novedad, es un

espacio para detallar algo en particular

- OBSERVACIÓN: Parecido al campo comentario, se puede

detallar alguna novedad

- PORCEDESCTO1: Es el porcentaje de descuento que

corresponden a los productos o servicios que se están

facturando

5

- PORCEDESCTO2: Es el porcentaje de descuento aplicado a

toda la factura

- PORCEIVA: Es el porcentaje asignado al rubro IVA (de acuerdo

a lo vigente por la ley)

- SUBTOTAL: Es el valor que refleja sin iva

- DESCUENTO1: Refleja el valor correspondiente al porcentaje

designado en descuento1

- DESCUENTO2: Refleja el valor correspondiente al porcentaje

designado en descuento 2

- IMPUESTO: Es el valor del IVA (de acuerdo al % vigente)

- TOTAL: Es el valor neto a pagar con descuentos e iva

- IMPRESO: Es un valor bolean correspondiente a si la factura

fue impresa o no

- HORA: Es la hora en que se hizo la transacción (Factura)

• Tabla CABECERA_INVENTARIO

CAMPO TIPO

ID(NUMERO) numeric 9(10,0)

TIPO char (2)

SUCURSAL int (4)

CAJA char (3)

NUMEROCAJA numeric 9(18,0)

TIPOINGRESO char (50)

6

PROVEEDOR nvarchar (15)

SUBTOTALPRECIO float (8)

IVAPRECIO float (8)

TOTALPRECIO float (8)

SUBTOTALCOSTO float (8)

IVACOSTO float (8)

TOTALCOSTO float (8)

FECHA datetime (8)

HORA datetime (8)

USUARIO char (10)

OBSERVACIONES nvarchar (1500)

IMPRESO bit (1)

ELIMINADOS bit (1)

Esta tabla guarda todas las transacciones de ingreso y egreso de

bodega, a continuación describimos sus campos:

- ID (numero): Es el código secuencial

- TIPO: Define si es un ingreso o egreso de bodega mediante la

nomenclatura CO y SA, respectivamente

- SUCURSAL: Sirve para identificar en que lugar se

- CAJA: Es el número que corresponde a la máquina donde se

efectua la operación

- NUMEROCAJA: Es el número secuencial que corresponde a

esa sucursal y a esa caja

7

- TIPOINGRESO: Se refiere a la clasificación que pueden se:

por transferencia, importación, compras localels, donaciones

- PROVEEDOR: Es el nombre de la persona que provee el

producto

- SUBTOTALPRECIO: Es el valor que se refleja sin iva para el

cliente

- IVAPRECIO: Es el valor que resulta de sacar el valor del iva

asignado por ley a subtotal precio

- TOTALPRECIO: Es la suma de la cantidad del subtotalprecio

con el ivaprecio

- SUBTOTALCOSTO: Es el costo que se refleja y el que tiene

que pagar el gimnasio por la compra al proveedor

- IVACOSTO: Es el valor que resulta de sacar el porcentaje

correspondiente a subtotalcosto

- TOTALCOSTO: Es la suma de subtotalcosto con ivacosto

- FECHA: Es cuando se realiza la transacción (ingreso o egreso)

- HORA: Es la hora en que se realiza la transacción

- USUARIO: Es quien realiza la transacción puede ser el

administrador o cualquier otro usuario que exista

- OBSERVACIONES: Se puede describir cualquier novedad, es

un espacio para detallar algo en particular

8

- IMPRESO: Valor boolenao para ver si se fue a imprimir la

factura o no

- ELIMINADOS: Cuando se elimina (se anula) la factura

• Tabla CAJA

CAMPO TIPO

ID (CODCAJA) int (4)

DESCRIPCION nvarchar (50)

ESTADO char (2)

Esta tabla guarda las caracteristicas de las diferentes cajas que se

crean, estos pueden ser su estado, el nombre. A continuación

detallamos sus campos:

- ID (CODCAJA): Es el código secuencial

- DESCRIPCIÓN: Es la descripción de la caja

- ESTADO: Si está activa o inactiva

• Tabla COMBO_CABECERA

CAMPO TIPO

ID (NUMERO) int (4)

CODCOMBO int (4)

NOMBRE nvarchar (50)

9

PRECIO decimal 9 (18,2)

ESTADO char (2)

FECHA_CREACION datetime (8)

FECHA_MOD datetime (8)

Esta tabla guarda la información referente a los combos que se

creen por ejemplo el nombre, precio. A continuación describimos sus

campos:

- ID (numero): Es el codigo secuencial

- Codcombo: Es el código del combo que se crea

- Nombre: Es el nombre que se le de al combo que se crea

- Precio: Es el precio del combo que se creó

- Estado: Especifica si el combo está activo o inactivo

- Fecha_creación: Refleja la fecha de creación del combo

- Fecha_mod: Refleja la fecha en que se modifica el combo

• Tabla COMBO_DETALLE

CAMPO TIPO

ID (NUMERO) int (4)

CODCOMBO int (4)

CODPRODSERV int (4)

ESTADO char (2)

CANTIDAD numeric 9(18,0)

10

COSTO float (8)

FECHA_CREACION datetime (8)

FECHA_MOD datetime (8)

TOTAL float (8)

PRECIO float (8)

DESCUENTO Flota (8)

Esta tabla guarda el detalle de la creación del combo como por

ejemplo en que consiste el combo de que estará formado. A

continuación describimos sus campos:

- ID (numero): Es el código secuencial

- Codcombo: Es un código secuencial que relaciona la cabecera

con el detalle del combo

- Codprodserv: Es el código del producto, en este caso el nombre

del combo

- Estado: Si está activo o inactivo

- Cantidad: Es el número de productos que contendrá el combo

- Costo: Es el valor total de los componentes del combo

- Fecha_creación: Es la fecha en que se crea el combo

- Fecha_mod: Es la fecha en que se modifica el combo

- Total: Es el resultado que muestra dependiendo de la cantidad

del producto por su precio unitario

- Precio: Es cuanto costará el combo al público

11

- Descuento: Es el porcentaje asignado para el descuento en

cada uno de los productos que se escoge para formar el combo

• Tabla DETALLE_FACTURA

CAMPO TIPO

ID (NUMERO) numeric 9(10,0)

NUMEROCAB numeric 9(18,0)

TIPO char (2)

SUCURSAL char (3)

CAJA char (3)

NUMEROCAJA numeric 9(18,0)

CODIGOPRODUCTO nvarchar (50)

FECHA datetime (8)

CANTIDAD numeric 9(18,0)

TOTAL1 float (8)

TOTAL2 float (8)

DESCUENTO1 float (8)

DESCUENTO2 float (8)

VALORDESCUENTO1 float (8)

VALORDESCUENTO2 float (8)

PRECIO float (8)

COSTO float (8)

IVA float (8)

HORA char (10)

12

Esta tabla guarda las transacciones de las facturas (productos) , a

continuación describimos sus campos:

- ID (NUMERO): Es el número secuencial

- NUMEROCAB: Código que relaciona la cabecera_factura con el

detalle_factura

- TIPO: Define la nomenclatura de la transacción efectuada

- SUCURSAL: Se refiere a la sucursal donde se está realizando

la transacción

- CAJA: Es el número que corresponde a la máquina donde se

efectua la operación

- NUMEROCAJA: Es el número secuencial que corresponde a

esa sucursal y a esa caja

- CODIGOPRODUCTO: Es el código del producto/servicio que se

está facturando

- FECHA: Es la fecha en que se emite la factura

- CANTIDAD: Es el numero de cuanto desea comprar

- TOTAL1: Es el valor del subtotal

- TOTAL2: Es el valor del sutotal menos el valor del IVA

- DESCUENTO1: Es el porcentaje del descuento de los

productos en linea

- DESCUENTO2: Es el porcentaje del descuento a toda la factura

13

- VALORDESCUENTO1: Es el valor del descuento de los

productos en línea

- VALORDESCUENTO2: Es el valor del descuento a toda la

factura

- PRECIO: Es la suma a pagar o en nuestro caso a cobrar

- COSTO: Es el valor que cancela el gimnasio por adquirir algo

- IVA: Es el porcentaje del 12% que se le suma al preciototal de

la compra

- HORA: Es la hora en la que se realiza la transacción

• Tabla DETALLE_INVENTARIO

CAMPO TIPO

ID (NUMERO) numeric 9(10,0)

NUMEROCAB numeric 9(18,0)

TIPO char (2)

SUCURSAL int (4)

CAJA char (3)

NUMEROCAJA numeric 9(18,0)

CODIGOPRODUCTO nvarchar (50)

CANTIDAD numeric 9(18,0)

PRECIO float (8)

COSTO float (8)

TOTALP float (8)

TOTALC float (8)

14

IVA float (8)

FECHA datetime (8)

HORA nvarchar (50)

Esta tabla guarda los datos relacionados a los ingresos y egresos de

los productos, servios, platos, a continuación describimos sus

campos:

- ID (NUMERO): Es un código secuencial

- NUMEROCAB: Es el codigo que relaciona la

cabecera_inventario con el detalle_inventario

- TIPO: Es el tipo de la transacción que se está realizando

- SUCURSAL: Es donde se está realizando la transacción en cual

local

- CAJA: Es el número que corresponde a la máquina donde se

efectua la operación

- NUMEROCAJA: Es el número secuencial que corresponde a

esa sucursal y a esa caja

- CODIGOPRODUCTO: Es un código del producto o servicio que

se está ingresando o egresando

- CANTIDAD: Es el numero (cuantos) productos o servicios

ingresan o egresan

- PRECIO: Es lo que valdrá al publico

- COSTO: Es cuanto le costará al gimnasio

15

- TOTALP: Es la suma del subtotal mas el iva del precio

- TOTALC: Es la suma del subtotal mas el iva del costo

- IVA: Es el valor correspondiente al 12% asignado para el iva

- FECHA: Es cuando se realiza la transacción

- HORA: Es la hora en la que se está realizando la transacción

• Tabla EXISTENCIAS

CAMPO TIPO

NUMERO numeric 9(18,0)

TIPO char (2)

SUCURSAL char (3)

CAJA char (3)

NUMEROCAJ numeric 9(18,0)

NUMEROCAB numeric 9(18,0)

CODIGO nvarchar (50)

FECHA datetime (8)

CANTIDAD numeric 9(18,0)

Esta tabla guarda todas las transacciones de ventas, compras,

devoluciones y salidas de bodegas para llevar el control de

inventario, a continuación describimos sus campos:

- NUMERO: Es un código secuencial

- TIPO: Es la nomenclatura de la transacción efectuada, ya sea

CO, SA, NV, DE

16

- SUCURSAL: Es donde se está realizando la transacción

- CAJA: Es el número que corresponde a la máquina donde se

efectua la operación

- NUMEROCAJA: Es el número secuencial que corresponde a

esa sucursal y a esa caja

- CODIGO: Es el código del producto

- FECHA: Es cuando se realiza la transacción

- CANTIDAD: Cuanto hay de mis productos

• Tabla HORARIOS

CAMPO TIPO

TIPO char (3)

NOMBRE nvarchar (50)

CODIGO char (3)

DESCRIPCION nvarchar (50)

HORAINICIAL nvarchar (50)

HORAFINAL nvarchar (50)

Esta tabla guarda todos los horarios designados o creados para los

diferentes servicios que ofrece el gimnasio como es de masajes,

personal trainer, pilates, bronceados, a continuación describimos sus

campos:

17

- TIPO: A que servicio se está definiendo el horario en este caso

pueden ser bronceados, masajes, pilates, personal trainer PTR,

MAS, PIL, BRO

- NOMBRE: Es el nombre del servicio

- CODIGO: Es el numero asignado a cada servicio

- DESCRIPCION: De que se está hablando

- HORAINICIAL: La hora en que inicia el servicio seleccionado

- HORAFINAL: La hora en que finaliza el servicio seleccionado

• Tabla LOCKER

CAMPO TIPO

ID (NUMERO) numeric 9(18,0)

NUMEROCAJA numeric 9(18,0)

CLIENTE nvarchar (50)

FECHA datetime (8)

TIPOMEMBRESIA int (4)

COMENTARIO nvarchar (400)

Esta tabla guarda todos los datos relacionados al servicio locker, a

continuación describimos sus campos:

- ID (NUMERO): Es el código secuencial

- NUMEROCAJA: Es el número secuencial que corresponde a

esa sucursal y a esa caja

- CLIENTE: Es el nombre de la persona que solicita el servicio

18

- FECHA: Es la fecha en que solicita el servicio

- TIPOMEMBRESIA: Es el tipo de membresía del cliente

- COMENTARIO: Se puede detallar cualquier inquietud u

observación

• Tabla MASAJES

CAMPO TIPO

ID (NUMERO) numeric 9(18,0)

NUMEROCAJA numeric 9(18,0)

CLIENTE nvarchar (50)

MASAJISTA nvarchar (10)

SESION nvarchar (10)

HORAINICIAL nvarchar (8)

HORAFINAL nvarchar (8)

TIPOMEMBRESIA int (4)

COMENTARIO nvarchar (400)

FECHA datetime (8)

Esta tabla guarda los datos relacionados al servicio masajes, a

continuación describimos sus campos:

- ID (NUMERO): Es un código secuencial

- NUMEROCAJA: Es el número secuencial que corresponde a

esa sucursal y a esa caja

- CLIENTE: Es el nombre de la persona que solicita el servicio

- MASAJISTA: Es el nombre de la persona que dará el servicio

19

- SESION: Es el tipo de servicio

- HORAINICIAL: Es la hora en que inicia el servicio

- HORAFINAL: Es la hora en que termina el servicio

- TIPOMEMBRESIA: Es el tipo de membresía que tiene el cliente

- COMENTARIO: Se puede anotar cualquier novedad

- FECHA: Es la fecha de creación del servicio

• Tabla MODULO

CAMPO TIPO

ID (CODMODULO) int (4)

DESCRIPCION nvarchar (50)

ESTADO char (2)

Esta tabla guarda los módulos del sistema: facturación, inventario y

seguridad, a continuación describimos sus campos:

- ID (CODMODULO): Es el número que identifica que tipo de

módulo es en este caso sería 1,2,3

- DESCRIPCION: Es el nombre del modulo es decir facturación,

inventario y seguridad

- ESTADO: Si se encuentran activos o inactivos

20

• Tabla OPCIONES_POR_MODULO

CAMPO TIPO

ID (CODOPCION) int (4)

CODMODULO int (4)

CODOPCXMOD Numeric 9(10,0)

DESCRIPCION nvarchar (50)

OPCFORMULARIO nvarchar (50)

OPCOBSERVACION nvarchar (50)

OPCFECHACREAC datetime (8)

OPCESTADO char (2)

CODUSUL int (4)

PCI nvarchar (50)

Esta tabla guarda los menús y submenu, a continuación describimos

sus campos:

- ID (CODOPCION): Es el numero de la opcion del menu

CODMODULO: Es el nuemro que identifica que modulo es

- CODOPCXMOD: Es el campo que relaciona la tabla módulo

con la tabla opciones_por_modulo

- DESCRIPCION: Indica el nombre del menú o submenú

- OPCFORMULARIO: Es el nombre del código del menú y

submenú al que pertenece

- OPCOBSERVACION: Es la descripción del menú o submenú

- OPCFECHACREAC: Es la fecha en la que se creo

21

- OPCESTADO: Si se encuentra activo o inactivo

- CODUSUL: Es el usuario que creo el módulo

- PCI: Es el nombre de la máquina donde se creo el nombre

• Tabla PAGOS_FACTURA

CAMPO TIPO

ID (NUMERO) numeric 9(10,0)

NUMEROCAB numeric 9(10,0)

TIPO char (2)

SUCURSAL char (3)

CAJA char (3)

NUMEROCAJA numeric 9(18,0)

FECHA datetime (8)

FORMAPAGO char (2)

PORCOBRAR float (8)

VALORRECIBIDO float (8)

CODIGOTARJETA nvarchar (50)

NUMEROTARJETA nvarchar (50)

NOMBRECLIENTE nvarchar (50)

TELEFONOTARJETA nvarchar (50)

LOTE char (10)

FECHACHEQUE datetime (8)

CODIGOBANCO nvarchar (50)

NUMEROCHEQUE nvarchar (50)

CTACTE nvarchar (50)

NOMBREEMPLEADO nvarchar (50)

CEDULAEMPLEADO char (10)

22

CANCELADO char (2)

HORA char (10)

Esta tabla guarda la forma y el detalle de pagos efectuados en una

factura ya sean estos efectivos, tarjeta, cheque o crredito, a

continuación describimos sus campos:

- ID (NUMERO)

- NUMEROCAB: Es el código que relaciona pagos_factura con la

cabecera de la factura

- TIPO: Es la nomenclatura de la transacción efecutada en este

caso PG

- SUCURSAL: Es en que sucursal se realiza la transacción

- CAJA: Es el número que corresponde a la máquina donde se

efectua la operación

- NUMEROCAJA: Es el número secuencial que corresponde a

esa sucursal y a esa caja

- FECHA: Es la fecha de elaboración de la factura

- FORMAPAGO: Es la nomenclatura respecto al pago en este

caso EF (efectivo), CH (cheque), TA (tarjeta), CR (crédito)

- PORCOBRAR: Es el valor cobrado

- VALORRECIBIDO: Solo almacena un dato si es en efectivo la

forma de pago, que nos sirve para dar el cambio

23

- CODIGOTARJETA: Es el código de la tarjeta de crédito con que

cancelan la factura

- NUMEROTARJETA: Es el número de la tarjeta de crédito del

socio que cancela

- NOMBRECLIENTE: Es el nombre del dueño de la tarjeta con

que se está cancelando

- TELEFONOTARJETA: Es el teléfono del tarjeta ambiente

- LOTE: Es el número de la tarjeta (Código)

- FECHACHEQUE: Es la fecha que tiene el cheque girado con el

que cancelan la factura

- CODIGOBANCO: Es el código del banco a que pertenece el

cheque

- NUMEROCHEQUE: Es el número del cheque con el que están

cancelando

- CTACTE: Es el número de la cuenta corriente a la que

pertenecen los cheques girados (el cheque con el que pagan)

- NOMBREEMPLEADO: Es el nombre del empleado que está

realizando la transacción

- CEDULAEMPLEADO: Es la cédula del empleado

-- CANCELADO: Es un valor boleano que representa si se efectuo

el pago o no

- HORA: Es la hora en que se realiza la transacción

24

• Tabla PARAMETROS

CAMPO TIPO

NOMBREMPRESA nvarchar (100)

DIRECCION nvarchar (150)

PORCENTAJEIVA decimal 9(18,0)

TELEFONOEMP nvarchar (20)

RUC nvarchar (13)

PORCENTDESCTO decimal 9(18,2)

SUCURSAL numeric 9(18,0)

CAJA numeric 9(10,0)

SECUENCIA nvarchar (13)

RUTA nvarchar (50)

Esta tabla guarda los parámetros basicos de la empresa, a

continuación describimos sus campos:

- NOMBREMPRESA: Es el nombre de la empresa que a

comprado el sistema

- DIRECCION: Es la dirección de la empresa que compró el

sistema

- PORCENTAJEIVA: Es el porcentaje para el iva que utilizarán

(debe ser el que rige por ley)

- TELEFONOEMP: Es el número telefonico de la empresa que

compró el sistema

25

- RUC: Es el número de ruc designado por el SRI a la empresa

que compró el sistema

- PORCENTDESCTO: Se define el porcentaje del descuento con

el que trabajará la empresa que compró el sistema

- SUCURSAL: Se definen las sucursales con las que cuenta la

empresa que compró el sistema

- CAJA: Es el número que corresponde a la máquina donde se

efectua alguna operación transaccional, ingreso

- SECUENCIA: Es un número aleatorio

- RUTA: Guarda la dirección del logo de la empresa

• Tabla PARQUEO

CAMPO TIPO

ID (NUMERO) numeric 9(18,0)

NUMEROCAJA numeric 9(18,0)

CLIENTE nvarchar (50)

FECHA datetime (8)

HORAINICIAL nvarchar (8)

TIPOMEMBRESIA char (10)

COMENTARIO nvarchar (400)

Esta tabla guarda los datos de los tickets de parqueos que se han

generado. A continuación describimos sus campos:

- ID (NUMERO): Es un número secuencial

26

- NUMEROCAJA: Es el número secuencial que corresponde a

esa sucursal y a esa caja

- CLIENTE: Es el nombre del cliente que solicita parqueo

- FECHA: Es la fecha en la cual se genera el ticket del parqueo

- HORAINICIAL: Es la hora que se define para que el cliente

haga uso del parqueo

- TIPOMEMBRESIA: Se define el tipo de membresía que tiene el

socio

- COMENTARIO: Se puede escribir cualquier novedad

• Tabla PERMISO_POR_USUARIO

CAMPO TIPO

ID (CODPERXUSU) int (4)

CODCEDULAUSU nvarchar (15)

CODOPC int (4)

ESTADO char (210)

Esta tabla guarda los permisos que el administrador crea para cada

usuario que manejará el sistema. A continuación describimos sus

campos:

- ID (CODPERXUSU): Es el código secuencial

- CODCEDULAUSU: Es el número de cédula del usuario

27

- CODOPC: Se define a que parte del sistema puede ingresar (es

decir los accesos que tiene disponible)

- ESTADO: Si el usuario está activo o inactivo

• Tabla PERSONA

CAMPO TIPO

CODPERS int (4)

CODIGOSECUEN nvarchar (13)

CEDULA nvarchar (15)

CODTIPOPER int (4)

PERNOMBRE nvarchar (50)

PERAPELLIDO nvarchar (50)

PERDIRECCION nvarchar (150)

PERTELEFONO nvarchar (10)

PERMAIL nvarchar (50)

PERFAX nvarchar (50)

CODCIUDAD int (4)

CODZONA int (4)

FECHAINGRESO datetime (8)

FECHASALIDA datetime (8)

PERCOMENTARIO nvarchar (400)

FECHAMODIF datetime (8)

CODEMPL int (4)

PERDESCTO char (2)

FECHANAC datetime (8)

PERESTDCIVIL char (2)

PERSEXO char (2)

28

PERESTADO char (2)

PEREMPRESA nvarchar (50)

PERRUC nvarchar (13)

TIPO numeric 9(18,0)

Esta tabla guarda todos los datos personales de los clientes del

gimanasio (son las personas que ingresan al gym), estos pueden ser

usuarios, clientes, proveedores

- CODPERS: Es el numero secuencial

- CODIGOSECUEN: Es un número aleatorio

- CEDULA: Es el número de cédula de la persona

- CODTIPOPER: Es para identificar si quien ingresa al gimnasio

es un usuario, cliente, proveedor. Es el número

- PERNOMBRE: Es el nombre de la persona que ingresa al

gimnasio

- PERAPELLIDO: Es el apellido de la persona que ingresa al

gimansio

- PERDIRECCION: Es la dirección de la casa de la persona que

ingresará al gimnasio

- PERTELEFONO: Es el número de telefono de la persona que

ingresará al gimnasio

- PERMAIL: Es la descripción del e-mail de la persona que

ingresará al gimnasio

29

- PERFAX: Es el número de fax de la persona

- CODCIUDAD: Es el código de la ciudad donde se encuentra

- CODZONA: Es el código de la zona donde se encuentra

- FECHAINGRESO: Es la fecha de ingreso de la persona al

gimnasio

- FECHASALIDA: Es la fecha de salida (cuando se le cumple el

tipo de membresía que adquirió en el gimnasio)

- PERCOMENTARIO: Se podrá escribir cualquier tipo de

observación

- FECHAMODIF: Es la fecha que se registra cuando se

actualizan los datos de la persona

- CODEMPL: Es el código del empleado

- PERDESCTO: Es en el caso de que hayan descuentos en el

ingreso de una persona

- FECHANAC: Es la fecha de nacimiento de la persona que

ingresará al gimansio

- PERESTDCIVIL: Es si la persona es casada, soltera, viuda,

divorciada

- PERSEXO: Si la persona es hombre o mujer

- PERESTADO: Si se encuentra activo o inactivo

- PEREMPRESA: A que empresa pertenece la persona

30

- PERRUC: El número de ruc de la empresa a la que pertenece

la persona

- TIPO: Es el tipo de transacción que se está realizando, en este

caso es un ingreso

• Tabla PERSONAL_TRAINER

CAMPO TIPO

ID (NUMERO) numeric 9(18,0)

NUMEROCAJA numeric 9(18,0)

CLIENTE nvarchar (50)

PERSONAL nvarchar (50)

SESION nvarchar (3)

HORAINICIAL nvarchar (8)

HORAFINAL nvarchar (8)

TIPOMEMBRESIA int (4)

ESTADO char (2)

COMENTARIO nvarchar (400)

FECHA datetime (8)

Esta tabla guarda toda la información correspondiente a los personal

trainer y sus turnos. A continuación detallamos sus campos:

- ID (NUMERO): Es el número secuencial

- NUMEROCAJA: Es el número secuencial que corresponde a

esa sucursal y a esa caja

31

- CLIENTE: Es el nombre de la persona que solicita el turno

- PERSONAL: Es el nombre del personal trainer seleccionado o

solicitado

- SESION: Es el tipo de servicio

- HORAINICIAL: Es la hora inicial del turno

- HORAFINAL: Es la hora final del turno

- TIPOMEMBRESIA: Es el tipo de membresía que tiene la

persona que solicitó el servicio

- ESTADO: Si se encuentra activo o inactivo la persona

- COMENTARIO: Se puede emitir algún comentario en particular

- FECHA: Es la fecha en la que se separa el turno (elaboración

del ticket)

• Tabla PILATES

CAMPO TIPO

ID (NUMERO) numeric 9(18,0)

NUMEROCAJA numeric 9(18,0)

CLIENTE nvarchar (50)

PILATES nvarchar (50)

SESION nvarchar (50)

HORAINICIAL nvarchar (8)

HORAFINAL nvarchar (8)

TIPOMEMBRESIA int (4)

ESTADO char (2)

32

COMENTARIO nvarchar (400)

FECHA datetime (8)

Esta tabla guarda toda la información correspondiente a los personal

trainer y sus turnos. A continuación detallamos sus campos:

- ID (NUMERO): Es el código secuencial

- NUMEROCAJA: Es el número secuencial que corresponde a

esa sucursal y a esa caja

- CLIENTE: Es el nombre de la persona que solicita el servicio

- PILATES: Es el nombre de la persona que estará a cargo

- SESION: Es el tipo de servicio

- HORAINICIAL: Es la hora de incio de las clases de pilates

- HORAFINAL: Es la hora de fin del servicio de pilates

- TIPOMEMBRESIA: Es el tipo de membresía que tiene la

persona que solicita el servicio de pilates

- ESTADO: Si está activo o inactivo

- COMENTARIO: Se puede escribir cualquier observación

- FECHA: Es la fecha en que se crea el ticket del servicio de

pilates

33

• Tabla PLATOS_CABECERA

CAMPO TIPO

ID (NUMERO) int (4)

CODPLATO int (4)

CODPRODSERV int (4)

NOMBRE nvarchar (50)

PRECIO decimal 9(18,2)

ESTADO char (2)

FECHA_CREACION datetime (8)

FECHA_MOD datetime (8)

COSTO decimal 9(18,2)

Esta tabla guarda los datos de referencia de la creación de platos. A

continuación detallamos sus campos:

- ID (NUMERO): Es un código secuencial

- CODPLATO: Es el numero aleatorio de creación del plato

- CODPRODSERV: es el codigo del producto terminado (ensalda

césar)

- NOMBRE: Es el nombre del plato creado

- PRECIO: Es el precio del plato creado

- ESTADO: Si está activo o inactivo

- FECHA_CREACION: Es la fecha de creación del plato

- FECHA_MOD: Es la fecha de modificación del plato (cuando

algo si cambia)

34

- COSTO: Es el costo del plato creado (para la empresa)

• Tabla PLATOS_DETALLE

CAMPO TIPO

ID (NUMERO) int (4)

CODPLATO int (4)

CODPRODSERV int (4)

ESTADO char (2)

CANTIDAD char (10)

COSTO float (8)

FECHA_CREACION datetime (8)

FECHA_MOD datetime (8)

PRECIO float (8)

MEDIDA char (20)

TOTAL float (8)

Esta tabla guarda el detalle, es decir en que consiste el plato que ha

sido creado, sus componentes. A continuación detallamos sus

campos:

- ID (NUMERO): Es un código secuencial

- CODPLATO: Es el número aleatorio de creación del plato

- CODPRODSERV: es el codigo del producto terminado (ensalda

césar)

- ESTADO: Es si se encuentra activo o inactivo

- CANTIDAD: Es la cantidad de los componentes del plato

35

- COSTO: Es el valor del plato para la empresa

- FECHA_CREACION: Es la fecha de creación del plato

- FECHA_MOD: Es la fecha de modificación del plato que se creó

- PRECIO: Es el valor al público del plato

- MEDIDA: Se indica la cantidad de los ingredientes de un plato

• Tabla PRODUCTO_SERV

CAMPO TIPO

ID (CODPRODSERV) int (4)

CODPADRE int (4)

NOMBRE nvarchar (50)

PROTIPO char (10)

CODESTADO char (10)

PROFECING datetime (8)

PROIVA char (2)

PROPRECIO decimal 9(18,2)

PROPRECIO2 decimal 9(18,2)

PROPRECIO3 float (8)

PRODESC float (8)

PROFECHMODIF datetime (8)

PROSTOCK int (4)

DESCRIPCION nvarchar (1500)

COSTO decimal 9(18,2)

TIPOMEMBRE numeric 9(18,0)

DIAS numeric 9(18,0)

ESTADO char (2)

36

Esta tabla guarda el detalle de todos los productos y servicios que

ofrece el gimnasio. A continuación detallamos sus campos:

- ID (CODPRODSERV): es el codigo del producto terminado

(ensalda césar)

- NOMBRE: Es el nombre del producto o servicio

- PROTIPO: Se define si es producto (P), servicio (S) o

componente ( C)

- CODESTADO: Si está activo o inactivo

- PROFECING: Es la fecha de creación del producto, servicio o

componente

- PROIVA: Es el valor del iva

- PROPRECIO: Es el precio

- PRODESC: Es el valor del descuento

- PROFECHMODIF: Es la fecha en que se modifica alguna

información

- PROSTOCK: Es lo que se tiene actualmetne

- DESCRIPCION: Se define alguna observación del nombre del

producto o servicio

- COSTO: Es el valor del producto, servicio

- TIPOMEMBRE: Es el tipo de membresía que tiene la persona

- ESTADO: Si está activo o inactivo

37

• Tabla PROVEEDOR

CAMPO TIPO

CODIGO numeric 9

CEDULA nvarchar (15)

CODTIPOPROV int (4)

PRORSOCIAL nvarchar (80)

PROOBSERVACION nvarchar (200)

ESTADO char (2)

Esta tabal guarda los datos de los proveedores del gimnasio, a

continuación detallamos sus campos:

- CODIGO: Es un numero secuencial

- CEDULA: Es el número de cédula del proveedor

- CODTIPOPROV: Es el número que identifica que tipo de

proveedor es

- PRORSOCIAL: Es el nombre del Proveedor

- PROOBSERVACION: Cualquier comentario que se desee

hacer

- ESTADO: Si se encuentra activo o inactivo

38

• Tabla SECUENCIAS

CAMPO TIPO

SECUENCIAL numeric 9(10,0)

TIPO char (2)

SUCURSAL int (4)

CAJA int (4)

NUMERO numeric 9(10,0)

Esta tabla almacena todas las secuencias de todos los formularios

transaccionales por ejemplo: personal trainer, masaje, locker, parqueo,

factura, devolución, ingresos, egresos, combos, platos.

- SECUENCIAL: Es el numero de la secuencia del

servicio/producto

- TIPO: Se refiere al tipo de transacción que se efectuó es de dos

dígitos

- SUCURSAL: Se refiere al lugar donde se efectúa la transacción

- CAJA: Es el número que corresponde a la máquina donde se

efectua la operación

- NUMERO: Guarda el último número del servicio/producto

39

• Tabla SICAG_BUSQUEDAS

CAMPO TIPO

GEN_TABLA nvarchar (50)

GEN_COLUMNA nvarchar (50)

GEN_DESCRIPCION nvarchar (50)

GEN_TIPO char (1)

GEN_LONGITUD int (4)

GEN_OBSERVACION nvarchar (100)

En esta tabla se almacenan todas las búsquedas que son por clientes.

A continuación detallamos sus campos:

- GEN_TABLA: Hace referencia a que tabla se está llamando

- GEN_COLUMNA: Identifica la columna de la tabla que se está

llamando

- GEN_DESCRIPCION: Es la descripción de la columna que se

llamó

- GEN_TIPO: Si está activo o inactivo I, A

- GEN_LONGITUD: Hace referencia al ancho de la columna que

se llamó

- GEN_OBSERVACION: Se puede detallar cualquier comentario

40

• Tabla SUCURSAL

CAMPO TIPO

ID(CODSUCUR) int (4)

DESCRIPCION nvarchar (50)

ESTADO char (2)

Esta tabla guarda los datos de las sucursales que el administrador

ingrese, es decir de los otros locales de la matriz del gimnasio. A

continuación detallamos sus campos:

- CODSUCUR: Es el número aleatorio que se genera al crear una

sucursal

- DESCRIPCION: Es el nombre de la sucursal

- ESTADO: Si se encuentra activo o inactivo

• Tabla TARJETAS_CREDITO

CAMPO TIPO

CODTARJCRED int (4)

DESCRIPCION nvarchar (50)

ABREVIATURA nvarchar (50)

ESTADO char (2)

CODBANCO int (4)

41

Esta tabla guarda los datos de las tarjetas de crédito que acepta el

gimnasio, a continuación detallmos sus campos:

- CODTARJCRED: Es el numero secuencial que se genera

cuando se ingresa una tarjeta de crédito

- DESCRIPCION: Es el nombre de la tarjeta de crédito

- ABREVIATURA: Son las iniciales de la tarjeta de crédito

- ESTADO: Si está activa o inactiva

- CODBANCO: Es el banco al que pertenece la tarjeta

• Tabla TIPO_BANCO

CAMPO TIPO

CODTIPOBANKO int (4)

DESCRIPCION nvarchar (50)

ESTADO char (2)

Esta tabla guarda los datos relacionados al nombre de los bancos que

se ingresaron de acuerdo a las tarjetas de crédito. A continuación

detallamos sus campos:

- CODTIPOBANKO: Es número secuencial que se genera

cuando se ingresa el nombre de un banco

- DESCRIPCION: Es el nombre del banco que se ingresó

42

- ESTADO: Si se encuentra activa o inactiva

• Tabla TIPO_PERSONA

CAMPO TIPO

CODTIPOPERS int (4)

DESCRIPCION nvarchar (50)

Esta tabla guarda la clasificación de las personas que ingresan al

gimnasio que pueden ser clientes, proveedor, empleado, usuario. A

continuación detallamos sus campos:

- CODTIPOPERS: Es el número secuencial que se genera

cuando se ingresa el tipo de persona

- DESCRIPCION: es la clasificación que le dimos:

Cliente.- Es la persona extraña al gimnasio

empleado .- es quien trabaja en el gimnasio menos en los

counters

proveedor.- quien provee al gimnasio

usuario.- es quien maneja el sistema

43

• Tabla USUARIO

CAMPO TIPO

ID(CODUSU) int (4)

CODCEDULA nvarchar (50)

USUPASSWORD nvarchar (50)

USUUSER nvarchar (50)

USUFECCREAC datetime (8)

USUESTADO char (2)

Esta tabla guarda los datos de las personas que manejarán el sistema.

Aquí el Administrador ingresa los datos, designa claves y Id para los

usuarios, a continuación detallamos sus campos:

- CODUSU: Es el numero secuencial que se genera cuando se

crea el usuario

- CODCEDULA: Es el número de cédula del usuario

- USUPASSWORD: Es la clave que se le asigna para que

ingrese al sistema

- USUUSER: es el ID para que ingrese al sistema

- USUFECCREAC: Es la fecha en que se crea el usuario

- USUESTADO: Es si está activo o inactivo

44

• Tabla DETALLE_ZONA

CAMPO TIPO

NUMERO num (9)

CODIGOZONA int (4)

CODIGOCIUDAD int (4)

NOMBRECIUDAD nvarchar (50)

ESTADOCIUDAD Char (2)

Esta tabla guarda todos los datos relacionados con las ciudades. A

continuación detallmos sus campos:

- NUMERO: Es el numero secuencial que se genera cuando se

ingresan la ciudad

- CODIGOZONA: Es el numero que identifica a la zona que hago

referencia

- CODIGOCIUDAD: Es el número que identifica a la ciudad que

hago referencia

- NOMBRECIUDAD: Es el nombre de la ciudad que ingreso

- ESTADOCIUDAD: Si se encuentra activo o inactivo

45

CAPITULO 2

2.1. Creación del Script de la Base de Datos IF EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'Gym') DROP DATABASE [Gym] GO CREATE DATABASE [Gym] ON (NAME = N'GYM_Data', FILENAME = N'C:\Archivos de programa\Microsoft SQL Server\MSSQL\data\gym_Data.MDF' , SIZE = 42, FILEGROWTH = 10%) LOG ON (NAME = N'GYM_Log', FILENAME = N'C:\Archivos de programa\Microsoft SQL Server\MSSQL\data\gym_Log.LDF' , SIZE = 2606, FILEGROWTH = 10%) COLLATE SQL_Latin1_General_CP1_CI_AS GO exec sp_dboption N'Gym', N'autoclose', N'true' GO exec sp_dboption N'Gym', N'bulkcopy', N'false' GO exec sp_dboption N'Gym', N'trunc. log', N'false' GO exec sp_dboption N'Gym', N'torn page detection', N'true' GO exec sp_dboption N'Gym', N'read only', N'false' GO exec sp_dboption N'Gym', N'dbo use', N'false' GO exec sp_dboption N'Gym', N'single', N'false' GO exec sp_dboption N'Gym', N'autoshrink', N'true' GO exec sp_dboption N'Gym', N'ANSI null default', N'false'

46

GO exec sp_dboption N'Gym', N'recursive triggers', N'false' GO exec sp_dboption N'Gym', N'ANSI nulls', N'false' GO exec sp_dboption N'Gym', N'concat null yields null', N'false' GO exec sp_dboption N'Gym', N'cursor close on commit', N'false' GO exec sp_dboption N'Gym', N'default to local cursor', N'false' GO exec sp_dboption N'Gym', N'quoted identifier', N'false' GO exec sp_dboption N'Gym', N'ANSI warnings', N'false' GO exec sp_dboption N'Gym', N'auto create statistics', N'true' GO exec sp_dboption N'Gym', N'auto update statistics', N'true' GO use [Gym] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_MODULO_OPCIONES_POR_MODULO]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[MODULO] DROP CONSTRAINT FK_MODULO_OPCIONES_POR_MODULO GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PERMISO_POR_USUARIO_OPCIONES_POR_MODULO]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[PERMISO_POR_USUARIO] DROP CONSTRAINT FK_PERMISO_POR_USUARIO_OPCIONES_POR_MODULO

47

GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[FK_PERMISO_POR_USUARIO_USUARIO]') and OBJECTPROPERTY(id, N'IsForeignKey') = 1) ALTER TABLE [dbo].[PERMISO_POR_USUARIO] DROP CONSTRAINT FK_PERMISO_POR_USUARIO_USUARIO GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ASISTENCIAS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[ASISTENCIAS] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[BRONCEADOS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[BRONCEADOS] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CABECERA_FACTURA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[CABECERA_FACTURA] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CABECERA_INVENTARIO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[CABECERA_INVENTARIO] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CABECERA_ZONA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[CABECERA_ZONA] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CAJA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

48

drop table [dbo].[CAJA] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[CIUDAD]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[CIUDAD] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[COMBO_CABECERA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[COMBO_CABECERA] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[COMBO_DETALLE]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[COMBO_DETALLE] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DETALLE_FACTURA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[DETALLE_FACTURA] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DETALLE_INVENTARIO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[DETALLE_INVENTARIO] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[DETALLE_ZONA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[DETALLE_ZONA] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[EXISTENCIAS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[EXISTENCIAS] GO

49

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[HORARIOS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[HORARIOS] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[LOCKER]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[LOCKER] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MASAJES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[MASAJES] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[MODULO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[MODULO] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[OPCIONES_POR_MODULO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[OPCIONES_POR_MODULO] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PAGOS_FACTURA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PAGOS_FACTURA] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PARAMETROS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PARAMETROS] GO

50

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PARQUEO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PARQUEO] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PERMISO_POR_USUARIO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PERMISO_POR_USUARIO] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PERSONA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PERSONA] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PERSONA_TRAINER]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PERSONA_TRAINER] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PILATES]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PILATES] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PLATOS_CABECERA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PLATOS_CABECERA] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PLATOS_DETALLE]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PLATOS_DETALLE] GO

51

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[PRODUCTO_SERV]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[PRODUCTO_SERV] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SECUENCIAS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[SECUENCIAS] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SICAG_BUSQUEDAS]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[SICAG_BUSQUEDAS] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SUCURSAL]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[SUCURSAL] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TARJETAS_CREDITO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[TARJETAS_CREDITO] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TIPO_BANCO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[TIPO_BANCO] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[TIPO_PERSONA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[TIPO_PERSONA] GO

52

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[USUARIO]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[USUARIO] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[ZONA]') and OBJECTPROPERTY(id, N'IsUserTable') = 1) drop table [dbo].[ZONA] GO CREATE TABLE [dbo].[ASISTENCIAS] ( [NUMERO] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , [CODIGOSECUEN] [nvarchar] (13) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NOMBRE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHA] [datetime] NULL , [HORA] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[BRONCEADOS] ( [NUMERO] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , [NUMEROCAJA] [numeric](18, 0) NOT NULL , [CLIENTE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SESION] [nvarchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [HORAINICIAL] [nvarchar] (8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [HORAFINAL] [nvarchar] (8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [TIPOMEMBRESIA] [int] NULL , [COMENTARIO] [nvarchar] (400) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHA] [datetime] NULL ) ON [PRIMARY] GO

53

CREATE TABLE [dbo].[CABECERA_FACTURA] ( [NUMERO] [int] IDENTITY (1, 1) NOT NULL , [TIPO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SUCURSAL] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CAJA] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NUMEROCAJA] [numeric](10, 0) NULL , [FECHA] [datetime] NULL , [BODEGA] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CLIENTE] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [VENDEDOR] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CAJERO] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NUMEROCAJERO] [numeric](18, 0) NULL , [AUTORIZA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [NOMBRECAJERO] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [COMENTARIO] [nvarchar] (1500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [OBSERVACION] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PORCEDESCTO1] [decimal](18, 0) NULL , [PORCEDESCTO2] [decimal](18, 0) NULL , [PORCEIVA] [decimal](18, 0) NULL , [SUBTOTAL] [float] NULL , [DESCUENTO1] [float] NULL , [DESCUENTO2] [float] NULL , [IMPUESTO] [float] NULL , [TOTAL] [float] NULL , [TIPOAPLIC] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NUMAPLIC] [numeric](18, 0) NULL , [IMPRESO] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [HORA] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ELIMINADO] [bit] NULL ) ON [PRIMARY] GO

54

CREATE TABLE [dbo].[CABECERA_INVENTARIO] ( [NUMERO] [numeric](10, 0) IDENTITY (1, 1) NOT NULL , [TIPO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SUCURSAL] [int] NULL , [CAJA] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NUMEROCAJA] [numeric](18, 0) NOT NULL , [SUCURSAL1] [int] NULL , [TIPOINGRESO] [char] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PROVEEDOR] [nvarchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [TIPOAPLIC] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NUMEROAPLIC] [numeric](18, 0) NULL , [SUBTOTALPRECIO] [float] NULL , [IVAPRECIO] [float] NULL , [TOTALPRECIO] [float] NULL , [SUBTOTALCOSTO] [float] NULL , [IVACOSTO] [float] NULL , [TOTALCOSTO] [float] NULL , [FECHA] [datetime] NULL , [HORA] [datetime] NULL , [USUARIO] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [OBSERVACIONES] [nvarchar] (1500) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [IMPRESO] [bit] NULL , [ELIMINADO] [bit] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[CABECERA_ZONA] ( [NUMERO] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , [CODIGOZONA] [int] NULL , [NOMBREZONA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ESTADOZONA] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[CAJA] ( [CODCAJA] [int] IDENTITY (1, 1) NOT NULL ,

55

[DESCRIPCION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[CIUDAD] ( [CODCIUDAD] [int] IDENTITY (1, 1) NOT NULL , [DESCRIPCION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ESTADO] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[COMBO_CABECERA] ( [NUMERO] [int] IDENTITY (1, 1) NOT NULL , [CODCOMBO] [int] NOT NULL , [NOMBRE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PRECIO] [decimal](18, 2) NOT NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHA_CREACION] [datetime] NULL , [FECHA_MOD] [datetime] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[COMBO_DETALLE] ( [NUMERO] [int] IDENTITY (1, 1) NOT NULL , [CODCOMBO] [int] NOT NULL , [CODPRODSERV] [int] NOT NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CANTIDAD] [numeric](18, 0) NULL , [COSTO] [float] NULL , [FECHA_CREACION] [datetime] NULL , [FECHA_MOD] [datetime] NULL , [TOTAL] [float] NULL , [PRECIO] [float] NULL , [DESCUENTO] [float] NULL ) ON [PRIMARY]

56

GO CREATE TABLE [dbo].[DETALLE_FACTURA] ( [NUMERO] [numeric](10, 0) IDENTITY (1, 1) NOT NULL , [NUMEROCAB] [numeric](18, 0) NOT NULL , [TIPO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SUCURSAL] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CAJA] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NUMEROCAJA] [numeric](18, 0) NULL , [CODIGOPRODUCTO] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [BODEGA] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [FECHA] [datetime] NULL , [CANTIDAD] [numeric](18, 0) NULL , [TOTAL1] [float] NULL , [TOTAL2] [float] NULL , [DESCUENTO1] [float] NULL , [DESCUENTO2] [float] NULL , [VALORDESCUENTO1] [float] NULL , [VALORDESCUENTO2] [float] NULL , [PRECIO] [float] NULL , [COSTO] [float] NULL , [IVA] [float] NULL , [HORA] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[DETALLE_INVENTARIO] ( [NUMERO] [numeric](10, 0) IDENTITY (1, 1) NOT NULL , [NUMEROCAB] [numeric](18, 0) NOT NULL , [TIPO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SUCURSAL] [int] NULL , [CAJA] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NUMEROCAJA] [numeric](18, 0) NOT NULL , [CODIGOPRODUCTO] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CANTIDAD] [numeric](18, 0) NULL , [PRECIO] [float] NULL , [COSTO] [float] NULL , [TOTALP] [float] NULL , [TOTALC] [float] NULL ,

57

[IVA] [float] NULL , [FECHA] [datetime] NULL , [HORA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[DETALLE_ZONA] ( [NUMERO] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , [CODIGOZONA] [int] NULL , [CODIGOCIUDAD] [int] NULL , [NOMBRECIUDAD] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ESTADOCIUDAD] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[EXISTENCIAS] ( [NUMERO] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , [TIPO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SUCURSAL] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CAJA] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NUMEROCAJ] [numeric](18, 0) NULL , [NUMEROCAB] [numeric](18, 0) NOT NULL , [CODIGO] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHA] [datetime] NULL , [CANTIDAD] [numeric](18, 0) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[HORARIOS] ( [TIPO] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [NOMBRE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CODIGO] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [DESCRIPCION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,

58

[HORAINICIAL] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [HORAFINAL] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[LOCKER] ( [NUMERO] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , [NUMEROCAJA] [numeric](18, 0) NOT NULL , [CLIENTE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHA] [datetime] NULL , [TIPOMEMBRESIA] [int] NULL , [COMENTARIO] [nvarchar] (400) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[MASAJES] ( [NUMERO] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , [NUMEROCAJA] [numeric](18, 0) NOT NULL , [CLIENTE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [MASAJISTA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SESION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [HORAINICIAL] [nvarchar] (8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [HORAFINAL] [nvarchar] (8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [TIPOMEMBRESIA] [int] NULL , [COMENTARIO] [nvarchar] (400) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHA] [datetime] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[MODULO] ( [CODMODULO] [int] IDENTITY (1, 1) NOT NULL , [DESCRIPCION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,

59

[ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[OPCIONES_POR_MODULO] ( [CODOPCION] [int] IDENTITY (1, 1) NOT NULL , [CODMODULO] [int] NOT NULL , [CODOPCXMOD] [numeric](10, 0) NOT NULL , [DESCRIPCION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [OPCFORMULARIO] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [OPCOBSERVACION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [OPCFECHACREAC] [datetime] NOT NULL , [OPCESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CODUSU] [int] NOT NULL , [PCI] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[PAGOS_FACTURA] ( [NUMERO] [numeric](10, 0) IDENTITY (1, 1) NOT NULL , [NUMEROCAB] [numeric](18, 0) NOT NULL , [TIPO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SUCURSAL] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CAJA] [char] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NUMEROCAJA] [numeric](18, 0) NULL , [TIPOAPLIC] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHA] [datetime] NULL , [FORMAPAGO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PORCOBRAR] [float] NULL , [VALORRECIBIDO] [float] NULL , [CODIGOTARJETA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NUMEROTARJETA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,

60

[NOMBRECLIENTE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [TELEFONOTARJETA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [LOTE] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHACHEQUE] [datetime] NULL , [CODIGOBANCO] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CODIGOCIUDAD] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NUMEROCHEQUE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CTACTE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [NOMBREEMPLEADO] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CEDULAEMPLEADO] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [AUTORIZACIONCRED] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [QUIENREGALA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [BENEFICIARIO] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [AUTORIZACIONOBS] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHADEVOLUCION] [datetime] NULL , [NUMERODEVOLUCION] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CANCELADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [HORA] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CIERRE] [bit] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[PARAMETROS] ( [NOMBREMPRESA] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [DIRECCION] [nvarchar] (150) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PORCENTAJEIVA] [decimal](18, 2) NOT NULL ,

61

[TELEFONOEMP] [nvarchar] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [RUC] [nvarchar] (13) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PORCENTDESCTO] [decimal](18, 2) NOT NULL , [SUCURSAL] [numeric](18, 0) NULL , [CAJA] [numeric](18, 0) NULL , [SECUENCIA] [nvarchar] (13) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [RUTA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[PARQUEO] ( [NUMERO] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , [NUMEROCAJA] [numeric](18, 0) NOT NULL , [CLIENTE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHA] [datetime] NULL , [HORAINICIAL] [nvarchar] (8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [TIPOMEMBRESIA] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [COMENTARIO] [nvarchar] (400) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[PERMISO_POR_USUARIO] ( [CODPERXUSU] [int] IDENTITY (1, 1) NOT NULL , [CODCEDULAUSU] [nvarchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CODOPC] [int] NOT NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[PERSONA] ( [CODPERS] [int] IDENTITY (1, 1) NOT NULL , [CODIGOSECUEN] [nvarchar] (13) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,

62

[CEDULA] [nvarchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CODTIPOPER] [int] NOT NULL , [PERNOMBRE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PERAPELLIDO] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PERDIRECCION] [nvarchar] (150) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PERTELEFONO] [nvarchar] (30) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PERMAIL] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PERFAX] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CODCIUDAD] [int] NULL , [CODZONA] [int] NULL , [FECHAINGRESO] [datetime] NULL , [FECHASALIDA] [datetime] NULL , [PERCOMENTARIO] [nvarchar] (400) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHAMODIF] [datetime] NULL , [CODEMPL] [int] NULL , [PERDESCTO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHANAC] [datetime] NULL , [PERESTDCIVIL] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PERSEXO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PERESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PEREMPRESA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PERRUC] [nvarchar] (13) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [TIPO] [numeric](18, 0) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[PERSONA_TRAINER] ( [NUMERO] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , [NUMEROCAJA] [numeric](18, 0) NOT NULL ,

63

[CLIENTE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PERSONAL] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SESION] [nvarchar] (3) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [HORAINICIAL] [nvarchar] (8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [HORAFINAL] [nvarchar] (8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [TIPOMEMBRESIA] [int] NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [COMENTARIO] [nvarchar] (400) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHA] [datetime] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[PILATES] ( [NUMERO] [numeric](18, 0) IDENTITY (1, 1) NOT NULL , [NUMEROCAJA] [numeric](18, 0) NOT NULL , [CLIENTE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PILATES] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SESION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [HORAINICIAL] [nvarchar] (8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [HORAFINAL] [nvarchar] (8) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [TIPOMEMBRESIA] [int] NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [COMENTARIO] [nvarchar] (400) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHA] [datetime] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[PLATOS_CABECERA] ( [NUMERO] [int] IDENTITY (1, 1) NOT NULL , [CODPLATO] [int] NOT NULL ,

64

[CODPRODSERV] [int] NULL , [NOMBRE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PRECIO] [decimal](18, 2) NOT NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [FECHA_CREACION] [datetime] NULL , [FECHA_MOD] [datetime] NULL , [COSTO] [decimal](18, 2) NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[PLATOS_DETALLE] ( [NUMERO] [int] IDENTITY (1, 1) NOT NULL , [CODPLATO] [int] NOT NULL , [CODPRODSERV] [int] NOT NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CANTIDAD] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [COSTO] [float] NULL , [FECHA_CREACION] [datetime] NULL , [FECHA_MOD] [datetime] NULL , [PRECIO] [float] NULL , [MEDIDA] [char] (20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [TOTAL] [float] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[PRODUCTO_SERV] ( [CODPRODSERV] [int] IDENTITY (1, 1) NOT NULL , [CODPADRE] [int] NOT NULL , [NOMBRE] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PROTIPO] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CODESTADO] [char] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [PROFECING] [datetime] NOT NULL , [PROIVA] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [PROPRECIO] [decimal](18, 2) NOT NULL ,

65

[PROPRECIO2] [decimal](18, 2) NOT NULL , [PROPRECIO3] [float] NULL , [PRODESC] [float] NULL , [PROFECHMODIF] [datetime] NULL , [PROSTOCK] [int] NULL , [DESCRIPCION] [nvarchar] (1500) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [CODIGO] [nvarchar] (10) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [LINEA] [char] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [GRUPO] [char] (4) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [COSTO] [decimal](18, 2) NOT NULL , [TIPOMEMBRE] [numeric](18, 0) NULL , [DIAS] [numeric](10, 0) NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[SECUENCIAS] ( [SECUENCIAL] [numeric](10, 0) IDENTITY (1, 1) NOT NULL , [TIPO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [SUCURSAL] [int] NULL , [CAJA] [int] NULL , [NUMERO] [numeric](10, 0) NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[SICAG_BUSQUEDAS] ( [GEN_TABLA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [GEN_COLUMNA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [GEN_DESCRIPCION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [GEN_TIPO] [char] (1) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [GEN_LONGITUD] [int] NOT NULL , [GEN_OBSERVACION] [nvarchar] (100) COLLATE SQL_Latin1_General_CP1_CI_AS NULL

66

) ON [PRIMARY] GO CREATE TABLE [dbo].[SUCURSAL] ( [CODSUCUR] [int] IDENTITY (1, 1) NOT NULL , [DESCRIPCION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[TARJETAS_CREDITO] ( [CODTARJCRED] [int] IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL , [DESCRIPCION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ABREVIATURA] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL , [CODBANCO] [int] NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[TIPO_BANCO] ( [CODTIPOBANKO] [int] IDENTITY (1, 1) NOT NULL , [DESCRIPCION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[TIPO_PERSONA] ( [CODTIPOPERS] [int] IDENTITY (1, 1) NOT NULL , [DESCRIPCION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO

67

Column name Data Type length Allow Nulls

NUMERO numeric 9

CODIGOSECUEN nvarchar 13 √

NOMBRE nvarchar 50 √

FECHA datetime 8 √

HORA char 10 √

CREATE TABLE [dbo].[USUARIO] ( [CODUSU] [int] IDENTITY (1, 1) NOT NULL , [CODCEDULA] [nvarchar] (15) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [USUPASSWORD] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [USUUSER] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [USUFECCREAC] [datetime] NOT NULL , [USUESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ) ON [PRIMARY] GO CREATE TABLE [dbo].[ZONA] ( [CODZONA] [int] IDENTITY (1, 1) NOT NULL , [DESCRIPCION] [nvarchar] (50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL , [ESTADO] [char] (2) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ) ON [PRIMARY] GO

2.2. Diseño del esquema de las tablas * Tabla Asistencia

68

* Tabla Bronceados

Column name Data Type length Allow Nulls

NUMERO numeric 9

NUMEROCAJA numeric 9

CLIENTE nvarchar 50 √

SESION nvarchar 3 √

HORAINICIAL nvarchar 8 √

HORAFINAL nvarchar 8 √

TIPOMEMBRESIA int 4 √

COMENTARIO nvarchar 40 √

FECHA datetime 8 √ * Tabla Cabecera_Factura

Column name Data Type length Allow Nulls

NUMERO int 4

TIPO char 2 √

SUCURSAL char 2 √

CAJA char 3 √

NUMEROCAJA numeric 9(10,0) √

FECHA datetime 8 √

CLIENTE nvarchar 10 √

VENDEDOR nvarchar 10 √

CAJERO nvarchar 10 √

COMENTARIO nvarchar 1500 √

OBSERVACION nvarchar 100 √

PORCEDESCTO1 decimal 9(18,0) √

PORCEDESCTO2 decimal 9(18,0) √

PORCEIVA decimal 9(18,0) √

SUBTOTAL float 8 √

DESCUENTO1 float 8 √

69

DESCUENTO2 float 8 √

IMPUESTO float 8 √

TOTAL float 8 √

IMPRESO char 1 √

HORA char 10 √

* Tabla Cabecera_Inventario

Column name Data Type length Allow Nulls

NUMERO numeric 9(10,0)

TIPO char 2 √

SUCURSAL int 4 √

CAJA char 3 √

NUMEROCAJA numeric 9(18,0) √

TIPOINGRESO char 50 √

PROVEEDOR nvarchar 15 √

SUBTOTALPRECIO float 8 √

IVAPRECIO float 8 √

TOTALPRECIO float 8 √

SUBTOTALCOSTO float 8 √

IVACOSTO float 8 √

TOTALCOSTO float 8 √

FECHA datetime 8 √

HORA datetime 8 √

USUARIO char 10 √

OBSERVACIONES nvarchar 1500 √

IMPRESO bit 1 √

ELIMINADOS bit 1 √

70

* Tabla Caja

Column name Data Type length Allow Nulls

CODCAJA int 4

DESCRIPCION nvarchar 50

ESTADO char 2 √ * Tabla Combo_Cabecera

Column name Data Type length Allow Nulls

NUMERO int 4

CODCOMBO int 4

NOMBRE nvarchar 50

PRECIO decimal 9(18,2)

ESTADO char 2 √

FECHA_CREACION datetime 8 √

FECHA_MOD datetime 8 √

* Tabla Combo_Detalle

Column name Data Type length Allow Nulls

NUMERO int 4

CODCOMBO int 4

CODPRODSERV int 4

ESTADO char 2 √

CANTIDAD numeric 9(18,0) √

COSTO float 8 √

FECHA_CREACION datetime 8 √

FECHA_MOD datetime 8 √

TOTAL float 8 √

PRECIO float 8 √

DESCUENTO Flota 8 √

71

* Tabla Detalle_Factura

Column name Data Type length Allow Nulls

NUMERO numeric 9(10,0)

NUMEROCAB numeric 9(18,0)

TIPO char 2 √

SUCURSAL char 3 √

CAJA char 3 √

NUMEROCAJA numeric 9(18,0) √

CODIGOPRODUCTO nvarchar 50 √

FECHA datetime 8 √

CANTIDAD numeric 9(18,0) √

TOTAL1 float 8 √

TOTAL2 float 8 √

DESCUENTO1 float 8 √

DESCUENTO2 float 8 √

VALORDESCUENTO1 float 8 √

VALORDESCUENTO2 float 8 √

PRECIO float 8 √

COSTO float 8 √

IVA float 8 √

HORA char 10 √

* Tabla Detalle_Inventario

Column name Data Type length Allow Nulls

NUMERO numeric 9(10,0)

NUMEROCAB numeric 9(18,0)

TIPO char 2 √

SUCURSAL int 4 √

CAJA char 3 √

NUMEROCAJA numeric 9(18,0)

72

CODIGOPRODUCTO nvarchar 50 √

CANTIDAD numeric 9(18,0) √

PRECIO float 8 √

COSTO float 8 √

TOTALP float 8 √

TOTALC float 8 √

IVA float 8 √

FECHA datetime 8 √

HORA nvarchar 50 √

* Tabla Existencias

Column name Data Type length Allow Nulls

NUMERO numeric 9(18,0)

TIPO char 2 √

SUCURSAL char 3 √

CAJA char 3 √

NUMEROCAJ numeric 9(18,0) √

NUMEROCAB numeric 9(18,0)

CODIGO nvarchar 50 √

FECHA datetime 8 √

CANTIDAD numeric 9(18,0) √ * Tabla Horarios

Column name Data Type length Allow Nulls

TIPO char 3

NOMBRE nvarchar 50

CODIGO char 3 √

DESCRIPCION nvarchar 50 √

HORAINICIAL nvarchar 50 √

HORAFINAL nvarchar 50 √

73

* Tabla Locker

Column name Data Type length Allow Nulls

NUMERO numeric 9(18,0)

NUMEROCAJA numeric 9(18,0)

CLIENTE nvarchar 50 √

FECHA datetime 8 √

TIPOMEMBRESIA int 4 √

COMENTARIO nvarchar 400 √

* Tabla Masajes

Column name Data Type length Allow Nulls

NUMERO numeric 9(18,0)

NUMEROCAJA numeric 9(18,0)

CLIENTE nvarchar 50 √

MASAJISTA nvarchar 10 √

SESION nvarchar 10 √

HORAINICIAL nvarchar 8 √

HORAFINAL nvarchar 8 √

TIPOMEMBRESIA int 4 √

COMENTARIO nvarchar 400 √

FECHA datetime 8 √

* Tabla Modulo

Column name Data Type length Allow Nulls

CODMODULO int 4

DESCRIPCION nvarchar 50

ESTADO char 2 √

74

* Tabla Opciones_Modul

Column name Data Type length Allow Nulls

CODOPCION int 4

CODMODULO int 4

CODOPCXMOD Numeric 9(10,0)

DESCRIPCION nvarchar 50

OPCFORMULARIO nvarchar 50

OPCOBSERVACION nvarchar 50

OPCFECHACREAC datetime 8

OPCESTADO char 2

CODUSUL int 4

PCI nvarchar 50

* Tabla Pagos_Factura

Column name Data Type length Allow Nulls

NUMERO numeric 9(10,0)

NUMEROCAB numeric 9(10,0)

TIPO char 2 √

SUCURSAL char 3 √

CAJA char 3 √

NUMEROCAJA numeric 9(18,0) √

FECHA datetime 8 √

FORMAPAGO char 2 √

PORCOBRAR float 8 √

VALORRECIBIDO float 8 √

CODIGOTARJETA nvarchar 50 √

NUMEROTARJETA nvarchar 50 √

NOMBRECLIENTE nvarchar 50 √

TELEFONOTARJETA nvarchar 50 √

LOTE char 10 √

75

FECHACHEQUE datetime 8 √

CODIGOBANCO nvarchar 50 √

NUMEROCHEQUE nvarchar 50 √

CTACTE nvarchar 50 √

NOMBREEMPLEADO nvarchar 50 √

CEDULAEMPLEADO char 10 √

CANCELADO char 2 √

HORA char 10 √

* Tabla Parámetros

Column name Data Type length Allow Nulls

NOMBREMPRESA nvarchar 100

DIRECCION nvarchar 150

PORCENTAJEIVA decimal 9(18,0)

TELEFONOEMP nvarchar 20

RUC nvarchar 13

PORCENTDESCTO decimal 9(18,2)

SUCURSAL numeric 9(18,0) √

CAJA numeric 9(10,0) √

SECUENCIA nvarchar 13 √

RUTA nvarchar 50 √

* Tabla Parqueo

Column name Data Type length Allow Nulls

NUMERO numeric 9(18,0)

NUMEROCAJA numeric 9(18,0)

CLIENTE nvarchar 50 √

FECHA datetime 8 √

HORAINICIAL nvarchar 8 √

TIPOMEMBRESIA char 10 √

76

COMENTARIO nvarchar 400 √

* Tabla Permiso_Por_Usuario

Column name Data Type length Allow Nulls

CODPERXUSU int 4

CODCEDULAUSU nvarchar 15

CODOPC int 4

ESTADO char 210 √

* Tabla Persona

Column name Data Type length Allow Nulls

CODPERS int 4

CODIGOSECUEN nvarchar 13 √

CEDULA nvarchar 15

CODTIPOPER int 4

PERNOMBRE nvarchar 50

PERAPELLIDO nvarchar 50

PERDIRECCION nvarchar 150

PERTELEFONO nvarchar 10 √

PERMAIL nvarchar 50 √

PERFAX nvarchar 50 √

CODCIUDAD int 4 √

CODZONA int 4 √

FECHAINGRESO datetime 8 √

FECHASALIDA datetime 8 √

PERCOMENTARIO nvarchar 400 √

FECHAMODIF datetime 8 √

CODEMPL int 4 √

PERDESCTO char 2 √

FECHANAC datetime 8 √

77

PERESTDCIVIL char 2 √

PERSEXO char 2 √

PERESTADO char 2 √

PEREMPRESA nvarchar 50 √

PERRUC nvarchar 13 √

TIPO numeric 9(18,0) √

* Tabla Persona_Trainer

Column name Data Type length Allow Nulls

NUMERO numeric 9(18,0)

NUMEROCAJA numeric 9(18,0)

CLIENTE nvarchar 50 √

PERSONAL nvarchar 50 √

SESION nvarchar 3 √

HORAINICIAL nvarchar 8 √

HORAFINAL nvarchar 8 √

TIPOMEMBRESIA int 4 √

ESTADO char 2 √

COMENTARIO nvarchar 400 √

FECHA datetime 8 √ * Tabla Pilates

Column name Data Type length Allow Nulls

NUMERO numeric 9(18,0)

NUMEROCAJA numeric 9(18,0)

CLIENTE nvarchar 50 √

PILATES nvarchar 50 √

SESION nvarchar 50 √

HORAINICIAL nvarchar 8 √

HORAFINAL nvarchar 8 √

78

TIPOMEMBRESIA int 4 √

ESTADO char 2 √

COMENTARIO nvarchar 400 √

FECHA datetime 8 √

* Tabla Platos_Cabecera

Column name Data Type length Allow Nulls

NUMERO int 4

CODPLATO int 4

CODPRODSERV int 4 √

NOMBRE nvarchar 50

PRECIO decimal 9(18,2)

ESTADO char 2 √

FECHA_CREACION datetime 8 √

FECHA_MOD datetime 8 √

COSTO decimal 9(18,2) √

* Tabla Platos_Detalle

Column name Data Type length Allow Nulls

NUMERO int 4

CODPLATO int 4

CODPRODSERV int 4

ESTADO char 2 √

CANTIDAD char 10 √

COSTO float 8 √

FECHA_CREACION datetime 8 √

FECHA_MOD datetime 8 √

PRECIO float 8 √

MEDIDA char 20 √

TOTAL float 8 √

79

* Tabla Producto_Serv

Column name Data Type length Allow Nulls

CODPRODSERV int 4

CODPADRE int 4

NOMBRE nvarchar 50 √

PROTIPO char 10

CODESTADO char 10 √

PROFECING datetime 8

PROIVA char 2

PROPRECIO decimal 9(18,2)

PROPRECIO2 decimal 9(18,2)

PROPRECIO3 float 8 √

PRODESC float 8 √

PROFECHMODIF datetime 8 √

PROSTOCK int 4 √

DESCRIPCION nvarchar 1500 √

CODIGO nvarchar 10 √

LINEA char 4 √

GRUPO char 4 √

COSTO decimal 9(18,2) √

TIPOMEMBRE numeric 9(18,0) √

DIAS numeric 9(18,0) √

ESTADO char 2 √

* Tabla Proveedor

Column name Data Type length Allow Nulls

CODIGO numeric 9(18,0)

CEDULA nvarchar 15

CODTIPOPROV int 4

PRORSOCIAL nvarchar 80

PROOBSERVACION nvarchar 200 √

80

ESTADO char 2 √ * Tabla Secuencias

Column name Data Type length Allow Nulls

SECUENCIAL numeric 9(10,0)

TIPO char 2 √

SUCURSAL int 4 √

CAJA int 4 √

NUMERO numeric 9(10,0) √

* Tabla Sicag_Busquedas

Column name Data Type length Allow Nulls

GEN_TABLA nvarchar 50 √

GEN_COLUMNA nvarchar 50 √

GEN_DESCRIPCION nvarchar 50 √

GEN_TIPO char 1 √

GEN_LONGITUD int 4

GEN_OBSERVACION nvarchar 100 √

* Tabla Sucursal

Column name Data Type length Allow Nulls

CODSUCUR int 4

DESCRIPCION nvarchar 50

ESTADO char 2 √

81

* Tabla Tarjetas_Credito

Column name Data Type length Allow Nulls

CODTARJCRED int 4

DESCRIPCION nvarchar 50 √

ABREVIATURA nvarchar 50 √

ESTADO char 2 √

CODBANCO int 4 √

* Tabla Tipo_Banco

Column name Data Type length Allow Nulls

CODTIPOBANKO int 4

DESCRIPCION nvarchar 50

ESTADO char 2 √ * Tabla Tipo_Persona

Column name Data Type length Allow Nulls

CODTIPOPERS int 4

DESCRIPCION nvarchar 50

* Tabla Usuario

Column name Data Type length Allow Nulls

CODUSU int 4

CODCEDULA nvarchar 50

USUPASSWORD nvarchar 50

USUUSER nvarchar 50

USUFECCREAC datetime 8

USUESTADO char 2

82

* Tabla Detalle_Zona

Column name Data Type length Allow Nulls

NUMERO num 9

CODIGOZONA int 4 √

CODIGOCIUDAD int 4 √

NOMBRECIUDAD nvarchar 50 √

ESTADOCIUDAD Char 2 √

2.3. Procedimientos 2.3.1 archivo_contable_cab //Crea un archivo texto con toda la información de la cabecera de la factura 6/30/2007 11:17:38 PM CREATE PROCEDURE ARCHIVO_CONTABLE_CAB

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT

AS

SELECT *

FROM cabecera_factura

WHERE FECHA >= CONVERT(DATETIME, @FECHAINI)

AND FECHA <= CONVERT(DATETIME, @FECHAFIN)

AND SUCURSAL>=@DESDESUC AND SUCURSAL<=@HASTASUC

83

GO

2.3.2. archivo_contable_det

//Crea un archivo texto con toda la información de la detalle de la factura 7/10/2007 5:45:49 PM

CREATE PROCEDURE ARCHIVO_CONTABLE_DET

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT

AS

SELECT *

FROM detalle_factura

WHERE FECHA >= CONVERT(DATETIME, @FECHAINI)

AND FECHA <= CONVERT(DATETIME, @FECHAFIN)

AND SUCURSAL>=@DESDESUC AND SUCURSAL<=@HASTASUC

GO

2.3.3 archivo_contable_pag

//Crea un archivo texto con toda la información de los pago de la factura 7/10/2007 5:46:09 PM

CREATE PROCEDURE ARCHIVO_CONTABLE_PAG

@FECHAINI AS VARCHAR(10),

84

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT

AS

SELECT *

FROM pagos_factura

WHERE FECHA >= CONVERT(DATETIME, @FECHAINI)

AND FECHA <= CONVERT(DATETIME, @FECHAFIN)

AND SUCURSAL>=@DESDESUC AND SUCURSAL<=@HASTASUC

GO

2.3.4. fac_busca_caducidad_cliente

//Busca la fecha de vencimiento del cliente en la tabla persona

5/24/2007 7:20:59 PM

CREATE PROCEDURE FAC_BUSCA_CADUCIDAD_CLIENTE

@COD AS VARCHAR(15)

AS

SELECT * FROM PERSONA

WHERE CODPERS=@COD

GO

85

2.3.5. fac_busca_detalles

//Permite buscar los detalles de los productos de las facturas y de los pagos

5/21/2007 4:08:03 PM

CREATE PROCEDURE FAC_BUSCA_DETALLES

@CODIGO1 AS NUMERIC,

@OPCION AS INT

AS

IF @OPCION = 1

BEGIN

SELECT PROD.*, DET.* FROM DETALLE_FACTURA AS DET,

PRODUCTO_SERV AS PROD where DET.CODIGOPRODUCTO =

CODPRODSERV AND NUMEROCAB = @CODIGO1

END

IF @OPCION = 2

BEGIN

SELECT * FROM PAGOS_FACTURA WHERE NUMEROCAB =

@CODIGO1

END

GO

86

2.3.6. fac_busca_factura

//Permite buscar una factura por su número

5/21/2007 4:08:14PM

CREATE PROCEDURE FAC_BUSCA_FACTURA

@CODIGO1 AS VARCHAR(15),

@CODIGO2 AS NUMERIC,

@CODIGO3 AS NUMERIC,

@CODIGO4 AS NUMERIC

AS

SELECT * FROM CABECERA_FACTURA WHERE TIPO =

@CODIGO1 AND SUCURSAL = @CODIGO2 AND CAJA = @CODIGO3

AND NUMEROCAJA = @CODIGO4

GO

2.3.7. fac_busca_parametros

//Permite buscar los parámetros del usuario, de la caja y de la sucursal

5/21/2007 4:07:35 PM

CREATE PROCEDURE FAC_BUSCA_PARAMETROS

@CODIGO AS INT,

@OPCION AS INT

AS

IF @OPCION = 1

87

BEGIN

SELECT * FROM CAJA WHERE CODCAJA = @CODIGO

END

IF @OPCION = 2

BEGIN

SELECT * FROM USUARIO WHERE CODUSU = @CODIGO

END

IF @OPCION = 3

BEGIN

SELECT * FROM SUCURSAL WHERE CODSUCUR = @CODIGO

END

GO

2.3.8. fac_busca_secuencia

//Busca el último número de la factura, ingreso, egreso, devolución, tickets,

combos, platos

5/11/2007 6:18:54 PM

CREATE PROCEDURE FAC_BUSCA_SECUENCIA

@CODIGO1 AS CHAR(3),

@CODIGO2 AS INT,

@CODIGO3 AS INT

AS

SELECT NUMERO FROM SECUENCIAS WHERE TIPO =

@CODIGO1 AND SUCURSAL = @CODIGO2 AND CAJA = @CODIGO3

GO

88

2.3.9. fac_cons_espec

//Nos permite buscar el detalle de las personas, facturas, los clientes,

productos

2/24/2007 2:02:19 PM

CREATE PROCEDURE FAC_CONS_ESPEC

@CODIGO AS INT,

@OPCION AS INT

AS

IF @OPCION = 1

BEGIN

SELECT *

FROM PERSONA

WHERE CODPERS=@CODIGO

END

IF @OPCION =2

BEGIN

SELECT * FROM PRODUCTO_SERV

WHERE CODPRODSERV =@CODIGO AND ESTADO=1

END

IF @OPCION =3

BEGIN

SELECT * FROM SUCURSAL

89

WHERE CODSUCUR =@CODIGO

END

IF @OPCION =4

BEGIN

SELECT * FROM PRODUCTO_SERV

WHERE protipo='C' and CODPRODSERV =@CODIGO AND

ESTADO=1

END

IF @OPCION =5

BEGIN

SELECT * FROM PRODUCTO_SERV

WHERE protipo='P' and CODPRODSERV =@CODIGO AND

ESTADO=1

END

IF @OPCION =6

BEGIN

SELECT * FROM PRODUCTO_SERV

WHERE CODPRODSERV =@CODIGO AND ESTADO=1

END

IF @OPCION =7

BEGIN

SELECT * FROM PRODUCTO_SERV

WHERE CODPRODSERV =@CODIGO AND PROTIPO='P' AND

ESTADO=1

END

90

IF @OPCION =8

BEGIN

SELECT * FROM PRODUCTO_SERV

WHERE CODPRODSERV =@CODIGO AND PROTIPO='C' AND

ESTADO=1

END

IF @OPCION =9

BEGIN

SELECT * FROM PRODUCTO_SERV

WHERE CODPRODSERV =@CODIGO

END

IF @OPCION =10

BEGIN

SELECT * FROM PRODUCTO_SERV

WHERE CODPRODSERV =@CODIGO AND ESTADO=1 AND

(PROTIPO='S' OR PROTIPO='P')

END

GO

2.3.10. fac_eli_bronceados

//Permite eliminar un registro de la tabla bronceado

5/28/2007 11:48:52 PM

CREATE PROCEDURE FAC_ELI_BRONCEADOS

@NUMEROCAJA AS INT

AS

91

UPDATE BRONCEADOS

SET SESION='', HORAINICIAL='', HORAFINAL='', TIPOMEMBRESIA='',

COMENTARIO='ANULADO', cliente=''

WHERE numeroCAJA=@numeroCAJA

GO

2.3.11. fac_eli_cabecera

//Nos permite eliminar un registro de la factura

5/21/2007 4:07:23 PM

CREATE PROCEDURE FAC_ELI_CABECERA

@TIPO AS CHAR(3),

@SUCURSAL AS NUMERIC,

@CAJA AS NUMERIC,

@NUMEROCAJA AS NUMERIC,

@OPCION AS INT

AS

IF @OPCION = 1

BEGIN

UPDATE CABECERA_FACTURA

SET PORCEDESCTO1 = 0.00,PORCEDESCTO2 = 0.00,PORCEIVA =

0.00, sUBTOTAL = 0.00, DESCUENTO1 = 0.00,DESCUENTO2 = 0.00,

IMPUESTO = 0.00, TOTAL = 0.00

WHERE TIPO = @TIPO AND SUCURSAL = @SUCURSAL AND

CAJA = @CAJA AND NUMEROCAJA = @NUMEROCAJA

92

END

IF @OPCION = 2

BEGIN

UPDATE CABECERA_FACTURA SET ELIMINADO = 1 WHERE TIPO

= @TIPO AND SUCURSAL = @SUCURSAL AND CAJA = @CAJA AND

NUMEROCAJA = @NUMEROCAJA

END

GO

2.3.12. fac_eli_detalles

//Elimina el detalle de las facturas, en este caso los productos

5/21/2007 4:07:06 PM

CREATE PROCEDURE FAC_ELI_DETALLES

@NUMEROCAB AS NUMERIC,

@OPCION AS INT

AS

IF @OPCION = 1

BEGIN

DELETE FROM DETALLE_FACTURA WHERE NUMEROCAB =

@NUMEROCAB

END

IF @OPCION = 2

93

BEGIN

DELETE FROM PAGOS_FACTURA WHERE NUMEROCAB =

@NUMEROCAB

END

GO

2.3.13. fac_eli_existencias

//Permite eliminar registros ya sean de facturas, ingresos, egresos o

devoluciones que fueron cargados al kardex

7/19/2007 6:52:26 PM

CREATE PROCEDURE FAC_ELI_EXISTENCIAS

@TIPO AS VARCHAR(2),

@NUMEROCAB AS NUMERIC,

@SUCURSAL AS VARCHAR(3),

@CAJA AS VARCHAR(3),

@NUMEROCAJA AS NUMERIC

AS

DELETE FROM EXISTENCIAS

WHERE TIPO=@TIPO

AND NUMEROCAB = @NUMEROCAB

AND SUCURSAL = @SUCURSAL

AND CAJA = @CAJA

AND NUMEROCAJ = @NUMEROCAJA

GO

94

2.3.14. fac_eli_locker

//Permite eliminar (estado inactivo) registros de de la tabla locker

6/17/2007 10:43:01 AM

CREATE PROCEDURE FAC_ELI_LOCKER

@NUMEROCAJA AS INT

AS

UPDATE LOCKER

SET TIPOMEMBRESIA='', COMENTARIO='ANULADO', CLIENTE=''

WHERE numeroCAJA=@numeroCAJA

GO

2.3.15. fac_eli_masajes

//Permite eliminar (estado inactivo) registros de de la tabla masajes

5/28/2007 11:22:58 AM

CREATE PROCEDURE FAC_ELI_MASAJES

@NUMEROCAJA AS INT

AS

UPDATE MASAJES

SET SESION='', HORAINICIAL='', HORAFINAL='', TIPOMEMBRESIA='',

COMENTARIO='ANULADO', CLIENTE='', MASAJISTA=''

WHERE numeroCAJA=@numeroCAJA

GO

95

2.3.16. fac_eli_parqueo

//Permite eliminar (estado inactivo) registros de de la tabla parqueo

6/17/2007 10:03:13 AM

CREATE PROCEDURE FAC_ELI_PARQUEO

@NUMEROCAJA AS INT

AS

UPDATE PARQUEO

SET HORAINICIAL='', TIPOMEMBRESIA='', COMENTARIO='ANULADO',

CLIENTE=''

WHERE numeroCAJA=@numeroCAJA

GO

2.3.17. fac_eli_personalt

//Permite eliminar (estado inactivo) registros de de la tabla personal trainer

5/22/2007 11:10:29 AM

CREATE PROCEDURE FAC_ELI_PERSONALT

@NUMEROCAJA AS INT

AS

UPDATE PERSONA_TRAINER

SET SESION='', HORAINICIAL='', HORAFINAL='', TIPOMEMBRESIA='',

COMENTARIO='ANULADO', ESTADO='0', PERSONAL='',cliente=''

WHERE numeroCAJA=@numeroCAJA

96

GO

2.3.18. fac_eli_pilates

//Permite eliminar (estado inactivo) registros de de la tabla pilates

5/22/2007 6:54:35 PM

CREATE PROCEDURE FAC_ELI_PILATES

@NUMEROCAJA AS INT

AS

UPDATE PILATES

SET SESION='', HORAINICIAL='', HORAFINAL='', TIPOMEMBRESIA='',

COMENTARIO='ANULADO', ESTADO='0', PILATES='',cliente=''

WHERE numeroCAJA=@numeroCAJA

GO

2.3.19. fac_ing_asistencias

//Permite ingresar registros a mi tabla asistencia, en otras palabras son los

datos del reloj

7/20/2007 8:47:14 AM

CREATE PROCEDURE FAC_ING_ASISTENCIAS

@CODIGOSECUEN AS VARCHAR(13),

@NOMBRE AS VARCHAR(50),

@FECHA AS VARCHAR(10),

@HORA AS VARCHAR(10)

97

AS

INSERT INTO ASISTENCIAS

(CODIGOSECUEN, NOMBRE, FECHA, HORA)

VALUES (@CODIGOSECUEN, @NOMBRE, @FECHA, @HORA)

GO

2.3.20. fac_ing_bronceados

//Permite ingresar registros a mi tabla bronceados

5/28/2007 11:49:29 AM

CREATE PROCEDURE FAC_ING_BRONCEADOS

@NUMEROCAJA AS INT,

@CLIENTE AS VARCHAR(10),

@SESION AS VARCHAR(3),

@HORAINICIAL AS VARCHAR(8),

@HORAFINAL AS VARCHAR(8),

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@FECHA AS DATETIME

AS

INSERT INTO BRONCEADOS

(NUMEROCAJA,CLIENTE, SESION, HORAINICIAL, HORAFINAL,

TIPOMEMBRESIA, COMENTARIO, FECHA)

98

VALUES (@NUMEROCAJA,@CLIENTE, @SESION, @HORAINICIAL,

@HORAFINAL, @TIPOMEMBRESIA, @COMENTARIO, @FECHA)

GO

2.3.21. fac_ing_cab_factura

//Permite ingresar un registro a la cabecera de la factura

3/11/2007 4:59:36 AM

CREATE PROCEDURE FAC_ING_CAB_FACTURA

@TIPO AS CHAR(2),

@SUCURSAL AS CHAR(3),

@CAJA AS CHAR(3),

@NUMEROCAJA AS NUMERIC,

@FECHA AS DATETIME,

@BODEGA AS CHAR(3),

@CLIENTE AS VARCHAR(10),

@VENDEDOR AS VARCHAR(10),

@CAJERO AS VARCHAR(10),

@NUMEROCAJERO AS NUMERIC,

@AUTORIZA AS VARCHAR(50),

@NOMBRECAJERO AS VARCHAR(50),

@COMENTARIO AS VARCHAR(1500),

@OBSERVACION AS VARCHAR(100),

@PORCEDESCTO1 AS DECIMAL(9,2),

@PORCEDESCTO2 AS DECIMAL(9,2),

@PORCEIVA AS DECIMAL(9,2),

@SUBTOTAL AS DECIMAL(9,2),

@DESCUENTO1 AS DECIMAL(9,2),

99

@DESCUENTO2 AS DECIMAL(9,2),

@IMPUESTO AS DECIMAL(9,2),

@TOTAL AS DECIMAL(9,2),

@TIPOAPLIC AS VARCHAR(2),

@NUMAPLIC AS NUMERIC,

@IMPRESO AS VARCHAR(2),

@HORA AS CHAR(10),

@ELIMINADO AS BIT

AS

INSERT INTO CABECERA_FACTURA

(TIPO,SUCURSAL,CAJA,NUMEROCAJA,FECHA,BODEGA,CLIENTE,

VENDEDOR,CAJERO,NUMEROCAJERO,AUTORIZA,NOMBRECAJERO,C

OMENTARIO,OBSERVACION,PORCEDESCTO1,

PORCEDESCTO2,PORCEIVA,SUBTOTAL,DESCUENTO1,DESCUENTO2,I

MPUESTO,TOTAL,TIPOAPLIC,NUMAPLIC,IMPRESO,HORA,ELIMINADO)

VALUES(@TIPO,@SUCURSAL,@CAJA,@NUMEROCAJA,@FECHA,@BO

DEGA,@CLIENTE,@VENDEDOR,@CAJERO,

@NUMEROCAJERO,@AUTORIZA,@NOMBRECAJERO,@COMENTARIO,

@OBSERVACION,@PORCEDESCTO1,@PORCEDESCTO2,

@PORCEIVA,@SUBTOTAL,@DESCUENTO1,@DESCUENTO2,@IMPUES

TO,@TOTAL,@TIPOAPLIC,@NUMAPLIC,@IMPRESO,@HORA,@ELIMINA

DO)

GO

100

2.3.22. fac_ing_cliente

//Permite ingresar registros a la tabla clientes

2/24/2007 2:02:19 PM

CREATE PROCEDURE FAC_ING_CLIENTE

@SEC AS VARCHAR(13),

@CEDULA AS VARCHAR(15),

@NOMBRE AS VARCHAR(500),

@APELLIDO AS VARCHAR(500),

@DIRECCION AS VARCHAR(500),

@TELEFONO AS VARCHAR(20),

@MAIL AS VARCHAR(100),

@CODCIUDAD AS INT,

@CODZONA AS INT,

@FECHAINGRESO AS VARCHAR(12),

@COMEN AS VARCHAR(400),

@FECHANAC AS VARCHAR(12),

@ESTDCIVIL AS CHAR(2),

@SEXO AS CHAR(2),

@EMPRESA AS VARCHAR(500),

@EST AS CHAR(2),

@FECHAMOD AS VARCHAR(12),

@FECHACAD AS VARCHAR(12),

@CODTIPO AS CHAR(4),

@TIPO AS CHAR(4),

@CODPER AS CHAR(4)

AS

101

INSERT INTO PERSONA (CODIGOSECUEN,CEDULA, CODTIPOPER,

PERNOMBRE, PERAPELLIDO, PERDIRECCION, PERTELEFONO,

PERMAIL, CODCIUDAD, CODZONA,FECHAINGRESO,

PERCOMENTARIO, FECHANAC,PERESTDCIVIL, PERSEXO,

PEREMPRESA, PERESTADO, FECHAMODIF, FECHASALIDA, CODEMPL,

TIPO)

VALUES (@SEC,@CEDULA,@CODTIPO, @NOMBRE, @APELLIDO,

@DIRECCION,@TELEFONO,

@MAIL, @CODCIUDAD, @CODZONA,@FECHAINGRESO, @COMEN,

@FECHANAC, @ESTDCIVIL, @SEXO, @EMPRESA, @EST,

@FECHAMOD,@FECHACAD, @CODPER, @TIPO)

GO

2.3.23. fac_ing_combo_cabecera

//Permite ingresar registros a la cabecera de la tabla combo

6/25/2007 6:43:14 PM

CREATE PROCEDURE FAC_ING_COMBO_CABECERA

@CODCOMBO AS INT,

@NOMBRE AS VARCHAR(50),

@PRECIO AS DECIMAL(9,2),

@ESTADO AS CHAR(2)

AS

INSERT INTO COMBO_CABECERA

(CODCOMBO,NOMBRE, PRECIO,

ESTADO,FECHA_CREACION,FECHA_MOD)

102

VALUES (@CODCOMBO,@NOMBRE, @PRECIO,

@ESTADO,GETDATE(),GETDATE())

GO

2.3.24. fac_ing_detalle

//Permite ingresar un registro al detalle de la factura

3/25/2007 12:23:04 PM

CREATE PROCEDURE FAC_ING_DETALLE

@NUMEROCAB AS NUMERIC,

@TIPO AS VARCHAR(15),

@SUCURSAL AS VARCHAR(15),

@CAJA AS VARCHAR(15),

@NUMEROCAJA AS NUMERIC,

@CODIGOPRODUCTO AS VARCHAR(50),

@BODEGA AS VARCHAR(15),

@FECHA AS DATETIME,

@CANTIDAD AS INT,

@TOTAL1 AS DECIMAL(9,2),

@TOTAL2 AS DECIMAL(9,2),

@DESCUENTO1 AS DECIMAL(9,2),

@DESCUENTO2 AS DECIMAL(9,2),

@VALORDESCUENTO1 AS DECIMAL(9,2),

@VALORDESCUENTO2 AS DECIMAL(9,2),

@PRECIO AS DECIMAL(9,2),

@COSTO AS DECIMAL(9,2),

@IVA AS DECIMAL(9,2),

103

@HORA AS CHAR(10)

AS

INSERT INTO DETALLE_FACTURA

(NUMEROCAB,TIPO,SUCURSAL,CAJA,NUMEROCAJA,CODIGOPRODUC

TO,BODEGA,FECHA,CANTIDAD,TOTAL1,TOTAL2,DESCUENTO1,DESCU

ENTO2,VALORDESCUENTO1,VALORDESCUENTO2,PRECIO,COSTO,IVA,

HORA)

VALUES(@NUMEROCAB,@TIPO,@SUCURSAL,@CAJA,@NUMEROCAJA

,@CODIGOPRODUCTO,@BODEGA,@FECHA,@CANTIDAD,@TOTAL1,@

TOTAL2,@DESCUENTO1,@DESCUENTO2,@VALORDESCUENTO1,@VA

LORDESCUENTO2,@PRECIO,@COSTO,@IVA,@HORA)

GO

2.3.25. fac_ing_detalle_combo

//Permite ingresar un registro al detalle del combo

6/25/2007 11:07:56 PM

CREATE PROCEDURE FAC_ING_DETALLE_COMBO

@CODCOMBO AS INT,

@CODPRODSERV AS VARCHAR(50),

@CANTIDAD AS INT,

@TOTAL AS DECIMAL(9,2),

@COSTO AS DECIMAL(9,2),

@PRECIO AS DECIMAL(9,2),

@ESTADO AS CHAR(2)

AS

104

INSERT INTO COMBO_DETALLE

(CODCOMBO,CODPRODSERV,FECHA_CREACION,FECHA_MOD,CANTI

DAD,COSTO,PRECIO,TOTAL,ESTADO)

VALUES

(@CODCOMBO,@CODPRODSERV,GETDATE(),GETDATE(),@CANTIDAD,

@COSTO,@PRECIO,@TOTAL,@ESTADO)

GO

2.3.26. fac_ing_detalle_platos

//Permite ingresar un registro al detalle de un plato

7/11/2007 8:34:23 PM

CREATE PROCEDURE FAC_ING_DETALLE_PLATOS

@CODPLATOS AS INT,

@CODPRODSERV AS VARCHAR(50),

@MEDIDA AS VARCHAR(20),

@CANTIDAD AS INT,

@TOTAL AS DECIMAL(9,2),

@COSTO AS DECIMAL(9,2),

@PRECIO AS DECIMAL(9,2),

@ESTADO AS CHAR(2)

AS

INSERT INTO PLATOS_DETALLE

(CODPLATO,CODPRODSERV,FECHA_CREACION,FECHA_MOD,CANTID

AD,COSTO,PRECIO,TOTAL,ESTADO,MEDIDA)

VALUES

(@CODPLATOS,@CODPRODSERV,GETDATE(),GETDATE(),@CANTIDAD

,@COSTO,@PRECIO,@TOTAL,@ESTADO,@MEDIDA)

105

GO

2.3.27. fac_ing_existencias

//Permite ingresar un registro a la tabla existencias

7/20/2007 8:47:14 AM

CREATE PROCEDURE FAC_ING_EXISTENCIAS

@TIPO AS VARCHAR(15),

@NUMEROCAB AS NUMERIC,

@SUCURSAL AS VARCHAR(15),

@CAJA AS VARCHAR(15),

@NUMEROCAJA AS NUMERIC,

@CODIGOPRODUCTO AS VARCHAR(50),

@FECHA AS DATETIME,

@CANTIDAD AS INT

AS

INSERT INTO EXISTENCIAS

(TIPO, NUMEROCAB, SUCURSAL, CAJA, NUMEROCAJ, CODIGO,

FECHA,CANTIDAD)

VALUES

(@TIPO, @NUMEROCAB, @SUCURSAL, @CAJA, @NUMEROCAJA,

@CODIGOPRODUCTO,@FECHA,@CANTIDAD)

GO

106

2.3.28. fac_ing_locker

//Permite ingresar un registro a la tabla locker

6/17/2007 10:43:39 AM

CREATE PROCEDURE FAC_ING_LOCKER

@NUMEROCAJA AS INT,

@CLIENTE AS VARCHAR(10),

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@FECHA AS DATETIME

AS

INSERT INTO LOCKER

(NUMEROCAJA,CLIENTE,TIPOMEMBRESIA,COMENTARIO,FECHA)

VALUES

(@NUMEROCAJA,@CLIENTE,@TIPOMEMBRESIA,@COMENTARIO,@FE

CHA)

GO

2.3.29. fac_ing_masajes

//Permite ingresar un registro a la tabla masaje

5/28/2007 11:24:19 AM

CREATE PROCEDURE FAC_ING_MASAJES

@NUMEROCAJA AS INT,

107

@CLIENTE AS VARCHAR(10),

@MASAJISTA AS VARCHAR(10),

@SESION AS VARCHAR(3),

@HORAINICIAL AS VARCHAR(8),

@HORAFINAL AS VARCHAR(8),

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@FECHA AS DATETIME

AS

INSERT INTO MASAJES

(NUMEROCAJA,CLIENTE,MASAJISTA,SESION,HORAINICIAL,HORAFINAL

,TIPOMEMBRESIA,COMENTARIO,FECHA)

VALUES

(@NUMEROCAJA,@CLIENTE,@MASAJISTA,@SESION,@HORAINICIAL,

@HORAFINAL,@TIPOMEMBRESIA,@COMENTARIO,@FECHA)

GO

2.3.30. fac_ing_pagos

//Permite ingresar un registro a la tabla pagos

5/11/2007 6:57:27 PM

CREATE PROCEDURE FAC_ING_PAGOS

@NUMEROCAB AS numeric,

108

@TIPO AS char(2),

@SUCURSAL AS char(3),

@CAJA AS char(3),

@NUMEROCAJA AS numeric,

@TIPOAPLIC AS char(2),

@FECHA AS datetime,

@FORMAPAGO AS char(2),

@PORCOBRAR AS decimal(9,2),

@VALORRECIBIDO AS decimal(9,2),

@CODIGOTARJETA AS nvarchar(50),

@NUMEROTARJETA AS nvarchar(50),

@NOMBRECLIENTE AS nvarchar(50),

@TELEFONOTARJETA AS nvarchar(50),

@LOTE AS char(10),

@FECHACHEQUE AS datetime,

@CODIGOBANCO AS nvarchar(50),

@CODIGOCIUDAD AS nvarchar(50),

@NUMEROCHEQUE AS nvarchar(50),

@CTACTE AS nvarchar(50),

@NOMBREEMPLEADO AS nvarchar(50),

@CEDULAEMPLEADO AS char(10),

@AUTORIZACIONCRED AS nvarchar(50),

@QUIENREGALA AS nvarchar(50),

@BENEFICIARIO AS nvarchar(50),

@AUTORIZACIONOBS AS nvarchar(50),

@FECHADEVOLUCION AS datetime,

@NUMERODEVOLUCION AS char(10),

@CANCELADO AS char(2),

@HORA AS char(10),

@CIERRE AS BIT

109

AS

INSERT INTO PAGOS_FACTURA

(NUMEROCAB,TIPO,SUCURSAL,CAJA,NUMEROCAJA,TIPOAPLIC,FECHA

,FORMAPAGO,PORCOBRAR,VALORRECIBIDO,CODIGOTARJETA,NUME

ROTARJETA,NOMBRECLIENTE,TELEFONOTARJETA,LOTE,FECHACHEQ

UE,CODIGOBANCO,CODIGOCIUDAD,NUMEROCHEQUE,CTACTE,NOMB

REEMPLEADO,CEDULAEMPLEADO,AUTORIZACIONCRED,QUIENREGAL

A,BENEFICIARIO,AUTORIZACIONOBS,FECHADEVOLUCION,NUMERODE

VOLUCION,CANCELADO,HORA,CIERRE)

VALUES(@NUMEROCAB,@TIPO,@SUCURSAL,@CAJA,@NUMEROCAJA

,@TIPOAPLIC,@FECHA,@FORMAPAGO,@PORCOBRAR,@VALORRECIB

IDO,@CODIGOTARJETA,@NUMEROTARJETA,@NOMBRECLIENTE,@TE

LEFONOTARJETA,@LOTE,@FECHACHEQUE,@CODIGOBANCO,@CODI

GOCIUDAD,@NUMEROCHEQUE,@CTACTE,@NOMBREEMPLEADO,@C

EDULAEMPLEADO,@AUTORIZACIONCRED,@QUIENREGALA,@BENEFI

CIARIO,@AUTORIZACIONOBS,@FECHADEVOLUCION,@NUMERODEVO

LUCION,@CANCELADO,@HORA,@CIERRE)

GO

2.3.31. fac_ing_parqueo

//Permite ingresar un registro a la tabla parqueo

6/17/2007 9:53:30 AM

CREATE PROCEDURE FAC_ING_PARQUEO

@NUMEROCAJA AS INT,

@CLIENTE AS VARCHAR(10),

110

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@FECHA AS DATETIME,

@HORAINICIAL AS DATETIME

AS

INSERT INTO PARQUEO

(NUMEROCAJA,CLIENTE,HORAINICIAL,TIPOMEMBRESIA,COMENTARIO,

FECHA)

VALUES

(@NUMEROCAJA,@CLIENTE,@HORAINICIAL,@TIPOMEMBRESIA,@CO

MENTARIO,@FECHA)

GO

2.3.32. fac_ing_personalt

//Permite ingresar un registro a la tabla personal trainer

5/14/2007 11:08:45 AM

CREATE PROCEDURE FAC_ING_PERSONALT

@NUMEROCAJA AS INT,

@CLIENTE AS VARCHAR(10),

@PERSONAL AS VARCHAR(10),

@SESION AS VARCHAR(3),

@HORAINICIAL AS VARCHAR(8),

@HORAFINAL AS VARCHAR(8),

111

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@ESTADO AS VARCHAR(2),

@FECHA AS DATETIME

AS

INSERT INTO PERSONA_TRAINER

(NUMEROCAJA,CLIENTE,PERSONAL,SESION,HORAINICIAL,HORAFINAL

,TIPOMEMBRESIA,COMENTARIO,ESTADO,FECHA)

VALUES

(@NUMEROCAJA,@CLIENTE,@PERSONAL,@SESION,@HORAINICIAL,

@HORAFINAL,@TIPOMEMBRESIA,@COMENTARIO,@ESTADO,

@FECHA)

GO

2.3.33. fac_ing_pilates

//Permite ingresar un registro a la tabla pilates

5/15/2007 2:46:13 PM

CREATE PROCEDURE FAC_ING_PILATES

@NUMEROCAJA AS INT,

@CLIENTE AS VARCHAR(10),

@PILATES AS VARCHAR(10),

@SESION AS VARCHAR(3),

@HORAINICIAL AS VARCHAR(8),

@HORAFINAL AS VARCHAR(8),

112

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@ESTADO AS VARCHAR(2),

@FECHA AS DATETIME

AS

INSERT INTO PILATES

(NUMEROCAJA,CLIENTE,PILATES,SESION,HORAINICIAL,HORAFINAL,TI

POMEMBRESIA,COMENTARIO,ESTADO,FECHA)

VALUES

(@NUMEROCAJA,@CLIENTE,@PILATES,@SESION,@HORAINICIAL,@H

ORAFINAL,@TIPOMEMBRESIA,@COMENTARIO,@ESTADO,@FECHA)

GO

2.3.34. fac_ing_platos_cabecera

//Permite ingresar un registro a la cabecera de la tabla platos

7/1/2007 8:36:08 PM

CREATE PROCEDURE FAC_ING_PLATOS_CABECERA

@CODPLATOS AS INT,

@CODPRODSERV AS INT,

@NOMBRE AS VARCHAR(50),

@PRECIO AS DECIMAL(9,2),

@COSTOTOTAL AS DECIMAL(9,2),

@ESTADO AS CHAR(2)

AS

113

INSERT INTO PLATOS_CABECERA

(CODPLATO,CODPRODSERV,NOMBRE, PRECIO,

ESTADO,FECHA_CREACION,FECHA_MOD,COSTO)

VALUES (@CODPLATOS,@CODPRODSERV,@NOMBRE, @PRECIO,

@ESTADO,GETDATE(),GETDATE(),@COSTOTOTAL)

GO

2.3.35. fac_ing_prodserv

//Permite ingresar un registro a la tabla PRODUCTO_SERV

4/22/2007 3:22:00 PM

CREATE PROCEDURE FAC_ING_PRODSERV

@DESCRIP AS VARCHAR(500),

@DESCRIPCION AS VARCHAR(1500),

@COSTO AS DECIMAL(18,4),

@PRECIO1 AS DECIMAL(18,4),

@PRECIO2 AS DECIMAL(18,4),

@STOCK AS INT,

@IVA AS CHAR(2),

@TIPOPRO AS CHAR(2),

@TIPOMEMBRE AS CHAR(4),

@DIAS AS NUMERIC,

@ESTADO AS CHAR(2)

AS

INSERT INTO PRODUCTO_SERV (NOMBRE, CODPADRE, PROTIPO,

COSTO, PROPRECIO, PROPRECIO2, PROIVA, PROSTOCK,

114

CODESTADO, PROFECING,

PROFECHMODIF,DESCRIPCION,TIPOMEMBRE,DIAS,ESTADO)

VALUES (@DESCRIP, 1, @TIPOPRO, @COSTO, @PRECIO1, @PRECIO2

, @IVA, @STOCK,@ESTADO, GETDATE(),

GETDATE(),@DESCRIPCION,@TIPOMEMBRE,@DIAS,@ESTADO)

GO

2.3.36. fac_ing_secuencia

//Permite ingresar un registro a la tabla secuencia

5/11/2007 6:57:50 PM

CREATE PROCEDURE FAC_ING_SECUENCIA

@TIPO AS VARCHAR(3),

@SUCURSAL AS INT,

@CAJA AS INT,

@NUMERO AS NUMERIC

AS

INSERT INTO SECUENCIAS (TIPO, SUCURSAL, CAJA, NUMERO)

VALUES (@TIPO, @SUCURSAL, @CAJA, @NUMERO)

GO

2.3.37. fac_mod_bronceados

//Permite modificar un registro de la tabla bronceados

5/28/2007 11:50:14 AM

115

CREATE PROCEDURE FAC_MOD_BRONCEADOS

@NUMEROCAJA AS INT,

@CLIENTE AS VARCHAR(10),

@SESION AS VARCHAR(3),

@HORAINICIAL AS VARCHAR(8),

@HORAFINAL AS VARCHAR(8),

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@FECHA AS DATETIME

AS

UPDATE BRONCEADOS

SET SESION=@SESION, HORAINICIAL=@HORAINICIAL,

HORAFINAL=@HORAFINAL, TIPOMEMBRESIA=@TIPOMEMBRESIA,

COMENTARIO=@COMENTARIO, FECHA=@FECHA

WHERE numeroCAJA=@numeroCAJA

GO

2.3.38. fac_mod_cliente

//Permite modificar un registro de la tabla persona

2/24/2007 2:53:35 PM

CREATE PROCEDURE FAC_MOD_CLIENTE

@COD AS VARCHAR(15),

@CEDULA AS VARCHAR(15),

@NOMBRE AS VARCHAR(500),

@APELLIDO AS VARCHAR(500),

116

@DIRECCION AS VARCHAR(500),

@TELEFONO AS VARCHAR(20),

@MAIL AS VARCHAR(100),

@CODCIUDAD AS INT,

@CODZONA AS INT,

@FECHAINGRESO AS VARCHAR(12),

@COMEN AS VARCHAR(400),

@FECHANAC AS VARCHAR(12),

@ESTDCIVIL AS CHAR(2),

@SEXO AS CHAR(2),

@EMPRESA AS VARCHAR(500),

@EST AS CHAR(2),

@FECHAMOD AS VARCHAR(12),

@FECHACAD AS VARCHAR(12),

@CODPER AS CHAR(4),

@CODTIPO AS CHAR(4),

@TIPO AS CHAR(4)

AS

UPDATE PERSONA

SET CEDULA=@CEDULA, CODTIPOPER=@CODTIPO,

PERNOMBRE=@NOMBRE, PERAPELLIDO=@APELLIDO,

PERDIRECCION=@DIRECCION, PERTELEFONO=@TELEFONO,

PERMAIL=@MAIL, CODCIUDAD=@CODCIUDAD,

CODZONA=@CODZONA,FECHAINGRESO=@FECHAINGRESO,

PERCOMENTARIO=@COMEN,FECHANAC=@FECHANAC,PERESTDCIVI

L=@ESTDCIVIL,

PERSEXO=@SEXO, PEREMPRESA=@EMPRESA, PERESTADO=@EST,

FECHASALIDA=@FECHACAD, FECHAMODIF=@FECHAMOD,

CODEMPL=@CODPER, TIPO=@TIPO

117

WHERE CODPERS=@COD

GO

2.3.39. fac_mod_combo_cabecera

//Permite modificar un registro de la cabecera de la tabla combo

6/25/2007 6:45:40 PM

CREATE PROCEDURE FAC_MOD_COMBO_CABECERA

@CODCOMBO AS INT,

@NOMBRE AS VARCHAR(50),

@ESTADO AS CHAR(2),

@PRECIO AS DECIMAL(9,2)

AS

UPDATE COMBO_CABECERA

SET NOMBRE= @NOMBRE,

ESTADO= @ESTADO,

PRECIO = @PRECIO,

FECHA_MOD = GETDATE()

WHERE CODCOMBO = @CODCOMBO

GO

2.3.40. fac_mod_locker

//Permite modificar un registro de la tabla locker

6/17/2007 10:44:17 AM

118

CREATE PROCEDURE FAC_MOD_LOCKER

@NUMEROCAJA AS INT,

@CLIENTE AS VARCHAR(10),

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@FECHA AS DATETIME

AS

UPDATE LOCKER

SET TIPOMEMBRESIA=@TIPOMEMBRESIA,

COMENTARIO=@COMENTARIO, FECHA=@FECHA

WHERE numeroCAJA=@numeroCAJA

GO

2.3.41. fac_mod_masajes

//Permite modificar un registro de la tabla masajes

5/28/2007 11:25:39 AM

CREATE PROCEDURE FAC_MOD_MASAJES

@NUMEROCAJA AS INT,

@CLIENTE AS VARCHAR(10),

@MASAJISTA AS VARCHAR(10),

@SESION AS VARCHAR(3),

@HORAINICIAL AS VARCHAR(8),

@HORAFINAL AS VARCHAR(8),

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@FECHA AS DATETIME

119

AS

UPDATE MASAJES

SET SESION=@SESION, HORAINICIAL=@HORAINICIAL,

HORAFINAL=@HORAFINAL, TIPOMEMBRESIA=@TIPOMEMBRESIA,

COMENTARIO=@COMENTARIO, FECHA=@FECHA,

MASAJISTA=@MASAJISTA

WHERE numeroCAJA=@numeroCAJA

GO

2.3.42. fac_mod_memb_cliente

//Permite modificar la fecha de modificación de un registro de la tabla

persona

4/22/2007 6:10:25 PM

CREATE PROCEDURE FAC_MOD_MEMB_CLIENTE

@COD AS VARCHAR(15),

@FECHAMOD AS VARCHAR(12),

@FECHACAD AS VARCHAR(12),

@CODTIPO AS CHAR(4)

AS

UPDATE PERSONA

SET FECHASALIDA=@FECHACAD, FECHAMODIF=@FECHAMOD,

TIPO=@CODTIPO

WHERE CODPERS=@COD

GO

120

2.3.43. fac_mod_parqueo

//Permite modificar un registro de la tabla parqueo

6/17/2007 9:46:02 AM

CREATE PROCEDURE FAC_MOD_PARQUEO

@NUMEROCAJA AS INT,

@CLIENTE AS VARCHAR(10),

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@FECHA AS DATETIME,

@HORAINICIAL AS DATETIME

AS

UPDATE PARQUEO

SET TIPOMEMBRESIA=@TIPOMEMBRESIA,

COMENTARIO=@COMENTARIO, FECHA=@FECHA,

HORAINICIAL=@HORAINICIAL

WHERE numeroCAJA=@numeroCAJA

GO

2.3.44. fac_mod_personalt

//Permite modificar un registro de la tabla personal trainer

5/14/2007 10:57:54 AM

CREATE PROCEDURE FAC_MOD_PERSONALT

@NUMEROCAJA AS INT,

@CLIENTE AS VARCHAR(10),

121

@PERSONAL AS VARCHAR(10),

@SESION AS VARCHAR(3),

@HORAINICIAL AS VARCHAR(8),

@HORAFINAL AS VARCHAR(8),

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@ESTADO AS VARCHAR(2),

@FECHA AS DATETIME

AS

UPDATE PERSONA_TRAINER

SET SESION=@SESION, HORAINICIAL=@HORAINICIAL,

HORAFINAL=@HORAFINAL, TIPOMEMBRESIA=@TIPOMEMBRESIA,

COMENTARIO=@COMENTARIO, FECHA=@FECHA,

ESTADO=@ESTADO, PERSONAL=@PERSONAL

WHERE numeroCAJA=@numeroCAJA

GO

2.3.45. fac_mod_pilates

//Permite modificar un registro de la tabla pilates

5/15/2007 2:56:17 PM

CREATE PROCEDURE FAC_MOD_PILATES

@NUMEROCAJA AS INT,

@CLIENTE AS VARCHAR(10),

@PILATES AS VARCHAR(10),

@SESION AS VARCHAR(3),

@HORAINICIAL AS VARCHAR(8),

122

@HORAFINAL AS VARCHAR(8),

@TIPOMEMBRESIA AS VARCHAR(3),

@COMENTARIO AS VARCHAR(400),

@ESTADO AS VARCHAR(2),

@FECHA AS DATETIME

AS

UPDATE PILATES

SET SESION=@SESION, HORAINICIAL=@HORAINICIAL,

HORAFINAL=@HORAFINAL, TIPOMEMBRESIA=@TIPOMEMBRESIA,

COMENTARIO=@COMENTARIO, FECHA=@FECHA,

ESTADO=@ESTADO, PILATES=@PILATES

WHERE numeroCAJA=@numeroCAJA

GO

2.3.46. fac_mod_platos_cabecera

//Permite modificar un registro de la cabecera de la tabla platos

7/1/2007 8:32:56 PM

CREATE PROCEDURE FAC_MOD_PLATOS_CABECERA

@CODPLATOS AS INT,

@NOMBRE AS VARCHAR(50),

@ESTADO AS CHAR(2),

@COSTOTOTAL AS DECIMAL(9,2),

@PRECIO AS DECIMAL(9,2)

AS

UPDATE PLATOS_CABECERA

123

SET NOMBRE= @NOMBRE,

ESTADO= @ESTADO,

PRECIO = @PRECIO,

COSTO = @COSTOTOTAL,

FECHA_MOD = GETDATE()

WHERE CODPLATO = @CODPLATOS

GO

2.3.47. fac_mod_prodserv

//Permite modificar un registro de la tabla producto_serv

4/22/2007 2:55:28 PM

CREATE PROCEDURE FAC_MOD_PRODSERV

@COD AS VARCHAR(15),

@DESCRIP AS VARCHAR(500),

@DESCRIPCION AS VARCHAR(1500),

@COSTO AS DECIMAL(18,4),

@PRECIO1 AS DECIMAL(18,4),

@PRECIO2 AS DECIMAL(18,4),

@IVA AS CHAR(2),

@TIPOPRO AS CHAR(2),

@FECHAMOD as DATETIME,

@TIPOMEMBRE AS CHAR(4),

@STOCK AS INT,

@DIAS AS NUMERIC,

@ESTADO AS CHAR(2)

AS

124

UPDATE PRODUCTO_SERV

SET NOMBRE=@DESCRIP, PROTIPO=@TIPOPRO,

COSTO=@COSTO,PROPRECIO=@PRECIO1,

PROPRECIO2=@PRECIO2 , PROIVA=@IVA, PROFECHMODIF =

@FECHAMOD,DESCRIPCION=@DESCRIPCION,TIPOMEMBRE=@TIPOM

EMBRE,PROSTOCK=@STOCK,DIAS=@DIAS,ESTADO=@ESTADO

WHERE CODPRODSERV=@COD

GO

2.3.48. fac_mod_secuencia

//Permite modificar el último número de la tabla secuencia del tipo

correspondiente

5/11/2007 6:58:09 PM

CREATE PROCEDURE FAC_MOD_SECUENCIA

@TIPO AS VARCHAR(3),

@SUCURSAL AS INT,

@CAJA AS INT,

@NUMERO AS NUMERIC

AS

UPDATE SECUENCIAS

SET NUMERO = @NUMERO

WHERE TIPO = @TIPO AND SUCURSAL = @SUCURSAL AND CAJA =

@CAJA

GO

125

2.3.49. imp_bronceados1

//Permite imprimir un ticket de bronceado

5/28/2007 11:56:13 AM

CREATE PROCEDURE IMP_BRONCEADOS1

@NUMEROCAJA AS INT

AS

SELECT A.numeroCAJA,

A.cliente,

LTRIM(B.perapellido)+' '+LTRIM(B.pernombre) AS

nombrecliente,

A.horainicial,

A.horafinal,

A.tipomembresia,

A.fecha,

A.comentario

FROM bronceados AS A,

persona AS B

WHERE A.cliente = B.cedula

AND A.numerocaja = @numerocaja

GO

126

2.3.50. imp_clientes

//Permite imprimir un registro de la tabla persona

6/4/2007 8:30:45 PM

CREATE PROCEDURE IMP_CLIENTES

@CEDULA AS VARCHAR(10)

AS

SELECT *

FROM PERSONA

WHERE CEDULA = @CEDULA

GO

2.3.51. imp_combo

//Permite imprimir un registro de la tabla combo

6/22/2007 8:12:08 PM

CREATE PROCEDURE IMP_COMBO

@CODCOMBO AS INT

AS

SELECT

CA.CODCOMBO,CA.NOMBRE,CA.PRECIO,CA.ESTADO,CA.FECHA_CRE

127

ACION,CA.FECHA_MOD,DE.CODPRODSERV,PR.NOMBRE AS

NPRODU,DE.CANTIDAD,DE.COSTO,DE.TOTAL ,DE.PRECIO AS PRECIO1

FROM COMBO_CABECERA AS CA, COMBO_DETALLE AS DE,

PRODUCTO_SERV AS PR

WHERE CA.CODCOMBO=DE.CODCOMBO AND

DE.CODPRODSERV=PR.CODPRODSERV AND

CA.CODCOMBO=@CODCOMBO

GO

2.3.52. imp_locker

//Permite imprimir un registro de la tabla locker

6/17/2007 12:11:00 PM

CREATE PROCEDURE IMP_LOCKER

@NUMEROCAJA AS INT

AS

SELECT A.numeroCAJA,

A.cliente,

LTRIM(B.perapellido)+' '+LTRIM(B.pernombre) AS

nombrecliente,

A.tipomembresia,

A.fecha,

A.comentario

FROM LOCKER AS A,

persona AS B

WHERE A.cliente = B.cedula

128

AND A.numerocaja = @numerocaja

GO

2.3.53. imp_masajes1

//Permite imprimir un ticket de la tabla masaje

5/28/2007 11:26:33 AM

CREATE PROCEDURE IMP_MASAJES1

@NUMEROCAJA AS INT

AS

SELECT a.numerocaja,

a.cliente,LTRIM(B.perapellido) + ' '+ LTRIM(B.pernombre) AS

NOMBRECLIENTE,

a.MASAJISTA,

a.horainicial,

a.horafinal,

a.tipomembresia,

a.comentario,

a.fecha

FROM MASAJES as a,

persona as b

WHERE a.cliente=b.cedula

AND a.numerocaja=@numerocaja

GO

129

2.3.54. imp_masajes2

//Permite imprimir un ticket de la tabla masaje

5/28/2007 11:27:44 AM

CREATE PROCEDURE IMP_MASAJES2

@NUMEROCAJA AS INT

AS

SELECT LTRIM(C.perapellido)+' '+LTRIM(C.pernombre) AS

NOMBREMASAJISTA,

a.MASAJISTA

FROM MASAJES as a,

persona as C

WHERE A.MASAJISTA = C.cedula

AND a.numerocaja=@NUMEROCAJA

GO

2.3.55. imp_parqueo

//Permite imprimir un ticket de la tabla parqueo

6/17/2007 12:09:07 PM

CREATE PROCEDURE IMP_PARQUEO

@NUMEROCAJA AS INT

AS

130

SELECT A.numeroCAJA,

A.cliente,

LTRIM(B.perapellido)+' '+LTRIM(B.pernombre) AS

nombrecliente,

A.horainicial,

A.tipomembresia,

A.fecha,

A.comentario

FROM PARQUEO AS A,

persona AS B

WHERE A.cliente = B.cedula

AND A.numerocaja = @numerocaja

GO

2.3.56. imp_personal1

//Permite imprimir un ticket de la tabla personal trainer

5/23/2007 4:34:13 PM

CREATE PROCEDURE IMP_PERSONAL1

@NUMEROCAJA AS INT

AS

SELECT a.numerocaja,

a.cliente,

LTRIM(B.perapellido) + ' ' + LTRIM(B.pernombre) AS

NOMBRECLIENTE,

a.personal,

131

a.horainicial,

a.horafinal,

a.tipomembresia,

a.estado,

a.comentario,

a.fecha

FROM PERSONA_TRAINER as a,

persona as b

WHERE a.cliente=b.cedula

AND a.numerocaja=@numerocaja

GO

2.3.57. imp_personal2

//Permite imprimir un ticket de la tabla personal trainer

5/23/2007 5:27:01 PM

CREATE PROCEDURE IMP_PERSONAL2

@NUMEROCAJA AS INT

AS

SELECT LTRIM(C.perapellido)+' '+LTRIM(C.pernombre) AS

NOMBREPERSONAL,

a.personal

FROM PERSONA_TRAINER as a,

persona as C

WHERE A.personal=C.cedula

AND a.numerocaja=@NUMEROCAJA

GO

132

2.3.58. imp_pilates1

//Permite imprimir un ticket de la tabla pilates

5/27/2007 6:51:09 PM

CREATE PROCEDURE IMP_PILATES1

@NUMEROCAJA AS INT

AS

SELECT a.numerocaja,

a.cliente,

LTRIM(B.perapellido) + ' ' + LTRIM(B.pernombre) AS

NOMBRECLIENTE,

a.PILATES,

a.horainicial,

a.horafinal,

a.tipomembresia,

a.estado,

a.comentario,

a.fecha

FROM PILATES as a,

persona as b

WHERE a.cliente=b.cedula

AND a.numerocaja=@numerocaja

GO

133

2.3.59. imp_pilates2

//Permite imprimir un ticket de la tabla pilates

5/27/2007 6:51:53 PM

CREATE PROCEDURE IMP_PILATES2

@NUMEROCAJA AS INT

AS

SELECT LTRIM(C.perapellido)+' '+LTRIM(C.pernombre) AS

NOMBREPERSONAL,

a.PILATES

FROM PILATES as

a,persona as C

WHERE A.PILATES=C.cedula

AND a.numerocaja=@NUMEROCAJA

GO

2.3.60. imp_platos

//Permite imprimir un registro de la tabla platos

7/1/2007 8:31:12 PM

CREATE PROCEDURE IMP_PLATOS

@CODPLATOS AS INT

AS

134

SELECT

CA.CODPLATO,CA.NOMBRE,CA.PRECIO,CA.ESTADO,CA.FECHA_CREA

CION,CA.FECHA_MOD,DE.CODPRODSERV,PR.NOMBRE AS

NPRODU,DE.CANTIDAD,DE.COSTO,DE.TOTAL ,DE.PRECIO AS

PRECIO1,de.MEDIDA

FROM PLATOS_CABECERA AS CA, PLATOS_DETALLE AS DE,

PRODUCTO_SERV AS PR

WHERE CA.CODPLATO=DE.CODPLATO AND

DE.CODPRODSERV=PR.CODPRODSERV

AND CA.CODPLATO=@CODPLATOS

GO

2.3.61. imp_productos_serv

//Permite imprimir un registro de la tabla productos_serv

6/5/2007 5:20:23 PM

CREATE PROCEDURE IMP_PRODUCTOS_SERV

@CODIGO AS INT

AS

SELECT *

FROM PRODUCTO_SERV

WHERE CODPRODSERV = @CODIGO

GO

135

2.3.62. imp_rep_asistencias

//Permite imprimir reportes de la asistencia de los socios

7/16/2007 8:23:06 AM

CREATE PROCEDURE IMP_REP_ASISTENCIAS

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDECED AS VARCHAR(10),

@HASTACED AS VARCHAR(10)

AS

SELECT ASI.CODIGOSECUEN, ASI.FECHA,

ASI.HORA,(LTRIM(PE.PERAPELLIDO)+' '+LTRIM(PE.PERNOMBRE)) AS

NOMBRES,PE.CEDULA,PE.FECHASALIDA,PE.CODTIPOPER

FROM ASISTENCIAS AS ASI,PERSONA AS PE

WHERE ASI.CODIGOSECUEN=PE.CEDULA

AND ASI.fecha>=convert(datetime,@FECHAINI)

and ASI.fecha<=convert(datetime,@FECHAFIN)

AND PE.CEDULA>=@DESDECED AND PE.CEDULA<=@HASTACED

ORDER BY ASI.CODIGOSECUEN,ASI.FECHA,ASI.HORA

GO

2.3.63. imp_rep_bancos

//Permite imprimir reportes de los pagos efectuados con cheque

7/5/2007 4:41:22 PM

136

CREATE PROCEDURE IMP_REP_BANCOS

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT

AS

SELECT PA.SUCURSAL, PA.FECHA, PA.FORMAPAGO, PA.PORCOBRAR,

PA.FECHACHEQUE, PA.CODIGOBANCO, BA.DESCRIPCION,

PA.CODIGOCIUDAD, CI.DESCRIPCION, PA.NUMEROCHEQUE,

PA.CTACTE

FROM PAGOS_FACTURA AS PA,TIPO_BANCO AS BA,CIUDAD AS CI

WHERE PA.CODIGOBANCO = BA.CODTIPOBANKO

AND PA.CODIGOCIUDAD = CI.CODCIUDAD

AND PA.SUCURSAL>=@DESDESUC

AND PA.SUCURSAL<=@HASTASUC

AND PA.FECHA>=CONVERT(DATETIME,@FECHAINI)

AND PA.FECHA<=CONVERT(DATETIME,@FECHAFIN)

ORDER BY PA.SUCURSAL,PA.CODIGOBANCO,CODIGOCIUDAD

GO

2.3.64. imp_rep_combos

//Permite imprimir reportes de los combos creados

137

7/5/2007 8:13:10 PM

CREATE PROCEDURE IMP_REP_COMBOS

@DESDECOM AS INT,

@HASTACOM AS INT

AS

SELECT CA.CODCOMBO, CA.NOMBRE, CA.PRECIO, CA.ESTADO,

CA.FECHA_CREACION, CA.FECHA_MOD,

DE.CODPRODSERV, PR.NOMBRE AS PRONOMBRE, DE.CANTIDAD,

DE.COSTO, DE.PRECIO, DE.TOTAL

FROM COMBO_CABECERA AS CA, COMBO_DETALLE AS DE,

PRODUCTO_SERV AS PR

WHERE CA.CODCOMBO=DE.CODCOMBO

AND DE.CODPRODSERV=PR.CODPRODSERV

AND CA.CODCOMBO>=@DESDECOM

AND CA.CODCOMBO<=@HASTACOM

ORDER BY CA.CODCOMBO

GO

2.3.65. imp_rep_cuadredecaja

//Permite imprimir reportes de las formas de pago efectuadas

6/13/2007 7:44:32 PM

138

CREATE PROCEDURE IMP_REP_CUADREDECAJA

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT

AS

select ca.vendedor,pa.sucursal, pa.caja, pa.numerocaja, pa.fecha,

pa.codigotarjeta, pa.numerotarjeta, pa.nombrecliente, pa.telefonotarjeta,

pa.lote, pa.fechacheque, pa.codigobanco, pa.numerocheque, pa.ctacte,

pa.hora,

CASE PA.FORMAPAGO

WHEN 'EF' THEN (CAST ( PORCOBRAR AS DECIMAL(9,2)))

ELSE (CAST ( 0 AS DECIMAL(9,2)))

END AS EFECTIVO,

CASE PA.FORMAPAGO

WHEN 'CH' THEN (CAST ( PORCOBRAR AS DECIMAL(9,2)))

ELSE (CAST ( 0 AS DECIMAL(9,2)))

END AS CHEQUE,

CASE PA.FORMAPAGO

WHEN 'TA' THEN (CAST ( PORCOBRAR AS DECIMAL(9,2)))

ELSE (CAST ( 0 AS DECIMAL(9,2)))

END AS TARJETA,

CASE PA.FORMAPAGO

WHEN 'CR' THEN (CAST ( PORCOBRAR AS DECIMAL(9,2)))

ELSE (CAST ( 0 AS DECIMAL(9,2)))

END AS CREDITO

INTO TEMP1

139

from pagos_factura AS pa, cabecera_factura as ca

where PA.numerocab=CA.numero and

pa.fecha>=convert(datetime,@FECHAINI) and

pa.fecha<=convert(datetime,@FECHAFIN) AND

pa.SUCURSAL>=@DESDESUC AND pa.SUCURSAL<=@HASTASUC

SELECT SUCURSAL,VENDEDOR,USUUSER,SUM(EFECTIVO) AS

EFECTIVO,SUM(CHEQUE) AS CHEQUE,SUM(TARJETA) AS

TARJETA,SUM(CREDITO) AS CREDITO

FROM TEMP1,USUARIO

WHERE TEMP1.VENDEDOR=USUARIO.CODUSU

GROUP BY SUCURSAL,VENDEDOR,USUUSER

drop table temp1

GO

2.3.66. imp_rep_diariodeventa

//Permite imprimir reportes de las ventas realizadas al detalle

6/6/2007 4:40:49 PM

CREATE PROCEDURE IMP_REP_DIARIODEVENTA

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT

140

AS

SELECT CA.SUCURSAL AS SUCURSAL,CA.CAJA AS

CAJA,CA.NUMEROCAJA AS

NUMEROCAJA,VENDEDOR,CLIENTE,(LTRIM(CL.PERAPELLIDO)+'

'+LTRIM(PERNOMBRE)) AS NCLIENTE,

SUM(SUBTOTAL) AS SUBTOTAL, sum(DESCUENTO1+DESCUENTO2) AS

DESCUENTO, sum(IMPUESTO) AS IMPUESTO, sum(TOTAL) AS TOTAL,

CASE PA.FORMAPAGO

WHEN 'EF' THEN SUM(CAST ( PORCOBRAR AS DECIMAL(9,2)))

ELSE SUM(CAST ( 0 AS DECIMAL(9,2)))

END AS EFECTIVO,

CASE PA.FORMAPAGO

WHEN 'CH' THEN SUM(CAST ( PORCOBRAR AS DECIMAL(9,2)))

ELSE SUM(CAST ( 0 AS DECIMAL(9,2)))

END AS CHEQUE,

CASE PA.FORMAPAGO

WHEN 'TA' THEN SUM(CAST ( PORCOBRAR AS DECIMAL(9,2)))

ELSE SUM(CAST ( 0 AS DECIMAL(9,2)))

END AS TARJETA,

CASE PA.FORMAPAGO

WHEN 'CR' THEN SUM(CAST ( PORCOBRAR AS DECIMAL(9,2)))

ELSE SUM(CAST ( 0 AS DECIMAL(9,2)))

END AS CREDITO

into temp1

FROM cabecera_factura as CA,pagos_factura as PA, PERSONA AS CL

WHERE CA.numero=PA.numerocab AND CA.CLIENTE=CL.CEDULA

AND CA.FECHA >= CONVERT(DATETIME, @FECHAINI)

AND CA.FECHA <= CONVERT(DATETIME, @FECHAFIN)

141

AND CA.SUCURSAL>=@DESDESUC AND

CA.SUCURSAL<=@HASTASUC

group by CA.SUCURSAL, CA.CAJA, CA.NUMEROCAJA, VENDEDOR,

CLIENTE, (LTRIM(CL.PERAPELLIDO)+'

'+LTRIM(PERNOMBRE)),FORMAPAGO

SELECT

SUCURSAL,CAJA,NUMEROCAJA,VENDEDOR,CLIENTE,NCLIENTE,

AVG(SUBTOTAL) AS SUBTOTAL, AVG(DESCUENTO) AS DESCUENTO,

AVG(IMPUESTO) AS IMPUESTO, AVG(TOTAL) AS TOTAL,

SUM(EFECTIVO) AS EFECTIVO,SUM(CHEQUE)AS CHEQUE,

SUM(TARJETA) AS TARJETA, SUM(CREDITO) AS CREDITO

FROM temp1 GROUP BY

SUCURSAL,CAJA,NUMEROCAJA,VENDEDOR,CLIENTE,NCLIENTE

drop table temp1

GO

2.3.67. imp_rep_existencias

//Permite imprimir reportes de las existencias de productos terminados

7/16/2007 8:23:06 AM

CREATE PROCEDURE IMP_REP_EXISTENCIAS

@DESDEFEC AS VARCHAR(10),

@HASTAFEC AS VARCHAR(10)

142

AS

SELECT EX.TIPO,EX.CODIGO, PR.NOMBRE, EX.CANTIDAD

FROM EXISTENCIAS AS EX, PRODUCTO_SERV AS PR

WHERE EX.CODIGO=PR.CODPRODSERV

AND PROTIPO='P'

AND EX.FECHA >= CONVERT(DATETIME,@DESDEFEC)

AND EX.FECHA <= CONVERT(DATETIME,@HASTAFEC)

ORDER BY EX.TIPO,EX.CODIGO

GO

2.3.68. imp_rep_montosxclientes

//Permite imprimir reportes de las ventas realizadas a clientes por sus

montos

7/5/2007 8:29:30 PM

CREATE PROCEDURE IMP_REP_MONTOSXCLIENTES

@DESDEFEC AS VARCHAR(10),

@HASTAFEC AS VARCHAR(10),

@DESDEMON AS INT,

@HASTAMON AS INT

AS

143

SELECT CLIENTE,LTRIM(PE.PERAPELLIDO)+' '+LTRIM(PE.PERNOMBRE)

AS APELLIDOS,SUM(CA.TOTAL) AS TOTAL

FROM CABECERA_FACTURA AS CA, PERSONA AS PE

WHERE CA.CLIENTE=PE.CEDULA

AND CA.FECHA>=CONVERT(DATETIME,@DESDEFEC)

AND CA.FECHA<=CONVERT(DATETIME,@HASTAFEC)

GROUP BY CLIENTE,PERAPELLIDO,PERNOMBRE

HAVING SUM(CA.TOTAL)>=@DESDEMON AND

SUM(CA.TOTAL)<=@HASTAMON

ORDER BY CLIENTE

GO

2.3.69. imp_rep_movimientoproductos

//Permite imprimir reportes de los movimientos de productos

7/5/2007 8:50:36 PM

CREATE PROCEDURE IMP_REP_MOVIMIENTOPRODUCTOS

@DESDEFEC AS VARCHAR(10),

@HASTAFEC AS VARCHAR(10)

AS

SELECT EX.TIPO,EX.FECHA,EX.CODIGO, PR.NOMBRE, EX.CANTIDAD

FROM EXISTENCIAS AS EX, PRODUCTO_SERV AS PR

WHERE EX.CODIGO=PR.CODPRODSERV

AND EX.FECHA >= CONVERT(DATETIME,@DESDEFEC)

144

AND EX.FECHA <= CONVERT(DATETIME,@HASTAFEC)

GO

2.3.70. imp_rep_personaltrainer

//Permite imprimir un reporte de los personal trainer

6/23/2007 8:27:05 PM

CREATE PROCEDURE IMP_REP_PERSONALTRAINER

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDEPER AS VARCHAR(10),

@HASTAPER AS VARCHAR(10)

AS

SELECT PT.numero, PT.FECHA, PT.cliente, (ltrim(perapellido)+'

'+ltrim(pernombre)) as apellido, PT.personal, PT.horainicial, PT.horafinal,

PT.tipomembresia

INTO TEMP2

FROM PERSONA_TRAINER AS PT INNER JOIN PERSONA AS PE

ON PT.cliente = PE.CEDULA

WHERE FECHA>=CONVERT(DATETIME,@FECHAINI)

AND FECHA<=CONVERT(DATETIME,@FECHAFIN)

AND PERSONAL>=@DESDEPER AND PERSONAL<=@HASTAPER

AND ESTADO=1

SELECT TE.numero, TE.FECHA, TE.cliente, TE.APELLIDO, TE.personal,

145

(ltrim(PE.perapellido)+' '+ltrim(pernombre)) as nombrepersonal,

TE.horainicial, TE.horafinal, TE.tipomembresia

FROM TEMP2 AS TE INNER JOIN PERSONA AS PE

ON TE.PERSONAL = PE.CEDULA

ORDER BY TE.PERSONAL,TE.HORAINICIAL

drop table temp2

GO

2.3.71. imp_rep_platos

//Permite imprimir un reporte de los platos creados

7/5/2007 8:05:22 PM

CREATE PROCEDURE IMP_REP_PLATOS

@DESDEPLA AS INT,

@HASTAPLA AS INT

2.3.72. imp_rep_productos

//Permite imprimir un ticket de la tabla productos_serv

7/18/2007 1:58:04 PM

CREATE PROCEDURE IMP_REP_PRODUCTOS

@OPCION AS INT

146

AS

IF @OPCION = 1

BEGIN

SELECT CODPRODSERV, NOMBRE, PROTIPO, PROFECING,

PROPRECIO, COSTO, PROIVA, ESTADO

FROM PRODUCTO_SERV

ORDER BY CODPRODSERV

END

IF @OPCION = 2

BEGIN

SELECT CODPRODSERV, NOMBRE, PROTIPO, PROFECING,

PROPRECIO, COSTO, PROIVA, ESTADO

FROM PRODUCTO_SERV

ORDER BY NOMBRE

END

IF @OPCION = 3

BEGIN

SELECT CODPRODSERV, NOMBRE, PROTIPO, PROFECING,

PROPRECIO, COSTO, PROIVA, ESTADO

FROM PRODUCTO_SERV

ORDER BY PROTIPO

END

IF @OPCION = 4

BEGIN

SELECT CODPRODSERV, NOMBRE, PROTIPO, PROFECING,

PROPRECIO, COSTO, PROIVA, ESTADO

FROM PRODUCTO_SERV

ORDER BY PROFECING

END

147

GO

2.3.73. imp_rep_tarjetas

//Permite imprimir un reporte de los pagos efectuados con tarjetas de crédito

7/5/2007 4:24:36 PM

CREATE PROCEDURE IMP_REP_TARJETAS

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT

AS

SELECT PA.SUCURSAL, PA.FECHA, PA.FORMAPAGO, PA.PORCOBRAR,

PA.CODIGOTARJETA, TA.DESCRIPCION, PA.NUMEROTARJETA,

PA.NOMBRECLIENTE, PA.LOTE

FROM PAGOS_FACTURA AS PA,TARJETAS_CREDITO AS TA

WHERE PA.CODIGOTARJETA = TA.CODTARJCRED

AND PA.SUCURSAL>=@DESDESUC

AND PA.SUCURSAL<=@HASTASUC

AND PA.FECHA>=CONVERT(DATETIME, @FECHAINI)

AND PA.FECHA<=CONVERT(DATETIME, @FECHAFIN)

ORDER BY PA.SUCURSAL,PA.CODIGOTARJETA

GO

148

2.3.74. imp_rep_ventadeproductos

//Permite imprimir un reporte de las ventas de productos realizados

6/13/2007 11:48:14 PM

CREATE PROCEDURE IMP_REP_VENTADEPRODUCTOS

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT

AS

select tipo,sucursal,fecha,codigoproducto,nombre,

CASE tipo

WHEN 'NV' THEN CAST ((cantidad*1) AS NUMERIC(10))

ELSE CAST ( (cantidad*-1) AS NUMERIC(10))

END AS CANTIDAD,

CASE tipo

WHEN 'NV' THEN CAST ((((cantidad*precio)-valordescuento1-

valordescuento2)*1) AS NUMERIC(10,2))

ELSE CAST ((((cantidad*precio)-valordescuento1-valordescuento2)*-1)

AS NUMERIC(10,2))

END AS NETO2

into temp1

from detalle_factura as de,producto_serv as pr

where de.codigoproducto=pr.codprodserv

149

and fecha>=convert(datetime,@FECHAINI)

and fecha<=convert(datetime,@FECHAFIN)

AND SUCURSAL>=@DESDESUC AND SUCURSAL<=@HASTASUC

select sucursal,codigoproducto,nombre,sum(cantidad) as cantidad,

sum(neto2) as neto from temp1 group by sucursal,codigoproducto,nombre

order by sucursal,codigoproducto,nombre

drop table temp1

GO

2.3.75. imp_rep_ventasxhoras

//Permite imprimir un reporte de las ventas detalladas por hora

7/5/2007 7:52:55 PM

CREATE PROCEDURE IMP_REP_VENTASXHORAS

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT

AS

150

select sucursal,tipo,fecha,(subtotal-descuento1-descuento2+impuesto) as

total,hora

from cabecera_factura

where fecha>=convert(datetime,@fechaini)

and fecha<=convert(datetime,@fechafin)

and sucursal>=@desdesuc

and sucursal<=@hastasuc

order by sucursal,hora

GO

2.3.76. imp_rep_ventasxmeses

//Permite imprimir un reporte de las ventas detalladas por meses

7/5/2007 3:25:53 PM

CREATE PROCEDURE IMP_REP_VENTASXMESES

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT

AS

SELECT SUCURSAL,MONTH(FECHA) AS MES,SUM(SUBTOTAL) AS

SUBTOTAL,(SUM(DESCUENTO1)+SUM(DESCUENTO2)) AS

DECUENTO,SUM(IMPUESTO) AS IVA,SUM(TOTAL) AS TOTAL

FROM CABECERA_FACTURA

WHERE FECHA >= CONVERT(DATETIME, @FECHAINI)

151

AND FECHA <= CONVERT(DATETIME, @FECHAFIN)

AND SUCURSAL>=@DESDESUC

AND SUCURSAL<=@HASTASUC

GROUP BY sucursal,MONTH(FECHA)

ORDER BY sucursal,MONTH(FECHA)

GO

2.3.77. imp_rep_ventasxplatos

//Permite imprimir un reporte de los platos creados

7/16/2007 8:11:27 AM

CREATE PROCEDURE IMP_REP_VENTASXPLATOS

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT

AS

select DE.NUMERO AS NUMERO,pl.codprodserv as cplcodigo, pl.nombre as

clpnombre, de.fecha as detfecha, de.cantidad as detcantidad, de.total1 as

dettotal1, pl.precio as clpprecio,

pld.codprodserv as dplcodigo,pr.nombre as dplnombre,pld.cantidad as

dplcantidad, pld.precio as dplprecio, pld.medida as dplmedida

from detalle_factura as de,

platos_cabecera as pl,

platos_detalle as pld,

producto_serv as pr

where de.codigoproducto=pl.codprodserv

152

and pl.codplato=pld.codplato

and pld.codprodserv=pr.codprodserv

and de.sucursal>=@DESDESUC and de.sucursal<=@HASTASUC

and de.fecha>=convert(datetime,@FECHAINI)

and de.fecha<=convert(datetime,@FECHAFIN)

and de.tipo= 'NV'

order by detfecha,cplcodigo

GO

2.3.78. imp_rep_ventasxvendedor

//Permite imprimir un reporte de las ventas detalladas por vendedor

7/5/2007 3:57:43 PM

CREATE PROCEDURE IMP_REP_VENTASXVENDEDOR

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10),

@DESDESUC AS INT,

@HASTASUC AS INT,

@DESDEVEN AS VARCHAR(10),

@HASTAVEN AS VARCHAR(10)

AS

SELECT CA.SUCURSAL,CA.VENDEDOR,

US.CODCEDULA,US.USUUSER,SUM(CA.SUBTOTAL) AS SUBTOTAL,

SUM(CA.DESCUENTO1) AS DESCUENTO1, SUM(CA.DESCUENTO2) AS

DESCUENTO2, SUM(CA.IMPUESTO) AS IMPUESTO, SUM(CA.TOTAL) AS

TOTAL

153

FROM CABECERA_FACTURA AS CA,USUARIO AS US

WHERE CA.VENDEDOR= US.CODUSU

AND CA.FECHA >= CONVERT(DATETIME, @FECHAINI)

AND CA.FECHA <= CONVERT(DATETIME, @FECHAFIN)

AND CA.SUCURSAL>=@DESDESUC

AND CA.SUCURSAL<=@HASTASUC

AND CA.VENDEDOR>=@DESDEVEN

AND CA.VENDEDOR<=@HASTAVEN

GROUP BY

CA.SUCURSAL,CA.VENDEDOR,US.CODCEDULA,US.USUUSER

ORDER BY

CA.SUCURSAL,CA.VENDEDOR,US.CODCEDULA,US.USUUSER

GO

2.3.79. inv_busca_cab

//Permite buscar el último número de la tabla secuencia de la transacción que

se esté efectuando en ese momento

6/8/2007 3:39:51 PM

CREATE PROCEDURE INV_BUSCA_CAB

@CODIGO1 AS VARCHAR(15),

@CODIGO2 AS NUMERIC,

@CODIGO3 AS NUMERIC,

@CODIGO4 AS NUMERIC

AS

154

SELECT NUMERO FROM CABECERA_INVENTARIO WHERE TIPO

= @CODIGO1 AND SUCURSAL = @CODIGO2 AND CAJA = @CODIGO3

AND NUMEROCAJA = @CODIGO4

GO

2.3.80. inv_busca_cabecera

//Permite buscar el último número de la tabla secuencia de la transacción que

se esté efectuando en ese momento

6/8/2007 3:40:22 PM

CREATE PROCEDURE INV_BUSCA_CABECERA

@CODIGO1 AS VARCHAR(15),

@CODIGO2 AS NUMERIC,

@CODIGO3 AS NUMERIC,

@CODIGO4 AS NUMERIC

AS

SELECT * FROM CABECERA_INVENTARIO WHERE TIPO =

@CODIGO1 AND SUCURSAL = @CODIGO2 AND CAJA = @CODIGO3

AND NUMEROCAJA = @CODIGO4

GO

2.3.81. inv_busca_detalles

//Permite buscar el detalle de un producto en el ingreso de bodega

6/8/2007 3:40:08 PM

155

CREATE PROCEDURE INV_BUSCA_DETALLES

@NUMEROCAB AS NUMERIC

AS

SELECT PROD.*, DET.* FROM DETALLE_INVENTARIO AS DET,

PRODUCTO_SERV AS PROD where DET.CODIGOPRODUCTO =

PROD.CODPRODSERV AND NUMEROCAB = @NUMEROCAB

GO

2.3.82. inv_eli_cabecera

//Permite actualizar la cabecera de la tabla cabecera_inventario

6/8/2007 3:39:37 PM

CREATE PROCEDURE INV_ELI_CABECERA

@TIPO AS CHAR(3),

@SUCURSAL AS NUMERIC,

@CAJA AS NUMERIC,

@NUMEROCAJA AS NUMERIC,

@OPCION AS INT

AS

IF @OPCION = 1

BEGIN

UPDATE CABECERA_INVENTARIO

156

SET IVAPRECIO = 0.0000, SUBTOTALPRECIO = 0.0000,

TOTALPRECIO = 0.0000,IVACOSTO = 0.0000, SUBTOTALCOSTO =

0.0000, TOTALCOSTO = 0.0000

WHERE TIPO = @TIPO AND SUCURSAL = @SUCURSAL AND

CAJA = @CAJA AND NUMEROCAJA = @NUMEROCAJA

END

IF @OPCION = 2

BEGIN

UPDATE CABECERA_INVENTARIO SET ELIMINADO = 1 WHERE

TIPO = @TIPO AND SUCURSAL = @SUCURSAL AND CAJA = @CAJA

AND NUMEROCAJA = @NUMEROCAJA

END

GO

2.3.83. inv_eli_detalles

//Permite eliminar los productos de la tabla detalle inventario

6/8/2007 3:36:01 PM

CREATE PROCEDURE INV_ELI_DETALLES

@NUMEROCAB AS NUMERIC

AS

DELETE FROM DETALLE_INVENTARIO WHERE NUMEROCAB =

@NUMEROCAB

GO

157

2.3.84. inv_imp_ingreso

//Permite imprimir un registro de la tabla cabecera de inventario

6/16/2007 11:45:07 PM

CREATE PROCEDURE INV_IMP_INGRESO

@CODIGO1 AS VARCHAR(15),

@CODIGO2 AS NUMERIC,

@CODIGO3 AS NUMERIC,

@CODIGO4 AS NUMERIC

AS

SELECT CAB.*,DET.*, PROD.*, PROV.*, SUC.*, USU.* FROM

CABECERA_INVENTARIO AS CAB, DETALLE_INVENTARIO AS DET,

PRODUCTO_SERV AS PROD, PROVEEDOR AS PROV, SUCURSAL

AS SUC, USUARIO AS USU

WHERE CAB.NUMERO = DET.NUMEROCAB AND

DET.CODIGOPRODUCTO = PROD.CODPRODSERV

AND CAB.PROVEEDOR = PROV.CEDULA AND CAB.SUCURSAL =

SUC.CODSUCUR AND CAB.USUARIO = USU.CODUSU

AND CAB.TIPO = @CODIGO1 AND CAB.SUCURSAL = @CODIGO2

AND CAB.CAJA = @CODIGO3 AND CAB.NUMEROCAJA = @CODIGO4

GO

2.3.85. inv_ing_cabecera

//Permite ingresar un registro a la tabla cabecera inventario

6/8/2007 3:40:53 PM

158

CREATE PROCEDURE INV_ING_CABECERA

@TIPO AS CHAR(2),

@SUCURSAL AS CHAR(3),

@CAJA AS CHAR(3),

@NUMEROCAJA AS NUMERIC,

@SUCURSAL1 AS CHAR(3),

@TIPOINGRESO AS VARCHAR(50),

@PROVEEDOR AS CHAR(4),

@TIPOAPLIC AS VARCHAR(2),

@NUMEROAPLIC AS NUMERIC,

@SUBTOTALPRECIO AS DECIMAL(9,2),

@IVAPRECIO AS DECIMAL(9,2),

@TOTALPRECIO AS DECIMAL(9,2),

@SUBTOTALCOSTO AS DECIMAL(9,2),

@IVACOSTO AS DECIMAL(9,2),

@TOTALCOSTO AS DECIMAL(9,2),

@FECHA AS DATETIME,

@HORA AS DATETIME,

@OBSERVACIONES AS VARCHAR(1500),

@USUARIO AS VARCHAR(10),

@IMPRESO AS VARCHAR(2),

@ELIMINADO AS BIT

AS

159

INSERT INTO CABECERA_INVENTARIO

(TIPO,SUCURSAL,CAJA,NUMEROCAJA,SUCURSAL1,TIPOINGRESO,PRO

VEEDOR,TIPOAPLIC,

NUMEROAPLIC,SUBTOTALPRECIO,IVAPRECIO,TOTALPRECIO,SU

BTOTALCOSTO,IVACOSTO,TOTALCOSTO,FECHA,

HORA,OBSERVACIONES,USUARIO,IMPRESO,ELIMINADO)

VALUES

(@TIPO,@SUCURSAL,@CAJA,@NUMEROCAJA,@SUCURSAL1,@

TIPOINGRESO,@PROVEEDOR,@TIPOAPLIC,

@NUMEROAPLIC,@SUBTOTALPRECIO,@IVAPRECIO,@TOTALPR

ECIO,@SUBTOTALCOSTO,@IVACOSTO,@TOTALCOSTO,@FECHA,

@HORA,@OBSERVACIONES,@USUARIO,@IMPRESO,@ELIMINA

DO)

GO

2.3.86. inv_ing_ciudad

//Permite ingresar un registro a la tabla ciudad

2/26/2007 6:30:56 PM

CREATE PROCEDURE INV_ING_CIUDAD

@DESCRIP AS VARCHAR(500),

@ESTADO AS VARCHAR(50)

AS

INSERT INTO CIUDAD (DESCRIPCION, ESTADO)

VALUES (@DESCRIP,@ESTADO)

160

GO

2.3.87. inv_ing_detalle

//Permite ingresar los detalles a la tabla detalle inventario

6/8/2007 3:40:38 PM

CREATE PROCEDURE INV_ING_DETALLE

@NUMEROCAB AS NUMERIC,

@TIPO AS VARCHAR(15),

@SUCURSAL AS VARCHAR(15),

@CAJA AS VARCHAR(15),

@NUMEROCAJA AS NUMERIC,

@CODIGOPRODUCTO AS VARCHAR(50),

@CANTIDAD AS INT,

@PRECIO AS DECIMAL(9,2),

@COSTO AS DECIMAL(9,2),

@TOTALP AS DECIMAL(9,2),

@TOTALC AS DECIMAL(9,2),

@IVA AS DECIMAL(9,2),

@FECHA AS DATETIME,

@HORA AS DATETIME

AS

INSERT INTO DETALLE_INVENTARIO

(NUMEROCAB,TIPO,SUCURSAL,CAJA,NUMEROCAJA,CODIGOPRODUC

TO,CANTIDAD,

PRECIO,COSTO,TOTALP,TOTALC,IVA,FECHA,HORA)

161

VALUES

(@NUMEROCAB,@TIPO,@SUCURSAL,@CAJA,@NUMEROCAJA,

@CODIGOPRODUCTO,@CANTIDAD,

@PRECIO,@COSTO,@TOTALP,@TOTALC,@IVA,@FECHA,@HOR

A)

GO

2.3.88. inv_mod_ciudad

//Permite modificar un registro de la tabla ciudad

2/26/2007 6:29:04 PM

CREATE PROCEDURE INV_MOD_CIUDAD

@CODCIUDAD AS INT,

@DESCRIP AS VARCHAR(500),

@ESTADO AS VARCHAR(50)

AS

BEGIN

UPDATE CIUDAD SET DESCRIPCION=@DESCRIP,

ESTADO=@ESTADO

WHERE CODCIUDAD=@CODCIUDAD

END

GO

162

2.3.89. rep_bronceados

//Permite imprimir un reporte de los bronceados creados

6/18/2007 9:06:04 PM

CREATE PROCEDURE REP_BRONCEADOS

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10)

AS

SELECT pe.numerocaja, pe.fecha, pe.cliente, (ltrim(cl.perapellido)+'

'+ltrim(cl.pernombre)) as apellido,

(ltrim(pe.horainicial)+'-'+ltrim(pe.horafinal)) as horas, pe.tipomembresia

FROM bronceados as pe,persona as cl

WHERE pe.cliente=cl.cedula

AND pe.fecha >=convert(datetime,@FECHAINI)

AND pe.fecha <=convert(datetime,@FECHAFIN)

GO

2.3.90. rep_locker

//Permite imprimir un reporte de los locker creados

6/18/2007 9:07:56 PM

CREATE PROCEDURE REP_LOCKER

@FECHAINI AS VARCHAR(10),

163

@FECHAFIN AS VARCHAR(10)

AS

SELECT pe.numerocaja, pe.fecha, pe.cliente, (ltrim(cl.perapellido)+'

'+ltrim(cl.pernombre)) as apellido,

pe.tipomembresia

FROM locker as pe,persona as cl

WHERE pe.cliente=cl.cedula

AND pe.fecha >=convert(datetime,@FECHAINI)

AND pe.fecha <=convert(datetime,@FECHAFIN)

GO

2.3.91. rep_masajes

//Permite imprimir un reporte de los masajes creados

6/18/2007 9:02:46 PM

CREATE PROCEDURE REP_MASAJES

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10)

AS

SELECT pe.numerocaja, pe.fecha, pe.cliente, (ltrim(cl.perapellido)+'

'+ltrim(cl.pernombre)) as apellido,

164

pe.masajista, (ltrim(pe.horainicial)+'-'+ltrim(pe.horafinal)) as horas,

pe.tipomembresia

FROM masajes as pe,persona as cl

WHERE pe.cliente=cl.cedula

AND pe.fecha >=convert(datetime,@FECHAINI)

AND pe.fecha <=convert(datetime,@FECHAFIN)

GO

2.3.92. rep_parqueo

//Permite imprimir un reporte de los parqueos creados

6/18/2007 9:09:23 PM

CREATE PROCEDURE REP_PARQUEO

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10)

AS

SELECT pe.numerocaja, pe.fecha, pe.cliente, (ltrim(cl.perapellido)+'

'+ltrim(cl.pernombre)) as apellido,

pe.tipomembresia

FROM parqueo as pe,persona as cl

WHERE pe.cliente=cl.cedula

AND pe.fecha >=convert(datetime,@FECHAINI)

AND pe.fecha <=convert(datetime,@FECHAFIN)

GO

165

2.3.93. rep_personaltrainer

//Permite imprimir un reporte de los personal trainer creados

6/18/2007 8:47:53 PM

CREATE PROCEDURE REP_PERSONALTRAINER

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10)

AS

SELECT pe.numerocaja,pe.fecha,pe.cliente,(ltrim(cl.perapellido)+'

'+ltrim(cl.pernombre)) as apellido,pe.personal,(ltrim(pe.horainicial)+'-

'+ltrim(pe.horafinal)) as horas,pe.tipomembresia,pe.estado

FROM persona_trainer as pe,persona as cl

WHERE pe.cliente=cl.cedula

AND pe.fecha >= convert(datetime,@FECHAINI)

AND pe.fecha <= convert(datetime,@FECHAFIN)

GO

2.3.94. rep_pilates

//Permite imprimir un reporte de los pilates creados

6/18/2007 8:59:51 PM

166

CREATE PROCEDURE REP_PILATES

@FECHAINI AS VARCHAR(10),

@FECHAFIN AS VARCHAR(10)

AS

SELECT pe.numerocaja, pe.fecha, pe.cliente, (ltrim(cl.perapellido)+'

'+ltrim(cl.pernombre)) as apellido,

pe.pilates, (ltrim(pe.horainicial)+'-'+ltrim(pe.horafinal)) as horas,

pe.tipomembresia, pe.estado

FROM pilates as pe,persona as cl

WHERE pe.cliente=cl.cedula

AND pe.fecha >=convert(datetime,@FECHAINI)

AND pe.fecha <=convert(datetime,@FECHAFIN)

GO

2.3.95. seg_borra_spread

//Permite eliminar los detalles de la tabla horarios

5/10/2007 2:59:07 PM

CREATE PROCEDURE SEG_BORRA_SPREAD

@TIPO AS VARCHAR (3)

AS

DELETE HORARIOS WHERE TIPO=@TIPO

GO

167

2.3.96. seg_busca_cab

//Permite buscar el último número de la tabla cabecera factura

5/11/2007 7:56:02 PM

CREATE PROCEDURE SEG_BUSCA_CAB

@CODIGO1 AS VARCHAR(15),

@CODIGO2 AS NUMERIC,

@CODIGO3 AS NUMERIC,

@CODIGO4 AS NUMERIC

AS

SELECT NUMERO FROM CABECERA_FACTURA WHERE TIPO =

@CODIGO1 AND SUCURSAL = @CODIGO2 AND CAJA = @CODIGO3

AND NUMEROCAJA = @CODIGO4

GO

2.3.97. seg_busca_cab_combo

//Permite buscar el último número de la tabla cabecera combo

6/25/2007 8:41:32 PM

CREATE PROCEDURE SEG_BUSCA_CAB_COMBO

@CODCOMBO AS NUMERIC

AS

168

SELECT * FROM COMBO_CABECERA

WHERE CODCOMBO = @CODCOMBO

GO

2.3.98. seg_busca_cab_platos

//Permite buscar un registro de la tabla cabecera platos

7/1/2007 8:29:21 PM

CREATE PROCEDURE SEG_BUSCA_CAB_PLATOS

@CODPLATOS AS NUMERIC

AS

SELECT * FROM PLATOS_CABECERA

WHERE CODPLATO = @CODPLATOS

GO

2.3.99. seg_busca_datos_bronceados

//Permite buscar un registro de la tabla bronceados

5/28/2007 11:57:42 AM

CREATE PROCEDURE SEG_BUSCA_DATOS_BRONCEADOS

@NUMEROCAJA AS INT

AS

169

BEGIN

SELECT *

FROM BRONCEADOS

WHERE NUMEROCAJA=@NUMEROCAJA

END

GO

2.3.100. seg_busca_datos_locker

//Permite buscar un registro de la tabla locker

6/17/2007 10:44:59 AM

CREATE PROCEDURE SEG_BUSCA_DATOS_LOCKER

@NUMEROCAJA AS INT

AS

BEGIN

SELECT *

FROM LOCKER

WHERE NUMEROCAJA=@NUMEROCAJA

END

GO

170

2.3.101. seg_busca_datos_masajes

//Permite buscar un registro de la tabla masajes

5/28/2007 11:43:25 AM

CREATE PROCEDURE SEG_BUSCA_DATOS_MASAJES

@NUMEROCAJA AS INT

AS

BEGIN

SELECT *

FROM MASAJES

WHERE NUMEROCAJA=@NUMEROCAJA

END

GO

2.3.102. seg_busca_datos_parqueo

//Permite buscar un registro de la tabla parqueo

6/17/2007 10:00:01 AM

CREATE PROCEDURE SEG_BUSCA_DATOS_PARQUEO

@NUMEROCAJA AS INT

AS

171

BEGIN

SELECT *

FROM PARQUEO

WHERE NUMEROCAJA=@NUMEROCAJA

END

GO

2.3.103. seg_busca_datos_personal

//Permite buscar un registro de la tabla personal trainer

5/28/2007 11:42:49 AM

CREATE PROCEDURE SEG_BUSCA_DATOS_PERSONAL

@NUMEROCAJA AS INT

AS

BEGIN

SELECT *

FROM PERSONA_TRAINER

WHERE NUMEROCAJA=@NUMEROCAJA

END

GO

2.3.104. seg_busca_datos_pilates

//Permite buscar un registro de la tabla pilates

5/28/2007 11:43:07 AM

172

CREATE PROCEDURE SEG_BUSCA_DATOS_PILATES

@NUMEROCAJA AS INT

AS

BEGIN

SELECT *

FROM PILATES

WHERE NUMEROCAJA=@NUMEROCAJA

END

GO

2.3.105. seg_busca_det_combo

//Permite buscar un registro de la tabla detalle combo

6/26/2007 11:21:28 PM

CREATE PROCEDURE SEG_BUSCA_DET_COMBO

@CODCOMBO AS NUMERIC

AS

SELECT

DE.NUMERO,DE.CODCOMBO,PR.NOMBRE,DE.CODPRODSERV,DE.EST

ADO,DE.CANTIDAD,DE.COSTO,DE.FECHA_CREACION,DE.FECHA_MOD,

DE.TOTAL,DE.PRECIO FROM COMBO_DETALLE AS

DE,PRODUCTO_SERV AS PR

173

WHERE DE.CODPRODSERV=PR.CODPRODSERV

AND DE.CODCOMBO=@CODCOMBO

GO

2.3.106. seg_busca_det_platos

//Permite buscar un registro de la tabla detalle platos

7/1/2007 8:27:55 PM

CREATE PROCEDURE SEG_BUSCA_DET_PLATOS

@CODPLATOS AS NUMERIC

AS

SELECT

DE.NUMERO,DE.CODPLATO,PR.NOMBRE,DE.CODPRODSERV,DE.ESTA

DO,DE.CANTIDAD,DE.COSTO,DE.FECHA_CREACION,DE.FECHA_MOD,D

E.TOTAL,DE.PRECIO,DE.MEDIDA

FROM PLATOS_DETALLE AS DE,PRODUCTO_SERV AS PR

WHERE DE.CODPRODSERV=PR.CODPRODSERV

AND DE.CODPLATO=@CODPLATOS

GO

2.3.107. seg_busca_especif

//Permite buscar de manera general en cualquier tabla de la base GYM

11/15/2006 6:23:35 AM

174

CREATE PROCEDURE SEG_BUSCA_ESPECIF

@CODIGO AS VARCHAR(15),

@OPCION AS INT

AS

IF @OPCION =1

BEGIN

SELECT COALESCE(PERAPELLIDO, '') + ' ' + COALESCE(

PERNOMBRE, '') AS NOMBRE FROM PERSONA WHERE

CEDULA=@CODIGO

END

IF @OPCION = 2

BEGIN

SELECT CODCEDULA FROM USUARIO WHERE USUUSER=

@CODIGO

END

IF @OPCION = 3

BEGIN

SELECT COALESCE(PERAPELLIDO, '') AS APELLIDOS,

COALESCE( PERNOMBRE, '') AS NOMBRE,

USUUSER, USUPASSWORD, USUESTADO AS ESTADO,

USUFECCREAC AS FECHA

FROM PERSONA, USUARIO

WHERE CEDULA=@CODIGO AND CEDULA = CODCEDULA

END

IF @OPCION = 4

BEGIN

175

SELECT * FROM CIERRE_ARQUEO

WHERE CODCIERRE=@CODIGO

END

IF @OPCION = 5

BEGIN

SELECT * FROM VIS_CONS_CLIENTES

WHERE CEDULA = @CODIGO

END

IF @OPCION = 6

BEGIN

SELECT * FROM TARJETAS_CREDITO

WHERE CODBANCO = @CODIGO

END

IF @OPCION = 7

BEGIN

SELECT * FROM CABECERA_FACT

WHERE Cedcli = @CODIGO

END

IF @OPCION = 8

BEGIN

SELECT * FROM USUARIO

WHERE CODCEDULA = @CODIGO

END

IF @OPCION = 9

BEGIN

SELECT * FROM persona

176

WHERE CODPERS=@CODIGO

END

IF @OPCION = 10

BEGIN

SELECT * FROM PRODUCTO_SERV WHERE CODPADRE =

@CODIGO

END

IF @OPCION = 11

BEGIN

SELECT * FROM PERSONA_TRAINER WHERE NUMERO =

@CODIGO

END

IF @OPCION = 12

BEGIN

SELECT CODPERS, CODIGOSECUEN, CEDULA, CODTIPOPER,

COALESCE (PERAPELLIDO, ' ') + ' ' + COALESCE (PERNOMBRE, ' ') AS

NOMBRE,

PERDIRECCION, PERTELEFONO, TIPO

FROM PERSONA

WHERE (CODTIPOPER = 1) AND CEDULA=@CODIGO

END

IF @OPCION = 13

BEGIN

SELECT CODPERS, CODIGOSECUEN, CEDULA, CODTIPOPER,

COALESCE (PERAPELLIDO, ' ') + ' ' + COALESCE (PERNOMBRE, ' ') AS

NOMBRE,

177

PERDIRECCION, PERTELEFONO, TIPO

FROM PERSONA

WHERE (CODTIPOPER = 2) AND CEDULA=@CODIGO

END

IF @OPCION = 14

BEGIN

SELECT COALESCE(PERAPELLIDO, '') + ' ' + COALESCE(

PERNOMBRE, '') AS NOMBRE FROM USUARIO,PERSONA WHERE

USUARIO.CODCEDULA=PERSONA.CEDULA AND

USUARIO.CODCEDULA = @CODIGO

END

IF @OPCION = 15

BEGIN

SELECT * FROM VIS_CONS_PROVEEDORES

WHERE CEDULA = @CODIGO

END

GO

2.3.108. seg_busca_especif1

//Permite buscar de manera general en cualquier tabla de la base GYM

1/7/2007 9:48:26 AM

CREATE PROCEDURE SEG_BUSCA_ESPECIF1

@CODIGO AS VARCHAR(15)

178

AS

SELECT COALESCE(PERAPELLIDO, '') AS APELLIDOS, COALESCE(

PERNOMBRE, '') AS NOMBRE,

USUUSER, USUPASSWORD, USUESTADO AS ESTADO,

USUFECCREAC AS FECHA

FROM PERSONA, USUARIO

WHERE CEDULA=@CODIGO AND CEDULA = CODCEDULA

GO

2.3.109. seg_busca_gen

//Permite buscar de manera general en cualquier tabla de la base GYM

11/16/2007 5:25:50 AM

CREATE PROCEDURE SEG_BUSCA_GEN

@OPCION AS INT

AS

IF @OPCION = 1

BEGIN

SELECT * FROM MODULO WHERE ESTADO='A'

END

IF @OPCION = 2

BEGIN

SELECT * FROM SUCURSAL

END

179

IF @OPCION = 3

BEGIN

SELECT * FROM CIUDAD

END

IF @OPCION = 4

BEGIN

SELECT * FROM TARJETAS_CREDITO

END

IF @OPCION = 5

BEGIN

SELECT * FROM TIPO_PAGO

END

IF @OPCION = 6

BEGIN

SELECT * FROM ZONA

END

IF @OPCION = 7

BEGIN

SELECT * FROM CIERRE_ARQUEO

END

IF @OPCION = 8

BEGIN

SELECT * FROM PARAMETROS

END

180

IF @OPCION = 9

BEGIN

SELECT * FROM PERSONA

END

IF @OPCION = 10

BEGIN

SELECT * FROM TIPO_BANCO

END

IF @OPCION = 11

BEGIN

SELECT * FROM CAJA

END

IF @OPCION = 12

BEGIN

SELECT * FROM producto_serv where protipo='P'

END

IF @OPCION = 13

BEGIN

SELECT * FROM producto_serv where protipo='CC'

END

IF @OPCION = 14

BEGIN

SELECT * FROM PERSONA where codtipoper=4

END

181

IF @OPCION = 15

BEGIN

SELECT * FROM TIPO_PERSONA

END

IF @OPCION = 16

BEGIN

SELECT * FROM CABECERA_FACT

END

IF @OPCION = 17

BEGIN

SELECT * FROM TIPO_PROVEEDOR

END

IF @OPCION = 18

BEGIN

SELECT * FROM VIS_INV_PADPROD

END

IF @OPCION = 19

BEGIN

SELECT * FROM PRODUCTO_SERV WHERE NOMBRE LIKE

"MEMBRESIA"

END

IF @OPCION = 20

BEGIN

SELECT * FROM PERSONA ORDER BY PERAPELLIDO

END

IF @OPCION = 21

BEGIN

182

SELECT * FROM producto_serv order by nombre

END

IF @OPCION = 22

BEGIN

SELECT * FROM CAJA

END

IF @OPCION = 23

BEGIN

SELECT * FROM horarios

END

IF @OPCION = 24

BEGIN

SELECT TIPO,NOMBRE FROM HORARIOS GROUP BY

TIPO,NOMBRE

END

IF @OPCION = 26

BEGIN

SELECT * FROM PERSONA where codtipoper=2

END

GO

2.3.110. seg_busca_horarios

//Permite buscar un registro en la tabla horarios

5/9/2007 5:08:41 PM

CREATE PROCEDURE SEG_BUSCA_HORARIOS

@TIPO as VARCHAR(3)

AS

183

SELECT * FROM HORARIOS

WHERE TIPO= @TIPO

GO

2.3.111. seg_busca_mem

//Permite buscar el tipo de membresía de un cliente

5/11/2007 3:03:00 PM

CREATE PROCEDURE SEG_BUSCA_MEM

@CEDULA AS VARCHAR(10)

AS

BEGIN

SELECT TIPO FROM PERSONA WHERE CEDULA= @CEDULA

END

GO

2.3.112. seg_busca_numero

//Permite buscar el número de las tablas personal trainer, pilates, masaje,

bronceados y parqueos

5/14/2007 11:24:02 AM

CREATE PROCEDURE SEG_BUSCA_NUMERO

@numeroCAJA as int,

@OPCION AS int

184

AS

IF @OPCION = 1

BEGIN

SELECT NUMEROCAJA FROM PERSONA_TRAINER WHERE

NUMEROCAJA=@numeroCAJA

END

IF @OPCION = 2

BEGIN

SELECT NUMEROCAJA FROM PILATES WHERE

NUMEROCAJA=@numeroCAJA

END

IF @OPCION = 3

BEGIN

SELECT NUMEROCAJA FROM MASAJES WHERE

NUMEROCAJA=@numeroCAJA

END

IF @OPCION = 4

BEGIN

SELECT numeroCAJA FROM BRONCEADOS WHERE

NUMEROCAJA=@numeroCAJA

END

IF @OPCION = 5

BEGIN

SELECT numeroCAJA FROM PARQUEO WHERE

NUMEROCAJA=@numeroCAJA

END

IF @OPCION = 6

BEGIN

SELECT numeroCAJA FROM LOCKER WHERE

NUMEROCAJA=@numeroCAJA

185

END

GO

2.3.113. Seg_Busca_Permisos

//Permite buscar los permisos de los usuarios

11/15/2007 11:49:07 PM

CREATE PROCEDURE Seg_Busca_Permisos

@cedula as VARCHAR(15)

AS

SELECT OPCFORMULARIO FROM PERMISO_POR_USUARIO,

OPCIONES_POR_MODULO

WHERE CODCEDULAUSU= @CEDULA and ESTADO='A' AND

CODOPCION=CODOPC

GO

2.3.114. seg_busca_sesion

//Permite buscar el horario o sesión del personal trainer, masajes,

bronceados

5/11/2007 11:36:26 AM

CREATE PROCEDURE SEG_BUSCA_SESION

@TIPO AS VARCHAR(3)

AS

186

IF @TIPO='PTR'

BEGIN

select * from horarios where tipo ='PTR'

END

IF @TIPO='MAS'

BEGIN

select * from horarios where tipo ='MAS'

END

IF @TIPO='PIL'

BEGIN

select * from horarios where tipo ='PIL'

END

IF @TIPO='LOC'

BEGIN

select * from horarios where tipo ='LOC'

END

IF @TIPO='BRO'

BEGIN

select * from horarios where tipo ='BRO'

END

GO

2.3.115. seg_busca_sucurcaja

//Permite buscar la sucursal y la caja

6/22/2007 11:25:36 PM

187

CREATE PROCEDURE SEG_BUSCA_SUCURCAJA

@CODSUCUR AS INT,

@OPCION AS INT

AS

IF @OPCION = 1

BEGIN

SELECT * FROM SUCURSAL WHERE CODSUCUR =

@CODSUCUR

END

IF @OPCION = 1

BEGIN

SELECT * FROM CAJA WHERE CODCAJA = @CODSUCUR

END

GO

2.3.116. seg_busca_sucursal

//Permite buscar la sucursal en la tabla sucursal

5/21/2007 4:06:25 PM

CREATE PROCEDURE SEG_BUSCA_SUCURSAL

@CODSUCUR AS INT

188

AS

SELECT * FROM SUCURSAL WHERE CODSUCUR =

@CODSUCUR

GO

2.3.117. SEG_BUSCA_TOTALES

//Permite buscar los pagos para comprobar los totales de las facturas

5/21/2007 4:06:52 PM

CREATE PROCEDURE SEG_BUSCA_TOTALES

@FECHA AS DATETIME

AS

SELECT * FROM PAGOS_FACTURA WHERE FECHA = @FECHA

GO

2.3.118. seg_busca_usu

//Permite buscar los usuarios en la tabla personas

4/30/2007 11:41:46 PM

CREATE PROCEDURE SEG_BUSCA_USU

@CODPERS AS VARCHAR (10)

AS

189

SELECT * FROM PERSONA WHERE codtipoper=4 and

codpers=@CODPERS

GO

2.3.119. seg_cons_caja

//Permite buscar las cajas activas

5/8/2007 12:50:17 PM

CREATE PROCEDURE SEG_CONS_CAJA

AS

SELECT * FROM CAJA WHERE ESTADO='A'

GO

2.3.120. seg_cons_parametro

//Permite buscar los parámetros generales de la empresa activa

11/10/2006 5:28:05 AM

CREATE PROCEDURE SEG_CONS_PARAMETRO

AS

SELECT * FROM PARAMETROS

GO

190

2.3.121. seg_cons_sucur

//Permite buscar las sucursales que se encuentren activas

11/10/2006 5:07:51 AM

CREATE PROCEDURE SEG_CONS_SUCUR

AS

SELECT * FROM SUCURSAL WHERE ESTADO='A'

GO

2.3.122. seg_consul_bronceados

//Permite buscar los horarios de bronceados para ver si están ocupados o no

5/28/2007 11:58:58 AM

CREATE PROCEDURE SEG_CONSUL_BRONCEADOS

@HORAINICIAL AS VARCHAR(8),

@FECHA AS DATETIME

AS

SELECT COUNT(numero) AS conteo,

horainicial

FROM bronceados

WHERE horainicial = @HORAINICIAL

AND FECHA=@FECHA

GROUP BY horainicial

GO

191

2.3.123. seg_consul_horario

//Permite buscar los horarios

5/10/2007 12:15:05 PM

CREATE PROCEDURE SEG_CONSUL_HORARIO

@TIPO AS VARCHAR (3),

@NOMBRE VARCHAR (50)

AS

SELECT

TIPO,NOMBRE,CODIGO,DESCRIPCION,HORAINICIAL,HORAFINAL FROM

HORARIOS WHERE TIPO= @TIPO AND NOMBRE=@NOMBRE

GO

2.3.124. seg_consul_masajes

//Permtie buscar los horarios de masajes ocupados

5/28/2007 11:32:42 AM

CREATE PROCEDURE SEG_CONSUL_MASAJES

@HORAINICIAL AS VARCHAR(8),

@FECHA AS DATETIME

AS

SELECT COUNT(numero) AS conteo,

horainicial

FROM masajes

WHERE horainicial = @HORAINICIAL

AND FECHA=@FECHA

192

GROUP BY horainicial

GO

2.3.125. seg_consul_personal

//Permtie buscar los horarios de los personal trainer ocupados

5/15/2007 8:02:46 PM

CREATE PROCEDURE SEG_CONSUL_PERSONAL

@HORAINICIAL AS VARCHAR (8),

@PERSONAL VARCHAR (10)

AS

SELECT count(numero) as conteo,

personal,

horainicial

FROM persona_trainer

WHERE horainicial=@HORAINICIAL

AND personal = @PERSONAL

AND estado=1

GROUP BY personal,

horainicial

GO

2.3.126. seg_consul_pilates

//Permtie buscar los horarios de pilates ocupados

5/27/2007 6:47:15 PM

193

CREATE PROCEDURE SEG_CONSUL_PILATES

@HORAINICIAL AS VARCHAR (8),

@PERSONAL VARCHAR (10)

AS

SELECT count(numero) as conteo,

pilates,

horainicial

FROM pilates

WHERE horainicial=@HORAINICIAL

AND pilates = @PERSONAL

AND estado=1

GROUP BY pilates,

horainicial

GO

2.3.127. seg_consul_usuario

//Permtie buscar los usuarios con sus pasword

11/4/2006 2:33:48 PM

CREATE PROCEDURE SEG_CONSUL_USUARIO

@USU AS VARCHAR (10),

@PASSW VARCHAR (10)

AS

SELECT CODUSU, USUUSER, USUPASSWORD FROM USUARIO

WHERE USUUSER= @USU AND USUPASSWORD=@PASSW

GO

194

2.3.128. seg_eli_perxusu

//Permite borrar los permisos a usuarios

1/26/2007 3:33:12 PM

CREATE PROCEDURE SEG_ELI_PERXUSU

@CODCEDULAUSU AS VARCHAR(50)

AS

DELETE FROM PERMISO_POR_USUARIO

WHERE CODCEDULAUSU=@CODCEDULAUSU

GO

2.3.129. seg_ing_caja

//Permite ingresar cajas

5/8/2007 12:40:55 PM

CREATE PROCEDURE SEG_ING_CAJA

@DESCRIP AS VARCHAR(500),

@EST AS VARCHAR(10)

AS

INSERT INTO CAJA (DESCRIPCION, ESTADO)

VALUES (@DESCRIP, @EST)

GO

195

2.3.130. seg_ing_horarios

//Permite ingresar horarios

5/8/2007 4:21:17 PM

CREATE PROCEDURE SEG_ING_HORARIOS

@TIPO AS VARCHAR(3),

@NOMBRE AS VARCHAR(50),

@CODIGO AS VARCHAR(3),

@DESCRIPCION AS VARCHAR(50),

@HORAINICIAL AS VARCHAR(10),

@HORAFINAL AS VARCHAR(10)

AS

INSERT INTO HORARIOS

(TIPO,NOMBRE,CODIGO,DESCRIPCION, HORAINICIAL,HORAFINAL)

VALUES (@TIPO,@NOMBRE,@CODIGO,@DESCRIPCION,

@HORAINICIAL,@HORAFINAL)

GO

2.3.131. seg_ing_parametro

//Permite ingresar parámetros (detalle de la empresa)

11/9/2006 2:50:21 AM

CREATE PROCEDURE SEG_ING_PARAMETRO

@RUC AS VARCHAR(10),

@EMPRESA AS VARCHAR(50),

196

@DIRECCION AS VARCHAR(150),

@TELEFONO AS VARCHAR(10),

@SUCURSAL AS INT,

@CAJA AS INT,

@IVA AS DECIMAL(18,4),

@DESCTO AS DECIMAL(18,4),

@RUTA AS VARCHAR(50)

AS

INSERT INTO PARAMETROS(NOMBREMPRESA, DIRECCION,

PORCENTAJEIVA,

TELEFONOEMP,RUC,PORCENTDESCTO,SUCURSAL,CAJA,RUTA)

VALUES (@EMPRESA ,@DIRECCION ,@IVA, @TELEFONO

,@RUC,@DESCTO,@SUCURSAL,@CAJA,@RUTA)

GO

2.3.132. seg_ing_perxusu

//Permite crear permisos a los usuarios

1/8/2007 11:46:15 PM

CREATE PROCEDURE SEG_ING_PERXUSU

--@CODPERXUSU AS VARCHAR(10),

@CODCEDULAUSU AS VARCHAR(50),

@CODOPC AS VARCHAR(50),

@ESTADO AS VARCHAR(10)

AS

197

INSERT INTO PERMISO_POR_USUARIO(CODCEDULAUSU, CODOPC,

ESTADO)

VALUES (@CODCEDULAUSU ,@CODOPC, @ESTADO)

GO

2.3.133. seg_ing_secuencia

//Permite ingresar la secuencia de la persona creada

5/2/2007 11:52:37 AM

CREATE PROCEDURE SEG_ING_SECUENCIA

@SEC AS VARCHAR(13)

AS

UPDATE PARAMETROS SET SECUENCIA= @SEC

GO

2.3.134. seg_ing_sucursal

//Permite crear sucursales

2/2/2007 5:46:40 AM

CREATE PROCEDURE SEG_ING_SUCURSAL

@DESCRIP AS VARCHAR(500),

@EST AS VARCHAR(10)

AS

INSERT INTO SUCURSAL (DESCRIPCION, ESTADO)

VALUES (@DESCRIP, @EST)

198

GO

2.3.135. seg_ing_tarjetas

//Permite crear tarjetas de crédito

2/26/2007 7:06:55 PM

CREATE PROCEDURE SEG_ING_TARJETAS

@DESCRIP AS VARCHAR(500),

@ABREV AS VARCHAR(500),

@ESTADO AS VARCHAR(50),

@CODBANCO AS INT

AS

INSERT INTO TARJETAS_CREDITO (DESCRIPCION,

ABREVIATURA, ESTADO, CODBANCO)

VALUES (@DESCRIP,@ABREV, @ESTADO, @CODBANCO)

GO

2.3.136. seg_ing_usuario

//Permite ingresar el usuario en la tabla persona cuando es la primera vez

que se lo crea

11/16/2006 7:46:24 AM

CREATE PROCEDURE SEG_ING_USUARIO

@CEDULA AS VARCHAR(13),

199

@PERNOMBRE AS VARCHAR(50),

@PERAPELLIDO AS VARCHAR(50),

@USUPASSWORD AS VARCHAR(50),

@USUUSER AS VARCHAR(40),

@USUFECCREAC AS DATETIME,

@SEC AS VARCHAR(13)

AS

INSERT INTO PERSONA (CEDULA, CODTIPOPER, PERNOMBRE,

PERAPELLIDO,

PERDIRECCION,PERTELEFONO,PERMAIL,PERFAX,CODCIUDAD,CODZ

ONA,FECHAINGRESO,FECHASALIDA,PERCOMENTARIO,FECHAMODIF,

CODEMPL,PERDESCTO,FECHANAC,PERESTDCIVIL,PERSEXO,PEREST

ADO,PEREMPRESA,PERRUC,TIPO,CODIGOSECUEN)

VALUES (@CEDULA, 4, @PERNOMBRE, @PERAPELLIDO,

'','N/A','N/A','N/A',1,1,@USUFECCREAC,@USUFECCREAC,'N/A',@USUFE

CCREAC,0,0,@USUFECCREAC,'S','M','1','N/A','N/A',1,@SEC)

INSERT INTO USUARIO (CODCEDULA, USUPASSWORD, USUUSER,

USUFECCREAC, USUESTADO)

VALUES (@CEDULA, @USUPASSWORD, @USUUSER,

@USUFECCREAC, 'A')

GO

2.3.137. seg_ing_zona

//Permite crear registros en la tabla zona

2/19/2007 4:03:47 PM

CREATE PROCEDURE SEG_ING_ZONA

200

@DESCRIP AS VARCHAR(500),

@EST AS VARCHAR(10)

AS

INSERT INTO ZONA(DESCRIPCION, ESTADO)

VALUES (@DESCRIP, @EST)

GO

2.3.138. seg_mod_banco

//Permite modificar los bancos creados

3/9/2007 11:21:14 PM

CREATE PROCEDURE SEG_MOD_BANCO

@CODBANCO AS INT,

@DESCRIP AS VARCHAR(500),

@ESTADO AS VARCHAR(50)

AS

BEGIN

UPDATE TIPO_BANCO SET DESCRIPCION=@DESCRIP,

ESTADO=@ESTADO

WHERE CODTIPOBANKO=@CODBANCO

END

GO

2.3.139. seg_mod_caja

//Permite modificar las cajas creadas

5/8/2007 12:39:48 PM

201

CREATE PROCEDURE SEG_MOD_CAJA

@CODCAJA AS INT,

@DESCRIP AS VARCHAR(500),

@EST AS VARCHAR(2)

AS

BEGIN

UPDATE CAJA SET DESCRIPCION=@DESCRIP, ESTADO=@EST

WHERE CODCAJA=@CODCAJA

END

GO

2.3.140. seg_mod_horarios

//Permite modificar los horarios creados

5/8/2007 4:12:56 PM

CREATE PROCEDURE SEG_MOD_HORARIOS

@TIPO AS VARCHAR(3),

@NOMBRE AS VARCHAR(50),

@CODIGO AS VARCHAR(3),

@DESCRIPCION AS VARCHAR(50),

@HORAINICIAL AS VARCHAR(10),

@HORAFINAL AS VARCHAR(10)

AS

BEGIN

UPDATE HORARIOS SET NOMBRE=@NOMBRE,

DESCRIPCION=@DESCRIPCION, HORAINICIAL=@HORAINICIAL,

HORAFINAL=@HORAFINAL

202

WHERE TIPO=@TIPO AND CODIGO=@CODIGO

END

GO

2.3.141. seg_mod_parametro

//Permite modificar los parámetros de la empresa

11/10/2006 6:35:02 AM

CREATE PROCEDURE SEG_MOD_PARAMETRO

@RUC AS VARCHAR(13),

@EMPRESA AS VARCHAR(50),

@DIRECCION AS VARCHAR(150),

@TELEFONO AS VARCHAR(10),

@SUCURSAL AS INT,

@CAJA AS INT,

@IVA AS DECIMAL(18,4),

@DESCTO AS DECIMAL(18,4),

@RUTA AS VARCHAR(50)

AS

UPDATE PARAMETROS SET RUC=@RUC , NOMBREMPRESA=

@EMPRESA ,DIRECCION= @DIRECCION ,PORCENTAJEIVA= @IVA,

TELEFONOEMP=@TELEFONO ,

PORCENTDESCTO=

@DESCTO,SUCURSAL= @SUCURSAL,CAJA=@CAJA,RUTA=@RUTA

GO

203

2.3.142. seg_mod_sucursal

//Permite modificar la sucursal creada

2/2/2007 5:35:08 AM

CREATE PROCEDURE SEG_MOD_SUCURSAL

@CODSUC AS INT,

@DESCRIP AS VARCHAR(500),

@EST AS VARCHAR(2)

AS

BEGIN

UPDATE SUCURSAL SET DESCRIPCION=@DESCRIP,

ESTADO=@EST

WHERE CODSUCUR=@CODSUC

END

GO

2.3.143. seg_mod_tarjeta

//Permite modificar las tarjetas de crédito ingresadas

2/26/2007 7:04:53 PM

CREATE PROCEDURE SEG_MOD_TARJETA

@CODTARJ AS INT,

@DESCRIP AS VARCHAR(500),

@ABREV AS VARCHAR(500),

204

@ESTADO AS VARCHAR(50),

@CODBANCO AS VARCHAR(50)

AS

BEGIN

UPDATE TARJETAS_CREDITO SET DESCRIPCION=@DESCRIP,

ABREVIATURA=@ABREV, ESTADO=@ESTADO

WHERE CODBANCO=@CODBANCO AND

CODTARJCRED=@CODTARJ

END

GO

2.3.144. seg_mod_usuario

//Permite modificar los usuarios creados

1/8/2007 10:12:45 PM

CREATE PROCEDURE SEG_MOD_USUARIO

@CEDULA AS VARCHAR(13),

@PERNOMBRE AS VARCHAR(50),

@PERAPELLIDO AS VARCHAR(50),

@USUPASSWORD AS VARCHAR(50),

@USUUSER AS VARCHAR(40),

@CODESTADO AS VARCHAR(2)

AS

UPDATE PERSONA SET PERNOMBRE =@PERNOMBRE,

PERAPELLIDO=@PERAPELLIDO

WHERE CEDULA =@CEDULA

205

UPDATE USUARIO SET USUPASSWORD=@USUPASSWORD, USUUSER

=@USUUSER, USUESTADO=@CODESTADO

WHERE CODCEDULA =@CEDULA

GO

2.3.145. seg_mod_zona

//Permite modificar las zonas creadas

2/19/2007 4:04:29 PM

CREATE PROCEDURE SEG_MOD_ZONA

@CODZONA AS INT,

@DESCRIP AS VARCHAR(50),

@EST AS VARCHAR(2)

AS

BEGIN

UPDATE ZONA SET DESCRIPCION=@DESCRIP, ESTADO=@EST

WHERE CODZONA=@CODZONA

END

GO

2.3.146. seg_permisos

//Permite consultar los permisos dados a usuarios

1/8/2007 9:23:50 PM

CREATE PROCEDURE SEG_PERMISOS

206

@MODULO AS INT

AS

BEGIN

SELECT B.CODMODULO, A.DESCRIPCION , A.OPCFORMULARIO,

OPCOBSERVACION, OPCFECHACREAC, ESTADO, A.CODOPCION

FROM OPCIONES_POR_MODULO AS A, MODULO AS B

WHERE A.CODMODULO=B.CODMODULO AND

A.CODMODULO=@MODULO

END

GO

2.3.147. seg_permxusu

//Permite consultar el número de permisos dados a usuarios

1/6/2007 11:05:23 AM

CREATE PROCEDURE SEG_PERMXUSU

@CODIGO AS VARCHAR(15),

@MODULO AS INT

AS

BEGIN

DECLARE @CTA AS INT

BEGIN

SELECT @CTA=COUNT( a.codopc) FROM PERMISO_POR_USUARIO as

a, OPCIONES_POR_MODULO as b

WHERE CODCEDULAUSU=@CODIGO AND

CODOPCION=CODOPC and codmodulo=@MODULO

207

END

BEGIN

SELECT a.codopc, b.descripcion, b.opcobservacion, b.opcformulario,

b.opcfechacreac, a.ESTADO, @CTA AS CTA FROM

PERMISO_POR_USUARIO as a, OPCIONES_POR_MODULO as b

WHERE CODCEDULAUSU=@CODIGO AND

CODOPCION=CODOPC and codmodulo=@MODULO

END

END

GO

2.3.148. seg_upd_perxusu

//Permite actualizar los permisos a usuarios

1/9/2007 1:26:21 AM

CREATE PROCEDURE SEG_UPD_PERXUSU

@CODCEDULAUSU AS VARCHAR(50),

@CODOPC AS VARCHAR(150),

@ESTADO AS VARCHAR(10)

AS

UPDATE PERMISO_POR_USUARIO SET ESTADO=@ESTADO

WHERE CODCEDULAUSU=@CODCEDULAUSU AND

CODOPC=@CODOPC

GO

208

2.3.149. sicag_busqueda_espe

//Permite la busqueda al detalle de la tabla busqueda general

11/15/2006 4:08:03 AM

CREATE Procedure SICAG_BUSQUEDA_ESPE

@TABLA nvarchar(100),

@CAMPO nvarchar(100)

AS

Begin

Select gen_tipo From SICAG_BUSQUEDAS Where GEN_TABLA =

@TABLA and gen_columna = @CAMPO

End

GO

2.3.150. sicag_busqueda_gen

//Permite la busqueda general

11/12/2006 6:52:49 PM

CREATE PROCEDURE SICAG_BUSQUEDA_GEN

@TABLA nvarchar(100)

AS

Begin

select * from SICAG_BUSQUEDAS where GEN_TABLA = @TABLA

end

209

GO

2.3.151. verifica_existencia

//Permite consultar la existencia de un producto

7/15/2007 9:42:14 AM

CREATE PROCEDURE VERIFICA_EXISTENCIA

@CODIGO AS int

AS

select ex.codigo,protipo,

sum(CASE tipo

WHEN 'NV'

THEN (CAST ((cantidad*-1) AS numeric(10)))

WHEN 'SA'

THEN (CAST ((cantidad*-1) AS numeric(10)))

WHEN 'CO'

THEN (CAST ((cantidad) AS numeric(10)))

WHEN 'DE'

THEN (CAST ((cantidad) AS numeric(10)))

ELSE

(CAST (0 AS numeric(10)))

END) AS cantidad

from existencias as ex,producto_serv as pr

where ex.codigo=pr.codprodserv and ex.codigo= @CODIGO

group by ex.codigo,protipo

210

GO

2.4 Indice (Campos primarios)

* Tabla Asistencia

- Clave primaria: número

- Validación: numeric

* Tabla Bronceados

- Clave primaria: número

- Validación: numeric

* Tabla Cabecera_Factura

- Clave primaria: número

- Validación: int

* Tabla Cabecera_Inventario

- Clave primaria: número

- Validación: numeric

* Tabla Caja

- Clave primaria: codcaja

- Validación: int

211

* Tabla Combo_Cabecera

- Clave primaria: número

- Validación: int

* Tabla Combo_Detalle

- Clave primaria: numero

- Validación: int

* Tabla Detalle_Factura

- Clave primaria: número

- Validación: numeric

* Tabla Detalle_Inventario

- Clave primaria: número

- Validación: numeric

* Tabla Existencias

- Clave primaria: número

- Validación: numeric

212

* Tabla Horarios

- Clave primaria: tipo

- Validación: char

* Tabla Locker

- Clave primaria: numero

- Validación: numeric

* Tabla Masajes

- Clave primaria: numero

- Validación: numeric

* Tabla Módulo

- Clave primaria: codmodulo

- Validación: int

* Tabla Opciones_por_Modul

- Clave primaria: codopcion

- Validación: int

* Tabla Pagos_Factura

- Clave primaria: numero

213

- Validación: numeric

* Tabla Parámetros

- Clave primaria: Nombrempresa

- Validación: nvarchar

* Tabla Parqueo

- Clave primaria: numero

- Validación: numeric

* Tabla Permiso_por_usuario

- Clave primaria: codperxusu

- Validación: int

* Tabla Persona

- Clave primaria: codpers

- Validación: int

* Tabla Persona_Trainer

- Clave primaria: número

- Validación: numeric

214

* Tabla Pilates

- Clave primaria: número

- Validación: numeric

* Tabla Platos_Cabecera

- Clave primaria: número

- Validación: int

* Tabla Platos_Detalle

- Clave primaria: número

- Validación: int

* Tabla Producto_Serv

- Clave primaria: codprodserv

- Validación: int

* Tabla Proveedor

- Clave primaria: Codigo

- Validación: numeric

* Tabla Secuencias

- Clave primaria: secuencial

215

- Validación: numeric

* Tabla Sicag_Busquedas

- Clave primaria: gen_tabla

- Validación: nvarchar

* Tabla Sucursal

- Clave primaria: codsucur

- Validación: int

* Tabla Tarjetas_Credito

- Clave primaria: codtarjcred

- Validación: int

* Tabla Tipo_Banco

- Clave primaria: codtipobanko

- Validación: int

* Tabla Tipo_Persona

- Clave primaria: codtipopers

- Validación: int

216

* Tabla Usuario

- Clave primaria: codusu

- Validación: int

* Tabla Detalle_Zona

- Clave primaria: numero

- Validación: numeric

2.5. Validación de Campo

2.5.1 Identificación de campos obligatorios

* Tabla Asistencia

- Campos: número

* Tabla Bronceados

- Campos: número, numerocaja

* Tabla Cabecera_Factura

- Campos: numero

* Tabla Cabecera_Inventario

- Campos: número, numerocaja

217

* Tabla Caja

- Campos: codcaja, descripción

* Tabla Combo_Cabecera

- Campo: numero, codcombo, nombre, precio

* Tabla Combo_Detalle

- Campos: numero, codcombo, codprodserv

* Tabla Detalle_Factura

- Campos: numero, numerocab

* Tabla Detalle_Inventario

- Campos: numero, numerocab, numerocaja

* Tabla Existencias

- Campos: numero, numerocab

* Tabla Horarios

- Campos: tipo, nombre

218

* Tabla Locker

- Campos: numero, numerocaja

* Tabla Masajes

- Campos: numero, numerocaja

* Tabla Módulo

- Campos: codmodulo, descripcion

* Tabla Opciones_por_Modul

- Campos: id (codopcion), codmodulo, codopcxmod, descripción

opcformulario, opcobservacion, opcfechacreac, opcestado

codusul, pci

* Tabla Pagos_Factura

- Campos: numero, numerocab

* Tabla Parámetros

- Campos: nombrempresa, dirección, porcentajeiva,

telefonoemp, ruc, porcentdescto

* Tabla Parqueo

219

- Campos: numero, numerocaja

* Tabla Permiso_por_usuario

- Campos: codperxusu, codcedulausu, codopc

* Tabla Persona

- Campos: codpers, cedula, codtipoper, pernombre, perapellido,

perdireccion

* Tabla Persona_Trainer

- Campos: numero, numerocaja

* Tabla Pilates

- Campos: numero, numerocaja

* Tabla Platos_Cabecera

- Campos: numero, codplato, nombre, precio, costo

* Tabla Platos_Detalle

- Campos: numero, codplato, codprodserv,

220

* Tabla Producto_Serv

- Campos: codprodserv, codpadre, protipo, profecing, proiva,

proprecio, proprecio2, descripción, costo

* Tabla Proveedor

- Campos: codigo, cedula, codtipoprov, prorsocial,

* Tabla Secuencias

- Campos: secuencial

* Tabla Sicag_Busquedas

- Campos: gen_longitud

* Tabla Sucursal

- Campos: codsucur, descripcion

* Tabla Tarjetas_Credito

- Campos: codtarjcred

* Tabla Tipo_Banco

- Campos: codtipobanko, descripcion

221

* Tabla Tipo_Persona

- Campos: codtipopers, descripcion

* Tabla Usuario

- Campos: codusu, codcedula, usupassword, usuuser,

usufeccreac, usuestado

* Tabla Detalle_Zona

- Campos: numero

2.6. Código Fuente

* Programa Modulo.vb

Imports System.Data.SqlClient Module Modulo Public cn As New SqlConnection Public cn1 As New SqlConnection Public cmd As New SqlCommand Public dr As SqlDataReader Public dr1 As SqlDataReader Public cmd2 As New SqlCommand 'Variables publicas para todas las formas Public TablaBuscada As String Public Campo1 As String Public Campo2 As String Public Campo3 As String Public S_Codigo As String Public usu, cedula As String Public EXISTE As Boolean Public Cod_Usu As String Public CODUSU, CODSUCU, opcion As Integer

222

Public SUCURSAL As String Public Ruta_Reporte As String End Module

* Programa Assembly.vb

Imports System Imports System.Reflection Imports System.Runtime.InteropServices ' La información general de un ensamblado se controla mediante el siguiente ' conjunto de atributos. Cambie estos atributos para modificar la información ' asociada con un ensamblado. ' Revisar los valores de los atributos del ensamblado <Assembly: AssemblyTitle("")> <Assembly: AssemblyDescription("")> <Assembly: AssemblyCompany("")> <Assembly: AssemblyProduct("")> <Assembly: AssemblyCopyright("")> <Assembly: AssemblyTrademark("")> <Assembly: CLSCompliant(True)> 'El siguiente GUID sirve como identificador de la biblioteca de tipos si este proyecto se expone a COM <Assembly: Guid("0B4155EE-9589-468E-8121-2C37F34B4F0C")> ' La información de versión de un ensamblado consta de los siguientes cuatro valores: ' ' Versión principal ' Versión secundaria ' Versión de compilación ' Revisión ' ' Puede especificar todos los valores o usar los valores predeterminados (número de versión de compilación y de revisión) ' usando el símbolo '*' como se muestra a continuación: <Assembly: AssemblyVersion("1.0.*")>

223

* Clase Verifica_datos.vb

Public Class Verifica_datos Public Function Verificar_Usuario(ByVal usuario As String, ByVal clave As String) As SqlClient.SqlDataReader cmd.CommandText = "SEG_CONSUL_USUARIO" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@usu", usuario) cmd.Parameters.Add("@passw", clave) Try dr = cmd.ExecuteReader() Return dr Catch ex As Exception MsgBox(ex.Message) End Try dr.Close() End Function Public Function verifica_permisos() As Boolean If cn.State = ConnectionState.Closed Then cn.Open() End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", usu) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then cedula = dr("CODCEDULA") verifica_permisos = True Else verifica_permisos = False End If dr.Close()

224

End Function Public Function Verificar_PerxUsuario(ByVal cedula As String) As SqlClient.SqlDataReader Dim oComando As New SqlClient.SqlCommand Dim oDatareader As SqlClient.SqlDataReader oComando.CommandType = CommandType.Text oComando = New SqlClient.SqlCommand("select CODCEDULAUSU from PERMISO_POR_USUARIO where CODCEDULAUSU= CEDULA", cn) oDatareader = oComando.ExecuteReader() Return oDatareader End Function End Class

* Clase Form1.vb

Imports System.Data.SqlClient Public Class Form1 Inherits System.Windows.Forms.Form Private Shared formglo As Form1 Public Shared Property gf() As Form1 Get If formglo Is Nothing OrElse formglo.IsDisposed Then formglo = New Form1 End If Return formglo End Get Set(ByVal Value As Form1) formglo = Value End Set End Property Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize Dim imagen As New Drawing.Bitmap(PictureBox1.Image, Me.Width,

Me.Height) Me.BackgroundImage = imagen End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim ctl As Control Dim ctlMDI As MdiClient

225

For Each ctl In Me.Controls Try ctlMDI = CType(ctl, MdiClient) ctlMDI.BackColor = Me.BackColor Catch exc As InvalidCastException End Try Next Me.gf = Me Me.PictureBox1.Dock = DockStyle.Fill Dim cn As New SqlConnection Dim Codigo As New Verifica_datos cn.ConnectionString = "server=(local); user id=sa; pwd=sasa; database=GYM" Try cn.Open() MsgBox("Bienvenidos a SICAG") If usu <> "ADMIN" Then DESHABILITA_MENU() If Codigo.verifica_permisos = True Then habilita_menu() End If End If Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub habilita_menu() cmd = New SqlClient.SqlCommand("seg_busca_permisos", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CEDULA", cedula) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then EXISTE = True dr.Close() dr = cmd.ExecuteReader() While dr.Read

226

Select Case dr("OPCFORMULARIO") '-se escoge el criterio 'Menu Seguridad 'MANTENIMIENTO Case "Mnu_usuario" Mnu_usuario.Enabled = True Case "Mnu_sucur" Mnu_sucur.Enabled = True Case "Mnu_parametro" Mnu_parametro.Enabled = True Case "Mnu_Caja" Mnu_Caja.Enabled = True 'PROCESOS Case "Mnu_permxusu" Mnu_permxusu.Enabled = True Case "Mnu_Horarios" Mnu_Horarios.Enabled = True 'CONSULTAS Case "Mnu_cons_usu" Mnu_cons_usu.Enabled = True Case "Mnu_cons_permxusu" Mnu_cons_permxusu.Enabled = True Case "Mnu_Rep_Horarios" Mnu_Rep_Horarios.Enabled = True 'Menu Facturacion 'MANTENIMIENTOS Case "Mnu_clientes" Mnu_Clientes.Enabled = True Case "Mnu_tarjCred" Mnu_tarjCred.Enabled = True Case "Mnu_zona" Mnu_zona.Enabled = True 'PROCESOS Case "Mnu_factura" Mnu_factura.Enabled = True Case "Mnu_Devolucion" Mnu_Devolucion.Enabled = True Case "Mnu_proc_lecturaMarcadas" Mnu_proc_lecturaMarcadas.Enabled = True Case "Mnu_creaCombos" Mnu_creaCombos.Enabled = True ' PRECESOS - TICKETS DE SERVICIOS Case "Mnu_PersonalTrainer" Mnu_PersonalTrainer.Enabled = True Case "Mnu_Pilates"

227

Mnu_Pilates.Enabled = True Case "Mnu_Masajes" Mnu_Masajes.Enabled = True Case "Mnu_Bronceados" Mnu_Bronceados.Enabled = True Case "Mnu_Locker" Mnu_Locker.Enabled = True Case "Mnu_Parqueo" Mnu_Parqueo.Enabled = True Case "Mnu_ExportarDbf" Mnu_ExportarDbf.Enabled = True Case "Mnu_EnviarTexto" Mnu_EnviarTexto.Enabled = True Case "Mnu_creaPlatos" Mnu_creaPlatos.Enabled = True 'CONSULTAS 'CONSULTAS REPORTES DE SERVICIO Case "Mnu_Rep_TicketsPorFechas" Mnu_Rep_TicketsPorFechas.Enabled = True Case "Mnu_ReportePersonalTrainer" Mnu_ReportePersonalTrainer.Enabled = True 'CONSULTAS REPORTES DE CLIENTES Case "Mnu_ReporteClientesxSexo" Mnu_ReporteClientesxSexo.Enabled = True Case "Mnu_ReporteClientesxSecuencia" Mnu_ReporteClientesxSecuencia.Enabled = True Case "Mnu_ReportedeClientesxTipo" Mnu_ReportedeClientesxTipo.Enabled = True Case "Mnu_consListaCli" Mnu_consListaCli.Enabled = True Case "Mnu_ReportedeAsistencias" Mnu_ReportedeAsistencias.Enabled = True ' CONSULTAS REPORTES DE VENTAS Case "Mnu_ReporteDiarioVenta" Mnu_ReporteDiarioVenta.Enabled = True Case "Mnu_ReporteCuadreCaja" Mnu_ReporteCuadreCaja.Enabled = True Case "Mnu_ReporteVentasProducto" Mnu_ReporteVentasProducto.Enabled = True Case "Mnu_VentasxBanco" Mnu_VentasxBanco.Enabled = True Case "Mnu_VentasxMeses" Mnu_VentasxMeses.Enabled = True Case "Mnu_VentasxVendedor"

228

Mnu_VentasxVendedor.Enabled = True Case "Mnu_VentasTarjeta" Mnu_VentasTarjeta.Enabled = True Case "Mnu_VentasPorHoras" Mnu_VentasPorHoras.Enabled = True Case "Mnu_ReportePlatos" Mnu_ReportePlatos.Enabled = True Case "Mnu_ReporteCombos" Mnu_ReporteCombos.Enabled = True Case "Mnu_ReportePlatosCostos" Mnu_ReportePlatosCostos.Enabled = True Case "Mnu_ReporteComprasSocios" Mnu_ReporteComprasSocios.Enabled = True Case "Mnu_Ciudades" Mnu_Ciudades.Enabled = True 'MENU INVENTARIO 'MANTENIMIENOS Case "Mnu_prodserv" Mnu_prodserv.Enabled = True 'PROCESOS Case "Mnu_Ingreso" Mnu_Ingreso.Enabled = True Case "Mnu_Egresos" Mnu_Egresos.Enabled = True 'REPORTES Case "Mnu_inv_Existencia" Mnu_inv_Existencia.Enabled = True Case "Mnu_inv_Movimientos" Mnu_inv_Movimientos.Enabled = True Case "Mnu_Rep_Productos" Mnu_Rep_Productos.Enabled = True End Select End While Else EXISTE = False MsgBox("NO TIENE PERMISOS") 'Menu Seguridad 'MANTENIMIENTO Mnu_usuario.Enabled = False Mnu_sucur.Enabled = False Mnu_parametro.Enabled = False Mnu_Caja.Enabled = False 'PROCESOS Mnu_permxusu.Enabled = False

229

Mnu_Horarios.Enabled = False 'CONSULTAS Mnu_cons_usu.Enabled = False Mnu_cons_permxusu.Enabled = False Mnu_Rep_Horarios.Enabled = False 'Menu Facturacion 'MANTENIMIENTOS Mnu_Clientes.Enabled = False Mnu_tarjCred.Enabled = False Mnu_zona.Enabled = False 'PROCESOS Mnu_factura.Enabled = False Mnu_Devolucion.Enabled = False Mnu_proc_lecturaMarcadas.Enabled = False Mnu_creaCombos.Enabled = False ' PRECESOS - TICKETS DE SERVICIOS Mnu_PersonalTrainer.Enabled = False Mnu_Pilates.Enabled = False Mnu_Masajes.Enabled = False Mnu_Bronceados.Enabled = False Mnu_Locker.Enabled = False Mnu_Parqueo.Enabled = False Mnu_ExportarDbf.Enabled = False Mnu_EnviarTexto.Enabled = False Mnu_creaPlatos.Enabled = False 'CONSULTAS 'CONSULTAS REPORTES DE SERVICIO Mnu_Rep_TicketsPorFechas.Enabled = False 'Mnu_Rep_TicketsPorSesion.Enabled = False 'Mnu_Rep_TicketsPorMembresia.Enabled = False 'Mnu_Rep_TicketsPorCliente.Enabled = False Mnu_ReportePersonalTrainer.Enabled = False 'CONSULTAS REPORTES DE CLIENTES Mnu_ReporteClientesxSexo.Enabled = False Mnu_ReporteClientesxSecuencia.Enabled = False Mnu_ReportedeClientesxTipo.Enabled = False Mnu_consListaCli.Enabled = False Mnu_ReportedeAsistencias.Enabled = False ' CONSULTAS REPORTES DE VENTAS Mnu_ReporteDiarioVenta.Enabled = False Mnu_ReporteCuadreCaja.Enabled = False Mnu_ReporteVentasProducto.Enabled = False Mnu_VentasxBanco.Enabled = False Mnu_VentasxMeses.Enabled = False

230

Mnu_VentasxVendedor.Enabled = False Mnu_VentasTarjeta.Enabled = False Mnu_VentasPorHoras.Enabled = False Mnu_ReportePlatos.Enabled = False Mnu_ReporteCombos.Enabled = False Mnu_ReportePlatosCostos.Enabled = False Mnu_ReporteComprasSocios.Enabled = False Mnu_Ciudades.Enabled = False 'MENU INVENTARIO 'MANTENIMIENOS Mnu_prodserv.Enabled = False 'PROCESOS Mnu_Ingreso.Enabled = False Mnu_Egresos.Enabled = False 'REPORTES Mnu_inv_Existencia.Enabled = False Mnu_inv_Movimientos.Enabled = False Mnu_Rep_Productos.Enabled = False End If dr.Close() End Sub Sub DESHABILITA_MENU() 'Menu Seguridad 'MANTENIMIENTO Mnu_usuario.Enabled = False Mnu_sucur.Enabled = False Mnu_parametro.Enabled = False Mnu_Caja.Enabled = False 'PROCESOS Mnu_permxusu.Enabled = False Mnu_Horarios.Enabled = False 'CONSULTAS Mnu_cons_usu.Enabled = False Mnu_cons_permxusu.Enabled = False Mnu_Rep_Horarios.Enabled = False 'Menu Facturacion 'MANTENIMIENTOS Mnu_Clientes.Enabled = False Mnu_tarjCred.Enabled = False Mnu_zona.Enabled = False 'PROCESOS Mnu_factura.Enabled = False Mnu_Devolucion.Enabled = False Mnu_proc_lecturaMarcadas.Enabled = False

231

Mnu_creaCombos.Enabled = False ' PRECESOS - TICKETS DE SERVICIOS Mnu_PersonalTrainer.Enabled = False Mnu_Pilates.Enabled = False Mnu_Masajes.Enabled = False Mnu_Bronceados.Enabled = False Mnu_Locker.Enabled = False Mnu_Parqueo.Enabled = False Mnu_ExportarDbf.Enabled = False Mnu_EnviarTexto.Enabled = False Mnu_creaPlatos.Enabled = False 'CONSULTAS 'CONSULTAS REPORTES DE SERVICIO Mnu_Rep_TicketsPorFechas.Enabled = False 'Mnu_Rep_TicketsPorSesion.Enabled = False 'Mnu_Rep_TicketsPorMembresia.Enabled = False 'Mnu_Rep_TicketsPorCliente.Enabled = False Mnu_ReportePersonalTrainer.Enabled = False 'CONSULTAS REPORTES DE CLIENTES Mnu_ReporteClientesxSexo.Enabled = False Mnu_ReporteClientesxSecuencia.Enabled = False Mnu_ReportedeClientesxTipo.Enabled = False Mnu_consListaCli.Enabled = False Mnu_ReportedeAsistencias.Enabled = False ' CONSULTAS REPORTES DE VENTAS Mnu_ReporteDiarioVenta.Enabled = False Mnu_ReporteCuadreCaja.Enabled = False Mnu_ReporteVentasProducto.Enabled = False Mnu_VentasxBanco.Enabled = False Mnu_VentasxMeses.Enabled = False Mnu_VentasxVendedor.Enabled = False Mnu_VentasTarjeta.Enabled = False Mnu_VentasPorHoras.Enabled = False Mnu_ReportePlatos.Enabled = False Mnu_ReporteCombos.Enabled = False Mnu_ReportePlatosCostos.Enabled = False Mnu_ReporteComprasSocios.Enabled = False Mnu_Ciudades.Enabled = False 'MENU INVENTARIO 'MANTENIMIENOS Mnu_prodserv.Enabled = False 'PROCESOS Mnu_Ingreso.Enabled = False Mnu_Egresos.Enabled = False

232

'REPORTES Mnu_inv_Existencia.Enabled = False Mnu_inv_Movimientos.Enabled = False Mnu_Rep_Productos.Enabled = False End Sub Private Sub Mnu_usuperm_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_mant_seg.Click Dim frm_usu As New Frm_mant_usuario frm_usu.MdiParent = Me frm_usu.Show() End Sub Private Sub Mnu_tarjCred_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_tarjCred.Click Dim Frm_tarjCred As New Frm_mant_tarj_credito Frm_tarjCred.MdiParent = Me Frm_tarjCred.Show() End Sub Private Sub Mnu_factura_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_factura.Click Dim Frm_Factura As New Frm_pro_facturación Frm_Factura.MdiParent = Me Frm_Factura.Show() End Sub Private Sub Frm_cant_venxprod_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 'Dim frm_cant_vendxproduct As New Frm_cons_cant_venxprod 'frm_cant_vendxproduct.Show() End Sub Private Sub Mnu_Salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Salir.Click End End Sub Private Sub Mnu_prodserv_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_prodserv.Click Dim Frm_mant_prodServ As New Frm_mant_prodserv Frm_mant_prodServ.MdiParent = Me Frm_mant_prodServ.Show() End Sub Private Sub Mnu_parametro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_parametro.Click Dim Frm_parametro As New Frm_mant_parametros Frm_parametro.MdiParent = Me Frm_parametro.Show()

233

End Sub Private Sub Mnu_zona_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_zona.Click Dim Frm_zona As New Frm_mant_provincias Frm_zona.MdiParent = Me Frm_zona.Show() End Sub Private Sub Mnu_proc_lecturaMarcadas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_proc_lecturaMarcadas.Click Dim Frm_lecturaMarcadas As New Frm_pro_lecturaMarcadas Frm_lecturaMarcadas.MdiParent = Me Frm_lecturaMarcadas.Show() End Sub Private Sub Mnu_creaCombos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_creaCombos.Click Dim Frm_Creacombos As New Frm_CreacionCombos Frm_Creacombos.MdiParent = Me Frm_Creacombos.Show() End Sub Private Sub Mnu_list_combo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim Frm_lista_comb As New Frm_CreacionCombos Frm_lista_comb.Show() End Sub 'Private Sub Mnu_confImp_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_confImp.Click ' AxCommonDialog1.ShowPrinter() 'End Sub Private Sub Mnu_permxusu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_permxusu.Click Dim FRM_PERMXUSU As New Frm_mant_permisosxusu FRM_PERMXUSU.MdiParent = Me FRM_PERMXUSU.Show() End Sub Private Sub Mnu_usuario_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_usuario.Click Dim FRM_USU As New Frm_mant_usuario FRM_USU.MdiParent = Me FRM_USU.Show() End Sub Private Sub Mnu_sucur_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_sucur.Click Dim Frm_Sucur As New Frm_mant_sucursal

234

Frm_Sucur.MdiParent = Me Frm_Sucur.Show() End Sub Private Sub Mnu_cons_usu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_cons_usu.Click Dim repo As CrystalReport1 Dim FRM_REPO_CONSULTA As New ReporteUsuarios FRM_REPO_CONSULTA.Show() End Sub Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed End End Sub Private Sub Mnu_cons_permxusu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_cons_permxusu.Click Dim repo As CrystalReport1 Dim FRM_REPO_RESTACC As New ReporteRestriccionAccesos FRM_REPO_RESTACC.Show() End Sub Private Sub Mnu_clientes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Clientes.Click Dim Frm_cli As New Frm_mant_cliente Frm_cli.MdiParent = Me Frm_cli.Show() End Sub Private Sub Mnu_Caja_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Caja.Click Dim Frm_Caja As New Frm_mant_caja Frm_Caja.MdiParent = Me Frm_Caja.Show() End Sub Private Sub Mnu_Horarios_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Horarios.Click Dim Frm_Horarios As New Frm_Man_Horarios Frm_Horarios.MdiParent = Me Frm_Horarios.Show() End Sub Private Sub Mnu_PersonalTrainer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_PersonalTrainer.Click Dim FrmPersonal As New Frm_PersonalTrainer FrmPersonal.MdiParent = Me FrmPersonal.Show() End Sub

235

Private Sub Mnu_Ciudades_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Ciudades.Click Dim FrmZonas As New Frm_Rep_Zonas FrmZonas.MdiParent = Me FrmZonas.Show() End Sub Private Sub Mnu_Pilates_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Pilates.Click Dim Frm_MantPilates As New Frm_Pilates Frm_MantPilates.MdiParent = Me Frm_MantPilates.Show() End Sub Private Sub Mnu_Masajes_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Masajes.Click Dim Frm_Masajistas As New Frm_Masajes Frm_Masajistas.MdiParent = Me Frm_Masajistas.Show() End Sub Private Sub Mnu_Bronceados_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Bronceados.Click Dim Frm_Bronceado As New Frm_Bronceados Frm_Bronceado.MdiParent = Me Frm_Bronceado.Show() End Sub Private Sub Mnu_Devolucion_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Devolucion.Click Dim Frm_Devolucion As New Frm_pro_Credito Frm_Devolucion.MdiParent = Me Frm_Devolucion.Show() End Sub Private Sub Mnu_Egresos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Egresos.Click Dim Frm_Egreso As New Frm_pro_salida Frm_Egreso.MdiParent = Me Frm_Egreso.Show() End Sub Private Sub Mnu_Ingreso_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Ingreso.Click Dim Frm_Ingreso As New Frm_pro_ingreso Frm_Ingreso.MdiParent = Me Frm_Ingreso.Show() End Sub Private Sub Mnu_Locker_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Locker.Click

236

Dim Frm_Loc As New Frm_Locker Frm_Loc.MdiParent = Me Frm_Loc.Show() End Sub Private Sub Mnu_Parqueo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Parqueo.Click Dim Frm_Par As New Frm_Parqueo Frm_Par.MdiParent = Me Frm_Par.Show() End Sub Private Sub Mnu_Rep_TicketsPorFechas_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Rep_TicketsPorFechas.Click Dim Frm_RepServ As New Frm_Rep_Servicios Frm_RepServ.MdiParent = Me Frm_RepServ.Show() End Sub Private Sub Mnu_ReporteDiarioVenta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReporteDiarioVenta.Click Dim frm_RepDiariodeVentas As New Frm_Rep_DiarioVenta frm_RepDiariodeVentas.MdiParent = Me frm_RepDiariodeVentas.Show() End Sub Private Sub Mnu_ReporteCuadreCaja_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReporteCuadreCaja.Click Dim Frm_RepCuadreDeCaja As New Frm_Rep_CuadreDeCaja Frm_RepCuadreDeCaja.MdiParent = Me Frm_RepCuadreDeCaja.Show() End Sub Private Sub Mnu_ReporteVentasProducto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReporteVentasProducto.Click Dim Frm_RepVentProd As New Frm_Rep_Productos Frm_RepVentProd.MdiParent = Me Frm_RepVentProd.Show() End Sub Private Sub Mnu_ReportePersonalTrainer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReportePersonalTrainer.Click Dim Frm_ImpRepPerTra As New Frm_Rep_PersonalTrainer Frm_ImpRepPerTra.MdiParent = Me Frm_ImpRepPerTra.Show()

237

End Sub Private Sub Mnu_ReportedeClientesxTipo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReportedeClientesxTipo.Click Dim repo As CrystalReport1 Dim FRM_REPO_CLIENTESXTIPO As New ConsultaClientesxTipo FRM_REPO_CLIENTESXTIPO.Show() End Sub Private Sub Mnu_ReporteClientesxSecuencia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReporteClientesxSecuencia.Click Dim repo As CrystalReport1 Dim FRM_REPO_CLIENTESXSECUENCIA As New ConsultaClientesxSecuencia FRM_REPO_CLIENTESXSECUENCIA.Show() End Sub Private Sub Mnu_ReporteClientesxSexo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReporteClientesxSexo.Click Dim repo As CrystalReport1 Dim FRM_REPO_CLIENTESXSEXO As New ConsultaClientesxSexo FRM_REPO_CLIENTESXSEXO.Show() End Sub Private Sub Mnu_consListaCli_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_consListaCli.Click Dim repo As CrystalReport1 Dim FRM_REPO_clientesactivos As New ConsultaClientesActivos FRM_REPO_clientesactivos.MdiParent = Me FRM_REPO_clientesactivos.Show() End Sub Private Sub Mnu_ExportarDbf_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ExportarDbf.Click Dim Frm_DBF As New Frm_Man_ExportarDbf Frm_DBF.MdiParent = Me Frm_DBF.Show() End Sub Private Sub Mnu_EnviarTexto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_EnviarTexto.Click Dim Frm_Contabilizar As New Frm_Man_EnviarTexto Frm_Contabilizar.MdiParent = Me Frm_Contabilizar.Show() End Sub Private Sub Mnu_creaPlatos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_creaPlatos.Click

238

Dim Frm_Platos As New Frm_CreacionDePlatos Frm_Platos.MdiParent = Me Frm_Platos.Show() End Sub Private Sub Mnu_ReportedeAsistencias_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReportedeAsistencias.Click Dim Frm_Asistencias As New Frm_ReportedeAsistencias Frm_Asistencias.MdiParent = Me Frm_Asistencias.Show() End Sub Private Sub Mnu_VentasxMeses_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_VentasxMeses.Click Dim Frm_VMeses As New Frm_Rep_VentasXMeses Frm_VMeses.MdiParent = Me Frm_VMeses.Show() End Sub Private Sub Mnu_VentasPorHoras_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_VentasPorHoras.Click Dim Frm_VxHoras As New Frm_Rep_VentasXHoras Frm_VxHoras.MdiParent = Me Frm_VxHoras.Show() End Sub Private Sub Mnu_ReportePlatos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReportePlatos.Click Dim Frm_RepPla As New Frm_Rep_Platos Frm_RepPla.MdiParent = Me Frm_RepPla.Show() End Sub Private Sub Mnu_ReporteCombos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReporteCombos.Click Dim Frm_RepComb As New Frm_Rep_Combos Frm_RepComb.MdiParent = Me Frm_RepComb.Show() End Sub Private Sub Mnu_ReportePlatosCostos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReportePlatosCostos.Click Dim Frm_VentaPlatosCom As New Frm_RepVentasPlatosVSComponentes Frm_VentaPlatosCom.MdiParent = Me Frm_VentaPlatosCom.Show() End Sub

239

Private Sub Mnu_ReporteComprasSocios_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_ReporteComprasSocios.Click Dim Frm_Montos As New Frm_Rep_MontosXClientes Frm_Montos.MdiParent = Me Frm_Montos.Show() End Sub Private Sub Mnu_inv_Existencia_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_inv_Existencia.Click Dim Frm_Exist As New Frm_Rep_Existencias Frm_Exist.MdiParent = Me Frm_Exist.Show() End Sub Private Sub Mnu_inv_Movimientos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_inv_Movimientos.Click Dim Frm_Movim As New Frm_Rep_MovimientosDeProductos Frm_Movim.MdiParent = Me Frm_Movim.Show() End Sub Private Sub Mnu_VentasxBanco_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_VentasxBanco.Click Dim Frm_VenBanc As New Frm_Rep_VentasXBancos Frm_VenBanc.MdiParent = Me Frm_VenBanc.Show() End Sub Private Sub Mnu_VentasTarjeta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_VentasTarjeta.Click Dim Frm_VenTarj As New Frm_Rep_VentasXTarjetas Frm_VenTarj.MdiParent = Me Frm_VenTarj.Show() End Sub Private Sub Mnu_VentasxVendedor_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_VentasxVendedor.Click Dim Frm_VenVend As New Frm_Rep_VentasXVendedor Frm_VenVend.MdiParent = Me Frm_VenVend.Show() End Sub Private Sub Mnu_Rep_Productos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Rep_Productos.Click Dim Frm_RepProd As New Frm_ReporteProductos Frm_RepProd.MdiParent = Me Frm_RepProd.Show()

240

End Sub Private Sub Mnu_Rep_Horarios_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Mnu_Rep_Horarios.Click Dim Frm_RepHora As New Frm_Rep_Horarios Frm_RepHora.MdiParent = Me Frm_RepHora.Show() End Sub End Class

* Clase Frm_busqueda.vb

Public Class Frm_busqueda Inherits System.Windows.Forms.Form Dim acumula As Integer Private Sub Frm_busqueda_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Me.Txt_Criterio.CharacterCasing = CharacterCasing.Upper Cmb_criterio.SelectedIndex = 0 Spr_resultado.MaxRows = 0 cmd = New SqlClient.SqlCommand("SICAG_BUSQUEDA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TABLA", TablaBuscada) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try Cmb_por.Items.Clear() Cmb_por2.Items.Clear() While dr.Read Cmb_por.Items.Add(dr("GEN_DESCRIPCION")) Cmb_por2.Items.Add(dr("GEN_COLUMNA")) Spr_resultado.MaxCols = Cmb_por.Items.Count

241

Spr_resultado.SetText(Cmb_por.Items.Count, 0, dr("gen_descripcion")) Spr_Resultado.set_ColWidth(Cmb_por.Items.Count, dr("gen_longitud")) acumula = acumula + dr("gen_longitud") End While If Cmb_por.Items.Count > 0 Then Cmb_por.SelectedIndex = 0 Cmb_por2.SelectedIndex = 0 End If Spr_Resultado.MaxRows = 1 dr.Close() End Sub Private Sub Spr_resultado_KeyDownEvent(ByVal sender As System.Object, ByVal e As AxFPSpread._DSpreadEvents_KeyDownEvent) If e.keyCode = 27 Then Close() End If End Sub Private Sub Txt_Criterio_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Txt_Criterio.KeyDown If e.KeyCode = 27 Then Close() End If End Sub Private Sub Txt_Criterio_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txt_Criterio.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call llenar_resultado() If Spr_Resultado.MaxRows > 0 Then Spr_Resultado.Focus() End If End If End Sub Private Sub llenar_resultado() Dim cadena As String Dim indice As Integer Dim fila As Integer Dim criter As Double ' cadena = "" cadena = "Select" '--escogemos todos las columnas a buscar del combo oculto cmb_por2 For indice = 1 To Cmb_por2.Items.Count

242

Cmb_por2.SelectedIndex = indice - 1 cadena = cadena & Space(1) & Me.Cmb_por2.Text If Cmb_por2.SelectedIndex < Cmb_por2.Items.Count - 1 Then cadena = cadena & "," End If Next '---anexamos la tabla que se desea buscar cadena = cadena & Space(1) & "from" & Space(1) & TablaBuscada & Space(1) & "where" & Space(1) '---buscamos el tipo de dato de la columna a buscar Cmb_por2.SelectedIndex = Cmb_por.SelectedIndex cmd = New SqlClient.SqlCommand("SICAG_BUSQUEDA_ESPE", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TABLA", TablaBuscada) cmd.Parameters.Add("@CAMPO", Cmb_por2.Text) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read = True Then Select Case dr("GEN_TIPO") '--se selecciona el tipo de dato a buscar '-en el caso de que sea un entero o numerico Case "I" If IsNumeric(Txt_Criterio) Then criter = Txt_Criterio.Text Else criter = 0 End If '--------------------------------------------------- Select Case Me.Cmb_criterio.Text '-se escoge el criterio Case "Mayor que" cadena = cadena & Cmb_por2.Text & Space(1) & ">" & Space(1) & criter Case "Menor que" cadena = cadena & Cmb_por2.Text & Space(1) & "<" & Space(1) & criter Case "Equivalente" cadena = cadena & Cmb_por2.Text & Space(1) & "=" & Space(1) & criter Case "Diferente" cadena = cadena & Cmb_por2.Text & Space(1) & "<>" & Space(1) & criter

243

End Select '-en el caso de que sea un alfanumerico o una letra Case "A" Select Case Cmb_criterio.Text '-se escoge el criterio Case "Mayor que" cadena = cadena & Cmb_por2.Text & Space(1) & "like" & Space(1) & "'" & Txt_Criterio.Text & "%'" Case "Menor que" cadena = cadena & Cmb_por2.Text & Space(1) & "like" & Space(1) & "'%" & Txt_Criterio.Text & "'" Case "Equivalente" cadena = cadena & Cmb_por2.Text & Space(1) & "like" & Space(1) & "'%" & Txt_Criterio.Text & "%'" Case "Diferente" cadena = cadena & Cmb_por2.Text & Space(1) & "not like" & Space(1) & "'%" & Txt_Criterio.Text & "%'" End Select Case "D" Select Case Cmb_criterio.Text '-se escoge el criterio para las fechas Case "Mayor que" cadena = cadena & Cmb_por2.Text & Space(1) & ">" & Space(1) & "'" + Txt_Criterio.Text + "'" Case "Menor que" cadena = cadena & Cmb_por2.Text & Space(1) & "<" & Space(1) & "'" + Txt_Criterio.Text + "'" Case "Equivalente" cadena = cadena & Cmb_por2.Text & Space(1) & "=" & Space(1) & "'" + Txt_Criterio.Text + "'" Case "Diferente" cadena = cadena & Cmb_por2.Text & Space(1) & "<>" & Space(1) & "'" + Txt_Criterio.Text + "'" End Select End Select End If dr.Close() If Txt_Criterio.Text <> "" Then cmd.CommandType = CommandType.Text cmd = New SqlClient.SqlCommand(cadena, cn) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try

244

'---colocar los resultados en el spreed Me.Spr_Resultado.MaxRows = 0 With Spr_Resultado fila = 1 .MaxRows = 1 Do Until Not dr.Read '------------------------- indice = 1 For indice = 1 To Cmb_por2.Items.Count Cmb_por2.SelectedIndex = indice - 1 cadena = Cmb_por2.Text .SetText(indice, fila, dr(Cmb_por2.Text)) fila = fila + 1 Next .MaxRows = .MaxRows + 1 Loop End With Else Spr_Resultado.MaxRows = 0 MsgBox("La Busqueda no genero Resultados!", MsgBoxStyle.Information, "Mensaje") Txt_Criterio.Focus() End If dr.Close() 'cn.Close() End Sub Private Sub Cmb_por_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Cmb_por.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Cmb_criterio.Focus() End If End Sub Private Sub Cmb_por_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Cmb_por.KeyDown If e.KeyCode = Keys.Escape Then Close() End If End Sub Private Sub Cmb_criterio_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Cmb_criterio.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Txt_Criterio.Focus() End If

245

End Sub Private Sub Cmb_criterio_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Cmb_criterio.KeyDown If e.KeyCode = Keys.Escape Then Close() End If End Sub Private Sub Spr_Resultado_DblClick(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_DblClickEvent) Handles Spr_Resultado.DblClick Try With Me.Spr_Resultado .Col = 1 .Row = .ActiveRow S_Codigo = .Text If S_Codigo <> "" Then Close() End If End With Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub Spr_Resultado_KeyPressEvent1(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyPressEvent) Handles Spr_Resultado.KeyPressEvent Try With Me.Spr_Resultado .Col = 1 .Row = .ActiveRow S_Codigo = .Text If e.keyAscii = 13 Then If S_Codigo <> "" Then Close() End If End If End With Catch ex As Exception MsgBox(ex.Message) End Try End Sub

246

Private Sub Cmb_por2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmb_por2.SelectedIndexChanged End Sub Private Sub Txt_Criterio_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txt_Criterio.TextChanged End Sub End Class

* Clase Frm_Clave.vb

Imports System.Data.SqlClient Public Class Frm_clave Inherits System.Windows.Forms.Form Private Sub Txt_usuario_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txt_usuario.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Txt_password.Focus() End If End Sub Private Sub Txt_password_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txt_password.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Cmb_aceptar.Focus() End If End Sub Private Sub Cmb_salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmb_salir.Click Frm_clave.ActiveForm.Close() End Sub

247

Private Sub Frm_clave_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load cn.ConnectionString = "server=(local); user id=sa; pwd=sasa; database=GYM" Me.Txt_usuario.CharacterCasing = CharacterCasing.Upper Try cn.Open() llena_SUC() Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub Cmb_aceptar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cmb_aceptar.Click Dim MDIGYM As New Form1 Dim Codigo As New Verifica_datos Dim dr As SqlClient.SqlDataReader = Codigo.Verificar_Usuario(Me.Txt_usuario.Text, Me.Txt_password.Text) If dr.Read() = True Then usu = Txt_usuario.Text Cod_Usu = dr("CODUSU") SUCURSAL = CStr(Cmb_sucursal.Text) CODSUCU = Val(Trim(Microsoft.VisualBasic.Right(Me.Cmb_sucursal.Text, 4))) 'Me.Cmb_sucursal.SelectedIndex = 1 If EXISTE = False Then Close() End If cn.Close() MDIGYM.Show() Else MsgBox("Usuario o clave incorrecto...!", MsgBoxStyle.Information, "Mensaje") Me.Txt_usuario.Focus() End If dr.Close() End Sub Private Sub llena_SUC() If cn.State = ConnectionState.Closed Then cn.Open()

248

End If 'Me.Cmb_sucursal = "" cmd = New SqlClient.SqlCommand("SEG_CONS_SUCUR", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() ' cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try While dr.Read Me.Cmb_sucursal.Items.Add(dr("DESCRIPCION") & Space(100) & dr("CODSUCUR")) End While Cmb_sucursal.SelectedIndex = (0) dr.Close() End Sub End Class

* Clase Frm_Man_ExportarDbf.vb

Imports System.Data.OleDb Public Class Frm_Man_ExportarDbf Inherits System.Windows.Forms.Form Dim au As String

249

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Timer1.Enabled = True ' Construimos la cadena de conexión Ole Db, para crear el archivo DBF, indicando ' únicamente la ruta de la carpeta donde se creará. Dim connString As String = "Provider = Microsoft.Jet.OLEDB.4.0;" & "Data Source = C:\tmp;" & "Extended Properties='dBASE 5.0;'" ' Creamos un nuevo objeto Connection Dim cnn As New OleDbConnection(connString) Try Dim sql As String = _ "SELECT cedula AS CODIGO," & _ "pernombre AS NOMBRE," & _ "perapellido AS APELLIDO," & _ "CODIGOSECUEN AS SECUENCIA," & _ "PERDIRECCION AS DIRECCION," & _ "PERTELEFONO AS TELEFONOS," & _ "PERFAX AS FAX," & _ "PERMAIL AS EMAIL," & _ "CODCIUDAD AS CIUDAD," & _ "CODZONA AS ZONA," & _ "TIPO AS TIPO," & _ "FECHAINGRESO AS FEC_AFIL," & _ "FECHASALIDA AS FEC_VENC," & _ "FECHASALIDA AS FEC_CADU," & _ "FECHAMODIF AS FEC_MODI," & _ "FECHANAC AS FEC_NAC1," & _ "PERESTDCIVIL AS EST_CIV," & _ "PEREMPRESA AS EMPRESA," & _ "PERRUC AS RUC," & _ "PERESTADO AS ESTADO " & _ "INTO [fcclient#dbf] " & _ "FROM [Persona] " & _ "IN ''[ODBC;DRIVER={SQL Server};" & _ "Server=(local);" & _ "Database=GYM;" & _ "UID=sa;" & _ "PWD=sasa]"

250

Dim cmd As New OleDbCommand(sql, cnn) cnn.Open() Dim n As Integer = cmd.ExecuteNonQuery() Timer1.Enabled = False MessageBox.Show("Se creado satisfactoriamente el archivo. " & _ "Número de registros afectados: " & n.ToString, _ "Crear archivo dBASE") Catch ex As OleDbException MessageBox.Show(ex.Errors(0).Message) Catch ex As Exception MessageBox.Show(ex.Message) Finally cnn.Close() cnn = Nothing End Try End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If BARRA.Value < 5 Then BARRA.Value = BARRA.Value + 100 Else If BARRA.Value = 5 Then Timer1.Enabled = False End If End If End Sub Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" 'Call IngresarDatos() Case "Grabar" 'Call GrabarDatos() Case "Modificar" 'Call ModificarDatos() Case "Eliminar"

251

'Call EliminarDatos() Case "Buscar" 'Call BuscarDatos() Case "Deshacer" 'Call DeshacerDatos() Case "Imprimir" 'Call ImprimirDatos() Case "Salir" Call SalirDatos() End Select End Sub Private Sub SalirDatos() Me.Close() End Sub End Class

* Clase Frm_Man_Horarios.vb

Imports System Imports System.Data Imports System.Data.SqlClient Imports CrystalDecisions.Shared Imports System.Drawing.Image Imports System.IO Public Class Frm_Man_Horarios Inherits System.Windows.Forms.Form Dim accion_modifica As Boolean Dim fila_actual As Integer Dim FILA, I, J As Integer Dim ingresa As Boolean Private Sub Frm_Man_Horarios_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load deshabilita() Txt_Tipo.Focus() Txt_Nombre.Enabled = False End Sub Private Sub consulta_gen() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_HORARIOS", cn)

252

cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", Trim(Me.Txt_Tipo.Text)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try Spr_Horarios.MaxRows = 0 With Spr_Horarios Do While dr.Read .MaxRows = .MaxRows + 1 .SetText(1, .MaxRows, dr("CODIGO")) .SetText(2, .MaxRows, dr("DESCRIPCION")) .SetText(3, .MaxRows, dr("HORAINICIAL")) .SetText(4, .MaxRows, dr("HORAFINAL")) .Col = 2 .Row = .MaxRows Me.Txt_Tipo.Text = dr("TIPO") Me.Txt_Nombre.Text = dr("NOMBRE") Loop '.Enabled = True End With dr.Close() End Sub Private Sub deshabilita() Me.TlbBotones.Buttons(0).Enabled = True : Me.TlbBotones.Buttons(2).Enabled = False Me.TlbBotones.Buttons(6).Enabled = True : Me.TlbBotones.Buttons(12).Enabled = True Me.TlbBotones.Buttons(10).Enabled = False : Me.TlbBotones.Buttons(4).Enabled = True Me.TlbBotones.Buttons(8).Enabled = True : Me.TlbBotones.Buttons(14).Enabled = True Me.Txt_Nombre.Enabled = False Me.Spr_Horarios.Enabled = False Me.Spr_Horarios.Enabled = False End Sub Private Sub Consulta_Horario() If Me.Txt_Tipo.Text <> "" Then If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_HORARIOS", cn)

253

cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", Trim(Me.Txt_Tipo.Text)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then Txt_Nombre.Text = dr("NOMBRE") I = 1 While dr.Read With Spr_Horarios .Row = I : .Col = 1 : .Text = dr("CODIGO") .Col = 2 : .Text = dr("DESCRIPCION") .Col = 4 : .Text = dr("HORAINICIAL") .Col = 5 : .Text = dr("HORAFINAL") End With I = I + 1 End While Else MsgBox("Horario no Existe..!", MsgBoxStyle.Information, "Mensaje") Me.Txt_Tipo.Focus() End If Else MsgBox("Ingrese tipo de horarios..!", MsgBoxStyle.Information, "Mensaje") End If dr.Close() End Sub Private Sub IngresarDatos() limpia_textos() habilita() Txt_Tipo.Focus() accion_modifica = False ingresa = True End Sub Private Sub limpia_textos() Me.Txt_Tipo.Text = "" Me.Txt_Nombre.Text = "" Me.Spr_Horarios.MaxRows = 1 Me.Spr_Horarios.MaxRows = 0 : Me.Spr_Horarios.MaxRows = 1 Me.Spr_Horarios.Row = Me.Spr_Horarios.MaxRows

254

Me.Spr_Horarios.Col = 1 : Me.Spr_Horarios.Text = 1 End Sub Private Sub habilita() Me.TlbBotones.Buttons(0).Enabled = False : Me.TlbBotones.Buttons(2).Enabled = True Me.TlbBotones.Buttons(6).Enabled = False : Me.TlbBotones.Buttons(12).Enabled = False Me.TlbBotones.Buttons(10).Enabled = True : Me.TlbBotones.Buttons(4).Enabled = False Me.TlbBotones.Buttons(8).Enabled = False : Me.TlbBotones.Buttons(14).Enabled = True Me.Txt_Tipo.Enabled = True Me.Txt_Nombre.Enabled = True Me.Spr_Horarios.Enabled = True End Sub Private Sub GrabarDatos() Dim codiopc As Integer Dim descrip As String Dim i As Integer Dim j As Integer Dim vacio As Boolean vacio = False If ((Me.Txt_Tipo.Text = "PTR" Or Me.Txt_Tipo.Text = "MAS" Or Me.Txt_Tipo.Text = "BRO" Or Me.Txt_Tipo.Text = "PIL") And Trim(Me.Txt_Nombre.Text) <> "" And Me.Spr_Horarios.MaxRows >= 1) Then If accion_modifica = True Then Call Borra_Spread() With Spr_Horarios For fila_actual = 1 To .MaxRows .Col = 1 .Row = fila_actual If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "SEG_ING_HORARIOS" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", Me.Txt_Tipo.Text) cmd.Parameters.Add("@NOMBRE", Me.Txt_Nombre.Text) .Col = 1 .Row = fila_actual cmd.Parameters.Add("@CODIGO", CStr(.Text))

255

.Col = 2 .Row = fila_actual cmd.Parameters.Add("@DESCRIPCION", .Text) .Col = 3 .Row = fila_actual cmd.Parameters.Add("@HORAINICIAL", .Text) .Col = 4 .Row = fila_actual cmd.Parameters.Add("@HORAFINAL", .Text) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try Next End With MsgBox("Registro Modificado") dr.Close() deshabilita() accion_modifica = False Txt_Tipo.Enabled = True Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_HORARIOS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", Txt_Tipo.Text) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If Not dr.Read = True Then If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "SEG_ING_HORARIOS" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() With Spr_Horarios For fila_actual = 1 To .MaxRows .Col = 1

256

.Row = fila_actual cmd.Parameters.Add("@TIPO", Me.Txt_Tipo.Text) cmd.Parameters.Add("@NOMBRE", Me.Txt_Nombre.Text) .Col = 1 .Row = fila_actual cmd.Parameters.Add("@CODIGO", CStr(.Text)) .Col = 2 .Row = fila_actual cmd.Parameters.Add("@DESCRIPCION", .Text) .Col = 3 .Row = fila_actual cmd.Parameters.Add("@HORAINICIAL", .Text) .Col = 4 .Row = fila_actual cmd.Parameters.Add("@HORAFINAL", .Text) Try cmd.ExecuteNonQuery() MsgBox("Registro Ingresado exitosamente", MsgBoxStyle.Information, "Mensaje") dr.Close() deshabilita() Txt_Tipo.Enabled = True Catch ex As Exception MsgBox(ex.Message) End Try Next End With Else MsgBox("Horario ya existe", MsgBoxStyle.Information, "Mensaje") Txt_Tipo.Focus() End If End If End If End Sub Private Sub Borra_Spread() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BORRA_SPREAD", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", Me.Txt_Tipo.Text) Try dr = cmd.ExecuteReader()

257

Catch ex As Exception MsgBox(ex.Message) End Try dr.Close() End Sub Private Sub ModificarDatos() Dim cod, n, Max As Integer If Trim(Me.Txt_Tipo.Text) <> "" And Trim(Me.Txt_Nombre.Text) <> "" Then habilita() accion_modifica = True Me.Txt_Tipo.Enabled = False Me.Spr_Horarios.Enabled = True ingresa = False Else MsgBox("No Existen datos a modificar...", vbInformation, "A T E N C I O N") Me.Txt_Tipo.Focus() End If End Sub Private Sub DeshacerDatos() limpia_textos() deshabilita() Me.Txt_Tipo.Enabled = True Me.Txt_Tipo.Focus() End Sub Private Sub SalirDatos() ingresa = False Me.Close() End Sub Private Sub Spr_Horarios_KeyPressEvent(ByVal sender As Object, ByVal e As AxFPSpreadADO._DSpreadEvents_KeyPressEvent) Handles Spr_Horarios.KeyPressEvent Dim I As Integer Dim DESCRIB As String If e.keyAscii = 13 Then With Spr_Horarios If .ActiveCol = 1 Then .Col = 1 .Row = .MaxRows DESCRIB = .Text For I = 1 To .MaxRows - 1 .Col = 1

258

.Row = I If CStr(DESCRIB) = .Text Then MsgBox("Codigo ya existe..!", MsgBoxStyle.Information, "Mensaje") .SetActiveCell(1, .MaxRows) .Focus() End If Next End If If .ActiveCol = 3 Then .Col = 3 .Row = .MaxRows DESCRIB = .Text For I = 1 To .MaxRows - 1 .Col = 3 .Row = I If CStr(DESCRIB) = .Text Then MsgBox("Codigo ya existe..!", MsgBoxStyle.Information, "Mensaje") .SetActiveCell(3, .MaxRows) .Focus() End If Next End If If .ActiveCol = 4 Then .Col = 3 .Row = .MaxRows DESCRIB = .Text For I = 1 To .MaxRows - 1 .Col = 3 .Row = I If CStr(DESCRIB) = .Text Then MsgBox("Codigo ya existe..!", MsgBoxStyle.Information, "Mensaje") .SetActiveCell(3, .MaxRows) .Focus() End If Next .Col = 1 .Row = .ActiveRow

259

If .Row = .MaxRows And Trim(.Text) <> "" Then .MaxRows = .MaxRows + 1 End If End If End With End If End Sub Private Sub Txt_Nombre_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txt_Nombre.KeyPress End Sub Private Sub Txt_Tipo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txt_Tipo.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then If Txt_Tipo.Text <> "" Then If Me.Txt_Tipo.Text = "PTR" Or Me.Txt_Tipo.Text = "MAS" Or Me.Txt_Tipo.Text = "BRO" Or Me.Txt_Tipo.Text = "PIL" Then Call consulta_gen() Txt_Nombre.Enabled = True Txt_Nombre.Focus() Else MsgBox("Tipo de Dato Invalido(PTR/PIL/MAS/BRO)...", vbInformation, "A T E N C I O N") Me.Txt_Tipo.Focus() End If Else MsgBox("Debe ingresar un tipo..", MsgBoxStyle.Information, "SICAG") End If End If End Sub Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" Call IngresarDatos() Case "Grabar" Call GrabarDatos() Case "Modificar" Call ModificarDatos() Case "Eliminar" 'Call EliminarDatos() Case "Buscar"

260

Call BuscarDatos() Case "Deshacer" Call DeshacerDatos() Case "Imprimir" If Trim(Me.Txt_Tipo.Text) <> "" Then Call ImprimirDatos() Else MsgBox("No Existen datos a imprimir...", vbInformation, "A T E N C I O N") Me.Txt_Tipo.Focus() End If Case "Salir" Call SalirDatos() End Select End Sub Private Sub BuscarDatos() Call consulta_gen() End Sub Private Sub ImprimirDatos() Dim frm_busq As New FrmParamImpHorarios frm_busq.CrpReporteHorarios.ReportSource = Nothing Dim paraminicio As New ParameterDiscreteValue paraminicio.Value = Me.Txt_Tipo.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@tipo" paramtemp.CurrentValues.Add(paraminicio) paramlist.Add(paramtemp) frm_busq.CrpReporteHorarios.ParameterFieldInfo = paramlist frm_busq.CrpReporteHorarios.ReportSource = New Rpt_ImpHorarios frm_busq.ShowDialog() End Sub Private Sub Spr_Horarios_KeyDownEvent(ByVal sender As Object, ByVal e As AxFPSpreadADO._DSpreadEvents_KeyDownEvent) Handles Spr_Horarios.KeyDownEvent

261

Dim I As Integer Dim DESCRIB As String With Spr_Horarios If e.keyCode = Keys.Delete Then If .MaxRows > 1 Then If MessageBox.Show("Esta seguro de Eliminar la Linea?...", "Alerta", MessageBoxButtons.YesNo) = DialogResult.Yes Then .Row = .ActiveRow : .Col = 2 .Action = FPSpread.ActionConstants.ActionDeleteRow.ActionDeleteRow : .MaxRows = .MaxRows - 1 .SetActiveCell(2, .MaxRows) : .Focus() End If End If End If If (e.keyCode = 5 Or e.keyCode = 4 Or e.keyCode = 19 Or e.keyCode = 24 Or e.keyCode = 9) Then If .ActiveCol = 1 Then .Col = 1 .Row = .MaxRows DESCRIB = .Text For I = 1 To .MaxRows - 1 .Col = 1 .Row = I If CStr(DESCRIB) = .Text Then MsgBox("Codigo ya existe..!", MsgBoxStyle.Information, "Mensaje") .SetActiveCell(1, .MaxRows) .Focus() End If Next End If If .ActiveCol = 3 Then .Col = 3 .Row = .MaxRows DESCRIB = .Text For I = 1 To .MaxRows - 1 .Col = 3 .Row = I If CStr(DESCRIB) = .Text Then MsgBox("Codigo ya existe..!", MsgBoxStyle.Information, "Mensaje")

262

.SetActiveCell(3, .MaxRows) .Focus() End If Next End If If .ActiveCol = 4 Then .Col = 3 .Row = .MaxRows DESCRIB = .Text For I = 1 To .MaxRows - 1 .Col = 3 .Row = I If CStr(DESCRIB) = .Text Then MsgBox("Codigo ya existe..!", MsgBoxStyle.Information, "Mensaje") .SetActiveCell(3, .MaxRows) .Focus() End If Next End If End If End With End Sub End Class

* Clase Frm_mant_permisosxusu.vb

Public Class Frm_mant_permisosxusu Inherits System.Windows.Forms.Form Dim FILA As Integer

263

Public MODIFICA As Boolean Private Sub Frm_mant_permisosxusu_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load llena_combo_modulo() deshabilita() End Sub Private Sub llena_combo_modulo() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 1) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try While dr.Read Me.Cbo_modulo.Items.Add(dr("DESCRIPCION") & Space(50) & dr("CODMODULO")) End While Me.Cbo_modulo.SelectedIndex = 0 dr.Close() End Sub Private Sub busca_nombre_usu() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If If Not IsNumeric(Txt_codusu.Text) = True Then MsgBox("Introduzca un valor con números") Else If Me.Txt_codusu.Text <> "" Then cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", Me.Txt_codusu.Text) cmd.Parameters.Add("@OPCION", 14) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then

264

Txt_nombUsu.Text = dr("NOMBRE") dr.Close() llena_opciones_con_permisos() Else Txt_nombUsu.Text = "" MsgBox("Usuario no existe..!", MsgBoxStyle.Information, "Mensaje") Me.Txt_codusu.Focus() End If Else MsgBox("Ingrese numero de cédula del usuario..!", MsgBoxStyle.Information, "Mensaje") End If dr.Close() End If End Sub Private Sub llena_opciones_con_permisos() Dim fila, I As Integer Dim acceso As Integer Dim flag As Boolean If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_PERMXUSU", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", Me.Txt_codusu.Text) cmd.Parameters.Add("@MODULO", Val(Trim(Microsoft.VisualBasic.Right(Me.Cbo_modulo.Text, 4)))) I = Val(Trim(Microsoft.VisualBasic.Right(Me.Cbo_modulo.Text, 4))) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try Me.Spr_Opciones.MaxRows = 0 With Spr_Opciones Do Until Not dr.Read flag = True .MaxRows = .MaxRows + 1 .SetText(1, .MaxRows, dr("DESCRIPCION")) .SetText(2, .MaxRows, dr("OPCFORMULARIO")) .SetText(3, .MaxRows, dr("OPCOBSERVACION")) .SetText(4, .MaxRows, dr("OPCFECHACREAC"))

265

.Lock = True If Trim(dr("ESTADO")) = "A" Then acceso = 1 Else acceso = 0 End If .SetText(5, .MaxRows, acceso) .SetText(6, .MaxRows, dr("CODOPC")) Loop End With deshabilita() MODIFICA = True Me.TlbBotones.Buttons(0).Enabled = True : Me.TlbBotones.Buttons(2).Enabled = True dr.Close() If flag <> True Then llena_opciones_sin_permisos() End If End Sub Private Sub llena_opciones_sin_permisos() Dim fila, I As Integer Dim acceso As Integer Dim flag As Boolean If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_PERMISOS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@MODULO", Val(Trim(Microsoft.VisualBasic.Right(Me.Cbo_modulo.Text, 4)))) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try Me.Spr_Opciones.MaxRows = 0 With Spr_Opciones Do Until Not dr.Read flag = False .MaxRows = .MaxRows + 1 .SetText(1, .MaxRows, dr("DESCRIPCION"))

266

.SetText(2, .MaxRows, dr("OPCFORMULARIO")) .SetText(3, .MaxRows, dr("OPCOBSERVACION")) .SetText(4, .MaxRows, dr("OPCFECHACREAC")) .Lock = True If Trim(dr("ESTADO")) = "A" Then acceso = 1 End If .SetText(5, .MaxRows, acceso) .SetText(6, .MaxRows, dr("CODOPCION")) 'MsgBox(dr("CODOPCION")) Loop End With dr.Close()

'graba el permiso en la tabla de permxusu si el spread devuelve algo aqui With Spr_Opciones For fila = 1 To .MaxRows cmd.CommandText = "SEG_ING_PERXUSU" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() 'cmd.Parameters.Add("@CODPERXUSU", fila) cmd.Parameters.Add("@CODCEDULAUSU", Me.Txt_codusu.Text) .Col = 6 .Row = fila cmd.Parameters.Add("@CODOPC", .Text) .Col = 5 If .Value = 1 Then cmd.Parameters.Add("@ESTADO", "A") Else cmd.Parameters.Add("@ESTADO", "I") End If MODIFICA = True Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try Next End With

267

dr.Close() End Sub Private Sub Txt_codusu_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txt_codusu.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then If Txt_codusu.Text <> "" Then Call busca_nombre_usu() If Trim(Txt_nombUsu.Text) <> "" Then Me.Cbo_modulo.Focus() End If Else MsgBox("Debe ingresar un usuario para asignar o ver las asignaciones de permisos..", MsgBoxStyle.Information, "SICAG") Me.Txt_codusu.Focus() Txt_nombUsu.Text = "" End If End If End Sub Private Sub SalirDatos() Me.Close() End Sub Private Sub ModificarDatos() Dim FILA As Integer If Trim(Me.Txt_codusu.Text) <> "" Then With Spr_Opciones For FILA = 1 To .MaxRows .Col = 5 .Row = FILA .Lock = False Next End With MODIFICA = True habilita() Else MsgBox("No Existen datos a modificar...", vbInformation, "A T E N C I O N") Me.Txt_codusu.Focus() End If End Sub Private Sub habilita() Me.TlbBotones.Buttons(0).Enabled = False : Me.TlbBotones.Buttons(2).Enabled = True

268

Me.TlbBotones.Buttons(6).Enabled = False : Me.TlbBotones.Buttons(12).Enabled = False Me.TlbBotones.Buttons(10).Enabled = True : Me.TlbBotones.Buttons(4).Enabled = False Me.TlbBotones.Buttons(8).Enabled = False : Me.TlbBotones.Buttons(14).Enabled = True End Sub Private Sub GrabarDatos() Dim codiopc As Integer If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If If Not IsNumeric(Txt_codusu.Text) = True Then MsgBox("Introduzca un valor con números") Else If Me.Txt_codusu.Text <> "" And Me.Cbo_modulo.Text <> "" And Me.Txt_nombUsu.Text <> "" Then If MODIFICA = True Then With Spr_Opciones For FILA = 1 To .MaxRows cmd.CommandText = "SEG_UPD_PERXUSU" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@CODCEDULAUSU", CStr(Me.Txt_codusu.Text)) .Col = 6 .Row = FILA 'MsgBox(.Text) cmd.Parameters.Add("@CODOPC", .Text) .Col = 5 If .Value = 1 Then cmd.Parameters.Add("@ESTADO", "A") Else cmd.Parameters.Add("@ESTADO", "I") End If 'cmd.ExecuteNonQuery() Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message)

269

End Try Next End With MsgBox("Registro Modificado") deshabilita() Me.Txt_codusu.Enabled = True MODIFICA = False Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If With Spr_Opciones For FILA = 1 To .MaxRows cmd.CommandText = "SEG_ING_PERXUSU" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@CODCEDULAUSU", CStr(Me.Txt_codusu.Text)) .Col = 6 .Row = FILA cmd.Parameters.Add("@CODOPC", .Text) .Col = 5 If .Value = 1 Then cmd.Parameters.Add("@ESTADO", "A") Else cmd.Parameters.Add("@ESTADO", "I") End If Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try Next End With MsgBox("Registro Ingresado exitosamente", MsgBoxStyle.Information, "Mensaje") Spr_Opciones.MaxRows = 0 'limpia_textos() Me.Txt_codusu.Enabled = True Call deshabilita() Me.Txt_codusu.Focus() End If Else

270

MsgBox("Faltan datos de llenar", MsgBoxStyle.Information, "Mensaje") End If End If End Sub Private Sub elimina_permisosxusu() With Spr_Opciones cmd.CommandText = "SEG_ELI_PERXUSU" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@CODCEDULAUSU", Me.Txt_codusu.Text) End With Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub DeshacerDatos() deshabilita() Me.Txt_codusu.Enabled = True Me.Txt_codusu.Focus() Me.Spr_Opciones.MaxRows = 0 End Sub Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" 'Call IngresarDatos() Case "Grabar" Call GrabarDatos() Case "Modificar" Call ModificarDatos() Case "Eliminar" 'Call EliminarDatos() Case "Buscar" 'Call BuscarDatos() Case "Deshacer" Call DeshacerDatos() Case "Imprimir" 'Call ImprimirDatos() Case "Salir"

271

Call SalirDatos() End Select End Sub Private Sub deshabilita() Me.TlbBotones.Buttons(0).Enabled = True : Me.TlbBotones.Buttons(2).Enabled = False Me.TlbBotones.Buttons(6).Enabled = False : Me.TlbBotones.Buttons(12).Enabled = False Me.TlbBotones.Buttons(10).Enabled = False : Me.TlbBotones.Buttons(4).Enabled = True Me.TlbBotones.Buttons(8).Enabled = False : Me.TlbBotones.Buttons(14).Enabled = True End Sub Private Sub Btn_busca_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_busca.Click If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If Dim frm_busq As New Frm_Buscar Spr_Opciones.MaxRows = 0 S_Codigo = "" TablaBuscada = "VIS_SICAG_BUSQUEDA" Campo1 = "CODCEDULA" Campo2 = "NOMBRE" Campo3 = "Busqueda Por Usuario" frm_busq.ShowDialog() If S_Codigo <> "" Then Txt_codusu.Text = S_Codigo Call busca_nombre_usu() End If End Sub Private Sub Cbo_modulo_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Cbo_modulo.SelectedIndexChanged If Trim(Txt_nombUsu.Text) <> "" Then llena_opciones_con_permisos() End If End Sub End Class

272

* Clase Frm_mant_provincias.vb

Imports System Imports System.Data Imports System.Data.SqlClient Imports CrystalDecisions.Shared Imports System.Drawing.Image Imports System.IO Public Class Frm_mant_provincias Inherits System.Windows.Forms.Form Public tipo As String Dim xcodigo As String Public cadena As Boolean Dim cod_per As Integer Dim accion_modifica As Boolean Dim CODCAJA, DIASMEMBRESIA, FILA, I, J As Integer Dim CodigoSuc As Integer Dim iva, TotalG As Double Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" Call IngresarDatos() Case "Grabar" Call GrabarDatos() Case "Modificar" Call ModificarDatos() Case "Eliminar" 'Call EliminarDatos() Case "Buscar" Call BuscarDatos() Case "Deshacer" Call DeshacerDatos() Case "Imprimir" If Trim(Me.Txt_codigo.Text) <> "" Then

273

Call ImprimirDatos() Else MsgBox("No Existen datos a imprimir...", vbInformation, "A T E N C I O N") Me.Txt_codigo.Focus() End If Case "Salir" Call SalirDatos() End Select End Sub Private Sub BuscarDatos() If Trim(Txt_codigo.Text) <> "" Then SprDetalleCiudad.MaxRows = 0 SprDetalleCiudad.MaxRows = 1 If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_CAB_ZONA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOZONA", CInt(Txt_codigo.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then Txt_Nombre.Text = dr("NOMBREZONA") If Trim(dr("ESTADOZONA")) <> "1" Then cbx_estado.SelectedIndex = 1 Else cbx_estado.SelectedIndex = 0 End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_DET_ZONA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOZONA", CInt(Txt_codigo.Text)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try

274

I = 1 While dr.Read With SprDetalleCiudad .Row = I : .Col = 1 : .Text = dr("CODIGOCIUDAD") .Col = 2 : .Text = dr("NOMBRECIUDAD") '.Col = 3 : .Text = dr("ESTADOCIUDAD") .MaxRows = .MaxRows + 1 End With I = I + 1 End While Else MsgBox("Provincia no existe..!", MsgBoxStyle.Information, "Mensaje") Me.Txt_codigo.Focus() End If Else MsgBox("Ingrese Provincia a Buscar..!", MsgBoxStyle.Information, "Mensaje") Me.Txt_codigo.Focus() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub ImprimirDatos() Dim frm_busq As New FrmParamImpZonas frm_busq.CrpImprimirZonas.ReportSource = Nothing Dim paraminicio As New ParameterDiscreteValue paraminicio.Value = Me.Txt_codigo.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@CODIGOZONA" paramtemp.CurrentValues.Add(paraminicio) paramlist.Add(paramtemp) frm_busq.CrpImprimirZonas.ParameterFieldInfo = paramlist frm_busq.CrpImprimirZonas.ReportSource = New Rpt_Zonas frm_busq.ShowDialog() End Sub

275

Private Sub SalirDatos() Me.Close() End Sub Private Sub Verifica_Textos(ByRef cadena As Boolean) cadena = True If Txt_codigo.Text = "" Then MsgBox("No ha Ingresado el Codigo de la Zona...", vbInformation, "A T E N C I O N") Txt_codigo.Focus() cadena = False Exit Sub End If If Txt_Nombre.Text = "" Then MsgBox("No ha Ingresado el Nombre de la Zona...", vbInformation, "A T E N C I O N") Txt_Nombre.Focus() cadena = False Exit Sub End If End Sub Private Sub IngresarDatos() limpia_textos() ObtieneSecuencia() habilita() Txt_Nombre.Focus() accion_modifica = False SprDetalleCiudad.Col = 3 SprDetalleCiudad.TypeComboBoxCurSel = 0 End Sub Private Sub ObtieneSecuencia() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_SECUENCIA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("ZO")) cmd.Parameters.Add("@CODIGO2", CInt(CodigoSuc)) cmd.Parameters.Add("@CODIGO3", CInt(CODCAJA)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try

276

If dr.Read Then Txt_codigo.Text = dr("NUMERO") + 1 Else Txt_codigo.Text = "1" End If dr.Close() End Sub Private Sub DeshacerDatos() limpia_textos() deshabilita() Me.Txt_codigo.Enabled = True Me.Txt_codigo.Focus() End Sub Private Sub ModificarDatos() If Trim(Me.Txt_codigo.Text) <> "" And Trim(Me.Txt_Nombre.Text) <> "" Then habilita() accion_modifica = True Txt_codigo.Enabled = False Me.SprDetalleCiudad.Enabled = True Else MsgBox("No Existen datos a modificar...", vbInformation, "A T E N C I O N") Me.Txt_codigo.Focus() End If End Sub Private Sub GrabarDatos() Dim CodigoCabecera As Integer Dim CodEstado As Integer Dim Cantidad As Integer Dim Descuento As Double Dim Neto, Bruto, xvalor_desc As Double Dim MEMBRESIA As Boolean Dim TotalPagos As Double Dim FormaPago As String TotalPagos = 0 Verifica_Textos(cadena) If cadena = True And Me.SprDetalleCiudad.MaxRows >= 1 Then If accion_modifica = True Then If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_MOD_ZONA_CABECERA" cmd.CommandType = CommandType.StoredProcedure

277

cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOZONA", CInt(Me.Txt_codigo.Text)) cmd.Parameters.Add("@NOMBREZONA", CStr(Me.Txt_Nombre.Text)) If Me.cbx_estado.Text = "ACTIVO" Then cmd.Parameters.Add("@ESTADOZONA", "1") Else cmd.Parameters.Add("@ESTADOZONA", "0") End If Try cmd.ExecuteNonQuery() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_CAB_ZONAS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOZONA", CInt(Txt_codigo.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CodigoCabecera = dr("CODIGOZONA") CodEstado = dr("ESTADOZONA") End If ' BORRA DETALLES DE PROVINCIAS If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_DETALLE_ZONA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOZONA", CodigoCabecera) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try

278

If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Catch ex As Exception MsgBox(ex.Message) End Try '********************INGRESA DETALLE With SprDetalleCiudad For FILA = 1 To .MaxRows - 1 cmd.CommandText = "FAC_ING_DETALLE_ZONA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOZONA", CodigoCabecera) .Col = 1 : .Row = FILA cmd.Parameters.Add("@CODIGOCIUDAD", CStr(.Text)) .Col = 2 cmd.Parameters.Add("@NOMBRECIUDAD", CStr(.Text)) .Col = 3 cmd.Parameters.Add("@ESTADOCIUDAD", CStr("1")) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try Next End With Try MsgBox("PROVINCIAS GENERADAS EXITOSAMENTE") Catch ex As Exception MsgBox(ex.Message) End Try Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_ING_ZONA_CABECERA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOZONA", CInt(Me.Txt_codigo.Text)) cmd.Parameters.Add("@NOMBREZONA", CStr(Me.Txt_Nombre.Text)) If Me.cbx_estado.Text = "ACTIVO" Then

279

cmd.Parameters.Add("@ESTADOZONA", "1") Else cmd.Parameters.Add("@ESTADOZONA", "0") End If Try cmd.ExecuteNonQuery() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_CAB_ZONAS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOZONA", CInt(Txt_codigo.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CodigoCabecera = dr("CODIGOZONA") CodEstado = dr("ESTADOZONA") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Catch ex As Exception MsgBox(ex.Message) End Try '********************INGRESA DETALLE With SprDetalleCiudad For FILA = 1 To .MaxRows - 1 cmd.CommandText = "FAC_ING_DETALLE_ZONA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOZONA", CodigoCabecera) .Col = 1 : .Row = FILA cmd.Parameters.Add("@CODIGOCIUDAD", CStr(.Text)) .Col = 2 cmd.Parameters.Add("@NOMBRECIUDAD", CStr(.Text)) .Col = 3 cmd.Parameters.Add("@ESTADOCIUDAD", CStr("1")) Try cmd.ExecuteNonQuery()

280

Catch ex As Exception MsgBox(ex.Message) End Try Next End With Call GrabaSecuencia() Try cmd.ExecuteNonQuery() MsgBox("PROVINCIAS GENERADAS EXITOSAMENTE") Catch ex As Exception MsgBox(ex.Message) End Try End If dr.Close() deshabilita() Else If cadena = False Then Else MsgBox("Faltan datos de llenar...", vbInformation, "A T E N C I O N") End If End If End Sub Private Sub GrabaSecuencia() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_SECUENCIA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("ZO")) cmd.Parameters.Add("@CODIGO2", CInt(CodigoSuc)) cmd.Parameters.Add("@CODIGO3", CInt(CODCAJA)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_MOD_SECUENCIA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear()

281

cmd.Parameters.Add("@TIPO", CStr("ZO")) cmd.Parameters.Add("@SUCURSAL", CInt(CodigoSuc)) cmd.Parameters.Add("@CAJA", CInt(CODCAJA)) cmd.Parameters.Add("@NUMERO", CInt(Val(Txt_codigo.Text))) Try cmd.ExecuteNonQuery() dr.Close() Catch ex As Exception MsgBox(ex.Message) End Try Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_ING_SECUENCIA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", CStr("ZO")) cmd.Parameters.Add("@SUCURSAL", CInt(CodigoSuc)) cmd.Parameters.Add("@CAJA", CInt(CODCAJA)) cmd.Parameters.Add("@NUMERO", 1) Try cmd.ExecuteNonQuery() dr.Close() Catch ex As Exception MsgBox(ex.Message) End Try End If End Sub Private Sub deshabilita() Me.TlbBotones.Buttons(0).Enabled = True : Me.TlbBotones.Buttons(2).Enabled = False Me.TlbBotones.Buttons(6).Enabled = True : Me.TlbBotones.Buttons(12).Enabled = True Me.TlbBotones.Buttons(10).Enabled = False : Me.TlbBotones.Buttons(4).Enabled = True Me.TlbBotones.Buttons(8).Enabled = True : Me.TlbBotones.Buttons(14).Enabled = True Me.Txt_Nombre.Enabled = False Me.SprDetalleCiudad.Enabled = False cbx_estado.Enabled = False End Sub Private Sub habilita()

282

Me.TlbBotones.Buttons(0).Enabled = False : Me.TlbBotones.Buttons(2).Enabled = True Me.TlbBotones.Buttons(6).Enabled = False : Me.TlbBotones.Buttons(12).Enabled = False Me.TlbBotones.Buttons(10).Enabled = True : Me.TlbBotones.Buttons(4).Enabled = False Me.TlbBotones.Buttons(8).Enabled = False : Me.TlbBotones.Buttons(14).Enabled = True Me.Txt_Nombre.Enabled = True Me.cbx_estado.Enabled = True Me.Txt_codigo.Enabled = False Me.SprDetalleCiudad.Enabled = True End Sub Private Sub limpia_textos() Txt_Nombre.Text = "" Me.SprDetalleCiudad.MaxRows = 1 Me.SprDetalleCiudad.MaxRows = 0 : Me.SprDetalleCiudad.MaxRows = 1 Me.SprDetalleCiudad.Row = Me.SprDetalleCiudad.MaxRows Me.SprDetalleCiudad.Col = 1 : Me.SprDetalleCiudad.Text = 1 Me.cbx_estado.SelectedIndex = 0 End Sub Private Sub Frm_mant_provincias_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 'Me.SprDetalleCiudad.MaxRows = 0 deshabilita() Txt_codigo.Focus() LlenaParametros() cbx_estado.SelectedIndex = 0 End Sub Private Sub LlenaParametros() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 11) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try

283

If dr.Read Then CODCAJA = dr("CODCAJA") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("SEG_CONS_PARAMETRO", cn) cmd.CommandType = CommandType.StoredProcedure Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If CodigoSuc = Val(Trim(Microsoft.VisualBasic.Right(SUCURSAL, 3))) End Sub Private Sub Txt_codigo_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txt_codigo.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call CargarProvincias() End If End Sub Private Sub CargarProvincias() If Trim(Txt_codigo.Text) <> "" Then SprDetalleCiudad.MaxRows = 0 SprDetalleCiudad.MaxRows = 1 If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_CAB_ZONAS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOZONA", CInt(Txt_codigo.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then Txt_Nombre.Text = dr("NOMBREZONA") If Trim(dr("ESTADOZONA")) <> "1" Then Me.cbx_estado.SelectedIndex = 1

284

Else Me.cbx_estado.SelectedIndex = 0 End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_DET_ZONA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOZONA", CInt(Txt_codigo.Text)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try I = 1 While dr.Read With SprDetalleCiudad .Row = I : .Col = 1 : .Text = dr("CODIGOCIUDAD") .Col = 2 : .Text = dr("NOMBRECIUDAD") '.Col = 3 : .Text = dr("ESTADOCIUDAD") .MaxRows = .MaxRows + 1 End With I = I + 1 End While Else MsgBox("Provincias no existen..!", MsgBoxStyle.Information, "Mensaje") Me.Txt_codigo.Focus() End If Else MsgBox("Ingrese Provincia a Buscar..!", MsgBoxStyle.Information, "Mensaje") Me.Txt_codigo.Focus() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub SprDetalleCiudad_KeyPressEvent(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyPressEvent) Handles SprDetalleCiudad.KeyPressEvent Dim CONTADOR As Integer

285

With SprDetalleCiudad If .ActiveCol = 2 Then If e.keyAscii = 13 Then .Col = 1 If Trim(.Text) = "" Then CONTADOR = 0 Else CONTADOR = .Text End If .Col = 2 .Row = .ActiveRow .Col = 2 .Row = .MaxRows If Len(.Text) > 0 Then .MaxRows = .MaxRows + 1 Else .SetActiveCell(2, .ActiveRow) End If .Row = .MaxRows .Col = 1 : .Text = CONTADOR + 1 .SetActiveCell(1, .MaxRows) .Focus() End If End If End With End Sub Private Sub SprDetalleCiudad_KeyDownEvent(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyDownEvent) Handles SprDetalleCiudad.KeyDownEvent With SprDetalleCiudad If e.keyCode = Keys.Delete Then If .MaxRows > 1 Then If MessageBox.Show("Esta seguro de Eliminar la Linea?...", "Alerta", MessageBoxButtons.YesNo) = DialogResult.Yes Then .Row = .ActiveRow : .Col = 2 .Action = FPSpread.ActionConstants.ActionDeleteRow.ActionDeleteRow : .MaxRows = .MaxRows - 1 .SetActiveCell(2, .MaxRows) : .Focus() End If End If End If End With

286

End Sub End Class

* Clase Frm_mant_usuario.vb

Imports System.Data.SqlClient Imports System.Windows.Forms.ToolTip Imports System.Data Imports CrystalDecisions.Shared Public Class Frm_mant_usuario Inherits System.Windows.Forms.Form Private rs As ADODB.Recordset Dim MODIFICA As Boolean Dim S_codigoCli As String Dim VarFecha As Date Public cedulavalida As Boolean Private Sub Frm_mant_usuario_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load deshabilita() If Not (rs.BOF) Or Not (rs.EOF) Then rs.MoveLast() Call DisplayCurrentRecord() End If cbx_estado.SelectedIndex = 0 End Sub Private Sub Txt_codusu_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles Txt_codusu.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then If Txt_codusu.Text <> "" Then Call busca_nombre_usu() Else

287

MsgBox("Debe ingresar un Cliente ..", MsgBoxStyle.Information, "SICAG") Me.Txt_codusu.Focus() End If End If End Sub Private Sub busca_nombre_usu() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If If Not IsNumeric(Txt_codusu.Text) = True Then MsgBox("Introduzca un valor con números") Else If Me.Txt_codusu.Text <> "" Then cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", CStr(Me.Txt_codusu.Text)) cmd.Parameters.Add("@OPCION", 3) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then txt_nombre.Text = dr("NOMBRE") txt_apellido.Text = dr("APELLIDOS") txt_usuario.Text = dr("USUUSER") txt_contraseña.Text = dr("USUPASSWORD") dtp_fecharegistro.Value = dr("FECHA") If Trim(dr("ESTADO")) <> "1" Then cbx_estado.SelectedIndex = 1 Else cbx_estado.SelectedIndex = 0 End If deshabilita() Else MsgBox("Usuario no existe..!", MsgBoxStyle.Information, "Mensaje") Txt_codusu.Focus() End If dr.Close() Else

288

MsgBox("Ingrese numero de cédula del Cliente..!", MsgBoxStyle.Information, "Mensaje") End If End If End Sub Private Sub deshabilita() txt_contraseña.Enabled = False txt_nombre.Enabled = False txt_usuario.Enabled = False txt_contraseña.Enabled = False dtp_fecharegistro.Enabled = False cbx_estado.Enabled = False txt_apellido.Enabled = False Me.TlbBotones.Buttons(0).Enabled = True : Me.TlbBotones.Buttons(2).Enabled = False Me.TlbBotones.Buttons(6).Enabled = False : Me.TlbBotones.Buttons(12).Enabled = False Me.TlbBotones.Buttons(10).Enabled = False : Me.TlbBotones.Buttons(4).Enabled = True Me.TlbBotones.Buttons(8).Enabled = True : Me.TlbBotones.Buttons(14).Enabled = True End Sub Private Sub IngresarDatos() limpia_textos() 'Call ObtieneSecuencia() habilita() MODIFICA = False Txt_codusu.Focus() Me.TlbCursores.Enabled = False End Sub Private Sub limpia_textos() Me.Txt_codusu.Text = "" dtp_fecharegistro.Value = Today() Me.txt_nombre.Text = "" Me.txt_apellido.Text = "" Me.txt_usuario.Text = "" Me.txt_contraseña.Text = "" Me.cbx_estado.SelectedIndex = 0 End Sub Private Sub habilita() Me.TlbBotones.Buttons(0).Enabled = False : Me.TlbBotones.Buttons(2).Enabled = True

289

Me.TlbBotones.Buttons(6).Enabled = False : Me.TlbBotones.Buttons(12).Enabled = False Me.TlbBotones.Buttons(10).Enabled = True : Me.TlbBotones.Buttons(4).Enabled = False Me.TlbBotones.Buttons(8).Enabled = False : Me.TlbBotones.Buttons(14).Enabled = True Me.txt_contraseña.Enabled = True Me.txt_nombre.Enabled = True Me.txt_usuario.Enabled = True Me.txt_apellido.Enabled = True Me.txt_contraseña.Enabled = True Me.dtp_fecharegistro.Enabled = True Me.cbx_estado.Enabled = True End Sub Private Sub GrabarDatos() Dim SECUENCIA As String Vertifica_Cedula(Me.Txt_codusu.Text) If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If If Not IsNumeric(Txt_codusu.Text) = False Then If Me.Txt_codusu.Text <> "" And Me.txt_nombre.Text <> "" And Me.txt_apellido.Text <> "" And Me.txt_usuario.Text <> "" Then If cedulavalida = True Then If MODIFICA = True Then cmd.CommandText = "SEG_MOD_USUARIO" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@CEDULA", CStr(Me.Txt_codusu.Text)) cmd.Parameters.Add("@PERNOMBRE", CStr(Me.txt_nombre.Text)) cmd.Parameters.Add("@PERAPELLIDO", CStr(Me.txt_apellido.Text)) cmd.Parameters.Add("@USUPASSWORD", CStr(Me.txt_contraseña.Text)) cmd.Parameters.Add("@USUUSER", CStr(Me.txt_usuario.Text)) If Me.cbx_estado.Text = "ACTIVO" Then cmd.Parameters.Add("@CODESTADO", "1") Else cmd.Parameters.Add("@CODESTADO", "0") End If

290

Try cmd.ExecuteNonQuery() MsgBox("Registro Modificado") Me.TlbCursores.Enabled = True Catch ex As Exception MsgBox(ex.Message) End Try deshabilita() Me.Txt_codusu.Enabled = True MODIFICA = False Else '******************** If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 8) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If Not dr.Read = True Then dr.Close() Else SECUENCIA = dr("SECUENCIA") End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If 'dr.Close() cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", Txt_codusu.Text) cmd.Parameters.Add("@OPCION", 8) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If Not dr.Read = True Then

291

'dr.Close() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "SEG_ING_USUARIO" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@CEDULA", Me.Txt_codusu.Text) cmd.Parameters.Add("@PERNOMBRE", Me.txt_nombre.Text) cmd.Parameters.Add("@PERAPELLIDO", Me.txt_apellido.Text) cmd.Parameters.Add("@USUPASSWORD", Me.txt_contraseña.Text) cmd.Parameters.Add("@USUUSER", Me.txt_usuario.Text) cmd.Parameters.Add("@USUFECCREAC", Me.dtp_fecharegistro.Value) SECUENCIA = SECUENCIA + 1 cmd.Parameters.Add("@SEC", CStr(SECUENCIA)) Try cmd.ExecuteNonQuery() MsgBox("Registro Ingresado", MsgBoxStyle.Information, "Mensaje") Me.Txt_codusu.Enabled = True Call deshabilita() Me.TlbCursores.Enabled = True Catch ex As Exception MsgBox(ex.Message) End Try 'ACTUALIZA CAMPO SECUENCIA 'dr.Close() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "SEG_ING_SECUENCIA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@SEC", SECUENCIA) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message)

292

End Try If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If '*** FIN DE SECUENCIA Else MsgBox("Usuario ya existe", MsgBoxStyle.Information, "Mensaje") End If End If Else Me.Txt_codusu.Focus() End If Else MsgBox("Faltan datos de llenar", MsgBoxStyle.Information, "Mensaje") End If Else MsgBox("La cedula debe tener datos numéricos", MsgBoxStyle.Information, "Mensaje") End If dr.Close() rs.Close() rs.Open("select top 1000 * from usuario", "SERVER=(local);UID=sa;PWD=sasa;DATABASE=GYM;Provider=SQLOLEDB") End Sub Private Sub BuscarDatos() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If limpia_textos() Dim frm_busq As New Frm_Buscar S_Codigo = "" TablaBuscada = "VIS_SICAG_BUSQUEDA1" Campo1 = "CODCEDULA" Campo2 = "NOMBRE" Campo3 = "Busqueda Por Usuario" frm_busq.ShowDialog() If S_Codigo <> "" Then Txt_codusu.Text = S_Codigo Call busca_nombre_usu() End If End Sub

293

Private Sub SalirDatos() If rs.State = 1 Then rs.Close() End If Me.Close() End Sub Private Sub ModificarDatos() If Trim(Me.Txt_codusu.Text) <> "" Then habilita() Me.txt_usuario.Enabled = False Me.dtp_fecharegistro.Enabled = False MODIFICA = True Me.TlbCursores.Enabled = False Else MsgBox("No Existen datos a modificar...", vbInformation, "A T E N C I O N") Me.Txt_codusu.Focus() End If End Sub Private Sub DeshacerDatos() limpia_textos() deshabilita() Me.Txt_codusu.Enabled = True Me.Txt_codusu.Focus() Me.TlbCursores.Enabled = True If rs.BOF And rs.EOF Then Else rs.MoveLast() DisplayCurrentRecord() End If End Sub Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" Call IngresarDatos() Case "Grabar" Call GrabarDatos() Case "Modificar" Call ModificarDatos() Case "Eliminar" 'Call EliminarDatos() Case "Buscar"

294

Call BuscarDatos() Case "Deshacer" Call DeshacerDatos() Case "Imprimir" 'Call ImprimirDatos() Case "Salir" Call SalirDatos() End Select End Sub Private Sub TlbCursores_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbCursores.ButtonClick Select Case e.Button.Tag Case "Primero" If rs.BOF And rs.EOF Then Else rs.MoveFirst() DisplayCurrentRecord() End If Case "Anterior" If rs.BOF And rs.EOF Then Else rs.MovePrevious() DisplayCurrentRecord() End If Case "Siguiente" If rs.BOF And rs.EOF Then Else rs.MoveNext() DisplayCurrentRecord() End If Case "Ultimo" If rs.BOF And rs.EOF Then Else rs.MoveLast() DisplayCurrentRecord() End If End Select End Sub Private Sub DisplayCurrentRecord() Dim i As Integer Dim s As String If rs.BOF Then rs.MoveFirst()

295

End If If rs.EOF Then rs.MoveLast() End If Me.Txt_codusu.Text = rs.Fields("codcedula").Value.ToString Me.txt_contraseña.Text = rs.Fields("USUPASSWORD").Value.ToString Me.txt_usuario.Text = rs.Fields("USUUSER").Value.ToString Me.dtp_fecharegistro.Value = rs.Fields("USUFECCREAC").Value If Trim(Me.Txt_codusu.Text) <> "" Then S_Codigo = Me.Txt_codusu.Text If S_Codigo <> "" Then txt_apellido.Text = S_Codigo Call busca_nombre_usu() End If End If If Trim(rs.Fields("USUESTADO").Value.ToString) = "1" Then cbx_estado.SelectedIndex = 0 Else cbx_estado.SelectedIndex = 1 End If End Sub Private Sub dtp_fecharegistro_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles dtp_fecharegistro.ValueChanged Me.dtp_fecharegistro.MaxDate = Today() End Sub Private Sub Vertifica_Cedula(ByVal campocedula As String) cedulavalida = True Dim numero As String Dim suma As Integer Dim residuo As Integer Dim pri As Boolean Dim pub As Boolean Dim nat As Boolean Dim numeroProvincias As Integer Dim modulo As Integer Dim d1, d2, d3, d4, d5, d6, d7, d8, d9, d10 As Integer Dim p1, p2, p3, p4, p5, p6, p7, p8, p9, p10 As Integer Dim digitoverificador As Integer numero = campocedula suma = 0 residuo = 0

296

pri = False pub = False nat = False numeroProvincias = 22 modulo = 11 Dim ok As Integer ok = 1 For I As Integer = 0 To numeroProvincias Next I d1 = numero.Substring(0, 1) d2 = numero.Substring(1, 1) d3 = numero.Substring(2, 1) d4 = numero.Substring(3, 1) d5 = numero.Substring(4, 1) d6 = numero.Substring(5, 1) d7 = numero.Substring(6, 1) d8 = numero.Substring(7, 1) d9 = numero.Substring(8, 1) d10 = numero.Substring(9, 1) If d3 = 7 Or d3 = 8 Then MsgBox("El tercer dígito ingresado es inválido...", vbInformation, "A T E N C I O N") cedulavalida = False End If 'Solo para personas naturales (modulo 10) If d3 < 6 Then nat = True p1 = d1 * 2 : If p1 >= 10 Then p1 -= 9 p2 = d2 * 1 : If p2 >= 10 Then p2 -= 9 p3 = d3 * 2 : If p3 >= 10 Then p3 -= 9 p4 = d4 * 1 : If p4 >= 10 Then p4 -= 9 p5 = d5 * 2 : If p5 >= 10 Then p5 -= 9 p6 = d6 * 1 : If p6 >= 10 Then p6 -= 9 p7 = d7 * 2 : If p7 >= 10 Then p7 -= 9 p8 = d8 * 1 : If p8 >= 10 Then p8 -= 9 p9 = d9 * 2 : If p9 >= 10 Then p9 -= 9 modulo = 10 Else If d3 = 6 Then

297

pub = True p1 = d1 * 3 p2 = d2 * 2 p3 = d3 * 7 p4 = d4 * 6 p5 = d5 * 5 p6 = d6 * 4 p7 = d7 * 3 p8 = d8 * 2 p9 = 0 Else If d3 = 9 Then pri = True p1 = d1 * 4 p2 = d2 * 3 p3 = d3 * 2 p4 = d4 * 7 p5 = d5 * 6 p6 = d6 * 5 p7 = d7 * 4 p8 = d8 * 3 p9 = d9 * 2 End If End If End If ' Solo para entidades privadas (modulo 11) */ suma = p1 + p2 + p3 + p4 + p5 + p6 + p7 + p8 + p9 residuo = suma Mod modulo 'Si residuo=0, dig.ver.=0, caso contrario 10 - residuo*/ If residuo = 0 Then digitoverificador = 0 Else digitoverificador = modulo - residuo End If 'ahora comparamos el elemento de la posicion 10 con el dig. ver. If pub = True Then If digitoverificador <> d9 Then MsgBox("El ruc de la empresa del sector público es incorrecto...", vbInformation, "A T E N C I O N") cedulavalida = False End If

298

'El ruc de las empresas del sector publico terminan con 0001*/ If numero.Length > 10 Then If numero.Length = 13 Then If numero.Substring(9, 4) <> "0001" Then MsgBox("El ruc de la empresa del sector público debe terminar con 0001...", vbInformation, "A T E N C I O N") cedulavalida = False End If Else MsgBox("El numero debe tener 10 o 13 numeros ...", vbInformation, "A T E N C I O N") cedulavalida = False End If End If Else If pri = True Then If digitoverificador <> d10 Then MsgBox("El ruc de la empresa del sector privado es incorrecto...", vbInformation, "A T E N C I O N") cedulavalida = False End If If numero.Length > 10 Then If numero.Length = 13 Then If numero.Substring(10, 3) <> "001" Then MsgBox("El ruc de la empresa del sector privado debe terminar con 001'...", vbInformation, "A T E N C I O N") cedulavalida = False End If Else MsgBox("El numero debe tener 10 o 13 numeros ...", vbInformation, "A T E N C I O N") cedulavalida = False End If End If Else If nat = True Then If digitoverificador <> d10 Then MsgBox("El número de cédula de la persona natural es incorrecto...", vbInformation, "A T E N C I O N") cedulavalida = False End If If numero.Length > 10 Then If numero.Length = 13 Then If numero.Substring(10, 3) <> "001" Then

299

MsgBox("El ruc de la persona natural debe terminar con 001...", vbInformation, "A T E N C I O N") cedulavalida = False End If Else MsgBox("El numero debe tener 10 o 13 numeros ...", vbInformation, "A T E N C I O N") cedulavalida = False End If End If End If End If End If End Sub Private Sub Txt_codusu_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Txt_codusu.TextChanged End Sub End Class

* Clase Frm_pro_Credito.vb

Imports System.Data Imports System.Data.OleDb Imports System.Data.SqlClient Public Class Frm_pro_Credito Inherits System.Windows.Forms.Form Private rs As ADODB.Recordset Dim COD_PROD As Integer Dim iva, TotalG As Double Public MODIFICA As Boolean

300

Dim CODCAJA, COD_PER, DIASMEMBRESIA, FILA, I As Integer 'VARIABLES PARA BUSQUEDA DE FACTURA CABECERA Dim VarFecha As Date Dim VarHora As DateTime Dim VarNumero, VarNumero1, VarNumeroCajero, VarNumFac As Integer Dim VarPorcedescto1, VarPorcedescto2, VarPorIva As Decimal Dim VarSubtotal, VarDescuento1, VarDescuento2, VarImpuesto, VarTotal As Double Dim VarAutoriza, VarTipoAplic, VarImpreso, VarNombreCajero, VarComentario As String Dim VarTipo, VarSucursal, VarCaja, VarBodega, VarCliente, VarVendedor, VarCajero As String 'VARIABLES PARA BUSQUEDA DE FACTURA DETALLES Dim DetVarFecha As Date Dim DetVarHora As DateTime Dim DetVarNumerocab, DetVarNumerocaja, DetVarCantidad As Integer Dim DetVarTipo, DetVarSucursal, DetVarCaja, DetVarCodigoproducto, DetVarBodega As String Dim DetVarTotal1, DetVarTotal2, DetVarDescuento1, DetVarDescuento2, DetVarValordescuento1, DetVarValordescuento2, DetVarPrecio, DetVarCosto, DetVarIva As Decimal 'VARIABLES PARA BUSQUEDA DE FACTURA PAGOS Dim PagVarHora As DateTime Dim PagVarNumerocab, PagVarNumerocaja As Integer Dim PagVarPorcobrar, PagVarValorrecibido As Double Dim PagVarFecha, PagVarFechacheque, PagVarFechadevolucion As Date Dim PagVarTipo, PagVarSucursal, PagVarCaja, PagVarTipoaplic, PagVarFormapago As String Dim PagVarCodigotarjeta, PagVarNumerotarjeta, PagVarNombrecliente, PagVarTelefonotarjeta, PagVarLote, PagVarNumerodevolucion, PagVarCancelado As String Dim PagVarCodigobanco, PagVarCodigociudad, PagVarNumerocheque, PagVarCtacte, PagVarNombreempleado, PagVarCedulaempleado, PagVarAutorizacioncred, PagVarQuienregala, PagVarBeneficiario, PagVarAutorizacionobs As String '****************FUNCIONES PROPIAS****************' Private Sub LlenaParametros() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If

301

cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 11) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtCaja.Text = dr("DESCRIPCION") CODCAJA = dr("CODCAJA") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If 'CARGO VALOR DE IVA cmd = New SqlClient.SqlCommand("SEG_CONS_PARAMETRO", cn) cmd.CommandType = CommandType.StoredProcedure Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then iva = dr("PORCENTAJEIVA") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Me.TxtVendedor.Text = CStr(usu) : Me.TxtSucursal.Text = CStr(SUCURSAL) End Sub Private Sub Habilita() Me.TlbBotones.Buttons(0).Enabled = False : Me.TlbBotones.Buttons(2).Enabled = True Me.TlbBotones.Buttons(6).Enabled = False : Me.TlbBotones.Buttons(12).Enabled = False Me.TlbBotones.Buttons(10).Enabled = True : Me.TlbBotones.Buttons(4).Enabled = False Me.TlbBotones.Buttons(8).Enabled = False : Me.TlbBotones.Buttons(14).Enabled = True Me.TxtNumero.Enabled = False : Me.TxtNumfac.Enabled = True Me.SprDetalleDevolucion.Enabled = True End Sub

302

Private Sub Deshabilita() Me.TlbBotones.Buttons(0).Enabled = True : Me.TlbBotones.Buttons(2).Enabled = False Me.TlbBotones.Buttons(6).Enabled = True : Me.TlbBotones.Buttons(12).Enabled = True Me.TlbBotones.Buttons(10).Enabled = False : Me.TlbBotones.Buttons(4).Enabled = True Me.TlbBotones.Buttons(8).Enabled = True : Me.TlbBotones.Buttons(14).Enabled = True Me.SprDetalleDevolucion.Enabled = False : Me.DtpFechaRegistro.Enabled = False Me.TxtNumero.Enabled = True : Me.TxtNumfac.Enabled = False End Sub Private Sub BuscaNombreCli() If Me.TxtCodCli.Text <> "" Then cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", Me.TxtCodCli.Text) cmd.Parameters.Add("@OPCION", 5) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtNombreCli.Text = dr("NOMBRE") COD_PER = dr("CODPERS") Else MsgBox("Cliente no existe..!", MsgBoxStyle.Information, "Mensaje") Me.TxtCodCli.Focus() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Else MsgBox("Ingrese numero de cédula del cliente..!", MsgBoxStyle.Information, "Mensaje") End If End Sub Private Sub Limpia() DtpFechaRegistro.Value = Today() : TxtCodCli.Text = ""

303

SprDetalleDevolucion.MaxRows = 0 : SprDetalleDevolucion.MaxRows = 1 SprDetalleDevolucion.Row = SprDetalleDevolucion.MaxRows SprDetalleDevolucion.Col = 1 : SprDetalleDevolucion.Text = 0.0 SprDetalleDevolucion.Col = 2 : SprDetalleDevolucion.Text = 1 TxtSubtotal.Text = "" : TxtDescto.Text = "" Txtiva.Text = "" : Txttotal.Text = "" : TxtNumfac.Text = "" End Sub Private Sub CambioMembresia() Dim HOY As DateTime Dim FechaCaducidad As DateTime 'AQUIIIIIIII If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_BUSCA_CADUCIDAD_CLIENTE" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@COD", CInt(COD_PER)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then FechaCaducidad = dr("FECHASALIDA") If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_MOD_MEMB_CLIENTE" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@COD", CInt(COD_PER)) cmd.Parameters.Add("@FECHAMOD", Today) If COD_PROD = 1 Then HOY = FechaCaducidad.AddDays(-DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 1) ElseIf COD_PROD = 2 Then HOY = FechaCaducidad.AddDays(-DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 2)

304

ElseIf COD_PROD = 3 Then HOY = FechaCaducidad.AddDays(-DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 3) ElseIf COD_PROD = 4 Then HOY = FechaCaducidad.AddDays(-DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 4) ElseIf COD_PROD = 5 Then HOY = FechaCaducidad.AddDays(-DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 5) ElseIf COD_PROD = 6 Then HOY = FechaCaducidad.AddDays(-DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 6) ElseIf COD_PROD = 7 Then HOY = FechaCaducidad.AddDays(-DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 7) ElseIf COD_PROD = 8 Then HOY = FechaCaducidad.AddDays(-DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 8) Else HOY = FechaCaducidad.AddDays(-DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 9) End If Try cmd.ExecuteNonQuery() MsgBox("Ha cambiado la membresia del cliente") Catch ex As Exception MsgBox(ex.Message) End Try End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub ObtieneSecuencia() Dim CodigoSuc As Integer CodigoSuc = Val(Trim(Microsoft.VisualBasic.Right(SUCURSAL, 3))) If cn.State = ConnectionState.Closed Then : cn.Open() : End If

305

If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_SECUENCIA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("DE")) cmd.Parameters.Add("@CODIGO2", CInt(CodigoSuc)) cmd.Parameters.Add("@CODIGO3", CInt(CODCAJA)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtNumero.Text = dr("NUMERO") + 1 Else TxtNumero.Text = "1" End If dr.Close() End Sub Private Sub GrabaSecuencia() Dim CodigoSuc As Integer CodigoSuc = Val(Trim(Microsoft.VisualBasic.Right(SUCURSAL, 3))) If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_SECUENCIA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("DE")) cmd.Parameters.Add("@CODIGO2", CInt(CodigoSuc)) cmd.Parameters.Add("@CODIGO3", CInt(CODCAJA)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_MOD_SECUENCIA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", CStr("DE"))

306

cmd.Parameters.Add("@SUCURSAL", CInt(CodigoSuc)) cmd.Parameters.Add("@CAJA", CInt(CODCAJA)) cmd.Parameters.Add("@NUMERO", CInt(Val(TxtNumero.Text))) Try cmd.ExecuteNonQuery() dr.Close() Catch ex As Exception MsgBox(ex.Message) End Try Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_ING_SECUENCIA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", CStr("DE")) cmd.Parameters.Add("@SUCURSAL", CInt(CodigoSuc)) cmd.Parameters.Add("@CAJA", CInt(CODCAJA)) cmd.Parameters.Add("@NUMERO", 1) Try cmd.ExecuteNonQuery() dr.Close() Catch ex As Exception MsgBox(ex.Message) End Try End If End Sub Public Sub CargarFactura() If Trim(TxtNumero.Text) <> "" Then SprDetalleDevolucion.MaxRows = 0 SprDetalleDevolucion.MaxRows = 1 If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_FACTURA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("NV")) cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(Trim(TxtNumfac.Text))) Try dr = cmd.ExecuteReader()

307

Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then VarNumero = dr("NUMERO") : VarNumero1 = dr("NUMEROCAJA") : VarTipo = dr("TIPO") : VarSucursal = dr("SUCURSAL") : VarCaja = dr("CAJA") VarFecha = dr("FECHA") : VarBodega = dr("BODEGA") : VarCliente = dr("CLIENTE") : VarVendedor = dr("VENDEDOR") VarCajero = dr("CAJERO") : VarNumeroCajero = dr("NUMEROCAJERO") : VarAutoriza = dr("AUTORIZA") : VarNombreCajero = dr("NOMBRECAJERO") VarComentario = dr("COMENTARIO") : VarPorcedescto1 = dr("PORCEDESCTO1") : VarPorcedescto2 = dr("PORCEDESCTO2") : VarPorIva = dr("PORCEIVA") VarSubtotal = dr("SUBTOTAL") : VarDescuento1 = dr("DESCUENTO1") : VarDescuento2 = dr("DESCUENTO2") : VarImpuesto = dr("IMPUESTO") VarTotal = dr("TOTAL") : VarTipoAplic = dr("TIPOAPLIC") : VarImpreso = dr("IMPRESO") : VarHora = dr("HORA") DtpFechaRegistro.Value = CDate(VarFecha) If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarCaja) cmd.Parameters.Add("@OPCION", 1) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtCaja.Text = dr("DESCRIPCION") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarVendedor)

308

cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtVendedor.Text = dr("USUUSER") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarSucursal) cmd.Parameters.Add("@OPCION", 3) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtSucursal.Text = dr("DESCRIPCION") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarCliente) cmd.Parameters.Add("@OPCION", 5) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtCodCli.Text = dr("CEDULA") TxtNombreCli.Text = dr("NOMBRE") COD_PER = dr("CODPERS") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If

309

cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarBodega) cmd.Parameters.Add("@OPCION", 3) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtBodega.Text = dr("DESCRIPCION") End If TxtSubtotal.Text = Format(CDbl(VarSubtotal), "######.00") TxtDescto.Text = Format(CDbl(VarDescuento1), "######.00") Txtiva.Text = Format(CDbl(VarImpuesto), "######.00") Txttotal.Text = Format(CDbl(VarTotal), "######.00") If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", VarNumero) cmd.Parameters.Add("@OPCION", 1) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try I = 1 While dr.Read DetVarCodigoproducto = dr("CODIGOPRODUCTO") : DetVarFecha = dr("FECHA") : DetVarCantidad = dr("CANTIDAD") DetVarTotal1 = dr("TOTAL1") : DetVarTotal2 = dr("TOTAL2") : DetVarDescuento1 = dr("DESCUENTO1") : DetVarDescuento2 = dr("DESCUENTO2") DetVarValordescuento1 = dr("VALORDESCUENTO1") : DetVarValordescuento2 = dr("VALORDESCUENTO2") : DetVarPrecio = dr("PRECIO") DetVarCosto = dr("COSTO") : DetVarIva = dr("IVA") : DetVarHora = dr("HORA")

310

With SprDetalleDevolucion .Row = I : .Col = 1 : .Text = DetVarDescuento1 .Col = 2 : .Text = DetVarCantidad .Col = 3 : .Text = DetVarCodigoproducto .Col = 5 : .Text = dr("NOMBRE") .Col = 6 : .Text = DetVarPrecio .Col = 7 : .Text = DetVarTotal2 .Col = 9 : .Text = DetVarIva .Col = 10 : .Text = CStr(dr("TIPOMEMBRE")) .Col = 11 : .Text = CInt(dr("DIAS")) .Col = 12 : .Text = DetVarCosto .Col = 13 : .Text = DetVarValordescuento1 .Col = 14 : .Text = DetVarCodigoproducto .MaxRows = .MaxRows + 1 End With I = I + 1 End While Else MsgBox("Factura no existe..!", MsgBoxStyle.Information, "Mensaje") Me.TxtNumero.Focus() End If Else MsgBox("Ingrese Factura a Buscar..!", MsgBoxStyle.Information, "Mensaje") Me.TxtNumero.Focus() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Public Sub CargarDevolucion() If Trim(TxtNumero.Text) <> "" Then SprDetalleDevolucion.MaxRows = 0 SprDetalleDevolucion.MaxRows = 1 If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_FACTURA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("DE")) cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(Trim(TxtNumero.Text)))

311

Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then VarNumero = dr("NUMERO") : VarNumFac = dr("NUMAPLIC") : VarTipo = dr("TIPO") : VarSucursal = dr("SUCURSAL") : VarCaja = dr("CAJA") VarFecha = dr("FECHA") : VarBodega = dr("BODEGA") : VarCliente = dr("CLIENTE") : VarVendedor = dr("VENDEDOR") VarCajero = dr("CAJERO") : VarNumeroCajero = dr("NUMEROCAJERO") : VarAutoriza = dr("AUTORIZA") : VarNombreCajero = dr("NOMBRECAJERO") VarComentario = dr("COMENTARIO") : VarPorcedescto1 = dr("PORCEDESCTO1") : VarPorcedescto2 = dr("PORCEDESCTO2") : VarPorIva = dr("PORCEIVA") VarSubtotal = dr("SUBTOTAL") : VarDescuento1 = dr("DESCUENTO1") : VarDescuento2 = dr("DESCUENTO2") : VarImpuesto = dr("IMPUESTO") VarTotal = dr("TOTAL") : VarTipoAplic = dr("TIPOAPLIC") : VarImpreso = dr("IMPRESO") : VarHora = dr("HORA") DtpFechaRegistro.Value = CDate(VarFecha) If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarCaja) cmd.Parameters.Add("@OPCION", 1) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtCaja.Text = dr("DESCRIPCION") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure

312

cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarVendedor) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtVendedor.Text = dr("USUUSER") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarSucursal) cmd.Parameters.Add("@OPCION", 3) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtSucursal.Text = dr("DESCRIPCION") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarCliente) cmd.Parameters.Add("@OPCION", 5) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtCodCli.Text = dr("CODPERS") TxtNombreCli.Text = dr("NOMBRE") COD_PER = dr("CODPERS") End If

313

If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If TxtSubtotal.Text = Format(CDbl(VarSubtotal), "######.00") TxtDescto.Text = Format(CDbl(VarDescuento1), "######.00") Txtiva.Text = Format(CDbl(VarImpuesto), "######.00") Txttotal.Text = Format(CDbl(VarTotal), "######.00") If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", VarNumero) cmd.Parameters.Add("@OPCION", 1) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try I = 1 While dr.Read DetVarCodigoproducto = dr("CODIGOPRODUCTO") : DetVarFecha = dr("FECHA") : DetVarCantidad = dr("CANTIDAD") DetVarTotal1 = dr("TOTAL1") : DetVarTotal2 = dr("TOTAL2") : DetVarDescuento1 = dr("DESCUENTO1") : DetVarDescuento2 = dr("DESCUENTO2") DetVarValordescuento1 = dr("VALORDESCUENTO1") : DetVarValordescuento2 = dr("VALORDESCUENTO2") : DetVarPrecio = dr("PRECIO") DetVarCosto = dr("COSTO") : DetVarIva = dr("IVA") : DetVarHora = dr("HORA") With SprDetalleDevolucion .Row = I : .Col = 1 : .Text = DetVarDescuento1 .Col = 2 : .Text = DetVarCantidad .Col = 3 : .Text = DetVarCodigoproducto .Col = 5 : .Text = dr("NOMBRE") .Col = 6 : .Text = DetVarPrecio .Col = 7 : .Text = DetVarTotal2 .Col = 9 : .Text = DetVarIva .Col = 10 : .Text = CStr(dr("TIPOMEMBRE")) .Col = 11 : .Text = CInt(dr("DIAS")) .Col = 12 : .Text = DetVarCosto .Col = 13 : .Text = DetVarCantidad .Col = 14 : .Text = DetVarCodigoproducto

314

.MaxRows = .MaxRows + 1 End With I = I + 1 End While Else MsgBox("Devolución no existe..!", MsgBoxStyle.Information, "Mensaje") Me.TxtNumero.Focus() End If Else MsgBox("Ingrese Devolución a Buscar..!", MsgBoxStyle.Information, "Mensaje") Me.TxtNumero.Focus() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub DisplayCurrentRecord() Dim i As Integer Dim s As String Dim CodigoCabecera As Integer If rs.BOF Then rs.MoveFirst() End If If rs.EOF Then rs.MoveLast() End If SprDetalleDevolucion.MaxRows = 0 SprDetalleDevolucion.MaxRows = 1 Me.TxtNumero.Text = rs.Fields("numerocaja").Value.ToString Me.TxtNumfac.Text = rs.Fields("numaplic").Value.ToString Me.TxtCodCli.Text = rs.Fields("cliente").Value.ToString Me.DtpFechaRegistro.Value = rs.Fields("fecha").Value Me.TxtSubtotal.Text = rs.Fields("subtotal").Value.ToString Me.Txtiva.Text = rs.Fields("impuesto").Value.ToString Me.TxtDescto.Text = rs.Fields("descuento1").Value.ToString Me.Txttotal.Text = rs.Fields("total").Value.ToString CodigoCabecera = rs.Fields("numero").Value If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear()

315

cmd.Parameters.Add("@CODIGO", rs.Fields("caja").Value) cmd.Parameters.Add("@OPCION", 1) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtCaja.Text = dr("DESCRIPCION") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", rs.Fields("vendedor").Value) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtVendedor.Text = dr("USUUSER") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", rs.Fields("sucursal").Value) cmd.Parameters.Add("@OPCION", 3) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtSucursal.Text = dr("DESCRIPCION") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure

316

cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", rs.Fields("cliente").Value) cmd.Parameters.Add("@OPCION", 5) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtNombreCli.Text = dr("NOMBRE") COD_PER = dr("CODPERS") End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CodigoCabecera) cmd.Parameters.Add("@OPCION", 1) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try i = 1 While dr.Read DetVarCodigoproducto = dr("CODIGOPRODUCTO") : DetVarFecha = dr("FECHA") : DetVarCantidad = dr("CANTIDAD") DetVarTotal1 = dr("TOTAL1") : DetVarTotal2 = dr("TOTAL2") : DetVarDescuento1 = dr("DESCUENTO1") : DetVarDescuento2 = dr("DESCUENTO2") DetVarValordescuento1 = dr("VALORDESCUENTO1") : DetVarValordescuento2 = dr("VALORDESCUENTO2") : DetVarPrecio = dr("PRECIO") DetVarCosto = dr("COSTO") : DetVarIva = dr("IVA") : DetVarHora = dr("HORA") With SprDetalleDevolucion .Row = i : .Col = 1 : .Text = DetVarDescuento1 .Col = 2 : .Text = DetVarCantidad .Col = 3 : .Text = DetVarCodigoproducto .Col = 5 : .Text = dr("NOMBRE") .Col = 6 : .Text = DetVarPrecio .Col = 7 : .Text = DetVarTotal2 .Col = 9 : .Text = DetVarIva

317

.Col = 10 : .Text = CStr(dr("TIPOMEMBRE")) .Col = 11 : .Text = CInt(dr("DIAS")) .Col = 12 : .Text = DetVarCosto .MaxRows = .MaxRows + 1 End With i = i + 1 End While If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub IngresarDatos() Call Limpia() Call ObtieneSecuencia() Call Habilita() TxtNumfac.Focus() End Sub Private Sub ModificarDatos() If Trim(TxtNumero.Text) <> "" And Trim(TxtCodCli.Text) <> "" Then Call Habilita() TxtNumfac.Focus() Else MsgBox("Ingrese una Nota de Credito para modificar", MsgBoxStyle.Information, "ATENCION") TxtNumero.Focus() End If End Sub Private Sub EliminaFactura() Dim CodigoCabecera As Integer If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_CAB", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", "DE") cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(TxtNumero.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message)

318

End Try If dr.Read Then CodigoCabecera = dr("NUMERO") End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_CABECERA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "DE") cmd.Parameters.Add("@SUCURSAL", CODSUCU) cmd.Parameters.Add("@CAJA", CODCAJA) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@OPCION", 1) Try cmd.ExecuteNonQuery() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_CABECERA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "DE") cmd.Parameters.Add("@SUCURSAL", CODSUCU) cmd.Parameters.Add("@CAJA", CODCAJA) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@OPCION", 2) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@OPCION", 1) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try If cn.State = ConnectionState.Closed Then : cn.Open() : End If

319

If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@OPCION", 2) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_EXISTENCIAS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "DE") cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) Try cmd.ExecuteNonQuery() MsgBox("DEVOLUCION ELIMINADA EXITOSAMENTE") Catch ex As Exception MsgBox(ex.Message) End Try Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub EliminarDatos() If Trim(TxtNumero.Text <> "") Then If MessageBox.Show("Va a Eliminar un Registro de la Base. Desea Continuar?...", "ALERTA", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then Call EliminaFactura() End If End If End Sub Private Sub CalculaTotales()

320

Dim Descuento, DescuentoT, ValIva, ValIvaT, Subtotal, Total, PrecioU, PrecioT As Double Dim Cantidad As Integer TotalG = 0 With SprDetalleDevolucion For I = 1 To .MaxRows - 1 .Col = 8 : .Row = I If .Value = 0 Then .Row = I : .Col = 2 : Cantidad = Val(.Text) .Col = 6 : PrecioU = CDbl(Val(.Text)) .Col = 7 : PrecioT = CDbl(Val(.Text)) .Col = 1 : Descuento = CDbl(Val(.Text)) Subtotal = Subtotal + (Math.Round(PrecioT, 2)) DescuentoT = DescuentoT + Math.Round(((Math.Round(PrecioT, 2)) * Math.Round((Descuento / 100), 2)), 2) .Col = 9 If CDbl(.Text) <> 0.0 Then ValIva = ValIva + Math.Round((((Math.Round(PrecioT, 2)) - ((Math.Round(PrecioT, 2)) * Math.Round((Descuento / 100), 2))) * iva), 2) Total = Total + Math.Round(((Math.Round(PrecioT, 2)) - ((Math.Round(PrecioT, 2)) * Math.Round((Descuento / 100), 2)) + (((Math.Round(PrecioT, 2)) - ((Math.Round(PrecioT, 2)) * Math.Round((Descuento / 100), 2))) * iva)), 2) Else ValIva = ValIva + 0 Total = Total + Math.Round(((Math.Round(PrecioT, 2)) - ((Math.Round(PrecioT, 2)) * Math.Round((Descuento / 100), 2)) + 0), 2) End If End If Next End With ValIvaT = ValIvaT + (Math.Round(ValIva, 2)) TotalG = TotalG + (Math.Round(Total, 2)) TxtSubtotal.Text = Format(Subtotal, "###,##0.00") TxtDescto.Text = Format(DescuentoT, "###,##0.00") Txtiva.Text = Format(ValIvaT, "###,##0.00") Txttotal.Text = Format(TotalG, "###,##0.00") End Sub Private Sub GrabarDatos()

321

Dim CodigoCabecera As Integer Dim Cantidad As Integer Dim Neto, Bruto, xvalor_desc, xvalor_iva As Double Dim MEMBRESIA As Boolean Dim TotalPagos As Double Dim FormaPago As String TotalPagos = 0 If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If If Me.TxtCodCli.Text <> "" And Me.SprDetalleDevolucion.MaxRows >= 1 Then If MODIFICA = True Then MsgBox("LA DEVOLUCION NO PUEDE SER MODIFICADA") Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_ING_CAB_FACTURA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "DE") cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) cmd.Parameters.Add("@BODEGA", Trim(CODSUCU)) cmd.Parameters.Add("@CLIENTE", Trim(TxtCodCli.Text)) cmd.Parameters.Add("@VENDEDOR", Cod_Usu) cmd.Parameters.Add("@CAJERO", Cod_Usu) cmd.Parameters.Add("@NUMEROCAJERO", CInt(2)) cmd.Parameters.Add("@AUTORIZA", "") cmd.Parameters.Add("@NOMBRECAJERO", usu) cmd.Parameters.Add("@COMENTARIO", "") cmd.Parameters.Add("@OBSERVACION", "") cmd.Parameters.Add("@PORCEDESCTO1", CDbl(0.0)) cmd.Parameters.Add("@PORCEDESCTO2", CDbl(0.0)) cmd.Parameters.Add("@PORCEIVA", (iva * 100)) cmd.Parameters.Add("@SUBTOTAL", (CDbl(TxtSubtotal.Text) * -1)) cmd.Parameters.Add("@DESCUENTO1", (CDbl(TxtDescto.Text) * -1)) cmd.Parameters.Add("@DESCUENTO2", (CDbl(0.0) * -1))

322

cmd.Parameters.Add("@IMPUESTO", (CDbl(Txtiva.Text) * -1)) cmd.Parameters.Add("@TOTAL", (CDbl(Txttotal.Text) * -1)) cmd.Parameters.Add("@TIPOAPLIC", "DE") cmd.Parameters.Add("@NUMAPLIC", CInt(TxtNumfac.Text)) cmd.Parameters.Add("@IMPRESO", "N") cmd.Parameters.Add("@HORA", TimeString) cmd.Parameters.Add("@ELIMINADO", False) Try cmd.ExecuteNonQuery() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_CAB", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", "DE") cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(TxtNumero.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CodigoCabecera = dr("NUMERO") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Catch ex As Exception MsgBox(ex.Message) End Try '********************INGRESA DETALLE With SprDetalleDevolucion For FILA = 1 To .MaxRows - 1 cmd.CommandText = "FAC_ING_DETALLE" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@TIPO", "DE") cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text))

323

.Col = 3 : .Row = FILA cmd.Parameters.Add("@CODIGOPRODUCTO", CStr(.Text)) cmd.Parameters.Add("@BODEGA", Trim(CODSUCU)) cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) .Col = 10 If Val(CInt(.Text)) = 1 Or Val(CInt(.Text)) = 2 Or Val(CInt(.Text)) = 3 Or Val(CInt(.Text)) = 4 Or Val(CInt(.Text)) = 5 Or Val(CInt(.Text)) = 6 Or Val(CInt(.Text)) = 7 Or Val(CInt(.Text)) = 8 Or Val(CInt(.Text)) = 9 Then MEMBRESIA = True : COD_PROD = CInt(.Text) .Col = 11 : DIASMEMBRESIA = CInt(.Text) End If .Col = 2 : Cantidad = CInt(.Text) cmd.Parameters.Add("@CANTIDAD", Cantidad) .Col = 6 : Bruto = Cantidad * CDbl(.Text) cmd.Parameters.Add("@TOTAL1", Bruto) .Col = 13 : xvalor_desc = CDbl(.Text) .Col = 9 : cmd.Parameters.Add("@IVA", CDbl(.Text)) .Col = 7 : Neto = CDbl(.Text) - xvalor_desc cmd.Parameters.Add("@TOTAL2", Neto) .Col = 1 : cmd.Parameters.Add("@DESCUENTO1", CDbl(.Text)) cmd.Parameters.Add("@DESCUENTO2", CDbl(0.0)) cmd.Parameters.Add("@VALORDESCUENTO1", CDbl(xvalor_desc)) cmd.Parameters.Add("@VALORDESCUENTO2", CDbl(0.0)) .Col = 6 : cmd.Parameters.Add("@PRECIO", CDbl(.Text)) .Col = 12 If Trim(.Text) = "" Then cmd.Parameters.Add("@COSTO", CDbl(0.0)) Else cmd.Parameters.Add("@COSTO", CDbl(.Text)) End If cmd.Parameters.Add("@HORA", TimeString) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try '*********** INGRESA ARCHIVO DE EXISTENCIAS cmd.CommandText = "FAC_ING_EXISTENCIAS" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear()

324

cmd.Parameters.Add("@TIPO", "DE") cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) .Col = 3 : .Row = FILA cmd.Parameters.Add("@CODIGOPRODUCTO", CStr(.Text)) cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) .Col = 2 : Cantidad = CInt(.Text) cmd.Parameters.Add("@CANTIDAD", Cantidad) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try '*** TERMINA ARCHIVO DE EXISTENCIAS Next End With '********************INGRESA PAGOS cmd.CommandText = "FAC_ING_PAGOS" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@TIPO", "DE") cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@TIPOAPLIC", "PG") cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) FormaPago = "CR" cmd.Parameters.Add("@FORMAPAGO", FormaPago) cmd.Parameters.Add("@PORCOBRAR", (CDbl(Txttotal.Text) * -1)) cmd.Parameters.Add("@VALORRECIBIDO", (CDbl(Txttotal.Text) * -1)) cmd.Parameters.Add("@CODIGOTARJETA", "") cmd.Parameters.Add("@NUMEROTARJETA", "") cmd.Parameters.Add("@NOMBRECLIENTE", "") cmd.Parameters.Add("@TELEFONOTARJETA", "") cmd.Parameters.Add("@LOTE", "") cmd.Parameters.Add("@FECHACHEQUE", "")

325

cmd.Parameters.Add("@CODIGOBANCO", "") cmd.Parameters.Add("@CODIGOCIUDAD", "") cmd.Parameters.Add("@NUMEROCHEQUE", "") cmd.Parameters.Add("@CTACTE", "") cmd.Parameters.Add("@NOMBREEMPLEADO", Trim(TxtCodCli.Text)) cmd.Parameters.Add("@CEDULAEMPLEADO", Trim(TxtCodCli.Text)) cmd.Parameters.Add("@AUTORIZACIONCRED", 1) cmd.Parameters.Add("@QUIENREGALA", "") cmd.Parameters.Add("@BENEFICIARIO", "") cmd.Parameters.Add("@AUTORIZACIONOBS", "") cmd.Parameters.Add("@FECHADEVOLUCION", "") cmd.Parameters.Add("@NUMERODEVOLUCION", "") cmd.Parameters.Add("@CANCELADO", "Si") cmd.Parameters.Add("@HORA", TimeString) cmd.Parameters.Add("@CIERRE", False) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try ' FIN DE PAGOS Call GrabaSecuencia() Call Deshabilita() Try cmd.ExecuteNonQuery() MsgBox("DEVOLUCION GENERADA EXITOSAMENTE") If MEMBRESIA = True And DIASMEMBRESIA > 0 Then Call CambioMembresia() End If Catch ex As Exception MsgBox(ex.Message) End Try End If Else MsgBox("Faltan datos de llenar", MsgBoxStyle.Information, "Mensaje") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub SalirDatos()

326

If Me.TlbBotones.Buttons(0).Enabled = False Then If MessageBox.Show("Esta en modo de Ingreso. Desea Cancelar la Devolución?...", "ALERTA", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then Call Limpia() : Call Deshabilita() : Me.TxtNumero.Focus() : Me.Close() Else If SprDetalleDevolucion.Enabled = True Then SprDetalleDevolucion.Focus() : SprDetalleDevolucion.SetActiveCell(3, SprDetalleDevolucion.MaxRows) Else TxtNumero.Focus() End If End If Else Me.Close() End If End Sub Private Sub DeshacerDatos() Call Limpia() : Call Deshabilita() : Me.TxtNumero.Focus() End Sub '******************FIN DE FUNCIONES PROPIAS*****************' Private Sub TxtNumero_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNumero.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call CargarDevolucion() End If End Sub Private Sub SprDetalleDevolucion_ButtonClicked(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_ButtonClickedEvent) Handles SprDetalleDevolucion.ButtonClicked Dim Cantidad As Integer Dim DescuentoLin, PrecioU, TotalU As Double With SprDetalleDevolucion If .ActiveCol = 8 Then If .MaxRows > 1 Then .Row = .ActiveRow : .Col = 8 .Action = FPSpread.ActionConstants.ActionDeleteRow.ActionDeleteRow : .MaxRows = .MaxRows - 1

327

.SetActiveCell(8, .MaxRows) : .Focus() : Call CalculaTotales() End If End If End With If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub SprDetalleDevolucion_KeyPressEvent(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyPressEvent) Handles SprDetalleDevolucion.KeyPressEvent Dim DescuentoLin, PrecioU, TotalU As Double Dim Cantidad As Integer Dim var1 As Integer Dim var2 As Integer Dim cod1 As String Dim cod2 As String With SprDetalleDevolucion If .ActiveCol = 2 Then If e.keyAscii = 13 Then .Col = 2 var1 = Val(Trim(.Text)) .Row = .ActiveRow : .Col = 3 If Trim(.Text) <> "" Then .Col = 13 : var2 = Val(Trim(.Text)) If var2 >= var1 Then .Col = 1 : DescuentoLin = CDbl(Val(.Text)) .Col = 2 : Cantidad = CDbl(Val(.Text)) .Col = 6 : PrecioU = CDbl(Val(.Text)) TotalU = PrecioU * Cantidad .SetText(7, .ActiveRow, Format(CDbl(TotalU), "######.00")) Call CalculaTotales() Else .Col = 2 .Text = var2 MsgBox("Solo puede ingresar un maximo de " & var2 & IIf(var2 = 1, " Cantidad", " Cantidades"), MsgBoxStyle.Information, "ATENCION") .SetActiveCell(2, .ActiveRow) End If End If End If End If

328

End With If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub TxtNumfac_KeyPress1(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNumfac.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Call CargarFactura() End If End Sub Private Sub TlbCursores_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Select Case e.Button.Tag Case "Primero" If Not (rs.BOF) Then rs.MoveFirst() Call DisplayCurrentRecord() End If Case "Anterior" If Not (rs.BOF) Then rs.MovePrevious() Call DisplayCurrentRecord() End If Case "Siguiente" If Not (rs.EOF) Then rs.MoveNext() Call DisplayCurrentRecord() End If Case "Ultimo" If Not (rs.EOF) Then rs.MoveLast() Call DisplayCurrentRecord() End If End Select End Sub Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag

329

Case "Ingresar" Call IngresarDatos() Case "Grabar" Call GrabarDatos() Case "Modificar" Call ModificarDatos() Case "Eliminar" Call EliminarDatos() Case "Buscar" 'Call buscardatos() Case "Deshacer" Call DeshacerDatos() Case "Imprimir" 'Call imprimirdatos() Case "Salir" Call SalirDatos() End Select End Sub Private Sub Frm_pro_Credito_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call LlenaParametros() Call Deshabilita() If Not rs.EOF Or Not rs.BOF Then rs.MoveLast() Call DisplayCurrentRecord() End If TxtNumero.Focus() End Sub End Class

* Clase Frm_pro_facturación.vb

Imports System.Data Imports System.Data.OleDb Imports System.Data.SqlClient Imports System.Drawing.Printing Public Class Frm_pro_facturación Inherits System.Windows.Forms.Form Private rs As ADODB.Recordset Dim ContenidoDelTexto As PrintPageEventArgs

330

Dim WithEvents Reporte As New PrintDocument Public cadena As Boolean Dim xcodigo As String Dim TipoProducto As String Dim CantidadExistencia As Integer Dim COD_PROD As Integer Dim iva, TotalG As Double Public MODIFICA As Boolean Dim CODCAJA, COD_PER, DIASMEMBRESIA, FILA, I, J As Integer Dim productoencontrado As Boolean 'VARIABLES PARA BUSQUEDA DE FACTURA CABECERA Dim VarFecha As Date Dim VarHora As DateTime Dim VarNumero, VarNumeroCajero As Integer Dim VarPorcedescto1, VarPorcedescto2, VarPorIva As Decimal Dim VarSubtotal, VarDescuento1, VarDescuento2, VarImpuesto, VarTotal As Double Dim VarAutoriza, VarTipoAplic, VarImpreso, VarNombreCajero, VarComentario As String Dim VarTipo, VarSucursal, VarCaja, VarBodega, VarCliente, VarVendedor, VarCajero As String 'VARIABLES PARA BUSQUEDA DE FACTURA DETALLES Dim DetVarFecha As Date Dim DetVarHora As DateTime Dim DetVarNumerocab, DetVarNumerocaja, DetVarCantidad As Integer Dim DetVarTipo, DetVarSucursal, DetVarCaja, DetVarCodigoproducto, DetVarBodega As String Dim DetVarTotal1, DetVarTotal2, DetVarDescuento1, DetVarDescuento2, DetVarValordescuento1, DetVarValordescuento2, DetVarPrecio, DetVarCosto, DetVarIva As Decimal 'VARIABLES PARA BUSQUEDA DE FACTURA PAGOS Dim PagVarHora As DateTime Dim PagVarNumerocab, PagVarNumerocaja As Integer Dim PagVarPorcobrar, PagVarValorrecibido As Double Dim PagVarFecha, PagVarFechacheque, PagVarFechadevolucion As Date Dim PagVarTipo, PagVarSucursal, PagVarCaja, PagVarTipoaplic, PagVarFormapago As String

331

Dim PagVarCodigotarjeta, PagVarNumerotarjeta, PagVarNombrecliente, PagVarTelefonotarjeta, PagVarLote, PagVarNumerodevolucion, PagVarCancelado As String Dim PagVarCodigobanco, PagVarCodigociudad, PagVarNumerocheque, PagVarCtacte, PagVarNombreempleado, PagVarCedulaempleado, PagVarAutorizacioncred, PagVarQuienregala, PagVarBeneficiario, PagVarAutorizacionobs As String Private Sub Frm_pro_facturación_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call VerTextoBoton() : Call LlenaParametros() : Call LlenaCombos() : Call Deshabilita() If Not (rs.BOF) Or Not (rs.EOF) Then : rs.MoveLast() : Call DisplayCurrentRecord() : End If TxtNumero.Focus() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim frm_busq As New Frm_Buscar S_Codigo = "" TablaBuscada = "VIS_CONS_CLIENTES" Campo1 = "CEDULA" Campo2 = "NOMBRE" Campo3 = "Busqueda Por Cliente" frm_busq.ShowDialog() If S_Codigo <> "" Then TxtCodCli.Text = S_Codigo Call BuscaNombreCli() If Trim(TxtNombreCli.Text) <> "" Then SprDetalleFactura.Enabled = True SprDetalleFactura.Focus() SprDetalleFactura.SetActiveCell(3, SprDetalleFactura.ActiveRow) End If End If End Sub Private Sub IngresarDatos() Call Limpia() : Call ObtieneSecuencia() : Call Habilita() : TxtCodCli.Focus() : Me.Btn_Autoriza.Enabled = True End Sub Private Sub GrabarDatos() Dim CodigoCabecera As Integer

332

Dim Cantidad As Integer Dim Neto, Bruto, xvalor_desc, xvalor_iva As Double Dim MEMBRESIA As Boolean Dim TotalPagos As Double Dim FormaPago As String Dim xcobro, xrecibo As Double TotalPagos = 0 valida_campos(cadena) If cadena = True Then If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If If Me.TxtCodCli.Text <> "" And Me.SprDetalleFactura.MaxRows >= 1 Then With SprFormadePago For I = 1 To .MaxRows .Row = I : .Col = 1 If Trim(.Text) <> "" Then .Col = 2 : TotalPagos = TotalPagos + CDbl(Val(.Text)) End If Next End With If Txttotal.Text = "" Then Txttotal.Text = 0.0 End If If Math.Round(CDbl(TotalPagos), 2) = CDbl(Txttotal.Text) Then If MODIFICA = True Then MsgBox("LA FACTURA NO PUEDE SER MODIFICADA") Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_ING_CAB_FACTURA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "NV") cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) cmd.Parameters.Add("@BODEGA", Trim(CODSUCU)) cmd.Parameters.Add("@CLIENTE", Trim(TxtCodCli.Text))

333

cmd.Parameters.Add("@VENDEDOR", Cod_Usu) cmd.Parameters.Add("@CAJERO", Cod_Usu) cmd.Parameters.Add("@NUMEROCAJERO", CInt(2)) cmd.Parameters.Add("@AUTORIZA", "") cmd.Parameters.Add("@NOMBRECAJERO", usu) cmd.Parameters.Add("@COMENTARIO", "") cmd.Parameters.Add("@OBSERVACION", "") cmd.Parameters.Add("@PORCEDESCTO1", CDbl(0.0)) cmd.Parameters.Add("@PORCEDESCTO2", CDbl(0.0)) cmd.Parameters.Add("@PORCEIVA", (iva * 100)) cmd.Parameters.Add("@SUBTOTAL", CDbl(TxtSubtotal.Text)) cmd.Parameters.Add("@DESCUENTO1", CDbl(TxtDescto.Text)) cmd.Parameters.Add("@DESCUENTO2", CDbl(0.0)) cmd.Parameters.Add("@IMPUESTO", CDbl(Txtiva.Text)) cmd.Parameters.Add("@TOTAL", CDbl(Txttotal.Text)) cmd.Parameters.Add("@TIPOAPLIC", "NV") cmd.Parameters.Add("@NUMAPLIC", CDbl(0)) cmd.Parameters.Add("@IMPRESO", "S") cmd.Parameters.Add("@HORA", TimeString) cmd.Parameters.Add("@ELIMINADO", False) Try cmd.ExecuteNonQuery() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_CAB", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", "NV") cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(TxtNumero.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CodigoCabecera = dr("NUMERO") End If

334

If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Catch ex As Exception MsgBox(ex.Message) End Try '********************INGRESA DETALLE With SprDetalleFactura For FILA = 1 To .MaxRows - 1 cmd.CommandText = "FAC_ING_DETALLE" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@TIPO", "NV") cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) .Col = 3 : .Row = FILA cmd.Parameters.Add("@CODIGOPRODUCTO", CStr(.Text)) cmd.Parameters.Add("@BODEGA", Trim(CODSUCU)) cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) .Col = 10 If Val(CInt(.Text)) = 1 Or Val(CInt(.Text)) = 2 Or Val(CInt(.Text)) = 3 Or Val(CInt(.Text)) = 4 Or Val(CInt(.Text)) = 5 Or Val(CInt(.Text)) = 6 Or Val(CInt(.Text)) = 7 Or Val(CInt(.Text)) = 8 Or Val(CInt(.Text)) = 9 Then MEMBRESIA = True : COD_PROD = CInt(.Text) .Col = 11 : DIASMEMBRESIA = CInt(.Text) End If .Col = 2 : Cantidad = CInt(.Text) cmd.Parameters.Add("@CANTIDAD", Cantidad) .Col = 6 : Bruto = Cantidad * CDbl(.Text) cmd.Parameters.Add("@TOTAL1", Bruto) .Col = 13 : xvalor_desc = CDbl(.Text) .Col = 14 : cmd.Parameters.Add("@IVA", CDbl(.Text)) .Col = 7 : Neto = CDbl(.Text) - xvalor_desc cmd.Parameters.Add("@TOTAL2", Neto) .Col = 1 : cmd.Parameters.Add("@DESCUENTO1", CDbl(.Text))

335

cmd.Parameters.Add("@DESCUENTO2", CDbl(0.0)) cmd.Parameters.Add("@VALORDESCUENTO1", CDbl(xvalor_desc)) cmd.Parameters.Add("@VALORDESCUENTO2", CDbl(0.0)) .Col = 6 : cmd.Parameters.Add("@PRECIO", CDbl(.Text)) .Col = 12 If Trim(.Text) = "" Then cmd.Parameters.Add("@COSTO", CDbl(0.0)) Else cmd.Parameters.Add("@COSTO", CDbl(.Text)) End If cmd.Parameters.Add("@HORA", TimeString) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try '*********** INGRESA ARCHIVO DE EXISTENCIAS cmd.CommandText = "FAC_ING_EXISTENCIAS" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "NV") cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) .Col = 3 : .Row = FILA cmd.Parameters.Add("@CODIGOPRODUCTO", CStr(.Text)) cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) .Col = 2 : Cantidad = CInt(.Text) cmd.Parameters.Add("@CANTIDAD", Cantidad) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try '*** TERMINA ARCHIVO DE EXISTENCIAS Next

336

End With '********************INGRESA PAGOS With SprFormadePago For FILA = 1 To .MaxRows .Row = FILA cmd.CommandText = "FAC_ING_PAGOS" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@TIPO", "NV") cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@TIPOAPLIC", "PG") cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) .Col = 1 : FormaPago = Microsoft.VisualBasic.UCase(Microsoft.VisualBasic.Left(.Text, 2)) cmd.Parameters.Add("@FORMAPAGO", FormaPago) If Trim(.Text) = "Tarjeta" Then .Col = 2 : cmd.Parameters.Add("@PORCOBRAR", CDbl(.Text)) cmd.Parameters.Add("@VALORRECIBIDO", CDbl(0.0)) .Col = 4 : cmd.Parameters.Add("@CODIGOTARJETA", .Text) .Col = 5 : cmd.Parameters.Add("@NUMEROTARJETA", .Text) .Col = 6 : cmd.Parameters.Add("@NOMBRECLIENTE", .Text) .Col = 7 : cmd.Parameters.Add("@TELEFONOTARJETA", .Text) .Col = 8 : cmd.Parameters.Add("@LOTE", CStr(.Text)) cmd.Parameters.Add("@FECHACHEQUE", "") cmd.Parameters.Add("@CODIGOBANCO", "") cmd.Parameters.Add("@CODIGOCIUDAD", "") cmd.Parameters.Add("@NUMEROCHEQUE", "") cmd.Parameters.Add("@CTACTE", "") cmd.Parameters.Add("@NOMBREEMPLEADO", "")

337

cmd.Parameters.Add("@CEDULAEMPLEADO", "") cmd.Parameters.Add("@AUTORIZACIONCRED", "") cmd.Parameters.Add("@QUIENREGALA", "") cmd.Parameters.Add("@BENEFICIARIO", "") cmd.Parameters.Add("@AUTORIZACIONOBS", "") cmd.Parameters.Add("@FECHADEVOLUCION", "") cmd.Parameters.Add("@NUMERODEVOLUCION", "") End If If Trim(.Text) = "Efectivo" Then '.Col = 4 : cmd.Parameters.Add("@PORCOBRAR", CDbl(.Text)) .Col = 2 : cmd.Parameters.Add("@PORCOBRAR", CDbl(.Text)) xcobro = CDbl(.Text) If Trim(.Text) = "" Then .Col = 5 : cmd.Parameters.Add("@VALORRECIBIDO", CDbl(0.0)) xrecibo = CDbl(.Text) Else .Col = 5 : cmd.Parameters.Add("@VALORRECIBIDO", CDbl(.Text)) xrecibo = CDbl(.Text) End If If xrecibo < xcobro Then MsgBox("EL pago debe ser mayor o igual...", vbInformation, "A T E N C I O N") TxtRecibido.Focus() cadena = False Exit Sub End If cmd.Parameters.Add("@CODIGOTARJETA", "") cmd.Parameters.Add("@NUMEROTARJETA", "") cmd.Parameters.Add("@NOMBRECLIENTE", "") cmd.Parameters.Add("@TELEFONOTARJETA", "") cmd.Parameters.Add("@LOTE", "") cmd.Parameters.Add("@FECHACHEQUE", "") cmd.Parameters.Add("@CODIGOBANCO", "") cmd.Parameters.Add("@CODIGOCIUDAD", "") cmd.Parameters.Add("@NUMEROCHEQUE", "") cmd.Parameters.Add("@CTACTE", "") cmd.Parameters.Add("@NOMBREEMPLEADO", "") cmd.Parameters.Add("@CEDULAEMPLEADO", "") cmd.Parameters.Add("@AUTORIZACIONCRED", "") cmd.Parameters.Add("@QUIENREGALA", "")

338

cmd.Parameters.Add("@BENEFICIARIO", "") cmd.Parameters.Add("@AUTORIZACIONOBS", "") cmd.Parameters.Add("@FECHADEVOLUCION", "") cmd.Parameters.Add("@NUMERODEVOLUCION", "") End If If Trim(.Text) = "Cheque" Then .Col = 2 : cmd.Parameters.Add("@PORCOBRAR", CDbl(.Text)) cmd.Parameters.Add("@VALORRECIBIDO", CDbl(0.0)) cmd.Parameters.Add("@CODIGOTARJETA", "") cmd.Parameters.Add("@NUMEROTARJETA", "") cmd.Parameters.Add("@NOMBRECLIENTE", "") cmd.Parameters.Add("@TELEFONOTARJETA", "") cmd.Parameters.Add("@LOTE", "") cmd.Parameters.Add("@FECHACHEQUE", DtpFechaCheque.Value) cmd.Parameters.Add("@CODIGOBANCO", Trim(Microsoft.VisualBasic.Right(CmbBancos.Text, 2))) cmd.Parameters.Add("@CODIGOCIUDAD", Trim(Microsoft.VisualBasic.Right(CmbCiudad.Text, 2))) cmd.Parameters.Add("@NUMEROCHEQUE", TxtCheque.Text) cmd.Parameters.Add("@CTACTE", TxtCuenta.Text) cmd.Parameters.Add("@NOMBREEMPLEADO", "") cmd.Parameters.Add("@CEDULAEMPLEADO", "") cmd.Parameters.Add("@AUTORIZACIONCRED", "") cmd.Parameters.Add("@QUIENREGALA", "") cmd.Parameters.Add("@BENEFICIARIO", "") cmd.Parameters.Add("@AUTORIZACIONOBS", "") cmd.Parameters.Add("@FECHADEVOLUCION", "") cmd.Parameters.Add("@NUMERODEVOLUCION", "") End If If Trim(.Text) = "Credito" Then .Col = 2 : cmd.Parameters.Add("@PORCOBRAR", CDbl(.Text)) cmd.Parameters.Add("@VALORRECIBIDO", CDbl(0.0)) cmd.Parameters.Add("@CODIGOTARJETA", "") cmd.Parameters.Add("@NUMEROTARJETA", "") cmd.Parameters.Add("@NOMBRECLIENTE", "") cmd.Parameters.Add("@TELEFONOTARJETA", "") cmd.Parameters.Add("@LOTE", "")

339

cmd.Parameters.Add("@FECHACHEQUE", "") cmd.Parameters.Add("@CODIGOBANCO", "") cmd.Parameters.Add("@CODIGOCIUDAD", "") cmd.Parameters.Add("@NUMEROCHEQUE", "") cmd.Parameters.Add("@CTACTE", "") .Col = 4 : cmd.Parameters.Add("@NOMBREEMPLEADO", .Text) .Col = 5 : cmd.Parameters.Add("@CEDULAEMPLEADO", .Text) .Col = 6 : cmd.Parameters.Add("@AUTORIZACIONCRED", .Text) cmd.Parameters.Add("@QUIENREGALA", "") cmd.Parameters.Add("@BENEFICIARIO", "") cmd.Parameters.Add("@AUTORIZACIONOBS", "") cmd.Parameters.Add("@FECHADEVOLUCION", "") cmd.Parameters.Add("@NUMERODEVOLUCION", "") End If cmd.Parameters.Add("@CANCELADO", "Si") cmd.Parameters.Add("@HORA", TimeString) cmd.Parameters.Add("@CIERRE", False) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try Next End With Call GrabaSecuencia() Call Deshabilita() Try cmd.ExecuteNonQuery() MsgBox("FACTURA GENERADA EXITOSAMENTE") If MEMBRESIA = True And DIASMEMBRESIA > 0 Then Call CambioMembresia() End If Catch ex As Exception MsgBox(ex.Message) End Try End If Else MsgBox("Los pagos no coinciden con el total", MsgBoxStyle.Critical, "Mensaje") End If Else

340

MsgBox("Faltan datos de llenar", MsgBoxStyle.Information, "Mensaje") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Math.Round(CDbl(TotalPagos), 2) = CDbl(Txttotal.Text) Then If Me.TxtNumero.Text <> "" And Me.TxtCodCli.Text <> "" And Me.TxtSubtotal.Text <> "" And Me.Txttotal.Text <> "" And Me.TxtDescto.Text <> "" And Me.Txtiva.Text <> "" Then Reporte.Print() Else MsgBox("No Existen datos a imprimir...", vbInformation, "A T E N C I O N") Me.TxtNumero.Focus() End If End If End If End Sub 'Private Sub btn_salir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_salir.Click Private Sub SalirDatos() If Me.TlbBotones.Buttons(0).Enabled = False Then If MessageBox.Show("Esta en modo de Ingreso. Desea Cancelar la Factura?...", "ALERTA", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then Call Limpia() : Call Deshabilita() : Me.TxtNumero.Focus() : Me.Close() Else If SprDetalleFactura.Enabled = True Then SprDetalleFactura.Focus() : SprDetalleFactura.SetActiveCell(3, SprDetalleFactura.MaxRows) Else TxtCodCli.Focus() End If End If Else Me.Close() End If End Sub 'Private Sub Btn_deshacer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_deshacer.Click Private Sub DeshacerDatos()

341

Call Limpia() : Call Deshabilita() : Me.TxtNumero.Focus() End Sub Private Sub TxtCodCli_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtCodCli.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call BuscaNombreCli() If Trim(TxtNombreCli.Text) <> "" Then SprDetalleFactura.Enabled = True SprDetalleFactura.Focus() : SprDetalleFactura.SetActiveCell(3, SprDetalleFactura.ActiveRow) End If End If End Sub Private Sub SprFormadePago_KeyPressEvent(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyPressEvent) Handles SprFormadePago.KeyPressEvent If e.keyAscii = 13 Then With SprFormadePago If .ActiveCol = 2 Then .Row = .ActiveRow : .Col = 2 If Trim(.Text) <> "" Then .Col = 1 If Trim(.Text) = "Tarjeta" Then Call GruposVisibles(False, True, False, False, False, False) Call LimpiaTarjeta() : Tarjeta.Focus() : CmbTarjetas.Focus() End If If Trim(.Text) = "Efectivo" Then Call GruposVisibles(True, False, False, False, False, False) Call LimpiaEfectivo() .Col = 2 : TxtPorCobrar.Text = Format(CDbl(.Text), "$###,##0.00") : Efectivo.Focus() : TxtRecibido.Focus() End If If Trim(.Text) = "Cheque" Then Call GruposVisibles(False, False, True, False, False, False) Call LimpiaCheque() : Cheque.Focus() : DtpFechaCheque.Focus() End If If Trim(.Text) = "Credito" Then Call GruposVisibles(False, False, False, True, False, False) Call LimpiaCredito() : Credito.Focus() : TxtNombreEmpleado.Focus() End If

342

End If End If End With End If End Sub Private Sub SprFormadePago_KeyDownEvent(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyDownEvent) Handles SprFormadePago.KeyDownEvent With SprFormadePago If e.keyCode = Keys.Delete Then If .MaxRows > 1 Then If MessageBox.Show("Esta seguro de Eliminar la Linea?...", "Alerta", MessageBoxButtons.YesNo) = DialogResult.Yes Then .Row = .ActiveRow : .Col = 2 .Action = FPSpread.ActionConstants.ActionDeleteRow.ActionDeleteRow .Col = 1 For I = 1 To .MaxRows .Row = I If Trim(.Text) = "" Then .MaxRows = I - 1 Exit For End If Next .SetActiveCell(1, .MaxRows) : .Focus() : Call ValidaPagos() End If End If End If End With End Sub Private Sub SprFormadePago_Change(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_ChangeEvent) Handles SprFormadePago.Change Dim Sumatoria As Double With SprFormadePago If .ActiveCol = 1 Then For I = 1 To .MaxRows - 1 .Col = 2 : .Row = I : Sumatoria = Sumatoria + Val(CDbl(.Text)) Next I .Col = 2 : .Row = .ActiveRow .Text = CDbl(Txttotal.Text) - Sumatoria .SetActiveCell(2, .ActiveRow)

343

End If If .ActiveCol = 2 Then .Col = 1 : .Row = .ActiveRow If Trim(.Text) = "Efectivo" Then .Col = 2 TxtPorCobrar.Text = Format(CDbl(.Text), "$###,##0.00") TxtRecibido.Text = Format(CDbl(.Text), "$###,##0.00") TxtRecibido.Focus() End If If Trim(.Text) = "Tarjeta" Then CmbTarjetas.Focus() End If If Trim(.Text) = "Cheque" Then DtpFechaCheque.Focus() End If If Trim(.Text) = "Credito" Then TxtNombreEmpleado.Focus() End If End If End With End Sub Private Sub SprFormadePago_DblClick(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_DblClickEvent) Handles SprFormadePago.DblClick Call LlenaCampos() End Sub Private Sub SprDetalleFactura_KeyPressEvent(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyPressEvent) Handles SprDetalleFactura.KeyPressEvent Dim DescuentoLin, PrecioU, TotalU, Valor_desc, Valor_Iva As Double Dim Cantidad As Integer Dim xxnombre As String Dim xxproprecio As String Dim xxproiva As Integer Dim xxtipomembre As String Dim xxdias As String Dim xxcosto As String With SprDetalleFactura If .ActiveCol = 1 Then If e.keyAscii = 13 Then .Row = .ActiveRow : .Col = 3 If Trim(.Text) <> "" Then .Col = 1 : DescuentoLin = CDbl(.Text)

344

.Col = 2 : Cantidad = CDbl(.Text) .Col = 6 : PrecioU = CDbl(.Text) TotalU = PrecioU * Cantidad .SetText(7, .ActiveRow, Format(CDbl(TotalU), "$###,##0.00")) Call CalculaTotales() End If End If End If If .ActiveCol = 2 Then If e.keyAscii = 13 Then .Row = .ActiveRow : .Col = 3 If Trim(.Text) <> "" Then .Col = 1 : DescuentoLin = CDbl(.Text) .Col = 2 : Cantidad = CDbl(.Text) .Col = 6 : PrecioU = CDbl(.Text) TotalU = PrecioU * Cantidad .SetText(7, .ActiveRow, Format(CDbl(TotalU), "$###,##0.00")) Call CalculaTotales() End If End If End If If .ActiveCol = 3 Then If e.keyAscii = 13 Then Dim PROXIVA As Double TablaBuscada = "PRODUCTO_SERV" .Row = .ActiveRow : .Col = 3 : S_Codigo = .Text If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_CONS_ESPEC", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", CDbl(S_Codigo)) cmd.Parameters.Add("@OPCION", 10) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then xcodigo = S_Codigo TipoProducto = Trim(dr("protipo")) xxnombre = dr("NOMBRE") xxproprecio = dr("PROPRECIO") xxproiva = dr("PROIVA")

345

xxtipomembre = dr("TIPOMEMBRE") xxdias = dr("DIAS") xxcosto = dr("COSTO") Call Verifica_Existencias() If TipoProducto = "P" And CantidadExistencia <= 0 Then .Col = 3 .Row = .ActiveRow .Text = "" .SetActiveCell(3, .ActiveRow) : .Focus() MsgBox(CantidadExistencia, MsgBoxStyle.Information, "No hay Stock Existencia:") .Col = 3 .Row = .ActiveRow .Text = "" .SetActiveCell(3, .ActiveRow) : .Focus() Else .SetText(5, .ActiveRow, xxnombre) .SetText(6, .ActiveRow, Format(CDbl(xxproprecio), "###,##0.00")) .Row = .ActiveRow .Col = 1 : DescuentoLin = CDbl(.Text) .Col = 2 : Cantidad = CDbl(.Text) .Col = 6 : PrecioU = CDbl(.Text) TotalU = PrecioU * Cantidad Valor_desc = Math.Round((TotalU * DescuentoLin / 100), 2) If xxproiva = 1 Then Valor_Iva = Math.Round(((TotalU - Valor_desc) * 0.12), 2) Else Valor_Iva = 0.0 End If .SetText(7, .ActiveRow, Format(CDbl(TotalU), "###,##0.00")) .SetText(9, .ActiveRow, CDbl(xxproiva)) .Col = 10 : .Text = CStr(xxtipomembre) .Col = 11 : .Text = CInt(xxdias) .Col = 12 : .Text = CInt(xxcosto) .Col = 13 : .Text = Valor_desc .Col = 14 : .Text = Valor_Iva .Col = 3 : .Row = .MaxRows If Trim(.Text) Then .MaxRows = .MaxRows + 1 Else .SetActiveCell(3, .ActiveRow)

346

End If Call CalculaTotales() .Row = .MaxRows : .Col = 1 : .Text = "0.00" .Col = 2 : .Text = "1" .SetActiveCell(2, .MaxRows) : .Focus() If TipoProducto = "P" Then 'MsgBox(CantidadExistencia, MsgBoxStyle.Information, "Existencia:") .Row = .MaxRows : .Col = 1 : .Text = "0.00" .Col = 2 : .Text = "1" .SetActiveCell(2, .MaxRows) : .Focus() .Col = 3 .Row = .ActiveRow .Text = "" .SetActiveCell(3, .ActiveRow) : .Focus() End If End If Else .Col = 3 .Row = .ActiveRow .Text = "" .SetActiveCell(3, .ActiveRow) : .Focus() MsgBox("Producto o Servicio no existe..!", MsgBoxStyle.Information, "Mensaje") .Col = 3 .Row = .ActiveRow .Text = "" .SetActiveCell(3, .ActiveRow) : .Focus() End If End If End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End With End Sub Private Sub SprDetalleFactura_ButtonClicked(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_ButtonClickedEvent) Handles SprDetalleFactura.ButtonClicked Dim Cantidad As Integer Dim DescuentoLin, PrecioU, TotalU, Valor_desc, Valor_Iva As Double Dim xxnombre As String Dim xxproprecio As String Dim xxproiva As Integer

347

Dim xxtipomembre As String Dim xxdias As String Dim xxcosto As String With SprDetalleFactura If .ActiveCol = 4 Then Dim frm_busq As New Frm_Buscar S_Codigo = "" : TablaBuscada = "VIS_CONS_PRODUCTOS" Campo1 = "CODPRODSERV" Campo2 = "NOMBRE" Campo3 = "Busqueda Por Producto" frm_busq.ShowDialog() If S_Codigo <> "" Then xcodigo = S_Codigo .SetText(3, .ActiveRow, S_Codigo) With SprDetalleFactura If S_Codigo <> "" Then If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_CONS_ESPEC", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", CDbl(S_Codigo)) cmd.Parameters.Add("@OPCION", 10) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then xcodigo = S_Codigo TipoProducto = Trim(dr("protipo")) xxnombre = dr("NOMBRE") xxproprecio = dr("PROPRECIO") xxproiva = dr("PROIVA") xxtipomembre = dr("TIPOMEMBRE") xxdias = dr("DIAS") xxcosto = dr("COSTO") Call Verifica_Existencias() If TipoProducto = "P" And CantidadExistencia <= 0 Then .Col = 3 .Row = .ActiveRow

348

.Text = "" .SetActiveCell(3, .ActiveRow) : .Focus() MsgBox(CantidadExistencia, MsgBoxStyle.Information, "No hay Stock Existencia:") .Col = 3 .Row = .ActiveRow .Text = "" .SetActiveCell(3, .ActiveRow) : .Focus() Else .SetText(5, .ActiveRow, xxnombre) .SetText(6, .ActiveRow, Format(CDbl(xxproprecio), "###,##0.00")) .Row = .ActiveRow .Col = 1 : DescuentoLin = CDbl(.Text) .Col = 2 : Cantidad = CDbl(.Text) .Col = 6 : PrecioU = CDbl(.Text) TotalU = PrecioU * Cantidad Valor_desc = Math.Round((TotalU * DescuentoLin / 100), 2) If xxproiva = 1 Then Valor_Iva = Math.Round(((TotalU - Valor_desc) * 0.12), 2) Else Valor_Iva = 0.0 End If .SetText(7, .ActiveRow, Format(CDbl(TotalU), "###,##0.00")) .SetText(9, .ActiveRow, CDbl(xxproiva)) .Col = 10 : .Text = CStr(xxtipomembre) .Col = 11 : .Text = CInt(xxdias) .Col = 12 : .Text = CInt(xxcosto) .Col = 13 : .Text = Valor_desc .Col = 14 : .Text = Valor_Iva .Col = 3 : .Row = .MaxRows If Trim(.Text) Then .MaxRows = .MaxRows + 1 Else .SetActiveCell(3, .ActiveRow) End If Call CalculaTotales() .Row = .MaxRows : .Col = 1 : .Text = "0.00" .Col = 2 : .Text = "1" .SetActiveCell(2, .MaxRows) : .Focus() If TipoProducto = "P" Then

349

'MsgBox(CantidadExistencia, MsgBoxStyle.Information, "Existencia:") .Row = .MaxRows : .Col = 1 : .Text = "0.00" .Col = 2 : .Text = "1" .SetActiveCell(2, .MaxRows) : .Focus() .Col = 3 .Row = .ActiveRow .Text = "" .SetActiveCell(3, .ActiveRow) : .Focus() End If End If Else .Col = 3 .Row = .ActiveRow .Text = "" .SetActiveCell(3, .ActiveRow) : .Focus() MsgBox("Producto o Servicio no existe..!", MsgBoxStyle.Information, "Mensaje") .Col = 3 .Row = .ActiveRow .Text = "" .SetActiveCell(3, .ActiveRow) : .Focus() End If Else MsgBox("Ingrese código de Producto o Servicio..!", MsgBoxStyle.Information, "Mensaje") End If End With End If End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End With End Sub Private Sub SprDetalleFactura_KeyDownEvent(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyDownEvent) Handles SprDetalleFactura.KeyDownEvent With SprDetalleFactura If e.keyCode = Keys.Delete Then If .MaxRows > 1 Then If MessageBox.Show("Esta seguro de Eliminar la Linea?...", "Alerta", MessageBoxButtons.YesNo) = DialogResult.Yes Then .Row = .ActiveRow : .Col = 3

350

.Action = FPSpread.ActionConstants.ActionDeleteRow.ActionDeleteRow : .MaxRows = .MaxRows - 1 .SetActiveCell(3, .MaxRows) : .Focus() : Call CalculaTotales() End If End If End If End With End Sub Private Sub TxtAutorizacion_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call LlenaSpread() : Call ValidaPagos() End If End Sub Private Sub TxtAutorizacionCred_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtAutorizacionCred.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call LlenaSpread() : Call ValidaPagos() End If End Sub Private Sub TxtDevolucion_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call LlenaSpread() : Call ValidaPagos() End If End Sub Private Sub TxtCuenta_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtCuenta.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call LlenaSpread() : Call ValidaPagos() Else If e.KeyChar.IsDigit(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If

351

End If End Sub Private Sub TxtRecibido_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtRecibido.KeyPress Dim KeyASCII As Short If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then If Trim(TxtRecibido.Text) <> "" Then If CDbl(TxtRecibido.Text) < CDbl(TxtPorCobrar.Text) Then MsgBox("EL pago debe ser mayor o igual...", vbInformation, "A T E N C I O N") TxtRecibido.Focus() Exit Sub ''OJO Else TxtCambio.Text = Format(CDbl(Math.Round((CDbl(TxtRecibido.Text) - CDbl(TxtPorCobrar.Text)), 2)), "$###,##0.00") Call LlenaSpread() : Call ValidaPagos() End If Else KeyASCII = Asc(e.KeyChar) If (KeyASCII >= 48 And KeyASCII <= 57) Or (KeyASCII = 46) Or (KeyASCII = 8) Or (KeyASCII = 13) Then e.Handled = False Else e.Handled = True End If End If End If End Sub Private Sub TxtLote_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtLote.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call LlenaSpread() : Call ValidaPagos() Else If e.KeyChar.IsDigit(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If

352

End If End Sub Private Sub TxtNumeroTarjeta_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNumeroTarjeta.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then TxtNombreCliente.Focus() Call LlenaSpread() Else If e.KeyChar.IsDigit(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End If End Sub Private Sub TxtNombreCliente_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNombreCliente.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then TxtTelefonos.Focus() Call LlenaSpread() End If End Sub Private Sub TxtTelefonos_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtTelefonos.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then TxtLote.Focus() Call LlenaSpread() Else If e.KeyChar.IsDigit(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End If

353

End Sub Private Sub TxtLote_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtLote.LostFocus Call LlenaSpread() : Call ValidaPagos() End Sub Private Sub TxtAutorizacion_LostFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Call LlenaSpread() : Call ValidaPagos() End Sub Private Sub TxtAutorizacionCred_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtAutorizacionCred.LostFocus Call LlenaSpread() : Call ValidaPagos() End Sub Private Sub TxtDevolucion_LostFocus(ByVal sender As System.Object, ByVal e As System.EventArgs) Call LlenaSpread() : Call ValidaPagos() End Sub Private Sub TxtCuenta_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtCuenta.LostFocus Call LlenaSpread() : Call ValidaPagos() End Sub Private Sub TxtCambio_LostFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TxtCambio.LostFocus Call LlenaSpread() : Call ValidaPagos() End Sub Private Sub TxtNombreEmpleado_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNombreEmpleado.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then TxtCedula.Focus() End If End Sub Private Sub TxtCedula_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtCedula.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then TxtAutorizacionCred.Focus() End If End Sub

354

Private Sub TxtCheque_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtCheque.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then TxtCuenta.Focus() Else If e.KeyChar.IsDigit(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End If End Sub Private Sub TxtNumero_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNumero.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then If TxtNumero.Text <> "" Then If Not IsNumeric(TxtNumero.Text) = True Then MsgBox("Introduzca un valor con números") Me.TxtNumero.Focus() Else Call CargarFactura() End If Else MsgBox("Debe ingresar un Numero ..", MsgBoxStyle.Information, "SICAG") Me.TxtNumero.Focus() End If End If End Sub Private Sub CalculaTotales() Dim Descuento, DescuentoT, ValIva, ValIvaT, Subtotal, Total, PrecioU, PrecioT As Double Dim Cantidad As Integer TotalG = 0 With SprDetalleFactura For I = 1 To .MaxRows - 1 .Col = 8 : .Row = I

355

If .Value = 0 Then .Row = I : .Col = 2 : Cantidad = Val(.Text) .Col = 6 : PrecioU = CDbl(.Text) .Col = 7 : PrecioT = CDbl(.Text) .Col = 1 : Descuento = CDbl(.Text) Subtotal = Subtotal + (Math.Round(PrecioT, 2)) DescuentoT = DescuentoT + Math.Round(((Math.Round(PrecioT, 2)) * Math.Round((Descuento / 100), 2)), 2) .Col = 9 If Val(.Text) = 1 Then ValIva = ValIva + Math.Round((((Math.Round(PrecioT, 2)) - ((Math.Round(PrecioT, 2)) * Math.Round((Descuento / 100), 2))) * iva), 2) Total = Total + Math.Round(((Math.Round(PrecioT, 2)) - ((Math.Round(PrecioT, 2)) * Math.Round((Descuento / 100), 2)) + (((Math.Round(PrecioT, 2)) - ((Math.Round(PrecioT, 2)) * Math.Round((Descuento / 100), 2))) * iva)), 2) Else ValIva = ValIva + 0 Total = Total + Math.Round(((Math.Round(PrecioT, 2)) - ((Math.Round(PrecioT, 2)) * Math.Round((Descuento / 100), 2)) + 0), 2) End If End If Next End With ValIvaT = ValIvaT + (Math.Round(ValIva, 2)) TotalG = TotalG + (Math.Round(Total, 2)) TxtSubtotal.Text = Format(Subtotal, "$###,##0.00") TxtDescto.Text = Format(DescuentoT, "$###,##0.00") Txtiva.Text = Format(ValIvaT, "$###,##0.00") Txttotal.Text = Format(TotalG, "$###,##0.00") End Sub Private Sub LlenaSpread() With SprFormadePago .Col = 1 .Row = .ActiveRow If Trim(.Text) = "Tarjeta" Then .Col = 4 : .Text = Trim(Microsoft.VisualBasic.Right(CmbTarjetas.Text, 2)) .Col = 5 : .Text = TxtNumeroTarjeta.Text .Col = 6 : .Text = TxtNombreCliente.Text .Col = 7 : .Text = TxtTelefonos.Text .Col = 8 : .Text = TxtLote.Text

356

End If If Trim(.Text) = "Efectivo" Then .Col = 4 : .Text = Format(CDbl(TxtPorCobrar.Text), "$###,##0.00") '.Col = 2 : .Text = Format(CDbl(TxtPorCobrar.Text), "$###,##0.00") .Col = 5 : .Text = Format(CDbl(TxtRecibido.Text), "$###,##0.00") .Col = 6 If Trim(TxtCambio.Text) <> "" Then .Text = Format(CDbl(TxtCambio.Text), "$###,##0.00") Else .Text = Format(0.0, "$###,##0.00") End If End If If Trim(.Text) = "Cheque" Then .Col = 4 : .Text = DtpFechaCheque.Text .Col = 5 : .Text = Trim(Microsoft.VisualBasic.Right(CmbBancos.Text, 2)) .Col = 6 : .Text = Trim(Microsoft.VisualBasic.Right(CmbCiudad.Text, 2)) .Col = 7 : .Text = TxtCheque.Text .Col = 8 : .Text = TxtCuenta.Text End If If Trim(.Text) = "Credito" Then .Col = 4 : .Text = TxtNombreEmpleado.Text .Col = 5 : .Text = TxtCedula.Text .Col = 6 : .Text = TxtAutorizacionCred.Text End If End With End Sub Private Sub ValidaPagos() Dim ValorPago As Double With SprFormadePago For I = 1 To .MaxRows .Row = I : .Col = 2 : ValorPago = ValorPago + CDbl(Val(.Text)) Next If Math.Round(TotalG, 2) > Math.Round(ValorPago, 2) Then .MaxRows = .MaxRows + 1 .Col = 2 : .Row = .MaxRows : .Text = Math.Round(TotalG, 2) - Math.Round(ValorPago, 2) .Focus() : .SetActiveCell(1, .MaxRows) Else .Focus() : .SetActiveCell(2, .MaxRows) End If

357

End With End Sub Private Sub LlenaParametros() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 11) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtCaja.Text = dr("DESCRIPCION") CODCAJA = dr("CODCAJA") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If 'CARGO VALOR DE IVA cmd = New SqlClient.SqlCommand("SEG_CONS_PARAMETRO", cn) cmd.CommandType = CommandType.StoredProcedure Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then iva = dr("PORCENTAJEIVA") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Me.TxtVendedor.Text = CStr(usu) : Me.TxtSucursal.Text = CStr(SUCURSAL) End Sub Private Sub LlenaCombos() 'Llena los Bancos Me.CmbBancos.Text = "" cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn)

358

cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 10) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try While dr.Read Me.CmbBancos.Items.Add(dr("DESCRIPCION") & Space(50) & dr("CODTIPOBANKO")) End While CmbBancos.SelectedIndex = (0) If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If 'Llena las Tarjetas de Credito Me.CmbTarjetas.Text = "" cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 4) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try While dr.Read Me.CmbTarjetas.Items.Add(dr("DESCRIPCION") & Space(50) & dr("CODTARJCRED")) End While CmbTarjetas.SelectedIndex = (0) If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If 'Llena las Ciudades Me.CmbCiudad.Text = "" cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 29) Try dr = cmd.ExecuteReader Catch ex As Exception

359

MsgBox(ex.Message) End Try While dr.Read Me.CmbCiudad.Items.Add(dr("NOMBRECIUDAD") & Space(50) & dr("CODIGOCIUDAD")) End While If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub Habilita() Me.Button1.Enabled = True : Me.TlbBotones.Buttons(0).Enabled = False Me.TlbBotones.Buttons(2).Enabled = True : Me.TlbBotones.Buttons(6).Enabled = False Me.TlbBotones.Buttons(12).Enabled = False : Me.TlbBotones.Buttons(10).Enabled = True Me.TlbBotones.Buttons(4).Enabled = False : Me.TlbBotones.Buttons(8).Enabled = False Me.TlbBotones.Buttons(14).Enabled = True : Me.Efectivo.Enabled = True Me.Cheque.Enabled = True : Me.Credito.Enabled = True Me.TxtCodCli.Enabled = True : Me.TxtNumero.Enabled = False End Sub Private Sub Deshabilita() Me.Button1.Enabled = False : Me.TlbBotones.Buttons(0).Enabled = True Me.TlbBotones.Buttons(2).Enabled = False : Me.TlbBotones.Buttons(6).Enabled = True Me.TlbBotones.Buttons(12).Enabled = True : Me.TlbBotones.Buttons(10).Enabled = False Me.TlbBotones.Buttons(4).Enabled = True : Me.TlbBotones.Buttons(8).Enabled = True Me.TlbBotones.Buttons(14).Enabled = True : Me.SprDetalleFactura.Enabled = False Me.Btn_Autoriza.Enabled = False : Me.Efectivo.Enabled = False Me.Cheque.Enabled = False : Me.Credito.Enabled = False Me.TxtCodCli.Enabled = False : Me.DtpFechaRegistro.Enabled = False SprDetalleFactura.Enabled = False End Sub Private Sub VerTextoBoton() Me.TlbBotones.Buttons(0).ToolTipText = "Nuevo" Me.TlbBotones.Buttons(2).ToolTipText = "Grabar" Me.TlbBotones.Buttons(4).ToolTipText = "Modificar"

360

Me.TlbBotones.Buttons(6).ToolTipText = "Eliminar" Me.TlbBotones.Buttons(8).ToolTipText = "Buscar" Me.TlbBotones.Buttons(10).ToolTipText = "Deshacer" Me.TlbBotones.Buttons(12).ToolTipText = "Imprimir" Me.TlbBotones.Buttons(14).ToolTipText = "Salir" End Sub Private Sub BuscaNombreCli() If Me.TxtCodCli.Text <> "" Then cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", Me.TxtCodCli.Text) cmd.Parameters.Add("@OPCION", 5) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtNombreCli.Text = dr("NOMBRE") COD_PER = dr("CODPERS") Else MsgBox("Cliente no existe..!", MsgBoxStyle.Information, "Mensaje") Me.TxtCodCli.Focus() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Else MsgBox("Ingrese numero de cédula del cliente..!", MsgBoxStyle.Information, "Mensaje") End If End Sub Private Sub Limpia() Me.DtpFechaRegistro.Value = Today() : Me.TxtCodCli.Text = "" Me.SprDetalleFactura.MaxRows = 0 : Me.SprDetalleFactura.MaxRows = 1 Me.SprFormadePago.MaxRows = 0 : Me.SprFormadePago.MaxRows = 1 Me.SprDetalleFactura.Row = Me.SprDetalleFactura.MaxRows Me.SprDetalleFactura.Col = 1 : Me.SprDetalleFactura.Text = 0.0 Me.SprDetalleFactura.Col = 2 : Me.SprDetalleFactura.Text = 1 Me.TxtSubtotal.Text = "" : Me.TxtDescto.Text = ""

361

Me.Txtiva.Text = "" : Me.Txttotal.Text = "" : Me.TxtNombreCli.Text = "" Call LimpiaTarjeta() Call LimpiaEfectivo() Call LimpiaCheque() Call LimpiaCredito() End Sub Private Sub CambioMembresia() Dim HOY As DateTime If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_MOD_MEMB_CLIENTE" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@COD", CInt(COD_PER)) cmd.Parameters.Add("@FECHAMOD", Today) If COD_PROD = 1 Then HOY = Today.AddDays(DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 1) ElseIf COD_PROD = 2 Then HOY = Today.AddDays(DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 2) ElseIf COD_PROD = 3 Then HOY = Today.AddDays(DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 3) ElseIf COD_PROD = 4 Then HOY = Today.AddDays(DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 4) ElseIf COD_PROD = 5 Then HOY = Today.AddDays(DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 5) ElseIf COD_PROD = 6 Then HOY = Today.AddDays(DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 6) ElseIf COD_PROD = 7 Then

362

HOY = Today.AddDays(DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 7) ElseIf COD_PROD = 8 Then HOY = Today.AddDays(DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 8) Else HOY = Today.AddDays(DIASMEMBRESIA) : cmd.Parameters.Add("@FECHACAD", HOY) : cmd.Parameters.Add("@CODTIPO", 9) End If Try cmd.ExecuteNonQuery() MsgBox("Ha cambiado la membresia del cliente") dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub ObtieneSecuencia() Dim CodigoSuc As Integer CodigoSuc = Val(Trim(Microsoft.VisualBasic.Right(SUCURSAL, 3))) If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_SECUENCIA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("NV")) cmd.Parameters.Add("@CODIGO2", CInt(CodigoSuc)) cmd.Parameters.Add("@CODIGO3", CInt(CODCAJA)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtNumero.Text = dr("NUMERO") + 1 Else TxtNumero.Text = "1" End If

363

Me.TxtVendedor.Text = CStr(usu) If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", CInt(CODSUCU)) cmd.Parameters.Add("@OPCION", 3) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtSucursal.Text = dr("DESCRIPCION") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub GrabaSecuencia() Dim CodigoSuc As Integer CodigoSuc = Val(Trim(Microsoft.VisualBasic.Right(SUCURSAL, 3))) If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_SECUENCIA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("NV")) cmd.Parameters.Add("@CODIGO2", CInt(CodigoSuc)) cmd.Parameters.Add("@CODIGO3", CInt(CODCAJA)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_MOD_SECUENCIA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn

364

cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", CStr("NV")) cmd.Parameters.Add("@SUCURSAL", CInt(CodigoSuc)) cmd.Parameters.Add("@CAJA", CInt(CODCAJA)) cmd.Parameters.Add("@NUMERO", CInt(Val(TxtNumero.Text))) Try cmd.ExecuteNonQuery() dr.Close() Catch ex As Exception MsgBox(ex.Message) End Try Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_ING_SECUENCIA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", CStr("NV")) cmd.Parameters.Add("@SUCURSAL", CInt(CodigoSuc)) cmd.Parameters.Add("@CAJA", CInt(CODCAJA)) cmd.Parameters.Add("@NUMERO", 1) Try cmd.ExecuteNonQuery() dr.Close() Catch ex As Exception MsgBox(ex.Message) End Try End If End Sub Private Sub GruposVisibles(ByVal G1 As Boolean, ByVal G2 As Boolean, ByVal G3 As Boolean, ByVal G4 As Boolean, ByVal G5 As Boolean, ByVal G6 As Boolean) Efectivo.Visible = G1 : Tarjeta.Visible = G2 : Cheque.Visible = G3 Credito.Visible = G4 End Sub Private Sub LimpiaEfectivo() TxtPorCobrar.Text = "" : TxtRecibido.Text = "" : TxtCambio.Text = "" End Sub

365

Private Sub LimpiaTarjeta() CmbTarjetas.SelectedIndex = 1 : TxtNumeroTarjeta.Text = "" TxtNombreCliente.Text = "" : TxtTelefonos.Text = "" : TxtLote.Text = "" End Sub Private Sub LimpiaCheque() DtpFechaCheque.Value = Date.Today.Date : CmbBancos.SelectedIndex = 1 CmbCiudad.SelectedIndex = 1 : TxtCheque.Text = "" : TxtCuenta.Text = "" End Sub Private Sub LimpiaCredito() TxtNombreEmpleado.Text = "" : TxtCedula.Text = "" : TxtAutorizacionCred.Text = "" End Sub Public Sub CargarFactura() If Trim(TxtNumero.Text) <> "" Then SprDetalleFactura.MaxRows = 0 SprDetalleFactura.MaxRows = 1 SprFormadePago.MaxRows = 0 SprFormadePago.MaxRows = 1 If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_FACTURA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("NV")) cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(Trim(TxtNumero.Text))) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then VarNumero = dr("NUMERO") : VarTipo = dr("TIPO") : VarSucursal = dr("SUCURSAL") : VarCaja = dr("CAJA") VarFecha = dr("FECHA") : VarBodega = dr("BODEGA") : VarCliente = dr("CLIENTE") : VarVendedor = dr("VENDEDOR")

366

VarCajero = dr("CAJERO") : VarNumeroCajero = dr("NUMEROCAJERO") : VarAutoriza = dr("AUTORIZA") : VarNombreCajero = dr("NOMBRECAJERO") VarComentario = dr("COMENTARIO") : VarPorcedescto1 = dr("PORCEDESCTO1") : VarPorcedescto2 = dr("PORCEDESCTO2") : VarPorIva = dr("PORCEIVA") VarSubtotal = dr("SUBTOTAL") : VarDescuento1 = dr("DESCUENTO1") : VarDescuento2 = dr("DESCUENTO2") : VarImpuesto = dr("IMPUESTO") VarTotal = dr("TOTAL") : VarTipoAplic = dr("TIPOAPLIC") : VarImpreso = dr("IMPRESO") : VarHora = dr("HORA") DtpFechaRegistro.Value = CDate(VarFecha) If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarCaja) cmd.Parameters.Add("@OPCION", 1) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtCaja.Text = dr("DESCRIPCION") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarVendedor) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtVendedor.Text = dr("USUUSER") End If

367

If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarSucursal) cmd.Parameters.Add("@OPCION", 3) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtSucursal.Text = dr("DESCRIPCION") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarCliente) cmd.Parameters.Add("@OPCION", 5) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtCodCli.Text = dr("CODPERS") TxtNombreCli.Text = dr("NOMBRE") COD_PER = dr("CODPERS") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If TxtSubtotal.Text = Format(CDbl(VarSubtotal), "$###,##0.00") TxtDescto.Text = Format(CDbl(VarDescuento1), "$###,##0.00") Txtiva.Text = Format(CDbl(VarImpuesto), "$###,##0.00") Txttotal.Text = Format(CDbl(VarTotal), "$###,##0.00") If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_DETALLES", cn)

368

cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", VarNumero) cmd.Parameters.Add("@OPCION", 1) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try I = 1 While dr.Read DetVarCodigoproducto = dr("CODIGOPRODUCTO") : DetVarFecha = dr("FECHA") : DetVarCantidad = dr("CANTIDAD") DetVarTotal1 = dr("TOTAL1") : DetVarTotal2 = dr("TOTAL2") : DetVarDescuento1 = dr("DESCUENTO1") : DetVarDescuento2 = dr("DESCUENTO2") DetVarValordescuento1 = dr("VALORDESCUENTO1") : DetVarValordescuento2 = dr("VALORDESCUENTO2") : DetVarPrecio = dr("PRECIO") DetVarCosto = dr("COSTO") : DetVarIva = dr("IVA") : DetVarHora = dr("HORA") With SprDetalleFactura .Row = I : .Col = 1 : .Text = DetVarDescuento1 .Col = 2 : .Text = DetVarCantidad .Col = 3 : .Text = DetVarCodigoproducto .Col = 5 : .Text = dr("NOMBRE") .Col = 6 : .Text = Format(CDbl(DetVarPrecio), "###,##0.00") .Col = 7 : .Text = Format(CDbl(DetVarTotal1), "###,##0.00") .Col = 9 : .Text = DetVarIva .Col = 10 : .Text = CStr(dr("TIPOMEMBRE")) .Col = 11 : .Text = CInt(dr("DIAS")) .Col = 12 : .Text = DetVarCosto .MaxRows = .MaxRows + 1 End With I = I + 1 End While If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", VarNumero) cmd.Parameters.Add("@OPCION", 2)

369

Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try I = 1 While dr.Read PagVarNumerocab = dr("NUMEROCAB") : PagVarTipo = dr("TIPO") : PagVarSucursal = dr("SUCURSAL") : PagVarCaja = dr("CAJA") PagVarNumerocaja = dr("NUMEROCAJA") : PagVarTipoaplic = dr("TIPOAPLIC") : PagVarFecha = dr("FECHA") : PagVarFormapago = dr("FORMAPAGO") PagVarPorcobrar = dr("PORCOBRAR") : PagVarValorrecibido = dr("VALORRECIBIDO") : PagVarCodigotarjeta = dr("CODIGOTARJETA") PagVarNumerotarjeta = dr("NUMEROTARJETA") : PagVarNombrecliente = dr("NOMBRECLIENTE") : PagVarTelefonotarjeta = dr("TELEFONOTARJETA") PagVarLote = dr("LOTE") : PagVarFechacheque = dr("FECHACHEQUE") : PagVarCodigobanco = dr("CODIGOBANCO") : PagVarCodigociudad = dr("CODIGOCIUDAD") PagVarNumerocheque = dr("NUMEROCHEQUE") : PagVarCtacte = dr("CTACTE") : PagVarNombreempleado = dr("NOMBREEMPLEADO") : PagVarCedulaempleado = dr("CEDULAEMPLEADO") PagVarAutorizacioncred = dr("AUTORIZACIONCRED") : PagVarQuienregala = dr("QUIENREGALA") : PagVarBeneficiario = dr("BENEFICIARIO") : PagVarAutorizacionobs = dr("AUTORIZACIONOBS") PagVarFechadevolucion = dr("FECHADEVOLUCION") : PagVarNumerodevolucion = dr("NUMERODEVOLUCION") : PagVarCancelado = dr("CANCELADO") : PagVarHora = dr("HORA") 'LLENAR SPREAD DE PAGOS With SprFormadePago .Col = 1 .Row = I If UCase(Trim(PagVarFormapago)) = "TA" Then .Col = 1 : .Text = "Tarjeta" .Col = 2 : .Text = PagVarPorcobrar .Col = 4 : .Text = PagVarCodigotarjeta .Col = 5 : .Text = PagVarNumerotarjeta .Col = 6 : .Text = PagVarNombrecliente .Col = 7 : .Text = PagVarTelefonotarjeta .Col = 8 : .Text = PagVarLote Call LlenaCampos() End If

370

If UCase(Trim(PagVarFormapago)) = "EF" Then .Col = 1 : .Text = "Efectivo" .Col = 2 : .Text = Format(CDbl(PagVarPorcobrar), "###,##0.00") .Col = 4 : .Text = Format(CDbl(PagVarPorcobrar), "###,##0.00") .Col = 5 : .Text = Format(CDbl(PagVarValorrecibido), "###,##0.00") .Col = 6 : .Text = Math.Round((PagVarValorrecibido - PagVarPorcobrar), 2) Call LlenaCampos() End If If UCase(Trim(PagVarFormapago)) = "CH" Then .Col = 1 : .Text = "Cheque" .Col = 2 : .Text = PagVarPorcobrar .Col = 4 : .Text = PagVarFechacheque .Col = 5 : .Text = PagVarCodigobanco .Col = 6 : .Text = PagVarCodigociudad .Col = 7 : .Text = PagVarNumerocheque .Col = 8 : .Text = PagVarCtacte Call LlenaCampos() End If If UCase(Trim(PagVarFormapago)) = "CR" Then .Col = 1 : .Text = "Credito" .Col = 2 : .Text = Format(CDbl(PagVarPorcobrar), "###,##0.00") .Col = 4 : .Text = PagVarNombreempleado .Col = 5 : .Text = PagVarCedulaempleado .Col = 6 : .Text = PagVarAutorizacioncred Call LlenaCampos() End If .MaxRows = .MaxRows + 1 End With I = I + 1 End While SprFormadePago.Col = 1 SprFormadePago.Row = SprFormadePago.MaxRows If Trim(SprFormadePago.Text) = "" Then SprFormadePago.MaxRows = SprFormadePago.MaxRows - 1 End If Else MsgBox("Factura no existe..!", MsgBoxStyle.Information, "Mensaje") Me.TxtNumero.Focus()

371

End If Else MsgBox("Ingrese Factura a Buscar..!", MsgBoxStyle.Information, "Mensaje") Me.TxtNumero.Focus() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub LlenaCampos() With SprFormadePago .Row = .ActiveRow : .Col = 1 If Trim(.Text) = "Tarjeta" Then .Col = 4 : CmbTarjetas.SelectedIndex = 0 For I = 0 To Me.CmbTarjetas.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(CmbTarjetas.Text, 2))) = Val(Trim(.Text)) Then Me.CmbTarjetas.SelectedIndex = I Exit For End If If I <> Me.CmbTarjetas.Items.Count - 1 Then Me.CmbTarjetas.SelectedIndex = I + 1 End If Next .Col = 5 : TxtNumeroTarjeta.Text = .Text .Col = 6 : TxtNombreCliente.Text = .Text .Col = 7 : TxtTelefonos.Text = .Text .Col = 8 : TxtLote.Text = .Text Call GruposVisibles(False, True, False, False, False, False) End If If Trim(.Text) = "Efectivo" Then .Col = 4 : TxtPorCobrar.Text = Format(CDbl(.Text), "$###,##0.00") .Col = 2 : TxtPorCobrar.Text = Format(CDbl(.Text), "$###,##0.00") .Col = 5 : TxtRecibido.Text = Format(CDbl(.Text), "$###,##0.00") .Col = 6 : TxtCambio.Text = Format(CDbl(.Text), "$###,##0.00") Call GruposVisibles(True, False, False, False, False, False) End If If Trim(.Text) = "Cheque" Then .Col = 4 : DtpFechaCheque.Text = .Text .Col = 5 : CmbBancos.SelectedIndex = 0 For I = 0 To Me.CmbBancos.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(CmbBancos.Text, 2))) = Val(Trim(.Text)) Then

372

Me.CmbBancos.SelectedIndex = I Exit For End If If I <> Me.CmbBancos.Items.Count - 1 Then Me.CmbBancos.SelectedIndex = I + 1 End If Next .Col = 6 : CmbCiudad.SelectedIndex = 0 For I = 0 To Me.CmbCiudad.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(CmbCiudad.Text, 2))) = Val(Trim(.Text)) Then Me.CmbCiudad.SelectedIndex = I Exit For End If If I <> Me.CmbCiudad.Items.Count - 1 Then Me.CmbCiudad.SelectedIndex = I + 1 End If Next .Col = 7 : TxtCheque.Text = .Text .Col = 8 : TxtCuenta.Text = .Text Call GruposVisibles(False, False, True, False, False, False) End If If Trim(.Text) = "Credito" Then .Col = 4 : TxtNombreEmpleado.Text = .Text .Col = 5 : TxtCedula.Text = .Text .Col = 6 : TxtAutorizacionCred.Text = .Text Call GruposVisibles(False, False, False, True, False, False) End If End With End Sub Private Sub EliminarDatos() If Trim(TxtNumero.Text <> "") Then If Not IsNumeric(TxtNumero.Text) = True Then MsgBox("Introduzca un valor con números") Me.TxtNumero.Focus() Else If MessageBox.Show("Va a Eliminar un Registro de la Base. Desea Continuar?...", "ALERTA", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then Call EliminaFactura() End If End If End If End Sub

373

Private Sub EliminaFactura() Dim CodigoCabecera As Integer If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_CAB", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", "NV") cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(TxtNumero.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CodigoCabecera = dr("NUMERO") End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_CABECERA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "NV") cmd.Parameters.Add("@SUCURSAL", CODSUCU) cmd.Parameters.Add("@CAJA", CODCAJA) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@OPCION", 1) Try cmd.ExecuteNonQuery() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_CABECERA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "NV") cmd.Parameters.Add("@SUCURSAL", CODSUCU) cmd.Parameters.Add("@CAJA", CODCAJA) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@OPCION", 2) Try

374

cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@OPCION", 1) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@OPCION", 2) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_EXISTENCIAS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "NV") cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) Try cmd.ExecuteNonQuery() MsgBox("FACTURA ELIMINADA EXITOSAMENTE") Catch ex As Exception

375

MsgBox(ex.Message) End Try Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub DisplayCurrentRecord() Dim i As Integer Dim s As String Dim CodigoCabecera As Integer If rs.BOF Then rs.MoveFirst() End If If rs.EOF Then rs.MoveLast() End If SprDetalleFactura.MaxRows = 0 SprDetalleFactura.MaxRows = 1 SprFormadePago.MaxRows = 0 SprFormadePago.MaxRows = 1 Me.TxtNumero.Text = rs.Fields("numerocaja").Value.ToString Me.TxtCodCli.Text = rs.Fields("CLIENTE").Value.ToString Me.DtpFechaRegistro.Value = rs.Fields("fecha").Value Me.TxtSubtotal.Text = Format(CDbl(rs.Fields("subtotal").Value.ToString), "$###,##0.00") Me.Txtiva.Text = Format(CDbl(rs.Fields("impuesto").Value.ToString), "$###,##0.00") Me.TxtDescto.Text = Format(CDbl(rs.Fields("descuento1").Value.ToString), "$###,##0.00") Me.Txttotal.Text = Format(CDbl(rs.Fields("total").Value.ToString), "$###,##0.00") CodigoCabecera = rs.Fields("numero").Value If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", rs.Fields("caja").Value) cmd.Parameters.Add("@OPCION", 1) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message)

376

End Try If dr.Read Then TxtCaja.Text = dr("DESCRIPCION") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", rs.Fields("vendedor").Value) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtVendedor.Text = dr("USUUSER") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", rs.Fields("sucursal").Value) cmd.Parameters.Add("@OPCION", 3) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtSucursal.Text = dr("DESCRIPCION") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", rs.Fields("cliente").Value) cmd.Parameters.Add("@OPCION", 5) Try dr = cmd.ExecuteReader() Catch ex As Exception

377

MsgBox(ex.Message) End Try If dr.Read Then TxtNombreCli.Text = dr("NOMBRE") COD_PER = dr("CODPERS") End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CodigoCabecera) cmd.Parameters.Add("@OPCION", 1) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try i = 1 While dr.Read DetVarCodigoproducto = dr("CODIGOPRODUCTO") : DetVarFecha = dr("FECHA") : DetVarCantidad = dr("CANTIDAD") DetVarTotal1 = dr("TOTAL1") : DetVarTotal2 = dr("TOTAL2") : DetVarDescuento1 = dr("DESCUENTO1") : DetVarDescuento2 = dr("DESCUENTO2") DetVarValordescuento1 = dr("VALORDESCUENTO1") : DetVarValordescuento2 = dr("VALORDESCUENTO2") : DetVarPrecio = dr("PRECIO") DetVarCosto = dr("COSTO") : DetVarIva = dr("IVA") : DetVarHora = dr("HORA") With SprDetalleFactura .Row = i : .Col = 1 : .Text = DetVarDescuento1 .Col = 2 : .Text = DetVarCantidad .Col = 3 : .Text = DetVarCodigoproducto .Col = 5 : .Text = dr("NOMBRE") .Col = 6 : .Text = Format(CDbl(DetVarPrecio), "###,##0.00") .Col = 7 : .Text = Format(CDbl(DetVarTotal1), "###,##0.00") .Col = 9 : .Text = DetVarIva .Col = 10 : .Text = CStr(dr("TIPOMEMBRE")) .Col = 11 : .Text = CInt(dr("DIAS")) .Col = 12 : .Text = DetVarCosto .MaxRows = .MaxRows + 1 End With

378

i = i + 1 End While If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CodigoCabecera) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try i = 1 While dr.Read PagVarNumerocab = dr("NUMEROCAB") : PagVarTipo = dr("TIPO") : PagVarSucursal = dr("SUCURSAL") : PagVarCaja = dr("CAJA") PagVarNumerocaja = dr("NUMEROCAJA") : PagVarTipoaplic = dr("TIPOAPLIC") : PagVarFecha = dr("FECHA") : PagVarFormapago = dr("FORMAPAGO") PagVarPorcobrar = dr("PORCOBRAR") : PagVarValorrecibido = dr("VALORRECIBIDO") : PagVarCodigotarjeta = dr("CODIGOTARJETA") PagVarNumerotarjeta = dr("NUMEROTARJETA") : PagVarNombrecliente = dr("NOMBRECLIENTE") : PagVarTelefonotarjeta = dr("TELEFONOTARJETA") PagVarLote = dr("LOTE") : PagVarFechacheque = dr("FECHACHEQUE") : PagVarCodigobanco = dr("CODIGOBANCO") : PagVarCodigociudad = dr("CODIGOCIUDAD") PagVarNumerocheque = dr("NUMEROCHEQUE") : PagVarCtacte = dr("CTACTE") : PagVarNombreempleado = dr("NOMBREEMPLEADO") : PagVarCedulaempleado = dr("CEDULAEMPLEADO") PagVarAutorizacioncred = dr("AUTORIZACIONCRED") : PagVarQuienregala = dr("QUIENREGALA") : PagVarBeneficiario = dr("BENEFICIARIO") : PagVarAutorizacionobs = dr("AUTORIZACIONOBS") PagVarFechadevolucion = dr("FECHADEVOLUCION") : PagVarNumerodevolucion = dr("NUMERODEVOLUCION") : PagVarCancelado = dr("CANCELADO") : PagVarHora = dr("HORA") 'LLENAR SPREAD DE PAGOS With SprFormadePago .Col = 1 .Row = i If UCase(Trim(PagVarFormapago)) = "TA" Then .Col = 1 : .Text = "Tarjeta"

379

.Col = 2 : .Text = PagVarPorcobrar .Col = 4 : .Text = PagVarCodigotarjeta .Col = 5 : .Text = PagVarNumerotarjeta .Col = 6 : .Text = PagVarNombrecliente .Col = 7 : .Text = PagVarTelefonotarjeta .Col = 8 : .Text = PagVarLote Call LlenaCampos() End If If UCase(Trim(PagVarFormapago)) = "EF" Then .Col = 1 : .Text = "Efectivo" .Col = 2 : .Text = Format(CDbl(PagVarPorcobrar), "###,##0.00") .Col = 4 : .Text = Format(CDbl(PagVarPorcobrar), "###,##0.00") .Col = 5 : .Text = Format(CDbl(PagVarValorrecibido), "###,##0.00") .Col = 6 : .Text = Math.Round((PagVarValorrecibido - PagVarPorcobrar), 2) Call LlenaCampos() End If If UCase(Trim(PagVarFormapago)) = "CH" Then .Col = 1 : .Text = "Cheque" .Col = 2 : .Text = PagVarPorcobrar .Col = 4 : .Text = PagVarFechacheque .Col = 5 : .Text = PagVarCodigobanco .Col = 6 : .Text = PagVarCodigociudad .Col = 7 : .Text = PagVarNumerocheque .Col = 8 : .Text = PagVarCtacte Call LlenaCampos() End If If UCase(Trim(PagVarFormapago)) = "CR" Then .Col = 1 : .Text = "Credito" .Col = 2 : .Text = Format(CDbl(PagVarPorcobrar), "###,##0.00") .Col = 4 : .Text = PagVarNombreempleado .Col = 5 : .Text = PagVarCedulaempleado .Col = 6 : .Text = PagVarAutorizacioncred Call LlenaCampos() End If .MaxRows = .MaxRows + 1 End With i = i + 1 End While SprFormadePago.Col = 1 SprFormadePago.Row = SprFormadePago.MaxRows If Trim(SprFormadePago.Text) = "" Then SprFormadePago.MaxRows = SprFormadePago.MaxRows - 1

380

End If End Sub 'Procedimiento de evento Reporte_PrintPage. Construyendo el informe Private Sub Reporte_PrintPage(ByVal sender As System.Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) Handles Reporte.PrintPage Dim NombreCliente As String Dim Cedula As String Dim Vendedor As String Dim equis As String Dim fecha As Date Dim total As Double 'objeto PrintPageEventArgs, cuyas propiedades MarginBounds, Graphics, ' HasMorePage, etc.. no ayudarán a configurar el texto para la impresión ContenidoDelTexto = e NombreCliente = Trim(Mid(Me.TxtNombreCli.Text, 1, 22)) fecha = Format(Me.DtpFechaRegistro.Value, "dd/MMMM/yyyy") ContenidoDelTexto.Graphics.DrawString("Fecha: " & fecha, New Font("Arial", 8), Brushes.Black, 0, 0) ContenidoDelTexto.Graphics.DrawString("Cliente: " & NombreCliente, New Font("Arial", 8), Brushes.Black, 0, 10) ContenidoDelTexto.Graphics.DrawString(" CI: " & Me.TxtCodCli.Text, New Font("Arial", 8), Brushes.Black, 200, 10) ContenidoDelTexto.Graphics.DrawString("Vendedor: " & Me.TxtVendedor.Text, New Font("Arial", 8), Brushes.Black, 0, 20) ContenidoDelTexto.Graphics.DrawString("I Cant. Producto P.Total Dsc.", New Font("Arial", 9), Brushes.Black, 0, 40) ContenidoDelTexto.Graphics.DrawString("========================================", New Font("Arial", 9), Brushes.Black, 0, 50) For I = 1 To Me.SprDetalleFactura.MaxRows Me.SprDetalleFactura.Col = 5 Me.SprDetalleFactura.Row = I If Me.SprDetalleFactura.Text = "" Then Exit For End If Me.SprDetalleFactura.Col = 9 Me.SprDetalleFactura.Row = I If Me.SprDetalleFactura.Text = "12" Then

381

equis = "*" Else equis = " " End If ContenidoDelTexto.Graphics.DrawString(equis, New Font("Arial", 7), Brushes.Black, 0, (20 * I) + 40) Me.SprDetalleFactura.Col = 2 : Me.SprDetalleFactura.Row = I ContenidoDelTexto.Graphics.DrawString(Me.SprDetalleFactura.Text, New Font("Arial", 7), Brushes.Black, 16, (20 * I) + 40) Me.SprDetalleFactura.Col = 5 : Me.SprDetalleFactura.Row = I ContenidoDelTexto.Graphics.DrawString(Trim(Mid(Me.SprDetalleFactura.Text, 1, 18)), New Font("Arial", 7), Brushes.Black, 48, (20 * I) + 40) ContenidoDelTexto.Graphics.DrawString("$", New Font("Arial", 7), Brushes.Black, 208, (20 * I) + 40) Me.SprDetalleFactura.Col = 7 : Me.SprDetalleFactura.Row = I ContenidoDelTexto.Graphics.DrawString(Me.SprDetalleFactura.Text, New Font("Arial", 7), Brushes.Black, 224, (20 * I) + 40) Me.SprDetalleFactura.Col = 1 : Me.SprDetalleFactura.Row = I ContenidoDelTexto.Graphics.DrawString(Me.SprDetalleFactura.Text, New Font("Arial", 7), Brushes.Black, 260, (20 * I) + 40) Me.SprDetalleFactura.Col = 3 : Me.SprDetalleFactura.Row = I ContenidoDelTexto.Graphics.DrawString("Codigo: " & Me.SprDetalleFactura.Text, New Font("Arial", 7), Brushes.Black, 0, (20 * I) + 50) Next ContenidoDelTexto.Graphics.DrawString("========" & Me.SprDetalleFactura.Text, New Font("Arial", 9), Brushes.Black, 190, (20 * I) + 60) ContenidoDelTexto.Graphics.DrawString(" Subtotal: " & Format(CDbl(Me.Txttotal.Text), "######.00"), New Font("Arial", 8), Brushes.Black, 0, (20 * I) + 70) ContenidoDelTexto.Graphics.DrawString("========" & Me.SprDetalleFactura.Text, New Font("Arial", 9), Brushes.Black, 190, (20 * I) + 80) ContenidoDelTexto.Graphics.DrawString(" Total a Pagar: " & Format(CDbl(Me.Txttotal.Text), "######.00"), New Font("Arial", 8), Brushes.Black, 0, (20 * I) + 90) ContenidoDelTexto.Graphics.DrawString(" Forma de Pago", New Font("Arial", 8), Brushes.Black, 0, (20 * I) + 110) For J = 1 To Me.SprFormadePago.MaxRows Me.SprFormadePago.Col = 2 Me.SprFormadePago.Row = J If Me.SprFormadePago.Text = "" Then

382

Exit For End If Me.SprFormadePago.Col = 1 : Me.SprFormadePago.Row = J ContenidoDelTexto.Graphics.DrawString(Me.SprFormadePago.Text & " : ", New Font("Arial", 8), Brushes.Black, 16, (10 * I) + 200) Me.SprFormadePago.Col = 2 : Me.SprFormadePago.Row = J ContenidoDelTexto.Graphics.DrawString(Me.SprFormadePago.Text, New Font("Arial", 8), Brushes.Black, 120, (10 * I) + 200) I = I + 1 Next ContenidoDelTexto.Graphics.DrawString(" Gracias por Preferirnos", New Font("Arial", 9), Brushes.Black, 0, (20 * I) + 170) ContenidoDelTexto.Graphics.DrawString(" Salida la mercaderia", New Font("Arial", 9), Brushes.Black, 0, (20 * I) + 180) ContenidoDelTexto.Graphics.DrawString(" No se aceptan devoluciones", New Font("Arial", 9), Brushes.Black, 0, (20 * I) + 190) ContenidoDelTexto.Graphics.DrawString(" EPSON TM-U200PD/MODELO", New Font("Arial", 9), Brushes.Black, 0, (20 * I) + 200) ContenidoDelTexto.Graphics.DrawString(" M119D-SERIE 2ZUK113232", New Font("Arial", 9), Brushes.Black, 0, (20 * I) + 210) 'Indica que no hay más páginas a imprimir ContenidoDelTexto.HasMorePages = False End Sub Private Sub ImprimirDatos() If Me.TxtNumero.Text <> "" And Me.TxtCodCli.Text <> "" And Me.TxtSubtotal.Text <> "" And Me.Txttotal.Text <> "" And Me.TxtDescto.Text <> "" And Me.Txtiva.Text <> "" Then Reporte.Print() Else MsgBox("No Existen datos a imprimir...", vbInformation, "A T E N C I O N") Me.TxtNumero.Focus() End If End Sub Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" Call IngresarDatos() Case "Grabar" Call GrabarDatos()

383

Case "Modificar" 'Call ModificarDatos() Case "Eliminar" Call EliminarDatos() Case "Buscar" 'Call buscardatos() Case "Deshacer" Call DeshacerDatos() Case "Imprimir" Call ImprimirDatos() Case "Salir" Call SalirDatos() End Select End Sub Private Sub valida_campos(ByRef cadena As Boolean) cadena = True With SprFormadePago .Col = 1 .Row = .ActiveRow If Trim(.Text) = "Tarjeta" Then Call LlenaSpread() If TxtNumeroTarjeta.Text = "" Then MsgBox("Ingrese el numero de tarjeta...", vbInformation, "A T E N C I O N") TxtNumeroTarjeta.Focus() cadena = False Exit Sub End If If TxtNombreCliente.Text = "" Then MsgBox("Ingrese el nombre del Cliente...", vbInformation, "A T E N C I O N") TxtNombreCliente.Focus() cadena = False Exit Sub End If If TxtTelefonos.Text = "" Then MsgBox("Ingrese el Telefono...", vbInformation, "A T E N C I O N") TxtTelefonos.Focus() cadena = False Exit Sub End If If TxtLote.Text = "" Then MsgBox("Ingrese el lote...", vbInformation, "A T E N C I O N")

384

TxtLote.Focus() cadena = False Exit Sub End If End If If Trim(.Text) = "Efectivo" Then Call LlenaSpread() If TxtRecibido.Text = "" Then MsgBox("No ha Ingresado el valor a pagar...", vbInformation, "A T E N C I O N") TxtRecibido.Focus() cadena = False Exit Sub End If End If If Trim(.Text) = "Cheque" Then Call LlenaSpread() If TxtCheque.Text = "" Then MsgBox("Ingrese el numero de cheque...", vbInformation, "A T E N C I O N") TxtCheque.Focus() cadena = False Exit Sub End If If TxtCuenta.Text = "" Then MsgBox("Ingrese el numero de cuenta...", vbInformation, "A T E N C I O N") TxtCuenta.Focus() cadena = False Exit Sub End If End If If Trim(.Text) = "Credito" Then Call LlenaSpread() If TxtNombreEmpleado.Text = "" Then MsgBox("Ingrese el nombre del Empleado...", vbInformation, "A T E N C I O N") TxtNombreEmpleado.Focus() cadena = False Exit Sub End If If TxtCedula.Text = "" Then MsgBox("Ingrese la cedula del Empleado...", vbInformation, "A T E N C I O N")

385

TxtCedula.Focus() cadena = False Exit Sub End If If TxtAutorizacionCred.Text = "" Then MsgBox("No ha Ingresado el valor a pagar...", vbInformation, "A T E N C I O N") TxtRecibido.Focus() cadena = False Exit Sub End If End If End With End Sub Private Sub Verifica_Existencias() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If With SprDetalleFactura cmd = New SqlClient.SqlCommand("VERIFICA_EXISTENCIA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", CInt(xcodigo)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CantidadExistencia = dr("CANTIDAD") Else CantidadExistencia = 0 End If End With If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If End Sub Private Sub Btn_Autoriza_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Autoriza.Click If Me.Btn_Autoriza.Enabled = True Then GroupBox4.Enabled = True Else GroupBox4.Enabled = False End If

386

End Sub End Class

* Clase Frm_pro_ingreso.vb

Imports System.Data Imports System.Data.OleDb Imports System.Data.SqlClient Imports System.Drawing.Printing Imports CrystalDecisions.Shared Public Class Frm_pro_ingreso Inherits System.Windows.Forms.Form Private rs As ADODB.Recordset Dim ContenidoDelTexto As PrintPageEventArgs Dim Reporte As New PrintDocument Dim COD_PROD As Integer Dim iva, TotalG As Double Public MODIFICA As Boolean Dim CODCAJA, COD_PRO, DIASMEMBRESIA, FILA, I As Integer 'VARIABLES PARA BUSQUEDA DE INGRESO CABECERA Dim VarFecha As Date Dim VarHora As DateTime Dim VarTipoAplic, VarImpreso, VarNombreCajero As String Dim VarSubtotalCosto, VarImpuestoCosto, VarTotalCosto As Double Dim VarSubtotalPrecio, VarImpuestoPrecio, VarTotalPrecio As Double Dim VarTipo, VarCaja, VarProveedor, VarUsuario, VarComentario, VarTipoIngreso As String Dim VarNumero, VarSucursal, VarSucursal1, VarNumeroCajero, VarNumeroAplic As Integer 'VARIABLES PARA BUSQUEDA DE INGRESO DETALLES Dim DetVarFecha As Date Dim DetVarHora As DateTime Dim DetVarTipo, DetVarCodigoproducto, DetVarBodega As String Dim DetVarNumerocab, DetVarNumerocaja, DetVarCantidad As Integer Dim DetVarTotalPrecio, DetVarTotalCosto, DetVarPrecio, DetVarCosto, DetVarIva As Decimal

387

Private Sub Frm_pro_ingreso_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call LlenaParametros() : Call LlenaCombos() : Call Deshabilita() If Not (rs.BOF) Or Not (rs.EOF) Then : rs.MoveLast() : Call DisplayCurrentRecord() : End If TxtNumero.Focus() End Sub Private Sub IngresarDatos() Call Limpia() : Call ObtieneSecuencia() : Call Habilita() : Me.TxtProveedor.Focus() End Sub Private Sub GrabarDatos() Dim CodigoCabecera, Cantidad As Integer Dim Precio, Costo, TotalPagos As Double Dim MEMBRESIA As Boolean Dim FormaPago As String TotalPagos = 0 If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If If Me.SprIngresoEgreso.MaxRows >= 1 Then If MODIFICA = True Then MsgBox("EL INGRESO NO PUEDE SER MODIFICADO") Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "INV_ING_CABECERA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "IN") cmd.Parameters.Add("@SUCURSAL", Val(Trim(Microsoft.VisualBasic.Right(Me.CmbSucursalOrigen.Text, 4)))) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@SUCURSAL1", Val(Trim(Microsoft.VisualBasic.Right(Me.CmbSucursalDestino.Text, 4)))) cmd.Parameters.Add("@TIPOINGRESO", Trim(Me.CmbTipoIngreso.Text))

388

cmd.Parameters.Add("@PROVEEDOR", Trim(Me.TxtProveedor.Text)) cmd.Parameters.Add("@TIPOAPLIC", "SA") cmd.Parameters.Add("@NUMEROAPLIC", Trim(Me.TxtReferencia.Text)) cmd.Parameters.Add("@SUBTOTALPRECIO", CDbl(TxtSubtotalPrecio.Text)) cmd.Parameters.Add("@IVAPRECIO", CDbl(TxtIvaPrecio.Text)) cmd.Parameters.Add("@TOTALPRECIO", CDbl(TxtTotalPrecio.Text)) cmd.Parameters.Add("@SUBTOTALCOSTO", CDbl(TxtSubtotalCosto.Text)) cmd.Parameters.Add("@IVACOSTO", CDbl(TxtIvaCosto.Text)) cmd.Parameters.Add("@TOTALCOSTO", CDbl(TxtTotalCosto.Text)) cmd.Parameters.Add("@FECHA", Me.DtpFechaRegistro.Value) cmd.Parameters.Add("@HORA", Today.Hour) cmd.Parameters.Add("@OBSERVACIONES", Trim(Me.TxtObservaciones.Text)) cmd.Parameters.Add("@USUARIO", Cod_Usu) cmd.Parameters.Add("@IMPRESO", False) cmd.Parameters.Add("@ELIMINADO", False) Try cmd.ExecuteNonQuery() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_BUSCA_CAB", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", "IN") cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(TxtNumero.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CodigoCabecera = dr("NUMERO") End If If Not dr.IsClosed Then : dr.Close() : End If

389

If cn.State = ConnectionState.Closed Then : cn.Open() : End If Catch ex As Exception MsgBox(ex.Message) End Try '********************INGRESA DETALLE With SprIngresoEgreso For FILA = 1 To .MaxRows - 1 cmd.CommandText = "INV_ING_DETALLE" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@TIPO", "IN") cmd.Parameters.Add("@SUCURSAL", Val(Trim(CODSUCU))) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) .Col = 3 : .Row = FILA cmd.Parameters.Add("@CODIGOPRODUCTO", CStr(.Text)) .Col = 2 : Cantidad = CInt(.Text) cmd.Parameters.Add("@CANTIDAD", Cantidad) .Col = 7 : Precio = CDbl(.Text) .Col = 8 : Costo = CDbl(.Text) cmd.Parameters.Add("@PRECIO", CDbl(Precio)) cmd.Parameters.Add("@COSTO", CDbl(Costo)) cmd.Parameters.Add("@TOTALP", Cantidad * CDbl(Precio)) cmd.Parameters.Add("@TOTALC", Cantidad * CDbl(Costo)) .Col = 11 : cmd.Parameters.Add("@IVA", CDbl(.Text)) cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) cmd.Parameters.Add("@HORA", Today) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try '*********** INGRESA ARCHIVO DE EXISTENCIAS cmd.CommandText = "FAC_ING_EXISTENCIAS" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "CO") cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA))

390

cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) .Col = 3 : .Row = FILA cmd.Parameters.Add("@CODIGOPRODUCTO", CStr(.Text)) cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) .Col = 2 : Cantidad = CInt(.Text) cmd.Parameters.Add("@CANTIDAD", Cantidad) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try '*** TERMINA ARCHIVO DE EXISTENCIAS Next End With Call GrabaSecuencia() : Call Deshabilita() Try cmd.ExecuteNonQuery() MsgBox("INGRESO GENERADO EXITOSAMENTE") Catch ex As Exception MsgBox(ex.Message) End Try End If Else MsgBox("Faltan datos de llenar", MsgBoxStyle.Information, "Mensaje") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub SalirDatos() If Me.TlbBotones.Buttons(0).Enabled = False Then If MessageBox.Show("Esta en modo de Ingreso. Desea Cancelar la Operación?...", "ALERTA", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then Call Limpia() : Call Deshabilita() : Me.TxtNumero.Focus() : Me.Close() Else If SprIngresoEgreso.Enabled = True Then SprIngresoEgreso.Focus() : SprIngresoEgreso.SetActiveCell(3, SprIngresoEgreso.MaxRows) Else

391

TxtNumero.Focus() End If End If Else Me.Close() End If End Sub Private Sub DeshacerDatos() Call Limpia() : Call Deshabilita() : Me.TxtNumero.Focus() End Sub Private Sub TxtReferencia_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtReferencia.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) And Trim(TxtReferencia.Text) <> "" Then SprIngresoEgreso.Enabled = True SprIngresoEgreso.Focus() : SprIngresoEgreso.SetActiveCell(3, SprIngresoEgreso.ActiveRow) Else If e.KeyChar.IsDigit(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End If End Sub Private Sub SprIngresoEgreso_KeyPressEvent(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyPressEvent) Handles SprIngresoEgreso.KeyPressEvent Dim CostoU, PrecioU, TotalCU, TotalPU As Double Dim Cantidad As Integer If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If With SprIngresoEgreso If .ActiveCol = 2 Then If e.keyAscii = 13 Then .Row = .ActiveRow : .Col = 3 If Trim(.Text) <> "" Then

392

.Col = 2 : Cantidad = CDbl(.Text) .Col = 7 : PrecioU = CDbl(.Text) .Col = 8 : CostoU = CDbl(.Text) TotalCU = (CostoU * Cantidad) TotalPU = (PrecioU * Cantidad) .SetText(9, .ActiveRow, Format(CDbl(TotalPU), "###,##0.0000")) .SetText(10, .ActiveRow, Format(CDbl(TotalCU), "###,##0.0000")) .SetText(11, .ActiveRow, CDbl(dr("PROIVA"))) Call CalculaTotales() End If End If End If If .ActiveCol = 3 Then If e.keyAscii = 13 Then Dim PROXIVA As Double TablaBuscada = "PRODUCTO_SERV" .Row = .ActiveRow : .Col = 3 : S_Codigo = .Text If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_CONS_ESPEC", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", CDbl(S_Codigo)) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then .SetText(5, .ActiveRow, dr("NOMBRE")) .SetText(7, .ActiveRow, Format(CDbl(dr("PROPRECIO")), "###,##0.0000")) .SetText(8, .ActiveRow, Format(CDbl(dr("COSTO")), "###,##0.0000")) .Row = .ActiveRow .Col = 2 : Cantidad = CDbl(.Text) .Col = 7 : PrecioU = CDbl(.Text) .Col = 8 : CostoU = CDbl(.Text) TotalCU = (CostoU * Cantidad) TotalPU = (PrecioU * Cantidad)

393

.SetText(9, .ActiveRow, Format(CDbl(TotalPU), "###,##0.0000")) .SetText(10, .ActiveRow, Format(CDbl(TotalCU), "###,##0.0000")) .SetText(11, .ActiveRow, CDbl(dr("PROIVA"))) .Col = 3 : .Row = .MaxRows If Trim(.Text) Then .MaxRows = .MaxRows + 1 Else .SetActiveCell(3, .ActiveRow) End If Call CalculaTotales() .Row = .MaxRows : .Col = 2 : .Text = "1" .SetActiveCell(3, .MaxRows) : .Focus() Else .SetActiveCell(3, .ActiveRow) : .Focus() .Col = 3 : .Row = .ActiveRow : .Text = "" MsgBox("Producto o Servicio no existe..!", MsgBoxStyle.Information, "Mensaje") End If End If End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End With End Sub Private Sub SprIngresoEgreso_ButtonClicked(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_ButtonClickedEvent) Handles SprIngresoEgreso.ButtonClicked Dim CostoU, PrecioU, TotalCU, TotalPU As Double Dim Cantidad As Integer If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If With SprIngresoEgreso If .ActiveCol = 4 Then Dim frm_busq As New Frm_Buscar S_Codigo = "" : TablaBuscada = "VIS_CONS_PRODCOMPO" Campo1 = "CODPRODSERV" Campo2 = "NOMBRE" Campo3 = "Busqueda Por Producto" frm_busq.ShowDialog()

394

If S_Codigo <> "" Then .SetText(3, .ActiveRow, S_Codigo) With SprIngresoEgreso If S_Codigo <> "" Then If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_CONS_ESPEC", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", CDbl(S_Codigo)) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then .Row = .ActiveRow .SetText(5, .ActiveRow, dr("NOMBRE")) .SetText(7, .ActiveRow, Format(CDbl(dr("PROPRECIO")), "###,##0.0000")) .SetText(8, .ActiveRow, Format(CDbl(dr("COSTO")), "###,##0.0000")) .Col = 2 : Cantidad = CDbl(.Text) .Col = 7 : PrecioU = CDbl(.Text) .Col = 8 : CostoU = CDbl(.Text) TotalCU = (CostoU * Cantidad) TotalPU = (PrecioU * Cantidad) .SetText(9, .ActiveRow, Format(CDbl(TotalPU), "###,##0.0000")) .SetText(10, .ActiveRow, Format(CDbl(TotalCU), "###,##0.0000")) .SetText(11, .ActiveRow, CDbl(dr("PROIVA"))) .MaxRows = .MaxRows + 1 Call CalculaTotales() .Row = .MaxRows : .Col = 2 : .Text = "1" .SetActiveCell(3, .MaxRows) : .Focus() Else .SetActiveCell(2, .ActiveRow) : .Focus() .Col = 3 : .Row = .ActiveRow : .Text = ""

395

MsgBox("Producto o Servicio no existe..!", MsgBoxStyle.Information, "Mensaje") End If Else MsgBox("Ingrese código de Producto o Servicio..!", MsgBoxStyle.Information, "Mensaje") End If End With End If End If End With If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub SprIngresoEgreso_KeyDownEvent(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyDownEvent) Handles SprIngresoEgreso.KeyDownEvent With SprIngresoEgreso If e.keyCode = Keys.Delete Then If .MaxRows > 1 Then If MessageBox.Show("Esta seguro de Eliminar la Linea?...", "Alerta", MessageBoxButtons.YesNo) = DialogResult.Yes Then .Row = .ActiveRow : .Col = 3 .Action = FPSpread.ActionConstants.ActionDeleteRow.ActionDeleteRow : .MaxRows = .MaxRows - 1 .SetActiveCell(3, .MaxRows) : .Focus() : Call CalculaTotales() End If End If End If End With End Sub Private Sub TxtNumero_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNumero.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call CargarIngreso() End If End Sub Private Sub CalculaTotales()

396

Dim ValIvaTC, ValIvaTP, ValIvaCosto, ValIvaPrecio, SubtotalCosto, SubtotalPrecio, TotalP, TotalC, TotalGP, TotalGC, CostoU, PrecioU, TotalCU, TotalPU As Double Dim Cantidad As Integer TotalG = 0 With SprIngresoEgreso For I = 1 To .MaxRows - 1 .Col = 12 : .Row = I If .Value = 0 Then .Row = I .Col = 2 : Cantidad = CDbl(.Text) .Col = 7 : PrecioU = CDbl(.Text) TotalPU = PrecioU * Cantidad SubtotalPrecio = Math.Round(SubtotalPrecio, 4) + Math.Round(TotalPU, 4) .Col = 8 : CostoU = CDbl(.Text) TotalCU = CostoU * Cantidad SubtotalCosto = Math.Round(SubtotalCosto, 4) + Math.Round(TotalCU, 4) .Col = 11 If Val(.Text) = 1 Then ValIvaCosto = Math.Round(TotalCU, 4) * iva ValIvaPrecio = Math.Round(TotalPU, 4) * iva Else ValIvaCosto = 0 ValIvaPrecio = 0 End If TotalP = Math.Round(SubtotalPrecio, 4) ValIvaTP = Math.Round(ValIvaTP, 4) + Math.Round(ValIvaPrecio, 4) TotalGP = Math.Round(TotalP, 4) + Math.Round(ValIvaTP, 4) TotalC = Math.Round(SubtotalCosto, 4) ValIvaTC = Math.Round(ValIvaTC, 4) + Math.Round(ValIvaCosto, 4) TotalGC = Math.Round(TotalC, 4) + Math.Round(ValIvaTC, 4) End If Next End With TxtSubtotalPrecio.Text = Format(TotalP, "$###,##0.0000") TxtIvaPrecio.Text = Format(ValIvaTP, "$###,##0.0000") TxtTotalPrecio.Text = Format(TotalGP, "$###,##0.0000") TxtSubtotalCosto.Text = Format(TotalC, "$###,##0.0000") TxtIvaCosto.Text = Format(ValIvaTC, "$###,##0.0000")

397

TxtTotalCosto.Text = Format(TotalGC, "$###,##0.0000") End Sub Private Sub LlenaParametros() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 11) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CODCAJA = dr("CODCAJA") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If 'CARGO VALOR DE IVA cmd = New SqlClient.SqlCommand("SEG_CONS_PARAMETRO", cn) cmd.CommandType = CommandType.StoredProcedure Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then iva = dr("PORCENTAJEIVA") End If Me.TxtUsuario.Text = CStr(usu) If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub LlenaCombos() 'Llena los Bancos Me.CmbSucursalDestino.Text = "" : Me.CmbSucursalOrigen.Text = "" If Not dr.IsClosed Then : dr.Close() : End If

398

If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try While dr.Read Me.CmbSucursalDestino.Items.Add(dr("DESCRIPCION") & Space(50) & dr("CODSUCUR")) Me.CmbSucursalOrigen.Items.Add(dr("DESCRIPCION") & Space(50) & dr("CODSUCUR")) End While Me.CmbSucursalDestino.SelectedIndex = (0) : Me.CmbSucursalOrigen.SelectedIndex = (0) For I = 0 To Me.CmbSucursalOrigen.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(Me.CmbSucursalOrigen.Text, 4))) = CODSUCU Then Me.CmbSucursalOrigen.SelectedIndex = I : Exit For End If If I <> Me.CmbSucursalOrigen.Items.Count - 1 Then Me.CmbSucursalOrigen.SelectedIndex = I + 1 End If Next If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub Habilita() Me.TlbBotones.Buttons(0).Enabled = False : Me.TlbBotones.Buttons(2).Enabled = True Me.TlbBotones.Buttons(6).Enabled = False : Me.TlbBotones.Buttons(12).Enabled = False Me.TlbBotones.Buttons(10).Enabled = True : Me.TlbBotones.Buttons(4).Enabled = False Me.TlbBotones.Buttons(8).Enabled = False : Me.TlbBotones.Buttons(14).Enabled = True Me.TxtNumero.Enabled = False : Me.CmbSucursalDestino.Enabled = True Me.TxtReferencia.Enabled = True : Me.TxtProveedor.Enabled = True

399

End Sub Private Sub Deshabilita() Me.TlbBotones.Buttons(0).Enabled = True : Me.TlbBotones.Buttons(2).Enabled = False Me.TlbBotones.Buttons(6).Enabled = True : Me.TlbBotones.Buttons(12).Enabled = True Me.TlbBotones.Buttons(10).Enabled = False : Me.TlbBotones.Buttons(4).Enabled = True Me.TlbBotones.Buttons(8).Enabled = True : Me.TlbBotones.Buttons(14).Enabled = True Me.SprIngresoEgreso.Enabled = False : Me.DtpFechaRegistro.Enabled = False Me.TxtNumero.Enabled = True : Me.CmbSucursalDestino.Enabled = False Me.TxtReferencia.Enabled = False : Me.TxtProveedor.Enabled = False End Sub Private Sub Limpia() Me.DtpFechaRegistro.Value = Today() : Me.TxtNumero.Text = "" Me.SprIngresoEgreso.MaxRows = 0 : Me.SprIngresoEgreso.MaxRows = 1 Me.SprIngresoEgreso.Row = Me.SprIngresoEgreso.MaxRows Me.SprIngresoEgreso.Col = 2 : Me.SprIngresoEgreso.Text = 1 Me.TxtSubtotalCosto.Text = "" : Me.TxtIvaCosto.Text = "" : Me.TxtTotalCosto.Text = "" Me.TxtSubtotalPrecio.Text = "" : Me.TxtIvaPrecio.Text = "" : Me.TxtTotalPrecio.Text = "" Me.TxtProveedor.Text = "" : Me.TxtNombreProveedor.Text = "" : Me.TxtReferencia.Text = "" End Sub Private Sub ObtieneSecuencia() Dim CodigoSuc As Integer CodigoSuc = Val(Trim(Microsoft.VisualBasic.Right(SUCURSAL, 3))) If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_SECUENCIA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("IN")) cmd.Parameters.Add("@CODIGO2", CInt(CodigoSuc)) cmd.Parameters.Add("@CODIGO3", CInt(CODCAJA))

400

Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtNumero.Text = dr("NUMERO") + 1 Else TxtNumero.Text = "1" End If dr.Close() End Sub Private Sub GrabaSecuencia() Dim CodigoSuc As Integer CodigoSuc = Val(Trim(Microsoft.VisualBasic.Right(SUCURSAL, 3))) If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_SECUENCIA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("IN")) cmd.Parameters.Add("@CODIGO2", CInt(CodigoSuc)) cmd.Parameters.Add("@CODIGO3", CInt(CODCAJA)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_MOD_SECUENCIA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", CStr("IN")) cmd.Parameters.Add("@SUCURSAL", CInt(CodigoSuc)) cmd.Parameters.Add("@CAJA", CInt(CODCAJA)) cmd.Parameters.Add("@NUMERO", CInt(Val(TxtNumero.Text))) Try cmd.ExecuteNonQuery()

401

dr.Close() Catch ex As Exception MsgBox(ex.Message) End Try Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_ING_SECUENCIA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", CStr("IN")) cmd.Parameters.Add("@SUCURSAL", CInt(CodigoSuc)) cmd.Parameters.Add("@CAJA", CInt(CODCAJA)) cmd.Parameters.Add("@NUMERO", 1) Try cmd.ExecuteNonQuery() dr.Close() Catch ex As Exception MsgBox(ex.Message) End Try End If End Sub Public Sub CargarIngreso() If Trim(TxtNumero.Text) <> "" Then SprIngresoEgreso.MaxRows = 0 : SprIngresoEgreso.MaxRows = 1 If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_BUSCA_CABECERA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("IN")) cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(Trim(TxtNumero.Text))) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then

402

VarNumero = dr("NUMERO") : VarTipo = dr("TIPO") : VarSucursal = dr("SUCURSAL") : VarSucursal1 = dr("SUCURSAL1") : VarCaja = dr("CAJA") VarUsuario = dr("USUARIO") : VarComentario = dr("OBSERVACIONES") : VarTipoIngreso = dr("TIPOINGRESO") VarSubtotalPrecio = dr("SUBTOTALPRECIO") : VarImpuestoPrecio = dr("IVAPRECIO") : VarTotalPrecio = dr("TOTALPRECIO") : VarTipoAplic = dr("TIPOAPLIC") VarSubtotalCosto = dr("SUBTOTALCOSTO") : VarImpuestoCosto = dr("IVACOSTO") : VarTotalCosto = dr("TOTALCOSTO") VarNumeroAplic = dr("NUMEROAPLIC") : VarImpreso = dr("IMPRESO") : VarFecha = dr("FECHA") : VarHora = dr("HORA") DtpFechaRegistro.Value = CDate(VarFecha) Me.TxtProveedor.Text = dr("proveedor") Call BuscaNombreProveedor() If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarUsuario) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtUsuario.Text = dr("USUUSER") End If For I = 0 To Me.CmbTipoIngreso.Items.Count - 1 If Trim(CmbTipoIngreso.Text) = VarTipoIngreso Then Me.CmbTipoIngreso.SelectedIndex = I : Exit For End If If I <> Me.CmbTipoIngreso.Items.Count - 1 Then Me.CmbTipoIngreso.SelectedIndex = I + 1 End If Next For I = 0 To Me.CmbSucursalOrigen.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(CmbSucursalOrigen.Text, 4))) = VarSucursal Then

403

Me.CmbSucursalOrigen.SelectedIndex = I : Exit For End If If I <> Me.CmbSucursalOrigen.Items.Count - 1 Then Me.CmbSucursalOrigen.SelectedIndex = I + 1 End If Next For I = 0 To Me.CmbSucursalDestino.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(CmbSucursalDestino.Text, 4))) = VarSucursal1 Then Me.CmbSucursalDestino.SelectedIndex = I : Exit For End If If I <> Me.CmbSucursalDestino.Items.Count - 1 Then Me.CmbSucursalDestino.SelectedIndex = I + 1 End If Next If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If TxtSubtotalPrecio.Text = Format(CDbl(VarSubtotalPrecio), "$###,##0.0000") TxtIvaPrecio.Text = Format(CDbl(VarImpuestoPrecio), "$###,##0.0000") TxtTotalPrecio.Text = Format(CDbl(VarTotalPrecio), "$###,##0.0000") TxtSubtotalCosto.Text = Format(CDbl(VarSubtotalCosto), "$###,##0.0000") TxtIvaCosto.Text = Format(CDbl(VarImpuestoCosto), "$###,##0.0000") TxtTotalCosto.Text = Format(CDbl(VarTotalCosto), "$###,##0.0000") LblNumeroCab.Text = VarNumero If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_BUSCA_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", VarNumero) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try

404

I = 1 While dr.Read DetVarCodigoproducto = dr("CODIGOPRODUCTO") : DetVarFecha = dr("FECHA") : DetVarCantidad = dr("CANTIDAD") DetVarTotalPrecio = dr("TOTALP") : DetVarTotalCosto = dr("TOTALC") DetVarPrecio = dr("PRECIO") : DetVarCosto = dr("COSTO") : DetVarIva = dr("IVA") : DetVarHora = dr("HORA") With SprIngresoEgreso .Col = 2 : .Text = DetVarCantidad .Col = 3 : .Text = DetVarCodigoproducto .Col = 5 : .Text = dr("NOMBRE") .Col = 7 : .Text = DetVarPrecio .Col = 8 : .Text = DetVarCosto .Col = 9 : .Text = DetVarTotalPrecio .Col = 10 : .Text = DetVarTotalCosto .Col = 11 : .Text = DetVarIva .MaxRows = .MaxRows + 1 End With I = I + 1 End While Else MsgBox("Ingreso no existe..!", MsgBoxStyle.Information, "Mensaje") : Me.TxtNumero.Focus() End If Else MsgBox("Ingrese Documento a Buscar..!", MsgBoxStyle.Information, "Mensaje") : Me.TxtNumero.Focus() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub EliminarDatos() If Trim(TxtNumero.Text <> "") Then If MessageBox.Show("Va a Eliminar un Registro de la Base. Desea Continuar?...", "ALERTA", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then Call EliminaIngreso() End If End If End Sub Private Sub EliminaIngreso()

405

Dim CodigoCabecera As Integer If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_BUSCA_CAB", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", "IN") cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(TxtNumero.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CodigoCabecera = dr("NUMERO") End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_ELI_CABECERA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "IN") cmd.Parameters.Add("@SUCURSAL", CODSUCU) cmd.Parameters.Add("@CAJA", CODCAJA) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@OPCION", 1) Try cmd.ExecuteNonQuery() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_ELI_CABECERA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "IN") cmd.Parameters.Add("@SUCURSAL", CODSUCU) cmd.Parameters.Add("@CAJA", CODCAJA) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@OPCION", 2) Try

406

cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_ELI_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_EXISTENCIAS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "CO") cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) Try cmd.ExecuteNonQuery() MsgBox("INGRESO ELIMINADO EXITOSAMENTE") Catch ex As Exception MsgBox(ex.Message) End Try Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub ModificarDatos() End Sub Private Sub DisplayCurrentRecord() Dim i As Integer Dim s As String

407

Dim CodigoCabecera As Integer Dim VarTempSuc As Integer If rs.BOF Then : rs.MoveFirst() : End If If rs.EOF Then : rs.MoveLast() : End If SprIngresoEgreso.MaxRows = 0 : SprIngresoEgreso.MaxRows = 1 Me.TxtNumero.Text = rs.Fields("NUMEROCAJA").Value.ToString Me.DtpFechaRegistro.Value = rs.Fields("FECHA").Value Me.TxtSubtotalPrecio.Text = Format(CDbl(rs.Fields("subtotalPrecio").Value.ToString), "$###,##0.0000") Me.TxtIvaPrecio.Text = Format(CDbl(rs.Fields("IVAPrecio").Value.ToString), "$###,##0.0000") Me.TxtTotalPrecio.Text = Format(CDbl(rs.Fields("totalPrecio").Value.ToString), "$###,##0.0000") Me.TxtSubtotalCosto.Text = Format(CDbl(rs.Fields("subtotalCosto").Value.ToString), "$###,##0.0000") Me.TxtIvaCosto.Text = Format(CDbl(rs.Fields("IVACosto").Value.ToString), "$###,##0.0000") Me.TxtTotalCosto.Text = Format(CDbl(rs.Fields("totalCosto").Value.ToString), "$###,##0.0000") Me.LblNumeroCab.Text = rs.Fields("numero").Value.ToString CodigoCabecera = rs.Fields("numero").Value Me.TxtProveedor.Text = rs.Fields("proveedor").Value.ToString Call BuscaNombreProveedor() If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", rs.Fields("USUARIO").Value) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtUsuario.Text = dr("USUUSER") End If CmbTipoIngreso.SelectedIndex = 0 For i = 0 To Me.CmbTipoIngreso.Items.Count - 1 If Trim(CmbTipoIngreso.Text) = rs.Fields("tipoingreso").Value Then

408

Me.CmbTipoIngreso.SelectedIndex = i : Exit For End If If i <> Me.CmbTipoIngreso.Items.Count - 1 Then Me.CmbTipoIngreso.SelectedIndex = i + 1 End If Next CmbSucursalDestino.SelectedIndex = 0 For i = 0 To Me.CmbSucursalDestino.Items.Count - 1 VarTempSuc = Val(Trim(Microsoft.VisualBasic.Right(CmbSucursalDestino.Text, 4))) If VarTempSuc = rs.Fields("sucursal1").Value Then Me.CmbSucursalDestino.SelectedIndex = i : Exit For End If If i <> Me.CmbSucursalDestino.Items.Count - 1 Then Me.CmbSucursalDestino.SelectedIndex = i + 1 End If Next CmbSucursalOrigen.SelectedIndex = 0 For i = 0 To Me.CmbSucursalOrigen.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(CmbSucursalOrigen.Text, 4))) = rs.Fields("sucursal").Value Then Me.CmbSucursalOrigen.SelectedIndex = i : Exit For End If If i <> Me.CmbSucursalOrigen.Items.Count - 1 Then Me.CmbSucursalOrigen.SelectedIndex = i + 1 End If Next If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_BUSCA_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try i = 1 While dr.Read DetVarCodigoproducto = dr("CODIGOPRODUCTO") : DetVarFecha = dr("FECHA") : DetVarCantidad = dr("CANTIDAD")

409

DetVarTotalPrecio = dr("TOTALP") : DetVarTotalCosto = dr("TOTALC") DetVarPrecio = dr("PRECIO") : DetVarCosto = dr("COSTO") : DetVarIva = dr("IVA") : DetVarHora = dr("HORA") With SprIngresoEgreso .Row = i .Col = 2 : .Text = DetVarCantidad .Col = 3 : .Text = DetVarCodigoproducto .Col = 5 : .Text = dr("NOMBRE") .Col = 7 : .Text = DetVarPrecio .Col = 8 : .Text = DetVarCosto .Col = 9 : .Text = DetVarTotalPrecio .Col = 10 : .Text = DetVarTotalCosto .Col = 11 : .Text = DetVarIva .MaxRows = .MaxRows + 1 End With i = i + 1 End While If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub BuscaNombreProveedor() If Me.TxtProveedor.Text <> "" Then If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", Me.TxtProveedor.Text) cmd.Parameters.Add("@OPCION", 15) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtNombreProveedor.Text = dr("PRORSOCIAL") : COD_PRO = dr("CEDULA") : TxtReferencia.Focus() Else MsgBox("Proveedor no existe..!", MsgBoxStyle.Information, "Mensaje") : Me.TxtProveedor.Focus()

410

End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Else MsgBox("Ingrese código del Proveedor..!", MsgBoxStyle.Information, "Mensaje") End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim frm_busq As New Frm_Buscar S_Codigo = "" TablaBuscada = "VIS_CONS_PROVEEDORES" Campo1 = "CEDULA" Campo2 = "PRORSOCIAL" Campo3 = "Busqueda Por Proveedor" frm_busq.ShowDialog() If S_Codigo <> "" Then TxtProveedor.Text = S_Codigo Call BuscaNombreProveedor() End If End Sub Private Sub TxtProveedor_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtProveedor.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call BuscaNombreProveedor() End If End Sub Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" : Call IngresarDatos() Case "Grabar" : Call GrabarDatos() Case "Modificar" : Call ModificarDatos() Case "Eliminar" : Call EliminarDatos() Case "Buscar" : Call BuscarDatos() Case "Deshacer" : Call DeshacerDatos() Case "Imprimir"

411

If Trim(Me.TxtNumero.Text) <> "" Then Call ImprimirDatos() Else MsgBox("No Existen datos a imprimir...", vbInformation, "A T E N C I O N") Me.TxtNumero.Focus() End If Case "Salir" : Call SalirDatos() End Select End Sub Private Sub TlbCursores_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbCursores.ButtonClick Select Case e.Button.Tag Case "Primero" If Not (rs.BOF) Then rs.MoveFirst() Call DisplayCurrentRecord() End If Case "Anterior" If Not (rs.BOF) Then rs.MovePrevious() Call DisplayCurrentRecord() End If Case "Siguiente" If Not (rs.EOF) Then rs.MoveNext() Call DisplayCurrentRecord() End If Case "Ultimo" If Not (rs.EOF) Then rs.MoveLast() Call DisplayCurrentRecord() End If End Select End Sub Private Sub BuscarDatos() End Sub Private Sub ImprimirDatos() Dim frm_busq As New FrmParamImpIngreso

412

frm_busq.CrpImprimirIngreso.ReportSource = Nothing Dim paramtipo As New ParameterDiscreteValue Dim paramsucursal As New ParameterDiscreteValue Dim paramcaja As New ParameterDiscreteValue Dim paramnumerocaja As New ParameterDiscreteValue 'paramtipo.Value = CStr("IN") 'paramsucursal.Value = CInt(Trim(Microsoft.VisualBasic.Right(Me.CmbSucursalOrigen.Text, 4))) 'paramcaja.Value = CInt(CODCAJA) 'paramnumerocaja.Value = CInt(Me.TxtNumero.Text) paramtipo.Value = "IN" paramsucursal.Value = Trim(Microsoft.VisualBasic.Right(Me.CmbSucursalOrigen.Text, 4)) paramcaja.Value = CODCAJA paramnumerocaja.Value = Me.TxtNumero.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@CODIGO1" paramtemp.CurrentValues.Add(paramtipo) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@CODIGO2" paramtemp.CurrentValues.Add(paramsucursal) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@CODIGO3" paramtemp.CurrentValues.Add(paramcaja) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@CODIGO4" paramtemp.CurrentValues.Add(paramnumerocaja) paramlist.Add(paramtemp) frm_busq.CrpImprimirIngreso.ParameterFieldInfo = paramlist

413

'AGREGUE LA SIGUIENTE LINEA 'frm_busq.CrpImprimirBronceados.PrintReport() frm_busq.CrpImprimirIngreso.ReportSource = New Rpt_ImpIngreso frm_busq.ShowDialog() End Sub Private Sub DtpFechaRegistro_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DtpFechaRegistro.ValueChanged Me.DtpFechaRegistro.MaxDate = Today() End Sub End Class

* Clase Frm_pro_lecturaMarcadas.vb

Imports System.Data.OleDb Imports System.Data.Odbc Imports System.Data Imports System Public Class Frm_pro_lecturaMarcadas Inherits System.Windows.Forms.Form Dim cadini As String Dim cadfin As String Dim FECHA_INI As Date Dim FECHA_FIN As Date Private Sub BtnImportar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnImportar.Click Try Dim ANO As String Dim MES As String Dim DIA As String ANO = Year(Me.Dpt_FechaIni.Text) MES = Month(Me.Dpt_FechaIni.Text) If MES >= CInt(1) And MES <= CInt(9) Then : MES = "0" + MES : End If DIA = Microsoft.VisualBasic.DateAndTime.Day(Me.Dpt_FechaIni.Text)

414

If DIA >= CInt(1) And DIA <= CInt(9) Then : DIA = "0" + DIA : End If FECHA_INI = "#" + MES + "/" + DIA + "/" + ANO + "#" ANO = Year(Me.Dpt_FechaFin.Text) MES = Month(Me.Dpt_FechaFin.Text) If MES >= CInt(1) And MES <= CInt(9) Then : MES = "0" + MES : End If DIA = Microsoft.VisualBasic.DateAndTime.Day(Me.Dpt_FechaFin.Text) If DIA >= CInt(1) And DIA <= CInt(9) Then : DIA = "0" + DIA : End If FECHA_FIN = "#" + MES + "/" + DIA + "/" + ANO + "#" cadini = "{d'" + Format(FECHA_INI, "yyyy-MM-dd") + "'}" cadfin = "{d'" + Format(FECHA_FIN, "yyyy-MM-dd") + "'}" Dim contador As Integer Dim tConnectionString As String = "DSN=dat_asi;UID=;PWD=;SourceDB=c:\tmp;SourceType=DBF;" Dim tConnection As OdbcConnection = New OdbcConnection(tConnectionString) Dim tSQLString As String = "" BARRA.Maximum = 0 tSQLString = "select * from dat_asi where fechahora>=" + cadini + " and fechahora<=" + cadfin Dim tOdbcCommand As OdbcCommand = New OdbcCommand(tSQLString, tConnection) tConnection.Open() Dim tOdbcDataReader1 As OdbcDataReader = tOdbcCommand.ExecuteReader(CommandBehavior.SequentialAccess) contador = 0 While tOdbcDataReader1.Read contador = contador + 1 End While tConnection.Close() tConnection.Open() Dim tOdbcDataReader As OdbcDataReader = tOdbcCommand.ExecuteReader(CommandBehavior.SequentialAccess) BARRA.Maximum = contador BARRA.Value = 0

415

While tOdbcDataReader.Read BARRA.Value = BARRA.Value + 1 If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd.CommandText = "FAC_ING_ASISTENCIAS" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGOSECUEN", CStr(tOdbcDataReader.GetString(0))) cmd.Parameters.Add("@NOMBRE", CStr(tOdbcDataReader.GetString(1))) cmd.Parameters.Add("@FECHA", CStr(tOdbcDataReader.GetString(2))) cmd.Parameters.Add("@HORA", Mid(CStr(tOdbcDataReader.GetString(2)), 12, 8)) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try End While tConnection.Close() MsgBox("Proceso Terminado", MsgBoxStyle.Exclamation + MsgBoxStyle.OKOnly, "Sistema") BARRA.Maximum = 0 BARRA.Value = 0 If Not tOdbcDataReader.IsClosed Then : tOdbcDataReader.Close() : End If If Not tOdbcDataReader1.IsClosed Then : tOdbcDataReader1.Close() : End If Catch ex As OdbcException MessageBox.Show(ex.Errors(0).Message) Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" 'Call IngresarDatos() Case "Grabar"

416

'Call GrabarDatos() Case "Modificar" 'Call ModificarDatos() Case "Eliminar" 'Call EliminarDatos() Case "Buscar" 'Call BuscarDatos() Case "Deshacer" 'Call DeshacerDatos() Case "Imprimir" 'Call ImprimirDatos() Case "Salir" Call SalirDatos() End Select End Sub Private Sub SalirDatos() Me.Close() End Sub Private Sub Dpt_FechaIni_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dpt_FechaIni.ValueChanged Me.Dpt_FechaIni.MaxDate = Today() End Sub Private Sub Dpt_FechaFin_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dpt_FechaFin.ValueChanged Me.Dpt_FechaFin.MaxDate = Today() End Sub End Class

* Clase Frm_pro_salida.vb

Imports System.Data Imports System.Data.OleDb Imports System.Data.SqlClient Imports System.Drawing.Printing Imports CrystalDecisions.Shared Public Class Frm_pro_salida

417

Inherits System.Windows.Forms.Form Private rs As ADODB.Recordset Dim ContenidoDelTexto As PrintPageEventArgs Dim Reporte As New PrintDocument Dim COD_PROD As Integer Dim iva, TotalG As Double Public MODIFICA As Boolean Dim CODCAJA, COD_PRO, DIASMEMBRESIA, FILA, I As Integer 'VARIABLES PARA BUSQUEDA DE SALIDA CABECERA Dim VarFecha As Date Dim VarHora As DateTime Dim VarNumero, VarNumeroCajero, VarPorcentajeIva, VarNumeroAplic As Integer Dim VarSubtotalPrecio, VarImpuestoPrecio, VarTotalPrecio As Double Dim VarSubtotalCosto, VarImpuestoCosto, VarTotalCosto As Double Dim VarTipoAplic, VarImpreso, VarNombreCajero, VarComentario As String Dim VarTipo, VarSucursal, VarSucursal1, VarCaja, VarProveedor, VarUsuario As String 'VARIABLES PARA BUSQUEDA DE SALIDA DETALLES Dim DetVarFecha As Date Dim DetVarHora As DateTime Dim DetVarNumerocab, DetVarNumerocaja, DetVarCantidad As Integer Dim DetVarTipo, DetVarSucursal, DetVarCaja, DetVarCodigoproducto, DetVarBodega As String Dim DetVarTotalPrecio, DetVarTotalCosto, DetVarPrecio, DetVarCosto, DetVarIva As Decimal Private Sub Frm_pro_salida_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call LlenaParametros() : Call LlenaCombos() : Call Deshabilita() If Not (rs.BOF) Or Not (rs.EOF) Then : rs.MoveLast() : Call DisplayCurrentRecord() : End If TxtNumero.Focus() End Sub Private Sub IngresarDatos() Call Limpia() : Call ObtieneSecuencia() : Call Habilita() : Me.TxtProveedor.Focus() End Sub

418

Private Sub GrabarDatos() Dim CodigoCabecera, Cantidad As Integer Dim Precio, Costo, TotalPagos As Double Dim MEMBRESIA As Boolean Dim FormaPago As String TotalPagos = 0 If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If If Me.SprIngresoEgreso.MaxRows >= 1 Then If MODIFICA = True Then MsgBox("LA SALIDA NO PUEDE SER MODIFICADA") Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "INV_ING_CABECERA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "SA") cmd.Parameters.Add("@SUCURSAL", Trim(Microsoft.VisualBasic.Right(Me.CmbSucursalOrigen.Text, 4))) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@SUCURSAL1", Trim(Microsoft.VisualBasic.Right(Me.CmbSucursalDestino.Text, 4))) cmd.Parameters.Add("@TIPOINGRESO", Trim(Me.CmbTipoIngreso.Text)) cmd.Parameters.Add("@PROVEEDOR", Trim(Me.TxtProveedor.Text)) cmd.Parameters.Add("@TIPOAPLIC", "SA") cmd.Parameters.Add("@NUMEROAPLIC", Trim(Me.TxtReferencia.Text)) cmd.Parameters.Add("@SUBTOTALPRECIO", CDbl(TxtSubtotalPrecio.Text)) cmd.Parameters.Add("@IVAPRECIO", CDbl(TxtIvaPrecio.Text)) cmd.Parameters.Add("@TOTALPRECIO", CDbl(TxtTotalPrecio.Text)) cmd.Parameters.Add("@SUBTOTALCOSTO", CDbl(TxtSubtotalCosto.Text)) cmd.Parameters.Add("@IVACOSTO", CDbl(TxtIvaCosto.Text))

419

cmd.Parameters.Add("@TOTALCOSTO", CDbl(TxtTotalCosto.Text)) cmd.Parameters.Add("@FECHA", Me.DtpFechaRegistro.Value) cmd.Parameters.Add("@HORA", Today.Hour) cmd.Parameters.Add("@OBSERVACIONES", Trim(Me.TxtObservaciones.Text)) cmd.Parameters.Add("@USUARIO", Cod_Usu) cmd.Parameters.Add("@IMPRESO", False) cmd.Parameters.Add("@ELIMINADO", False) Try cmd.ExecuteNonQuery() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_BUSCA_CAB", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", "SA") cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(TxtNumero.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CodigoCabecera = dr("NUMERO") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Catch ex As Exception MsgBox(ex.Message) End Try '********************INGRESA DETALLE With SprIngresoEgreso For FILA = 1 To .MaxRows - 1 cmd.CommandText = "INV_ING_DETALLE" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@TIPO", "SA")

420

cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) .Col = 3 : .Row = FILA cmd.Parameters.Add("@CODIGOPRODUCTO", CStr(.Text)) .Col = 2 : Cantidad = CInt(.Text) cmd.Parameters.Add("@CANTIDAD", Cantidad) .Col = 7 : Precio = CDbl(.Text) .Col = 8 : Costo = CDbl(.Text) cmd.Parameters.Add("@PRECIO", CDbl(Precio)) cmd.Parameters.Add("@COSTO", CDbl(Costo)) cmd.Parameters.Add("@TOTALP", Cantidad * CDbl(Precio)) cmd.Parameters.Add("@TOTALC", Cantidad * CDbl(Costo)) .Col = 11 : cmd.Parameters.Add("@IVA", CDbl(.Text)) cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) cmd.Parameters.Add("@HORA", Today) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try '*********** INGRESA ARCHIVO DE EXISTENCIAS cmd.CommandText = "FAC_ING_EXISTENCIAS" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "SA") cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) .Col = 3 : .Row = FILA cmd.Parameters.Add("@CODIGOPRODUCTO", CStr(.Text)) cmd.Parameters.Add("@FECHA", DtpFechaRegistro.Value) .Col = 2 : Cantidad = CInt(.Text) cmd.Parameters.Add("@CANTIDAD", Cantidad) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try '*** TERMINA ARCHIVO DE EXISTENCIAS

421

Next End With Call GrabaSecuencia() : Call Deshabilita() Try cmd.ExecuteNonQuery() MsgBox("SALIDA GENERADA EXITOSAMENTE") Catch ex As Exception MsgBox(ex.Message) End Try End If Else MsgBox("Faltan datos de llenar", MsgBoxStyle.Information, "Mensaje") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub SalirDatos() If Me.TlbBotones.Buttons(0).Enabled = False Then If MessageBox.Show("Esta en modo de Ingreso. Desea Cancelar la Operación?...", "ALERTA", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then Call Limpia() : Call Deshabilita() : Me.TxtNumero.Focus() : Me.Close() Else If SprIngresoEgreso.Enabled = True Then SprIngresoEgreso.Focus() : SprIngresoEgreso.SetActiveCell(3, SprIngresoEgreso.MaxRows) Else TxtNumero.Focus() End If End If Else Me.Close() End If End Sub Private Sub DeshacerDatos() Call Limpia() : Call Deshabilita() : Me.TxtNumero.Focus() End Sub

422

Private Sub TxtReferencia_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtReferencia.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) And Trim(TxtReferencia.Text) <> "" Then SprIngresoEgreso.Enabled = True SprIngresoEgreso.Focus() : SprIngresoEgreso.SetActiveCell(3, SprIngresoEgreso.ActiveRow) Else If e.KeyChar.IsDigit(e.KeyChar) Then e.Handled = False ElseIf e.KeyChar.IsControl(e.KeyChar) Then e.Handled = False Else e.Handled = True End If End If End Sub Private Sub SprIngresoEgreso_KeyPressEvent(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyPressEvent) Handles SprIngresoEgreso.KeyPressEvent Dim CostoU, PrecioU, TotalCU, TotalPU As Double Dim Cantidad As Integer If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If With SprIngresoEgreso If .ActiveCol = 2 Then If e.keyAscii = 13 Then .Row = .ActiveRow : .Col = 3 If Trim(.Text) <> "" Then .Col = 2 : Cantidad = CDbl(.Text) .Col = 7 : PrecioU = CDbl(.Text) .Col = 8 : CostoU = CDbl(.Text) TotalCU = (CostoU * Cantidad) TotalPU = (PrecioU * Cantidad) .SetText(9, .ActiveRow, Format(CDbl(TotalPU), "###,##0.0000")) .SetText(10, .ActiveRow, Format(CDbl(TotalCU), "###,##0.0000")) .SetText(11, .ActiveRow, CDbl(dr("PROIVA"))) Call CalculaTotales() End If

423

End If End If If .ActiveCol = 3 Then If e.keyAscii = 13 Then Dim PROXIVA As Double TablaBuscada = "PRODUCTO_SERV" .Row = .ActiveRow : .Col = 3 : S_Codigo = .Text If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_CONS_ESPEC", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", CDbl(S_Codigo)) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then .SetText(5, .ActiveRow, dr("NOMBRE")) .SetText(7, .ActiveRow, Format(CDbl(dr("PROPRECIO")), "###,##0.0000")) .SetText(8, .ActiveRow, Format(CDbl(dr("COSTO")), "###,##0.0000")) .Row = .ActiveRow .Col = 2 : Cantidad = CDbl(.Text) .Col = 7 : PrecioU = CDbl(.Text) .Col = 8 : CostoU = CDbl(.Text) TotalCU = (CostoU * Cantidad) TotalPU = (PrecioU * Cantidad) .SetText(9, .ActiveRow, Format(CDbl(TotalPU), "###,##0.0000")) .SetText(10, .ActiveRow, Format(CDbl(TotalCU), "###,##0.0000")) .SetText(11, .ActiveRow, CDbl(dr("PROIVA"))) .Col = 3 : .Row = .MaxRows If Trim(.Text) Then .MaxRows = .MaxRows + 1 Else .SetActiveCell(3, .ActiveRow) End If Call CalculaTotales()

424

.Row = .MaxRows : .Col = 2 : .Text = "1" .SetActiveCell(3, .MaxRows) : .Focus() Else .SetActiveCell(3, .ActiveRow) : .Focus() .Col = 3 : .Row = .ActiveRow : .Text = "" MsgBox("Producto o Servicio no existe..!", MsgBoxStyle.Information, "Mensaje") End If End If End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End With End Sub Private Sub SprIngresoEgreso_ButtonClicked(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_ButtonClickedEvent) Handles SprIngresoEgreso.ButtonClicked Dim CostoU, PrecioU, TotalCU, TotalPU As Double Dim Cantidad As Integer If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If With SprIngresoEgreso If .ActiveCol = 4 Then Dim frm_busq As New Frm_Buscar S_Codigo = "" : TablaBuscada = "VIS_CONS_PRODCOMPO" Campo1 = "CODPRODSERV" Campo2 = "NOMBRE" Campo3 = "Busqueda Por Producto" frm_busq.ShowDialog() If S_Codigo <> "" Then .SetText(3, .ActiveRow, S_Codigo) With SprIngresoEgreso If S_Codigo <> "" Then If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_CONS_ESPEC", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear()

425

cmd.Parameters.Add("@CODIGO", CDbl(S_Codigo)) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then .Row = .ActiveRow .SetText(5, .ActiveRow, dr("NOMBRE")) .SetText(7, .ActiveRow, Format(CDbl(dr("PROPRECIO")), "###,##0.0000")) .SetText(8, .ActiveRow, Format(CDbl(dr("COSTO")), "###,##0.0000")) .Col = 2 : Cantidad = CDbl(.Text) .Col = 7 : PrecioU = CDbl(.Text) .Col = 8 : CostoU = CDbl(.Text) TotalCU = (CostoU * Cantidad) TotalPU = (PrecioU * Cantidad) .SetText(9, .ActiveRow, Format(CDbl(TotalPU), "###,##0.0000")) .SetText(10, .ActiveRow, Format(CDbl(TotalCU), "###,##0.0000")) .SetText(11, .ActiveRow, CDbl(dr("PROIVA"))) .MaxRows = .MaxRows + 1 Call CalculaTotales() .Row = .MaxRows : .Col = 2 : .Text = "1" .SetActiveCell(3, .MaxRows) : .Focus() Else .SetActiveCell(2, .ActiveRow) : .Focus() .Col = 3 : .Row = .ActiveRow : .Text = "" MsgBox("Producto o Servicio no existe..!", MsgBoxStyle.Information, "Mensaje") End If Else MsgBox("Ingrese código de Producto o Servicio..!", MsgBoxStyle.Information, "Mensaje") End If End With End If End If End With If Not dr.IsClosed Then : dr.Close() : End If

426

If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub SprIngresoEgreso_KeyDownEvent(ByVal sender As Object, ByVal e As AxFPSpread._DSpreadEvents_KeyDownEvent) Handles SprIngresoEgreso.KeyDownEvent With SprIngresoEgreso If e.keyCode = Keys.Delete Then If .MaxRows > 1 Then If MessageBox.Show("Esta seguro de Eliminar la Linea?...", "Alerta", MessageBoxButtons.YesNo) = DialogResult.Yes Then .Row = .ActiveRow : .Col = 3 .Action = FPSpread.ActionConstants.ActionDeleteRow.ActionDeleteRow : .MaxRows = .MaxRows - 1 .SetActiveCell(3, .MaxRows) : .Focus() : Call CalculaTotales() End If End If End If End With End Sub Private Sub TxtNumero_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtNumero.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call CargarIngreso() End If End Sub Private Sub CalculaTotales() Dim ValIvaTC, ValIvaTP, ValIvaCosto, ValIvaPrecio, SubtotalCosto, SubtotalPrecio, TotalP, TotalC, TotalGP, TotalGC, CostoU, PrecioU, TotalCU, TotalPU As Double Dim Cantidad As Integer TotalG = 0 With SprIngresoEgreso For I = 1 To .MaxRows - 1 .Col = 12 : .Row = I If .Value = 0 Then .Row = I .Col = 2 : Cantidad = CDbl(.Text) .Col = 7 : PrecioU = CDbl(.Text) TotalPU = PrecioU * Cantidad

427

SubtotalPrecio = Math.Round(SubtotalPrecio, 4) + Math.Round(TotalPU, 4) .Col = 8 : CostoU = CDbl(.Text) TotalCU = CostoU * Cantidad SubtotalCosto = Math.Round(SubtotalCosto, 4) + Math.Round(TotalCU, 4) .Col = 11 If Val(.Text) = 1 Then ValIvaCosto = Math.Round(TotalCU, 4) * iva ValIvaPrecio = Math.Round(TotalPU, 4) * iva Else ValIvaCosto = 0 ValIvaPrecio = 0 End If TotalP = Math.Round(SubtotalPrecio, 4) ValIvaTP = Math.Round(ValIvaTP, 4) + Math.Round(ValIvaPrecio, 4) TotalGP = Math.Round(TotalP, 4) + Math.Round(ValIvaTP, 4) TotalC = Math.Round(SubtotalCosto, 4) ValIvaTC = Math.Round(ValIvaTC, 4) + Math.Round(ValIvaCosto, 4) TotalGC = Math.Round(TotalC, 4) + Math.Round(ValIvaTC, 4) End If Next End With TxtSubtotalPrecio.Text = Format(TotalP, "$###,##0.0000") TxtIvaPrecio.Text = Format(ValIvaTP, "$###,##0.0000") TxtTotalPrecio.Text = Format(TotalGP, "$###,##0.0000") TxtSubtotalCosto.Text = Format(TotalC, "$###,##0.0000") TxtIvaCosto.Text = Format(ValIvaTC, "$###,##0.0000") TxtTotalCosto.Text = Format(TotalGC, "$###,##0.0000") End Sub Private Sub LlenaParametros() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 11) Try dr = cmd.ExecuteReader()

428

Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CODCAJA = dr("CODCAJA") End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If 'CARGO VALOR DE IVA cmd = New SqlClient.SqlCommand("SEG_CONS_PARAMETRO", cn) cmd.CommandType = CommandType.StoredProcedure Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then iva = dr("PORCENTAJEIVA") End If Me.TxtUsuario.Text = CStr(usu) If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub LlenaCombos() 'Llena los Bancos Me.CmbSucursalDestino.Text = "" : Me.CmbSucursalOrigen.Text = "" If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_GEN", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try While dr.Read Me.CmbSucursalDestino.Items.Add(dr("DESCRIPCION") & Space(50) & dr("CODSUCUR"))

429

Me.CmbSucursalOrigen.Items.Add(dr("DESCRIPCION") & Space(50) & dr("CODSUCUR")) End While Me.CmbSucursalDestino.SelectedIndex = (0) : Me.CmbSucursalOrigen.SelectedIndex = (0) For I = 0 To Me.CmbSucursalOrigen.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(Me.CmbSucursalOrigen.Text, 4))) = CODSUCU Then Me.CmbSucursalOrigen.SelectedIndex = I : Exit For End If If I <> Me.CmbSucursalOrigen.Items.Count - 1 Then Me.CmbSucursalOrigen.SelectedIndex = I + 1 End If Next If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub Habilita() Me.TlbBotones.Buttons(0).Enabled = False : Me.TlbBotones.Buttons(2).Enabled = True Me.TlbBotones.Buttons(6).Enabled = False : Me.TlbBotones.Buttons(12).Enabled = False Me.TlbBotones.Buttons(10).Enabled = True : Me.TlbBotones.Buttons(4).Enabled = False Me.TlbBotones.Buttons(8).Enabled = False : Me.TlbBotones.Buttons(14).Enabled = True Me.TxtNumero.Enabled = False : Me.CmbSucursalDestino.Enabled = True Me.TxtReferencia.Enabled = True : Me.TxtProveedor.Enabled = True End Sub Private Sub Deshabilita() Me.TlbBotones.Buttons(0).Enabled = True : Me.TlbBotones.Buttons(2).Enabled = False Me.TlbBotones.Buttons(6).Enabled = True : Me.TlbBotones.Buttons(12).Enabled = True Me.TlbBotones.Buttons(10).Enabled = False : Me.TlbBotones.Buttons(4).Enabled = True Me.TlbBotones.Buttons(8).Enabled = True : Me.TlbBotones.Buttons(14).Enabled = True Me.SprIngresoEgreso.Enabled = False : Me.DtpFechaRegistro.Enabled = False

430

Me.TxtNumero.Enabled = True : Me.CmbSucursalDestino.Enabled = False Me.TxtReferencia.Enabled = False : Me.TxtProveedor.Enabled = False End Sub Private Sub Limpia() Me.DtpFechaRegistro.Value = Today() : Me.TxtNumero.Text = "" Me.SprIngresoEgreso.MaxRows = 0 : Me.SprIngresoEgreso.MaxRows = 1 Me.SprIngresoEgreso.Row = Me.SprIngresoEgreso.MaxRows Me.SprIngresoEgreso.Col = 2 : Me.SprIngresoEgreso.Text = 1 Me.TxtSubtotalCosto.Text = "" : Me.TxtIvaCosto.Text = "" : Me.TxtTotalCosto.Text = "" Me.TxtSubtotalPrecio.Text = "" : Me.TxtIvaPrecio.Text = "" : Me.TxtTotalPrecio.Text = "" Me.TxtProveedor.Text = "" : Me.TxtNombreProveedor.Text = "" : Me.TxtReferencia.Text = "" End Sub Private Sub ObtieneSecuencia() Dim CodigoSuc As Integer CodigoSuc = Val(Trim(Microsoft.VisualBasic.Right(SUCURSAL, 3))) If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_SECUENCIA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("SA")) cmd.Parameters.Add("@CODIGO2", CInt(CodigoSuc)) cmd.Parameters.Add("@CODIGO3", CInt(CODCAJA)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtNumero.Text = dr("NUMERO") + 1 Else TxtNumero.Text = "1" End If dr.Close() End Sub

431

Private Sub GrabaSecuencia() Dim CodigoSuc As Integer CodigoSuc = Val(Trim(Microsoft.VisualBasic.Right(SUCURSAL, 3))) If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_SECUENCIA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("SA")) cmd.Parameters.Add("@CODIGO2", CInt(CodigoSuc)) cmd.Parameters.Add("@CODIGO3", CInt(CODCAJA)) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_MOD_SECUENCIA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", CStr("SA")) cmd.Parameters.Add("@SUCURSAL", CInt(CodigoSuc)) cmd.Parameters.Add("@CAJA", CInt(CODCAJA)) cmd.Parameters.Add("@NUMERO", CInt(Val(TxtNumero.Text))) Try cmd.ExecuteNonQuery() dr.Close() Catch ex As Exception MsgBox(ex.Message) End Try Else If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd.CommandText = "FAC_ING_SECUENCIA" cmd.CommandType = CommandType.StoredProcedure cmd.Connection = cn cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", CStr("SA"))

432

cmd.Parameters.Add("@SUCURSAL", CInt(CodigoSuc)) cmd.Parameters.Add("@CAJA", CInt(CODCAJA)) cmd.Parameters.Add("@NUMERO", 1) Try cmd.ExecuteNonQuery() dr.Close() Catch ex As Exception MsgBox(ex.Message) End Try End If End Sub Public Sub CargarIngreso() If Trim(TxtNumero.Text) <> "" Then SprIngresoEgreso.MaxRows = 0 : SprIngresoEgreso.MaxRows = 1 If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_BUSCA_CABECERA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", CStr("SA")) cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(Trim(TxtNumero.Text))) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then VarNumero = dr("NUMERO") : VarTipo = dr("TIPO") : VarSucursal = dr("SUCURSAL") : VarSucursal1 = dr("SUCURSAL1") : VarCaja = dr("CAJA") VarUsuario = dr("USUARIO") : VarComentario = dr("OBSERVACIONES") VarSubtotalPrecio = dr("SUBTOTALPRECIO") : VarImpuestoPrecio = dr("IVAPRECIO") : VarTotalPrecio = dr("TOTALPRECIO") : VarTipoAplic = dr("TIPOAPLIC") VarSubtotalCosto = dr("SUBTOTALCOSTO") : VarImpuestoCosto = dr("IVACOSTO") : VarTotalCosto = dr("TOTALCOSTO") VarNumeroAplic = dr("NUMEROAPLIC") : VarImpreso = dr("IMPRESO") : VarFecha = dr("FECHA") : VarHora = dr("HORA") DtpFechaRegistro.Value = CDate(VarFecha)

433

Me.TxtProveedor.Text = dr("proveedor") Call BuscaNombreProveedor() If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", VarUsuario) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtUsuario.Text = dr("USUUSER") End If For I = 0 To Me.CmbSucursalOrigen.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(CmbSucursalOrigen.Text, 4))) = VarSucursal Then Me.CmbSucursalOrigen.SelectedIndex = I : Exit For End If If I <> Me.CmbSucursalOrigen.Items.Count - 1 Then Me.CmbSucursalOrigen.SelectedIndex = I + 1 End If Next For I = 0 To Me.CmbSucursalDestino.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(CmbSucursalDestino.Text, 4))) = VarSucursal1 Then Me.CmbSucursalDestino.SelectedIndex = I : Exit For End If If I <> Me.CmbSucursalDestino.Items.Count - 1 Then Me.CmbSucursalDestino.SelectedIndex = I + 1 End If Next If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If TxtSubtotalPrecio.Text = Format(CDbl(VarSubtotalPrecio), "$###,##0.0000")

434

TxtIvaPrecio.Text = Format(CDbl(VarImpuestoPrecio), "$###,##0.0000") TxtTotalPrecio.Text = Format(CDbl(VarTotalPrecio), "$###,##0.0000") TxtSubtotalCosto.Text = Format(CDbl(VarSubtotalCosto), "$###,##0.0000") TxtIvaCosto.Text = Format(CDbl(VarImpuestoCosto), "$###,##0.0000") TxtTotalCosto.Text = Format(CDbl(VarTotalCosto), "$###,##0.0000") If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_BUSCA_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", VarNumero) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try I = 1 While dr.Read DetVarCodigoproducto = dr("CODIGOPRODUCTO") : DetVarFecha = dr("FECHA") : DetVarCantidad = dr("CANTIDAD") DetVarTotalPrecio = dr("TOTALP") : DetVarTotalCosto = dr("TOTALC") DetVarPrecio = dr("PRECIO") : DetVarCosto = dr("COSTO") : DetVarIva = dr("IVA") : DetVarHora = dr("HORA") With SprIngresoEgreso .Col = 2 : .Text = DetVarCantidad .Col = 3 : .Text = DetVarCodigoproducto .Col = 5 : .Text = dr("NOMBRE") .Col = 7 : .Text = DetVarPrecio .Col = 8 : .Text = DetVarCosto .Col = 9 : .Text = DetVarTotalPrecio .Col = 10 : .Text = DetVarTotalCosto .Col = 11 : .Text = DetVarIva .MaxRows = .MaxRows + 1 End With I = I + 1 End While Else

435

MsgBox("Salida no existe..!", MsgBoxStyle.Information, "Mensaje") : Me.TxtNumero.Focus() End If Else MsgBox("Ingrese Documento a Buscar..!", MsgBoxStyle.Information, "Mensaje") : Me.TxtNumero.Focus() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub EliminarDatos() If Trim(TxtNumero.Text <> "") Then If MessageBox.Show("Va a Eliminar un Registro de la Base. Desea Continuar?...", "ALERTA", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) = DialogResult.Yes Then Call EliminaIngreso() End If End If End Sub Private Sub EliminaIngreso() Dim CodigoCabecera As Integer If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_BUSCA_CAB", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO1", "SA") cmd.Parameters.Add("@CODIGO2", CODSUCU) cmd.Parameters.Add("@CODIGO3", CODCAJA) cmd.Parameters.Add("@CODIGO4", CInt(TxtNumero.Text)) Try dr = cmd.ExecuteReader Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then CodigoCabecera = dr("NUMERO") End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If

436

cmd = New SqlClient.SqlCommand("INV_ELI_CABECERA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "SA") cmd.Parameters.Add("@SUCURSAL", CODSUCU) cmd.Parameters.Add("@CAJA", CODCAJA) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@OPCION", 1) Try cmd.ExecuteNonQuery() If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_ELI_CABECERA", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "SA") cmd.Parameters.Add("@SUCURSAL", CODSUCU) cmd.Parameters.Add("@CAJA", CODCAJA) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) cmd.Parameters.Add("@OPCION", 2) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_ELI_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) Try cmd.ExecuteNonQuery() Catch ex As Exception MsgBox(ex.Message) End Try If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("FAC_ELI_EXISTENCIAS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@TIPO", "SA")

437

cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) cmd.Parameters.Add("@SUCURSAL", Trim(CODSUCU)) cmd.Parameters.Add("@CAJA", Str(CODCAJA)) cmd.Parameters.Add("@NUMEROCAJA", CInt(TxtNumero.Text)) Try cmd.ExecuteNonQuery() MsgBox("SALIDA ELIMINADA EXITOSAMENTE") Catch ex As Exception MsgBox(ex.Message) End Try Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub ModificarDatos() End Sub Private Sub DisplayCurrentRecord() Dim i As Integer Dim s As String Dim CodigoCabecera As Integer If rs.BOF Then : rs.MoveFirst() : End If If rs.EOF Then : rs.MoveLast() : End If SprIngresoEgreso.MaxRows = 0 : SprIngresoEgreso.MaxRows = 1 Me.TxtNumero.Text = rs.Fields("NUMEROCAJA").Value.ToString Me.DtpFechaRegistro.Value = rs.Fields("FECHA").Value Me.TxtSubtotalPrecio.Text = Format(CDbl(rs.Fields("SUBTOTALPRECIO").Value.ToString), "$###,##0.0000") Me.TxtIvaPrecio.Text = Format(CDbl(rs.Fields("IVAPRECIO").Value.ToString), "$###,##0.0000") Me.TxtTotalPrecio.Text = Format(CDbl(rs.Fields("TOTALPRECIO").Value.ToString), "$###,##0.0000") Me.TxtSubtotalCosto.Text = Format(CDbl(rs.Fields("SUBTOTALCOSTO").Value.ToString), "$###,##0.0000") Me.TxtIvaCosto.Text = Format(CDbl(rs.Fields("IVACOSTO").Value.ToString), "$###,##0.0000") Me.TxtTotalCosto.Text = Format(CDbl(rs.Fields("TOTALCOSTO").Value.ToString), "$###,##0.0000") CodigoCabecera = rs.Fields("NUMERO").Value Me.TxtProveedor.Text = rs.Fields("proveedor").Value.ToString

438

Call BuscaNombreProveedor() If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("FAC_BUSCA_PARAMETROS", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", rs.Fields("USUARIO").Value) cmd.Parameters.Add("@OPCION", 2) Try dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try If dr.Read Then TxtUsuario.Text = dr("USUUSER") End If For i = 0 To Me.CmbSucursalDestino.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(CmbSucursalDestino.Text, 4))) = rs.Fields("sucursal").Value Then Me.CmbSucursalDestino.SelectedIndex = i : Exit For End If If i <> Me.CmbSucursalDestino.Items.Count - 1 Then Me.CmbSucursalDestino.SelectedIndex = i + 1 End If Next For i = 0 To Me.CmbSucursalOrigen.Items.Count - 1 If Val(Trim(Microsoft.VisualBasic.Right(CmbSucursalOrigen.Text, 4))) = rs.Fields("sucursal1").Value Then Me.CmbSucursalOrigen.SelectedIndex = i : Exit For End If If i <> Me.CmbSucursalOrigen.Items.Count - 1 Then Me.CmbSucursalOrigen.SelectedIndex = i + 1 End If Next If cn.State = ConnectionState.Closed Then : cn.Open() : End If If Not dr.IsClosed Then : dr.Close() : End If cmd = New SqlClient.SqlCommand("INV_BUSCA_DETALLES", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@NUMEROCAB", CodigoCabecera) Try

439

dr = cmd.ExecuteReader() Catch ex As Exception MsgBox(ex.Message) End Try i = 1 While dr.Read DetVarCodigoproducto = dr("CODIGOPRODUCTO") : DetVarFecha = dr("FECHA") : DetVarCantidad = dr("CANTIDAD") DetVarTotalPrecio = dr("TOTALP") : DetVarTotalCosto = dr("TOTALC") DetVarPrecio = dr("PRECIO") : DetVarCosto = dr("COSTO") : DetVarIva = dr("IVA") : DetVarHora = dr("HORA") With SprIngresoEgreso .Row = i .Col = 2 : .Text = DetVarCantidad .Col = 3 : .Text = DetVarCodigoproducto .Col = 5 : .Text = dr("NOMBRE") .Col = 7 : .Text = DetVarPrecio .Col = 8 : .Text = DetVarCosto .Col = 9 : .Text = DetVarTotalPrecio .Col = 10 : .Text = DetVarTotalCosto .Col = 11 : .Text = DetVarIva .MaxRows = .MaxRows + 1 End With i = i + 1 End While If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub BuscaNombreProveedor() If Me.TxtProveedor.Text <> "" Then If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If cmd = New SqlClient.SqlCommand("SEG_BUSCA_ESPECIF", cn) cmd.CommandType = CommandType.StoredProcedure cmd.Parameters.Clear() cmd.Parameters.Add("@CODIGO", Me.TxtProveedor.Text) cmd.Parameters.Add("@OPCION", 15) Try dr = cmd.ExecuteReader() Catch ex As Exception

440

MsgBox(ex.Message) End Try If dr.Read Then TxtNombreProveedor.Text = dr("PRORSOCIAL") : COD_PRO = dr("CEDULA") : TxtReferencia.Focus() Else MsgBox("Proveedor no existe..!", MsgBoxStyle.Information, "Mensaje") : Me.TxtProveedor.Focus() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Else MsgBox("Ingrese código del Proveedor..!", MsgBoxStyle.Information, "Mensaje") End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim frm_busq As New Frm_Buscar S_Codigo = "" TablaBuscada = "VIS_CONS_PROVEEDORES" Campo1 = "CEDULA" Campo2 = "PRORSOCIAL" Campo3 = "Busqueda Por Proveedor" frm_busq.ShowDialog() If S_Codigo <> "" Then TxtProveedor.Text = S_Codigo Call BuscaNombreProveedor() End If End Sub Private Sub TxtProveedor_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles TxtProveedor.KeyPress If e.KeyChar = Microsoft.VisualBasic.ChrW(13) Then Call BuscaNombreProveedor() End If End Sub Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick

441

Select Case e.Button.Tag Case "Ingresar" : Call IngresarDatos() Case "Grabar" : Call GrabarDatos() Case "Modificar" : Call ModificarDatos() Case "Eliminar" : Call EliminarDatos() Case "Buscar" : Call BuscarDatos() Case "Deshacer" : Call DeshacerDatos() Case "Imprimir" If Trim(Me.TxtNumero.Text) <> "" Then Call ImprimirDatos() Else MsgBox("No Existen datos a imprimir...", vbInformation, "A T E N C I O N") Me.TxtNumero.Focus() End If Case "Salir" : Call SalirDatos() End Select End Sub Private Sub TlbCursores_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbCursores.ButtonClick Select Case e.Button.Tag Case "Primero" If Not (rs.BOF) Then rs.MoveFirst() Call DisplayCurrentRecord() End If Case "Anterior" If Not (rs.BOF) Then rs.MovePrevious() Call DisplayCurrentRecord() End If Case "Siguiente" If Not (rs.EOF) Then rs.MoveNext() Call DisplayCurrentRecord() End If Case "Ultimo" If Not (rs.EOF) Then rs.MoveLast() Call DisplayCurrentRecord() End If End Select

442

End Sub Private Sub BuscarDatos() End Sub Private Sub ImprimirDatos() Dim frm_busq As New FrmParamImpIngreso frm_busq.CrpImprimirIngreso.ReportSource = Nothing Dim paramtipo As New ParameterDiscreteValue Dim paramsucursal As New ParameterDiscreteValue Dim paramcaja As New ParameterDiscreteValue Dim paramnumerocaja As New ParameterDiscreteValue paramtipo.Value = "SA" paramsucursal.Value = Trim(Microsoft.VisualBasic.Right(Me.CmbSucursalOrigen.Text, 4)) paramcaja.Value = CODCAJA paramnumerocaja.Value = Me.TxtNumero.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@CODIGO1" paramtemp.CurrentValues.Add(paramtipo) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@CODIGO2" paramtemp.CurrentValues.Add(paramsucursal) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@CODIGO3" paramtemp.CurrentValues.Add(paramcaja) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@CODIGO4" paramtemp.CurrentValues.Add(paramnumerocaja) paramlist.Add(paramtemp)

443

frm_busq.CrpImprimirIngreso.ParameterFieldInfo = paramlist frm_busq.CrpImprimirIngreso.ReportSource = New Rpt_ImpIngreso frm_busq.ShowDialog() End Sub Private Sub DtpFechaRegistro_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DtpFechaRegistro.ValueChanged Me.DtpFechaRegistro.MaxDate = Today() End Sub End Class

*Clase Frm_Rep_CuadreDeCaja.vb

Imports System.Data Imports System.Data.SqlClient Imports CrystalDecisions.Shared Public Class Frm_Rep_CuadreDeCaja Inherits System.Windows.Forms.Form Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" 'Call IngresarDatos() Case "Grabar" 'Call GrabarDatos() Case "Modificar" 'Call ModificarDatos() Case "Eliminar" 'Call EliminarDatos() Case "Buscar"

444

'Call BuscarDatos() Case "Deshacer" 'Call DeshacerDatos() Case "Imprimir" Call ImprimirDatos() Case "Salir" Call SalirDatos() End Select End Sub Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick If BARRA.Value < 5 Then BARRA.Value = BARRA.Value + 100 Else If BARRA.Value = 5 Then Timer1.Enabled = False End If End If End Sub Private Sub SalirDatos() Me.Close() End Sub Private Sub ImprimirDatos() Timer1.Enabled = True Dim frm_busq As New FrmParamImpRepCuadreDeCaja frm_busq.CrpImpRepCuadreDeCaja.ReportSource = Nothing Dim paramFechaInicio As New ParameterDiscreteValue Dim paramFechaFinal As New ParameterDiscreteValue Dim paramSucIni As New ParameterDiscreteValue Dim paramSucFin As New ParameterDiscreteValue paramFechaInicio.Value = Me.Dpt_FechaIni.Text paramFechaFinal.Value = Me.Dpt_FechaFin.Text paramSucIni.Value = Me.Txt_DesdeSucursal.Text paramSucFin.Value = Me.Txt_HastaSucursal.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechaini" paramtemp.CurrentValues.Add(paramFechaInicio) paramlist.Add(paramtemp)

445

paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechafin" paramtemp.CurrentValues.Add(paramFechaFinal) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@desdesuc" paramtemp.CurrentValues.Add(paramSucIni) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@hastasuc" paramtemp.CurrentValues.Add(paramSucFin) paramlist.Add(paramtemp) frm_busq.CrpImpRepCuadreDeCaja.ParameterFieldInfo = paramlist 'AGREGUE LA SIGUIENTE LINEA 'frm_busq.CrpImprimirPersonal.PrintReport() frm_busq.CrpImpRepCuadreDeCaja.ReportSource = New Rpt_ImpRepCuadreDeCaja Timer1.Enabled = False frm_busq.ShowDialog() End Sub Private Sub Dpt_FechaIni_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dpt_FechaIni.ValueChanged Me.Dpt_FechaIni.MaxDate = Today() End Sub Private Sub Dpt_FechaFin_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dpt_FechaFin.ValueChanged Me.Dpt_FechaFin.MaxDate = Today() End Sub End Class

* Clase Frm_Rep_DiarioVenta.vb

Imports System.Data Imports System.Data.SqlClient

446

Imports CrystalDecisions.Shared Public Class Frm_Rep_DiarioVenta Inherits System.Windows.Forms.Form Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox Dim au As String Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" 'Call IngresarDatos() Case "Grabar" 'Call GrabarDatos() Case "Modificar" 'Call ModificarDatos() Case "Eliminar" 'Call EliminarDatos() Case "Buscar" 'Call BuscarDatos() Case "Deshacer" 'Call DeshacerDatos() Case "Imprimir" Call ImprimirDatos() Case "Salir" Call SalirDatos() End Select End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If BARRA.Value < 5 Then BARRA.Value = BARRA.Value + 100 Else If BARRA.Value = 5 Then Timer1.Enabled = False 'au = MsgBox("Bienvenido", MsgBoxStyle.Exclamation + MsgBoxStyle.OKOnly, "Sistema") End If End If End Sub Private Sub SalirDatos() Me.Close()

447

End Sub Private Sub ImprimirDatos() Timer1.Enabled = True Dim frm_busq As New FrmParamImpRepDiarioVentas frm_busq.CrpImpRepDiariodeVentas.ReportSource = Nothing Dim paramFechaInicio As New ParameterDiscreteValue Dim paramFechaFinal As New ParameterDiscreteValue Dim paramSucIni As New ParameterDiscreteValue Dim paramSucFin As New ParameterDiscreteValue paramFechaInicio.Value = Me.Dpt_FechaIni.Text paramFechaFinal.Value = Me.Dpt_FechaFin.Text paramSucIni.Value = Me.Txt_DesdeSucursal.Text paramSucFin.Value = Me.Txt_HastaSucursal.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechaini" paramtemp.CurrentValues.Add(paramFechaInicio) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechafin" paramtemp.CurrentValues.Add(paramFechaFinal) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@desdesuc" paramtemp.CurrentValues.Add(paramSucIni) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@hastasuc" paramtemp.CurrentValues.Add(paramSucFin) paramlist.Add(paramtemp) frm_busq.CrpImpRepDiariodeVentas.ParameterFieldInfo = paramlist 'AGREGUE LA SIGUIENTE LINEA 'frm_busq.CrpImprimirPersonal.PrintReport()

448

frm_busq.CrpImpRepDiariodeVentas.ReportSource = New Rpt_ImpRepDiarioVentas Timer1.Enabled = False frm_busq.ShowDialog() End Sub Private Sub Dpt_FechaIni_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dpt_FechaIni.ValueChanged Me.Dpt_FechaIni.MaxDate = Today() End Sub Private Sub Dpt_FechaFin_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dpt_FechaFin.ValueChanged Me.Dpt_FechaFin.MaxDate = Today() End Sub End Class

‘ Clase Frm_Rep_Horarios.vb

Imports System.Data Imports System.Data.SqlClient Imports CrystalDecisions.Shared Public Class Frm_Rep_Horarios Inherits System.Windows.Forms.Form Dim au As String Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" 'Call IngresarDatos() Case "Grabar" 'Call GrabarDatos() Case "Modificar" 'Call ModificarDatos()

449

Case "Eliminar" 'Call EliminarDatos() Case "Buscar" 'Call BuscarDatos() Case "Deshacer" 'Call DeshacerDatos() Case "Imprimir" Call ImprimirDatos() Case "Salir" Call SalirDatos() End Select End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If BARRA.Value < 5 Then BARRA.Value = BARRA.Value + 100 Else If BARRA.Value = 5 Then Timer1.Enabled = False 'au = MsgBox("Bienvenido", MsgBoxStyle.Exclamation + MsgBoxStyle.OKOnly, "Sistema") End If End If End Sub Private Sub SalirDatos() Me.Close() End Sub Private Sub ImprimirDatos() Timer1.Enabled = True Dim frm_busq As New FrmParamImpReporteHorarios frm_busq.CrpImpReporteHorarios.ReportSource = Nothing Dim paramDesPla As New ParameterDiscreteValue Dim paramHasPla As New ParameterDiscreteValue paramDesPla.Value = Me.Txt_DesdeSucursal.Text paramHasPla.Value = Me.Txt_HastaSucursal.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@desdetipo"

450

paramtemp.CurrentValues.Add(paramDesPla) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@hastatipo" paramtemp.CurrentValues.Add(paramHasPla) paramlist.Add(paramtemp) frm_busq.CrpImpReporteHorarios.ParameterFieldInfo = paramlist frm_busq.CrpImpReporteHorarios.ReportSource = New Rpt_ImpReporteHorarios Timer1.Enabled = False frm_busq.ShowDialog() End Sub End Class

* Clase Frm_Rep_Servicios.vb

Imports System.Data Imports System.Data.SqlClient Imports CrystalDecisions.Shared Public Class Frm_Rep_Servicios Inherits System.Windows.Forms.Form Dim au As String Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Imprimir" Call ImprimirDatos() Case "Salir" Call SalirDatos() End Select

451

End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If BARRA.Value < 5 Then BARRA.Value = BARRA.Value + 100 Else If BARRA.Value = 5 Then Timer1.Enabled = False 'au = MsgBox("Bienvenido", MsgBoxStyle.Exclamation + MsgBoxStyle.OKOnly, "Sistema") End If End If End Sub Private Sub SalirDatos() Me.Close() End Sub Private Sub ImprimirDatos() Select Case Me.Cmb_TipoServicios.Text Case "Personal Trainer" Call PersonalTrainer() Case "Pilates" Call Pilates() Case "Bronceados" Call Bronceados() Case "Masajes" Call Masajes() Case "Locker" Call Locker() Case "Parqueo" Call Parqueo() End Select End Sub Private Sub PersonalTrainer() Timer1.Enabled = True Dim frm_busq As New Frm_ParamReportePersonalTrainer frm_busq.CrpReportePersonalTrainer.ReportSource = Nothing Dim paramFechaInicio As New ParameterDiscreteValue Dim paramFechaFinal As New ParameterDiscreteValue Dim paramSucIni As New ParameterDiscreteValue Dim paramSucFin As New ParameterDiscreteValue paramFechaInicio.Value = Me.Dpt_FechaIni.Text paramFechaFinal.Value = Me.Dpt_FechaFin.Text

452

Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechaini" paramtemp.CurrentValues.Add(paramFechaInicio) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechafin" paramtemp.CurrentValues.Add(paramFechaFinal) paramlist.Add(paramtemp) frm_busq.CrpReportePersonalTrainer.ParameterFieldInfo = paramlist 'AGREGUE LA SIGUIENTE LINEA 'frm_busq.CrpImprimirPersonal.PrintReport() frm_busq.CrpReportePersonalTrainer.ReportSource = New Rpt_ReportePersonalTrainer Timer1.Enabled = False frm_busq.ShowDialog() End Sub Private Sub Pilates() Timer1.Enabled = True Dim frm_busq As New Frm_ParamReportePilates frm_busq.CrpReportePilates.ReportSource = Nothing Dim paramFechaInicio As New ParameterDiscreteValue Dim paramFechaFinal As New ParameterDiscreteValue Dim paramSucIni As New ParameterDiscreteValue Dim paramSucFin As New ParameterDiscreteValue paramFechaInicio.Value = Me.Dpt_FechaIni.Text paramFechaFinal.Value = Me.Dpt_FechaFin.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechaini" paramtemp.CurrentValues.Add(paramFechaInicio) paramlist.Add(paramtemp)

453

paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechafin" paramtemp.CurrentValues.Add(paramFechaFinal) paramlist.Add(paramtemp) frm_busq.CrpReportePilates.ParameterFieldInfo = paramlist 'AGREGUE LA SIGUIENTE LINEA 'frm_busq.CrpImprimirPersonal.PrintReport() frm_busq.CrpReportePilates.ReportSource = New Rpt_ReportePilates Timer1.Enabled = False frm_busq.ShowDialog() End Sub Private Sub Bronceados() Timer1.Enabled = True Dim frm_busq As New Frm_ParamReporteBronceados frm_busq.CrpReporteBronceados.ReportSource = Nothing Dim paramFechaInicio As New ParameterDiscreteValue Dim paramFechaFinal As New ParameterDiscreteValue Dim paramSucIni As New ParameterDiscreteValue Dim paramSucFin As New ParameterDiscreteValue paramFechaInicio.Value = Me.Dpt_FechaIni.Text paramFechaFinal.Value = Me.Dpt_FechaFin.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechaini" paramtemp.CurrentValues.Add(paramFechaInicio) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechafin" paramtemp.CurrentValues.Add(paramFechaFinal) paramlist.Add(paramtemp) frm_busq.CrpReporteBronceados.ParameterFieldInfo = paramlist 'AGREGUE LA SIGUIENTE LINEA 'frm_busq.CrpImprimirPersonal.PrintReport() frm_busq.CrpReporteBronceados.ReportSource = New Rpt_ReporteBronceados

454

Timer1.Enabled = False frm_busq.ShowDialog() End Sub Private Sub Masajes() Timer1.Enabled = True Dim frm_busq As New Frm_ParamReporteMasajes frm_busq.CrpReporteMasajes.ReportSource = Nothing Dim paramFechaInicio As New ParameterDiscreteValue Dim paramFechaFinal As New ParameterDiscreteValue Dim paramSucIni As New ParameterDiscreteValue Dim paramSucFin As New ParameterDiscreteValue paramFechaInicio.Value = Me.Dpt_FechaIni.Text paramFechaFinal.Value = Me.Dpt_FechaFin.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechaini" paramtemp.CurrentValues.Add(paramFechaInicio) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechafin" paramtemp.CurrentValues.Add(paramFechaFinal) paramlist.Add(paramtemp) frm_busq.CrpReporteMasajes.ParameterFieldInfo = paramlist 'AGREGUE LA SIGUIENTE LINEA 'frm_busq.CrpImprimirPersonal.PrintReport() frm_busq.CrpReporteMasajes.ReportSource = New Rpt_ReporteMasajes Timer1.Enabled = False frm_busq.ShowDialog() End Sub Private Sub Locker() Timer1.Enabled = True Dim frm_busq As New Frm_ParamReporteLocker frm_busq.CrpReporteLocker.ReportSource = Nothing

455

Dim paramFechaInicio As New ParameterDiscreteValue Dim paramFechaFinal As New ParameterDiscreteValue Dim paramSucIni As New ParameterDiscreteValue Dim paramSucFin As New ParameterDiscreteValue paramFechaInicio.Value = Me.Dpt_FechaIni.Text paramFechaFinal.Value = Me.Dpt_FechaFin.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechaini" paramtemp.CurrentValues.Add(paramFechaInicio) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechafin" paramtemp.CurrentValues.Add(paramFechaFinal) paramlist.Add(paramtemp) frm_busq.CrpReporteLocker.ParameterFieldInfo = paramlist 'AGREGUE LA SIGUIENTE LINEA 'frm_busq.CrpImprimirPersonal.PrintReport() frm_busq.CrpReporteLocker.ReportSource = New Rpt_ReporteLocker Timer1.Enabled = False frm_busq.ShowDialog() End Sub Private Sub Parqueo() Timer1.Enabled = True Dim frm_busq As New Frm_ParamReporteParqueo frm_busq.CrpReporteParqueo.ReportSource = Nothing Dim paramFechaInicio As New ParameterDiscreteValue Dim paramFechaFinal As New ParameterDiscreteValue Dim paramSucIni As New ParameterDiscreteValue Dim paramSucFin As New ParameterDiscreteValue paramFechaInicio.Value = Me.Dpt_FechaIni.Text paramFechaFinal.Value = Me.Dpt_FechaFin.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField

456

paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechaini" paramtemp.CurrentValues.Add(paramFechaInicio) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechafin" paramtemp.CurrentValues.Add(paramFechaFinal) paramlist.Add(paramtemp) frm_busq.CrpReporteParqueo.ParameterFieldInfo = paramlist 'AGREGUE LA SIGUIENTE LINEA 'frm_busq.CrpImprimirPersonal.PrintReport() frm_busq.CrpReporteParqueo.ReportSource = New Rpt_ReporteParqueo Timer1.Enabled = False frm_busq.ShowDialog() End Sub Private Sub Dpt_FechaIni_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dpt_FechaIni.ValueChanged Me.Dpt_FechaIni.MaxDate = Today() End Sub Private Sub Dpt_FechaFin_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dpt_FechaFin.ValueChanged Me.Dpt_FechaFin.MaxDate = Today() End Sub End Class

* clase Frm_ReportedeAsistencias.vb

Imports System.Data Imports System.Data.SqlClient Imports CrystalDecisions.Shared

457

Public Class Frm_ReportedeAsistencias Inherits System.Windows.Forms.Form Private Sub TlbBotones_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles TlbBotones.ButtonClick Select Case e.Button.Tag Case "Ingresar" 'Call IngresarDatos() Case "Grabar" 'Call GrabarDatos() Case "Modificar" 'Call ModificarDatos() Case "Eliminar" 'Call EliminarDatos() Case "Buscar" 'Call BuscarDatos() Case "Deshacer" 'Call DeshacerDatos() Case "Imprimir" Call ImprimirDatos() Case "Salir" Call SalirDatos() End Select End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick If BARRA.Value < 5 Then BARRA.Value = BARRA.Value + 100 Else If BARRA.Value = 5 Then Timer1.Enabled = False 'au = MsgBox("Bienvenido", MsgBoxStyle.Exclamation + MsgBoxStyle.OKOnly, "Sistema") End If End If End Sub Private Sub SalirDatos()

458

Me.Close() End Sub Private Sub ImprimirDatos() Timer1.Enabled = True Dim frm_busq As New FrmParamImpRepAsistencias frm_busq.Crp_RepAsistencias.ReportSource = Nothing Dim paramFechaInicio As New ParameterDiscreteValue Dim paramFechaFinal As New ParameterDiscreteValue Dim paramSucIni As New ParameterDiscreteValue Dim paramSucFin As New ParameterDiscreteValue paramFechaInicio.Value = Me.Dpt_FechaIni.Text paramFechaFinal.Value = Me.Dpt_FechaFin.Text paramSucIni.Value = Me.Txt_DesdeSucursal.Text paramSucFin.Value = Me.Txt_HastaSucursal.Text Dim paramlist As New ParameterFields Dim paramtemp As ParameterField paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechaini" paramtemp.CurrentValues.Add(paramFechaInicio) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@fechafin" paramtemp.CurrentValues.Add(paramFechaFinal) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@desdeced" paramtemp.CurrentValues.Add(paramSucIni) paramlist.Add(paramtemp) paramtemp = New ParameterField paramtemp.ParameterFieldName = "@hastaced" paramtemp.CurrentValues.Add(paramSucFin) paramlist.Add(paramtemp) frm_busq.Crp_RepAsistencias.ParameterFieldInfo = paramlist frm_busq.Crp_RepAsistencias.ReportSource = New Rpt_ImpRepAsistencias

459

Timer1.Enabled = False frm_busq.ShowDialog() End Sub Private Sub Dpt_FechaIni_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dpt_FechaIni.ValueChanged Me.Dpt_FechaIni.MaxDate = Today() End Sub Private Sub Dpt_FechaFin_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dpt_FechaFin.ValueChanged Me.Dpt_FechaFin.MaxDate = Today() End Sub Private Sub Btn_Desde_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Desde.Click If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Dim frm_busq As New Frm_Buscar S_Codigo = "" TablaBuscada = "VIS_CONS_CLIENTES" Campo1 = "CEDULA" Campo2 = "NOMBRE" Campo3 = "Busqueda Por Cliente" frm_busq.ShowDialog() If S_Codigo <> "" Then Txt_DesdeSucursal.Text = S_Codigo 'Call BuscaNombreCli() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub Private Sub Btn_Hasta_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Btn_Hasta.Click If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If Dim frm_busq As New Frm_Buscar S_Codigo = "" TablaBuscada = "VIS_CONS_CLIENTES" Campo1 = "CEDULA" Campo2 = "NOMBRE"

460

Campo3 = "Busqueda Por Cliente" frm_busq.ShowDialog() If S_Codigo <> "" Then Txt_HastaSucursal.Text = S_Codigo 'Call BuscaNombreCli() End If If Not dr.IsClosed Then : dr.Close() : End If If cn.State = ConnectionState.Closed Then : cn.Open() : End If End Sub End Class

461

CAPITULO 3

3. Configuración del Sistema

3.1. Instalación

Instalamos Microsoft Visual Studio.Net 2003

Instalamos el SQL Server 2000

Como hemos trabajado con Cristal Report, debemos instalarlo

en cada máquina de los usuarios, esto también es por el tema

de las licencias de permiso.

Instalar el spread 6.0 en cada máquina

Ejecutamos el script de la base de datos

Creamos el ODBC en cada máquina donde se intalará el

sistema

Creamos la carpeta reportes en la siguiente ruta:

C:\gimnasios1-2

Creamos la carpeta imágenes en la siguiente ruta

C:\gimnasios1-2

Se instala el ejecutable gimnasios1-2

462

3.2. Ruta de la Base de Datos

C:\Archivos de programa\Microsoft SQL

Server\MSSQL\data\gym_Data.MDF

3.3. Usuario de la Base de Datos

Hemos creado un usuario de la base de datos con nombre sa y el

password asignado es sasa

UNIVERSIDAD DE GUAYAQUIL

Facultad de Ciencias Matemáticas y Físicas

Carrera de Ingeniería en Sistemas Computacionales

Sistema para Controlar el Acceso a Gimnasios

TESIS DE GRADO

Previo a la Obtención del Título de:

INGENIERO EN SISTEMAS COMPUTACIONALES

MANUAL TECNICO

Autores:

Mariuxi Rodríguez Jurado Richard Sánchez Pincay

GUAYAQUIL – ECUADOR

Año: 2007

INDICE GENERAL

CAPITULO 1

1. Tablas Base de Datos 1

1.1. Diccionario de Datos 1-44

CAPITULO 2

2.1. Creación del Script de la base de datos 45-67 2.2. Diseño del esquema de las tablas 67-82 2.3. Procedimientos 82 2.3.1. archivo_contable_cab 82-83 2.3.2. archivo_contable_det 83 2.3.3. archivo_contable_pag 83-84

2.3.4. fac_busca_caducidad_cliente 84

2.3.5. fac_busca_detalles 85

2.3.6. fac_busca_factura 86

2.3.7. fac_busca_parametros 86-87

2.3.8. fac_busca_secuencia 87

2.3.9. fac_cons_espec 88-90

2.3.10. fac_eli_bronceados 90-91

2.3.11. fac_eli_cabecera 91-92

2.3.12. fac_eli_detalles 92-93

2.3.13. fac_eli_existencias 93

2.3.14. fac_eli_locker 94

2.3.15. fac_eli_masajes 94

2.3.16. fac_eli_parqueo 95

2.3.17. fac_eli_personalt 95-96

2.3.18. fac_eli_pilates 96

2.3.19. fac_ing_asistencias 96-97

2.3.20. fac_ing_bronceados 97-98

2.3.21. fac_ing_cab_factura 98-99

2.3.22. fac_ing_cliente 100-101

2.3.23. fac_ing_combo_cabecera 101-102

2.3.24. fac_ing_detalle 102-103

2.3.25. fac_ing_detalle_combo 103-104

2.3.26. fac_ing_detalle_platos 104-105

2.3.27. fac_ing_existencias 105

2.3.28. fac_ing_locker 106

2.3.29. fac_ing_masajes 106-107

2.3.30. fac_ing_pagos 107-109

2.3.31. fac_ing_parqueo 109-110

2.3.32. fac_ing_personalt 110-111

2.3.33. fac_ing_pilates 111-112

2.3.34. fac_ing_platos_cabecera 112-113

2.3.35. fac_ing_prodserv 113-114

2.3.36. fac_ing_secuencia 114

2.3.37. fac_mod_bronceados 114-115

2.3.38. fac_mod_cliente 115-117

2.3.40. fac_mod_combo_cabecera 117

2.3.41. fac_mod_locker 117-118

2.3.42. fac_mod_masajes 118-119

2.3.43. fac_mod_memb_cliente 119

2.3.44. fac_mod_parqueo 120

2.3.45. fac_mod_personalt 120-121

2.3.46. fac_mod_pilates 121-122

2.3.47. fac_mod_platos_cabecera 122-123

2.3.48. fac_mod_prodserv 123-124

2.3.49. fac_mod_secuencia 124

2.3.50. imp_bronceados1 125

2.3.51. imp_clientes 126

2.3.52. imp_combo 126-127

2.3.53. imp_locker 127-128

2.3.54. imp_masajes1 128

2.3.55. imp_masajes2 129

2.3.56. imp_parqueo 129-130

2.3.57. imp_personal1 130-131

2.3.58. imp_personal2 131

2.3.59. imp_pilates1 132

2.3.60. imp_pilates2 132

2.3.61. imp_platos 133-134

2.3.62. imp_productos_serv 134

2.3.63. imp_rep_asistencias 135

2.3.64. imp_rep_bancos 135-136

2.3.65. imp_rep_combos 136-137

2.3.66. imp_rep_cuadredecaja 137-139

2.3.67 imp_rep_diariodeventa 139-141

2.3.68. imp_rep_existencias 141-142

2.3.69. imp_rep_montosxclientes 142-143

2.3.70. imp_rep_movimientoproductos 143-144

2.3.71. imp_rep_personaltrainer 144-145

2.3.72. imp_rep_platos 145

2.3.73. imp_rep_productos 145-147

2.3.74. imp_rep_tarjetas 147

2.3.75. imp_rep_ventadeproductos 148-149

2.3.76. imp_rep_ventasxhoras 149-150

2.3.77. imp_rep_ventasxmeses 150-151

2.3.78. imp_rep_ventasxplatos 151-152

2.3.79. imp_rep_ventasxvendedor 152-153

2.3.80. inv_busca_cab 153-154

2.3.81. inv_busca_cabecera 154

2.3.82. inv_busca_detalles 154-155

2.3.83. inv_eli_cabecera 155-156

2.3.84. inv_eli_detalles 156

2.3.85. inv_imp_ingreso 157

2.3.86. inv_ing_cabecera 157-159

2.3.87. inv_ing_ciudad 159-160

2.3.88. inv_ing_detalle 160-161

2.3.89. inv_mod_ciudad 161

2.3.90. rep_bronceados 162

2.3.91. rep_locker 162-163

2.3.92. rep_masajes 163-164

2.3.93. rep_parqueo 164

2.3.94. rep_personaltrainer 165

2.3.95. rep_pilates 165-166

2.3.96. seg_borra_spread 166

2.3.97. seg_busca_cab 167

2.3.98. seg_busca_cab_combo 167-168

2.3.99. seg_busca_cab_platos 168

2.3.100. seg_busca_datos_bronceados 168-169

2.3.101. seg_busca_datos_locker 169

2.3.102. seg_busca_datos_masajes 170

2.3.103. seg_busca_datos_parqueo 170-171

2.3.104. seg_busca_datos_personal 171

2.3.105. seg_busca_datos_pilates 171-172

2.3.106. seg_busca_det_combo 172-173

2.3.107. seg_busca_det_platos 173

2.3.108. seg_busca_especif 173-177

2.3.109. seg_busca_especif1 177-178

2.3.110. seg_busca_gen 178-182

2.3.111. seg_busca_horarios 182-183

2.3.112. seg_busca_mem 183

2.3.113. seg_busca_numero 183-185

2.3.114. Seg_Busca_Permisos 185

2.3.115. seg_busca_sesion 185-186

2.3.116. seg_busca_sucurcaja 186-187

2.3.117. seg_busca_sucursal 187-188

2.3.118. seg_busca_totales 188

2.3.119. seg_busca_usu 188-189

2.3.120. seg_cons_caja 189

2.3.121. seg_cons_parametro 189

2.3.122. seg_cons_sucur 190

2.3.123. seg_consul_bronceados 190

2.3.124. seg_consul_horario 191

2.3.125. seg_consul_masajes 191-192

2.3.126. seg_consul_personal 192

2.3.127. seg_consul_pilates 192-193

2.3.128. seg_consul_usuario 193

2.3.129. seg_eli_perxusu 194

2.3.130. seg_ing_caja 194

2.3.131. seg_ing_horarios 195

2.3.132. seg_ing_parametro 195-196

2.3.133. seg_ing_perxusu 196-197

2.3.134. seg_ing_secuencia 197

2.3.135. seg_ing_sucursal 197-198

2.3.136. seg_ing_tarjetas 198

2.3.137. seg_ing_usuario 198-199

2.3.138. seg_ing_zona 199-200

2.3.139. seg_mod_banco 200

2.3.140. seg_mod_horarios 201-202

2.3.141. seg_mod_parametro 202

2.3.142. seg_mod_sucursal 203

2.3.143. seg_mod_tarjeta 203-204

2.3.144. seg_mod_usuario 204-205

2.3.145. seg_mod_zona 205

2.3.146. seg_permisos 205-206

2.3.147. seg_permxusu 206-207

2.3.148. seg_upd_perxusu 207

2.3.149. sicag_busqueda_espe 208

2.3.150. sicag_busqueda_gen 208-209

2.3.151. verifica_existencia 209-210

2.4. Índice (Campos Primarios) 210-216

2.5. Validación de Campo 216

2.5.1 Identificación de Campos obligatorios 216-221

2.6. Código Fuente 221-460

CAPITULO 3

3. Configuración del Sistema 461

3.1. Instalación 461

3.2. Ruta de la Base de datos 462

3.3. Usuario de la Base de datos 462

1

CAPITULO 1

1. ACCESO AL SISTEMA

Para ingresar al sistema SICAG debemos registrar un usuario y una

clave, en esta ventana también consta el detalle de la sucursal, en el

caso de que se tengan varias filiales.

.

Una vez realizado este paso nos aparecerá la pantalla de bienvenida

Al aceptar se nos presenta la pantalla donde consta el menú principal

1.1. MENÚ PRINCIPAL

2

Se presenta la siguiente pantalla donde tenemos el menú archivo,

seguridad, facturación e inventario

3

CAPITULO 2

2. MÓDULO FACTURACIÓN

2.1. Mantenimiento

2.1.1. Ingreso de Cliente (Directorio de Socios)

En el menú principal para poder acceder al Directorio de Socios

ya sea para ingresar un nuevo registro como para modificar algún

dato del socio se debe ingresar a la siguiente ventana. Pero el

ingreso estará restringido para ciertos usuarios ya que no todos

podrán manipular el sistema.

Cuando damos clic en Directorio de Socios se nos presenta la

siguiente pantalla:

4

Del lado izquierdo se irán grabando en orden alfabético los socios

que se ingresan. Para ingresar un socio damos clic en el botón

INGRESAR se habilitan las celdas para poder escribir los datos

que solicitan como cédula, nombre, apellido, dirección, empresa,

fecha de nacimiento, sexo, teléfono, e-mail, ciudad, zona, estado

civil. El usuario le da el estado de activo o inactivo de acuerdo al

estado de su membresía.

5

La secuencia es un número que se incrementa cada vez que se

realiza una transacción.

2.1.1.1. Tipo de Cliente

Se debe definir que tipo de socio es el que se está ingresando al

gimnasio, pueden ser:

2.1.1.1.1.Cliente.- Es una persona que se inscribe como socio al

gimnasio pagando una membresía

2.1.1.1.2.Empleado.- Es una persona que trabaja en el gimnasio

6

2.1.1.1.3.Proveedor- Es la persona que nos provee de algún

servicio ya sea colas, toallas, etc.

2.1.1.1.4.Usuario.- Es una persona que maneja el sistema

2.1.1.2. Membresía

Se debe definir que tipo de membresía va a pagar el socio, estas

pueden ser:

2.1.1.2.1. SEMANAL

2.1.1.2.2. MENSUAL

2.1.1.2.3. TRIMESTRAL

7

2.1.1.2.4. SEMANAL

2.1.1.2.3. ANUAL

2.1.1.2.4. GOLD

2.1.1.2.5. LIMITED

2.1.1.2.6. OTRAS MEMBRESIAS

2.1.1.3. Guía

Aquí se definen los nombres de las personas que estarán de guía

en el gimnasio, se abrirá un listado y se deberá escoger al

instructor.

8

2.1.1.4. CADUCIDAD DE LA MEMBRESÍA

Esta fecha se modificará dependiendo de la membresía

seleccionada y una vez hecha la factura.

2.1.2. Catálogo de Tarjetas de Crédito

Se tiene un registro de las tarjetas de crédito con las que trabajará el

gimnasio, así mismo tenemos la opción de poder incrementar en el

sistema más tarjetas siempre y cuando se cumpla con las

condiciones de cada institución financiera.

9

Damos clic en TARJETA DE CRÉDITO y se despliega la siguiente ventana

Si queremos ingresar una nueva tarjeta damos clic en INGRESAR,

se habilitan las celdas para llenar (descripción, abreviatura, estado),

10

también se habilita la lista de los bancos existentes. El dato

ingresado (tarjeta de crédito) se reflejará a la hora de llenar la

factura. Este tema lo describiremos mejor en la facturación.

Se da clic en grabar y el sistema agrega la nueva tarjeta.

2.1.3. Provincias y Ciudades

Aquí se registran las provincias y ciudades haciendo relación entre

ellas de acuerdo a la realidad. Estos datos los utilizamos en el

momento de ingresar un cliente al gimnasio.

11

S ingresan las provincias y se relaciona cada provincia ingresando la

ciudad correspondiente. Tanto la provincia como la ciudad tendrán

un códigos.

Damos clic en provincia y ciudades y se nos presenta la siguiente pantalla

donde comenzamos a ingresar las provincias y ciudades que nos consten

en el sistema.

12

2.2. Procesos

2.2.1. Facturas

Se registrará el ingreso de información de cada socio, estos

ingresos pueden ser por adquirir una membresía, por adquirir

algún servicio.

Damos clic en facturación:

13

Estamos listo para llenar la factura a través del botón

INGRESAR, procedemos a buscar el cliente de nuestro listado

(este paso es cuando llenamos el cuadro de Directorio de

Socios)

Una vez que tenemos el nombre del cliente procedemos a

registrar el consumo

14

Clic se despliega la pantalla BUSQUEDA GENERAL de

donde seleccionamos el servicio que desea, como estos

servicios se encuentran definidos nos aparecerá con el valor

respectivo (la definición de los costos la veremos mas

adelante en la pantalla de mantenimiento de productos y

servicios).

Se define la forma de pago habilitando el casillero, luego se

procede a definir si es en efectivo, con cheque, tarjeta de

crédito o a crédito. Si es con tarjeta de Crédito se debe llenar

15

el campo detallando la tarjeta que es, número de tarjeta,

nombre del cliente, teléfono del cliente y número de lote de

tarjeta; luego grabamos e imprimimos.

2.2.2. Devoluciones (Nota de Crédito)

Las devoluciones o notas de crédito sirven para devolver al socio

por algún motivo: dinero, cheque o voucher recibido por los

puntos de caja.

Se ingresa de la siguiente manera:

16

Damos clic en DEVOLUCIÓN y se nos presenta la siguiente

pantalla:

17

Vemos que ya hemos dado clic en la opción MODIFICAR por

lo que nos piden que ingresemos el numero de factura que

vamos a cambiar para la devolución, cuando digitamos el

número de la factura automáticamente se nos presentan los

datos de esa factura y de ahí procedemos a realizar los

cambios para la devolución.

Nos podemos dar cuenta que eliminamos el rubro VASO

COLA MEDIANO por lo que el valor de la factura disminuyó,

procedemos a dar clic en grabar y nos aparece el cuadro

DEVOLUCION GENERADA EXITOSAMENTE.

18

Se ha generado la devolución y el sistema lo registra.

2.2.3. LECTURA DE MARCADAS

Nos permitirá importar la asistencia de socios desde el reloj a la

PC y guardarlo a la base de datos SQL.

19

Damos clic en LECTURA DE MARCADAS de ahí aparece el

siguiente recuadro, donde debemos indicar de que fecha

hasta que fecha deseamos hacer el importe de información,

luego damos clic en el botón IMPORTAR y listo.

2.2.4. CREACION DE COMBOS

Sirve cuando se quiera definir alguna promoción para llamar la

atención de los socios y adquirir más clientela, hacer

promociones de comidas a degustar.

20

Damos clic en creación de combos para definir en que consiste,

aparece la pantalla y clic en INGRESAR, automáticamente se

genera el código del combo.

Podemos notar que el código se genera aleatoriamente como se

formen los combos, se habilita la celda para poner el nombre al

código, en el detalle para elegir en que consiste el combo damos

clic en el botoncito se nos abre el casillero de BUSQUEDA

GENERAL (Que se ha demostrado anteriormente como funciona)

seleccionamos y nos aparece el nombre del producto con su precio

de venta al público normal y el precio que quedaría por la

promoción.

Debemos recordar que los componentes, servicios nos

proporciona la base de Mantenimiento de productos y servicios.

21

2.2.5. Ticket de Servicios

Son los tickets que se generaran para los socios que deseen

adquirir un servicio adicional en el gimnasio, que pueden ser de

personal trainer, pilates, masaje, bronceadores, locker y parqueo.

También podemos modificar algún ticket (se debe recordar que a

los usuarios se les da restricciones y permisos para manejar el

sistema, lo veremos mas adelante). Se ingresa en el menú de la

siguiente manera:

2.2.5.1. Ticket Personal Trainer

Sirve para separar turno a un socio con un personal trainer en

especial. Si la persona que ella escoge ya está ocupado para la hora

que requiere el sistema le emitirá un mensaje indicándole.

22

Procedemos a dar clic en INGRESAR se habilitan los campos, el

campo número el sistema lo alimenta automáticamente en orden

secuencial, nos da la opción de buscar al cliente en el listado que

tenemos por medio del campo cédula, así mismo buscar a la

persona que el cliente elija PERSONAL TRAINER, indicamos las

hora (hemos dividido el tiempo en lapsos de una hora).

Procedemos a grabar dando clic en botón grabar

2.2.5.2. Ticket Pilates

Para separar turnos para el servicio de pilates, damos clic en el

botón ingresar y se habilitan las celdas, menos la de número porque

23

es aleatorio, el sistema lo genera. Una vez ingresado el nombre del

cliente y designado el instructor de pilates procedemos a grabar.

2.2.5.3. Tickets Masajes

Procedemos de la misma manera explicada en pilates y personal

trainer. Separamos turno a un socio para el servicio de masajes,

indicamos de que hora a que hora tienen turnos.

24

2.2.5.4. Ticket Bronceados

De igual manera ingresamos los datos que nos solicitan a excepción

del instructor, cuyo campo no existe, solo se define la hora.

25

2.2.5.5. Ticket de Locker

Registramos el nombre del socio que solicita el servicio, se refleja el

tipo de membresía que tiene. Una vez ingresado los datos

procedemos a grabar. Con esto ya definimos el espacio físico del

locker que le corresponde al socio.

2.2.5.6. Ticket de Parqueo Estos tickets sirven para definir un espacio físico en el área del

parqueo, ingresamos los datos del socio que solicita el servicio

automáticamente se refleja el tipo de membresía que tienen.

26

Todos Los tickets una vez grabados procedemos a imprimirlos para

dárselos a los socios solicitantes. Ejemplo:

27

2.2.6. Exportar Archivo DBF

Debemos procesar el archivo de socios al reloj, es decir enviar la

información de la Pc (de la base de datos) al reloj. El archivo será

diseñado por el sistema de acuerdo a los estándares del reloj.

Damos clic en EXPORTAR ARCHIVO DBF de ahí aparece el

siguiente recuadro, donde debemos dar clic en el botón EXPORTAR

y listo, comienza el proceso.

28

2.2.7. Archivo texto para Contabilidad

Este archivo servirá para exportar archivos planos para la respectiva

contabilización en el sistema de contabilidad.

Damos clic en ARCHIVO TEXTO PARA CONTABILIDAD, nos

aparece esta ventana y debemos seleccionar la fecha inicial y la

fecha final que deseamos exportar, así como desde que sucursal

hasta que sucursal.

29

2.2.8. Creación de Platos

Para la creación de platos nos basamos en lo ingresado en

Mantenimiento de productos y servicios; esto es en el momento de

realizar la búsqueda de los componentes del plato a preparar.

Se accede de la siguiente manera:

Damos clic en CREACION DE PLATOS y procedemos a detallar los

ingredientes que automáticamente detallaran sus valores

30

2.3. Consultas / Reportes

Los reportes comprenden todos los documentos de los registros y

archivos de las transacciones. Esta salida de información sirve para

la toma de decisiones ya sea de manera visual o impresa.

2.3.1. Reporte de Servicios

Encontramos los reportes de ticket por fecha y los reportes de

personal trainer

2.3.1.1. Ticket por Fecha Podremos apreciar un reporte de los tickets que se hayan emitido

por fechas de los diferentes servicios (bronceados, masajes, locker,

etc) que ofrece el gimnasio

31

Damos clic en TICKETS POR FECHAS, se nos despliega la

siguiente ventana

Debemos elegir de que fecha a que fecha queremos consultar y

elegir el tipo de servicio

32

2.3.1.1.1. Tipo de Servicio Personal Trainer por Fecha

Elegimos el reporte para personal trainer, debemos indicar de que

fecha a que fecha queremos consultar, una vez que lo definimos

damos clic en el botón imprimir. Saldrá impreso el reporte como a

continuación podemos observar.

33

2.3.1.1.2. Reporte de Pilates por fecha

Elegimos el reporte de pilates por fecha, debemos indicar de que

fecha a que fecha queremos consultar, una vez que lo definimos

damos clic en el botón imprimir. Saldrá impreso el reporte como a

continuación podemos observar.

34

2.3.1.1.3. Reporte de bronceados por fecha Elegimos el reporte de bronceados por fecha, debemos indicar de

que fecha a que fecha queremos consultar, una vez que lo definimos

35

damos clic en el botón imprimir. Saldrá impreso el reporte como a

continuación podemos observar.

2.3.1.1.4. Reporte de masajes por fecha Elegimos el reporte de masajes por fecha, debemos indicar de que

fecha a que fecha queremos consultar, una vez que lo definimos

36

damos clic en el botón imprimir. Saldrá impreso el reporte como a

continuación podemos observar.

2.3.1.1.5. Reporte de parqueo por fecha

Elegimos el reporte de parqueo por fecha, debemos indicar de que

fecha a que fecha queremos consultar, una vez que lo definimos

37

damos clic en el botón imprimir. Saldrá impreso el reporte como a

continuación podemos observar.

38

2.3.1.1.6. Reporte de locker por fecha

Elegimos el reporte de locker por fecha, debemos indicar de que

fecha a que fecha queremos consultar, una vez que lo definimos

damos clic en el botón imprimir. Saldrá impreso el reporte como a

continuación podemos observar.

39

2.3.1.2. Reporte de Personal Trainer

Presenta el reporte de los turnos que han tenido los personal trainer

y detallan el nombre de los clientes. Constan los campos horas,

fecha, cedula y nombre del cliente y el tipo de membresía. Al final

muestra el total de clientes que ha tenido cada entrenador.

Damos clic en REPORTE DE PERSONAL TRAINER y nos aparece

el siguiente cuadro donde indicamos la fecha inicial y fecha final de

búsqueda y asignamos la búsqueda por código del personal trainer.

40

Continuamos dando clic en imprimir y nos presenta el reporte

agrupados por personal trainer indicándonos a cuantos socios a

atendido durante las fechas que seleccionamos.

2.3.2. Reporte de Clientes

Veremos todos aquellos reportes que tienen que ver con los

movimientos de los clientes.

Tenemos los siguientes:

41

2.3.2.1. Reporte Clientes por Sexo

Accedemos de la siguiente manera:

Damos clic en REPORTE CLIENTES X SEXO y nos aparece

directamente el reporte clasificado en dos grupos (sexo masculino y

sexo femenino) con sus respectivos totales de socios.

42

43

2.3.2.2. Reporte Clientes por Secuencia

Nos indica el listado de los socios con sus respectivos datos de

acuerdo a la secuencia que han tenido.

Damos clic en REPORTE CLIENTES POR SECUENCIA y

tendremos nuestro reporte

44

2.3.2.3. Reporte Clientes por Tipo de Membresía

El Listado que nos aparecerá detallará los clientes de acuerdo a la

membresía que tienen, los separará en bloques indicando el total de

socios.

45

2.3.2.4. Listado de Clientes Activos

Mostrará el listado de los socios que se encuentran al día es decir

que el pago que hicieron (la membresía que tienen) se encuentra

vigente. Este reporte podría servir de ayuda cuando queremos hacer

un sondeo para llamar a las personas que ya ingresaron por primera

vez al gimnasio y no han renovado su membresía.

46

2.3.2.5. Reporte de Asistencia de Socios

Seleccionamos del menú principal como indica el grafico hasta dar

clic en Reporte de Asistencia de Socios.

De ahí se nos presenta la siguiente pantalla donde debemos indicar

de que fecha (inicial) hasta que fecha (final) y desde que número de

cédula hasta que número de cédula queremos buscar.

47

Una vez definido los campos damos clic en imprimir y se nos

muestra el reporte que se imprimirá.

Presenta el reporte de los socios de su asistencia al gimnasio

detallando la hora, fecha y el tipo de membresía que tienen.

48

2.3.3. Reporte de Ventas

Ingresamos de la manera como nos indica el gráfico, podemos notar

que existe un desglose en REPORTE DE VENTAS, como: Diario de

ventas, ventas por forma de pago, ventas por producto, ventas por

banco, ventas por meses, ventas por vendedor, ventas por tarjeta,

ventas por hora.

2.3.3.1. Diario de Ventas

Muestra un reporte detallado de las ventas que se encuentran en el

lapso de tiempo detallado en la fecha de inicio y fin. El reporte

constas de sucursales, vendedor, cliente, nombre del cliente,

subtotal, descuentos, impuesto, total efectivo, cheque, tarjeta y

crédito.

49

Se nos presenta la siguiente pantalla donde debemos indicar las

fechas de búsqueda tanto de inicio y final, así como de cuales

sucursales queremos el reporte.

Una vez definido los campos damos clic en el botón imprimir y nos

muestra el reporte, para su posterior impresión.

50

2.3.3.2. Ventas por Forma de Pago

El reporte presentará bloques de información por sucursales donde

se detalla el vendedor y las diferentes formas de pago.

De igual manera indico fechas de inicio y fin, así como defino las

sucursales.

51

52

2.3.3.3. Ventas por Producto

Nos muestra el listado de los productos vendidos por sucursales, al

final muestra el total de lo vendido en cada una. Detalla código,

nombre, cantidad, venta neta.

Definimos de que fecha a que fecha queremos el reporte

53

Damos clic en imprimir y nos muestra el reporte

2.3.3.4. Ventas por Banco Este reporte presenta las ventas que se han hecho en las diferentes

sucursales y que nos han pagado con cheques de diferentes

bancos. Se agrupan por sucursales y en cada sucursal se agrupan

por bancos, mostrando el total en cada banco.

54

Definimos de que fecha a que fecha queremos el reporte

55

2.3.3.5. Ventas por Meses

El reporte nos presenta las ventas hechas en diferentes sucursales

(de acuerdo a las que se indiquen), agrupará las ventas por meses y

mostrará el total en cada sucursal.

Definimos de que fecha a que fecha deseamos el reporte

56

2.3.3.6. Ventas por Vendedor

Nos pedirá que ingresemos fecha de inicio y fin, sucursales y

definamos los vendedores para consultar las ventas que han tenido.

Este reporte detallará en grupos de sucursales los vendedores con

sus respectivas ventas y al final mostrará el total general.

57

Detallamos de que fecha hasta que fecha deseamos el reporte

58

2.3.3.7. Ventas por Tarjeta

Presenta las ventas que se han hecho clasificadas por grupos de

tarjetas de crédito y muestra el total de cada venta. Constan los

rubros fecha, valor, cliente, # de tarjeta y lote.

Detallamos de que fecha hasta que fecha deseamos el reporte

59

2.3.3.8. Ventas por Hora

Detalla las ventas (cantidad) realizadas por horas en cada sucursal y

nos muestra la suma total.

60

Detallamos de que fecha a que fecha deseamos el reporte así como de

que sucursal

61

2.3.4. Reporte de Platos

Detalla por bloques los platos preparados donde indican los

ingredientes, medida, cantidad costo y precio. Se refleja el valor del

costo y el valor del precio al público.

Se ingresa desde que código hasta que código de plato se quiere

consultar.

62

63

2.3.5. Reporte de Combos

Detalla en que consiste cada combo el valor de cada uno de sus

componentes y el valor total.

Se ingresa desde que código hasta que código de combo se quiere

consultar.

64

2.3.6. Reporte de Platos VS. Costos

Nos presentará un reporte separado en bloques por platos,

detallándonos sus componentes y el número de factura donde se

cobró el valor total.

65

Indicamos las fechas y las sucursales que deseamos consultar

66

2.3.7. Reporte Compras Socios por Montos

Presenta el reporte detallando número de registro, total en orden

ascendente, cédula y nombre del cliente.

Damos clic en Reporte Compras Socios por Montos, de ahí nos

aparece la siguiente pantalla.

Indicamos fecha de inicio y fin de la consulta, así como los montos

que deseamos consultar.

67

2.3.8. Listado de Provincias y Ciudades. Lista todas las ciudades que se encuentran ingresadas en el

sistema.

68

69

CAPITULO 3

3. MÓDULO SEGURIDAD

Este módulo da mantenimiento a las tablas que se refieren y se

relacionan con procesos de administración de usuarios, restricción

de accesos, actualización de claves.

3.1. Mantenimiento 3.1.1. Usuarios Este Catálogo sirve para poder controlar quienes son las personas

encargadas del manejo del sistema es decir los que se encuentran

en el counter, máquina 1, personal.

Se ingresa de la siguiente manera

70

Damos clic en usuarios y se nos presenta la siguiente pantalla:

Una vez en esa ventana podemos ingresar un nuevo usuario

(vendedor) dando clic en el icono INGRESAR, se habilitarán los

campos para ser llenados, una vez ingresados todos los datos

grabamos

71

Para modificar algún usuario ya existente damos clic en buscar, nos

aparecerá una nueva ventana llamada BUSQUEDA GENERAL

donde se podrá buscar por código o nombre y en diferentes criterios

(mayor que, menor que, equivalente, diferente). Una vez dispuesta la

búsqueda nos aparecerá la ventana así:

En esa pantalla nos detallan los nombres de los diferentes usuarios,

podemos seleccionar uno de ellos dando doble clic en el nombre o

cedula.

3.1.2. Sucursales

Sirve cuando un gimnasio a parte de su matriz tiene sucursales en

otros sectores se crean de acuerdo a los locales que se creen, por

72

ejemplo tenemos 4 sucursales a las que le ponemos el estado de

activo o inactivo. El estado permitirá que dicha sucursal pueda o no

manejar transacciones.

Para modificar el estado de una sucursal ya existente damos clic en

modificar, ahí se habilita el casillero y escogemos la opción

ACTIVO- INACTIVO.

Para ingresar una nueva sucursal damos clic en INGRESAR.

ponemos el nombre y le damos el estado de activo o inactivo.

73

3.1.3. Parámetros

Define los datos de la empresa a la cual pertenecerá el sistema, la

sucursal en la que se encuentra, el tipo de caja. Se podrá definir el

IVA que utilizará y de ser el caso el tipo de descuento con el que

contará. Estos datos los podrá manejar solamente el personal

autorizado.

74

3.1.4. Cajas

Para modificar el estado de una caja ya existente damos clic en

modificar, ahí se habilita el casillero y escogemos la opción

ACTIVO- INACTIVO.

Para ingresar una nueva opción (otra caja) damos clic en

INGRESAR.

Los tipos de cajas que hay son:

Personal

Maquina 1

Counter

Estos son puestos de traque que se los identifica como cajas. Ingresamos la descripción y le damos el estatus de activo o inactivo

75

3.2. Procesos 3.2.1. Permiso por Usuario Accedemos de la siguiente manera:

Una vez que damos clic en Permiso por Usuario, se nos presenta la

pantalla que abajo se indica, en la cual se busca el usuario al que

queremos asignar o restringir las opciones en el sistema.

76

Una vez elegido el usuario, se despliega la lista donde constan las

opciones que se pueden permitir o restringir, el nombre del

formulario y la observación (es decir que podrá hacer), también hay

otra columna de la fecha de creación de la opción y una columna de

ACCESO donde debemos dar visto que significa activado o dejar en

blanco que significa inhabilitado.

Dando clic en el botón grabar se guardan los cambios.

77

3.2.2. Horarios

Se detallaran los horarios que se deben regir, ingresamos de la

siguiente manera:

78

3.3. Consultas / Reportes 3.3.1. Consulta de Usuarios

Accedemos al menú de la siguiente manera

Dando clic en CONSULTA USUARIOS aparece el reporte

detallando todos los usuarios designados con su estado (activo o

inactivo), quienes se encargarán de manejar el sistema.

79

3.3.2. Consulta Permisos por Usuario Accedemos al menú de la siguiente manera

Dando clic en CONSULTA PERMISO POR USUARIOS aparece el

reporte donde se nos indica las opciones de accesos y restricciones

que tenemos para darles a los usuarios.

80

3.3.3. Consulta Reporte de Horarios Accedemos al menú de la siguiente manera

Dando clic en REPORTE DE HORARIOS y nos presenta la siguiente

pantalla donde indicamos de donde a donde queremos el reporte de

los horarios

Damos clic en imprimir y nos aparece el reporte donde se nos indica

los horarios creados de los diferentes servicios.

81

82

CAPITULO 4

4. MODULOS INVENTARIO

4.1. Mantenimiento 4.1.1. Directorio de Productos y Servicios

En este paso vamos a controlar el stock de los productos para la

elaboración de platos, veremos los servicios, los combos que se

pueden ofrecer. Podemos ingresar más variedad, sus costos, definir

su precio a la venta.

En la factura nos servirá para poder controlar si lo que el socio

desea en el caso de alguna comida si tenemos en stock o no.

Damos clic en DIRECTORIO DE PRODUCTOS y se nos presenta la

siguiente pantalla

83

La pantalla se divide en dos; de un lado aparecerá los servicios

existentes, los combos elaborados, los platos, los servicios. En este

ejemplo notamos que existe un combo por el día de la madre (es un

servicio) que tiene una membresía trimestral y cuesta $175.00. Este

combo lo podemos modificar haciendo clic en el botón MODIFICAR.

84

En este segundo ejemplo hemos llamado a un producto terminado,

pudiendo ver su costo y precios.

También podemos ingresar un nuevo servicio dando clic en el botón

INGRESAR, se habilitarán las celdas y procederemos a llenar.

Referente a los precios: Precio 1.- Es el precio normal para cualquier

85

persona. Precio 2.- Es el segundo precio que normalmente se lo dan

a los empleados.

4.2. Procesos

4.2.1. Ingreso de Productos

Se ingresan los productos que llegan para la cafetería o pueden ser

también el registrar maquinarias o servicios nuevos que se presten.

Ingresamos al sistema de la siguiente manera:

Damos clic en ingreso de productos y se nos presenta el siguiente cuadro,

procedemos a llenar sus campos indicando los precios y costos, tenemos

la opción de búsqueda para indicar que proveedor es.

86

4.2.2. Egreso de Productos

Se registran los egresos de los productos que salen del gimnasio,

pueden ser productos de cafetería, maquinarias.

Ingresamos al sistema de la siguiente manera:

87

Damos clic en egreso de productos y se nos presenta el siguiente cuadro,

procedemos a llenar sus campos indicando los precios y costos, tenemos

la opción de búsqueda para indicar a que proveedor pertenece.

4.3. Consultas / Reportes

4.3.1. Existencia de Productos

Ingresamos la fecha de inicio y fin de la consulta que queremos

hacer, nos ayuda para saber cuanto hay o cuanto hubo de existencia

de los productos terminados.

El reporte nos presenta el código, el nombre y la cantidad que hay

en stock.

88

En este cuadro detallamos la fecha inicial y la fecha final de ahí damos clic

en imprimir

Se nos presenta el siguiente reporte

89

4.3.2. Movimientos de Productos por Tipo Detalla por bloques de productos (membresía anual, combos, platos)

los movimientos realizados desglosados por fecha, tipo, cantidad y

sumatoria.

En este cuadro detallamos la fecha inicial y la fecha final de ahí

damos clic en imprimir

Se nos presenta el siguiente reporte

90

4.3.3. Reporte de Productos

Este reporte muestra los productos que tiene el gimnasio, ordenados

de acuerdo a las instrucciones que digitemos, estas pueden ser por

código, nombre, tipo y por fecha de creación.

91

Detalla el nombre del producto, el tipo, la fecha, el costo, el precio,

porcentaje de iva y el estado.

Se puede elegir el campo por el cual queremos ordenar el reporte 1.-

código; 2.- por nombre; 3.-por tipo; 4.-por fecha de creación.

Damos clic en imprimir y nos presenta los reportes.

92

Reporte ordenado por código

Reporte ordenado por nombre

93

Reporte ordenado por tipo Reporte ordenado por fecha de creación

94

CAPITULO 5

5. SALIDA DEL SISTEMA

En el menú archivo encontramos el submenú salir damos clic en esa

opción y salimos del sistema.

UNIVERSIDAD DE GUAYAQUIL

Facultad de Ciencias Matemáticas y Físicas

Carrera de Ingeniería en Sistemas Computacionales

Sistema para Controlar el Acceso a Gimnasios

TESIS DE GRADO

Previo a la Obtención del Título de:

INGENIERO EN SISTEMAS COMPUTACIONALES

MANUAL DE USUARIO

Autores:

Mariuxi Rodríguez Jurado Richard Sánchez Pincay

GUAYAQUIL – ECUADOR

Año: 2007

INDICE GENERAL

CAPITULO 1

1. Acceso al Sistema 1

1.1. Menú Principal 1-2

CAPITULO 2

2. Módulo Facturación 3

2.1. Mantenimiento

2.1.1. Ingreso de Cliente (Directorio de Socios) 3-5

2.1.1.1. Tipo de Cliente 5

2.1.1.1.1. Cliente 5

2.1.1.1.2. Empleado 5

2.1.1.1.3. Proveedor 6

2.1.1.1.4. Usuario 6

2.1.1.2. Membresía 6

2.1.1.2.1.Semanal 6

2.1.1.2.2. Mensual 6

2.1.1.2.3. Trimestral 6

2.1.1.2.4. Semanal 7

2.1.1.2.5. Anual 7

2.1.1.2.6. Gold 7

2.1.1.2.7. Limited 7

2.1.1.2.8. Otras Membresías 7

2.1.1.3. Guía 7

2.1.1.4. Caducidad de la Membresía 8

2.1.2. Catálogo de Tarjetas de Crédito 8-10

2.1.3. Provincias y Ciudades 10-11

2.2. Procesos 12

2.2.1. Facturas 12-15

2.2.2. Devoluciones (Nota de Crédito) 15-18

2.2.3. Lectura de Marcadas 18-19

2.2.4. Creación de Combos 19-20

2.2.5. Ticket de Servicios 21

2.2.5.1. Ticket Personal Trainer 21-22

2.2.5.2. Ticket Pilates 22-23

2.2.5.3. Tickets Masajes 23-24

2.2.5.4. Ticket Bronceados 24

2.2.5.5. Ticket de Locker 25

2.2.5.6. Ticket de Parqueo 25-26

2.2.6. Exportar Archivo DBF 27

2.2.7. Archivo texto para Contabilidad 28

2.2.8. Creación de Platos 29

2.3. Consultas / Reportes 30

2.3.1. Reporte de Servicios 30

2.3.1.1. Ticket por Fecha 30-31

2.3.1.1.1. Tipo de Servicio Personal Trainer por Fecha 32-33

2.3.1.1.2. Reporte de Pilates por fecha 33-34

2.3.1.1.3. Reporte de bronceados por fecha 34- 35

2.3.1.1.4. Reporte de masajes por fecha 35-36

2.3.1.1.5. Reporte de parqueo por fecha 36-37

2.3.1.1.6. Reporte de locker por fecha 38

2.3.1.2. Reporte de Personal Trainer 39-40

2.3.2. Reporte de Clientes 40-41

2.3.2.1. Reporte Clientes por Sexo 41-42

2.3.2.2. Reporte Clientes por Secuencia 43

2.3.2.3. Reporte Clientes por Tipo de Membresía 44

2.3.2.4. Listado de Clientes Activos 45

2.3.2.5. Reporte de Asistencia de Socios 46-47

2.3.3. Reporte de Ventas 48

2.3.3.1. Diario de Ventas 48-50

2.3.3.2. Ventas por Forma de Pago 50-51

2.3.3.3. Ventas por Producto 52-53

2.3.3.4. Ventas por Banco 53-54

2.3.3.5. Ventas por Meses 55-56

2.3.3.6. Ventas por Vendedor 56-57

2.3.3.7. Ventas por Tarjeta 58-59

2.3.3.8. Ventas por Hora 59-61

2.3.4. Reporte de Platos 61-62

2.3.5. Reporte de Combos 63-64

2.3.6. Reporte de Platos VS. Combos 64-65

2.3.7. Reporte Compras Socios por Montos 66-67

2.3.8. Listado de Provincias y Ciudades 67-68

CAPITULO 3

3. Módulo Seguridad 69

3.1. Mantenimiento 69

3.1.1. Usuario 69-71

3.1.2. Sucursales 71-72

3.1.3. Parámetros 73

3.1.4. Cajas 74-75

3.2. Procesos 75

3.2.1. Permisos por usuario 75-76

3.2.2. Horarios 77

3.3. Consultas / Reportes 78

3.3.1. Consulta de Usuarios 78

3.3.2. Permiso por Usuario 79

3.3.3. Consulta Reporte de Horarios 80-81

CAPITULO 4

4. Modulo Inventario 82

4.1. Mantenimiento 82

4.1.1. Directorio de Servicios y Productos 82-85

4.2. Procesos 85

4.2.1. Ingreso de Productos 85-86

4.2.2. Egreso de Productos 86-87

4.3. Consulta / Reporte 87

4.3.1. Existencia de Productos 87-88

4.3.2. Movimientos de Productos por Tipo 89-90

4.3.3. Reporte de Productos 90-93

CAPITULO 5

5. Salida del Sistema 94