Вы находитесь на странице: 1из 112

UNIVERSIDAD NACIONAL DEL ALTIPLANO

FACULTAD DE INGENIERA ESTADSTICA E INFORMTICA


ESCUELA PROFESIONAL DE INGENIERA ESTADSTICA E INFORMTICA

PROTOTIPO DE SISTEMA DE ADMINISTRACIN PARA LA GESTIN DE UNA EMPRESA IMPORTADORA Y EXPORTADORA DE JULIACA 2010

TESIS
PRESENTADA POR: Bach. YOJHANA CINDY PUMA MAMANI PARA OPTAR EL TITULO DE: INGENIERO ESTADSTICO E INFORMTICO
PUNO PERU 2011

UNIVERSIDAD NACIONAL DEL ALTIPLANO


FACULTAD DE INGENIERA ESTADSTICA E INFORMTICA
ESCUELA PROFESIONAL DE INGENIERA ESTADSTICA E INFORMTICA

PROTOTIPO DE SISTEMA DE ADMINISTRACIN PARA LA GESTIN DE UNA EMPRESA IMPORTADORA Y EXPORTADORA DE JULIACA 2010

TESIS
Presentada a la Coordinacin de Investigacin de la Facultad de Ingeniera Estadstica e Informtica de la Universidad Nacional del Altiplano Puno, Como Requisito Para Optar el Titulo Profesional de:

INGENIERO ESTADSTICO E INFORMTICO


PRESENTADA POR : Bach. YOJHANA CINDY PUMA MAMANI APROBADA POR:
PRESIDENTE DEL JURADO : __________________________________________________ Dr. PAREDES QUISPE, JUAN REYNALDO

PRIMER MIEMBRO

: __________________________________________________ Ing. MENDOZA MOLLOCONDO, CHARLES

SEGUNDO MIEMBRO

: ___________________________________________________ M. Sc. HUACASI VASQUEZ, LUIS HUGO

DIRECTOR DE TESIS

: ___________________________________________________ M. Sc. APAZA TARQUI, ALEJANDRO

ASESOR DE TESIS

: __________________________________________________ M. Sc. VILLASANTE SARAVIA, FREDY HERIC

EJECUTOR

: ___________________________________________________ Bach. PUMA MAMANI, YOJHANA CINDY

DEDICATORIA
Dedico la presente Tesis con mucho cario principalmente a mis padres Vicente y Elvira que me dieron la vida y han estado conmigo

en todo momento. Gracias por todo, por darme una m, carrera aunque para hemos mi futuro y por creer en

pasado

momentos

difciles

siempre han estado apoyndome

y brindndome

todo su amor, por todo esto les agradezco de todo corazn el que estn conmigo.

Yojhana.

AGRADECIMIENTO

la

Facultad e

de

Ingeniera de del

Estadstica la

Informtica Nacional

Universidad

Altiplano de Puno, por haberme formado profesional.

mis

verdaderos las

amigos aulas

con

quienes

compartimos

universitarias

los que me apoyaron en todo momento, Un infinito reconocimiento Mi por mas la de todo

corazn. agradecimiento estmulo todos y

profundo colaboracin, a

crtica qu la

constructiva de alguna

quienes, en

forma del

participaron

realizacin

presente proyecto de tesis

De manera muy especial quiero agradecer a mi amigo Pedro Laura Murillo sin su apoyo este trabajo no sera lo que es.

NDICE
DEDICATORIA AGRADECIMIENTO NDICE RESUMEN CAPITULO I ....................................................................................................................... 9 PLANTEAMIENTO TERICO DE LA INVESTIGACIN ............................................................... 9 1.1. INTRODUCCIN .................................................................................................. 10 1.2. PLANTEAMIENTO DEL PROBLEMA. ............................................................................ 10 1.3. JUSTIFICACION DE LA INVESTIGACIN .................................................................... 11 1.4. OBJETIVOS DE LA INVESTIGACIN ......................................................................... 11 CAPITULO II .................................................................................................................... 12 MAR C O TE R IC O ........................................................................................................... 13 2.1. ANTECEDENTES DE LA INVESTIGACIN ................................................................... 13 2.2. BASE TERICA........................................................................................................ 13 2.2.1. SISTEMAS DE INFORMACIN................................................................................. 13 2.2.2. INGENIERA DE SOFTWARE ................................................................................... 14 2. 2 . 3. ME TO D OL O GA S DE DE S AR R O L LO DE S OF T WAR E ................................... 14 2. 2 . 4. ME TO D OL O GA XP ......................................................................................... 15 2. 2 . 5. D E S AR R O L LO E S TR UC T UR AD O .................................................................... 15 2. 2 . 6. PR O GR AMA CI N OR IE N T AD O A OB JE T OS ................................................. 17 2.2.7. CICLO DE VIDA DEL SOFTWARE ............................................................................ 20 2.2.7.1. MODELO ESPIRAL .............................................................................................. 21 2.2.8. LENGUAJE DE PROGRAMACIN ............................................................................. 22 2.2.9. C++ BUILDER ....................................................................................................... 23 2.2.10. BASE DE DATOS .................................................................................................. 24 2.2.11. SQL .................................................................................................................... 24 2.2.12. MySQL ................................................................................................................ 24 2.3. MARCO CONCEPTUAL ............................................................................................... 26 CAPITULO III .................................................................................................................. 29 M A T E R I A L E S Y M T O D O S ............................................................................................ 29 3.1. LOCALIZACIN ....................................................................................................... 29 3.2. POBLACIN ............................................................................................................. 29 3.3. MUESTRA ................................................................................................................ 29 3.4. OPERACIONALIZACION DE VARIABLES ..................................................................... 30 3.5. METODOLOGA Y PROCEDIMIENTOS ........................................................................ 30 3.6. DESARROLLO DEL SOFTWARE .................................................................................. 31

3.6.1. PLANIFICACIN .................................................................................................. 31 3.6.2. ANLISIS DE RIESGOS .......................................................................................... 31 3.6.3. INGENIERA .......................................................................................................... 32 3.6.4. VALIDACIN DEL SISTEMA .................................................................................... 33 3.6.5. MANTENIMIENTO .................................................................................................. 33 3 . 6 . 6 . R E C U R S O S COMPUTACIONALES PARA LA CONSTRUCCIN Y OPERACIN DEL PROTOTIPO DE SISTEMA ................................................................................................ 33 CAPITULO IV ................................................................................................................... 35 R E S U L T A D O S Y D I S C U S I N ......................................................................................... 35 4.1. DISEO DEL SISTEMA .............................................................................................. 35 4.1.1. DESCRIPCIN DE CLASES Y OBJETOS .................................................................... 35 4.1.2. ELABORACIN DE DIAGRAMAS DE CASO DE USO ................................................... 36 4.1.3. ELABORACIN DE ESCENARIO .............................................................................. 38 4.1.4. DIAGRAMA DE INTERACCIN ................................................................................ 40 4.1.5. DIAGRAMA DE FLUJO DE DATOS ........................................................................... 41 4.1.6. DISEO POR ETAPAS ............................................................................................ 42 4.2. DISEO DE LA BASE DE DATOS ................................................................................ 43 4.2.1. DIAGRAMAS DE CLASE .......................................................................................... 43 4.2.2. MODELO DE BASE DE DATOS ENTIDAD RELACIN ................................................. 45 4.3. INSTALACIN ....................................................................................................... 46

4.4. CAPACITACIN Y PRUEBAS EN MARCHA ................................................................... 46 4.5. PRUEBAS DEL SISTEMA ............................................................................................ 46 4.6. RESULTADOS DE LA ENCUESTA DE EVALUACIN ...................................................... 48 CAPITULO V ..................................................................................................................... 51 C O N C L U S I O N E S Y R E C O M E N D A C I O N E S ..................................................................... 51 5.1. CONCLUSIONES ....................................................................................................... 51 5.2. RECOMENDACIONES ................................................................................................ 53 BIBLIOGRAFIA ................................................................................................................ 54 REFERENCIAS INTERNET ............................................................................................... 55 ANEXOS .......................................................................................................................... 56

RESUMEN 7

El

presente

trabajo

de

i n v e s t i ga c i n

t i t u l a do

PROTOTIPO

DE

SISTEMA

DE

ADMINISTRACIN PARA LA GESTIN DE UNA EMPRESA DE JULIACA, Aplicado a la e m pr e s a i m po r t a do r a y e x po r t a do r a R i v e r d B a l d de J u l i a c a 2 0 1 0 , es t a o r i en t a do a l a i m pl e m e n t a c i n de a pl i c a c i o n e s i n f o r m a t i c a s d e i n g en i er a d e so f t w a r e u t i l i z a n do l a m e t o do l o g a m a s a de c u a d a P r o g r a m a c i n E x t r e m a ( X P ) , t i en e po r o b j e t i v o pr i n c i p a l d e s a r r o l l a r u n p r o t o t i po d e s i s t e m a d e a dm i n i s t r a c i n qu e a y u de e f i c i en t e m e n t e a l bu e n d e s e m p e o d e l a a d m i n i s t r a c i n d e l a e m pr e s a R i v er d B a l d, e l m i sm o s er v i r

c o m o h e r r a m i e n t a p a r a l a t o m a de d e si c i o n e s d e l a em pr e sa en f o r m a i n m e di a t a .

E l s i s t e m a s e d e s a r r o l l o e n u n l e n gu a j e d e p r o gr a m a c i n C + + B u i l de r c r e a n do l a b a s e de datos en MySQL s o br e la qu e se i m pl em en t o aplicaciones ba s a do en el

conocimiento y

m e c a n i s m o s d el pr o c e so d e l a a dm i n i s t r a c i n

d e l a e m p r es a ,

c o n s t r u y e n do pr o t o t i po s o r i e n t a do a o bj e t o s p a r a l a s i s t em a t i z a c i n d e l o s p r o c e so s qu e l a e m p r e s a e f e c t u a m a n u a l m e n t e.

P a r a e l d e s a r r o l l o d e l s i s t e m a s e a pl i c t c n i c a s c o m o l a en t r ev i st a d i r e c t a y v i s i t a s gu i a d a s po r e l a d m i n i s t r a do r a l a e m p r es a p a r a po d er c a pt u r a r c o n o c i m i en t o s y e x p e r i e n c i a s d e l o s e m pl e a do s , y l u e go d e s a r r o l l a r a l go r i t m o s d e pr o gr a m a c i n en f o r m a d e i n t e r f a s e s e r go n o m i c a s c a pa c e s de s er a d a pt a bl e s a l u su a r i o .

E s t e t r a b a j o f i n a l m e n t e l l e go a l a s si gu i en t e s c o n c l u si o n e s l a i m pl e m en t a c i n d el sistema a m e j o r a do la administracin d el rea de v en t a s p er m i t i en do t en er

i n f o r m a c i n a c t u a l i z a d a d e l o s pr o du c t o s, m ej o r el r e a d e a l m a c n pr o po r c i o n a n do i n f o r m a c i n r e a l y a c t u a l i z a d a d e l o s pr o du c t o s d e l a em p r e s a .

E n e l r e a d e p r o v e e do r e s n o s pe r m i t e c o n o c e r l o s t i po s d e pr o du c t o s q u e p r o v e e l o s pr e c i o s c o n l o qu e e l a d m i n i s t r a do r pu ed e t o m a r u n a d e si c i n i n m e di a t a a qu e pr o v e e d o r d e b e d e c o m p r a r .

E n e l d e s a r r o l l o d e l s i s t e m a s e i m pl em en t o u n a B a s e d e D a t o s en M y S Q L po r qu e e s u n s o f t w a r e l i b r e l a f a c i l i d a d de su u so l a f l ex i bi l i d a d en d i f er e n t e s s i st em a s

o p e r a t i v o s h a c e n m u y p o pu l a r e s t a b a se d e d a t o s a l m a c en a g r a n c a n t i d a d d e l n e a s, m a n e j a n do gr a n c a n t i d a d d e c a p a c i d a d d e a l m a c en a j e.

P a r a e l di s e o d e l a i n t e r f a z de l s i st em a se u t i l i z e l t i po d e i n t er f a z

gr f i c a d e

u s u a r i o qu e p e r m i t e c o m u n i c a r s e c o n el o r d en a d o r d e u n a f o r m a r p i da , i n t u i t i v a u t i l i z a n do r e pr e s e n t a c i o n e s visuales y gr a f i c a s, v en t a n a s, c u a dr o s de d i l o go ,

bo t o n e s y c o m a n do s . L a s s e l e c c i o n e s pu ed en a c t i v a r s e bi en a t r a v s d el t ec l a do o c o n e l r a t n e s t a s i n t e r f a c e s s o n i n d e p en di en t e s d e l o s di s po si t i v o s d e en t r a d a y s a l i d a e l s i s t e m a pu e d e u t i l i z a r l a s s i n n ec e si d a d d e c a m bi o s. D e e s t a m a n er a s e l o g r construir el pr o t o t i po de a dm i n i st r a c i n pa r a la g e st i n de la i m po r t a do r a y

e x po r t a do r a R i v e r B a l d d e J u l i a c a .

CAPITULO I
PLANTEAMIENTO TERICO DE LA INVESTIGACIN 9

1.1. INTRODUCCIN E n l o s l t i m o s a o s l a e v o l u c i n d el h a r dw a r e y so f t w a r e h a v en i do c r e c i en do a pa so s a g i ga n t a do s . E n l a s o c i e d a d d e l a i n f o r m a c i n en l a qu e se v i v e , ex i s t e u n a n e c e s i d a d c r e c i e n t e d e t en er u n c o n o c i m i e n t o c a d a v e z m a y o r de l en t o r n o e n qu e u n o s e r o d e a . E s t e c o n o c i m i en t o e x i g e qu e e sa i n f o r m a c i n s e a l o m a s r e c i e n t e y v e r a z po s i bl e . L o s s i s t e m a s i n f o r m t i c o s so n u n c o n j u n t o d e p r o c e d i m i en t o s, p er so n a s y e qu i po s qu e p e r m i t e n a u n a o r g a n i z a c i n c a p t u r a r d a t o s, t r a n sf o r m a r l o s en i n f o r m a c i n y pr e s e n t a r l a en f o r m a a d ec u a da y o po r t u n a pa r a l a t o m a d e decisiones. T i e n e i m po r t a n c i a l a s i s t e m a t i z a c i n de l a i n f o r m a c i n d e l a s e m p r e s a s, e l r i t m o d e v i d a e x i g e u n a r e s p u e s t a c a si i n m e di a t a a l a s i n t en c i o n e s de c o m pr a d el c o n s u m i do r . U n o d e l o s pr i n c i p a l e s p r o b l e m a s qu e a qu e j a a l a s d i f er en t e s pe r so n a s n a t u r a l es y / o j u r di c a s e n e l r u br o de c o m p r a y v en t a d e pr o du c t o s, e s l a s i st em a t i z a c i n d e e s t o s . D e e l l o s u r g e l a v i si n de d e s a r r o l l a r u n s i s t em a d e a d m i n i st r a c i n pa r a l a m e j o r g e s t i n d e u n a em p r e s a , c o n l a i m p l em en t a c i n d e m du l o s c a p a c e s d e a l m a c e n a r i n f o r m a c i n r e qu er i da m a s a d e l a n t e po r e l u s u a r i o . E n l a p r e s e n t e i n v e s t i ga c i n , l a c o n st r u c c i n , i n st a l a c i n y pr u e b a s d e a dm i n i s t r a c i n , s e r e a l i z ba s e de datos en MySQL, d el si s t e m a

en el en t o r n o g r f i c o d e C + + B u i l de r c o n u n a se pl a n t e a t en er n i v el e s de a c c e so donde el

a d m i n i s t r a do r d e t e r m i n a e l a c c e so l i m i t a do p a r a c a d a u s u a r i o , el pr o c e so d e a d m i n i s t r a c i n c o m i e n z a c o n l a c o m pr a y v en t a d e u n p r o du c t o , g e n e r a n do r e s pu e s t a s d e l a s v e n t a s r e a l i z a d a s p a r a l o s r e po r t e s r equ e r i do s m a s a d el a n t e po r e l a dm i n i s t r a do r .

1.2. PLANTEAMIENTO DEL PROBLEMA. L a e m p r e s a i m po r t a do r a y e x po r t a do r a R i v e r B a l d d e J u l i a c a , s e de d i c a a l a c o m pr a y v e n t a d e pr o du c t o s, en l a a c t u a l i da d l l e v a u n control m a n u a l de

10

s u s v e n t a s , e l c u a l c o n l l e v a a u n pr o c e so l en t o y d e so r g a n i z a do a l m o m en t o de archivar la informacin. T a m bi n r e su l t a t e d i o so p a r a l o s em p l e a do s

r e a l i z a r i n f o r m e s i n m e di a t o s de l es t a do d e l a s v en t a s o e l st o c k n ec e s a r i o d e l o s pr o du c t o s .

L a e m pr e s a i m po r t a do r a y e x po r t a do r a R i v er B a l d. N o c u en t a c o n u n s i st em a a u t o m a t i z a do q u e f a c i l i t e u n a m e j o r g e st i n y a d m i n i st r a c i n d e l a s v en t a s

qu e r e a l i z a y a s e a a d i a r i o , se m a n a l o m en su a l . N o s e pu e d e o b t e n er u n r e po r t e i n m e di a t o p a r a t o m a r d ec i s i o n e s , pu e st o qu e en e l m o m en t o de r e a l i z a r l a s v e n t a s r e c i n s e v er i f i c a el s t o c k de l p r o du c t o po r l o m i s m o n o s e pu e de t o m a r de c i s i o n e s i n m e di a t a s po r q u e n o h a y u n r e po r t e a c t u a l i z a d o .

L u e go d e f o r m u l a r e l pr o bl em a su r g e l a s i gu i en t e i n t er r o g a n t e:

De

qu

manera

el

diseo

metodologa

para

el

desarrollo

del

prototipo de sistema de administracin perm itir gestionar empresa?

en la

1.3. JUSTIFICACION DE LA INVESTIGACIN L a i m pl e m e n t a c i n d e l p r o t o t i po d e si st e m a d e a d m i n i st r a c i n p a r a l a g e st i n d e l a e m pr e s a I m po r t a do r a y E x po r t a do r a R i v er B a l d de J u l i a c a . T en dr e f e c t o s f a v o r a bl e s , s e p u e d en m en c i o n a r l o s si g u i e n t e s , l a em pr e sa m a n ej a r una ba s e de al da t o s con el informacin si st e m a actualizada , br i n d a r es d ec i r , informacin st o c k de

accesible

momento,

po dr

r e po r t e s

d el

pr o du c t o s y l a s v e n t a s r e a l i z a da s en d i f er en t es p er i o do s.

L o s c l i e n t e s e s t a r n s a t i s f ec h o s d e u n m e j o r s er v i c i o , a d em s s e po d r a d m i n i s t r a r m e j o r s u n e go c i o a l m i sm o t i e m po qu e o bt i en e u n m ej o r c o n t r o l d e l o s p r o du c t o s y a u m e n t o d e l a r o t a c i n d e l i n v en t a r i o .

1.4. OBJETIVOS DE LA INVESTIGACIN 1 .4 .1 . O B J E T I V O G E N E R A L

11

Implementar e m pr e s a .

un

sistema

de

adminis tracin

pa r a

la

g e st i n

de

una

1 .4 .2 . O B J E T I V O S E S P E C F I C O S

D i s e a r e l p r o t o t i po d e s i s t em a d e a dm i n i st r a c i n p a r a l a g e st i n d e l a e m pr e s a i m po r t a do r a y ex po r t a do r a R I V E R B A L D .

M o d e l a r l a B a s e d e D a t o s p a r a el m a n ej o d e l a i n f o r m a c i n d e l a e m pr es a . D e s a r r o l l a r u n a i n t e r f a z er go n m i c a p a r a el si st e m a de a dm i n i st r a c i n .

CAPITULO II
12

MARCO TERICO

2.1. ANTECEDENTES DE LA INVESTIGACIN S e g n I n g. C i r o W a l t e r G o n z l e z P r ez e l S o f t w a r e d e G e s t i n d e I n f o r m a c i n pa r a la Administracin de N e go c i o a pl i c a do a una L i br er a ( T e s i s) de la

U n i v e r s i d a d N a c i o n a l d e l A l t i pl a n o m en c i o n a qu e l a a p l i c a c i n d e l a pr o g r a m a c i n m o du l a r p e r m i t i c o n s t r u i r u n so f t w a r e f o r m a do po r p a r t e s i n d e pe n d i en t e s, s e g n l a s n e c e s i d a de s e s t a b l e c i d a s e n e l a n l i si s d e r e qu er i m i en t o s, a l c a n z a n d o a s u n m a n e j o i n t e gr a d o d e s u s c o m p o n en t e s d e pr o gr a m a c i n m o du l a r es ( si s t e m a , movimientos, clientes, e inventario).

S e g n I n g. J i m J o s u P o r t o c a r r er o P r a do e l P r o t o t i po d e S i st em a I n f o r m t i c o d e A dm i n i s t r a c i n v a I n t e r n e t p a r a em pr e s a s d e t r a n s po r t e t er r es t r e d e c a r ga ( T e s i s ) de l a U n i v e r s i d a d N a c i o n a l d e l A l t i pl a n o m en c i o n a qu e s e h a l o gr a do i m pl e m e n t a r e l p r o t o t i p o u t i l i z a n do el I n t e r n et , s e a l l e v a do a c a bo l a e v o l u c i n c o n s e c u t i v a d e l pr o t o t i p o c a p a c i t a n d o a l p er so n a l y a r ef e r en c i a d e l o s c l i e n t e s s i e n do una herramienta en t i em po real ef i c i en t e de mejor control de los

m o v i m i e n t o s e f e c t u a do s e n e l r u br o t r a n s po r t e.

S e g n J u a n O s w a l d o E j e c . d e V e n t a s S i s t em a t i c e l S o f t w a r e d e G e st i n de N e go c i o s Comerciales y/o Servicios S i st em a t i c ( P a gi n a de I n t er n e t

h t t p: / / w w w . s i s t e m a t i c p e r u . c o m / ) E s u n S o f t w a r e P r c t i c o , E x a c t o qu e l e p er m i t i r t e n e r u n m e j o r c o n t r o l d e s u E m pr e s a . T i en e c o m o P r i n c i p a l e s C a r a c t e r st i c a s: e l c o n t r o l d e s a l do s d e M e r c a d er a ( K a r d ex ) . C o n t r o l d e C u en t a s po r c o br a r de c l i e n t e s , c o n t r o l d e s a l d o s d e e f ec t i v o en c a j a .

2.2. BASE TERICA 2.2.1. SISTEMAS DE INFORMACIN1

Sistemas de Informacin, Teora e implementacin, ROBERTO O. PROTUGAL, Pag. 17

13

E s u n c o n j u n t o d e pr o c e di m i en t o s, p er so n a s y eq u i po s qu e p er m i t en a u n a o r g a n i z a c i n c a pt u r a r d a t o s, t r a n s f o r m a r l o s en i n f o r m a c i n y p r es en t a r l a e n f o r m a a d e c u a d a y o po r t u n a pa r a l a t o m a d e dec i s i o n e s. 1

U n s i s t e m a d e i n f o r m a c i n d e be s er c a pa z d e r ea l i z a r o p e r a c i o n e s c o n l o s s i gu i e n t e s pr o p s i t o s , L l e n a r l a s n ec e si d a de s de l pr o c e s a m i e n t o d e da t o s c o r r e s po n d i e n t e s a l o s a s p ec t o s l e ga l es y o t r o s. P r o po r c i o n a r i n f o r m a c i n a l o s a d m i n i s t r a do r e s , e n a po y o d e l a s a c t i v i d a d es de pl a n ea c i n , c o n t r o l y t o m a de d e c i s i o n e s . U n s i st em a d e i n f o r m a c i n ej ec u t a t r e s a c t i v i da d e s generales:

E N T R A D A S : S o n l o s i n g r e s o s d e l s i st em a qu e p u e d en s e r r ec u r so s m a t e r i a l e s, r e c u r s o s h u m a n o s o i n f o r m a c i n . C o n st i t u y en l a f u e r z a d e a r r a n qu e qu e s u m i n i s t r a a l s i s t e m a s u s n ec e s i d a d e s o p er a t i v a s .

P R O C E S O : E s e l qu e t r a n sf o r m a u n a en t r a d a e n s a l i da , c o m o t a l pu ed e s e r u n a m qu i n a , u n i n d i v i d u o , u n a c o m pu t a do r a , u n p r o du c t o q u m i c o , u n a t a r ea r e a l i z a d a po r u n m i e m b r o de l a o r g a n i z a c i n .

S A L I D A S : s o n l o s r e s u l t a do s qu e s e o b t i en e d e pr o c e sa r l a s en t r a d a s. A l i gu a l q u e l a s e n t r a da s pu e de n a do pt a r l a f o r m a d e p r o du c t o s, s er v i c i o s e i n f o r m a c i n . L a s m i s m a s s o n e l r e su l t a do d el f u n c i o n a m i en t o de l s i st e m a o , a l t e r n a t i v a m e n t e , e l pr o p si t o p a r a el c u a l ex i s t e e l s i st em a .

2.2.2. INGENIERA DE SOFTWARE2

I n g e n i e r a d e s o f t w a r e e s l a a p l i c a c i n pr c t i c a d el c o n o c i m i en t o c i e n t f i c o a l d i s e o y construccin de p r o gr a m a s de c o m pu t a do r a y a la do c u m en t a c i n a so c i a d a

r e qu e r i da pa r a d e s a r r o l l a r , o pe r a r y m a n t en er l o s . S e c o n o c e t a m bi n c o m o D e sa r r o l l o d e S o f t w a r e o P r o du c c i n d e S o f t w a r e .

2 .2 . 3 . M E T O D O L O G A S D E D E S A R RO L L O D E S O F T W A R E

R. S. Pressman. McGraw Hill Higher Education. Ingeniera del software. Un enfoque prctico (sexta edicin), [ c i t a d o 1 6 d e j u n i o 2010].Disponible en el World Wide Web:< http://es.wikipedia.org/wiki/Ingenier%C3%ADa_de_software >

14

