Ver Mensaje Individual
  #1  
Antiguo 22-05-2013
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Reputación: 23
José Luis Garcí Va camino a la fama
Lightbulb Programa de gestión desde 0

Hola compañeros mi idea es montar un programa de gestión desde 0, por supuesto animo a los compañeros a corregirme, aportar y a criticar, sugerir etc. En primer lugar decir que no creo que yo sea el más adecuado para crear un programa desde 0 pero, como empiezo uno nuevo he dicho por que no, lo voy haciendo y lo publico.

He de decir que lo haré a ratos y mientras pueda y tenga disponibilidad y siempre que los miembros del club estén de acuerdo con la idea.

Intentare ser los más especifico posible y explicar todo claramente, espero perdonéis mis faltas de ortografía.

Por que hacer otro programa de gestión, por que por lo que veo, falta muchas cosas en los programas de gestión que se suelen hacer, ejemplos ADR, LOPD, REQ términos que ya iré especificando y que son muy muy sencillos de llevar al programa

Por supuesto como lo hago con mi sistema, pondré que componentes uso, el código completo del modulo y una imagen del mismo, usaré los estándar de Delphi y los míos propios, lo haré con firbird y Delphi 2010 e Ibexpert edición personal, si hubiese otros programas ya os iria diciendo.

Doy por hecho que sabéis, usarlos y por lo tanto crear la base de datos, tablas, dominios, formularios, aplicaciones, etc.

Aquí pongo una imagen de los dominios usados



Pues bien comenzamos creando la B.D. en mi caso la llamo PGF2 (Programa de Gestión y Fabricación) y creamos la tabla Confi (Configuración), a cada campo le e antepuesto la X para cuando estemos haciendo consultas sepamos si es de la configuración o de la tabla que sea oportuna. Aquí os pongo la estructura de la tabla:

Código Delphi [-]
 CREATE TABLE CONFI (                                         
    ID               INTEGER NOT NULL,        
    XEMPRESA         T80 /* T80 = VARCHAR(80) */,
    XCALLE           T80 /* T80 = VARCHAR(80) */,
    XCP              T10 /* T10 = VARCHAR(20) */,
    XPOBLACION       T80 /* T80 = VARCHAR(80) */,
    XPROVINCIA       T80 /* T80 = VARCHAR(80) */,
    XTF              T20 /* T20 = VARCHAR(20) */,
    XTF2             T20 /* T20 = VARCHAR(20) */,
    XLOGO            IMG /* IMG = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */,
    XWEB             T80 /* T80 = VARCHAR(80) */,
    XEMAIL           T80 /* T80 = VARCHAR(80) */,
    XMOVIL           T20 /* T20 = VARCHAR(20) */,
    XFAX             T20 /* T20 = VARCHAR(20) */,
    XCIF             T20 /* T20 = VARCHAR(20) */,
    XREGMERCANTIL    T80 /* T80 = VARCHAR(80) */,
    XNOTA            MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,
    XCOLORA          T20 /* T20 = VARCHAR(20) */,
    XCOLORB          T20 /* T20 = VARCHAR(20) */,
    XCOLORACT        T20 /* T20 = VARCHAR(20) */,
    XCOLORNOACT      T20 /* T20 = VARCHAR(20) */,
    XNUMPRE          T20 /* T20 = VARCHAR(20) */,
    XNUMPED          T20 /* T20 = VARCHAR(20) */,
    XNUMALB          T20 /* T20 = VARCHAR(20) */,
    XNUMFAC          T20 /* T20 = VARCHAR(20) */,
    XNUMLOTE         T20 /* T20 = VARCHAR(20) */,
    XNUMCLI          T20 /* T20 = VARCHAR(20) */,
    XNUMPRO          T20 /* T20 = VARCHAR(20) */,
    XNUMAGEN         T20 /* T20 = VARCHAR(20) */,
    XNUMALMACEN      T20 /* T20 = VARCHAR(20) */,
    XNUMALMACENDEF   T20 /* T20 = VARCHAR(20) */,
    XLARGOLOTE       INTEGER,
    XLARGONUM        INTEGER,
    XSERIE           T3 /* T3 = VARCHAR(3) */,
    XSERIE2          T3 /* T3 = VARCHAR(3) */,
    XSERIE3          T3 /* T3 = VARCHAR(3) */,
    XUASARSERIEYEAR  LOG /* LOG = CHAR(1) */,
    XLDPD1           MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,
    XLDPD2           MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,
    XLDPD3           MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,
    XNOMMONEDA       T10 /* T10 = VARCHAR(20) */,
    XNOMIMPUESTO     T10 /* T10 = VARCHAR(20) */,
    XDESIMP1         T20 /* T20 = VARCHAR(20) */,
    XIMP1            POR /* POR = NUMERIC(15,4) */,
    XDESIMP2         T20 /* T20 = VARCHAR(20) */,
    XIMP2            POR /* POR = NUMERIC(15,4) */,
    XDESIMP3         T20 /* T20 = VARCHAR(20) */,
    XIMP3            POR /* POR = NUMERIC(15,4) */,
    XDESIMP4         T20 /* T20 = VARCHAR(20) */,
    XIMP4            POR /* POR = NUMERIC(15,4) */,
    XDESREQ1         T20 /* T20 = VARCHAR(20) */,
    XREQ1            POR /* POR = NUMERIC(15,4) */,
    XDESREQ2         T20 /* T20 = VARCHAR(20) */,
    XREQ2            POR /* POR = NUMERIC(15,4) */,
    XDESREQ3         T20 /* T20 = VARCHAR(20) */,
    XREQ3            POR /* POR = NUMERIC(15,4) */,
    XDESREQ4         T20 /* T20 = VARCHAR(20) */,
    XREQ4            POR /* POR = NUMERIC(15,4) */,
    XMODCOPIASEG     T20 /* T20 = VARCHAR(20) */
);


