Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #101  
Antiguo 29-06-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
Poder: 22
José Luis Garcí Va camino a la fama
Cita:
Empezado por Casimiro
Por supuesto, como dice elrayo76 es muy importante la nomenclatura, la codificación, la notación usada, etc. pero creo que escapa al ámbito de este proyecto en particular, eso es algo que en este caso se deja para cada uno. Y además puede ser otro gran aporte a los foros, ¿quién se anima?
Muy buena idea Casimiro
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #102  
Antiguo 06-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Primero que nada pedir disculpas por haberme atrasado, tanto en seguir, pero estoy preparando la documentación y el material de un curso para una nueva Fabrica de productos de limpieza (es a lo que me dedico ahora a montar fabricas de productos de limpieza por toda España y otros países) y claro me lleva bastante tiempo preparar un informe por producto, más todo lo demás.

Vamos con el módulo de Regulación de Stock, debería ser un módulo con doble nivel de acceso, el nivel de usuario, en mi caso un 8 y además solicito la clave de usuario nuevamente, aún así se debería al grabar los datos, grabar , en un log, ini, XLS o tabla, tanto el usuario, fecha, hora, cantidad anterior, nueva cantidad y motivo, ya que este apartado afectara seriamente a la trazabilidad, en el ejemplo pongo el resumen pero no lo hago pero creo importante este punto.

Dicho lo dicho aquí la imagen



y aquí el código https://gist.github.com/anonymous/5939351
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 06-07-2013 a las 11:58:28.
Responder Con Cita
  #103  
Antiguo 06-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Lo siguiente será empezar con nuestras tablas de documentos (para presupuestos, pedidos, albaranes y facturas), usare el sistema de 3 tablas, la maestro, la detalle y la de lotes, creando sólo las 3 para los cuatro tipos de documentos, la estructura ya os la pondré, pero será fundamental, que las tres tendrán tres campos comunes que ademas las hará maestro-detalle entre las 3, los campos serán Documento(Presupuesto, pedido, etc.), número del documento y serie.

El apartado de documentos lo haré una vez (Facturas, el más completo), y explicare los respectivos cambios aplicables a los otros formatos, pero como comprenderéis, es un apartado enorme, por lo que tendré que ir haciéndolo por partes, empezare, por la facturación tal cual, los lotes, , trazabilidad y regulación de stock, estarán incluidos en estas partes, gestión de comisiones, etc.

Según nos vayamos introduciendo, tendremos que ir creando otras tablas a las que haremos referencia y las iremos comentando, una vez terminado el proceso, nos quedara, los módulos de convención de documentos, rutas y cartas de porte, etc. y podremos dar por terminado el tutorial, salvo que queráis un poco más, tendríamos que verlo.

HE dicho que no pondré como hacer los informes (impresiones) ya que cada uno elegirá su método, pero creo que podre mostraros por lo menos dos, una factura y comentaros, que debe llevar y por que y una carta de portes.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #104  
Antiguo 06-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por José Luis Garcí Ver Mensaje
Primero que nada pedir disculpas por haberme atrasado, tanto en seguir, pero estoy preparando la documentación y el material de un curso para una nueva Fabrica de productos de limpieza (es a lo que me dedico ahora a montar fabricas de productos de limpieza por toda España y otros países) y claro me lleva bastante tiempo preparar un informe por producto, más todo lo demás.
Faltaría más, tú haces el trabajo, lo regalas y... ¿pides disculpas por el atraso?, ¡¡¡un monumento tendríamos que hacerte por esta labor desinteresada!!!
Ojalá pudiésemos compensar a todos los que colaboran con clubdelphi

Por cierto, tu nuevo trabajo parece interesante
Saludos.
Responder Con Cita
  #105  
Antiguo 06-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Si no es molestia, podrían hacerme el favor de valorar el trabajo hasta este momento, lo más sinceramente posible, el motivo, es que como siempre he dicho y he mantenido, yo no soy un experto y necesito saber cuales son mis puntos fuertes, para intentar mejorar.

Me gustaría que lo valorarais de la siguiente manera, del 1 al 10, siendo 1 la menor valoración claro, cada una de las siguientes facetas, y si se os ocurre alguna, ya sabéis.

Explicaciones
Claridad
Código
Tablas
Descripciones
Diseño
Conceptos
forma de aplicar los conceptos
y utilidad

Esto me permitirá, en cuanto al tutorial, intentar corregir y mejorarlo , si puedo y ha nivel personal, seguir aprendiendo y como no autoestima, que me la podéis hundir más o nivelar
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #106  
Antiguo 06-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Faltaría más, tú haces el trabajo, lo regalas y... ¿pides disculpas por el atraso?, ¡¡¡un monumento tendríamos que hacerte por esta labor desinteresada!!!
Ojalá pudiésemos compensar a todos los que colaboran con clubdelphi