E n i n g e n i e r a d e s o f t w a r e e s u n m a r c o d e t r a ba j o u s a do pa r a e s t r u c t u r a r , pl a n i f i c a r y c o n t r o l a r e l p r o c e s o d e d e s a r r o l l o en s i st em a s d e i n f o r m a c i n . M E T O D O L O G A : C o n j u n t o de pr o c ed i m i en t o s, t c n i c a s, h er r a m i en t a s s o po r t e do c u m e n t a l qu e a y u d a a l o s d e s a r r o l l a do r e s a r e a l i z a r n u ev o so f t w a r e. T A R E A : A c t i v i da d e s e l e m e n t a l e s e n qu e s e d i v i d e n l o s pr o c e so s. P R O C E D I M I E N T O : D e f i n i c i n d e l a f o r m a d e e j ec u t a r l a t a r ea . T C N I C A : H e r r a m i e n t a u t i l i z a d a p a r a a p l i c a r u n pr o c e di m i en t o . H E R R A M I E N T A : P a r a r e a l i z a r u n a t c n i c a , po de m o s a po y a r n o s en s o f t w a r e qu e a u t o m a t i z a n s u a p l i c a c i n . P R O D U C T O : R e s u l t a do d e c a d a e t a p a . 2 .2 .4 . M E T O D O L O G A X P ( P r o g r a m a c i n E x t r e m a ) 3 l a s h er r a m i en t a s y un

L a p r o gr a m a c i n e x t r e m a o e x t r e m e p r o g r a m m i n g ( X P ) es u n en f o qu e d e l a i n g en i e r a d e s o f t w a r e f o r m u l a do po r k e n t b ec k , a u t o r de l pr i m er l i b r o s o b r e l a m a t er i a , E x t r e m e P r o gr a m m i n g E x p l a i n e d: E m b r a c e C h a n g e ( 1 9 9 9 ) . E s e l m s d e st a c a do d e l o s pr o c e s o s gi l e s de d e s a r r o l l o d e so f t w a r e. A l i gu a l qu e st o s, l a p r o g r a m a c i n e x t r e m a s e d i f e r e n c i a d e l a s m e t o do l o g a s t r a di c i o n a l es p r i n c i p a l m en t e en qu e po n e m s n f a s i s e n l a a da pt a bi l i d a d qu e en l a p r e v i s i bi l i d a d.

S e p u e d e c o n s i d e r a r l a pr o gr a m a c i n ex t r em a c o m o l a a do pc i n d e l a s m e j o r e s m e t o do l o g a s d e d e s a r r o l l o d e a c u er do a l o q u e s e pr e t en d e l l e v a r a c a bo c o n el pr o y e c t o , y a pl i c a r l o d e m a n e r a di n m i c a du r a n t e e l c i c l o d e v i da d el so f t w a r e.

2 .2 .5 . D E S A R R O L L O E S T R U C T U R A D O 4: E s u n a f o r m a de esc r i bi r pr o gr a m a s d e o r d e n a do r ( pr o gr a m a c i n de c o m pu t a do r a ) de manera clara. Para ello utiliza

n i c a m e n t e t r e s e s t r u c t u r a s : s e c u en c i a , s el ec c i n e i t e r a c i n .

2 .2 .5 .1 . E S P E C I F I C A C I N E S T R U C T UR A D A

http://es.wikipedia.org/wiki/Programaci%C3%B3n_extrema Garca-Bermejo Giner, Jos Rafael (2 de 2008) (en espaol). Programacin estructurada en C (1 edicin). Pearson Prentice Hall.

15

* DIAGRAMAS DE FLUJO D E DATOS: Un diagrama de flujo de datos (DFD po r s u s s i g l a s e n e s p a o l e i n gl s ) e s u n a r e pr e se n t a c i n gr f i c a p a r a l a m a c e t a de l " f l u j o " de da t o s a t r a v s de u n si s t e m a d e i n f o r m a c i n . U n di a gr a m a de f l u j o d e d a t o s t a m b i n se pu e d e u t i l i z a r p a r a l a v i su a l i z a c i n d e pr o c e s a m i e n t o de d a t o s ( di s e o e st r u c t u r a do ) . E s u n a pr c t i c a c o m n p a r a u n di s e a do r d i bu j a r un contexto a nivel de DFD qu e primero m u e st r a la

i n t e r a c c i n e n t r e e l s i s t e m a y l a s en t i d a d e s ex t er n a s. E st e c o n t ex t o a n i v el de DFD se " e x pl o t " pa r a m o st r a r ms d et a l l e s del s i st em a que se es t

m o d e l a n do .

* D I C C I O N A R I O D E D A T O S : U n di c c i o n a r i o de d a t o s es u n c o n j u n t o d e m e t a d a t o s qu e c o n t i e n e l a s c a r a c t er st i c a s l gi c a s y pu n t u a l e s d e l o s da t o s qu e s e v a n a u t i l i z a r e n e l s i s t em a qu e s e pr o gr a m a , i n c l u y en do n o m br e, d e s c r i pc i n , a l i a s , c o n t e n i do y o r g a n i z a c i n .

I d e n t i f i c a l o s p r o c e s o s do n d e s e e m pl e a n l o s d a t o s y l o s s i t i o s do n d e s e n e c e s i t a e l a c c e s o i n m e di a t o a l a i n f o r m a c i n , s e d e sa r r o l l a du r a n t e e l a n l i s i s d e f l u j o d e d a t o s y a u x i l i a a l o s a n a l i s t a s qu e p a r t i c i p a n en l a d e t e r m i n a c i n d e l o s r e qu er i m i en t o s d e l si st e m a , su c o n t en i do t a m b i n s e e m pl e a d u r a n t e e l di s e o .

E n u n d i c c i o n a r i o d e d a t o s s e en c u e n t r a l a l i s t a d e t o do s l o s el em en t o s q u e f o r m a n p a r t e d e l f l u j o de da t o s d e t o do e l si st em a . L o s el em en t o s m s i m po r t a n t e s di c c i o n a r i o elementos. son de flujos de da t o s, los a l m a c en e s detalles y de da t o s y de p r o c eso s. t o do s El

da t o s

gu a r d a

de sc r i pc i n

es t o s

* E S P E C I F I C A C I O N E S D E P RO C E S O S : L a e sp e c i f i c a c i n d e p r o c e so s, e s u n a h e r r a m i e n t a d e m o d e l a d o d e s i s t em a s , qu e pe r m i t e d ef i n i r qu su c e de en l o s pr o c e s o s o f u n c i o n e s de u n si s t e m a .

E l o b j e t i v o e s d e f i n i r qu d e be h a c e r se pa r a t r a n sf o r m a r c i er t a s en t r a d a s en c i e r t a s s a l i d a s . N o h a y u n a n i c a f o r m a d e r e a l i z a r l a es p ec i f i c a c i n de

16

pr o c e s o s ; e x i s t e n m l t i pl e s h er r a m i en t a s qu e f a c i l i t a n e st a t a r e a , a u n qu e d e b e r a e m p l e a r s e a qu e l l a s qu e p er m i t a n f c i l c o m pr en s i n .

2 . 2 .6 . P R O G R A M A C I N O R I E N T A D O A O BJ E T O S 5: E s u n en t o r n o d e pr o gr a m a c i n qu e usa o bj e t o s y sus i n t e r a c c i o n e s, en para di s e a r a pl i c a c i o n e s h er en c i a , y pr o g r a m a s a b st r a c c i n ,

informticos.

Est basado

v a r i a s t c n i c a s , i n c l u y en do

po l i m o r f i s m o y e n c a p s u l a m i e n t o .

2 .2 .6 .1 . C O N C E P T O S F U N D A M E N T A L E S

L a pr o g r a m a c i n o r i e n t a da a o bj e t o s e s u n a f o r m a d e p r o gr a m a r qu e t r a t a de e n c o n t r a r u n a s o l u c i n a e st o s pr o b l e m a s. I n t r o du c e n u e v o s c o n c e pt o s , qu e s u p e r a n y a m p l a n c o n c e pt o s a n t i gu o s y a c o n o c i do s. E n t r e el l o s d e st a c a n l o s s i gu i e n t e s :

C L A S E : d e f i n i c i o n e s d e l a s pr o pi e d a d e s y c o m po r t a m i en t o d e u n t i po d e o bj e t o c o n c r e t o . L a i n s t a n c i a c i n e s l a l ec t u r a d e e st a s de f i n i c i o n e s y l a c r e a c i n d e u n o bj e t o a pa r t i r de e l l a s.

H E R E N C I A : ( p o r e j e m pl o , h er en c i a de l a c l a se C a l a c l a s e D ) E s l a f a c i l i d a d m e di a n t e l a c u a l l a c l a s e D h e r ed a en el l a c a d a u n o d e l o s a t r i b u t o s y operaciones de C, como si e so s a t r i bu t o s y o pe r a c i o n e s hubiesen s i do

d e f i n i do s po r l a m i s m a D . P o r l o t a n t o , pu ed e u s a r l o s m i sm o s m t o do s y v a r i a bl e s pblicas d e c l a r a da s en C. Los c o m po n en t es r e g i s t r a do s como

" p r i v a do s " ( pr i v a t e ) t a m bi n s e h e r ed a n , p e r o c o m o n o p er t e n ec en a l a c l a s e, s e m a n t i e n e n e s c o n di do s a l p r o g r a m a do r y s l o pu e de n se r a c c e d i do s a t r a v s d e o t r o s m t o do s p b l i c o s . E st o e s a s pa r a m a n t e n e r h e g em n i c o e l i d e a l d e OOP.

O B J E T O : e n t i da d pr o v i s t a d e u n c o n j u n t o d e p r o pi e d a d e s o a t r i bu t o s ( da t o s) y de c o m po r t a m i e n t o o funcionalidad ( m t o do s) los m i sm o s qu e

c o n s e c u e n t e m e n t e r e a c c i o n a n a e v en t o s. S e c o r r es po n d e c o n l o s o bj et o s

Booch, G. (1996). Analisis y diseo Orientado a Objetos 2da Edicion. Wesley: Addison.

17

r e a l e s d e l m u n do q u e n o s r o d e a , o a o b j et o s i n t er n o s de l s i s t em a ( d el pr o gr a m a ) . E s u n a i n s t a n c i a a u n a c l a s e.

M T O D O : A l g o r i t m o a s o c i a do a u n o bj et o ( o a u n a c l a s e d e o bj et o s) , c u y a e j e c u c i n s e d e s e n c a d e n a t r a s l a r ec e pc i n d e u n " m en s a j e " . D e s de el pu n t o d e v i s t a de l c o m po r t a m i e n t o , e s l o qu e el o bj et o pu ed e h a c e r . U n m t o do pu e de p r o d u c i r u n c a m b i o e n l a s p r o pi e da d e s d el o b j e t o , o l a g en er a c i n d e u n " e v e n t o " c o n u n n u e v o m en s a j e p a r a o t r o o bj et o d el si st e m a .

E V E N T O : E s u n s u c e s o e n el si st e m a ( t a l c o m o u n a i n t er a c c i n d el u su a r i o c o n l a m qu i n a , o u n m e n sa j e e n v i a do po r u n o bj e t o ) . E l s i s t em a m a n ej a el e v e n t o e n v i a n d o e l m e n s a j e a d ec u a do a l o b j e t o p er t i n en t e. T a m b i n s e pu e de d e f i n i r c o m o e v e n t o , a l a r e a c c i n qu e pu e de d es en c a d en a r u n o bj e t o , e s d e c i r l a a c c i n qu e ge n e r a .

M E N S A J E : u n a c o m u n i c a c i n di r i gi d a a u n o bj e t o , qu e l e o r d en a qu e e j ec u t e u n o d e s u s m t o do s c o n c i er t o s p a r m et r o s a so c i a d o s a l ev en t o q u e l o gener.

P R O P I E D A D O A T R I B U T O : c o n t e n e do r d e u n t i po d e d a t o s a so c i a do s a u n o bj e t o ( o a u n a c l a s e d e o bj et o s) , qu e h a c e l o s da t o s v i s i bl e s d e s de f u e r a de l o bj e t o y e s t o s e d e f i n e c o m o su s c a r a c t er s t i c a s pr e d et er m i n a da s, y c u y o v a l o r pu e de s e r a l t e r a do po r l a ej ec u c i n d e a l g n m t o do .

E S T A D O I N T E R N O : e s u n a v a r i a b l e q u e s e d ec l a r a pr i v a d a , qu e pu e d e se r n i c a m e n t e a c c e d i da y a l t e r a d a po r u n m t o do d el o b j et o , y qu e s e u t i l i z a pa r a i n di c a r d i s t i n t a s s i t u a c i o n e s po si b l e s p a r a e l o b j et o ( o c l a s e de o b j et o s) . N o e s v i s i bl e a l pr o gr a m a d o r q u e m a n e j a u n a i n s t a n c i a d e l a c l a s e.

C O M P O N E N T E S D E U N O B J E T O : a t r i bu t o s, i d en t i da d, r e l a c i o n e s y m t o do s.

I D E N T I F I C A C I N D E U N O BJ E T O : u n o b j e t o s e r e pr e s en t a po r m ed i o d e u n a t a b l a o e n t i d a d q u e e s t c o m pu e st a po r su s a t r i bu t o s y f u n c i o n es c o r r e s po n d i e n t e s .

18

2 .2 .6 .2 . C A R A C T E R S T I C A S D E L D E S A R RO L L O O R I E N T A D O A O BJ E T O S

E x i s t e u n a c u e r do a c e r c a d e qu c a r a c t er st i c a s c o n t e m pl a l a " o r i e n t a c i n a o b j e t o s" , l a s c a r a c t e r s t i c a s s i gu i e n t e s s o n l a s m s i m po r t a n t e s:

A B S T R A C C I N : D e n o t a l a s c a r a c t e r st i c a s e se n c i a l e s d e u n o b j e t o , d o n d e s e c a p t u r a n s u s c o m po r t a m i e n t o s. C a da o b j e t o en el s i s t em a s i r v e c o m o m o d el o d e u n " a ge n t e " a b s t r a c t o qu e pu e d e r e a l i z a r t r a b a j o , i n f o r m a r y c a m bi a r su e s t a do , y " c o m u n i c a r s e " c o n o t r o s o bj et o s e n e l si st em a s i n r e v el a r c m o s e i m pl e m e n t a n e s t a s c a r a c t e r st i c a s. L o s p r o c eso s , l a s f u n c i o n e s o l o s m t o do s pu e de n t a m b i n s e r a bs t r a do s y c u a n do l o e s t n , u n a v a r i e d a d d e t c n i c a s s o n r e qu e r i d a s p a r a a m p l i a r u n a a b st r a c c i n . E l p r o c e so d e a b st r a c c i n

p e r m i t e s e l e c c i o n a r l a s c a r a c t er s t i c a s r el e v a n t e s d en t r o d e u n c o n j u n t o e i d e n t i f i c a r c o m po r t a m i e n t o s c o m u n e s p a r a d ef i n i r n u e v o s t i po s d e en t i d a d es e n e l m u n do r e a l . L a a b s t r a c c i n e s c l a v e en el pr o c e so de a n l i si s y d i s e o o r i e n t a do a o b j e t o s , y a qu e m e d i a n t e e l l a po d e m o s l l e g a r a a r m a r u n c o n j u n t o d e c l a s e s qu e p e r m i t a n m o d e l a r l a r e a l i da d o el p r o bl em a qu e se q u i e r e atacar.

E N C A P S U L A M I E N T O : S i g n i f i c a r eu n i r a t o do s l o s el em en t o s qu e p u e d en considerarse pertenecientes a una misma e n t i d a d, al m i sm o n i v el de

abstraccin. Esto permite aumentar la sistema. A l gu n o s autores c o n f u n d en

c o h e s i n de l o s c o m po n en t e s d e l c o n c e pt o con el pr i n c i pi o de

e st e

o c u l t a c i n , pr i n c i p a l m e n t e po r qu e se su el en em p l e a r c o n j u n t a m e n t e.

P O L I M O R F I S M O : c o m p o r t a m i en t o s di f e r e n t e s, a so c i a d o s a o bj et o s d i st i n t o s, pu e de n c o m pa r t i r e l m i s m o n o m br e, a l l l a m a r l o s po r e se n o m br e se u t i l i z a r e l c o m po r t a m i e n t o c o r r e s p o n di en t e a l o bj e t o q u e s e e s t u sa n do . O di c h o d e o t r o m o do , l a s r e f e r e n c i a s y l a s c o l ec c i o n e s d e o bj e t o s pu e de n c o n t en e r o bj e t o s d e di f e r e n t e s t i po s, y l a i n v o c a c i n d e u n c o m po r t a m i en t o en u n a r e f e r e n c i a pr o du c i r e l c o m po r t a m i en t o c o r r ec t o pa r a el t i po r e a l de l o bj e t o r e f e r e n c i a d o . C u a n d o e s t o o c u r r e en " t i e m po de ej ec u c i n " , e st a l t i m a caracterstica se llama a si gn a c i n t a r d a o a si gn a c i n dinmica. A l gu n o s

19

l e n gu a j e s pr o po r c i o n a n m e di o s m s e st t i c o s ( e n " t i e m po d e c o m p i l a c i n " ) d e po l i m o r f i s m o , t a l e s c o m o l a s p l a n t i l l a s y l a so br ec a r ga d e o p e r a do r e s de C + + .

H E R E N C I A : l a s c l a s e s n o es t n a i s l a d a s, s i n o qu e se r e l a c i o n a n en t r e s , f o r m a n do u n a j e r a r qu a d e c l a si f i c a c i n . L o s o b j et o s h e r e d a n l a s p r o pi e da d e s y e l c o m po r t a m i e n t o d e t o da s l a s c l a s es a l a s qu e p er t en ec e n . L a h e r en c i a o r g a n i z a y f a c i l i t a e l p o l i m o r f i s m o y el en c a p su l a m i en t o p er m i t i en do a l o s o bj e t o s ser d e f i n i do s y c r ea do s como tipos e s p ec i a l i z a do s de o bj e t o s

pr e e x i s t e n t e s . E s t o s p u e de n c o m pa r t i r ( y ex t e n d er ) su c o m po r t a m i en t o s i n tener que volver a i m pl em en t a r l o . E st o s u el e h a c er s e h a bi t u a l m en t e

a g r u p a n d o l o s o bj e t o s e n c l a s e s y e st a s en r b o l e s o en r e j a do s qu e r e f l ej a n u n c o m po r t a m i e n t o c o m n . C u a n do u n o bj e t o h er e da de m s d e u n a c l a se s e di c e qu e h a y h e r e n c i a m l t i p l e .

2.2.7. CICLO DE VIDA DEL SOFTWARE6

D e s c r i b e e l d e s a r r o l l o d e s o f t w a r e, de s d e l a f a s e i n i c i a l h a s t a l a f a s e f i n a l . E l pr o p s i t o de este pr o gr a m a es d ef i n i r las di st i n t a s fases i n t er m e di a s qu e se

r e qu i e r e n pa r a v a l i da r e l d e s a r r o l l o d e l a a p l i c a c i n , es d ec i r , p a r a g a r a n t i z a r q u e el s o f t w a r e c u m pl a l o s r e q u i s i t o s p a r a l a a pl i c a c i n y v e r i f i c a c i n d e l o s p r o c e di m i en t o s d e d e s a r r o l l o : s e a s e g u r a d e qu e l o s m t o do s u t i l i z a do s so n a pr o p i a do s.

E s t o s p r o gr a m a s s e o r i g i n a n e n e l h ec h o d e qu e e s m u y c o st o so r ec t i f i c a r l o s er r o r e s qu e s e de t e c t a n t a r d e d e n t r o d e l a f a s e de i m pl em en t a c i n . E l c i c l o de v i d a p er m i t e qu e los errores se detecten lo en antes la po si bl e y po r lo tanto, en p er m i t e los a los de

d e s a r r o l l a do r e s

concentrarse

calidad

de l

so f t w a r e,

plazos

i m pl e m e n t a c i n y e n l o s c o s t o s a s o c i a do s.

Pressman, R. S. (2003). Ingenieria de Software Un enfoque practico Quinta Edicion. Mexico: Mc Graw Hill. http://es.kioskea.net/contents/genie-logiciel/cycle-de-vie.php3

20

2.2.7.1. MODELO ESPIRAL7

E l m o d e l o e s pi r a l pa r a l a i n ge n i er a d e so f t w a r e h a si do d e sa r r o l l a d o pa r a c u br i r l a s m e j o r e s c a r a c t e r st i c a s t a n t o d e l c i c l o de v i d a c l si c o , c o m o d e l a c r e a c i n d e pr o t o t i po s , a a d i en do a l m i sm o t i em po u n n u ev o e l em en t o : e l a n l i s i s d e r i e s go . E l m o d e l o r e pr e se n t a d o m e d i a n t e l a e s pi r a l d e l a f i g u r a 4 , d e f i n e c u a t r o a c t i v i d a d e s p r i n c i pa l es:

Planificacin:

determinacin

de

o bj et i v o s,

alternativas

r e s t r i c c i o n e s.

A n l i s i s d e r i e s g o : a n l i si s d e a l t e r n a t i v a s e i d en t i f i c a c i n / r e so l u c i n d e r i e s go s .

I n g e n i e r a : d e s a r r o l l o d e l pr o du c t o d el " s i gu i e n t e n i v e l " .

E v a l u a c i n d e l c l i e n t e : V a l o r i z a c i n d e l o s r e s u l t a do s d e l a i n g en i e r a .

D u r a n t e l a p r i m e r a v u e l t a a l r e de do r d e l a es p i r a l se d ef i n e n l o s o b j et i v o s, l a s a l t e r n a t i v a s y l a s r e s t r i c c i o n e s, y s e a n a l i z a n e i d en t i f i c a n l o s r i e s go s. S i el a n l i s i s d e r i e s go i n di c a q u e h a y u n a i n c er t i d u m b r e en l o s r e qu i si t o s, se p u e de u s a r l a c r e a c i n d e pr o t o t i po s en e l c u a dr a n t e d e i n g en i er a pa r a d a r a s i s t e n c i a t a n t o a l e n c a r ga do d e d e s a r r o l l o c o m o a l c l i e n t e.

E l c l i e n t e e v a l a e l t r a b a j o d e i n ge n i er a ( c u a d r a n t e d e e v a l u a c i n d e c l i en t e) y s u gi e r e m o di f i c a c i o n e s . S o br e l a b a s e d e l o s c o m en t a r i o s d e l c l i en t e s e pr o du c e l a s i gu i e n t e f a s e d e pl a n i f i c a c i n y d e a n l i si s d e r i e s go . E n c a d a bu c l e a l r e de do r d e l a e s pi r a l , l a c u l m i n a c i n de l a n l i si s d e r i e sgo r e su l t a en u n a de c i s i n d e " s e gu i r o n o se gu i r " . C o n c a da i t er a c i n a l r ed e do r d e l a e s p i r a l ( c o m e n z a n do e n e l c en t r o y s i g u i en do h a c i a el ex t er i o r ) , s e c o n s t r u y en s u c e s i v a s v e r s i o n e s d e l s o f t w a r e, c a d a v e z m s c o m p l e t a y , a l f i n a l , a l pr o pi o sistema operacional.

El

p a r a di gm a

del

modelo

en

e s pi r a l

pa r a

la

i n ge n i er a

de

so f t w a r e

es

a c t u a l m e n t e e l e n f o qu e m s r e a l i s t a pa r a el d es a r r o l l o d e so f t w a r e y d e s i s t e m a s a g r a n e s c a l a . U t i l i z a u n en f o q u e e v o l u t i v o p a r a l a i n g en i e r a d e
7

Ingeniera del software un enfoque practico Tercera Edicin, Roger S. Presman Pag. 29

21

s o f t w a r e , p e r m i t i e n do a l d e s a r r o l l a do r y a l c l i en t e en t e n d e r y r e a c c i o n a r a l o s r i e s go s e n c a d a n i v e l e v o l u t i v o . U t i l i z a l a c r e a c i n d e p r o t o t i po s c o m o u n m e c a n i s m o d e r e du c c i n d e r i e s go , pe r o , l o qu e e s m s i m po r t a n t e pe r m i t e a qu i e n l o de s a r r o l l a a p l i c a r e l en f o qu e d e c r ea c i n d e p r o t o t i po s en c u a l qu i er e t a pa d e l a e v o l u c i n d e pr o t o t i po s.

2.2.8. LENGUAJE DE PROGRAMACIN8

U n l e n gu a j e d e pr o gr a m a c i n e s u n i d i o m a a r t i f i c i a l di s e a do p a r a e x p r e s a r c o m pu t a c i o n e s qu e pu e de n c o m pu t a do r a s . Pueden s er l l e v a d a s a c a b o para c r ea r po r m q u i n a s c o m o l a s qu e c o n t r o l en el

usarse

pr o gr a m a s

c o m po r t a m i e n t o f s i c o y l gi c o d e u n a m qu i n a , pa r a ex pr e s a r a l go r i t m o s c o n pr e c i s i n , o c o m o m o do d e c o m u n i c a c i n h u m a n a .

E s t f o r m a do po r u n c o n j u n t o de s m bo l o s y r e gl a s s i n t c t i c a s y s e m n t i c a s qu e de f i n e n s u e s t r u c t u r a y el si gn i f i c a do d e su s el em en t o s y e x p r es i o n e s. A l pr o c e s o po r e l c u a l s e e sc r i b e, s e pr u e b a , s e de pu r a , s e c o m p i l a y s e mantiene el c d i go fuente de un programa informtico se le llama

pr o gr a m a c i n .

E l e m e n t o s : T o do s l o s l e n gu a j e s d e pr o gr a m a c i n t i en en a l gu n o s el e m en t o s d e f o r m a c i n pr i m i t i v o s pa r a l a d e sc r i pc i n d e l o s da t o s y de l o s pr o c e so s o t r a n s f o r m a c i o n e s a p l i c a da s a es t o s da t o s ( t a l c o m o l a su m a d e do s n m e r o s o la seleccin de un e l e m en t o qu e f o r m a p a r t e d e u n a c o l ec c i n ) . Estos

e l e m e n t o s pr i m i t i v o s s o n d ef i n i do s po r r e g l a s si n t c t i c a s y se m n t i c a s qu e d e s c r i b e n s u e s t r u c t u r a y s i gn i f i c a do r e s p ec t i v a m en t e.

