MultiEmpresa


([N1] olmangv) #1

estoy iniciando con velneo, pero tengo una duda, tengo una aplicaron desarrollada en visual foxpro 9, que es multiempresa de inventarios y deseo desarrollarla igual con velneo su funcionamiento es el siguiente:

el usuario ingresa a la aplicación y un formulario le solicita: el usuario, contraseña y en una lista desplegable le solicita seleccione a que compañia desea ingresar (01-Supermercado A, 02-Supermercado B, etc).

cuando el usuario ingresa pude trabajar únicamente con datos de esta compañía, sin embargo existen algunos procesos en los cuales el usuario puede tener acceso a otras compañías, como por ejemplo el puede copiar desde la compañía “A” hacia la compañía donde se encuentra trabajando artículos esto con el fin de no tener que volverlos a crear desde cero.

Un usuario con los permisos de administrador puede desde la compañía en donde esta trabajando puede irse a mantenimiento de compañías y puede crear una nueva compañía para lo cual la aplicación lo que hace es crear en disco dentro de la carpeta compañías una nueva carpeta con el nombre de la nueva compañía ejemplo compa_05 y copiar dentro de esa nueva carpeta las mismas tablas que contiene la compañía actual pero lógicamente vacías sin los datos, y con único usuario administrador con todos los privilegios para que de esta forma cuando se ingrese a esa nueva compañía se utilice este usuario de “administrador” y a partir de ese ingreso se le pueda dar permisos a los nuevos usuarios.

Mi duda es que tengo muy claro que soy nuevo en velneo y a penas llevo unas semanas estudiándolo, pero me preocupa seguir adelante estudiando y practicando los conceptos de velneo y que cuando quiera afrontar la migración de mi aplicación que actualmente tengo en visual foxpro 9, no se pueda realizar y haber perdido todo ese tiempo de aprendizaje, porque realmente mi interés primordial en pasarme a velneo es poder desarrollar mi aplicación de foxpro, tal cual esta pero con velneo.

Me queda la duda de si en velneo se puede hacer lo mismo, se puede en tiempo de ejecución crear nuevas compañias y crear nuevas carpetas con sus propias tablas, no se. Se que talvez me estoy adelantando y posiblemente me vías a responder que a medida que vaya descubriendo velneo esas dudas se van a ir contestando solas, pero al menos necesito saber que lo que intento realizar lo puedo hacer con velneo.
No se si puden enviarme a mi correo algún diseño de datos y aplicación que cumpla con lo que quiero.
Gracias por su ayuda


([N1] Fherr_MX) #2

No te desesperes, te van a contestar todavia tenemos hasta el 2096 ok


([N3] ereitmann) #3

En velneo se puede hacer casi de todo, el manejo de datos empresariales es su fuerte asi que seguro te va a dejar sorprendido lo rápido que podrias rearmar tu aplicación una vez que conozcas el manejo de velneo, visual foxpro al lado de velneo es comparar un carro a caballos con un ferrari,


([N4] Infortic) #4

Hola.

Hay dos enfoques posibles.

1-UNA ÚNICA INSTANCIA:

Es el más sencillo es tener una tabla de empresas, y en todas las tablas donde los datos van por empresa pones el campo EMPRESA, y lo que muestres lo haces filtrado, vamos sin ningún problema.

Pones opciones de copiar de una empresa a otra y santas pascuas.

De esta forma sólo tienes una carpeta de datos y desde determinados usuarios no tienes ningún problema en acceder a datos de otras empresas.

  • A favor puedes compartir los datos que quieras entre las empresas
  • En contra tienes que filtrar en todas las partes que quieras de la aplicación los datos por empresa.

2-UNA INSTANCIA POR EMPRESA:

Cada empresa tiene su carpeta de datos. Por lo que no comparten datos, si los artículos son los mismos en todas las empresas, tienes que copiarlos entre las distintas bases de datos.

  • A favor que las empresas son complétamente independientes.
  • En contra que son complétamente independientes y por tanto no puedes acceder de forma directa a los datos de las otras instancias, habría que hacer procesos más complejos para intercambiar datos (ficheros, funciones remotas…)

Si las empresas comparten datos como artículos, clientes, etc, y lo que va por empresa es contabilidad, facturación, pedidos, etc… sin duda es más sencillo el caso 1.


([N2] AyudaVelneo) #5

Hola @olmangv:

Las formas que te dice @infortic son las dos que tienes para conseguir lo que quieres.

En Velneo NO ES POSIBLE crear tablas en tiempo de ejecución… el enfoque es distinto a fox (o visual basic)

Por si te sirve de ayuda mira esto.

