Mostrando las entradas con la etiqueta Estructura Base Datos Aspel. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Estructura Base Datos Aspel. Mostrar todas las entradas

jueves, 29 de septiembre de 2016

Estructura de Tablas Aspel SAE 6.0

Como ya hemos comentado en otra ocasión la mayoría de las aplicaciones de Aspel utilizan la base de datos FireBird. 

Para el caso de SAE la base de datos tiene una estructura mucho más decente, comparada con la estructura que tiene Aspel CAJA, aun así los nombres de las tablas no son tan claros y además no siempre resulta fácil lidiar con sus más de 150 Tablas. 

ASi que aqui ire agregando los nombres de las tablas más cpmunes usadas dentro de Aspel SAE:


De entrada las tablas contiene tiene una terminación que se coincide con el número de empresa así que por default las tablas tendrán la terminación 01. 

PRODUCTOS E INVENTARIOS
INVE01
Contiene el catálogo e información como: clave, nombre, método de costeo existencias entre otro. En caso de usar el multialmacén estas existencias representan las existencias globales de la empresa, es decir suman las existencias de cada almacén, para conocer las existencia de cada almacén cuando se hace uso del multialmacen se debe consultar la tabla (en cuanto recuerde el nombre lo actualiza pero es algo así como multi-).
INVE_CLIB01
Contiene los campos libres que se usa para el catálogo de productos estos campos suelen usarse para almacenar información adicional de productos como puede ser si ficha técnica u otros detalles. 



PAGOS Y CUENTSA POR COBRAR
CUEN_M02
Contiene información respecto al pago que nos han realizado nuestros clientes.

miércoles, 18 de noviembre de 2015

Nomenclatura Tablas Aspel Caja 3.5

Como lo he mencionado en otra entrada Aspel Caja  crea, diariamente, varias tablas para su funcionamiento cosa que es bastante ineficiente, creo que eso también ya lo he dicho en la entrada anterior pero no me cansaré de decirlo.

Siempre es importante saber la nomenclatura que usa CAJA, para nombrar a sus tablas

XCCDDMMX

Dónde

X : Puede ser

               V  = Tabla que contiene las notas de Ventas
               D  =  Tabla que contiene el Detalle de las notas de Venta  (es decir las partidas de cada nota)
                I   =  Tabla que contiene el detalle de los Impuestos cobrados en cada Nota
                B  = Tabla que contiene una Bitácora de los movimientos realizados en el sistema

CC: Número de caja o sucursal (esto depende si se esta administrando por caja o por sucursal)

DD: Día de operación  (dos dígitos)

MM= Mes de Operación (dos digitos)

X = Año de la operación ( una letra que representa el año de la operación  S= 2013, T=2015, U=2015 ...)

Sin duda a la gente de Aspel les gusta complicar las cosas, pues de entrada no hay necesidad de crear una tabla para cada día de operación y luego la nomenclatura que usaron (especialmente en los años), bueno eso no tiene perdón.

Finalmente les dejo una pequeña función en VBA que  Toma una fecha y devuelve una cadena que con el formato usado Por aspel caja, para que en caso de tener que hacer una consulta dinámica ustedes solo agreguen la tabla que desean consultar y el numero de caja o sucursal.

Este es un ejemplo de como se podría construir una consulta para obtener los datos de las notas de Venta de Aspel Caja para la tienda o caja 01 (V= Ventas , 01= No Caja o Sucursal)

qry = "         SELECT *  FROM  V01" +  FechaCaja(ToDay());