C o r r e c c i n : U n pr o g r a m a es c o r r ec t o s i h a c e l o qu e d e be h a c er t a l y c o m o s e e s t a bl e c i en las fases pr e v i a s a su d e sa r r o l l o . Para de t er m i n a r si un

p r o gr a m a h a c e l o q u e d e b e, e s m u y i m po r t a n t e e sp ec i f i c a r c l a r a m en t e q u d e b e h a c e r e l pr o gr a m a a n t e s d e d e sa r r o l l a r l o y , u n a v e z a c a ba do , c o m p a r a r l o c o n l o qu e r e a l m e n t e h a c e .

Wilson, Leslie B. (1993). Comparative Programming Languages, Second Edition. Addison-Wesley. pp. 75, [ c i t a d o 2 0 d e j u l i o 2010]. Disponible en el WorldWide Web:< http://es.wikipedia.org/wiki/Lenguaje_de_programacion

22

C l a r i d a d : E s m u y i m p o r t a n t e qu e e l p r o g r a m a s e a l o m s c l a r o y l e gi bl e po s i bl e , p a r a f a c i l i t a r a s s u d e sa r r o l l o y po s t e r i o r m a n t en i m i e n t o . A l el a b o r a r u n pr o g r a m a s e d e b e i n t e n t a r qu e s u e s t r u c t u r a s ea s en c i l l a y c o h er en t e, a s c o m o c u i da r e l e s t i l o e n l a e di c i n ; d e e st a f o r m a s e v e f a c i l i t a do e l t r a b a j o d e l p r o gr a m a do r , t a n t o e n l a f a s e d e c r e a c i n c o m o en l a s f a s es po st e r i o r e s d e c o r r e c c i n d e e r r o r e s , a m pl i a c i o n e s, m o di f i c a c i o n e s, et c . F a s e s q u e p u e d en s e r r e a l i z a d a s i n c l u s o p o r o t r o pr o g r a m a do r , c o n l o c u a l l a c l a r i da d e s a n m s n e c e s a r i a p a r a q u e o t r o s p r o g r a m a do r es pu e d a n c o n t i n u a r e l t r a b a j o f c i l m e n t e . A l gu n o s p r o gr a m a do r e s l l e g a n i n c l u so a u t i l i z a r A r t e A S C I I pa r a d e l i m i t a r s e c c i o n e s d e c di go . O t r o s, po r di v er si n o pa r a i m p ed i r u n a n l i s i s c m o do a o t r o s pr o gr a m a d o r e s, r ec u r r en a l u so d e c d i g o o f u sc a do .

E f i c i e n c i a : A l h a b l a r d e e f i c i en c i a d e u n pr o gr a m a , s e s u e l e h a c e r r ef er en c i a a l t i e m po qu e t a r d a e n r e a l i z a r l a t a r e a p a r a l a q u e h a si do c r ea do y a l a c a n t i d a d de m e m o r i a q u e n ec e s i t a , pe r o h a y o t r o s r ec u r so s qu e t a m b i n pu e de n ser de consideracin al o bt en er la ef i c i en c i a de un pr o gr a m a ,

d e p e n d i e n do d e s u n a t u r a l e z a ( e s pa c i o en di sc o qu e u t i l i z a , t r f i c o d e r e d qu e genera).

P o r t a b i l i d a d : U n pr o g r a m a e s po r t a bl e c u a n do t i en e l a c a pa c i da d d e po de r e j e c u t a r s e e n u n a p l a t a f o r m a , y a s e a h a r dw a r e o so f t w a r e, di f e r en t e a a qu el l a e n l a q u e s e e l a bo r .

2.2.9. C++ BUILDER9:

C + + B u i l de r e s u n e n t o r n o d e D es a r r o l l o r pi do de

a pl i c a c i o n es en l e n gu a j e

C + + pa r a W i n do w s , C + + B u i l d e r c o m b i n a l a l i br er a ' V i s u a l C o m po n en t L i br a r y ' y e l I D E e s c r i t o e n D e l p h i c o n u n m o de r n o c o m p i l a d o r d e C + + c o m p i l er .

C + + B u i l de r i n c l u y e h e r r a m i en t a s qu e pe r m i t en v er da d er o d e sa r r o l l o v i s u a l d e a r r a s t r a r y s o l t a r c o m po n en t e s so b r e l a a p l i c a c i n , h a c i en do e l a c t o d e pr o gr a m a r a l go m u c h o m s f c i l a l i n c o r po r a r W Y A Y W Y G G U I en I D E .

H o m e P a g e http://es.wikipedia.org/wiki/C%2B%2BBuilder

23

2.2.10. BASE DE DATOS10

U n a b a s e d e da t o s o b a n c o d e d a t o s e s u n c o n j u n t o d e da t o s p er t en ec i en t e s a u n m i s m o c o n t e x t o y a l m a c en a d o s si s t em t i c a m en t e p a r a s u po s t e r i o r u so . E n e s t e s e n t i do , u n a bi b l i o t e c a pu e de c o n si d er a r s e u n a b a s e d e d a t o s c o m p u e st a e n s u m a y o r a po r do c u m e n t o s y t e x t o s i m pr e s o s en pa p el e i n d e x a do s pa r a s u c o n s u l t a . E n l a a c t u a l i d a d, y d eb i do a l d e s a r r o l l o t ec n o l g i c o d e c a m po s c o m o l a i n f o r m t i c a y l a e l ec t r n i c a , l a m a y o r a d e l a s ba s e s d e d a t o s es t n e n f o r m a t o di gi t a l ( e l e c t r n i c o ) , qu e o f r ec e u n a m pl i o r a n go d e so l u c i o n e s a l pr o bl e m a de almacenar da t o s. Existen pr o gr a m a s d en o m i n a do s sistemas

g e s t o r e s d e ba s e s d e da t o s , qu e p er m i t e n a l m a c en a r y po st er i o r m e n t e a c c ed e r a l o s d a t o s d e f o r m a r p i d a y e st r u c t u r a d a .

2.2.11. SQL11

El

l e n gu a j e

de

consulta

e s t r u c t u r a do

SQL

( po r

su s

si gl a s

en

i n gl s

s t r u c t u r e d qu e r y l a n gu a g e ) e s u n l en gu a j e d ec l a r a t i v o d e a c c e so a b a s e s d e da t o s r e l a c i o n a l e s q u e p e r m i t e e sp ec i f i c a r d i v e r so s t i po s d e o p er a c i o n e s e n s t a s . U n a d e s u s c a r a c t er st i c a s e s e l m a n ej o de l l g e br a y el c l c u lo r e l a c i o n a l p e r m i t i e n do e f e c t u a r c o n su l t a s c o n el f i n de r ec u p e r a r d e u n a f o r m a s e n c i l l a i n f o r m a c i n d e i n t e r s d e u n a ba s e d e d a t o s, a s c o m o t a m b i n h a c er c a m bi o s s o br e e l l a .

2.2.12. MySQL M y S Q L e s u n g e s t o r d e b a se de da t o s s en c i l l o d e u s a r y i n c r e bl e m en t e r pi do . T a m b i n e s u n o d e l o s m o t o r e s de b a se d e d a t o s m s u s a d o s en I n t e r n e t , l a pr i n c i p a l r a z n de es t o e s qu e e s gr a t i s pa r a a p l i c a c i o n e s n o comerciales.

10

Piattini Mario, Adoracin de Miguel, Marcos Esperanza. DISEO DE BASES DE DATOS RELACIONALES. Ed. Alfaomega, [ c i t a d o 2 5 de setiembre 2010]. Disponible en el World Wide Web: < http://es.wikipedia.org/wiki/Base_de_datos >.

11

Changes in Release 3.23.x (Lifecycle Support Ended). Oracle. M y S Q L , [ c i t a d o 2 0 d e a g o s t o 2 0 1 0 ] . D i s p o n i b l e e n e l World Wide Web: < http://es.wikipedia.org/wiki/MySQL >

24

U n a b a s e de d a t o s e s u n c o n j u n t o de d a t o s y u n g e st o r d e b a s e d e d a t o s e s u n a a p l i c a c i n c a p a z d e m a n ej a r e s t e c o n j u n t o d e da t o s d e m a n e r a ef i c i e n t e y cmoda.

ODBC CONECTIVIDAD ABIERTA DE BASE DE DATOS

C o n e x i n A b i e r t a d e B a s e d e D a t o s ( O p en D a t a B a se C o n n ec t i v i t y ) , O D B C e s u n m t o do e s t n da r Los para c o m pa r t i r datos en t r e el b a se s de datos y otros de la

pr o gr a m a s . Consultas aplicacin.

C o n t r o l a do r e s (SQL) para

ODBC

usan

L en gu a j e de

Estructurado ex t e r n a s a

e s t n da r

accesar

datos

f u en t e s

E l s i s t e m a O D B C a c t a c o m o t r a du c t o r en t r e u n a a p l i c a c i n y l o s da t o s a l o s qu e e s t n i n t e n t a n do t e n e r a c c e so . L a t r a du c c i n d e O D B C e s u n pr o c e so d e do s p a s o s :

P r i m e r o u n a a p l i c a c i n C + + B u i l d er d eb e po de r h a b l a r c o n O D B C .

S e gu n do O D B C d e b e s e r c a p a z d e h a bl a r c o n el D B M S .

MyODBC

M y O D B C e s u n a i n t e r f a z O D B C y pe r m i t e a l o s l en gu a j e s d e p r o gr a m a c i n qu e a d m i t e n l a i n t e r f a z O D B C p a r a c o m u n i c a r s e c o n u n a ba s e d e d a t o s M y S Q L .

E l n o m br e o f i c i a l e s e l C o n ec t o r / O D B C qu e s e d e si gn e a l a f a m i l i a d e pr o du c t o s d e M y S Q L A B M y S Q L c o n t r o l a do r e s O D B C . E s t o s s o n c o n o c i do s c o m o l o s c o n t r o l a do r e s M y O D B C .

25

2.3. MARCO CONCEPTUAL 2.3.1. PROTOTIPO U n p r o t o t i po pu e d e s e r u n m o d e l o d e l c i c l o d e v i d a d e l so f t w a r e, t a l c o m o e l d e s a r r o l l o e n e s pi r a l o e l d e s a r r o l l o en c a sc a da . s t o s p er m i t en t e s t a r el o bj e t o a n t e s d e qu e e n t r e en pr o du c c i n , d et ec t a r er r o r e s, d ef i c i e n c i a s, e t c t e r a . C u a n do e l pr o t o t i po e st su f i c i en t em en t e p er f ec c i o n a do e n t o d o s l o s s e n t i d o s r e qu e r i do s y a l c a n z a l a s m e t a s pa r a l a s qu e f u e p en s a do , el o bj et o pu e de e m p e z a r a pr o du c i r s e .

2.3.2. SISTEMA No existe una definicin g en er a l m en t e a c e pt a da pa r a un S i st em a .

H a b i t u a l m e n t e s e l o e n t i e n d e en do s a s p ec t o s: O r i en t a do a l e x t e r i o r en c u a n t o s e e n c u e n t r a s i t u a do e n u n m ed i o do n d e d e b e i n t e r a c t u a r c o n o t r o s S i s t e m a s d e s u n i v e l y c o n s i s t e m a s m a y o r e s de l o s qu e f o r m a pa r t e, y o r i e n t a d o a su i n t e r i o r , a l de f i n i r l o c o m o e l c o n j u n t o d e do s o m a s el em en t o s qu e i n t er a c t a n e n t r e s i . T o do l o q u e n o s r o d ea po d r a s e r c o n s i d er a do c o m o u n s i s t e m a , do n d e s u s l m i t e s d e p e n d e n d e l o b s er v a do r y l o s pr o p si t o s qu e es t e t en ga .

2.3.3. SISTEMA DE GESTIN Y ADMINISTRACIN U n s i s t e m a de g e s t i n y a dm i n i st r a c i n e s u n a e st r u c t u r a p r o ba d a p a r a l a

g e s t i n y m e j o r a c o n t i n u a d e l a s po l t i c a s , l o s pr o c e di m i en t o s y p r o c es o s d e la organizacin.

L a s m e j o r e s e m p r e s a s f u n c i o n a n c o m o u n i d a d e s c o m pl e t a s c o n u n a v i si n compartida. Ello e n gl o b a la informacin c o m p a r t i da , evaluaciones

c o m p a r a t i v a s , t r a ba j o e n e qu i po y u n f u n c i o n a m i en t o a c o r d e c o n l o s m s r i gu r o s o s p r i n c i pi o s de c a l i d a d y d el m e di o a m b i e n t e.

Un

sistema de gestin

a y u d a a l o gr a r l o s o bj e t i v o s d e l a o r g a n i z a c i n

m e di a n t e u n a s e r i e d e e s t r a t eg i a s, qu e i n c l u y en l a o p t i m i z a c i n d e pr o c e so s , e l e n f o qu e c e n t r a do e n l a g e st i n y e l p en s a m i en t o d i sc i pl i n a do .

26

E l u s o de u n s i s t e m a d e g e st i n pr o b a do l e p e r m i t e r en o v a r c o n s t a n t e m en t e s u o bj e t i v o , s u s e s t r a t e g i a s, su s o p er a c i o n es y n i v el e s d e se r v i c i o .

2.3.4. PROCEDIMIENTOS ADMINISTRATIVOS C o r r e s po n de a l c o n j u n t o d e r e gl a s y po l t i c a s de l a o r ga n i z a c i n , qu e r i g en el c o m po r t a m i e n t o d e l o s u s u a r i o s f r e n t e a l si s t e m a . P a r t i c u l a r m en t e, d e b er a n a s e gu r a r s e qu e n u n c a , ba j o n i n gu n a c i r c u n st a n c i a u n u su a r i o t en g a a c c e so di r e c t o a l a b a s e d e d a t o s .

2.3.5. ITERACIN S e u s a pa r a i n d i c a r o c u r r e n c i a s r e p et i da s de u n c o m po n en t e en u n e l e m en t o c o m pu e s t o .

2.3.6. SGBD S i s t e m a G e s t o r d e B a s e s d e D a t o s ( S G B D ) , es u n a c o l ec c i n d e pr o g r a m a s c u y o o b j e t i v o e s s e r v i r d e i n t e r f a z en t r e l a b a s e d e da t o s, e l u su a r i o y l a s aplicaciones.

2.3.7. DATOS E l d a t o e s u n a r e p r e s e n t a c i n si m b l i c a ( n u m r i c a , a l f a b t i c a , a l go r t m i c a , e t c . ) , u n a t r i bu t o o u n a c a r a c t er st i c a de u n a en t i d a d.

2 .3 . 8 . I N F O R M A C I N

E s u n c o n j u n t o de d a t o s s i gn i f i c a t i v o s y p er t i n e n t e s qu e d e sc r i b a n s u c e so s o e n t i da d e s .

2 .3 . 9 . C O D I F I C A C I N

L a c o di f i c a c i n e s , a n t e t o do , l a c o n v e r si n d e u n si st em a d e d a t o s a o t r o d i s t i n t o . L a c o di f i c a c i n qu e s e r e a l i z a m e d i a n t e e l si s t e m a bi n a r i o e st ba s a d a e n e l l g e br a d e B o o l e .

27

2 .3 .1 0 . E N T R E V I S T A

L a e n t r e v i s t a e s u n a t c n i c a i m p o r t a n t e p a r a r ec o g er i n f o r m a c i n y c o n o c e r m s s o b r e el do m i n i o , i n t r o du c i r l e a l ex p er t o en l o s c o n c ep t o s d e i n t e l i g e n c i a a r t i f i c i a l , es t a b l ec e r u n pu en t e en t r e el ex p er t o y el desarrollo del sistema. 2 .3 .1 1 . EL DISEO DE LOS DATOS. T r a s f o r m a e l m o d e l o de do m i n i o d e l a i n f o r m a c i n , c r e a do du r a n t e e l a n l i s i s , e n l a s e s t r u c t u r a s de d a t o s n ec e sa r i o s pa r a i m pl e m e n t a r el Software. 2 .1 .1 2 E L D I S E O A R Q UI T E C T N I C O . D e f i n e l a r e l a c i n en t r e c a d a u n o de l o s el e m e n t o s e st r u c t u r a l e s de l pr o gr a m a . 2 .3 .1 3 . E L D I S E O D E L A I N T E RF A Z . D e s c r i b e c o m o s e c o m u n i c a el S o f t w a r e c o n s i go m i sm o , c o n l o s s i s t e m a s qu e o p e r a n j u n t o c o n el y c o n l o s o p er a d o r e s y u su a r i o s qu e l o e m pl e a n . 2 .3 .1 4 . P .O .O . : P r o gr a m a c i n O r i e n t a d a a O b j et o s 2 .3 . 1 5 . S A G E I E : Sistema de a dm i n i st r a c i n para la g es t i n de una em pr e sa

I m po r t a do r a y E x po r t a d o r a .

28

CAPITULO III
MATERIALES Y MTODOS

3.1. LOCALIZACIN

E l pr e s e n t e t r a b a j o d e i n v es t i g a c i n s e r e a l i z e n el D e p a r t a m en t o de P u n o , P r o v i n c i a d e S a n R o m n , D i s t r i t o d e J u l i a c a u bi c a da a u n a a l t i t u d d e 3825

m.s.n.m., l u g a r e n e l c u a l s e o b t u v o l o s d a t o s n ec es a r i o s, i n st r u m en t o s y
po bl a c i n pa r a po d e r r e a l i z a r l o s e s t u d i o s c o r r es po n d i e n t e s. S i n d u d a l a i n v e s t i ga c i n f u e o r i e n t a da h a c i a el r ea d e l a i n f o r m t i c a , c o m o e s n a t u r a l se e n t i e n de qu e l a r e c o p i l a c i n d e i n f o r m a c i n s e r e a l i z o u t i l i z a n do d i v er s a s t c n i c a s p a r a a l i m e n t a r n u e st r a b a n c o d e i n f o r m a c i n , el c u a l e s r e q u i s i t o i n d i s p e n s a bl e pa r a l a e l a b o r a c i n d el p r o y ec t o , d e a c u er do a l o e s t i pu l a do e n l o s r e qu e r i m i e n t o s pa r a l a el a bo r a c i n d el p r o y e c t o .

3.2. POBLACIN

L a po b l a c i n de e s t e e s t u di o f u e s e l ec c i o n a d a en f o r m a f i n i t a y a qu e l a c o n f o r m a n l o s 7 e m pl e a do s d e l a em pr e sa .

3.3. MUESTRA

C o m o m u e s t r a s i m p l e m e n t e po r c o n v en i en c i a s e t o m a r o n l o s 7 e m p l ea d o s d e l a e m pr e s a .

29

3.4. OPERACIONALIZACION DE VARIABLES

Variable Independiente

Dimensin

Indicadores

ndice

Prototipo de sistema administracin. de software

Diagnostico Interface Reportes Manual

Optimo Regular Malo

Dependiente

Gestin empresa.

de

los procesos de la

- Consultas - Actualiza

Gestin Informacin

de

Buena Regular Malo

3.5. METODOLOGA Y PROCEDIMIENTOS 3.5.1 MODELO ESPIRAL Para el desarrollo del software se har uso del modelo

espiral siendo este del siguiente modo:

Figura N1: Modelo Espiral

30

3.6. DESARROLLO DEL SOFTWARE U t i l i z a n do e l m o de l o e s pi r a l , c o n u n d e sa r r o l l o es t r u c t u r a do y pr o gr a m a c i n o r i e n t a da a o b j e t o s s e d i o i n i c i o a l pr o t o t i po d e si s t e m a d e a dm i n i st r a c i n , p a r a m e j o r a r l a g e s t i n d e l a em pr e s a . L a i n f o r m a c i n e s o bt en i da du r a n t e e l a n l i s i s , u t i l i z a n do e l m t o do de el i c i t a c i n pa r a po de r o bt en er i n f o r m a c i n a d e c u a d a qu e n o s p e r m i t i a n a l i z a r l o s di st i n t o s t i p o s d e pr o b l e m a s qu e s e deban de solucionar.

3.6.1. PLANIFICACIN E n e s t a e t a p a l a c o m u n i c a c i n c o n e l c l i en t e e s f u n d a m en t a l , el gerente de la i m po r t a d o r a y e x po r t a do r a R i v er Bald en la s

e n t r e v i s t a s r e a l i z a d a s d a a c o n o c e r l o s i gu i en t e : 1 C o m o s e r e g i s t r a c a d a v en t a d el pr o du c t o . 2 C o m o s e i n gr e s a u n a c o m pr a o a d qu i si c i n d el pr o du c t o . 3 C o m o s e a l m a c en a l a i n f o r m a c i n de l a s v e n t a s. 4 C o m o s e b u s c a el pr o du c t o . 5 Q u i e n e s t i e n e n a c c e s o a r e a l i z a r l a s v en t a s. 6 Q u i e n e s t i e n e n a c c e s o a r e a l i z a r l o s c o br o s d e v en t a . 7 C o m o s e r e a l i z a n l o s r e po r t es d e l a s v en t a s di a r i a s. E l g e r e n t e d e d i c h a em pr e sa , r e qu i er e si s t e m a t i z a r c a da u n o de l o s pr o c e s o s m e n c i o n a do s , Q u e b r i n d e f a c i l i d a d d e m a n e j o p a r a l o s e m pl e a do s , qu e t en g a una interfaz e r go n m i c a y b s qu e d a de

i n f o r m a c i n de t a l l a d a a l m o m en t o .

3.6.2. ANLISIS DE RIESGOS L a f a s e d e a n l i s i s d e r i es go s en e l d e s a r r o l l o de so f t w a r e e s u n a pa r t e f u n d a m e n t a l ; a s pu e s e s t a f a s e n o s p er m i t i r r e a l i z a r e l e s t u di o e n l a i n v e st i ga c i n p a r a v i a bi l i z a r l o s r e su l t a do s o b t en i do s du r a n t e e l d e s a r r o l l o .

U n r i e s go e s c u a l qu i e r c o s a qu e p u e d a c a u s a r d a o , l a em p r e s a i m po r t a do r a y e x po r t a do r a R i v er B a l d r eq u i er e s e gu r i d a d qu e p er m i t a

31

a l u s u a r i o a dm i n i st r a do r r ea l i z a r t a r e a s d e c o n t r o l d e s e gu r i d a d d e a c c e s o a l a pl i c a t i v o , c o m o c r e a r u su a r i o s, r ei n i c i a r c o n t r a s e a s, d e s h a b i l i t a r u s u a r i o s; pa r a o b t e n e r u n a m e j o r a dm i n i st r a c i n de l software.

3.6.3. INGENIERA U n a v e z c o n c l u i d a c o n l a r ec o l ec c i n d e i n f o r m a c i n y a n a l i z a n do a l gu n o s r i e s go s se c o m i en z a con el desarrollo de l si st em a ,

di a gr a m a r e m o s l a s c l a s e s p r i n c i p a l e s qu e se r n u s a d a s du r a n t e el d e s a r r o l l o de l s o f t w a r e, l a s po d r em o s i d en t i f i c a r ; po r qu e s e r n e st a s las qu e c o n t e n dr n de la info rmacin y r e s p ec t i v a las qu e ayudaran al

momento

i de n t i f i c a r

e s qu em a t i z a r

di st i n t a s

r e l a c i o n es ,

a t r i bu t o s y m t o do s qu e c a d a u n a d e e l l a s pr e se n t a ; e st o c o n l a f i n a l i d a d d e e s pe c i f i c a r e l c o m po r t a m i en t o y o bt en er i n f o r m a c i n a c e r c a d e l a o pc i n i n g r e sa d a po r el u su a r i o p a r a po d er d et er m i n a r m e di a n t e e s t a s e st r u c t u r a s c u a l f u e el p r o c e di m i en t o se gu i do y a c c i o n e s r e a l i z a da s po r el so f t w a r e, s e pu do d e t e r m i n a r c u a l e r a l a e v o l u c i n y s i e s t e r e a c c i o n a b a d e a c u er do a l a s e s p ec i f i c a c i o n e s, po de m o s d e t e r m i n a r l a i de n t i f i c a c i n de c l a se s y su s r e s p ec t i v o s o bj e t o s pu e s , e s t o s f u er o n l o s a c t o r e s d i r ec t o s a l o s c u a l es el s i s t e m a l e s p e r m i t i i n t e r r el a c i o n a r e i n t e r c a m b i a r i n f o r m a c i n a t r a v s d e l o s d i s po s i t i v o s d e en t r a d a , el c u a l e s el e n c a r g a do di r ec t o d e r e c e p c i o n a r , pr o po r c i o n a r y d et er m i n a r q u e t i po d e a c c i o n e s de b e d e r e t r i bu i r p a r a po d er d et er m i n a r s i el a l go r i t m o i m p l em en t a do e s a d e c u a do pa r a funcionar y eficiente para po de r r ea l i z a r las

p e t i c i o n e s y a c c i o n e s p er t i n en t e s pa r a po d er f a c i l i t a r el m ec a n i s m o d e f u n c i o n a m i e n t o d el si st em a .

L a pa r t e m a s d e l i c a d a d e t o do el p r o c e so d e so f t w a r e es t a en l a c o di f i c a c i n d e l o s a l g o r i t m o s o b t en i do s du r a n t e e l d i s e o y e l a n l i s i s de l pr o b l e m a p a r a el d e s a r r o l l o d e l so f t w a r e . P a r a e l c a so d e l pr o t o t i po s e u t i l i z o el L e n gu a j e C + + c o n j u n t a m en t e c o n l a s A P I d e W i n do w s .

32

3.6.4. VALIDACIN DEL SISTEMA C u a n do e l e x pe r t o y el i n g en i e r o d el c o n o c i m i en t o e st n c o n v en c i do s d e qu e e l pr o t o t i po d e si s t e m a e st a t er m i n a do , h a y qu e p r o ba r l o de a c u e r do c o n e l c r i t er i o d el f u n c i o n a m i e n t o . E st e t a m b i n e s el

m o m e n t o d e i n v i t a r a o t r o s ex p er t o s y / o u su a r i o s a qu e p r u e ben el sistema.