Por cierto, tu nuevo trabajo parece interesante
Saludos.
Gracias Casimiro, pero creo que si empiezo un tutorial, es por que tengo un compromiso con el club y como tal debo responder, lo mejor que pueda, claro y como supongo que hay gente siguiendo el tema, que menos que disculparme por los atrasos.

Si lo que pasa, es que la gente tiene miedo a montar empresas, te aseguro que es un sector con un margen de beneficio, mínimo de un 35% en 3 o cuatro productos y de más de 500% de beneficios en otros, la media es superior al 100% del coste de la mercancía, necesitas vender volumen, en unos casos y en otros ganas por beneficio, pero con una experiencia de más de diez años en la formulación y gestión de empresas de limpieza y cosmética, no se ha que otra cosa dedicarme, y por muy poco dinero (20.000'00 euros) se puede montar una fabrica de limpieza (no de cosmética) donde se incluye, el alquiler y fianza del local, constitución de la empresa, vehículo de segunda mano, materiales, materias primas, etc.) también incluye el curso que tengo que dar, +- 8-10 fórmulas, dependiendo cuales quieran y lo mejor es que no hay que tener preparación previa y son muy pocos requisitos legales.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"

Última edición por José Luis Garcí fecha: 06-07-2013 a las 12:47:43.
Responder Con Cita
  #107  
Antiguo 07-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Empezamos con la tabla documentos, como es una tabla para nuestros tipos de documentos, usaremos los identificadores X=Presupuestos, P=Pedidos, A=Albaranes y F=Facturas para indicar en que documento lo usaremos.

Cita:
CREATE TABLE DOCUMENTOS (
ID INTEGER NOT NULL,
TIPODOCUMENTO T20 NOT NULL /* T20 = VARCHAR(20) */, //......................tipo de documento (XPAF)
NUMERODOCUMENTO T20 NOT NULL /* T20 = VARCHAR(20) */, //.....................código del documento (XPAF)
SERIE T3 NOT NULL /* T3 = VARCHAR(3) */, //.....................Serie del documento (XPAF)
CODIGOCLIENTE T20 NOT NULL /* T20 = VARCHAR(20) */, //.....................Código del cliente (XPAF)
DESCRIPCIONCLIENTE T80 /* T80 = VARCHAR(80) */, //......................1 (XPAF)
IDDIRECCIONES INTEGER NOT NULL, //.....................el campo id de la tabla direcciones ya tratada, al tener la posibilidad de varias direcciones (XPAF)
CODIGOAGENTE T20 NOT NULL /* T20 = VARCHAR(20) */, //.....................código del agente o comercial (XPAF)
DESCRIPCIONAGENTE T80 /* T80 = VARCHAR(80) */, //.....................1 (XPAF)
FECHA DATE NOT NULL, //.....................Fecha de emisión de la factura (XPAF)
NUMERODECOBRO T20 /* T20 = VARCHAR(20) */, //.....................Numero (código) de tablas COBROS (Pendiente) donde registraremos la forma en que se nos ha pagado (F)
COBRADO LOG NOT NULL /* LOG = CHAR(1) */, //.....................(S/N) indica si la factura ya esta cobrada, al tener el campo NUMERODECOBRO podemos ver más detalles (F)
NUMERORUTA T20 /* T20 = VARCHAR(20) */, //.....................Numero (código) de tablas RUTAS (Pendiente) donde registraremos las rutas de entrega (PAF)
FECHAENTREGA DATE, //.....................Fecha de la entrega, si cambiamos la ruta, cambiara la fecha (2) (PAF)
FORMADEPAGO T20 NOT NULL /* T20 = VARCHAR(20) */, //.....................Código de la taba forma de pago (XPAF)
DESCRIPCIONFORMADEPAGO T80 /* T80 = VARCHAR(80) */, //...................../1 (XPAF)
NUMEROFINANCIADO T20 /* T20 = VARCHAR(20) */, //.....................Numero (código) de tablas FINANCIADO (Pendiente) donde registraremos las financiación de pagos (PAF)
TOTALFINANCIADO POR /* POR = NUMERIC(15,4) */, //.....................Total del dinero financiado, no tiene por que ser el total de la factura
NUMERORETENCIONES T20 /* T20 = VARCHAR(20) */, //...................../Numero (código) de tablas RETENCIONES (Pendiente) donde registraremos las retenciones hechas a clientes (PAF)
TOTALRETENCIONES POR /* POR = NUMERIC(15,4) */, //...................../Importe de las retenciones
PORCENTAJERETENCIONES POR /* POR = NUMERIC(15,4) */, //.....................porcentaje de retenciones aplicadas, puede variar a la que ya tiene aplicada el cliente (3) (F)
TOTALCOMISIONES POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de comisiones (XPAF). (4)
NUMEROPROTECCIONDATOS INTEGER NOT NULL //.....................Elegimos entre el 1 y el 3 de la tabla CONFIGURACION donde 1 =LDPD1 ... 3=LDPD3, que texto debemos poner (XPAF)
CAMPOLIBRE T80 /* T80 = VARCHAR(80) */, //.....................Campo libre ya que la ley va cambiando o podemos necesitar (XPAF)
MODIFICACIONES INTEGER NOT NULL, //.....................Número de veces que se ha modificado la factura, nos permite controlar si se ha alterado (5) (XPAF)
ESTADO T40 /* T40 = VARCHAR(40) */, //...................../Estado actual de la factura (Pendiente, cobrada, nula (5), etc) (XAPF)
NUMERORELACIONFACTURAS T20 /* T20 = VARCHAR(20) */, //...................../Numero (código) de tablas RELACIONFACTURAS (Pendiente) donde agruparemos facturas de un cliente (F)
SERIERELACIONFACTURAS T3 /* T3 = VARCHAR(3) */, //.....................Serie de la relación de facturas (F)
SUBTOTAL POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Subtotal del importe (XPAF)
TOTALDESCUENTOS POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Importe del total de descuentos (XPAF)
TOTALPESO POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total del peso perteneciente al documento (XPAF)
TOTALIMPUESTOS POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de impuestos (XPAF)
TOTALIMPUESTO1 POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de impuestos tipo 1 (XPAF)
TOTALIMPUESTO2 POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de impuestos tipo 2 (XPAF)
TOTALIMPUESTO3 POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de impuestos tipo 3 (XPAF)
TOTALIMPUESTO4 POR NOT NULL /* POR = NUMERIC(15,4) */, //.....................Total de impuestos tipo 4 (XPAF)
MININOTA VARCHAR(150) //...................../Campo de 150 caracteres, ya que las notas las haremos a través de la tabla NOTAS (XPAF)
);

1) las descripciones es para posibles cambios sin tener que editar o crear un registro nuevo
ejemplo: Código cliente= 0 Descripción general 'Contado' campo DESCRIPCIONCLIENTE 'Contado - (trabajador taller Antonio)'

