2009-03-22 13 views
21

Torna nel mese di ottobre, Kristopher Johnson chiesto Accounting Software Design Patternsrimaneggiamento dell'attività: Software Design Patterns

Ha ricevuto diverse risposte, ma erano tutti fondamentalmente la stessa, indicando Martin Fowlers Accounting Patterns.

Non trovo davvero utili gli schemi di Fowler. Sembrano eccessivamente complessi per un sistema di contabilità più semplicistico, quindi sto rimodellando la domanda di Kristopher e cercando più opzioni, preferibilmente per sistemi più piccoli.

Questo sarebbe principalmente un sistema basato sul contante in cui gli utenti ricevono conti simili a una banca. Possono accedere (basato sul Web) e controllare i saldi, effettuare determinate transazioni, ecc.

Suppongo che sarebbe più simile a una società di carte di credito o di credito di una banca, ma su una scala più piccola. Non dovrà fare i conti con le tasse, o gli ammortamenti, o qualsiasi altra cosa che vedreste in un sistema contabile completo. Solo saldi e transazioni.

Quindi qualcuno può indicare eventuali risorse aggiuntive per la progettazione di software basato su contabilità o anche buone implementazioni di un semplice sistema di contabilità?

risposta

8

Così qualcuno può indicare eventuali risorse aggiuntive per la progettazione di software basato su contabilità o anche buone implementazioni di un semplice sistema di contabilità?

Il Free Digital Money Project sembra utile per le vostre esigenze. Fornisce una transazione di base e un quadro di equilibrio.È intenzionalmente semplice e astratto, quindi può offrire utili spunti di progettazione, in particolare se si desidera testare nuove idee.

Cyclos è più pratico. Copre gli account utente e le transazioni.

MyBanco è un altro sistema bancario open source, che supporta i conti bancari degli utenti e l'accesso via web. Può essere utilizzato con entrambe le valute virtuali e reali.

Tutti questi sono open source, quindi è possibile controllare direttamente documenti, architettura e codice.

Per inciso, se siete veramente interessati solo a saldi e le transazioni, allora suona come qualsiasi modello o progetto legato alla reputazione, il karma, o punti di sistemi dovrà probabilmente sovrapposizione rilevante ...

+3

MyBanco è php senza senso –

+0

Buoni esempi. Li controllerò, grazie. –

+1

Il sito Web del progetto Digital Money Free non è più accessibile. –

-3

Memorizza il denaro in centesimi (intero) anziché in dollari (float). Non è un design ma probabilmente è più utile.

+5

non sono attualmente preoccupati dettagli di implementazione. Voglio schemi di progettazione. –

+1

int è un disastro in attesa di accadere. Perché non usare invece un tipo di dati decimali? int per soldi non è solo offuscamento - quanti numeri decimali hai in mano. A meno che non si sia sempre arrotondati a centesimi interi, sarà necessario un qualche tipo di fattore da dividere per ottenere le cifre decimali. Cosa succede quando cambi la valuta in Yen giapponese, GBP, EUR. – Chris

1

Google search for "two phase commit"

Non un modello di progettazione per sé, ma è necessario effettuare le operazioni di certo, come "trasferimento $ importo da $ Account1 a $ Account2" no mai "ritirarsi", senza l'abbinamento " deposito "... vale a dire se la potenza si spegne prima del" deposito ", il" prelievo "viene annullato (annullato)

Le transazioni di commit sono composte da sub-annullabili (in grado di rollback). transazioni ...

  1. permessi acquisire necessari: il rifiuto banale, "insufficiente fondi"
  2. avviare una "commit a due fasi"
  3. Aggiungi Sub-transazioni
  4. commit o roll-back

Attenzione: La matematica BCD è stata inventata per prevenire errori di arrotondamento nella matematica di Base 10. Non si parla di questioni internazionali, ma avresti bisogno-punto fisso o la matematica "grande precisione", conversione di valuta, e tutto il resto ...

9

modelli di Fowler sono non eccessivamente complesso. Sono su ciò che è necessario. È improbabile che tu sia in grado di creare qualcosa di più semplice senza avere problemi con gli utenti finali o il contabile.

4

Quando ho implementare la contabilità è il modello tipico di riviste, transazioni e conti e tipi di account.

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

Ho poi hanno anche un tblJournals che raggruppa le transazioni sulla base ovvia. Puoi anche aggiungere i tipi di diario, che contengono una descrizione generale di quale tipo di diario è, in modo da poter rilevare cose belle (reverali, ecc.).

È bello, perché le inversioni sotto questo modello sono banali. Puoi semplicemente raccogliere tutte le transazioni per il tuo diario e scambiare il tipo.

Il tblTransactions ha un trigger e il trigger aggiorna un 'CalculatedBalance' rispetto agli account specifici a seconda del tipo. È quindi possibile eseguire anche un report in un dato periodo e così via.

Non richiede molte conoscenze contabili per implementare questo ed è semplice, ma efficace.

+0

Ho quasi zero conoscenze contabili, quindi anche le "riviste" sono per me un concetto estraneo. Capisco cosa sia un journal nel software, tipicamente un fileysystem (un log delle transazioni che può essere riprodotto in caso di un errore) ... Presumo che un diario abbia un analogo a questo. –

+0

Un diario è solo un puntatore a una serie di transazioni, con alcune informazioni aggiuntive. Quindi può contenere la data, una descrizione e il 'tipo'. Il tipo si riferisce a ciò che stanno facendo tutte le transazioni sottostanti. Rimborso, qualunque sia (puoi recuperarlo nel contesto del tuo sistema). Li mappate tramite una tabella come 'tblJournalTransactions' (molte transazioni su un giornale). –

0

Io sono in realtà l'autore di MyBanco, se si desidera aiuto, appena mi mandi una e-mail :)