E n e s t a p a r t e s e r ea l i z o el a di e st r a m i en t o r es p ec t i v o p a r a ef ec t o s d e po de r o pt i m i z a r e l bu en u so d el so f t w a r e, l o gr a n do a s u n a c o n f i a n z a a l a h o r a d e m a n e j a r el si s t e m a .

F u e n e c e s a r i o r e a l i z a r u n a en c u e s t a d e v a l i d a c i n de l so f t w a r e p a r a m e di r e l g r a do d e a c e pt a c i n d el u su a r i o c o n e l so f t w a r e. 3.6.5. MANTENIMIENTO D e s de qu e s e t i e n e l a pr i m er a v e r s i n de l p r o t o t i po , s e so m et i a m a n t e n i m i e n t o c o n t i n u o a m e d i d a qu e s e de t ec t a r o n e r r o r e s d e f u n c i o n a m i e n t o , p r o b l e m a s d e i n t er f a c e , d e i n gr e so d e da t o s, d e v i s u a l i z a c i n d e r e po r t es y / o r e su l t a do s d e c o n s u l t a y / o di a gn o st i c o .

3 . 6 . 6 . R E C U R S O S COMPUTACIONALES PARA LA CONSTRUCCIN Y OPERACIN DEL PROTOTIPO DE SISTEMA

E l l e n gu a j e d e pr o gr a m a c i n u t i l i z a do e s C + + B u i l d er 6 . 0 p a r a e l d e s a r r o l l o d e l a l g i c a a pl i c a t i v a d e l s i s t em a .

P a r a l a a dm i n i s t r a c i n y p r u eb a s e n l a b a se d e d a t o s, s e u s a n l a s h e r r a m i e n t a s gr a t u i t a s q u e pr o v ee m i s a l : M y S Q L A dm i n i s t r a do r . P a r a e l di s e o g r f i c o d e l a b a s e d e d a t o s u t i l i z a m o s D B D es i gn er 4 . 0 . P r i m er o s e c r e a n l a s t a b l a s qu e s e v a n a u s a r en l a b a s e d e da t o s y a v e r el c o m po r t a m i e n t o d e l a s t a b l a s du r a n t e l a e j ec u c i n d el si st em a .

33

H a r dw a r e c o n e l qu e s e d es a r r o l l l a a p l i c a c i n e s:

M i c r o pr o c e s a do r I N T E L

TM

1.8Ghz. (266 Mhz)*

R A M d e 5 1 2 M B ( 3 2 M b) * T a r j e t a d e v i d eo 1 2 8 M b ( 1 6 M b) * D i s c o D u r o c o n es p a c i o di s po n i b l e d e 1 0 M b ( 6 M b) * Monitor Dell 19 (800x600dpi 15)* U n i d a d d e A l m a c en a m i en t o ( C D R O M y / o F l o p p y ) *

S o f t w a r e o c u p a do :

S i s t e m a O pe r a t i v o W i n d o w s X P P r o f e si o n a l . M y S Q L A dm i n i s t r a t o r . D B D e s i gn e r 4 . 0 C++ Builder
12

6.0

( ) Requerimiento mnimo para funcionamiento

34

CAPITULO IV
RESULTADOS Y DISCUSIN

4.1. DISEO DEL SISTEMA 4.1.1. DESCRIPCIN DE CLASES Y OBJETOS

C L A S E U S U A R I O : E l a s p e c t o m s i m po r t a n t e d e l a pu e st a en m a r c h a d el s i s t e m a , e s l a i n t e r a c c i n qu e ex i st e en t r e el u s u a r i o y el si s t e m a , es a s qu e s e d e f i n i l a c l a s e u s u a r i o c o m o l a p r i n c i p a l , en c o n s ec u en c i a u n o d e e st a c l a s e e s e l e n c a r ga do d e a dm i n i s t r a r l o s u su a r i o s s u s pr i v i l e g i o s y c o n t r a s e a de los dems usuario s.

C L A S E A D Q U I S I C I O N E S : E st a c l a s e a d m i n i st r a c a d a u n o de l o s pr o du c t o s n u e v o s qu e i n gr e s a n c o n t r o l a n do e l pr ec i o y l a c a n t i d a d, es t a c l a s e v a d e l a m a n o c o n l a c l a s e c o n t r o l d e p r ec i o s y c o m p r a s y a d qu i s i c i o n e s.

C L A S E P R O D U C T O S : E s t a c l a s e c o n t i en e t o do s l o s pr o d u c t o s po r c a t e go r a s.

C L A S E V E N T A S : E s t a c l a s e p er m i t i r a l U su a r i o / V en d ed o r r ea l i z a r l a v en t a d e l pr o du c t o t e n i e n do e n c u e n t a e l c o n t r o l d el p r ec i o d e l a c l a s e c o n t r o l d e pr e c i o s .

C L A S E S T O C K P R O D U C T O S : E s t a c l a s e es l a en c a r g a d a de c o n t r o l a r e n d i f e r e n t e s c a t e go r a s l o s pr o du c t o s , e s p ec i f i c a n do a s l o s a t r i bu t o s d e c a da u n d e e l l o s c o m o i d e n t i f i c a d o r es .

C L A S E C O N S U L T A : E s t a c l a s e p er m i t e r ea l i z a r l a b sq u e d a de d et er m i n a d o pr o du c t o y a s e a po r c di go o n o m br e d e m s c l a s e s p a r a l a s b s qu e da s. y se e n c u en t r a r el a c i o n a d a c o n l a s

35

C L A S E R E P O R T E S : E s t a c l a s e e s u n a d e l a s m s i m po r t a n t es p o r qu e a qu po dr e m o s v i s u a l i z a r c o n d et a l l e el s t o c k d e l o s pr o du c t o s c u a n do h a y , c u a n t o qu e da s e po dr v i s u a l i z a r r e po r t e s d i a r i o s y a s ea po r gr u po s y c a t e go r a s t a m b i n r e po r t e s m e n s u a l e s y po r f ec h a s d et e r m i n a d a s.

4.1.2. ELABORACIN DE DIAGRAMAS DE CASO DE USO E l c a s o d e u s o e s u n a e x c e l en t e h er r a m i en t a p a r a e st i m u l a r a qu e l o s u s u a r i o s h a b l e n , d e u n si s t e m a , d e s de su s pr o p i o s pu n t o s d e v i s t a . N o s i e m p r e e s f c i l p a r a l o s u su a r i o s ex pl i c a r c o m o pr e t en d en u t i l i z a r u n sistema. L a i de a e s i n v o l u c r a r a l o s u su a r i o s en l a s e t a p a s i n c i a l e s d el a n l i si s y d i s e o de l s i s t e m a . E st o a u m en t a l a pr o ba b i l i d a d de qu e el s i s t em a s e a d e m a y o r p r o v e c h o pa r a l a g en t e a l a qu e a y u da r a , e n l u g a r d e s er un manojo de e x pr e si o n e s de c o m pu t a c i n i n c o m pr en si b l es e

i n m a n e j a bl e s po r l o s u su a r i o s f i n a l e s .

D E F I N I C I N D E L US O U n a d e l a s f o r m a s m a s c l a r a s d e po d er i d en t i f i c a r el f u n c i o n a m i en t o y r e a c c i n d e l s i s t e m a es a t r a v s d e l o s d i a gr a m a s d e c a s o s d e u so , l a s c u a l e s r e f l e j a n e l t i po de o r d en y c o m po r t a m i en t o qu e r ea l i z a e l u s u a r i o y q u e e j e c u t a el s i st em a , a u n e st a se m u e st r e d e f o r m a g e n e r a l y g l o b a l s e p u e de a pr ec i a r c u a l e s p u e de n s er l a a c t i t u d es r e a l i z a d a s po r e l s i s t em a si el u s u a r i o a t r a v s d el S A G E I E r e a l i z a u n p e d i do y e l s i s t e m a e v a l a l a o r d en p a r a po d er d e v o l v er u n r e su l t a do o b v i a m e n t e a n a l i z a n do si es t a s e en c u en t r a c o m o u n p a t r n d ef i n i do pu e s de no ser a s e st a d ev o l v er a los mensajes pr e v i a m en t e

e s t a bl e c i do s c o m o pa r m e t r o s d e u so y r e s pu e s t a .

36

Figura N: 2 CASO DE USO GENERAL PARA SAGEIE.

C o m o s e m u e s t r a e n l a D i a g r a m a N 1 el a d m i n i st r a do r y u su a r i o t i e n e a c c e s o l i m i t a do a l o s m du l o s m en c i o n a d o s.

37

Figura N: 3 CASO DE USO PARA LA APLICACIN DEL SAGEIE.

E l gr f i c o i l u s t r a c l a r a m e n t e c o m o s e r ea l i z a l a p et i c i n y c o m o e l s i st e m a pr o c e s a y devuelve los m t o do s para las p et i c i o n e s r ea l i z a d a s m ed i a n t e los mdulos

s e l e c c i o n a do s d e l o s po s i b l e s u s o s qu e e l u su a r i o r e a l i c e.

4.1.3. ELABORACIN DE ESCENARIO D e s c r i b i e n do c u a l s e r i a l a i n t er a c c i n e n t r e e l u su a r i o y e l si s t em a t e n em o s l o s e s c e n a r i o s l o s c u a l e s pe r m i t i r n a l s i st e m a y a l a dm i n i s t r a do r po d er e s t a bl e c e r u n a r e l a c i n a de m s d e l gi c a , u n a f si c a , es t o m a s q u e u n di a gr a m a d e c a s o s d e u s o i l u st r a m u c h o m e j o r c u a l e s l a s ec u en c i a qu e s e r e a l i z a e n l o s c a s o s d e u so , pe r o t o do di a gr a m a e s e s p ec i f i c o n o d e b em o s desmerecer el anterior para do s los ya que cada diagrama mas cuenta aun p er o no con se de di s t i n t o s debe de

pr o c e di m i e n t o s confundir estos

cuales de

fue

di s e a do ,

t i po s

a pa r i en c i a

si m i l a r

c o n t e n i do

c o m p l e t a m e n t e di s t i n t o s a d em s d e su i n t er pr et a c i n .

38

Figura N: 4 CASO DE USO MANTENIMIENTO GENERAL

Figura N: 5 CASO DE USO REGISTRO DE VENTA

39

Figura N: 7 CASO DE USO PARA REPORTES

4.1.4. DIAGRAMA DE INTERACCIN P o dr e m o s m o n i t o r i z a r c a d a i n t e r a c c i n qu e s e r ea l i c e a t r a v s d e l o s c o m a n do s e s t a s i n t e r a c c i o n es e st n r ep r es en t a d a s p o r i n g r eso q u e r ea l i z a e l u s u a r i o m e di a n t e e l t ec l a do qu e l u ego s e r n pr o c e sa d a s y pr e v i a m en t e v a l i d a da s p a r a po d e r e m i t i r u n r e su l t a do el c u a l s e l e a d v er t i r a l u su a r i o pa r a qu e e s t e t o m e l a s a c c i o n e s c o r r e s po n di en t e s y a s c a er en u n c i c l o r e p e t i t i v o qu e n o s e r o t r a c o sa qu e l a f i n i t a i n t e r a c c i n en t r e el u su a r i o y el sistema.

Figura N: 8 DIAGRAMA DE INTERACCIN CON EL SISTEMA

40

4.1.5. DIAGRAMA DE FLUJO DE DATOS

Figura N: 9 DIAGRAMA DE FLUJO DE DATOS

L a f i gu r a a n t e r i o r m u e s t r a c u a l e s el f l u j o d el c o m a n do en v i a do y a qu e e s t e d e b e d e a t r a v e s a r l a s c o m p a r a c i o n e s y p r o c es a m i en t o s l gi c o s a n t e s d e po de r d e v o l v e r c u a l qu i e r e v e n t o o r ea l i z a r u n a a c c i n a d e m s e l gr a f i c o e st a

i l u s t r a do c o n f o r m a s d e di a gr a m a d e f l u j o e l c u a l n o s p er m i t e s a b e r qu e pr o c e s o s s e r e a l i z a n e x a c t a m en t e , e s t o m u e st r a c l a r a m en t e el c i c l o l g i c o qu e s e e j e c u t a y f l u y e a t r a v s d e l o s di a gr a m a s d e f l u j o .

41

4.1.6. DISEO POR ETAPAS

Figura N: 10 DIAGRAMA POR ETAPAS DEL FUNCIONAMIENTO DEL SISTEMA

M o s t r a m o s u n di s e o d e l s o f t w a r e po r et a pa s p o r qu e si m pl em en t e du r a n t e e l desarrollo del mismo cada una de es t a s etapas van d et er m i n a n do el

c o m po r t a m i e n t o l g i c o qu e a l f i n a l e s l o qu e m a s pr i m a en u n s o f t w a r e a l m a r g e n d e l a i n t e r f a z y r e qu er i m i e n t o s d e h a r d w a r e, en l a f i gu r a a n t e r i o r , se m u e s t r a c o m o e s qu e s e e f ec t a e l di s e o po r et a pa s em p ez a n do d es d e l a i n t e r a c c i n d e l u s u a r i o c o n l a s o p er a c i o n e s y l o s m t o do s ej ec u t a do s e n c a d a u n o d e e s t a s e t a pa s h a s t a el m i sm o pr o c e sa m i en t o d e l o s m t o do s q u e en a l gu n o s e s p a r a s i m i s m o s; es d ec i r qu e s i s e m u e st r a l a s o pc i o n e s en l a s e g u n da e t a p a , y e l u s u a r i o n o r e a l i z a n i n g n t i po d e o pe r a c i n e l s i s t em a pr o c e s a u n m t o d o p a r a e l m i sm o e l c u a l e s l l a m a do C a n c el a r q u e r e gr e sa a e l

42

u s u a r i o , l o c u a l e s u n p r o c e di m i e n t o c o m p l e t a m en t e l gi c o y v a l e d er o n o po r qu e e s t e m t o do e s t a y a pr e v i a m en t e i m p l em e n t a do s i n o po r qu e e s d ec i s i n d e c a d a u s u a r i o e l po d e r r e a l i z a r l a s t a r e a s o a c t i v i d a d e s qu e e l qu i e r a r e a l i z a r s i n f o r z a r a l s i s t e m a o a su m i r a l g n t i p o d e er r o r qu e m a s b i en a s er una suerte de retro a l i m en t a c i n lo qu e le p er m i t e al s i s t em a evitar

c a d a s ( c o l ga r s e ) , e l c u a l t a m bi n e s u n pr o c ed i m i en t o p r e e st a bl ec i d o .

4.2. DISEO DE LA BASE DE DATOS 4.2.1. DIAGRAMAS DE CLASE E s p ec i f i c a m o s u n d i a g r a m a de c l a s e s; po r q u e q u er em o s s a b e r c u a l e s el gr a do y relacin qu e ex i s t en entre el l a s, a d em s de po d er

e s p e c i f i c a r l a a f i n i d a d e n t r e l o s a t r i b u t o s y m t o do s d e l o s m i sm o s.

43

Figura N: 11 DIAGRAMA DE CLASES

E n e l di a gr a m a d e c l a s e s qu e s e m u es t r a , po d em o s a pr ec i a r l a s c l a s e s qu e s er n u t i l i z a d a s d e n t r o d e l s i s t e m a y l a s r e l a c i o n e s q u e e x i st en en t r e e l l a s, E s t e di a gr a m a s e u t i l i z a r du r a n t e e l pr o c e s o d e a n l i si s y d i s e o de l s i s t em a do n d e c r e a m o s el di s e o c o n c e pt u a l d e l a i n f o r m a c i n qu e m a n e j a m o s en e l si s t e m a y l o s c o m po n en t es s e e n c a r g a r a n de l f u n c i o n a m i e n t o y l a r e l a c i n e n t r e u n o y el o t r o

44

4.2.2. MODELO DE BASE DE DATOS ENTIDAD RELACIN

Figura N: 12 MODELO ENTIDAD RELAC IN

45

E s t e d i a g r a m a o m o d e l o e n t i da d r e l a c i n e s u n a h er r a m i en t a p a r a el m o d el a do d e d a t o s d e l s i s t e m a , e s t e m o d el o e x pr e sa i n t e r r el a c i o n e s y pr o p i e d a d e s , muestra la estructura de la ba s e de datos em pl e a n do h er r a m i en t a s

c o n c e pt u a l e s , a n a l i z a n d o l o s r e qu er i m i en t o s d e l u su a r i o c r ea m o s el e s qu em a c o n c e pt u a l c o n l a s de s c r i pc i o n e s d e t a l l a da s d e l a s en t i d a d e s, r el a c i o n e s y r e s t r i c c i o n e s . E s t a s d e s c r i pc i o n e s s e e x pr e sa n e m p l e a n do c o n c e pt o s gr f i c o s y t e x t u a l e s de l m o d e l o d e da t o s r el a c i o n a l .

4.3.

INSTALACIN C o n c l u i d o c o n l a p a r t e d el d i s e o y d e s a r r o l l o d el so f t w a r e s e r e a l i z o l a c o r r e c t a i m pl e m e n t a c i n e i n t e gr a c i n d e l o s d i s po s i t i v o s t a n t o f s i c o s c o m o l g i c o s e s d e c i r s o f t w a r e y h a r dw a r e, l o s c u a l e s r e a l i z a n u n ex c el en t e t r a b a j o da n d o u n a d e c u a do u s o a l h a r dw a r e e s d ec i r o pt i m i z a n do e l r en di m i e n t o y a p l i c a n do s o po r t e a l s i s t e m a c o m o u n a p a r t e d e l a f a s e de i m pl em en t a c i n .

E l s o f t w a r e qu e do l i s t o pa r a l a i n s t a l a c i n y pr u e ba s r e s p ec t i v a s pu e st o qu e el t r a b a j o n o c o n c l u y o c o n t a n so l o d e sa r r o l l a r l o e i m p l em en t a r l o ; si n o m s b i en a u n r e c i n e s t a po r v e r c u a l e s e l v er da d er o d e sa r r o l l o q u e se o f r ec e a l usuario.

4.4. CAPACITACIN Y PRUEBAS EN MARCHA E n e s t a pa r t e s e r e a l i z o e l a di e st r a m i en t o r e s p ec t i v o p a r a ef ec t o s d e po d er o pt i m i z a r e l bu e n u s o d e l s o f t w a r e, p er o m a s i m po r t a n t e a u n f u e e l po d e r l o g r a r l a i n d e pe n d e n c i a d e l u su a r i o qu e s e en c a r go d e u t i l i z a r e l so f t w a r e, logrando as una confianza a la hora de realizar la capacitacin.

4.5. PRUEBAS DEL SISTEMA

Durante

el

p e r i o do

de

pr u e ba

el

cual

tomo

un

tiempo

considerable

se

e s t a bl e c i qu e e l s i s t e m a pr e s en t a ba v a r i o s t i po s d e e st r u c t u r a s c c l i c a s e r r t i c a s qu e a f e c t a b a n e n l a o p e r a c i n d el u s u a r i o , t a n t o en l a p a r t e l g i c a c o m o e n l a pa r t e e x t e r n a .

46

E s a s qu e s e s o m e t i n u e v a m en t e a p r u e ba s el a l go r i t m o d e l c u a l s e f u er o n pu l i e n do los errores conforme e st o s se iban pr e se n t a do , d a n do a s

c u m p l i m i e n t o a e s t a p a r t e d e l d i se o

No

esta

de m s

e x pl i c a r

qu e

como

t o do

so f t w a r e

es t e

se

en c u en t r a

pr e di s pu e s t o a c u a l qu i e r t i po de c a m bi o qu e e l u su a r i o r e qu i er a c o n l a finalidad de po d e r que o pt i m i z a r po r t i e m po el de m i sm o , vida de esto u so incluye se d eb en t a m b i n de las

actualizaciones peridicamente.

realizar

E l P r o t o t i po d e S i s t e m a de A dm i n i s t r a c i n pa r a l a G e st i n de u n a E m pr e s a I m po r t a do r a y E x po r t a d o r a d e J u l i a c a , l o d en o m i n a r em o s c o n el a c r n i m o SAGEIE v. 1

Figura N: 13 VENTANA PRINCIPAL DEL SAGEIE V. 1

47

4.6. RESULTADOS DE LA ENCUESTA DE EVALUACIN A p l i c a n do l a e n c u e s t a d e v a l i d a c i n d el so f t w a r e s e o b t i en en l o s s i gu i en t e s r e s u l t a do s po r c e n t u a l e s pa r a c a d a u n o d e l o s t em s d e l a en c u e st a A N E X O N 2 , r e v i s a n do l o s r e s u l t a do s l l eg a m o s a l a c o n c l u s i n qu e el so f t w a r e t i en e m a s d e l 5 0 % d e a c e pt a c i n en c a da u n a d e l a s p r e gu n t a s .

G r a f i c o N 1 : Re s u l t a d o d e E n c u e s t a d e E v a l u a c i n
1.- Tiene conocimiento de los sistemas de informacin.

NO 2 Usuarios 29%

SI 5 Usuarios 71%

G r a f i c o N 2 : Re s u l t a d o d e E n c u e s t a d e E v a l u a c i n
2.- La Interfaz del Software le parace amigable.

NO 1 Usuario 14%

SI 6 Usuarios 86%

G r a f i c o N 3 : Re s u l t a d o d e E n c u e s t a d e E v a l u a c i n
3.- La Velocidad del Software le parece amigable.

NO 3 Usuarios 43% SI 4 Usuarios 57%

48

G r a f i c o N 4 : Re s u l t a d o d e E n c u e s t a d e E v a l u a c i n

4.- La manera que el sistema de informacin se preenta es clara.

NO 2 Usuarios 29%

SI 5 Usuarios 71%

G r a f i c o N 5 : Re s u l t a d o d e E n c u e s t a d e E v a l u a c i n
5.- Es Relativamente fcil moverse de un tarea a otra.

NO 1 Usuario 14%

SI 6 Usuarios 86%

G r a f i c o N 6 : Re s u l t a d o d e E n c u e s t a d e E v a l u a c i n

6.- El software tiene una Presentacin muy atractiva.

NO 2 Usuario 29%

SI 5 Usuario 71%

G r a f i c o N 7 : Re s u l t a d o d e E n c u e s t a d e E v a l u a c i n

7.- El software le provee de todas las opciones que nececita.

NO 1 Usuario 14%

SI 6 Usuarios 86%

49

G r a f i c o N 8 : Re s u l t a d o d e E n c u e s t a d e E v a l u a c i n

8.- He tenido problemas al manejar esta sistema.

NO 3 Usuarios 43% SI 4 Usuarios 57%

G r a f i c o N 9 : Re s u l t a d o d e E n c u e s t a d e E v a l u a c i n

9.- Me gustara usar este software todos los das.

NO 1 Usuarios 14%

SI 6 Usuarios 86%

G r a f i c o N 1 0 : Re s u l t a d o d e E n c u e s t a d e E va l u a c i n

10.- Yo recomendara este software a mis colegas.

NO 2 Usuarios 29%

SI NO 1 Usuarios 71%

50

CAPITULO V
CONCLUSIONES Y RECOMENDACIONES

5.1. CONCLUSIONES

E n l a I n v e s t i ga c i n s e l l e ga a l a s s i g u i en t e s c o n c l u s i o n e s.

1.

L a i m pl e m e n t a c i n d e l s i s t e m a d e a dm i n i st r a c i n m e j o r l a a dm i n i s t r a c i n d e l a e m pr e s a e n l o s s i g u i e n t e s pu n t o s a t en c i n a l c l i en t e, en l a a dqu i si c i n d e pr o du c t o s , c o n t r o l d e p r ec i o s, o r d en d e l r e gi s t r o d e v en t a s, s e d e sa r r o l l u t i l i z a n do l a m e t o do l o g a X P , u t i l i z a n do el l e n g u a j e d e pr o g r a m a c i n

C + + B u i l de r c r e a n do l a ba s e d e d a t o s

en M y S Q L c o n s t r u y en do pr o t o t i po s

o r i e n t a do a o bj e t o s p a r a l a si s t e m a t i z a c i n d e l o s pr o c e so s qu e l a em p r e s a efectuaba manualmente.

2.

M e j o r e l r e a d e a l m a c n pr o po r c i o n a n d o i n f o r m a c i n r ea l y a c t u a l i z a d a d e l o s pr o du c t o s d e l a e m pr e sa .

3.

E n e l r e a d e p r o v e e do r e s n o s p er m i t e c o n o c er l o s t i po s d e p r o d u c t o s, l o s pr e c i o s c o n l o qu e e l a dm i n i st r a do r pu e d e t o m a r u n a d ec i si n i n m ed i a t a a qu e p r o v e e do r d e b e d e c o m p r a r .

4.

E l m o d e l a do d e l a b a s e d e d a t o s s e d e s a r r o l l o c o n el di a gr a m a de c l a s e s qu e d e s c r i b e l a e s t r u c t u r a d e l si st em a m o st r a n do r e l a c i o n es en t r e el l o s p a r a el a l m a c e n a m i e n t o de l a i n f o r m a c i n d el si st e m a .

51

5.

S e i m p l e m e n t o l a B a s e d e D a t o s en M y S Q L po r qu e e s u n so f t w a r e l i br e , l a f a c i l i d a d d e s u u s o l a f l e x i bi l i d a d en d i f er en t e s s i s t em a s o p er a t i v o s h a c en m u y po pu l a r e s t a b a s e d e d a t o s m a n e j a n do gr a n c a n t i d a d d e c a p a c i d a d d e almacenaje.

6.

L a i n t e r f a z r e s u l t e r go n m i c a y c o m o c o n s ec u en c i a d e e l l o el u su a r i o se a d a pt a r f c i l m e n t e e n e l u so d e l a s i n t e r f a c e s s e u t i l i z el t i po de i n t e r f a z gr f i c a d e u s u a r i o qu e p er m i t e c o m u n i c a r s e c o n el o r d en a do r d e u n a f o r m a r pi d a , i n t u i t i v a u t i l i z a n do r e pr e s en t a c i o n es v i s u a l e s y gr a f i c a s, v en t a n a s, c u a dr o s d e d i l o go , bo t o n e s y c o m a n do s. L a s s el ec c i o n e s pu ed en a c t i v a r s e bi e n a t r a v s d e l t e c l a d o o c o n e l r a t n e s t a s i n t e r f a c e s so n i n d ep en d i en t e s d e l o s di s po s i t i v o s d e en t r a d a y s a l i d a e l si s t e m a pu e d e u t i l i z a r l a s si n necesidad de cambios.

