2009-03-22 8 views
21

Ya en octubre, Kristopher Johnson preguntó sobre Accounting Software Design PatternsREHASH: Accounting Software Patrones de Diseño

Recibió varias respuestas, pero eran básicamente los mismos, señalando Martin Fowlers Accounting Patterns.

Realmente no encuentro todos los patrones de Fowlers útiles. Parecen demasiado complejos para un sistema de contabilidad más simplista, por lo que estoy volviendo a plantear la pregunta de Kristopher y buscando más opciones, preferiblemente para sistemas más pequeños.

Esto sería principalmente un sistema basado en dinero en efectivo en el que los usuarios reciben cuentas similares a un banco. Pueden iniciar sesión (en línea) y consultar saldos, realizar ciertas transacciones, etc.

Supongo que sería más similar a una compañía de Paypal o de tarjeta de crédito que a un banco, pero en una escala menor. No tendrá que lidiar con impuestos, Amortizaciones ni con ninguna de las cosas que vería en un sistema de contabilidad completo. Solo balances y transacciones.

Entonces, ¿alguien puede señalar algún recurso adicional para el diseño de software basado en contabilidad o incluso buenas implementaciones de un sistema de contabilidad simple?

Respuesta

8

Entonces, ¿alguien puede señalar recursos adicionales para el diseño de software basado en contabilidad o incluso buenas implementaciones de un sistema contable simple?

El Free Digital Money Project parece útil para sus necesidades. Proporciona un marco básico de transacciones y equilibrio.Es intencionalmente simple y abstracto, por lo que puede ofrecer información útil sobre el diseño, especialmente si desea probar ideas novedosas.

Cyclos es más práctico. Cubre cuentas de usuario y transacciones.

MyBanco es otro sistema bancario de fuente abierta que admite cuentas bancarias de usuarios y acceso basado en web. Se puede usar con monedas virtuales y reales.

Todos estos son de código abierto, por lo que puede consultar los documentos, la arquitectura y el código directamente.

Como acotación al margen, si usted está realmente interesado sólo en los saldos y transacciones, entonces suena como cualquier patrón o proyecto relacionado con la reputación, el karma, o sistemas de puntos probablemente tendrán solapamiento relevante ...

+3

MyBanco es php sinsentido –

+0

Buenos ejemplos. Los revisaré, gracias. –

+1

El sitio web gratuito de Digital Money Project ya no está disponible. –

-3

Almacene dinero como centavos (entero) en lugar de dólares (flotante). No es un diseño, pero probablemente sea más útil.

+5

No estoy actualmente preocupados por los detalles de implementación. Quiero patrones de diseño. –

+1

int es un desastre que está por ocurrir. ¿Por qué no usar un tipo de datos decimales en su lugar? int for money no es solo ofuscación: cuántos lugares decimales tienes. A menos que siempre redondee a centavos enteros, necesitará algún tipo de factor para dividir para obtener sus decimales. ¿Qué ocurre cuando cambias la moneda al Yen japonés, GBP, EUR? – Chris

1

Google search for "two phase commit"

No

un patrón de diseño en sí, sino que necesita para hacer las operaciones de seguro como "monto de la transferencia de $ $ $ account1 a cuenta2" no lo hacen nunca "retirar" sin el juego " depósito "... es decir, si la energía se apaga antes de que se complete el" depósito ", la" retirada "se retrotrae (se deshace)

Las transacciones susceptibles de aceptación se componen de subcontratación no reversible (rollback-able) transacciones ...

  1. permisos adquieren necesarios: rechazo trivial, "insuficientes fondos"
  2. iniciar una "confirmación en dos fases"
  3. añadir sub-transacciones
  4. confirmar o deshacer-back

Advertencia: La matemática de BCD se inventó para evitar el error de redondeo en matemáticas de Base 10. Usted no menciona los problemas internacionales, pero que había necesidad de punto fijo o matemáticas "gran precisión", conversión de moneda, y todo lo demás ...

9

patrones de Fowler son no excesivamente complejo. Ellos son lo que se necesita. Es poco probable que pueda construir algo más simple sin tener problemas con los usuarios finales o el contador.

4

Cuando implementar contabilidad es el modelo típico de una revista, transacciones y cuentas y tipos de cuenta.

tblTransactions 
    - Amount 
    - AccountID1 
    - AccountID2 
    - Type [CR/DR] 
    - DateEntered 

que entonces también tenemos una tblJournals que agrupa a las transacciones en la base obvia. También puede agregar JournalTypes, que contienen una descripción general de qué tipo de diario es, para que pueda detectar cosas agradables (reverazos, etc.).

Es bueno, porque las reversiones bajo este modelo son triviales. Puede recopilar todas las transacciones de su diario e intercambiar el tipo.

tblTransactions tiene un desencadenador y el desencadenador actualiza un "Equilibrio calculado" contra las cuentas específicas según el tipo. También puede ejecutar un informe durante un período determinado, y así sucesivamente.

No requiere mucho conocimiento contable para implementar esto y es simple, pero efectivo.

+0

Tengo casi cero conocimientos de contabilidad, por lo que incluso las "revistas" son un concepto extraño para mí. Entiendo lo que es una revista en software, generalmente un sistema de archivos (un registro de transacciones que puede reproducirse en caso de falla) ... Supongo que una revista tiene algo de análogo a esto. –

+0

Un diario es solo un puntero en una serie de transacciones, con algo de información adicional. Por lo tanto, puede contener la fecha, una descripción y el 'tipo'. El tipo se refiere a lo que están haciendo todas las transacciones subyacentes. Reembolso, lo que sea (puede inventarse en el contexto de su sistema). Los mapea a través de una tabla como 'tblJournalTransactions' (muchas transacciones en un diario). –

0

yo soy en realidad el autor de MyBanco, si desea alguna ayuda, apenas envíeme un correo electrónico :)