Un saludo


([N4] gontorre) #6

Buenos días @olmangv,

Yo estaba en el mismo caso que tú. Tenía una aplicación hecha en Foxpro con una estructura similar a la tuya. Las opciones técnicas para desarrollar algo así te las han dado ya, pero te cuento a mi experiencia.

Inicialmente trataba de hacer un clon de mi aplicación de Foxpro en Velneo y había ciertas cosas que me costaban mucho trabajo. Al final me di cuenta de que cuanto más te acerques a la forma de ver las cosas de Velneo mejor te irá. Intentar que todo funcione exactamente igual es muy complicado. Por ejemplo, en Foxpro yo tenía un montón de rejillas editables. En Velneo las he sustituido por rejillas de solo lectura con formularios de edición.

Para cada cosa que haga tu aplicación de Foxpro debes preguntarte, “este proceso, ¿cómo es mejor hacerlo en Velneo?”

Yo llevo casi 2 años con mi ERP instalado y no puedo estar más contento. Mejor rendimiento que Foxpro, más estabilidad, mayuor sencillez a la hora de hacer cambios,… Pero miro partes del programa que hice al principio y me arrepiento de no haberle dado un toque más “Velneo”.

Un saludo


([N1] olmangv) #7

Muchas gracias Gonzalo y a todos los que se han tomado el tiempo de responder a mi consulta, les agradezco muchísimo, y ciertamente como dice Gonzalo es dejar de tratar de querer clonar mi aplicación en fox, necesito entender mas lo de las instancias, no comprendo bien como es que se hacen si son varios ejecutables o cual es la forma de realizar este procedimiento, seguiré investigando, muchas gracias a todos, llevo mas de 20 años desarrollando en Foxpro y luego de tanto tiempo ver una herramienta con tanta potencia y que las cosas se hacen mas sencillas, cuesta creerlo.


([N4] informatica) #8

Hay una tercera manera de hacerlo.

  • Proyecto de datos de los datos comunes a ambas empresas.
  • Proyecto de datos de los datos de cada empresa.
  • Proyecto de aplicación que hereda los 2 proyectos de datos.

Ahora imaginemos que tenemos los siguientes directorios:

  • C:\App
  • C:\App\Comun
  • C:\App\Empresa1
  • C:\App\Empresa2

Al crear la instancia del proyecto de aplicación de la empresa 1, preguntará cual es el directorio de los datos la empresa 1 (C:\App\Empresa1) y cual es el directorio de los datos comunes (C:\App\Comun).

Al crear la instancia del proyecto de aplicación de la empresa 2, preguntará cual es el directorio de los datos la empresa 2 (C:\App\Empresa2) y cual es el directorio de los datos comunes (C:\App\Comun).

Espero haberme explicado. Un saludo.


([N1] olmangv) #9

Gracias por el aporte excelente, aprecio mucho sus aportes, entonces las instancias se crean cuando se instala la aplicación donde el cliente?

Dentro de la solución estos diferentes proyectos se verían de la siguiente forma o si me equivoco me corrigen por favor:

                       App_interface
                              |
                              |                                  
                       App_Datos_Comun
                         /            \
                        /              \
           App_Datos_Empresa1       App_Datos_Empresa2

([N4] Infortic) #10

Hola.

Para que te hagas una idea, un proyecto es un molde, del cual sacas instancias.

A cada instancia de datos se le puede asignar una carpeta donde creará sus tablas.

De este modo, del proyecto de datos comunes harás una única instancia y del proyecto de datos de empresa una por empresa.

Piensa que los datos comunes serán más bien maestros (artículos, formas de pago, etc…), por lo que las facturas, etc… deben de poder accederlos, así que deberían estar por encima.

El esquema de proyectos debería ser:

App
|
|
Datos Empresa
|
|
Datos Comunes

Cuando instalas en el cliente harías las instancias de esta forma.

App1 App2 App3
| | |
| | |
Datos Empresa1 Datos Empresa2 Datos Empresa3
| | |
\ | /
Datos Comunes

Así te aparecen como 3 aplicaciones iguales, una para cada empresa, pero que comparten una serie de datos comunes.

De todas formas piensa antes qué nivel de interacción deseas, si después quieres informes consolidados con varias empresas, con este esquema deberás usar tablas puente en Datos Comunes para consolidarlos, y si deseas en tiempo de ejecución consultar varias empresas o cambiar rápido de empresa, con este esquema lo tendrás más complicado, ya que para cambiar de empresa debes cerrar la aplicación y volverla a abrir con otra empresa, ya que son aplicaciones distintas.

Como en todo hay ventajas e inconvenientes en cada modelo.