52

5.2. RECOMENDACIONES

1.

S e r e c o m i e n d a a m pl i a r e l m o du l o d e C a j a pa r a m ej o r a r e l m a n e j o d e l a m i sm a e n l a e m pr e s a .

2.

L a i m p l e m e n t a c i n d e l s i s t em a en l a em p r e s a m ej o r l a a dm i n i st r a c i n , po r l o qu e s e r e c o m i e n da u t i l i z a r si st em a s pa r a m e j o r a r su a d m i n i st r a c i n .

3.

S e r e c o m i e n d a qu e l a f a c u l t a d r e a l i c e t a l l er e s e sp ec f i c o s en e l a bo r a c i n d e s i s t e m a s pa r a e m p r e s a s d e l de p a r t a m en t o . D e es t a m a n er a

53

BIBLIOGRAFIA

1. Booch, G. (1996). Analisis y diseo Orientado a Objetos 2da Edicion. Wesley: Addison. 2 . C., B. (1996). Desarrollo de Sistemas de Informacion una Vision Practica Tercera edicion. Chile: Evolucion S.A. 3. Fernadez Sastre, S. M. Fundamentos del Diseo y la Programacin Orientada a Objetos. McGraw Hill. 4. Haeberer, A. M., & Veloso, G. B. (2001). Formalizacin del proceso de Desarrollo del Software. Buenos Aires: Kapeluz . 5. Jacobson, I., Booch, G., & Rumbaugh, J. El proceso Unificado de Desarrollo de software. Wesley. 6. Perez Giraldo, O. Metricas y Planificacion en Proyectos de Software. 7. Pressman, R. S. (2003). Ingenieria de Software Un enfoque practico Quinta Edicion. Mexico: Mc Graw Hill. 8. Sommerville. Ingenieria de Software. Addison - Wesley.

54

REFERENCIAS INTERNET
1. R. S. Pressman. McGraw Hill Higher Education. Ingeniera del software. Un enfoque prctico (sexta edicin), 2. [ c i t a do 16 de junio 2010]. D i s po n i b l e en el World Wide W e b: < h t t p: / / e s . w i k i p e di a . o r g/ w i k i / I n g en i e r % C 3 % A D a _ d e_ so f t w a r e > Abc SELECTING A DEVELOPMENT APPROACH. Revalidated: March 27, 2008. Retrieved 27 Oct 2008 M e t o do l o g a , [ c i t a d o 2 6 de j u n i o 2 0 1 0 ] . D i s po n i bl e e n el W o r l d W i d e W e b: < http://es.wikipedia.org/wiki/Programaci%C3%B3n_extrema 3. Wilson, Leslie B. (1993). Comparative Programming Languages, Second Edition. AddisonWesley. pp. 75, [ c i t a do 2 0 d e j u l i o 2 0 1 0 ] . D i s po n i b l e en el W o r l dW i d e W e b: < h t t p: / / e s . w i k i p e d i a . o r g/ w i k i / L en gu a j e_ d e_ p r o g r a m a c i o n 4. Changes in Release 3.23.x (Lifecycle Support Ended). Oracle. M y S Q L , [ c i t a do 2 0 d e agosto 5. 2010]. D i s po n i bl e en el World Wide W eb: < h t t p: / / e s . w i k i p e d i a . o r g/ w i k i / M y S Q L > . Piattini Mario, Adoracin de Miguel, Marcos Esperanza. DISEO DE BASES DE DATOS RELACIONALES. Ed. Alfaomega, [ c i t a do 2 5 d e s et i e m br e 2 0 1 0 ] . D i s po n i bl e en el W o r l d W i de W e b: < h t t p : / / es . w i k i p e di a . o r g/ w i k i / B a s e_ d e_ d a t o s > . 6. Piattini, Mario G, O c t u br e Auditoria Informtica, un Enfoque Practico, Alfa Omega C o m pa r a c i n de D i s po n i b l e en el World Wide W eb: < s i s t e m a s a dm i n i s t r a do r e s d e b a se s d e da t o s r e l a c i o n a l e s, [ c i t a do 0 1 d e 2010]. h t t p: / / e s . w i k i p e d i a . o r g/ w i k i / A n ex o : C o m p a r a c i % C 3 % B 3 n _ d e_ s i s t em a s_ a dm i n i s t r a do r e s _ d e _ b a s e s _ d e _ d a t o s_ r e l a c i o n a l e s > . 7. Revista COMPU MAGAZINE, Nmero 51, Octubre '99 P r o gr a m a c i n O r i en t a da A O b j e t o s, [ c i t a do 8. 25 de n o v i e m br e 2010 ]. D i s po n i b l e en el World Wide W e b: < h t t p: / / e s . w i k i pe d i a . o r g / w i k i / P r o gr a m a c i % C 3 % B 3 n _ o r i e n t a da _ a _ o b j et o s > Wilson, Leslie B. (1993). Comparative Programming Languages, Second Edition. AddisonWesley. Pag. 184 L e n gu a j e s Y M e t o d o l o g a s D e P r o gr a m a c i n : [ en l n e a ] , [ c i t a do 0 7 di c i e m b r e 2 0 1 0 ] . D i spo n i bl e en e l W o r l d W i d e W e b: < < h t t p: / / e s . k i o s k e a . n e t / c o n t e n t s/ ge n i e - l o gi c i el / c y c l e - d e - v i e. ph p3 / >

55

ANEXOS

56

ANEXO N 1
D I C C I O N A RI O D E D A T O S Nombre de Archivo: BDFerreteria Descripcin: Base de Datos que contendr la Base de Datos del SAGEIE Nombre de la Tabla TblUsuarios TblAdquisiciones Detadquisiciones TblProveedores TblProductos TblVentas DetVentas TblPrecios vwstockprods dicCategoria dictocompras dicdoventas dictipomedida dicestadocompra Tabla de los Usuarios Tabla de Adquisiciones Detalle de las Adquisisiones Tabla de Proveedores Tabla de Productos Tabla Ventas Detalle de las Ventas Tabla de Precios Tabla Stock de Productos Diccionario de Categorias Diccionario de Compras Diccionario de Ventas Diccionario tipo de Medida Diccionario Estado de Compra Descripcin

Nombre de Archivo: BDFerreteria Descripcin: Tabla Usuario (TblUsuario) Campo Id Apellidos Nombres Usuario Clave Nivel Clave Primaria IdUsuario Tamao 11 40 40 20 41 11 Tipo de Dato VARCHAR VARCHAR VARCHAR VARCHAR VARCHAR INTEGER Clave Foranea Descripcin Identificador Usuario Apellidos del Usuario Nombres del Usuario Usuario del Usuario Clave del Usuario Nivel del Usuario

Nombre de Archivo: BDFerreteria Descripcin: Tabla Adquisiciones (TblAdquisiones) Campo IdAdquisicion IdUsuario IdProveedor IdTipoDoc IdEstado Numero Tamao 11 11 11 11 11 20 Tipo de Dato INTEGER INTEGER INTEGER INTEGER INTEGER VARCHAR Descripcin Identificador Adquisiciones Identificador Usuario Identificador Proveedor Identificador Tipo de Documento Identificador Estado de Compra Numero de Adquisicion

57

FechaHora Referencias ValCambio Clave Primaria IdAdquisicion

DATETIME TEXT DOUBLE Clave Foranea IdUsuario IdProveedor IdTipoDoc IdEstado

Fecha y Hora de la Adquisicion Referencias de la Adquisicin Valor de Cambio

Nombre de Archivo: BDFerreteria Descripcin: Tabla Detalle Adquisiciones (detadquisiciones) Campo Iddetadquisiciones IdAdquisicion IdProducto IdTipoMedida Cantidad PrecioUnitario PrecioTotal Clave Primaria Iddetadquisiciones Tamao 11 11 11 11 Tipo de Dato INTEGER INTEGER INTEGER INTEGER DOUBLE DOUBLE DOUBLE Clave Foranea IdAdquisicion IdProducto IdTipoMedida Descripcin Identificador Detalle Adquisiciones Identificador Adquisicion Identificador Producto Identificador Tipo de medida Cantidad de la adquisicin Precio Unitario de la adquisicion Precio total de la adquisicion

Nombre de Archivo: BDFerreteria Descripcion: Tabla Proveedores (tblProveedores) Campo IdProveedores Nombre RazonSoc Tamao 11 60 40 Tipo de Dato INTEGER VARCHAR VARCHAR Descripcin Identificador Proveedores Nombre del Proveedor Razon Social del Proveedor

Clave Primaria IdProveedores

Clave Foranea

Nombre de Archivo: BDFerreteria Descripcion: Tabla Producto (tblProd) Campo IdProducto IdCategoria codBarra Tamao 11 11 20 Tipo de Dato INTEGER INTEGER VARCHAR Descripcin Identificador Producto Identificador de la Categoria Codigo de Barra

58

descripcion obsv marca Clave Primaria IdProducto

100 60 60

VARCHAR VARCHAR INTEGER Clave Foranea IdCategoria codBarra

Descripcin del Producto Observaciones Marca del Producto

Nombre de Archivo: BDFerreteria Descripcion: Tabla Ventas (TblVentas) Campo IdVentas IdUsuario IdEstado Nombres RazSocial FechaHora Obs Dsto Clave Primaria IdVentas 50 Tamao 11 11 11 50 50 Tipo de Dato INTEGER INTEGER INTEGER VARCHAR VARCHAR DATETIME VARCHAR DOUBLE Clave Foranea IdUsuario IdEstado Descripcin Identificador Ventas Identificador Usuario Identificador Estado de Compra Nombre de cliente Razon Social Fecha y Hora de la Venta Observaciones Descuentos

Nombre de Archivo: BDFerreteria Descripcion: Tabla detVentas (TbldetVentas) Campo IddetVenta IdVenta IdProducto IdTipoMedida Cantidad PrecioUnitario PrecioTotal Serie Clave Primaria IdAdquisicion 30 Tamao 11 11 11 11 Tipo de Dato INTEGER INTEGER INTEGER INTEGER DOUBLE DOUBLE DOUBLE VARCHAR Clave Foranea IdVenta IdProducto IdTipoMedida Identificador Venta Identificador Producto Identificador Tipo de Medida Cantidad Precio Unitario Precio Total Serie Descripcin Identificador detalle de Adquisicion

59

Nombre de Archivo: BDFerreteria Descripcion: Tabla Precio (TblPrecio) Campo IdPrecios IdProducto IdTipoPrecio Precio Tamao 11 40 40 20 Tipo de Dato VARCHAR VARCHAR VARCHAR VARCHAR Descripcin Identificador Precios Identificador Producto Identificador Tipo de Precio Precio

Clave Primaria IdPrecios

Clave Foranea IdProducto IdTipoPrecio

Nombre de Archivo: BDFerreteria Descripcion: Tabla detVentas (TbldetVentas) Campo IddetVenta IdVenta IdProducto IdTipoMedida Cantidad PrecioUnitario PrecioTotal Serie Clave Primaria IdAdquisicion 30 Tamao 11 11 11 11 Tipo de Dato INTEGER INTEGER INTEGER INTEGER DOUBLE DOUBLE DOUBLE VARCHAR Clave Foranea IdVenta IdProducto IdTipoMedida Descripcin Identificador detalle de Venta Identificador venta Identificador Producto Identificador Tipo de Medida Cantidad Precio Unitario Precio Total Serie

Nombre de Archivo: BDFerreteria Descripcion: Tabla Diccionario de Categoria (diccategorias) Campo IdCategoria Descripcion Tamao 11 40 Tipo de Dato VARCHAR VARCHAR Descripcion Descripcin Identificador Diccionario Categoria

Clave Primaria IdCategoria

Clave Foranea

60

Nombre de Archivo: BDFerreteria Descripcion: Tabla Diccionario Documento de Compras (dicdoccompras) Campo IdTipoPrecio Descripcion Tamao 11 40 Tipo de Dato VARCHAR VARCHAR Descripcion Descripcin Identificador Documento Compras

Clave Primaria IdTipoPrecio

Clave Foranea

Nombre de Archivo: BDFerreteria Descripcion: Tabla Diccionario Documento de Ventas (dicdocventas) Campo IddocVenta Descripcion Tamao 11 40 Tipo de Dato VARCHAR VARCHAR Descripcion Descripcin Identificador Documento Ventas

Clave Primaria IddocVenta

Clave Foranea

Nombre de Archivo: BDFerreteria Descripcion: Tabla Diccionario Tipo de Medida (dictipomedida) Campo IdTipoMedida Descripcion Tamao 11 40 Tipo de Dato VARCHAR VARCHAR Descripcion Descripcin Identificador Tipo Medida

Clave Primaria IdTipoMedida

Clave Foranea

61

ANEXO N2 Test de Validacin del Software

Nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... Nombre del software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Fecha . . . . . . . . . . . . . . . . . . . . . Nota: La informacin que proporcionar es completamente confidencial y ninguna informacin se almacenar en una computadora que pudiera identificarlo como persona. Este cuestionario tiene 10 tems. Por favor responda cada una de ellas. Cada tem tiene dos opciones. Marque con una EQUIS (X) la primera casilla si EST DE ACUERDO con lo indicado. Marque la casilla derecha si NO EST DE ACUERDO.

ITEMS 1.- Tiene conocimiento de los sistemas de informacin. 2.- La interfaz del software le parece amigable. 3.- La velocidad del software es rpida. 4.- La manera que el sistema de informacin se presenta es clara. 5.- Es relativamente fcil moverse de una tarea a otra. 6.- El software tiene una presentacin muy atractiva. 7.- El software le provee de todas las opciones que necesita. 8.- He tenido problemas al manejar este sistema. 9.- Me gustara usar este software todos los das. 10.- Yo recomendara este software a mis colegas

SI

NO

62

ANEXO N 3 INSTALACION DEL SOFTWARE

INSTALACIN DEL PROTOTIPO DE SISTEMA DE ADMINISTRACIN PARA LA G E S T I N D E U N A E M P R E S A I M P O RT A D O R A Y E X P O RT A D O RA D E J UL I A C A 2 0 1 0 I n s t a l a c i n d e C o m po n e n t e s pa r a l o s S G B D . MyODBC M y S Q L ( A p pS e r v , X A M P P , W A M P , et c . ) Instalacin de MyODBC: P a s o 1 : D o bl e c l i c k e n l a a p l i c a c i n .

P a s o 2 : U d. V e r a l a s i gu i e n t e i n t er f a z .

P a s o 3 : P u l s e e n e l bo t n N E X T c u a t r o v ec e s y p er m i t a t er m i n a r l a i n s t a l a c i n . L a a pl i c a c i n g e n e r a r d e f o r m a a u t o m t i c a l a c o n e x i n O D B C en t r e l a a pl i c a c i n y e l m o t o r d e b a s e d e d a t o s M y S Q L . P o r l o qu e n o s er n ec e s a r i o e s p ec i f i c a r c o n e x i o n e s MyODBC de forma manual.

63

Instalacin de XAMPP: P a s o 1 : D o bl e c l i c k s o br e l a a p l i c a c i n

P a s o 2 : S i g a l o s p a s o s d e l a s i s t e n t e d e i n st a l a c i n .

P a s o 3 : U n a v e z i n s t a l a do e j e c u t e el pa n e l d e c o n t r o l .

64

P a s o 4 : E j e c u t e l a c o n s o l a d e M s D O S qu e s e m u e st r a a c o n t i n u a c i n .

P a s o 5 : e j e c u t e l a s e c u e n c i a de c o m a n do s. MySQL u root < ARCHIVO_SCRIPT.SQL

P a s o 6 : A l f i n a l i z a r e s t o s p a s o s d e b er a t e n e r e l s i gu i en t e r e su l t a d o .

65

66

ANEXO N4 M A N U A L D E US U A RI O P a s o 1 : E j e c u t e e l pr o g r a m a .

Interfaz principal.

67

P a s o 3 : V a l i da c i n de u s u a r i o s .

Paso 4 : Mdulos Generales. M a n t e n i m i e n t o d e p r o d u c t o s . C r ea c i n d e c a t e go r a s y a gr e g a do d e p r o du c t o s, en la lista de stock.

68

M a n t e n i m i e n t o d e C o m p r a s : T o do s l o s pr o d u c t o s qu e s e c o m p r a r a n y a g r eg a r o n c o n l o s pr e c i o s d e a d qu i s i c i n y c a n t i da d d e pr o du c t o s c o m pr a do s.

69

P a r a l o s pr e c i o s d e a d qu i s i c i n d e l o s p r o du c t o s y l a c a n t i d a d.

M a n t e n i m i e n t o d e P r e c i o s : T o do s l o s pr o du c t o s qu e h a n s i do c a t a l o g a do s c o m o a d qu i r i do s d e b e r n pa s a r po r e s t a et a pa de a s i g n a c i n d e pr ec i o s, de l o c o n t r a r i o a l r e a l i z a r l a v e n t a e l pr o d u c t o n o s e m o st r a r .

70

M o d u l o d e V e n t a s : C o n t r o l d e v en t a s, b s qu e da d e p r o d u c t o s en st o c k y a g r e g a do a l a l i s t a d e c o m pr a s . S o po r t e e s t n d a r pa r a l a l e c t u r a d e c di go d e b a r r a s.

Modulo

de

Reportes:

R e po r t e s

v i s u a l es

de

pr e - i m p r e s i n

so br e

d i v e r sa s

caractersticas de venta.

71

72

ANEXO N5

Cdigo Fuente del Programa

SAGEIE v.1
Escrito en:

Borland C++ Builder 6.0

73

-- -------------------------------------------------------------------------------------- Archivo SQL para la Base de Datos MySQL --- Creacion de Tablas -+ StoreProcedures -+ Functions -+ One Trigger --- -----------------------------------------------------------------------------------DROP DATABASE IF EXISTS `DB-MIFERRETERIAv1`; CREATE DATABASE `DB-MIFERRETERIAv1`; USE `DB-MIFERRETERIAv1`; CREATE TABLE IF NOT EXISTS `detadquisiciones` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `IdAdquisicion` int(11) NOT NULL, `IdProducto` int(11) NOT NULL, `IdTipoMedida` int(11) NOT NULL, `Cantidad` double NOT NULL, `PrecioUnitario` double NOT NULL, `PrecioTotal` double NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; --- Estructura de tabla para la tabla `detventas` -CREATE TABLE IF NOT EXISTS `detventas` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `IdVenta` int(11) NOT NULL, `IdProducto` int(11) NOT NULL, `IdTipoMedida` int(11) NOT NULL, `Cantidad` double NOT NULL, `PrecioUnitario` double NOT NULL, `PrecioTotal` double NOT NULL, `Serie` varchar(30) NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; -- ---------------------------------------------------------- Estructura de tabla para la tabla `diccategorias` -CREATE TABLE IF NOT EXISTS `diccategorias` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Descripcion` varchar(40) NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; --- Volcar la base de datos para la tabla `diccategorias` -CREATE TABLE IF NOT EXISTS `dicdoccompras` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Descripcion` varchar(30) NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; --- Volcar la base de datos para la tabla `dicdoccompras` -INSERT INTO `dicdoccompras` (`Id`, `Descripcion`) VALUES (1, 'LIBRE'),

74

