design patterns - práctico - Rehash: patrones de diseño de software de contabilidad
patrones de diseño estructurales (6)
Entonces, ¿alguien puede apuntar a recursos adicionales para el diseño de software basado en contabilidad o incluso a buenas implementaciones de un sistema de contabilidad simple?
El proyecto de dinero digital gratuito parece útil para sus necesidades. Proporciona un marco básico de transacción y balance. Es intencionalmente simple y abstracto, por lo que puede ofrecer ideas de diseño útiles, especialmente si desea probar ideas novedosas.
Cyclos es más práctico. Cubre las cuentas de usuario y las transacciones.
MyBanco es otro sistema bancario de código abierto, que admite cuentas bancarias de usuarios y acceso basado en web. Se puede utilizar tanto con monedas virtuales como reales.
Todos estos son de código abierto para que pueda revisar los documentos, la arquitectura y el código directamente.
Además, si realmente solo te interesan los saldos y las transacciones, entonces parece que cualquier patrón o proyecto relacionado con la reputación, el karma o los sistemas de puntos probablemente tendrán una superposición relevante ...
En octubre, Kristopher Johnson preguntó por los patrones de diseño de software de contabilidad.
Recibió varias respuestas, pero todas eran básicamente iguales, apuntando a Martin Fowlers Accounting Patterns .
Realmente no encuentro los patrones de Fowlers tan útiles. Parecen demasiado complejos para un sistema de contabilidad más simplista, así que estoy repasando la pregunta de Kristopher y buscando más opciones, preferiblemente para sistemas más pequeños.
Esto sería principalmente un sistema basado 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 tarjetas de crédito o Paypal que a un banco, pero en una escala menor. No tendrá que lidiar con impuestos, Amortizaciones o cualquiera de las cosas que vería en un sistema contable de pleno derecho. Solo saldos, y transacciones.
Entonces, ¿alguien puede apuntar a recursos adicionales para el diseño de software basado en contabilidad o incluso a buenas implementaciones de un sistema de contabilidad simple?
Almacene el dinero como centavos (entero) en lugar de dólares (flotar). No es un diseño pero probablemente sea más útil.
Cuando implemento la contabilidad, es el modelo típico de un diario, transacciones y cuentas y tipos de cuentas.
tblTransactions
- Amount
- AccountID1
- AccountID2
- Type [CR/DR]
- DateEntered
Entonces también tengo un tblJournals
que agrupa las transacciones sobre 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 (reverals, etc.).
Es bueno, porque las reversiones bajo este modelo son triviales. Solo puede reunir todas las transacciones de su diario e intercambiar el tipo.
El tblTransactions tiene un disparador, y el disparador actualiza un ''CalculatedBalance'' 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.
En realidad, soy el autor de MyBanco. Si desea ayuda, simplemente envíeme un correo electrónico :)
Los patrones de Fowler no son demasiado complejos. Son sobre lo que se necesita. Es poco probable que pueda construir algo más simple sin tener problemas con los usuarios finales o con el contador.
Búsqueda de Google para "cometer dos fases"
No es un patrón de diseño en sí mismo, pero debe asegurarse de que operaciones como "transferir $ cantidad de $ account1 a $ account2" nunca "retire" sin el "depósito" correspondiente ... El depósito "se completa, el" retiro "se revierte (se deshace)
Las transacciones confiables se componen de sub-transacciones que no se pueden deshacer (reversibles) ...
- Adquirir permisos necesarios: rechazo trivial, "fondos insuficientes"
- iniciar un "compromiso de dos fases"
- agregar sub-transacciones
- cometer o revertir
Advertencia: la matemática BCD se inventó para evitar el error de redondeo en matemática de Base 10. No menciona los problemas internacionales, pero necesita matemática de punto fijo o de "gran precisión", conversión de moneda y todo lo demás ...