Ahora iré detallando los campos

Código Delphi [-]
    ID               INTEGER NOT NULL,                          //Campo  de identificación y con el Primary Key

{----------------------------------------------------------------------------------------------------------------
 Datos de la empresa
 ----------------------------------------------------------------------------------------------------------------}
    XEMPRESA         T80 /* T80 = VARCHAR(80) */,       //Nombre
    XCALLE           T80 /* T80 = VARCHAR(80) */,         //Calle
    XCP              T10 /* T10 = VARCHAR(20) */,           //Código Postal
    XPOBLACION       T80 /* T80 = VARCHAR(80) */,      //Población
    XPROVINCIA       T80 /* T80 = VARCHAR(80) */,      //Provincia
    XTF              T20 /* T20 = VARCHAR(20) */,          //Teléfono
    XTF2             T20 /* T20 = VARCHAR(20) */,         //Teléfono 2
    XLOGO            IMG /* IMG = BLOB SUB_TYPE 0 SEGMENT SIZE 80 */,     //Logo (Imagen) de la empresa
    XWEB             T80 /* T80 = VARCHAR(80) */,         //Página web de la empresa
    XEMAIL           T80 /* T80 = VARCHAR(80) */,        //Email de la empresa
    XMOVIL           T20 /* T20 = VARCHAR(20) */,        //Móvil 
    XFAX             T20 /* T20 = VARCHAR(20) */,         //Número de Fax
    XCIF             T20 /* T20 = VARCHAR(20) */,          //(CIF, NIF, etc)  Documento identificativo de la empresa
    XREGMERCANTIL    T80 /* T80 = VARCHAR(80) */,   //Registro mercantil de la empresa si lo tiene

{----------------------------------------------------------------------------------------------------------------
 Notas, no es que tenga mucho sentido pero se de clientes que quieren que en ciertos documentos aparezca este texto
 ----------------------------------------------------------------------------------------------------------------}
    XNOTA            MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,  //Para recoger dicho texto