(2, 'BOLETA'), (3, 'FACTURA'); -- ---------------------------------------------------------- Estructura de tabla para la tabla `dicdocventas` -CREATE TABLE IF NOT EXISTS `dicdocventas` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Descripcion` varchar(30) NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; --- Volcar la base de datos para la tabla `dicdocventas` -INSERT INTO `dicdocventas` (`Id`, `Descripcion`) VALUES (1, 'LIBRE'), (2, 'FACTURA'), (3, 'BOLETA'); -- ---------------------------------------------------------- Estructura de tabla para la tabla `dicestadoscompra` -CREATE TABLE IF NOT EXISTS `dicestadoscompra` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Descripcion` varchar(50) NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; --- Volcar la base de datos para la tabla `dicestadoscompra` -INSERT INTO `dicestadoscompra` (`Id`, `Descripcion`) VALUES (1, 'CANCELADO'), (2, 'DEUDA'); -- ---------------------------------------------------------- Estructura de tabla para la tabla `dictipomedida` -CREATE TABLE IF NOT EXISTS `dictipomedida` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Descripcion` varchar(60) NOT NULL, `CantContenida` int(11) NOT NULL, `Abreviatura` varchar(20) NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; --- Volcar la base de datos para la tabla `dictipomedida` -INSERT INTO `dictipomedida` (`Id`, `Descripcion`, `CantContenida`, `Abreviatura`) VALUES (1, 'Unidad', 1, 'UND'); -- ---------------------------------------------------------- Estructura de tabla para la tabla `estproforma` -CREATE TABLE IF NOT EXISTS `estproforma` ( `Id` int(11) NOT NULL, `Descripcion` varchar(30) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

75

INSERT INTO `estproforma` (`Id`, `Descripcion`) VALUES (1, 'Proforma Expedida'), (2, 'Proforma Cancelada'), (3, 'Proforma Vendida'); -- ---------------------------------------------------------- Estructura de tabla para la tabla `extproforma` -CREATE TABLE IF NOT EXISTS `tbladquisiciones` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `IdUsuario` int(11) NOT NULL, `IdProveedor` int(11) NOT NULL, `IdTipoDoc` int(11) NOT NULL, `IdEstado` int(11) NOT NULL, `Numero` varchar(20) NOT NULL, `FechaHora` datetime NOT NULL, `Referencias` text NOT NULL, `ValCambio` double NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; --- Volcar la base de datos para la tabla `tbladquisiciones` -CREATE TABLE IF NOT EXISTS `tblmoneda` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Fecha` date NOT NULL, `Valor` double NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; --- Volcar la base de datos para la tabla `tblmoneda` -INSERT INTO `tblmoneda` (`Id`, `Fecha`, `Valor`) VALUES (1, '2009-12-13', 2.85), (2, '2009-12-13', 2.84); CREATE TABLE IF NOT EXISTS `tblprecios` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `IdProducto` int(11) NOT NULL, `IdTipoPrecio` int(11) NOT NULL, `Precio` double NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; --- Volcar la base de datos para la tabla `tblprecios` -CREATE TABLE IF NOT EXISTS `tblproductos` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `IdCategoria` int(11) NOT NULL, `CodBarra` varchar(20) NOT NULL, `Descripcion` varchar(100) NOT NULL, `Obs` varchar(60) NOT NULL, PRIMARY KEY (`Id`), KEY `IdCategoria` (`IdCategoria`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; -- -------------------------------------------------------CREATE TABLE IF NOT EXISTS `tblproveedores` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Nombre` varchar(60) NOT NULL, `RazonSoc` varchar(40) NOT NULL, `Direccion` varchar(40) NOT NULL,

76

`Telefono` varchar(40) NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ; --- Volcar la base de datos para la tabla `tblproveedores` -INSERT INTO `tblproveedores` (`Id`, `Nombre`, `RazonSoc`) VALUES (1, 'NINGUNO', '--');

CREATE TABLE IF NOT EXISTS `tblusuarios` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Apellidos` varchar(40) NOT NULL, `Nombres` varchar(40) NOT NULL, `Usuario` varchar(20) NOT NULL, `Clave` varchar(41) NOT NULL, `Nivel` int(11) NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Coleccion de usuarios' AUTO_INCREMENT=5 ; --- Volcar la base de datos para la tabla `tblusuarios` -INSERT INTO `tblusuarios` (`Id`, `Apellidos`, `Nombres`, `Usuario`, `Clave`, `Nivel`) VALUES (1, 'Puma', 'Yojhana', 'Adminsitrador', '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257', 1), (2, 'Salas Rossel', 'Sandra', 'vendedor1', '*23AE809DDACAF96AF0FD78ED04B6A265E05AA257', 2); --- Estructura de tabla para la tabla `tblventas` -CREATE TABLE IF NOT EXISTS `tblventas` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `IdTipoDoc` int(11) NOT NULL, `IdUsuario` int(11) NOT NULL, `IdEstado` int(11) NOT NULL, `Nombres` varchar(50) NOT NULL, `RazSocial` varchar(50) NOT NULL, `FechaHora` datetime NOT NULL, `Obs` varchar(50) NOT NULL, `Dscto` double NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ; --- Filtros para la tabla `tblproductos` -ALTER TABLE `tblproductos` ADD CONSTRAINT `tblproductos_ibfk_1` FOREIGN KEY (`IdCategoria`) REFERENCES `diccategorias` (`Id`) ON DELETE CASCADE ON UPDATE CASCADE; -----------------------------------------------------------------------------------------Aqui los PROCEDURES de Mantenimiento 1: Categorias 2: Unidades 3: Productos ------------------------------------------------------------------------------------

DELIMITER $$ -- ------------------------------------------------------------------------------------- Procedure: Para mantenimiento de dicCategorias -- -----------------------------------------------------------------------------------DROP PROCEDURE IF EXISTS `mlAgCategoria` $$ CREATE PROCEDURE `mlAgCategoria`( IN chrDescripcion VARCHAR(30) ) BEGIN DECLARE nCuantos INT; SELECT COUNT(*) INTO nCuantos FROM dicCategorias WHERE Descripcion = chrDescripcion;

77

IF nCuantos=0 THEN INSERT INTO dicCategorias VALUES(NULL,chrDescripcion); END IF; END $$ -- ------------------------------------------------------------------------------------- Procedure: Para mantenimiento de dicUnidades -- -----------------------------------------------------------------------------------DROP PROCEDURE IF EXISTS `mlAgTipoMedida` $$ CREATE PROCEDURE `mlAgTipoMedida`( chrDescripcion VARCHAR(40), intCantidad INT, chrAbreviatura VARCHAR(20) ) BEGIN DECLARE nCuantos INT; SELECT COUNT(*) INTO nCuantos FROM dicTipoMedida WHERE Descripcion = chrDescripcion; IF nCuantos=0 THEN INSERT INTO dicTipoMedida VALUES(NULL,chrDescripcion,intCantidad,chrAbreviatura); END IF; END $$ -- ------------------------------------------------------------------------------------- Procedure: Para mantenimiento de tblProductos -- -----------------------------------------------------------------------------------DROP PROCEDURE IF EXISTS `mlAgProducto` $$ CREATE PROCEDURE `mlAgProducto`( IN intCategoria INT, chrCodBarras VARCHAR(20), chrDescripcion VARCHAR(60), chrObs VARCHAR(40) ) BEGIN DECLARE nCuantos INT; IF LENGTH(chrCodBarras) = 0 THEN SELECT COUNT(*) INTO nCuantos FROM tblProductos WHERE Descripcion = chrDescripcion ; ELSE SELECT COUNT(*) INTO nCuantos FROM tblProductos WHERE CodBarra = chrCodBarras ; END IF; IF nCuantos=0 THEN INSERT INTO tblProductos VALUES(NULL,intCategoria,chrCodBarras,chrDescripcion,chrObs); END IF; END $$ -- ------------------------------------------------------------------------------------- Procedure: Para mantenimiento de tblProveedores -- -----------------------------------------------------------------------------------DROP PROCEDURE IF EXISTS `mlAgProveedores` $$ CREATE PROCEDURE `mlAgProveedores`( IN chrNombreDesc VARCHAR(60), chrRazSocial VARCHAR(40), chrDireccion VARCHAR(40), chrTelefono VARCHAR(40) ) BEGIN DECLARE nCuantos INT; SELECT COUNT(*) INTO nCuantos FROM tblProveedores WHERE Nombre = chrNombreDesc; IF nCuantos=0 THEN -- INSERT INTO tblProveedores VALUES(NULL,chrNombreDesc,chrRazSocial); INSERT INTO tblProveedores VALUES(NULL,chrNombreDesc,chrRazSocial,chrDireccion,chrTelefono); END IF; END $$ -- ------------------------------------------------------------------------------------- Procedure: Para mantenimiento de tblUsuarios -- -----------------------------------------------------------------------------------DROP PROCEDURE IF EXISTS `mlPonClaveUs` $$

78

CREATE PROCEDURE `mlPonClaveUs`( IN chrUsuario VARCHAR(40), chrClave VARCHAR(40) ) BEGIN UPDATE tblUsuarios SET Clave=PASSWORD(chrClave) WHERE Usuario = chrUsuario; END $$ -- ------------------------------------------------------------------------------------- Funcion Personalizada: -- -----------------------------------------------------------------------------------DROP FUNCTION IF EXISTS `mlGetMaxProds` $$ CREATE FUNCTION `mlGetMaxProds`() RETURNS int BEGIN DECLARE nCont INT; SELECT COUNT(*) INTO nCont FROM tblProductos; RETURN nCont; END $$ -- -------------------------------------------------------------------------------------- Procedure: Para mantenimiento de tblAdquisiciones + detAdquisiciones -- Parametros: Los campos de la Tabla Master -- Devuelve: El ID con el que fue insertado para los Detail --- CALL mlSaveAdqs(2,2,2,2,'121','2009-12-12','Prueba'); -- ------------------------------------------------------------------------------------DROP PROCEDURE IF EXISTS `mlSaveAdqs` $$ CREATE PROCEDURE `mlSaveAdqs` ( nIdUsuario INT, nIdProveedor INT, nIdTipoDoc INT, nIdEstado INT, sNumero VARCHAR(20), sFechaHora VARCHAR(22), sReferencias VARCHAR(100), fValCambio DOUBLE ) BEGIN DECLARE nAdqsID INT; -- Fase de insercion y obtencion del ultimo ID INSERT INTO tblAdquisiciones VALUES ( NULL, nIdUsuario, nIdProveedor, nIdTipoDoc, nIdEstado, sNumero, sFechaHora, sReferencias, fValCambio ); SELECT Id INTO nAdqsID FROM tblAdquisiciones ORDER BY Id DESC LIMIT 1; -- Valor a Devolver como Unica Recordset SELECT nAdqsId; END $$ -- ------------------------------------------------------------------------------------ Detalle de Adquisiciones `detAdquisiciones` -- ----------------------------------------------------------------------------------DROP PROCEDURE IF EXISTS `mlSaveDetAdqs` $$ CREATE PROCEDURE `mlSaveDetAdqs` ( nIdAdquisicion INT, nIdProducto INT, nIdTipoMedida INT, fCantidad DOUBLE, fPrecioUni DOUBLE, fPrecioTotal DOUBLE ) BEGIN INSERT INTO detAdquisiciones VALUES ( NULL, nIdAdquisicion, nIdProducto, nIdTipoMedida, fCantidad, fPrecioUni, fPrecioTotal ); END $$

79

-- ------------------------------------------------------------------------------------- Detalle de Adquisiciones `mlCreatePrices` --- Creamos la tabla de precios de acuerdo a los documentos que emite -- el local de venta, para iniciar todos en 0 -- -----------------------------------------------------------------------------------DROP PROCEDURE IF EXISTS `mlCreatePrices` $$ CREATE PROCEDURE `mlCreatePrices` ( nIdProducto INT, fPrecio DOUBLE ) BEGIN DECLARE nCuantos INT; SELECT COUNT(*) INTO nCuantos FROM tblPrecios WHERE IdProducto = nIdProducto; IF nCuantos >=1 THEN DELETE FROM tblPrecios WHERE IdProducto = nIdProducto; END IF; -- Seleccionar todos los Docs, e insertar INSERT INTO tblPrecios SELECT NULL, nIdProducto, Id, fPrecio FROM `dicDocVentas` ORDER BY Id; END $$ -- ------------------------------------------------------------------------------------- Procedure: Para mantenimiento de mlGrabarVentas + DetalleVentas -- Parametros: Los campos de la Tabla Master -- Devuelve: El ID con el que fue insertado para los Detail --- CALL mlGrabarVentas( 1, 1, 1, 'jhsd', 'jhsd', 'jhsd', 'jhsd' ); -- -----------------------------------------------------------------------------------DROP PROCEDURE IF EXISTS `mlGrabarVentas` $$ CREATE PROCEDURE `mlGrabarVentas` ( IdTipoDoc INT, IdUsuario INT, IdEstado INT, Nombres VARCHAR(50), RazSocial VARCHAR(50), FechaHora VARCHAR(50), Obs VARCHAR(50), Dscto DOUBLE ) BEGIN DECLARE nVentaID INT; -- Fase de insercion y obtencion del ultimo ID INSERT INTO tblVentas VALUES ( NULL, IdTipoDoc, IdUsuario, IdEstado, Nombres, RazSocial, FechaHora, Obs, Dscto ); SELECT Id INTO nVentaID FROM tblVentas ORDER BY Id DESC LIMIT 1; -- Valor a Devolver como Unica Recordset SELECT nVentaID; END $$ -- ------------------------------------------------------------------------------------- Detalle de Adquisiciones `mlDetalleVentas` --- Almacenar las ventas -- -----------------------------------------------------------------------------------DROP PROCEDURE IF EXISTS `mlDetalleVentas` $$ CREATE PROCEDURE `mlDetalleVentas` ( IdVenta INT, IdProducto INT, IdTipoMedida INT, Cantidad DOUBLE, PrecioUnitario DOUBLE,

80

PrecioTotal Serie ) BEGIN

DOUBLE, VARCHAR(30)

INSERT INTO detVentas VALUES ( NULL, IdVenta, IdProducto, IdTipoMedida, Cantidad, PrecioUnitario, PrecioTotal, Serie ); END $$ DELIMITER ;

-- ---------------------------------------------------------------------- Creacion de (Views) Vistas -- --------------------------------------------------------------------DROP VIEW IF EXISTS `vwPrecioProds` ; CREATE ALGORITHM = UNDEFINED VIEW vwPrecioProds AS SELECT P.Id AS Id, P.IdProducto, D.Id AS IdPre, D.Descripcion, P.Precio FROM dicDocVentas AS D, tblPrecios AS P WHERE D.Id = P.IdTipoPrecio ORDER BY P.Id, P.IdTipoPrecio ;

DROP VIEW IF EXISTS `vwPrecioVenta` ; CREATE ALGORITHM = UNDEFINED VIEW vwPrecioVenta AS SELECT TP.Id, TP.CodBarra, TP.Descripcion, P.IdTipoPrecio, P.Precio, (SELECT DC.Descripcion FROM detAdquisiciones DA, tblAdquisiciones TA, dicDocCompras DC WHERE DA.IdProducto = TP.Id AND DA.IdAdquisicion = TA.Id AND TA.IdTipoDoc = DC.Id ORDER BY DA.Id DESC LIMIT 1) AS DocCompra FROM tblProductos AS TP, tblPrecios AS P WHERE TP.Id = P.IdProducto ;

DROP VIEW IF EXISTS `vwHistPrecios` ; CREATE ALGORITHM = UNDEFINED VIEW vwHistPrecios AS SELECT DA.IdProducto, TA.FechaHora, DA.PrecioUnitario, DC.Descripcion AS DocCompra FROM detAdquisiciones AS DA, tblAdquisiciones AS TA, dicDocCompras AS DC WHERE DA.IdAdquisicion = TA.Id AND TA.IdTipoDoc = DC.Id ORDER BY DA.IdProducto DESC, DA.Id DESC ;

DROP VIEW IF EXISTS `vwListaCompras` ; CREATE ALGORITHM = UNDEFINED VIEW vwListaCompras AS SELECT A.Id, A.IdTipoDoc, C.Descripcion, A.IdEstado, E.Descripcion AS EstCompra, A.Numero, DATE(A.FechaHora) AS Fecha, P.Nombre AS ProvNombre, P.RazonSoc AS ProvRUC, TRUNCATE(SUM(DA.PrecioUnitario),2) AS TPU, TRUNCATE(SUM(DA.PrecioTotal),2) AS TPT, TRUNCATE(SUM(DA.PrecioTotal*A.ValCambio),2) AS TPSoles FROM tblAdquisiciones AS A, detAdquisiciones AS DA, dicDocCompras AS C, dicEstadosCompra AS E, tblProveedores AS P WHERE A.Id = DA.IdAdquisicion AND C.Id = A.IdTipoDoc AND E.Id = A.IdEstado AND P.Id = A.IdProveedor GROUP BY A.Id ;

DROP VIEW IF EXISTS `vwDetLstCompras` ; CREATE ALGORITHM = UNDEFINED VIEW vwDetLstCompras AS SELECT DA.Id, DA.IdAdquisicion, DA.IdProducto, DM.Descripcion AS TipMedida, DA.IdTipoMedida, TP.Descripcion, DA.Cantidad, DA.PrecioUnitario, DA.PrecioTotal

81

FROM detAdquisiciones AS DA, tblProductos AS TP, dicTipoMedida AS DM WHERE DA.IdProducto = TP.Id AND IdTipoMedida = DM.Id ORDER BY TP.Id;

DROP VIEW IF EXISTS `vwListaVentas` ; CREATE ALGORITHM = UNDEFINED VIEW vwListaVentas AS SELECT V.Id, V.IdTipoDoc, U.Usuario, V.IdEstado, V.Nombres, V.Dscto, DATE(V.FechaHora) AS Fecha, COUNT(V.Id) AS CantArticulos, TRUNCATE(SUM(DV.PrecioUnitario),2) AS TPU, TRUNCATE(SUM(DV.PrecioTotal),2) AS TPT -- SUM(DV.PrecioTotal) AS valTPT FROM tblVentas AS V, detVentas AS DV, tblUsuarios AS U WHERE V.Id = DV.IdVenta AND V.IdUsuario = U.Id GROUP BY V.Id ;

DROP VIEW IF EXISTS `vwStockProds` ; CREATE ALGORITHM = UNDEFINED VIEW vwStockProds AS SELECT P.Id, P.IdCategoria, P.Descripcion, P.Obs AS Marca, SUM(A.Cantidad) AS Stock, ( SELECT SUM(Cantidad) FROM detVentas WHERE IdProducto = P.Id GROUP BY IdProducto ) AS Vendidos FROM detAdquisiciones A, tblProductos P WHERE A.IdProducto = P.Id GROUP BY A.IdProducto ; -- ---------------------------------------------------------------------- Para el listado de Productos vendidos por Fecha -- --------------------------------------------------------------------DROP VIEW IF EXISTS `vwLstDetVentas` ; CREATE ALGORITHM = UNDEFINED VIEW vwLstDetVentas AS SELECT V.Id AS IdVenta, D.Id AS IdDocVenta, D.Descripcion AS DocVenta, U.Usuario, E.Descripcion AS DescECompra, V.Nombres, V.RazSocial, DATE(V.FechaHora) AS Fecha, V.Dscto, SUM(DV.Cantidad) AS LaCantidad, DV.IdProducto, P.Descripcion, SUM(DV.PrecioTotal) AS LePrecioTotal, SUM(DV.PrecioTotal-V.Dscto) AS LePrecioCaja FROM tblVentas AS V, detVentas AS DV, dicDocVentas AS D, tblUsuarios AS U, dicEstadosCompra AS E, tblProductos AS P WHERE V.Id = DV.IdVenta AND V.IdTipoDoc = D.Id AND V.IdUsuario = U.Id AND V.IdEstado = E.Id AND DV.IdProducto = P.Id GROUP BY Fecha, P.Id, IdDocVenta ORDER BY P.Id ;

-- NOTA: Las modificaciones en la tabla tblVentas y sobre todo en la tabal detVentas -- al agregarle la serie han de ser mostrados en la ventana de recuperacion de ventas -- anteriores.

82

//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop //--------------------------------------------------------------------------USEFORM("CodPrincipal.cpp", MdiPrincipal); USEFORM("CodLogo.cpp", DlgLogo); USEFORM("CodSesiones.cpp", DlgSesion); USEFORM("CodMantStock.cpp", DlgMantStock); USEFORM("CodVentas.cpp", ChdVentas); USEFORM("CodConfiguracion.cpp", DlgConfigurar); USEFORM("CodProductos.cpp", DlgProductos); USEFORM("CodCompras.cpp", DlgCompras); USEFORM("CodProveedores.cpp", DlgProveedores); USEFORM("CodPrecios.cpp", DlgPrecios); USEFORM("CodBuscarProd.cpp", DlgBuscarProd); USEFORM("CodRepVentas.cpp", ChdRepVentas); USEFORM("CodAvisaVenta.cpp", DlgAvisaVenta); USEFORM("CodBuscarAdqs.cpp", DlgBuscarAdqs); USEFORM("CodMantUsuarios.cpp", DlgMantUsers); USEFORM("CodRepTicket.cpp", ChdRepTicket); USEFORM("CodRanking.cpp", ChdRanking); USEFORM("CodRegProforma.cpp", ChdRegProforma); USEFORM("CodBuscarProfs.cpp", DlgBuscarProf); USEFORM("CodMoneda.cpp", DlgMoneda); USEFORM("CodReportes.cpp", DlgReportes); USEFORM("CodRepCompras.cpp", ChdRepCompras); USEFORM("CodBuscarVentas.cpp", DlgBuscarVentas); USEFORM("CodRepStock.cpp", ChdRepStock); USEFORM("CodRepDetVenta.cpp", ChdRepDetVenta); USEFORM("CodRepDiario.cpp", DlgRepDiario); USEFORM("CodCobros.cpp", ChdCobros); USEFORM("CodCategProds.cpp", DlgCategProd); //--------------------------------------------------------------------------WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->Title = "Mi Libreria"; Application->CreateForm(__classid(TMdiPrincipal), &MdiPrincipal); Application->CreateForm(__classid(TChdRepTicket), &ChdRepTicket); Application->CreateForm(__classid(TDlgRepDiario), &DlgRepDiario); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { try { throw Exception(""); } catch (Exception &exception) { Application->ShowException(&exception); } } return 0; } //---------------------------------------------------------------------------

object MdiPrincipal: TMdiPrincipal Left = 0 Top = 14 Width = 1024 Height = 715 Caption = '[ Mi Programa ]' Color = 15917273

83

Font.Charset = ANSI_CHARSET Font.Color = clWindowText Font.Height = -13 Font.Name = 'Arial' Font.Style = [fsBold] FormStyle = fsMDIForm OldCreateOrder = False OnClose = FormClose OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 16 object ImgWall: TImage Left = 312 Top = 8 Width = 500 Height = 136 AutoSize = True Picture.Data = { 0A544A504547496D616765E4660000FFD8FFE100E645786966000049492A0008 0000000500120103000100000001000000310102001C0000004A000000320102 00140000006600000013020300010000000100000069870400010000007A0000 00000000004143442053797374656D73204469676974616C20496D6167696E67 00323031313A30343A31372031353A31393A3538000500009007000400000030 32323090920200040000003836390002A0040001000000F401000003A0040001 0000008800000005A0040001000000BC00000000000000020001000200040000 005239380002000700040000003031303000000000D8D9DADBFFC00011080088 01F403012100021101031101FFDB008400030202020201030202020303030304 07040404040409060605070A090B0B0A090A0A0C0D110E0C0C100C0A0A0F140F 1011121313130B0E151615121611121312010405050605060D07070D1B120F12 D7F0DED7EFDDD6F0DED7F0DED7EFDDD6EFDDD7F0DED7F0DED7EFDDD6F0DED7F0 DED7F0DED7EFDDD6F0DED7F0DED7EFDED7EFDDD6F0DED7F0DED7EFDDD6F0DED7 F0DED7F0DED7EFDDD6F0DED7F0DED7EFDED7EFDDD6F0DED7F0DED7EFDDD6F0DE F0DED7F0DED7EFDDD6F0DED7F0DED7EFDED7EFDDD6F0DED7F0DED7EFDDD6F0DE D7F0DED7F0DED7EFDDD6F0DED7F0DED7EFDED7EFDDD6F0DED7F0DED7EFDDD6F0 DED7F0DED7F0DED7EFDDD6F0DED7F0DED7F0DED7EFDDD6F0DED7F0DED7EFDDD6 EFDED7F0DED7F0DED7EFDDD6F0DED7F0DED7F0DED7EFDDD6F0DED7F0DED7EFDD D6EFDDD7F0DED7F0DED7EFDDD6F0DED70000} end object Panel1: TPanel Left = 0 Top = 0 Width = 224 Height = 651 Align = alLeft Color = 15134950 TabOrder = 0 object BtnCerrar: TSpeedButton Left = 10 Top = 48 Width = 200 Height = 41 Hint = 'Salir' Caption = 'CERRAR PROGRAMA' Flat = True Glyph.Data = { 36030000424D3603000000000000360000002800000010000000100000000100 1800000000000003000000000000000000000000000000000000FF00FFFF00FF FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF4C4C4CFF00FFFF00FFFF 00FFFF00FFFF00FF4C4C4CA3A3FF4C4C4CFF00FFFF00FFFF00FFFF00FFFF00FF FF00FFFF00FF4C4C4CFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF4C4C4CFF00 FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} Margin = 12 ParentShowHint = False ShowHint = True OnClick = BtnCerrarClick end object Label1: TLabel Left = 10 Top = 8 Width = 200 Height = 25 Alignment = taCenter AutoSize = False Caption = 'MENU PRINCIPAL' Color = clGreen

84

Font.Charset = ANSI_CHARSET Font.Color = clWhite Font.Height = -13 Font.Name = 'Arial' Font.Style = [fsBold] ParentColor = False ParentFont = False Layout = tlCenter end object BtnIniSesion: TSpeedButton Left = 10 Top = 116 Width = 200 Height = 41 Hint = 'Iniciar Sesion' Caption = ' INICIAR SESION' Flat = True Glyph.Data = { 36030000424D3603000000000000360000002800000010000000100000000100 1800000000000003000000000000000000000000000000000000FF00FFFF00FF FF00FFFF00FF4C4C4C6969696969696969696969696969696969696969696969 696969696969694C4C4CFF00FFFF00FFFF00FFFF00FF4C4C4CE2E2E2D1D1D1D1 D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1B4B4B4696969FF00FFFF00FF FF00FFFF00FF4C4C4CF2F2F2F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 F9F9F9F9E8E8E8696969FF00FFFF00FFFF00FFFF00FF9797974C4C4C4C4C4C4C 4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C} Margin = 12 ParentShowHint = False ShowHint = True OnClick = BtnIniSesionClick end object BtnFinSesion: TSpeedButton Left = 10 Top = 160 Width = 200 Height = 41 Hint = 'Cerrar Sesion' Caption = ' CERRAR SESION' Enabled = False Flat = True Glyph.Data = { 36030000424D3603000000000000360000002800000010000000100000000100 1800000000000003000000000000000000000000000000000000FF00FFFF00FF FF00FFFF00FF4C4C4C6969696969696969696969696969696969696969696969 696969696969694C4C4CFF00FFFF00FFFF00FFFF00FF4C4C4CE2E2E2D1D1D1D1 D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1B4B4B4696969FF00FFFF00FF E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8D1D1D1696969FF00FFFF00FF FF00FFFF00FF4C4C4CF2F2F2F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 F9F9F9F9E8E8E8696969FF00FFFF00FFFF00FFFF00FF9797974C4C4C4C4C4C4C 4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C} Margin = 12 ParentShowHint = False ShowHint = True OnClick = BtnFinSesionClick end object BtnManStock: TSpeedButton Left = 10 Top = 228 Width = 200 Height = 41 Hint = 'Agregar o Eliminar Stock' Caption = ' MANTENIMIMIENTO' Flat = True Glyph.Data = { 36030000424D3603000000000000360000002800000010000000100000000100 1800000000000003000000000000000000000000000000000000FF00FFFF00FF D7D7D74C4C4C4C4C4C4C4C4CA9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9 A94C4C4CFF00FFFF00FFFF00FFFF00FF4C4C4CF2F2F2A9A9A9A9A9A9C0C0C0C0 C0C0C0C0C0C0C0C0D7D7D7C0C0C0A9A9A94C4C4CFF00FFFF00FFFF00FFFF00FF FF00FF4C4C4CF2F2F2D7D7D7D7D7D7D7D7D7D7D7D7D7D7D74C4C4CD7D7D7C0C0 C04C4C4CFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF4C4C4C4C4C4C4C4C4C4C 4C4C4C4C4C4C4C4CF2F2F24C4C4C4C4C4C4C4C4CFF00FFFF00FF} Margin = 12 ParentShowHint = False ShowHint = True OnClick = BtnManStockClick end

85

object Label2: TLabel Left = 10 Top = 104 Width = 200 Height = 10 Alignment = taCenter AutoSize = False Color = 65408 Font.Charset = ANSI_CHARSET Font.Color = clWhite Font.Height = -13 Font.Name = 'Arial' Font.Style = [fsBold] ParentColor = False ParentFont = False Layout = tlCenter end object Label3: TLabel Left = 10 Top = 216 Width = 200 Height = 10 Alignment = taCenter AutoSize = False Color = 65408 Font.Charset = ANSI_CHARSET Font.Color = clWhite Font.Height = -13 Font.Name = 'Arial' Font.Style = [fsBold] ParentColor = False ParentFont = False Layout = tlCenter end object BtnVender: TSpeedButton Left = 10 Top = 272 Width = 200 Height = 41 Hint = 'Vender' Caption = ' REGISTRAR VENTAS' Flat = True Glyph.Data = { 36030000424D3603000000000000360000002800000010000000100000000100 1800000000000003000000000000000000000000000000000000FF00FFFF00FF FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 FFFF00FFFF00FFFF00FFFF00FF4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C 4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4CFF00FFFF00FF4C4C4C FFD1A3E8C097E8C097E8C097E8C097D7A97B69C6C69DE2E29DE2E29DE2E29DE2 4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C 4C4C4C4C4C4C4CFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} Margin = 12 ParentShowHint = False ShowHint = True OnClick = BtnVenderClick end object BtnReportes: TSpeedButton Left = 10 Top = 388 Width = 200 Height = 41 Hint = 'Lista de Reportes' Caption = ' R E P O R T E S' Flat = True Glyph.Data = { 36030000424D3603000000000000360000002800000010000000100000000100 FF00FF4C4C4CF2F2F2F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 F9E8E8E8696969FF00FFFF00FFFF00FFFF00FF97979769696969696969696969 69696969696969696969694C4C4C4C4C4C4C4C4C4C4C4CFF00FF} Margin = 12 ParentShowHint = False ShowHint = True OnClick = BtnReportesClick end object BtnRanking: TSpeedButton Left = 10

86

Top = 432 Width = 200 Height = 41 Hint = 'Reportes de Venta' Caption = ' RECORD DE VENTAS' Flat = True Glyph.Data = { 36030000424D3603000000000000360000002800000010000000100000000100 1800000000000003000000000000000000000000000000000000FF00FFFF00FF FF00FFFF00FFFF00FFFF00FF4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C6969 696969694C4C4CFF00FFFF00FFFF00FFFF00FFFF00FF4C4C4C4C4C4C4CAEDD4C FF00FF4C4C4CF2F2F2F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 F9E8E8E8696969FF00FFFF00FFFF00FFFF00FF97979769696969696969696969 69696969696969696969694C4C4C4C4C4C4C4C4C4C4C4CFF00FF} Margin = 12 ParentShowHint = False ShowHint = True OnClick = BtnRankingClick end object BtnCobrar: TSpeedButton Left = 10 Top = 318 Width = 200 Height = 41 Hint = 'Vender' Caption = ' COBRAR' Flat = True Glyph.Data = { 36030000424D3603000000000000360000002800000010000000100000000100 1800000000000003000000000000000000000000000000000000FF00FFFF00FF FF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00 FFFF00FFFF00FFFF00FFFF00FF4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C 4C4C4C4C4C4C4CFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF 00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FFFF00FF} Margin = 12 ParentShowHint = False ShowHint = True OnClick = BtnCobrarClick end object Label4: TLabel Left = 10 Top = 376 Width = 200 Height = 10 Alignment = taCenter AutoSize = False Color = 65408 Font.Charset = ANSI_CHARSET Font.Color = clWhite Font.Height = -13 Font.Name = 'Arial' Font.Style = [fsBold] ParentColor = False ParentFont = False Layout = tlCenter end end object SbrItem: TStatusBar Left = 0 Top = 651 Width = 1008 Height = 26 Panels = < item Text = 'Inicie Sesion' Width = 200 end item Width = 550 end item Text = '23 de Setiembre de 2010 - 11:12:00 pm' Width = 50 end> SimplePanel = False end object adoCentral: TADOConnection

87

ConnectionString = 'driver={MySQL ODBC 3.51 Driver};server=localhost;uid=root;databa' + 'se=DB-MIFERRETERIAv1;connection=;' LoginPrompt = False Provider = 'MSDASQL.1' Left = 232 Top = 8 end object TmrClock: TTimer Interval = 500 OnTimer = TmrClockTimer Left = 264 Top = 8 end end

//--------------------------------------------------------------------------#ifndef CodPrincipalH #define CodPrincipalH //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <Buttons.hpp> #include <ComCtrls.hpp> #include <ADODB.hpp> #include <DB.hpp> #include <Graphics.hpp> #include <jpeg.hpp> //--------------------------------------------------------------------------class TMdiPrincipal : public TForm { __published: // IDE-managed Components TPanel *Panel1; TLabel *Label1; TLabel *Label2; TLabel *Label3; TLabel *Label4; TSpeedButton TSpeedButton TSpeedButton TSpeedButton TSpeedButton TSpeedButton TSpeedButton TSpeedButton *BtnCerrar; *BtnIniSesion; *BtnFinSesion; *BtnManStock; *BtnVender; *BtnRanking; *BtnCobrar; *BtnReportes; *SbrItem; *adoCentral;

TStatusBar TADOConnection TTimer TImage TImage TImage void void void void void void void void void void void private:

*TmrClock; *ImgWall; *Image1; *Image2; FormCreate(TObject *Sender); FormClose(TObject *Sender, TCloseAction &Action); BtnCerrarClick(TObject *Sender); BtnIniSesionClick(TObject *Sender); BtnFinSesionClick(TObject *Sender); BtnManStockClick(TObject *Sender); BtnVenderClick(TObject *Sender); TmrClockTimer(TObject *Sender); BtnReportesClick(TObject *Sender); BtnRankingClick(TObject *Sender); BtnCobrarClick(TObject *Sender);

__fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall

// User declarations

88

void public:

mlEstadoSesion( bool bEstado ); // User declarations

__fastcall TMdiPrincipal(TComponent* Owner); }; //--------------------------------------------------------------------------extern PACKAGE TMdiPrincipal *MdiPrincipal; //--------------------------------------------------------------------------#endif

