Carga Batch de cobros.

October 2nd, 2009

Como somos una microfinanciera que tenemos convenios de Ministración y Cobro de créditos vía nómina con distintas instituciones, se ha vuelvo una necesidad el crear una forma eficiente de cargar los recibos en el Sistema S.A.F.E, para ello he hecho modificaciones al core y he creado un módulo de carga Batch para cubrir esta necesidad.
Las características de archivo de carga es:
Archivo de texto o cvs separado con comas (,), tener claro que en las observaciones no debe llevar ninguna coma, pues esto hará que se cargue incorrectamente el archivo. El Archivo admite hasta 100 lineas, o sea 100 cobros por recibo, si es mas de 100, éstos son ignorados.
El layout de carga del archivo es el siguiente:
NUMERO_DE_SOCIO[coma]NUMERO_DE_CREDITO[coma]NUMERO_DE_PARCIALIDAD[coma]CAPITAL[coma]INTERES[coma]IVA[coma]AHORRO[coma]OBSERVACIONES

al tener el archivo hecho, vamos al menú caja>factura rápida de convenios:

carga-paso-01

Al cargar el archivo tenemos esta vista:

carga-paso-02

En la última parte de archivo (o el pie de página) tenemos las notas y avisos que el sistema manda:

carga-paso-03

una vez analizado el pago, para guardar y generar el recibo solo se oprime el boton “enviar pago”; los registros irán desapareciendo uno a uno conforme se vayan guardando, hasta quedar el registro cero (0) y te mostrará el botón “imprimir recibo xxxx”.

BUGS:
Como el conteo de matrices en php empieza de cero (0), este no se elimina, y muestra el seudo error la “linea [número de registros] no se existe”.
El proceso puede ser tardado, según el servidor y el tamaño de la base de datos, en nuestro caso como tenemos cientos de miles, el proceso tarda más de 10 minutos.

un camino escarpado…

July 21st, 2009

Los inicios de SAFE (2005) fueron enteramente Sociales y enfocado a la Recuperación del Programa Federal “Credito a la Palabra”, se planeaba para sustituir a un sencillo programa Administrador que se llamaba “Cobranza” y “Auditor”, elaborado en Microsoft Access. El camino que ha recorrido SAFE ha sido muy escarpado, desde su diseño, los constantes y radicales de cambios de enfoque, cambios espontáneos y efímeros, la falta de Apoyo entre el personal, el temor y resistencia al cambio, falta de una planeación administrativa, etc.

Ya en el 2003, tenia versiones previas de un programa llamado SISCOBRA, aunque sin funcionalidades avanzadas, era utilizable.

Como contador de una Microfinanciera, Conocía en sus totalidad de la operación de la Empresa. Sus necesidades de información en todos los niveles, la forma de Contabilizar, de Ministrar un Crédito, La legislación Vigente, etc. No me habia encerrado en la operatividad de Cajas Solidarias, si no que había ampliado mi visión aprendiendo de casos de éxito en otras Microfinancieras, todo de la mano de mi amigo Google, y con mi pomposa conexión de 56 Kbps.

Aún así, en este ambiente cambiante, no fue fácil iniciar, lo primero fue convencer a una directiva muy reacia a los cambios, acostumbrados a medios impresos. Después fue determinar en enfoque del sistema, si este se adaptaría a las requerimientos de la Ley de Ahorro y Crédito Popular, o se adaptaría a la operatividad de la empresa, que en ese momento era radicalmente diferente a cualquier otra microfinanciera.

En ese tiempo no contaba con ningún presupuesto para adquirir licencias, ni equipo, ni nada por el estilo, solo con mi salario (y que en ese momento era de menos de una sexta parte de lo que gano actualmente como Titular Contable), y lo único que programaba a un nivel aceptable era Visual Basic 6.0 con MS Jet Engine 3.51. Todo eso hizo que me decidiera a usar entornos, herramientas y software Open Source.

