Saludos cordiales.
Soy Juan Navas, creador de AdaptaPro, tengo 27 años desarrollando aplicaciones comerciales, hace más de 10 años decidimos crear un sistema de concepto ERP, logramos crear una solución para uso propio que nos permitía conocer todas las actividades o compromisos de la empresa en forma de semáforo, esto nos llevó a gestionar nuestra empresa bajo los fundamentos de la gerencia: Planificación, Dirección, Supervisión y evaluación.
Hemos estado conversando con Antonio Linares para crear un nuevo producto comercial ERP de código Abierto con muchas funcionalidades predefinidas donde podamos concretar en cada país a un socio representante que pueda adaptarlo a los tributos y exigencias formales en cada país. El negocio se fundamenta en cuatro pilares:
1. Tecnologías (todos lo referente al binario o kernel de la aplicación)
2. Conceptualización (Como se vende, implementa y utiliza un ERP), herramienta para empresarios y luego para usuarios que deben trabajar mediante tareas indicadas por el ERP.
3. Comercialización o Agentes de Ventas.
4. Prestación de Servicios mediante proyectos de implementación. Un ERP debe ser utilizado en modo de producción (Planificación de todas las actividades de los usuarios, certificación de resultados y capacitación de usuarios y asesorías permanentes). Contamos con un sistema de gestión de proyectos para uso nuestro y para comercialización.
Mi página Web, actualmente está en rediseño mediante gestor de contenidos y plantillas, nuestras aplicaciones están siendo adaptadas hacia las NIFF (Normas internaciones de Información Financiera) y NIC (Normas internacionales de contabilidad) que nos permitiré ser implementado con facilidad de ser implementado en cualquier país que adopte estas normas.
Estamos en la búsqueda de socios para el desarrollo y comercialización de esta herramienta en cada país. Agradezco cualquier comentario o propuesta para presentar un nuevo ERP.
Actualmente estamos creando video en youtube de presentación del concepto ERP de AdaptaPro . Nuestro ERP será la referencia de experiencia y planteo rediseñar un nuevo modelo ERP.
Porque llegamos a crear un ERP: Precedenctes.
Juan Navas “Creador de DataPro y AdaptaPro”, recopiló más de 20 años de experiencia siendo director y/o accionista de diversas firmas jurídicas dedicadas la actividad comercial “AdaptaPro”, gracias la responsabilidad legal, diseño un modelo de sistema proactivo basado en la planificación en las soluciones en diversas áreas: Tributario, Proyectos, Gestión de Clientes o (CRM) Finanzas, Laboral y demás deberes formales. La experiencia directa en AdaptaPro y experiencia obtenida en miles de implementaciones fue la materia prima para gestar un modelo de solución empresarial de alcance “ERP”, donde la gestión de la empresa se realiza mediante previa planificación y medidores de gestión para conocer las actividades: Realizadas en su debido momento, las actividades no realizadas en la fecha establecida y las actividades por realizar. Además el concepto logra evitar de manera proactiva las omisiones o incumplimientos causados por el factor humano: La memorización, discrecionalidad, desconocimiento y la disposición.
El concepto o filosofía del ERP está en la manera de realizar las transacciones o actividades del usuario, en un ERP el usuario de tesorería es informado mediante un formulario de actividades todas las actividades o tareas que debe realizar: Calcular y Pagar Impuestos, Servicios de electricidad, teléfonos, nóminas, entre otros. En cambio un sistema para la administración es discrecional, el usuario es quien decide las actividades que va a realizar y luego las registra en el sistema para luego generar listados o informes.
Aspectos tecnológicos:
Debe estar basado en el modelo de bases de datos relaciones (RDBMS), todas las aplicaciones deben utilizar la misma base de datos sin procesos de integración ni redundancia de datos.
Arquitectura Abierta: Mediante el concepto de diccionario de datos o Metadatos “todas las tablas podrán ser adaptadas según la necesidad del cliente”.
Código fuente abierta o disponible: Todos los programas que generan las transacciones financieras podrá estar disponible para que el usuario las adapte a sus necesidades o país. En nuestro caso hemos utilizado FIVESCRIPT adaptado a nuestro criterio, y programas (PRG) precompilados en modulos HRB
Programa DPXBASE
// Programa : DPCONTENIDOS
// Fecha/Hora : 14/12/2014 23:06:29
// Propósito : Incluir/Modificar DPCONTENIDOS
// Creado Por : DpXbase
// Llamado por: DPCONTENIDOS.LBX
// Aplicación : Administración del Sistema
// Tabla : DPCONTENIDOS
#INCLUDE "DPXBASE.CH"
#INCLUDE "TSBUTTON.CH"
#INCLUDE "IMAGE.CH"
FUNCTION DPCONTENIDOS(nOption,nId)
LOCAL oBtn,oTable,oGet,oFont,oFontB,oFontG
LOCAL cTitle,cSql,cFile,cExcluye:=""
LOCAL nClrText
LOCAL cTitle:="Gestión de Contenidos"
cExcluye:="CON_ID,;
CON_CODIGO,;
CON_ACTIVO"
DEFAULT nID :=SQLGET("DPCONTENIDOS","CON_ID"),;
nOption:=1
DEFINE FONT oFont NAME "Verdana" SIZE 0, -10 BOLD
DEFINE FONT oFontB NAME "Arial" SIZE 0, -12 BOLD ITALIC
DEFINE FONT oFontG NAME "Arial" SIZE 0, -11
nClrText:=10485760 // Color del texto
IF nOption=1 // Incluir
cSql :=[SELECT * FROM DPCONTENIDOS WHERE ]+BuildConcat("CON_ID")+GetWhere("=",nID)+[]
cTitle :=" Incluir {oDp:DPCONTENIDOS}"
ELSE // Modificar o Consultar
cSql :=[SELECT * FROM DPCONTENIDOS WHERE ]+BuildConcat("CON_ID")+GetWhere("=",nID)+[]
cTitle :=IIF(nOption=2,"Consultar","Modificar")+" Gestión de Contenidos "
cTitle :=IIF(nOption=2,"Consultar","Modificar")+" {oDp:DPCONTENIDOS}"
ENDIF
oTable :=OpenTable(cSql,"WHERE"$cSql) // nOption!=1)
IF nOption=1 .AND. oTable:RecCount()=0 // Genera Cursor Vacio
oTable:End()
cSql :=[SELECT * FROM DPCONTENIDOS]
oTable :=OpenTable(cSql,.F.) // nOption!=1)
ENDIF
oTable:cPrimary:="CON_ID" // Clave de Validación de Registro
oCONTENIDOS:=DPEDIT():New(cTitle,"DPCONTENIDOS.edt","oCONTENIDOS" , .F. )
oCONTENIDOS:nOption :=nOption
oCONTENIDOS:SetTable( oTable , .F. ) // Asocia la tabla <cTabla> con el formulario oCONTENIDOS
oCONTENIDOS:SetScript() // Asigna Funciones DpXbase como Metodos de oCONTENIDOS
oCONTENIDOS:SetDefault() // Asume valores standar por Defecto, CANCEL,PRESAVE,POSTSAVE,ORDERBY
oCONTENIDOS:nClrPane:=oDp:nGris
IF oCONTENIDOS:nOption=1 // Incluir en caso de ser Incremental
// oCONTENIDOS:RepeatGet(NIL,"CON_ID") // Repetir Valores
oCONTENIDOS:CON_ID :=oCONTENIDOS:Incremental("CON_ID ",.F.)
ENDIF
//Tablas Relacionadas con los Controles del Formulario
oCONTENIDOS:CreateWindow() // Presenta la Ventana
// Opciones del Formulario
//
// Campo : CON_ID
// Uso : Id del Registro
//
@ 3.0, 1.0 SAY oCONTENIDOS:oCON_ID VAR oCONTENIDOS:CON_ID ;
BORDER ;
FONT oFontG;
SIZE 16,10;
RIGHT
@ oCONTENIDOS:oCON_ID :nTop-08,oCONTENIDOS:oCON_ID :nLeft SAY "Id del Registro" PIXEL;
SIZE NIL,7 FONT oFont COLOR nClrText,15724527
//
// Campo : CON_CODIGO
// Uso : Contenido
//
@ 4.8, 1.0 GET oCONTENIDOS:oCON_CODIGO VAR oCONTENIDOS:CON_CODIGO VALID !VACIO(oCONTENIDOS:CON_CODIGO,NIL);
WHEN (AccessField("DPCONTENIDOS","CON_CODIGO",oCONTENIDOS:nOption);
.AND. oCONTENIDOS:nOption!=0);
FONT oFontG;
SIZE 320,10
oCONTENIDOS:oCON_CODIGO:cMsg :="Contenido"
oCONTENIDOS:oCON_CODIGO:cToolTip:="Contenido"
@ oCONTENIDOS:oCON_CODIGO:nTop-08,oCONTENIDOS:oCON_CODIGO:nLeft SAY "Contenido" PIXEL;
SIZE NIL,7 FONT oFont COLOR nClrText,15724527
//
// Campo : CON_ACTIVO
// Uso : Activo
//
@ 6.6, 1.0 CHECKBOX oCONTENIDOS:oCON_ACTIVO VAR oCONTENIDOS:CON_ACTIVO PROMPT ANSITOOEM("Activo");
WHEN (AccessField("DPCONTENIDOS","CON_ACTIVO",oCONTENIDOS:nOption);
.AND. oCONTENIDOS:nOption!=0);
FONT oFont COLOR nClrText,NIL SIZE 76,10;
SIZE 4,10
oCONTENIDOS:oCON_ACTIVO:cMsg :="Activo"
oCONTENIDOS:oCON_ACTIVO:cToolTip:="Activo"
oCONTENIDOS:Activate({||oCONTENIDOS:ViewDatBar()})
STORE NIL TO oTable,oGet,oFont,oGetB,oFontG
RETURN oCONTENIDOS
/*
// Barra de Botones
*/
FUNCTION ViewDatBar()
LOCAL oCursor,oBar,oBtn
LOCAL oDlg:=oCONTENIDOS:oDlg
DEFINE CURSOR oCursor HAND
DEFINE BUTTONBAR oBar SIZE 52-15,60-15 OF oDlg 3D CURSOR oCursor
IF oCONTENIDOS:nOption=2
DEFINE BUTTON oBtn;
OF oBar;
NOBORDER;
FONT oFont;
FILENAME "BITMAPS\\XSALIR.BMP";
ACTION (oCONTENIDOS:Close())
oBtn:cToolTip:="Salir"
ELSE
DEFINE BUTTON oBtn;
OF oBar;
NOBORDER;
FONT oFont;
FILENAME "BITMAPS\\XSAVE.BMP";
ACTION (oCONTENIDOS:Save())
oBtn:cToolTip:="Grabar"
DEFINE BUTTON oBtn;
OF oBar;
FONT oFont;
NOBORDER;
FILENAME "BITMAPS\\XCANCEL.BMP";
ACTION (oCONTENIDOS:Cancel()) CANCEL
oBtn:cToolTip:="Cancelar"
ENDIF
oBar:SetColor(CLR_BLACK,15724527)
AEVAL(oBar:aControls,{|o,n|o:SetColor(CLR_BLACK,15724527)})
RETURN .T.
/*
// Carga de Datos, para Incluir
*/
FUNCTION LOAD()
IF oCONTENIDOS:nOption=1 // Incluir en caso de ser Incremental
oCONTENIDOS:CON_ID :=oCONTENIDOS:Incremental("CON_ID ",.F.)
ENDIF
RETURN .T.
/*
// Ejecuta Cancelar
*/
FUNCTION CANCEL()
RETURN .T.
/*
// Ejecución PreGrabar
*/
FUNCTION PRESAVE()
LOCAL lResp:=.T.
lResp:=oCONTENIDOS:ValUnique(oCONTENIDOS:CON_ID )
IF !lResp
MsgAlert("Registro "+CTOO(oCONTENIDOS:CON_ID),"Ya Existe")
ENDIF
RETURN lResp
/*
// Ejecución despues de Grabar
*/
FUNCTION POSTSAVE()
EJECUTAR("DPCNTMNU",oCONTENIDOS:CON_ID)
RETURN .T.
/*
<LISTA:CON_ID:Y:SAY:Y:N:Y:Id del Registro,CON_CODIGO:N:GET:N:N:N:Contenido,CON_ACTIVO:N:CHECKBOX:N:N:Y:Activo>
*/