#include <vcl.h> #pragma hdrstop #include "CodGlobal.h" #include #include #include #include #include #include #include #include #include #include #include "CodPrincipal.h" "CodConfiguracion.h" "CodLogo.h" "CodSesiones.h" "CodMantStock.h" "CodVentas.h" "CodReportes.h" "CodRanking.h" "CodRegProforma.h" "CodMoneda.h" "CodCobros.h"

//--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" TMdiPrincipal *MdiPrincipal; AnsiString genStrUsuario AnsiString genStrCodUsuario int genIntCodUsuario int genIntNivelUso; float genCambioDolar = int genUltimaCateg = = ""; = ""; = 0; 0; 0;

///-- Modulo de carga mlSecurity // Historial: // Paso 1: Crear DLL en VC++ 6.0 lib en fomrato COFF // Paso 2: Convertir COFF Lib a OMF, coff2omf -v -lib:ms mlUno.lin mlDos.lib // el segundo .LIB es OMF se puede compilar con BCB // Paso 3: No enlaza... no se que pasa. // Paso 4: Enlace Manual LoadLibrary // // Paso 5: Recompilamos la DLL usando extern "C", en la importaciones // como en las exportaciones // Paso 6: Agregar a C++Builder en Project-Add To Project (.lib) // Agregar las referencias, compilar y OK // #define #define #define MS_NOEXIST MS_INVALID MS_SUCCES 1 2 3

#define ML_SECURUTY_API extern "C" __declspec(dllimport) #define #define #define MS_NOEXIST MS_INVALID MS_SUCCES 1 2 3

ML_SECURUTY_API int mlSecVerify(); ML_SECURUTY_API void mlSecSaveSerie();

89

int mlSec4Verify( ) { return 0; } /// //--------------------------------------------------------------------------__fastcall TMdiPrincipal::TMdiPrincipal(TComponent* Owner) : TForm(Owner) { TDlgLogo *dlgLogo = new TDlgLogo(this); dlgLogo->Show(); } //--------------------------------------------------------------------------void __fastcall TMdiPrincipal::FormCreate(TObject *Sender) { // Provider=MSDASQL.1;Extended Properties="DATABASE=DB-MILIBRERIAv1;DRIVER={MySQL ODBC 3.51 Driver};OPTION=0;PORT=0;SERVER=localhost;UID=root;" // los principales this->Caption = ML_TITULO; this->WindowState = wsMaximized; //this->Hint = Mi Libreria :: Software & Soluciones // otros controles this->SbrItem->Font = this->Font; this->SbrItem->Font->Size = 13; // Poner a punto los controles // seguridad anti-recompilado script // BtnFinSesion -> Enabled = false; BtnManStock -> Enabled = false; BtnVender -> Enabled = false; BtnReportes -> Enabled = false; BtnRanking -> Enabled = false; BtnCobrar -> Enabled = false; } //--------------------------------------------------------------------------void __fastcall TMdiPrincipal::FormClose(TObject *Sender, TCloseAction &Action) { if( Application->MessageBox( "Esta accin cerrara este programa, desea continuar ?", "Salir del Programa", MB_YESNO | MB_ICONQUESTION ) == IDNO ) { Action = caNone; } } //--------------------------------------------------------------------------void __fastcall TMdiPrincipal::BtnCerrarClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------void { TMdiPrincipal::mlEstadoSesion( bool bEstado )

BtnIniSesion->Enabled = !bEstado; BtnFinSesion->Enabled = bEstado; BtnVender->Enabled = bEstado; //BtnProforma->Enabled = bEstado; // solo para el administrador if( genIntNivelUso == 1 ) { BtnReportes->Enabled = bEstado; BtnManStock->Enabled = bEstado; BtnRanking->Enabled = bEstado;

90

BtnCobrar->Enabled = bEstado; } } void __fastcall TMdiPrincipal::BtnIniSesionClick(TObject *Sender) { // si es posible conectarse a MySQL - local o remoto TDlgConfigurar *DlgConfigurar = new TDlgConfigurar(this); if( DlgConfigurar->ShowModal() == mrOk ) { // driver={MySQL ODBC 3.51 Driver};server=localhost;uid=root;pwd=;database=DBMILIBRERIAv1;connection= // /* "driver={MySQL ODBC 3.51 Driver}" + ";server=localhost" + ";uid=root;pwd=" + ";database=;port=" + ";connection="; */ String strConection; if( DlgConfigurar->EdtClave->Text.IsEmpty() ) strConection.sprintf( "driver={MySQL ODBC 3.51 Driver};" "server=%s;uid=root;pwd=;" "database=%s;port=%s;connection=" , DlgConfigurar->EdtHost->Text , DlgConfigurar->EdtCatalog->Text , DlgConfigurar->EdtPort->Text ); else strConection.sprintf( "driver={MySQL ODBC 3.51 Driver};" "server=%s;uid=root;pwd=%s;" "database=%s;port=%s;connection=" , DlgConfigurar->EdtHost->Text , DlgConfigurar->EdtClave->Text , DlgConfigurar->EdtCatalog->Text , DlgConfigurar->EdtPort->Text ); // Antes de Eliminar el dialogo, conectamos a MySQL adoCentral->Close(); adoCentral->DefaultDatabase = ""; adoCentral->ConnectionString = strConection; adoCentral->Open(); //-----------------------------------------------------------// Disparar el dialogo de Acceso //-----------------------------------------------------------TDlgSesion *dlSesion = new TDlgSesion(this); if( dlSesion->ShowModal() == mrOk ) { // datos de USUARIO mlEstadoSesion( true ); SbrItem->Panels->Items[0]->Text = "Usuario: " + genStrUsuario; } delete dlSesion; } //--delete DlgConfigurar; } //--------------------------------------------------------------------------void __fastcall TMdiPrincipal::BtnFinSesionClick(TObject *Sender) { mlEstadoSesion( false ); SbrItem->Panels->Items[0]->Text = "Inicie Sesion"; } //---------------------------------------------------------------------------

91

void __fastcall TMdiPrincipal::BtnManStockClick(TObject *Sender) { TDlgMantStock *dlgMantStock = new TDlgMantStock(this); dlgMantStock->ShowModal(); delete dlgMantStock; } //--------------------------------------------------------------------------void __fastcall TMdiPrincipal::BtnVenderClick(TObject *Sender) { TChdVentas *chdVentas = new TChdVentas(this); chdVentas->Show(); } //--------------------------------------------------------------------------void __fastcall TMdiPrincipal::BtnReportesClick(TObject *Sender) { TDlgReportes *dlgReportes = new TDlgReportes(this); dlgReportes->ShowModal(); delete dlgReportes; } //--------------------------------------------------------------------------void __fastcall TMdiPrincipal::TmrClockTimer(TObject *Sender) { SbrItem->Panels->Items[2]->Text = mlGetLongDateTime(); } //--------------------------------------------------------------------------void __fastcall TMdiPrincipal::BtnRankingClick(TObject *Sender) { TChdRanking *chdRanking = new TChdRanking(this); chdRanking->Show(); } //--------------------------------------------------------------------------void __fastcall TMdiPrincipal::BtnCobrarClick(TObject *Sender) { TChdCobros *chdRegCobro = new TChdCobros(this); chdRegCobro->Show(); } //---------------------------------------------------------------------------

//--------------------------------------------------------------------------#ifndef CodCategProdsH #define CodCategProdsH //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <ADODB.hpp> #include <Buttons.hpp> #include <DB.hpp> #include <DBGrids.hpp> #include <Grids.hpp> //--------------------------------------------------------------------------class TDlgCategProd : public TForm { __published: // IDE-managed Components TADOTable *TblCateg; TADOTable *TblProductos; TDataSource *SrcProductos; TPanel *Panel1; TLabel *Label3; TLabel *Label2;

92

TComboBox *CboCategorias; TDBGrid *GrdProductos; TLabel *Label1; TComboBox *CboNewCateg; void __fastcall FormCreate(TObject *Sender); void __fastcall CboCategoriasClick(TObject *Sender); void __fastcall CboNewCategClick(TObject *Sender); private: void // User declarations OnRefrezcaCategorias();

public: // User declarations __fastcall TDlgCategProd(TComponent* Owner); }; //--------------------------------------------------------------------------//extern PACKAGE TForm1 *Form1; //--------------------------------------------------------------------------#endif //--------------------------------------------------------------------------#ifndef CodCobrosH #define CodCobrosH //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ADODB.hpp> #include <Buttons.hpp> #include <DB.hpp> #include <ExtCtrls.hpp> #include <Grids.hpp> #include <DBGrids.hpp> class CDemo0001 { }; //--------------------------------------------------------------------------class TChdCobros : public TForm { __published: // IDE-managed Components TADOTable *TblProveedores; TADOTable *TblTipoDoc; TADOTable *TblEstados; TADOTable *TblListaProds; TADOTable *TblUnidades; TADOStoredProc *spAgVentas; TADOStoredProc *mlSaveDetVnts; TStringGrid *GrdItems; TLabel TLabel TLabel TShape TPanel TEdit *lblState; *Label2; *Label3; *Shape1; *Panel1; *EdtItem; *BtnBuscar; *BtnCerrar; *BtnGrabar; *BtnRemProd; *EdtRefs; *EdtBarCode; *EdtRazSocial; *EdtFecha;

TSpeedButton TSpeedButton TSpeedButton TSpeedButton TLabeledEdit TLabeledEdit TLabeledEdit TLabeledEdit

TComboBox *CboTipoDoc;

93

TComboBox *CboEstados; TLabeledEdit *EdtTotal; TLabeledEdit *EdtFactura; TLabeledEdit *EdtIGVFact; TLabeledEdit *EdtVentaLibre; TLabeledEdit *EdtSubTotal; TLabeledEdit *EdtDscto; TSpeedButton *BtnAggProd; TLabeledEdit *EdtNoVenta; void __fastcall FormCreate(TObject *Sender); void __fastcall FormClose(TObject *Sender, TCloseAction &Action); void __fastcall BtnCerrarClick(TObject *Sender); void __fastcall BtnAggProdClick(TObject *Sender); void __fastcall BtnRemProdClick(TObject *Sender); void __fastcall GrdItemsKeyPress(TObject *Sender, char &Key); void __fastcall GrdItemsClick(TObject *Sender); //void __fastcall CboUnidadesClick(TObject *Sender); void __fastcall EdtItemChange(TObject *Sender); void __fastcall EdtItemExit(TObject *Sender); void __fastcall EdtItemKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); void __fastcall EdtItemKeyPress(TObject *Sender, char &Key); void __fastcall EdtBarCodeKeyUp(TObject *Sender, WORD &Key, TShiftState Shift); void __fastcall EdtBarCodeKeyPress(TObject *Sender, char &Key); void __fastcall CboTipoDocClick(TObject *Sender); void __fastcall BtnGrabarClick(TObject *Sender); void __fastcall EdtPagoKeyPress(TObject *Sender, char &Key); void __fastcall GrdItemsDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State); void __fastcall EdtDsctoChange(TObject *Sender); private: // User declarations

int nCountItems; String String String float float public: void bool void arrProdId[100]; arrUnidId[100]; arrEstados[100]; arrPrecios[100]; VentaTotal;

mlRecalculate(); mlAgregaProducto( int nMode, String exp ); mlPrepararTodo();

public: int nUltimaCategoria; public: // User declarations __fastcall TChdCobros(TComponent* Owner); }; //--------------------------------------------------------------------------#endif

//--------------------------------------------------------------------------#ifndef CodComprasH #define CodComprasH //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <ADODB.hpp> #include <DB.hpp> #include <Grids.hpp> #include <Buttons.hpp> #include <DBGrids.hpp> //--------------------------------------------------------------------------class TDlgCompras : public TForm { __published: // IDE-managed Components

94

TPanel *Panel1; TShape *Shape1; TStringGrid *GrdItems; TADOTable TADOTable TADOTable TADOTable *TblProveedores; *TblTipoDoc; *TblEstados; *TblUnidades; *EdtRazSocial; *EdtFecha; *EdtNroDoc; *EdtRefs; *EdtItem;

TLabeledEdit TLabeledEdit TLabeledEdit TLabeledEdit TEdit TComboBox TComboBox TComboBox TComboBox TLabel TLabel TLabel TLabel

*CboEstados; *CboProveedor; *CboTipoDoc; *CboUnidades;

*Label3; *Label2; *Label1; *lblState;

TSpeedButton *BtnGrabar; TSpeedButton *BtnBuscar; TSpeedButton *BtnRemProd; TSpeedButton *BtnCerrar; TSpeedButton *BtnAggProd; TADOStoredProc *spAgAdqs; TADOStoredProc *mlSaveDetAdqs; TADOTable *TblAdquisiciones; void void void void void void void void void void void void void void void void void void void void private: __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall FormCreate(TObject *Sender); CboProveedorKeyPress(TObject *Sender, char &Key); CboProveedorClick(TObject *Sender); BtnBuscarClick(TObject *Sender); CboTipoDocClick(TObject *Sender); BtnCerrarClick(TObject *Sender); BtnRemProdClick(TObject *Sender); BtnAggProdClick(TObject *Sender); BtnGrabarClick(TObject *Sender); GrdItemsClick(TObject *Sender); GrdItemsEnter(TObject *Sender); GrdItemsKeyPress(TObject *Sender, char &Key); CboEstadosClick(TObject *Sender); EdtItemChange(TObject *Sender); EdtItemKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); EdtItemKeyPress(TObject *Sender, char &Key); FormClose(TObject *Sender, TCloseAction &Action); EdtItemExit(TObject *Sender); CboUnidadesExit(TObject *Sender); CboUnidadesClick(TObject *Sender);

// User declarations

int nCountItems; bool bIsEditing; String arrProdId[200]; String arrUnidId[200]; void mlRecalculate(); public: // User declarations __fastcall TDlgCompras(TComponent* Owner); }; //--------------------------------------------------------------------------//extern PACKAGE TDlgCompras *DlgCompras; //--------------------------------------------------------------------------#endif

95

//--------------------------------------------------------------------------#ifndef CodConfiguracionH #define CodConfiguracionH //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <Buttons.hpp> #include <ScktComp.hpp> //--------------------------------------------------------------------------class TDlgConfigurar : public TForm { __published: // IDE-managed Components TPanel TShape TTimer *Panel1; *Shape1; *TmrTest; *lblState; *EdtHost; *EdtPort; *EdtCatalog;

TLabel TLabeledEdit TLabeledEdit TLabeledEdit

TSpeedButton *BtnCerrar; TSpeedButton *BtnGuardar; TSpeedButton *BtnConectar; TClientSocket *sckClient; TLabeledEdit *EdtClave; void __fastcall FormCreate(TObject *Sender); void __fastcall BtnCerrarClick(TObject *Sender); void __fastcall BtnGuardarClick(TObject *Sender); void __fastcall sckClientConnect(TObject *Sender, TCustomWinSocket *Socket); void __fastcall sckClientRead(TObject *Sender, TCustomWinSocket *Socket); void __fastcall sckClientError(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode); void __fastcall BtnConectarClick(TObject *Sender); void __fastcall TmrTestTimer(TObject *Sender); private: // User declarations

void OnCreateConfigs(); bool autoClose; public: // User declarations __fastcall TDlgConfigurar(TComponent* Owner); }; //--------------------------------------------------------------------------//extern PACKAGE TDlgConfigurar *DlgConfigurar; //--------------------------------------------------------------------------#endif

#include <stdio.h> #include <math.h> #include <DB.hpp> #define ML_TITULO "Ferreteria v1.a" #define ML_INFOFILE "MiFerreteriav1.inf" #define MySQLSTRING "driver={MySQL ODBC 3.51 Driver};server=localhost;uid=root;pwd=;database=DB-MIMODULOv1;connection="

96

extern extern extern extern extern extern extern

AnsiString AnsiString int int float int int

genStrUsuario; genStrCodUsuario; genIntCodUsuario; genIntNivelUso; genCambioDolar; genUltimaCateg; genOtroVariable;

struct mlCboItem { String strCod; int intCod; mlCboItem( String arg ); mlCboItem( int arg ); }; void int String String String void void mlAddToCombo( TComboBox *pCbo, TDataSet *pDataSet, int setItemIndex = -1 ); mlGetSelIntCod( TComboBox *pCbo ); mlGetSelStrCod( TComboBox *pCbo ); mlGetLongDateTime(); mlGetShortDateTime(); mlAddCatToCombo( TDataSet *pDataSet, TComboBox *pCbo, int nCategoria ); mlSetSelIntCod( TComboBox *pCbo, int nIdToSet );

//- Fin de definiciones

//--------------------------------------------------------------------------#ifndef CodLogoH #define CodLogoH //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <Graphics.hpp> #include <jpeg.hpp> //--------------------------------------------------------------------------class TDlgLogo : public TForm { __published: // IDE-managed Components TImage *ImgLogo; TTimer *TmLogo; void __fastcall TmLogoTimer(TObject *Sender); void __fastcall FormCreate(TObject *Sender); private: // User declarations public: // User declarations __fastcall TDlgLogo(TComponent* Owner); }; //--------------------------------------------------------------------------//extern PACKAGE TDlgLogo *DlgLogo; //--------------------------------------------------------------------------#endif

//--------------------------------------------------------------------------#ifndef CodMantStockH #define CodMantStockH //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp>

97

#include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <Buttons.hpp> #include <ADODB.hpp> #include <DB.hpp> //--------------------------------------------------------------------------class TDlgMantStock : public TForm { __published: // IDE-managed Components TShape *Shape1; TShape *Shape2; TLabel *lblState; TSpeedButton *BtnCerrar; TSpeedButton *BtnProductos; TSpeedButton TSpeedButton TSpeedButton TSpeedButton TSpeedButton void void void void void void void void private: *BtnCompras; *BtnProveedores; *BtnPrecios; *BtnUsuarios; *BtnAdmCateg; FormCreate(TObject *Sender); BtnProductosClick(TObject *Sender); BtnCerrarClick(TObject *Sender); BtnComprasClick(TObject *Sender); BtnProveedoresClick(TObject *Sender); BtnPreciosClick(TObject *Sender); BtnUsuariosClick(TObject *Sender); BtnAdmCategClick(TObject *Sender);

__fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall

// User declarations

public: // User declarations __fastcall TDlgMantStock(TComponent* Owner); }; //--------------------------------------------------------------------------//extern PACKAGE TDlgMantStock *DlgMantStock; //--------------------------------------------------------------------------#endif

//--------------------------------------------------------------------------#ifndef CodMantUsuariosH #define CodMantUsuariosH //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ADODB.hpp> #include <DB.hpp> #include <DBGrids.hpp> #include <ExtCtrls.hpp> #include <Grids.hpp> #include <Buttons.hpp> //--------------------------------------------------------------------------class TDlgMantUsers : public TForm { __published: // IDE-managed Components TDBGrid *GrdProveedores; TDataSource *SrcUsuarios; TADOTable *TblUsuarios; TLabel *Label1; TPanel *Panel1; TBitBtn *BtnCerrar; TBitBtn *BtnNuevo; TBitBtn *BtnGuardar; TLabeledEdit *EdtPass1;

98

TLabeledEdit *EdtPass2; TBitBtn *BtnBorrar; TBitBtn *BtnPonerClave; TADOStoredProc *spPonClaveUs; void void void void void void void private: __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall __fastcall FormCreate(TObject *Sender); BtnNuevoClick(TObject *Sender); BtnGuardarClick(TObject *Sender); BtnBorrarClick(TObject *Sender); EdtPass1Change(TObject *Sender); EdtPass2Change(TObject *Sender); BtnPonerClaveClick(TObject *Sender);

// User declarations

public: // User declarations __fastcall TDlgMantUsers(TComponent* Owner); }; #endif

//--------------------------------------------------------------------------#ifndef CodMonedaH #define CodMonedaH //--------------------------------------------------------------------------#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <Buttons.hpp> #include <ExtCtrls.hpp> #include <ADODB.hpp> #include <DB.hpp> //--------------------------------------------------------------------------class TDlgMoneda : public TForm { __published: // IDE-managed Components TShape *shpBorde; TLabel *Label1; TLabel *Label2; TSpeedButton *BtnCancelar; TSpeedButton *BtnAceptar; TEdit *EdtCambio; TPanel *Panel1; TADOQuery *QryMoneda; void void void void private: String __fastcall __fastcall __fastcall __fastcall BtnAceptarClick(TObject *Sender); BtnCancelarClick(TObject *Sender); FormCreate(TObject *Sender); EdtCambioKeyPress(TObject *Sender, char &Key);

// User declarations strCambio;

public: // User declarations __fastcall TDlgMoneda(TComponent* Owner); }; #endif

/******************************************************************** * Proyecto: MiLibreria

99

* Responsables: * - R. Pedro Laura Murillo * - R. William Quispe Aquino * * Software & Soluciones - 2009 * Setiembre 23 de 2009 * *******************************************************************/ #include <vcl.h> #pragma hdrstop #include "CodGlobal.h" #include #include #include #include #include #include #include #include "CodMantStock.h" "CodPrincipal.h" "CodProductos.h" "CodPrecios.h" "CodCompras.h" "CodProveedores.h" "CodMantUsuarios.h" "CodCategProds.h"

//--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" //TDlgMantStock *DlgMantStock; //--------------------------------------------------------------------------__fastcall TDlgMantStock::TDlgMantStock(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TDlgMantStock::FormCreate(TObject *Sender) { ; } //--------------------------------------------------------------------------void __fastcall TDlgMantStock::BtnCerrarClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------void __fastcall TDlgMantStock::BtnProductosClick(TObject *Sender) { TDlgProductos *DlgProductos = new TDlgProductos(this); DlgProductos->ShowModal(); delete DlgProductos; } //--------------------------------------------------------------------------void __fastcall TDlgMantStock::BtnComprasClick(TObject *Sender) { TDlgCompras *DlgCompras = new TDlgCompras(this); //DlgCompras->ShowModal(); //delete DlgCompras; DlgCompras->Show(); } //--------------------------------------------------------------------------void __fastcall TDlgMantStock::BtnProveedoresClick(TObject *Sender) { TDlgProveedores *dlgProveedores = new TDlgProveedores(this); dlgProveedores->ShowModal(); delete dlgProveedores; } //--------------------------------------------------------------------------void __fastcall TDlgMantStock::BtnPreciosClick(TObject *Sender) { TDlgPrecios *dlgPrecios = new TDlgPrecios(this); dlgPrecios->ShowModal();

100

delete dlgPrecios; } //--------------------------------------------------------------------------void __fastcall TDlgMantStock::BtnUsuariosClick(TObject *Sender) { TDlgMantUsers *dlgUsers = new TDlgMantUsers(this); dlgUsers->ShowModal(); delete dlgUsers; } //--------------------------------------------------------------------------void __fastcall TDlgMantStock::BtnAdmCategClick(TObject *Sender) { TDlgCategProd *dlgCatProds = new TDlgCategProd(this); dlgCatProds->ShowModal(); delete dlgCatProds; } //---------------------------------------------------------------------------

/******************************************************************** * Proyecto: MiLibreria * Responsables: * - R. Pedro Laura Murillo * - R. William Quispe Aquino * * Software & Soluciones - 2009 * Setiembre 23 de 2009 * *******************************************************************/ #include <vcl.h> #pragma hdrstop #include "CodMantUsuarios.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" //--------------------------------------------------------------------------__fastcall TDlgMantUsers::TDlgMantUsers(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TDlgMantUsers::FormCreate(TObject *Sender) { TblUsuarios->Open(); } //--------------------------------------------------------------------------void __fastcall TDlgMantUsers::BtnNuevoClick(TObject *Sender) { BtnGuardar->Enabled = true; BtnNuevo->Enabled = false; } //--------------------------------------------------------------------------void __fastcall TDlgMantUsers::BtnGuardarClick(TObject *Sender) { TblUsuarios->FieldValues["Nivel"] = 2; TblUsuarios->Post(); BtnGuardar->Enabled = false; BtnNuevo->Enabled = true; } //--------------------------------------------------------------------------void __fastcall TDlgMantUsers::BtnBorrarClick(TObject *Sender) { if( Application->MessageBox( "Esta seguro de realizar esta accion", "Borrar", MB_YESNO | MB_ICONQUESTION ) == IDYES )