2) Si ponemos la ruta para hoy i por cualquier motivo no se puede entregar en la fecha prevista, la pondremos en la siguiente hoja de ruta, por lo que debemos controlar el cambio
de la fecha de entrega

3) El cliente puede solicitar que le aumentes o disminuyas el porcentaje de retenciones en una factura, únicamente. Estará presente en PAF, pero se puede variar y determina sólo
el de la factura, por defecto coge el del cliente, que es lo habitual.

4) Las comisiones irán a su tabla de comisiones, donde pondremos de que documento viene, de aquí podremos realizar el pago de comisiones, recordar que el pago de comisiones
hay que hacerle la retención para el pago de Hacienda.

5) Las Facturas no se pueden borrar, ya que afectan a varios departamentos y alteran la aplicación, no quiero decir que no se puedan, pero no se deben bajo ningún concepto,
ejemplo : tenemos la factura 120001, que es el mismo valor actual de nuestro numerador de facturas y nos damos cuenta al terminar, de que esta mal, claro que podríamos
borrarla y modificar el numerador, pero si el numerador ya va por el 120025, o otro cualquiera, borramos la factura y queda un salto en el registro de facturación, motivo de
auditoria en hacienda, si no queda bien explicado y suele pasar, cuando trabajamos todo el año con cientos o miles de facturas, quien se acuerda de una determinada, de hace
x meses.

---------------------------------------------------------------------------------------------------------------------------------------------------------


Como podemos ver se va complicando la cosa, es posible que se me olvide algún campo, así que ya iremos viendo.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #108  
Antiguo 07-07-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
Poder: 22
José Luis Garcí Va camino a la fama
ahora la tabla detalle