{----------------------------------------------------------------------------------------------------------------
 Colores del programa
 ----------------------------------------------------------------------------------------------------------------}
    XCOLORA          T20 /* T20 = VARCHAR(20) */,   //Color Del grid y otros para las lineas pares 
    XCOLORB          T20 /* T20 = VARCHAR(20) */,  //color del grid y otros para las lineas impares
    XCOLORACT        T20 /* T20 = VARCHAR(20) */,      //Color para en mi caso el NewPanelDB cuando esta activo
    XCOLORNOACT      T20 /* T20 = VARCHAR(20) */,    //Color para en mi caso el NewPanelDB cuando no esta activo

{----------------------------------------------------------------------------------------------------------------
 Numeradores serán compuestos de la serie y contador (en el programa descontaremos la serie para saber el numerador)
 ----------------------------------------------------------------------------------------------------------------}
    XNUMPRE          T20 /* T20 = VARCHAR(20) */,      //Numerador de presupuestos
    XNUMPED          T20 /* T20 = VARCHAR(20) */,      //Numerador de Pedidos
    XNUMALB          T20 /* T20 = VARCHAR(20) */,      //Numerador de Albaranes
    XNUMFAC          T20 /* T20 = VARCHAR(20) */,      //Numerador de Facturas
    XNUMLOTE         T20 /* T20 = VARCHAR(20) */,      //Numerador de Lotes  para la trazabilidad
    XNUMCLI          T20 /* T20 = VARCHAR(20) */,      //Numerador de Cliente
    XNUMPRO          T20 /* T20 = VARCHAR(20) */,      //Numerador de Producto
    XNUMAGEN         T20 /* T20 = VARCHAR(20) */,      //Numerador de Agente
    XNUMALMACEN      T20 /* T20 = VARCHAR(20) */,      //Numerador de Almacén
    XNUMALMACENDEF   T20 /* T20 = VARCHAR(20) */,      //Numerador de Almacén por defecto

{----------------------------------------------------------------------------------------------------------------
 Control del tamaño de los diferentes numeradores
 ----------------------------------------------------------------------------------------------------------------}
    XLARGOLOTE       INTEGER,      //Largo del lote por defecto suelo poner 6
    XLARGONUM        INTEGER,      //Largo de los numeradores  incluyendo la serie por defecto pongo 6

{----------------------------------------------------------------------------------------------------------------
 Las Series
 ----------------------------------------------------------------------------------------------------------------}
    XSERIE           T3 /* T3 = VARCHAR(3) */,      //Primera serie de 3 dígitos
    XSERIE2          T3 /* T3 = VARCHAR(3) */,      //Segunda serie de 3 dígitos
    XSERIE3          T3 /* T3 = VARCHAR(3) */,      //Tercera serie de 3 dígitos
    XUASARSERIEYEAR  LOG /* LOG = CHAR(1) */,  //Usar el Año como serie por defecto cogeríamos los dígitos últimos del año en curso
                                                                    //Aquí usaríamos S o N para si o no

{----------------------------------------------------------------------------------------------------------------
 Ley de protección de datos  Ley Orgánica 15/1999 de Protección de Datos de Carácter Personal
 El motivo de que se divida en tres apartados es por que dependiendo del documento podemos usar una o otra e
  incluso podríamos elegirla antes de imprimir con un simple ComboBox
 ----------------------------------------------------------------------------------------------------------------}
    XLDPD1           MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,  //Texto para la LOPD
    XLDPD2           MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,  //Texto para la LOPD
    XLDPD3           MEMO /* MEMO = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,  //Texto para la LOPD

{----------------------------------------------------------------------------------------------------------------
 Nombre de la moneda de uso
 ----------------------------------------------------------------------------------------------------------------}
    XNOMMONEDA       T10 /* T10 = VARCHAR(20) */,    //Nombre de la moneda que usaremos