101

{ } } //--------------------------------------------------------------------------void __fastcall TDlgMantUsers::EdtPass1Change(TObject *Sender) { EdtPass2->Text = ""; EdtPass1->Color = clWindow; EdtPass2->Color = clWindow; BtnPonerClave->Enabled = false; } //--------------------------------------------------------------------------void __fastcall TDlgMantUsers::EdtPass2Change(TObject *Sender) { if( EdtPass1->Text == EdtPass2->Text ) { EdtPass1->Color = clLime; EdtPass2->Color = clLime; BtnPonerClave->Enabled = true; } else { EdtPass1->Color = clRed; EdtPass2->Color = clRed; BtnPonerClave->Enabled = false; } } //--------------------------------------------------------------------------void __fastcall TDlgMantUsers::BtnPonerClaveClick(TObject *Sender) { spPonClaveUs->Parameters->Items[0]->Value = TblUsuarios->FieldValues["Usuario"]; spPonClaveUs->Parameters->Items[1]->Value = EdtPass1->Text; spPonClaveUs->ExecProc(); EdtPass2->Text = ""; EdtPass1->Text = ""; } //---------------------------------------------------------------------------

//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include "CodPrincipal.h" #include "CodMoneda.h" #include "CodPrincipal.h" extern float genCambioDolar; //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" //--------------------------------------------------------------------------__fastcall TDlgMoneda::TDlgMoneda(TComponent* Owner) : TForm(Owner) { ; } //--------------------------------------------------------------------------void __fastcall TDlgMoneda::FormCreate(TObject *Sender) { QryMoneda->Open(); strCambio = QryMoneda->FieldValues["Valor"]; EdtCambio->Text = strCambio; //genCambioDolar = atof( strCambio.c_str() ); //genCambioDolar = atof( EdtCambio->Text.c_str() ); genCambioDolar = atof( strCambio.c_str() ); QryMoneda->Close(); } //--------------------------------------------------------------------------void __fastcall TDlgMoneda::BtnAceptarClick(TObject *Sender)

102

{ if( strCambio != EdtCambio->Text ) { //--try{ genCambioDolar = atof( EdtCambio->Text.c_str() ); QryMoneda->SQL->Text = "INSERT INTO tblMoneda VALUES( NULL, NOW(), '" +EdtCambio->Text+ "' )"; QryMoneda->Open(); } catch( Exception *ex ){ } Application->MessageBox( "cambiado !", "", MB_ICONINFORMATION ); } ModalResult = mrOk; } //--------------------------------------------------------------------------void __fastcall TDlgMoneda::BtnCancelarClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------void __fastcall TDlgMoneda::EdtCambioKeyPress(TObject *Sender, char &Key) { if( (Key >= '0' && Key <= '9') || Key == 8 || Key=='.' ) ; else Key = 0; } //---------------------------------------------------------------------------

/******************************************************************** * Proyecto: MiLibreria * Responsables: * - R. Pedro Laura Murillo * - R. William Quispe Aquino * * Software & Soluciones - 2009 * Setiembre 23 de 2009 * *******************************************************************/ #include <vcl.h> #pragma hdrstop #include "CodGlobal.h" #include "CodProductos.h" #include "CodPrincipal.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" //TDlgProductos *DlgProductos; //--------------------------------------------------------------------------__fastcall TDlgProductos::TDlgProductos(TComponent* Owner) : TForm(Owner) { ; } //--------------------------------------------------------------------------void __fastcall TDlgProductos::FormCreate(TObject *Sender) { TblUnidades->Open(); TblProductos->Open(); OnRefrezcaCategorias(); }

103

//--------------------------------------------------------------------------void __fastcall TDlgProductos::FormClose(TObject *Sender, TCloseAction &Action) { //TblUnidades->Post(); //TblProductos->Post(); } //--------------------------------------------------------------------------void __fastcall TDlgProductos::BrnAgCategClick(TObject *Sender) { if( CboCategorias->Text.Length() > 0 ) { //spAgCateg->Parameters->ParamByName("Descripcion")->Value = ; spAgCateg->Parameters->Items[0]->Value = CboCategorias->Text; spAgCateg->ExecProc(); OnRefrezcaCategorias(); CboCategorias->DroppedDown = true; } else MessageBeep(450); } //--------------------------------------------------------------------------void TDlgProductos::OnRefrezcaCategorias() { mlAddToCombo( CboCategorias, TblCateg ); } //--------------------------------------------------------------------------void __fastcall TDlgProductos::CboCategoriasKeyPress(TObject *Sender, char &Key) { CboCategorias->DroppedDown = true; } //--------------------------------------------------------------------------void __fastcall TDlgProductos::BtnAgUnidadClick(TObject *Sender) { MessageBeep(450); } //--------------------------------------------------------------------------void __fastcall TDlgProductos::BtnAgProdClick(TObject *Sender) { if( EdtProdDesc->Text.Length() > 0 ) { spAgProd->Parameters->Items[0]->Value = mlGetSelIntCod(CboCategorias); spAgProd->Parameters->Items[1]->Value = EdtProdCodBarr->Text; spAgProd->Parameters->Items[2]->Value = EdtProdDesc->Text; spAgProd->Parameters->Items[3]->Value = EdtProdObs->Text; spAgProd->ExecProc(); TblProductos->Close(); TblProductos->Open(); EdtProdCodBarr->Text = ""; EdtProdDesc->Text = ""; EdtProdObs->Text = ""; } else MessageBeep(450); } //--------------------------------------------------------------------------void __fastcall TDlgProductos::CboCategoriasClick(TObject *Sender) { if( CboCategorias->ItemIndex == -1 ) BtnAgProd->Enabled = false; else { BtnAgProd->Enabled = true; TblProductos->Filtered = false; TblProductos->Filter = "IdCategoria = " + mlGetSelStrCod(CboCategorias); TblProductos->Filtered = true; BtnElimProd->Enabled = false; if( TblProductos->RecordCount > 0 ) BtnElimProd->Enabled = true;

104

} //EdtProdDesc->SetFocus(); } //--------------------------------------------------------------------------void __fastcall TDlgProductos::BtnBuscarClick(TObject *Sender) { TblProductos->Filtered = false; if( ! EdtProdCodBarr->Text.IsEmpty() ) { TblProductos->Filter = "CodBarra = '" +EdtProdCodBarr->Text+ "'"; EdtProdCodBarr->Text = ""; } else if( ! EdtProdDesc->Text.IsEmpty() ) { TblProductos->Filter = "Descripcion LIKE '%" +EdtProdDesc->Text+ "%'"; EdtProdDesc->Text = ""; } else if( ! EdtProdObs->Text.IsEmpty() ) { TblProductos->Filter = "Obs LIKE '%" +EdtProdObs->Text+ "%'"; EdtProdObs->Text = ""; } TblProductos->Filtered = true; } //--------------------------------------------------------------------------void __fastcall TDlgProductos::BtnElimProdClick(TObject *Sender) { if( Application->MessageBox("Proceder a borrar este registro","Borrar", MB_ICONQUESTION | MB_YESNO ) == IDYES ) { } } //--------------------------------------------------------------------------void __fastcall TDlgProductos::GrdProductosCellClick(TColumn *Column) { //TblProductos BtnElimProd->Enabled = true; } //---------------------------------------------------------------------------

//--------------------------------------------------------------------------#include <vcl.h> #pragma hdrstop #include "CodRanking.h" #include "CodPrincipal.h" //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" //TChdRanking *ChdRanking; //--------------------------------------------------------------------------__fastcall TChdRanking::TChdRanking(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------void __fastcall TChdRanking::FormCreate(TObject *Sender) { QryRanking->Open(); } //--------------------------------------------------------------------------void __fastcall TChdRanking::FormClose(TObject *Sender, TCloseAction &Action) { Action = caFree;

105

} //---------------------------------------------------------------------------

#include <vcl.h> #pragma hdrstop #include "CodGlobal.h" #include #include #include #include "CodRegProforma.h" "CodPrincipal.h" "CodVentas.h" "CodBuscarProfs.h"

//extern float genCambioDolar; //--------------------------------------------------------------------------#pragma package(smart_init) #pragma resource "*.dfm" //--------------------------------------------------------------------------__fastcall TChdRegProforma::TChdRegProforma(TComponent* Owner) : TForm(Owner) { bNuevaPlant = false; bEsNuevo = false; } //--------------------------------------------------------------------------void TChdRegProforma::mlEnableControls( bool bState ) { if( ! bState ) { EdtDatos->Text = "Presione Nuevo"; EdtDirec->Text = "Presione Nuevo"; } else { EdtDatos->Text = ""; EdtDirec->Text = ""; } EdtPrecFinal->Enabled = bState; EdtDscto->Enabled = bState; EdtDatos->Enabled = bState; EdtDirec->Enabled = bState; BtnVender->Enabled = bState; ComboBox01->Enabled ComboBox02->Enabled ComboBox03->Enabled ComboBox04->Enabled ComboBox05->Enabled ComboBox06->Enabled ComboBox07->Enabled ComboBox08->Enabled ComboBox09->Enabled ComboBox10->Enabled ComboBox11->Enabled ComboBox12->Enabled ComboBox13->Enabled ComboBox14->Enabled ComboBox15->Enabled ComboBox16->Enabled ComboBox17->Enabled ComboBox18->Enabled ComboBox19->Enabled ComboBox20->Enabled ComboBox21->Enabled = = = = = = = = = = = = = = = = = = = = = bState; bState; bState; bState; bState; bState; bState; bState; bState; bState; bState; bState; bState; bState; bState; bState; bState; bState; bState; bState; bState;

BtnNuevo->Enabled = ! bState; BtnGrabar->Enabled = bState; BtnEditar->Enabled = ! bState;

106

BtnBorrar->Enabled = ! bState; BtnAgPlant->Enabled = bState; }; void __fastcall TChdRegProforma::FormCreate(TObject *Sender) { EdtFecha->Text = mlGetShortDateTime().SubString(1,10); this->Left = 0; this->Top = 0; TblProforma->Open(); mlActualizaPlantillas(); tabItems->ActivePage = TabSheet1; mlEnableControls( false ); BtnEditar->Enabled = false; BtnBorrar->Enabled = false; mlAddToCombo( cboEstProforma, TblEstProforma ); mlAddToCombo( CboTipoDoc, TblTipoDoc, 0 ); //----------------------------------------------// Ahora llenamos los Combos //----------------------------------------------mlAddCatToCombo( TblProductos, ComboBox01, 1 ); mlAddCatToCombo( TblProductos, ComboBox02, 2 ); mlAddCatToCombo( TblProductos, ComboBox03, 3 ); mlAddCatToCombo( TblProductos, ComboBox04, 4 ); mlAddCatToCombo( TblProductos, ComboBox05, 5 ); mlAddCatToCombo( TblProductos, ComboBox06, 6 ); mlAddCatToCombo( TblProductos, ComboBox07, 7 ); mlAddCatToCombo( TblProductos, ComboBox08, 8 ); mlAddCatToCombo( TblProductos, ComboBox09, 9 ); mlAddCatToCombo( TblProductos, ComboBox10, 10 ); mlAddCatToCombo( TblProductos, ComboBox11, 11 ); mlAddCatToCombo( TblProductos, ComboBox12, 12 ); mlAddCatToCombo( TblProductos, ComboBox13, 13 ); mlAddCatToCombo( TblProductos, ComboBox14, 14 ); mlAddCatToCombo( TblProductos, ComboBox15, 15 ); mlAddCatToCombo( TblProductos, ComboBox16, 16 ); mlAddCatToCombo( TblProductos, ComboBox17, 17 ); mlAddCatToCombo( TblProductos, ComboBox18, 18 ); mlAddCatToCombo( TblProductos, ComboBox19, 19 ); mlAddCatToCombo( TblProductos, ComboBox20, 20 ); mlAddCatToCombo( TblProductos, ComboBox21, 21 ); String strCambio; strCambio.sprintf("%.3f", genCambioDolar ); EdtCambio->Text = strCambio; } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::FormClose(TObject *Sender, TCloseAction &Action) { Action = caFree; } //--------------------------------------------------------------------------void TChdRegProforma::mlActualizaPlantillas() { TADOTable *pData = new TADOTable(this); pData->Connection = TblProforma->Connection; pData->TableName = "extProforma"; pData->Open(); //ShowMessage("90000"); pData->Filtered = false; pData->Filter = "Estado = 9"; pData->Filtered = true; //ShowMessage("9000220"); pData->First();

107

CboTipos->Items->Clear(); while( ! pData->Eof ) { CboTipos->Items->Add( pData->FieldValues["DatosPers"] ); pData->Next(); } pData->Close(); delete pData; } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::BtnCerrarClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::CboTiposClick(TObject *Sender) { // una vez seleccionado activar mnuPltDel->Enabled = true; mnuPltUpdt->Enabled = true; TADOTable *pData = new TADOTable(this); pData->Connection = TblProforma->Connection; pData->TableName = "extProforma"; pData->Open(); pData->Filtered = false; pData->Filter = "Estado=9 AND DatosPers='" +CboTipos->Text+ "'"; pData->Filtered = true; // No habra ocasion para Cero Filas mlSetSelIntCod( ComboBox01, pData->FieldValues["e01"] mlSetSelIntCod( ComboBox02, pData->FieldValues["e02"] mlSetSelIntCod( ComboBox03, pData->FieldValues["e03"] mlSetSelIntCod( ComboBox04, pData->FieldValues["e04"] mlSetSelIntCod( ComboBox05, pData->FieldValues["e05"] mlSetSelIntCod( ComboBox06, pData->FieldValues["e06"] mlSetSelIntCod( ComboBox07, pData->FieldValues["e07"] mlSetSelIntCod( ComboBox08, pData->FieldValues["e08"] mlSetSelIntCod( ComboBox09, pData->FieldValues["e09"] mlSetSelIntCod( ComboBox10, pData->FieldValues["e10"] mlSetSelIntCod( ComboBox11, pData->FieldValues["e11"] mlSetSelIntCod( ComboBox12, pData->FieldValues["e12"] mlSetSelIntCod( ComboBox13, pData->FieldValues["e13"] mlSetSelIntCod( ComboBox14, pData->FieldValues["e14"] mlSetSelIntCod( ComboBox15, pData->FieldValues["e15"] mlSetSelIntCod( ComboBox16, pData->FieldValues["e16"] mlSetSelIntCod( ComboBox17, pData->FieldValues["e17"] mlSetSelIntCod( ComboBox18, pData->FieldValues["e18"] mlSetSelIntCod( ComboBox19, pData->FieldValues["e19"] mlSetSelIntCod( ComboBox20, pData->FieldValues["e20"] mlSetSelIntCod( ComboBox21, pData->FieldValues["e21"] ComboBox01Click(Sender); delete pData; } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::BtnNuevoClick(TObject *Sender) { mlEnableControls( true ); cboEstProforma->ItemIndex = 0; TblProforma->Insert(); bEsNuevo = true; } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::BtnAgPlantMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { POINT pPoint; GetCursorPos( &pPoint ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); );

108

popMenu->Popup( pPoint.x - X, pPoint.y - Y ); } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::mnuPltNuevoClick(TObject *Sender) { bNuevaPlant = true; mnuPltUpdtClick(Sender); } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::mnuPltUpdtClick(TObject *Sender) { TADOTable *pData = new TADOTable(this); pData->Connection = TblProforma->Connection; pData->TableName = "extProforma"; pData->Open(); if( bNuevaPlant ) { pData->Insert(); pData->FieldValues["Estado"] pData->FieldValues["Tipo"] pData->FieldValues["Fecha"] pData->FieldValues["DatosPers"] Plantilla", "BASE" ); = = = = 9; CboTipos->Items->Count+1; "2000-01-01"; InputBox("Plantillas", "Ingrese Nombre de

bNuevaPlant = false; } else { pData->Filtered = false; pData->Filter = "Estado=9 AND DatosPers = '" +CboTipos->Text+ "'"; pData->Filtered = true; if( pData->RecordCount > 0 ) pData->Edit(); else return; } //if( pData->RecordCount > 0 ) //{ pData->FieldValues["e01"] = mlGetSelIntCod(ComboBox01); pData->FieldValues["e02"] = mlGetSelIntCod(ComboBox02); pData->FieldValues["e03"] = mlGetSelIntCod(ComboBox03); pData->FieldValues["e04"] = mlGetSelIntCod(ComboBox04); pData->FieldValues["e05"] = mlGetSelIntCod(ComboBox05); pData->FieldValues["e06"] = mlGetSelIntCod(ComboBox06); pData->FieldValues["e07"] = mlGetSelIntCod(ComboBox07); pData->FieldValues["e08"] = mlGetSelIntCod(ComboBox08); pData->FieldValues["e09"] = mlGetSelIntCod(ComboBox09); pData->FieldValues["e10"] = mlGetSelIntCod(ComboBox10); pData->FieldValues["e11"] = mlGetSelIntCod(ComboBox11); pData->FieldValues["e12"] = mlGetSelIntCod(ComboBox12); pData->FieldValues["e13"] = mlGetSelIntCod(ComboBox13); pData->FieldValues["e14"] = mlGetSelIntCod(ComboBox14); pData->FieldValues["e15"] = mlGetSelIntCod(ComboBox15); pData->FieldValues["e16"] = mlGetSelIntCod(ComboBox16); pData->FieldValues["e17"] = mlGetSelIntCod(ComboBox17); pData->FieldValues["e18"] = mlGetSelIntCod(ComboBox18); pData->FieldValues["e19"] = mlGetSelIntCod(ComboBox19); pData->FieldValues["e20"] = mlGetSelIntCod(ComboBox20); pData->FieldValues["e21"] = mlGetSelIntCod(ComboBox21); pData->Post(); //} mlActualizaPlantillas(); pData->Close(); delete pData; } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::mnuPltDelClick(TObject *Sender) {

109

if( Application->MessageBox( "Esta Seguro ?", "Borrar", MB_ICONQUESTION | MB_YESNO) == IDYES ) { TADOTable *pData = new TADOTable(this); pData->Connection = TblProforma->Connection; pData->TableName = "extProforma"; pData->Open(); pData->Filtered = false; pData->Filter = "Estado=9 AND DatosPers = '" +CboTipos->Text+ "'"; pData->Filtered = true; if( pData->RecordCount > 0 ) pData->Delete(); pData->Close(); delete pData; mlActualizaPlantillas(); } } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::BtnGrabarClick(TObject *Sender) { if( bEsNuevo ) { //cboEstProforma TblProforma->FieldValues["Estado"] = 1; TblProforma->FieldValues["Fecha"] = EdtFecha->Text; TblProforma->FieldValues["DatosPers"] = EdtDatos->Text; TblProforma->FieldValues["Direccion"] = EdtDirec->Text; bEsNuevo = false; } else { TblProforma->Edit(); } TblProforma->FieldValues["e01"] TblProforma->FieldValues["e02"] TblProforma->FieldValues["e03"] TblProforma->FieldValues["e04"] TblProforma->FieldValues["e05"] TblProforma->FieldValues["e06"] TblProforma->FieldValues["e07"] TblProforma->FieldValues["e08"] TblProforma->FieldValues["e09"] TblProforma->FieldValues["e10"] TblProforma->FieldValues["e11"] TblProforma->FieldValues["e12"] TblProforma->FieldValues["e13"] TblProforma->FieldValues["e14"] TblProforma->FieldValues["e15"] TblProforma->FieldValues["e16"] TblProforma->FieldValues["e17"] TblProforma->FieldValues["e18"] TblProforma->FieldValues["e19"] TblProforma->FieldValues["e20"] TblProforma->FieldValues["e21"] = = = = = = = = = = = = = = = = = = = = = mlGetSelIntCod(ComboBox01); mlGetSelIntCod(ComboBox02); mlGetSelIntCod(ComboBox03); mlGetSelIntCod(ComboBox04); mlGetSelIntCod(ComboBox05); mlGetSelIntCod(ComboBox06); mlGetSelIntCod(ComboBox07); mlGetSelIntCod(ComboBox08); mlGetSelIntCod(ComboBox09); mlGetSelIntCod(ComboBox10); mlGetSelIntCod(ComboBox11); mlGetSelIntCod(ComboBox12); mlGetSelIntCod(ComboBox13); mlGetSelIntCod(ComboBox14); mlGetSelIntCod(ComboBox15); mlGetSelIntCod(ComboBox16); mlGetSelIntCod(ComboBox17); mlGetSelIntCod(ComboBox18); mlGetSelIntCod(ComboBox19); mlGetSelIntCod(ComboBox20); mlGetSelIntCod(ComboBox21);

TblProforma->FieldValues["SubTotal"] = fTotal; TblProforma->FieldValues["Dscto"] = EdtDscto->Text; TblProforma->FieldValues["PrecFinal"] = EdtPrecFinal->Text; TblProforma->Post(); // ahora recuperar el ID que tomaremos como numero de proforma strTmp.sprintf( "%07d", StrToInt(TblProforma->FieldValues["Nro"]) ); lblNumber->Caption = strTmp; mlEnableControls( false ); } //---------------------------------------------------------------------------

110

void __fastcall TChdRegProforma::BtnEditarClick(TObject *Sender) { //TblProforma->Edit(); bEsNuevo = false; mlEnableControls( true ); } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::BtnBorrarClick(TObject *Sender) { if( Application->MessageBox( "Realmente desea realizar esta accion ?", "Borar", MB_ICONQUESTION | MB_YESNO ) == IDYES ) { TblProforma->Delete(); BtnBorrar->Enabled = false; } } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::BtnBuscarClick(TObject *Sender) { TDlgBuscarProf *dlgBuscarProf = new TDlgBuscarProf(this); if( dlgBuscarProf->ShowModal() == mrOk ) { TblProforma->Filtered = false; TblProforma->Filter = "Nro=" +dlgBuscarProf->strID; TblProforma->Filtered = true; // No habra ocasion para Cero Filas mlSetSelIntCod( ComboBox01, TblProforma->FieldValues["e01"] mlSetSelIntCod( ComboBox02, TblProforma->FieldValues["e02"] mlSetSelIntCod( ComboBox03, TblProforma->FieldValues["e03"] mlSetSelIntCod( ComboBox04, TblProforma->FieldValues["e04"] mlSetSelIntCod( ComboBox05, TblProforma->FieldValues["e05"] mlSetSelIntCod( ComboBox06, TblProforma->FieldValues["e06"] mlSetSelIntCod( ComboBox07, TblProforma->FieldValues["e07"] mlSetSelIntCod( ComboBox08, TblProforma->FieldValues["e08"] mlSetSelIntCod( ComboBox09, TblProforma->FieldValues["e09"] mlSetSelIntCod( ComboBox10, TblProforma->FieldValues["e10"] mlSetSelIntCod( ComboBox11, TblProforma->FieldValues["e11"] mlSetSelIntCod( ComboBox12, TblProforma->FieldValues["e12"] mlSetSelIntCod( ComboBox13, TblProforma->FieldValues["e13"] mlSetSelIntCod( ComboBox14, TblProforma->FieldValues["e14"] mlSetSelIntCod( ComboBox15, TblProforma->FieldValues["e15"] mlSetSelIntCod( ComboBox16, TblProforma->FieldValues["e16"] mlSetSelIntCod( ComboBox17, TblProforma->FieldValues["e17"] mlSetSelIntCod( ComboBox18, TblProforma->FieldValues["e18"] mlSetSelIntCod( ComboBox19, TblProforma->FieldValues["e19"] mlSetSelIntCod( ComboBox20, TblProforma->FieldValues["e20"] mlSetSelIntCod( ComboBox21, TblProforma->FieldValues["e21"] //ShowMessage( "sdad" );//// EdtDatos->Text = TblProforma->FieldValues[ "DatosPers" ]; EdtDirec->Text = TblProforma->FieldValues[ "Direccion" ]; // ahora recuperar el ID que tomaremos como numero de proforma strTmp.sprintf( "%07d", StrToInt(TblProforma->FieldValues["Nro"]) ); lblNumber->Caption = strTmp; BtnVender->Enabled = true; ComboBox01Click(Sender); } } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::ComboBox01Click(TObject *Sender) { TblPrecios->Open(); fTotal = 0; String compName; for( int i=1; i<=19; i++ ) { compName.sprintf( "ComboBox%02d", i ); TComboBox *pCbo = (TComboBox *)FindComponent( compName ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); ); );

111

if( pCbo ) { TblPrecios->Filtered = false; TblPrecios->Filter = "IdTipoPrecio=1 AND Id=" + mlGetSelStrCod(pCbo); TblPrecios->Filtered = true; if( TblPrecios->RecordCount > 0 ) fTotal += TblPrecios->FieldByName("Precio")->AsFloat; } } float fCambio = atof( EdtCambio->Text.c_str() ); compName.sprintf( "Total en soles lblRefer->Caption = compName; S/. %.2f %.2f ", fTotal*fCambio ); ", fTotal );

compName.sprintf( "Total en dolares - $ lblDolar->Caption = compName; TblPrecios->Close();

EdtPrecFinalChange(Sender); } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::EdtPrecFinalChange(TObject *Sender) { float fDscto = atof( EdtDscto->Text.c_str() ); String strPrecFinal; strPrecFinal.sprintf( "%.2f", fTotal - fDscto ); EdtPrecFinal->Text = strPrecFinal; } //--------------------------------------------------------------------------void __fastcall TChdRegProforma::BtnVenderClick(TObject *Sender) { TChdVentas *chdVentas = new TChdVentas(this); chdVentas->Show(); chdVentas->CboTipoDoc->ItemIndex = CboTipoDoc->ItemIndex; // Envio Extra aqui... String compName; for( int i=1; i<=19; i++ ) { compName.sprintf( "ComboBox%02d", i ); TComboBox *pCbo = (TComboBox *)FindComponent( compName ); if( pCbo ) { chdVentas->mlAgregaProducto( 1, mlGetSelStrCod(pCbo) ); } } chdVentas->mlRecalculate(); chdVentas->EdtRazSocial->Text = EdtDatos->Text; } //---------------------------------------------------------------------------

112

Вам также может понравиться