El lenguaje de programación fue otra decisión difícil; probé con C++, con Pascal / Delphi, Visual Basic, Java, FoxPro, Velásquez Visual, python, etc… pesando entre facilidad, expansibilidad, adaptación, implementación, Rapidez del desarrollo, etc.  PHP fue mi elegido, pues como he mencionado antes, no tenía ningún peso de presupuesto, además estaba lanzando la versión 5.x que soportaba muchos features que estarían presentes en la versiones futuras y un largo soporte, así como programación Orientada a Objetos y manejos de memoria más optimizado. Y con esto, tratar de revivir el proyecto fallido de la UNAM.

Aunado a eso, la decisión de que Base de datos que usaría se me hizo muy difícil, en MS Access, todo era maravillas, todo visual, todo muy bonito, casi ni necesitabas saber de SQL. Pero más allá no sabía que era un trigger un StoredProcedure o los niveles de permisos de usuario. En ese momento, la versión 3.25 de MySQL gobernaba, así que se me antojó probar con Firebird, con PostgreSQL, con sqlite, MS Jet Engine, etc. Me decidí por MySQL, pero aquí la versión fue el paradigma, uso la versión 3.x que contaba con muchas herramientas de desarrollo o la aventurada version > 4.10 que apenas y se estaba terminando de cocer. También el Engine, innodb o MyISAM, para no hacerlo más largo me decidí por Mysql 4.10 con MyISAM.

Para ese momento, no existía ninguna referencia de un sistema para Microfinanciera, no conocía a Mifos o Octopus Microfinance, no tenía alguna idea de donde empezar, solo tenía papeles, un par de leyes, algunas referencias de los formatos y contratos que se usaban, todo un mundo de información, sin jerarquía alguna. No tenía ni imágenes de alguna GUI, nada…

Mi poco conocimiento que me había heredado Visual Basic sobre la verdadera Programación, me trajo problemas que hasta ahora arrastro. Inicialmente programada todo en funciones; acostumbrado a arrastrar y soltar, la maquetación en HTML se me hizo muy, muy lenta.

Los cambios estructurales que hacían (La Administración) de la noche a la mañana me atrasaron bastante, tanto, que tres cuartas partes del tiempo que llevo desarrollando el sistema es tratando de subsanar las necesidades de la empresa (con mencionar que el Calculo de Intereses lo he acabado hace unos días, por que no había alcanzado un criterio unificado de calculo).

No me dieron tiempo de estudiar a la empresa, ni estructurar sus necesidades, ni documentar, nada…

Los directivos y jefes operativos ya querían ver resultados de mi trabajo, no tenía una IDE de PHP. Ni de MySQL, y las que tenía no las sabía explotar bien; tenía que aprender PHP, MySQL, CSS, XML y JavaScript… todos con sus diferencias y sus usos (si al menos hubiese conocido jquery).

La primera versión usable se llamaba ARPHAMIN, y tenía funcionalidades muy limitadas, ya para el tercer trimestre de 2007, SAFE ya estaba más maduro, y se llamaba EACPMIN. Todo en base a funciones.

Otra gran limitativa fue la B.I.; pues PHP solo estaba enfocados a CMS, Foros, etc; No sabía en que hacer los reportes, pero probé con JasperReports, RLIB, php-pdf, y PHPReports, este ultimo elegido por su integración, y para los gráficos selecciones Open Flash Reports.

Actualmente llevo el 80% del core migrado a Clases, estoy trabajando en una reingeniería del sistema, normalizando la base de datos y preparando los esquemas UML. Tratando de trabajar con Frameworks (jquery), Alimentando el Manual, y todavía me queda mucho trabajo por delante, todo con una sola persona.

He aprendido mucho, he aprendido el valor que tiene la planeación, los UML, las pruebas Unitarias, etc. Ahora si me considero un programador, capaz de diseñar un gran sistema de una forma profesional, y voy por ti I.A.

Me han criticado mucho el proyecto, desde la federación de Cajas, el comité de Supervisión, Auditores, etc… por qué solo es una persona quién lo mantiene, fue por ello de mi decisión de Liberarlo bajo Open Source, sé que la comunidad no me dejará solo; he escuchado muchas experiencias negativas sobre el código cerrado y lo crítico cuando no es ampliable / modificable.

Sigo trabajando en el Sistema (hasta donde me presten vida), soy bastante positivo, pues la Ley de Ahorro se hizo para que solo entidades con alta solvencia puedan autorizarse, y son ellas las únicas para adquirir sistemas que sobrepasan el Medio Millón de pesos. Sin embargo las Cajas Solidarias Hermanas apenas y tienen dos personas como empleadas, y unos pocos de Miles de pesos de presupuesto anual. Yo solo pienso devolver algo de lo mucho que me ha dado a este noble proyecto que son las Cajas Solidarias.

Más screenshots de SAFE

March 24th, 2009

Presento más screenshots de safe.
utilerias
Ejemplo de Utilerias de SAFE
socios_vivienda
Ejemplo de la forma para agregar Datos de Vivienda del socio.
reporte-catalogo-de-cuentas
Catalogo de Cuentas Contables.
asignar-causas-de-cv
Ejemplo de Asignacion de Causas de la Cartera Vencida
logs-de-utilerias
Ejemplo de el LOG de utilerias que crea el sistema en los procedimientos.
calendario-de-llamadas
Ejemplo del Calendario de Llamadas Telefonicas.

Administrando 8 Sucursales con S.A.F.E.

March 23rd, 2009

Ya administro a través de S.A.F.E. ocho sucursales:

  • San francisco de Campeche, Campeche.
  • Alfredo V. Bonfil, Campeche.
  • Palizada, Campeche.
  • Escarcega, Campeche.
  • Calakmul, Campeche.
  • Tenabo, Campeche.
  • Calkini, Campeche.

Y proximamente  otras dos en:

  1. Maxcanú, Yucatán.
  2. Halachó, Yucatán.

y vamos creciendo.

Los dias festivos en S.A.F.E.

March 13th, 2009


los dias en S.A.F.E. determinan los dias en que no se labora para efectos de vencimientos de Inversiones, las de Parcialidades y las de Créditos, a través de la función set_no_festivo(), para que esto pueda fucionar adecuadamente se debe capturar año con años los dias festivos, se tiene planeado que en un futuro esto se modifique para hacer mas dinamico y facil de crear.

Donde esta la BD de S.A.F.E.

March 12th, 2009

Por la rapidez en que hice el RC de S.A.F.E.,  no cambié una opcion en el Server2Go, que elimina la Base de datos, sin embargo la BD esta en el directorio C:\Server2Go o donde ustedes descompriman el Download, el Archivo se llama db_{fecha}.sql, solo basta restaurarlo con el Mysql Administrator que puede ser descargado desde este link.

Suerte.

Cambiando la contraseña en S.A.F.E

March 12th, 2009

Al publicar una RC de S.A.F.E se me pasó, si mal no recuerdo, cambiar la contaseña de ROOT, solo les queria comentar que para encriptar el password usa el algoritmo MD, así pueden hacer un copiar/pegar desde una Administrador como SQLYog, generaldola con la funcion md5();

Ejemplo:

/* suponiendo que esta en la venta de ejecución de SQLYog */

SELECT MD5(”mipassword”);

Picalo en S.A.F.E

March 12th, 2009

Uno de los features que tendrá S.A.F.E. en proximas veriones será la integración de picalo como detector de Fraudes, esta suite es capaz de detectar distintos comportamientos de datos, su facilidad de programación en python lo hace conmpatible con php,  además de ser multiplataforma.

Con esto se persigue completar una suite inteligente que pueda detectar fraudes y medir riesgos.