'-------------------------------------------------------------------------------------------------
'Devuelve una cadena que representa la fecha con la nomenclatura usada por Caja35 en el formato usado por aspel caja 3.5
'Formato de fecha Caja: ddmmx
'           Donde: dd= 2 digitos para dia mm= 2 digitos para mes x=  1  letra para año (S= 2013, T=2014)
'
'-------------------------------------------------------------------------------------------------
Private Function FechaCaja(Fecha As Date) As String
    Dim FecCaja As String
         
    'Obtiene el dìa al nombre de talba
    If Day(Fecha) < 10 Then
        FecCaja = "0" & CStr(Day(Fecha))
    Else
        FecCaja = FecCaja & CStr(Day(Fecha))
 
    End If
 
    'agrega el mes (mm) al nombre de la tabla
    If Month(Fecha) < 10 Then
        FecCaja = FecCaja & "0" & CStr(Month(Fecha))
    Else
        FecCaja = FecCaja & CStr(Month(Fecha))
    End If
 
    'Agrega la letra correspondiente al año, tomando en cuenta que en el sistena
    'El año 2013 corresponde a la letra S --1930 Representa el incremento inicial--
 
    FecCaja = FecCaja & Chr(Year(Fecha) - 1930)
 
    FechaCaja = FecCaja
 
End Function

viernes, 10 de enero de 2014

El Infierno Aspel

No sé si he tenido muy mala suerte o si no me he adentrado lo suficiente en los sistemas de Aspel pero de verdad creo que los Aspel (Coi, Noi, SAE, Caja) diseña sus programas de tal manera que se asegura de obligarnos a pagar costosas pólizas de servicio  y constantes actualizaciones.

Aun no termino de entender porque es tan popular siendo, desde mi punto de vista, tan malo.

Tendría un sin fin de quejas con casi todos sus sistemas, pero comenzare con Aspel Caja:


En la versión 3.5 finalmente se decidieron a usar una base de datos "moderna", pues en la versiones anteriores venían usando maneja dores de base de datos de la era de los dinosaurios. En esta versión optaron por FireBird que es un derivado de mysql , y a juzgar por las pruebas no es nada malo el manejador lo que es realmente malo es el diseño de la base. a quien que sea medianamente inteligente o que tenga nociones de bases de datos relacionales se le ocurre hacer una tabla para cada día de operaciones.

Asi es caja crea varias tablas por cada dia de operacion, entre lasque recuerdo son

VXXXXX: Donde V indica quese trata de una tabla de ventas
DXXXXX: Donde D indicaq que se trata de una tabla de detalle de venta
IXXXXX:   Donde I indica que se trata de una tabla de Ingresos o era Impuestos ( no recuerdo).


Asi que despues de un añode funcionamiento tendra usted en su base de datos más de mil tablas si 1000 tablas. Ni varios de los ERPS mas robustos que conozco tienen esa cantidad de tablas. Pero esperen eso no es todo estaba olvidando comentar que crea una de estas tablas por cada tienda o por cada caja que esten configurada; asi que supongamos que tiene una tienda con 6 cajas * 3 tablas ( en realidad son mas) * 365 días, después de un año tendremos mas de 6,500 (seis mil quinientas) tablas en la base de daos.

Ya se imaginaran lo lenta que se puede volver la base de datos y lo complicado que resulta intentar hacer una consulta.

Por ejemplo para consultar las ventas de dos días de dos cajas diferentes  (desde estas tablas ) se tendría que hacer algo  como esto:

Select   *
From    VentasCajaUnoDiaUno
Union
Select *
Fom     VentasCajaDosDiaUno
Union
Select *
Fom     VentasCajaUnoDiaDos
Union
Select *
Fom     VentasCajaDosDiaDos

Dios Santo.......esto es solo para dos días y dos cajas, en lugar de poder hacer algo similar a esto:

Select *
from Ventas
Where ven_fecha between Fecha1 and Fecha2
            and ven_cve_caja in (1,2)
 

Quien les enseño a diseñar bases de datos, de verdad son tan tontos ? No lo creo mas bien creo que ha sido una cuestión de mantener la base de datos bastante mal estructurada hasta el punto que sea casi imposible obtener información de ella si no es a través de sus reportes .

Espero sus comentarios