Cita:
CREATE TABLE DETALLE (
ID INTEGER NOT NULL,
IDENTIFICADOR INTEGER NOT NULL, //............................................. FOREIGN KEY con el id de documentos
TIPODOCUMENTO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. tipo de documento (XPAF)
NUMERODOCUMENTO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. código del documento (XPAF)
SERIE T3 NOT NULL /* T3 = VARCHAR(3) */, //............................................. Serie del documento (XPAF)
CODIGOARTICULO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. Código del artículo (XPAF)
DESCRIPCIONARTICULO T80 /* T80 = VARCHAR(80) */, //............................................. 1 (ver en post anterior) (XPAF)
CANTIDAD INTEGER NOT NULL, //............................................. Cantidad o unidades del artículo (XPAF)
PRECIOUNIDAD POR NOT NULL /* POR = NUMERIC(15,4) */, //............................................. Precio de la unidad (XPAF)
IMPUESTO POR NOT NULL /* POR = NUMERIC(15,4) */, //............................................. Porcentaje del impuesto (XPAF)
DESCUENTO POR NOT NULL /* POR = NUMERIC(15,4) */, //............................................. Porcentaje del descuento (XPAF)
COMISION POR NOT NULL /* POR = NUMERIC(15,4) */, //............................................. Porcentaje de la comisión (XPAF)
PESOUNIDAD POR /* POR = NUMERIC(15,4) */, //............................................. peso de cada unidad (XPAF)
MININOTA VARCHAR(150), //............................................. Campo texto de 150 caracteres, para ampliar detalles (XPAF)
CAMPOLIBRE T80 /* T80 = VARCHAR(80) */, //............................................. Campo libre ya que la ley va cambiando o podemos necesitar (XPAF)
MODIFICADO INTEGER NOT NULL, //............................................. Número de veces que se ha modificado (XPAF)
SERVICIO LOG /* LOG = CHAR(1) */, //............................................. Es un servicio (XPAF)
IDPRECIOESPECIAL INTEGER, //............................................. Número del ID, si el precio tomado es precio especial para el cliente (1) (XPAF)
ALMACEN T20 /* T20 = VARCHAR(20) */, //............................................. Almacén del que sale la mercancía (XPAF)
NUMEROPRESUPUESTO T20 /* T20 = VARCHAR(20) */, //............................................. Número (Código) del presupuesto que viene (2) (PAF)
NUMEROPEDIDO T20 /* T20 = VARCHAR(20) */, //............................................. Número (Código) del pedido que viene (2) (AF)
FECHAPEDIDO DATE, //............................................. Fecha del pedido del que viene (2) (AF)
NUMEROALABARAN T20 /* T20 = VARCHAR(20) */, //............................................. Número (Código) del albarán que viene (2) (A)
FECHAALBARAN T20 /* T20 = VARCHAR(20) */ //............................................. Fecha del albarán del que viene (2) (A)
);

/******************************************************************************/
/* Foreign Keys */
/******************************************************************************/

// ALTER TABLE DETALLE ADD CONSTRAINT FK_DETALLE_1 FOREIGN KEY (IDENTIFICADOR) REFERENCES DOCUMENTOS (ID) ON DELETE CASCADE ON UPDATE CASCADE;
1) si tiene precio especial, no le afecta ni rapel, ni otros

2) El cliente normalmente quiere que en el documento de unión (albarán o factura) aparezca reflejado por documentos para el poder revisarlos y comprobar, por ello debemos crear un registro que
especifique según sea el caso de manera que si es un albarán sería 'Pedido 120001 fecha 07/072012' y si fuera una factura sería 'Albarán 120025 fecha 30/07/2012', detallando despues de
cada linea del pedido o albarán.
Este no sería el caso si el cliente tiene un rapel o escandallo con cierre final, ya que para ello debemos unir todos los campos con el mismo código de articulo, para obtener la cantidad de
unidades y ver que precio se le asigna, por lo que el precio del albarán o de la factura difieren, pero aún así debemos registrar de que albaranes o pedido bien, pero lo haríamos al pie del
documento dentro de sus notas.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #109  
Antiguo 07-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Ahora la última de las tres la tabla lotes de documentos (LOTESDOCUMENTOS)

Cita:
CREATE TABLE LOTESDOCUMENTOS (
ID INTEGER NOT NULL,
IDENTIFICADOR INTEGER NOT NULL, //............................................. FOREIGN KEY con el id de documentos
TIPODOCUMENTO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. tipo de documento
NUMERODOCUMETO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. código del documento
SERIE T3 NOT NULL /* T3 = VARCHAR(3) */, //............................................. Serie del documento
LOTE T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. número de lote
CANTIDAD INTEGER NOT NULL, //............................................. Cantidad de este artículo con este lote
CODIGOARTICULO T20 NOT NULL /* T20 = VARCHAR(20) */, //............................................. código del artículo
ADR T80 /* T80 = VARCHAR(80) */, //............................................. Descripción y texto ADR
EXCEPCION INTEGER, //............................................. Cantidad exceptuada del ADR
LIMITE INTEGER, //............................................. limite de carga en vehículo con medidas mínimas según el ADR
CADUCIDAD DATE, //............................................. fecha de caducidad de este lote
CAMPOLIBRE T80 /* T80 = VARCHAR(80) */ //............................................. Campo libre ya que la ley va cambiando o podemos necesitar
);


//******************************************************************************/
//* Foreign Keys */
//******************************************************************************/

//ALTER TABLE LOTESDOCUMENTOS ADD CONSTRAINT FK_LOTESDOCUMENTOS_1 FOREIGN KEY (IDENTIFICADOR) REFERENCES DETALLE (ID) ON DELETE CASCADE ON UPDATE CASCADE;
Como podemos ver tenemos una relación entre las tablas siendo de la siguiente manera

DOCUMENTOS.ID------>DETALLES.IDENTIFICADOR y
DETALLES.ID ------------------ LOTESDOCUMENTOS.IDENTIFICADOR

También contamos con los campos TIPODOCUMENTO, NUMERODOCUMETO y SERIE, para poder hacer sus búsquedas y relaciones en SQL.

Podríamos hacerlo creando un juego de tablas por tipo de documentos, que sería la manera más simple y rápida de hacer, pero esta manera, nos permite reducir consumo de recursos, ya que muchos campos son repetitivo, e incluso eliminar la tabla de LOTESDOCUMENTOS y unir sus campos a los de DETALLES, pero de esta manera es más clara.

Como siempre espero este clara la explicación actual y si hay dudas, comentarios, o consejos, rectificaciones, etc, ya sabéis, aquí estoy.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #110  
Antiguo 09-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Para que valláis abriendo boca una imagen del visor de documentos, sin estar activo aún muchos campos



en el apartado 1 veréis un DBtext, con el fondo en verde, realmente va en transparente, pero como no contiene datos aún, para controlar se u ancho

El código en https://gist.github.com/anonymous/5956364


Para que este sistema funcione debemos usar en su llamada el siguiente sistema

Código Delphi [-]
procedure TFMenu.act_V_FacturasExecute(Sender: TObject);
//------------------------------------------------------------------------------
//**************************************************************[ Facturas ]****
// Gestión de Proveedores apto desde nivel 6
//------------------------------------------------------------------------------
begin
    VarSTipoDocumento:='FACTURA';
    FXPAF.PC.ActivePageIndex:=0;
    FXPAF.PC2.ActivePageIndex:=0;
    Acceso(6,FXPAF);
end;

Y el procedimiento acceso
Código Delphi [-]
function TFMenu.Acceso(NivelAc:Integer;MForm:TForm):Boolean;
//------------------------------------------------------------------------------
//*****************************************************[ funcion de acceso ]****
//------------------------------------------------------------------------------
begin
   if Nivel>=NivelAc then
   begin
      MForm.Show;
      Result:=true;
   end else
   begin
      ShowMessage('Debe tener nivel '+IntToStr(NivelAc)+' para poder acceder a este apartado');
      Result:=False;
   end;
end;

En algunos casos, deberemos confirmar con la clave de acceso al programa, la entrada en un apartado esto lo haremos de la siguiente manera

Código Delphi [-]
procedure TFMenu.ACT_Esp_RegularStockExecute(Sender: TObject);
//------------------------------------------------------------------------------
//*********************************************************[ REgular Stock ]****
// Regulación de Stock apto desde nivel 8 + clave de usuario
//------------------------------------------------------------------------------
begin
    if Acceso(8,FRegulaStock) then
    begin
      FRegulaStock.Hide;
      PostMessage(Handle, InputBoxMessage, 0, 0); // Para imputboxt con password chard
      if InputBox('Comprobando seguridad', 'Por favor indroduzca su clave de usuario', '')= VarSClaveUSuario then
         FRegulaStock.Show
      else
      begin
        ShowMessage('La clave de seguridad no es la adecuada,' + #13 +
            'no tiene permiso, para acceder a este apartado');
        FRegulaStock.Close;
      end;
    end;
end;


Para ello necesitamos estos cambios en nuestro programa

Código Delphi [-]
procedure TFMenu.InputBoxSetPasswordChar(var Msg: TMessage);
// Para imputboxt con password chard
// ------------------------------------------------------------------------------
// *****************[ Para convertir los caracteres en *  de un imput box]*******
// ------------------------------------------------------------------------------
var HInputForm, HEdit, HButton: HWND;
begin
  HInputForm := Screen.Forms[0].Handle;
  if (HInputForm <> 0) then
  begin
    HEdit := FindWindowEx(HInputForm, 0, 'TEdit', nil);
    SendMessage(HEdit, EM_SETPASSWORDCHAR, Ord('*'), 0);
  end;
  // ------------------------------------------------------------------------------
  // ****************************[ Otras partes importantes de este código ]*******
  // {Despues del uses}
  // const
  // InputBoxMessage = WM_USER + 200;    //Para imputboxt con password chard
  // {En el Type}
  // procedure InputBoxSetPasswordChar(var Msg: TMessage); message InputBoxMessage;
  // {USO CON LAS DOS LINEAS}
  // PostMessage(Handle, InputBoxMessage, 0, 0);    //Para imputboxt con password chard
  // if InputBox('Comprobando seguridad', 'Porfavor indroduzca su clave de usuario', '')  = VarClaveUSusario then
  // ------------------------------------------------------------------------------
end;

Espero os sea útil y como siempre espero vuestros comentarios.

Por cierto, que nadie se anima a valorar el trabajo, es una buena manera de saber, donde tengo que mejorar y todos podéis hacerlo, ni me ofende, ni me molesta y es un buen ejercicio, para ver con la perspectiva de los compañeros el trabajo que estoy realizando os recuerdo como pido que me valoréis el trabajo.

Cita:
í Si no es molestia, podrían hacerme el favor de valorar el trabajo hasta este momento, lo más sinceramente posible, el motivo, es que como siempre he dicho y he mantenido, yo no soy un experto y necesito saber cuales son mis puntos fuertes, para intentar mejorar.

Me gustaría que lo valorarais de la siguiente manera, del 1 al 10, siendo 1 la menor valoración claro, cada una de las siguientes facetas, y si se os ocurre alguna, ya sabéis.

Explicaciones
Claridad
Código
Tablas
Descripciones
Diseño
Conceptos
forma de aplicar los conceptos
y utilidad

Esto me permitirá, en cuanto al tutorial, intentar corregir y mejorarlo , si puedo y ha nivel personal, seguir aprendiendo y como no autoestima, que me la podéis hundir más o nivelar
No se si es la época o qué, pero parece que los compañeros, no están muy animados a participar, como hace un par de años, claro esta es mi opinión, humildemente.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #111  
Antiguo 09-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Ya he explicado, esto en post anteriores, pero creo que es importante para el tutorial, así que nuevamente, expongo mi sistema de acceso a las diferentes partes del programa, si recordáis en la tabla usuarios (que por cierto, se me colo una S de más y se quedo como ususarios ) tenemos la estructura

Cita:
CREATE TABLE USUSARIOS (
ID INTEGER NOT NULL,
CLAVE T20 /* T20 = VARCHAR(20) */,
USUARIO T20 /* T20 = VARCHAR(20) */,
NIVEL INTEGER,
NOMBRE T80 /* T80 = VARCHAR(80) */
);
en ella existen dos apartados fundamentales, para el acceso, ojo todos son importantes, pero estos dos fundamentales, que son CLAVE y NIVEL, como es lógico, solicito el usuario y la clave, en un form de acceso, compruebo y si esta ok, cargo una serie de variables locales, con el usuario, la clave y el nivel, después la llamada a los diferentes apartados la hago con la función ACCESO, donde comprobamos e, nivel, con el que ponemos al apartado, todo desde un ActionList, para no tener que estar repitiendo código., si tenemos que volver a solicitar la clave uso un inputbox con la peculiaridad, de poner los caracteres como asteriscos, para ello uso las instrucciones que a parece en el procedure TFMenu.InputBoxSetPasswordChar(var Msg: TMessage);

De esta manera, si nos vamos a tomar un café y un compañero quiere acceder a un apartado, al que no tiene nivel y es delicado, aunque este activo el nivel de usuario, le solicitara la clave para acceder, con lo que se quedara con las ganas, creo que unas de las ventajas de este sistema es el ahorro de código, en apartados de seguridad.

Yo suelo usar el siguiente sistema para valorar el nivel de usuario

0...5 los valoro como acceso de visitante
6...7 Introductor de datos
8 Persona de mucha confianza
9 Acceso total

Claro esta que si tienes nivel 7 en vez de 6 puedes acceder a más apartados, o ver partes dentro de un apartado, que de otra manera no aparecen. Los apartados, que por tema de datos, o seguridad, siempre solicito clave de acceso e incluso en algún programa he usado la clave de acceso con un sistema de clave por fecha o clave diferencial.

Espero no haberos liado.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #112  
Antiguo 09-07-2013
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Poder: 21
PepeLolo Va por buen camino
Sólo puedo decir ¡Chapeau! Por el trabajo que estas realizando. Estoy siguiendo el desarrollo desde el principio y me parece fantástico. Es un ejemplo ejemplarizante de desarrollo de aplicación.
Componentes, Datamodulos, explicaciones, imágenes.

Es un trabajo que puede servir tanto para un nivel de programador bajo-medío-alto ya das un montón de aportes al mismo y das buenos ejemplos de resolución como son los componentes adaptados a las necesidades concretas.
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
Responder Con Cita
  #113  
Antiguo 09-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Cita:
Empezado por PepeLolo Ver Mensaje
Sólo puedo decir ¡Chapeau! Por el trabajo que estas realizando. Estoy siguiendo el desarrollo desde el principio y me parece fantástico. Es un ejemplo ejemplarizante de desarrollo de aplicación.
Componentes, Datamodulos, explicaciones, imágenes.

Es un trabajo que puede servir tanto para un nivel de programador bajo-medío-alto ya das un montón de aportes al mismo y das buenos ejemplos de resolución como son los componentes adaptados a las necesidades concretas.
Gracias PepeLoto, por tu comentario, imagino que el tutorial a de ser útil, ya que cuando yo comencé con estos temas, no encontraba casi nada de información, es verdad que ahora existe bastante más, pero es difícil de digerir y aplicar algunas veces.
Una cosa que no me ha quedado clara a lo largo del tutorial, es el conocimiento real de los temas tratados por los compañeros, es por lo que digo muchas veces, que no se si interesa o es que estoy siendo muy espeso en el tema e incluso que alguno piense en que estoy siendo prepotente.

Vuelvo y te repito gracias por el comentario, pero podrias poner una evaluación como la pido, ya que me sería más útil, para saber realmente, en que tendría que mejorar.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #114  
Antiguo 09-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Además creo que mi sistema de trabajo no es el mejor, estoy seguro de que muchos compañeros, pueden hacer maravillas comparado con lo que yo hago, la única ventaja que yo puedo tener, es que suelo trabajar en las empresas para que hago los programas, ya que es la manera más eficaz de conocer las carencias y necesidades de una empresa. Por supuesto si te dedicas a la programación, esto es casi imposible, pero tampoco debemos quedarnos con lo que nos dice el jefe de una empresa, ya que suelen tener un ideal de la empresa, que muchas veces choca con la realidad, de la misma.

Normalmente suelo hablar de cosas que conozco, aunque sea un poco, hace ya cerca de 17-18 empece a trabajar para una empresa que vendía cupones, tipo a los de la once, el primer día me pusieron a trabajar, con un señor que llevaba unos cuantos años buenos trabajando para esta asociación de Madrid, empezó a explicarme el programa, claro, al final y al cabo se trata de un programa de gestión y yo programaba en clipper en esa época, que era el mismo lenguaje de la aplicación, al cabo de una hora y media, ya empece a trabajar con el programa y terminamos el día de trabajo, me preguntaron que que tal y le comente que no entendía, por que algunos procesos se hacían de determinada manera.
Al cabo de una semana, me presentaron a un señor, que me pregunto por las dudas, que tenia del programa, le comente y explique, el por que de mis dudas, me pregunto como lo haría yo, esquematizando le dije más o menos, mis ideas y planteamientos, al cabo de dos días volvió este señor, con otro mucho más joven, era la persona que había hecho el programa, tuve que volver a explicar mis dudas y decir mis planteamientos, esa misma tarde me sacaron de la oficina, para ir al hotel donde se quedaban, tenia una reunión, entre el gerente de zona, la persona que me enseño (era el tercero dentro de la asociación con más de 8 años en ella), el señor más mayor que me pregunto por mis dudas (resulto ser el Presidente de la Asociación, cosa que yo aun desconocía) y el programador), claro, como podéis imaginaros, estaba un poco acojonado, ya que había sido padre hacía pocos meses y estuve en el paro antes de este puesto cerca de 3 años, pensaba que me despedían, sinceramente.
Aquella reunión termino por la noche, me invitaron a cenar y me convocaron nuevamente, a la mañana siguiente en el hotel, durante esos dos días, se estuvo planteando y rebatiendo los diferentes puntos, tiradas, premiso, cierres, partes, etc. a la hora de comer, se presentan a un chaval joven, ante el delegado de zona y el señor que me enseñaba a mi, era mi sustituto, podéis imaginaros, se me cayo el alma a los pies, aún así, mantuve el tipo y calle, seguimos la reunión y al final del segundo día, me preguntaron, por que encontré con tanta facilidad, tantos puntos flacos, posibles errores y mejoras, mi respuesta fue sincera, por que estaban ahí, el presidente se rió y el informático cayo, estaba serio, muy serio, cuando el presidente se sereno, le pregunto al informático, que como era posible que un programa que estaba terminado hacia dos años, más un año terminarlo, no se hubiese dado cuenta de esos errores, mejoras y huecos de seguridad, el informático me miro, estaba triste, se le notaba que estaba enfadado imagine que consigo mismo (luego supe que así era), se hizo el silencio, yo me vire y le pregunte, algo que Jesús, el amigo que me enseño a programar en clipper me dijo al principio del todo, "oye Carlos (el nombre del informático), cuantas horas pasaste con el personal preguntándoles y viéndoles trabajar", me miro sorprendido y me dijo 0, fue el Presidente (no recuerdo su nombre), quien me dio las pautas, a el se le entregaba el programa y me comentaban los errores, me vire a este y le pregunte, cuantas horas paso usted con el programa, su respuesta fue tajante, yo no trabajo con eso se la doy a Fulanito (La persona que me enseño el primer día del cual no recuerdo el nombre) y el a su vez se lo da al personal el cual le dice los fallos, entonces tú (Carlos), no haz hablado nunca con nadie que trabajara directamente con el programa, me volvió a mirar, haciendo un esfuerzo por recordar y dijo no, nunca, dije, esta claro, ahí radica el problema, los usuarios finales, son los que detectan los fallos, si hay un jefe por medio, siempre se cohiben más que con un igual o alguien externo que este para solucionar los problemas, los dos me miraron, se miraron y me dijeron que volviera la hotel al día siguiente.