{----------------------------------------------------------------------------------------------------------------
 Impuestos
 ----------------------------------------------------------------------------------------------------------------}
    XNOMIMPUESTO     T10 /* T10 = VARCHAR(20) */,   //Nombre del impuesto (IVA, IGIC, etc.)
    XDESIMP1         T20 /* T20 = VARCHAR(20) */,   //Descripción del tipo impuesto Exento, normal, reducido, otros      
    XIMP1            POR /* POR = NUMERIC(15,4) */,   //Porcentaje de impuesto a aplicar
    XDESIMP2         T20 /* T20 = VARCHAR(20) */,   //Descripción del tipo impuesto Exento, normal, reducido, otros      
    XIMP2            POR /* POR = NUMERIC(15,4) */,   //Porcentaje de impuesto a aplicar
    XDESIMP3         T20 /* T20 = VARCHAR(20) */,   //Descripción del tipo impuesto Exento, normal, reducido, otros      
    XIMP3            POR /* POR = NUMERIC(15,4) */,   //Porcentaje de impuesto a aplicar
    XDESIMP4         T20 /* T20 = VARCHAR(20) */,   //Descripción del tipo impuesto Exento, normal, reducido, otros      
    XIMP4            POR /* POR = NUMERIC(15,4) */,   //Porcentaje de impuesto a aplicar

{----------------------------------------------------------------------------------------------------------------
 Tipos de recargo equivalencia Según el Real-Decreto Ley 20/2012 los tipos de recargo de equivalencia aplicables a partir 
 del 1 de septiembre de 2012  hasta hoy día son: (Aplicables en España al Iva como al IGIC)
 -          El 5,2% para los artículos que tienen un IVA al tipo general del 21%.
 -          El 1,4% para los artículos que tienen un IVA al tipo reducido del 10%.
 -          El 0,5% para los artículos que tienen un IVA al tipo reducido del 4%.
 -          El 0,75% para el tabaco.
  El recargo de equivalencia es cuando compramos un producto y se lo vendemos a otro  sin alterarlo básicamente
 ----------------------------------------------------------------------------------------------------------------}
    XDESREQ1         T20 /* T20 = VARCHAR(20) */,    //Descripción del tipo de equivalencia
    XREQ1            POR /* POR = NUMERIC(15,4) */,    //Porcentaje de la equivalencia a aplicar
    XDESREQ2         T20 /* T20 = VARCHAR(20) */,    //Descripción del tipo de equivalencia
    XREQ2            POR /* POR = NUMERIC(15,4) */,    //Porcentaje de la equivalencia a aplicar
    XDESREQ3         T20 /* T20 = VARCHAR(20) */,    //Descripción del tipo de equivalencia
    XREQ3            POR /* POR = NUMERIC(15,4) */,    //Porcentaje de la equivalencia a aplicar
    XDESREQ4         T20 /* T20 = VARCHAR(20) */,    //Descripción del tipo de equivalencia
    XREQ4            POR /* POR = NUMERIC(15,4) */,    //Porcentaje de la equivalencia a aplicar

{----------------------------------------------------------------------------------------------------------------
 Modo de copias de seguridad en mi caso usare los siguientes modos, al salir del programa
  nulo (ningún día se hará manualmente)
  Lunes .. Domingo (se hará el día marcado 
  Todos (Todos los días de la semana)

 ----------------------------------------------------------------------------------------------------------------}
    XMODCOPIASEG     T20 /* T20 = VARCHAR(20) */     //Cuando haremos la copia de seguridad

Espero que estén de acuerdo con este proyecto, que exista bastante colaboración, que aporten ideas, código e imágenes, para poder mejorar nuestros programas.

Por cierto lo lógico sería seguir con este hilo para ir poniendo las diferentes partes del mismo.

El siguiente el módulo de configuración
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita