Módulo para Digitalización de Documentos

El propósito de este módulo es brindar la ayuda a los diferentes usuarios para realizar el  escaneo
y almacenamiento de diferentes tipos de documento y las consultas necesarias para facilitar su acceso.

Un usuario se encargará de escanear y almacenar en una localización del disco del servidor
 (llamada ubicación temporal), los siguientes documentos:
o	F-acturas.
o	P-edidos (Picking y/o alistos).
o	D-evoluciones.
o	R-ecibos.

Para identificar cada tipo de documento almacenado en disco el usuario debe utilizar el primer carácter
de cada uno de los documentos anteriormente mencionados y el número de documento que identifica en
forma única a cada uno. Por ejemplo la factura número cinco mil tendrá en el siguiente nombre de
archivo: F5000.jpg.

El sistema tendrá una opción que tomará todos estos tipos de documentos que se registraron en los
sistemas SGE desde la última vez (fecha y hora) en que se ejecuto este proceso a la fecha y hora que
el usuario le indique (hasta fecha y hora de los documentos que escaneo). El sistema buscará en la
localización del disco donde el usuario escaneo los documentos y asociará cada documento del SGE con
el archivo fisico que le corresponde según la nomenclatura que se sugerimos anteriormente (ej. F5000. jpg).

El usuario podrá revisar en la ubicación temporal del disco cuales archivos quedaron pendientes de asociar
y también podrá consultar en el módulo a cuales documentos no se les asocio archivo.

Si el usuario desea sustituir algún archivo simplemente lo vuelve a escanear y lo guarda en la ubicación temporal.

Se llevará una bitácora de los diferentes momentos en que un archivo fue sustiuido.

Se tendrán tres tipos de consultas para acceder a los archivos escaneados:
o conge	General: En el cual el usuario selecciona cual tipo y número de documento desea consultar.
o concl	Por Cliente: Se presentará la información del cliente y un tab para cada uno de los tipos de documentos escaneados.
o connu	Documentos sin imagen: Mostrara los documentos con el archivo nulo.

Tablas
    DigDocumentos(Cia, sucursal, documento, tipo(F,P,D,R), referencia, archivo, fechareg, usuario);

    Facturas (referencia es el pedido)
    Pedidos  (referencia es el alisto)
    Devolucion (referencia es la factura)
    Recibo   (referencia es nula)

    DigHistotico (cia, sucursal, documento, tipo, archivo, fechareg, usuario)

    DigSellos (cia, tipo, timestamp)

Procesos

    Levantado automatico:
    1) Se marca un timestamp inicial si es necesario!
    2) Se registra en Digdocumentos todos los documentos registrados a partir de timestamp con
       archivo null y con referencia la que corresponda.
    3) Se actualiza timestamp con el de fin de proceso!

    Asociacion automatica:
       Se busca en el directorio temporal todos los archivos.
       Si el archivo coincide con un documento se anota en el campo archivo
          Se mueve el archivo de teporal a definitivo.
       Caso contrario no se hace nada.

    Digitado manual (reg)
       Se puede ingresar manualmente un registro en digdocumentos.

    Asociacion manual (reg)
       Igualmente a un documento se le puede asociar un nombre de archivo simpre que este exista en
       el directorio temporal.
       El proceso debe mover el archivo al directorio definitivo.

    Historico (his)
       Cada que se registra o actualiza el campo archivo debe quedar en la bitacora.

drop table digdocumentos;
drop table dighistorico;
drop table digsellos;
drop table digparametros;

Create table DigDocumentos
(
  Cia char(3) not null,
  sucursal char(3) not null,
  tipo char(1) not null
     constraint DigDocumentos_tipo_ck check (tipo in ('F','P','D','R')),
  documento number(10) not null,
  referencia number(10),
  cliente    varchar2(25) not null,
  archivo varchar2(60),
  constraint digdocumentos_pk primary key(documento, tipo, sucursal, cia)
);

Create table DigHistorico
(
  Cia char(3) not null,
  sucursal char(3) not null,
  tipo char(1) not null
     constraint DigHistorico_tipo_ck check (tipo in ('F','P','D','R')),
  documento number(10) not null,
  archivo varchar2(60) not null,
  fechareg date not null,
  usuario varchar2(30) not null,
  constraint dighistotico_pk primary key(documento, fechareg, tipo, sucursal, cia)
);

Create table DigSellos
(
  Cia char(3) not null,
  tipo char(1) not null
     constraint DigSellos_tipo_ck check (tipo in ('F','P','D','R')),
  sello date not null,
  constraint digsellos_pk primary key(tipo, cia)
);

Create table DigParametros
(
  Cia         char(3) not null,
  dirtemporal varchar2(80) not null,
  dirfinal    varchar2(80) not null,
  constraint digparametros_pk primary key(cia)
);

CREATE OR REPLACE TRIGGER DigHistorico
AFTER INSERT OR UPDATE of archivo on DigDocumentos
FOR EACH ROW
BEGIN
   If Inserting Then
      insert into dighistorico
         (cia, sucursal, tipo, documento, archivo, fechareg, usuario)
         values (:new.cia, :new.sucursal, :new.tipo, :new.documento, :new.archivo, sysdate, user);
   elsif Updating then
      insert into dighistorico
          (cia, sucursal, tipo, documento, archivo, fechareg, usuario)
          values (:new.cia, :new.sucursal, :new.tipo, :new.documento, :new.archivo, sysdate, user);
   end if;
END;
/