Regrese al día siguiente y me dijeron que no volvería a mi puesto de inspector (introductor), que me subían el sueldo (25.000 pesetas si no recuerdo mal) y que tendría que estar los próximos quince días yendo a trabajar a una casa que habían alquilado, con Carlos, que luego era probable, que tuviese que viajar a Madrid, cuando el programa estuviese en su fase final de pruebas, nunca fui, diez días despues, hubo un problema muy serio entre la persona que me había contratado y la asociación (el problema fue por parte de esta), no se bajaron del burro, así que mi jefe Jerónimo, decidió despues de preguntarme si yo era capaz de hacer un programa parecido como el que tenia la asociación, le dije que si, me dijo en 20 días, le dije, completo no, pero algunas partes si, acepto y rompió los acuerdos con la asociación, montando una nueva, dicho programa en terminarlo completo, tarde 6 meses, al cabo de otros tres años y medio, me pidió y pago que le hiciera una nuevo para windows, y que yo sepa a día de hoy lo signe usando, tiene fallos, debido a que fue echo en DBF y Delphi 3, hoy en día hubiese echo muchas cosas de manera diferente, pero me imagino que nos pasa a todos.

En cuanto a Carlos, estuve en contacto hasta el 2007, año en que por desgracia murió, durante muchos años, cuando venia a canarias, siempre nos veíamos, el programa lo corrigió siguiendo muchos de mis concejos y aplicando su técnica y forma de programar, pero fue siempre un buen amigo, a partir de aquel tercer día de conocernos.

Siento el coñazo, pero para que entandáis a que me refiero, se debe contar la historia completa.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #115  
Antiguo 09-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
jeje... me gustan las historias de los "abuelos"

Fdo. Otro abuelo
Responder Con Cita
  #116  
Antiguo 09-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Cita:
Empezado por Casimiro Notevi Ver Mensaje
jeje... me gustan las historias de los "abuelos"

Fdo. Otro abuelo
, ya no vamos para jovencitos, yo ya voy por tres pastillas al día y tú?
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #117  
Antiguo 09-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por José Luis Garcí Ver Mensaje
, ya no vamos para jovencitos, yo ya voy por tres pastillas al día y tú?
De momento, ninguna
Cuando muera, seré el más sano del cementerio
Responder Con Cita
  #118  
Antiguo 09-07-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
Poder: 22
José Luis Garcí Va camino a la fama
Ninguna , pues ami me tocan dos de la diabetes y una del colesterol, aunque el último análisis decía que no tengo. al paso que vamos cualquier día nos dan las llaves del ambulatorio. Me pegaba años y años sin ir al médico y llevo menos de dos, con 2-3 visitas al médico mensuales, por la diabetes, revisiones, etc.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #119  
Antiguo 09-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Vaya, yo por suerte, de momento, no tengo ningún problema de salud. Toco madera
Responder Con Cita
  #120  
Antiguo 09-07-2013
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Entre el "abuelo cebolleta" y Casimiro, en vez del ClubDelphi parece la editorial bruguera.

Saludos
PD: este comentario seguramente que sólo lo entendamos los "juveniles"
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
llamar un programa desde otro programa en un computador con dos monitores RONPABLO Varios 0 10-10-2011 18:20:51
Cargar tu programa desde otro programa rmendoza83 Varios 7 05-01-2009 19:51:33
Lanzar programa desde mi programa Pablo Carlos API de Windows 32 09-09-2004 13:56:26
Ejecutar un programa externo desde un programa de Delphi Roger_Fernandez Varios 3 02-09-2004 18:05:36
ISC ERROR CODE:335544344 I/O error for file "c:\gestion\gestion.gdb" eliasterrero Firebird e Interbase 2 28-06-2004 12:20:25


La franja horaria es GMT +2. Ahora son las 17:36:28.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi