2009-03-22 29 views
21

Powrót w październiku Kristopher Johnson poprosił o Accounting Software Design Patternspowtarzać: Księgowość Software Design Patterns

Otrzymał kilka odpowiedzi, ale wszystkie były w zasadzie takie same, wskazując Martin Fowlers Accounting Patterns.

Naprawdę nie znajduję wzorów Fowlersa, które byłyby użyteczne. Wydają się zbyt skomplikowane dla uproszczonego systemu księgowego, więc ponownie rozpoczynam pytanie Kristophera i szukam więcej opcji, najlepiej dla mniejszych systemów.

Byłby to przede wszystkim system kasowy, w którym użytkownicy otrzymują konta podobne do banków. Mogą się logować (przez Internet) i sprawdzać salda, dokonywać pewnych transakcji, itp.

Sądzę, że byłby bardziej podobny do Paypal lub karty kredytowej niż bank, ale w mniejszej skali. Nie będzie musiał zajmować się podatkami ani amortyzacjami ani żadną z rzeczy, które widziałbyś w pełnym systemie księgowym. Tylko salda i transakcje.

Czy każdy może wskazać dodatkowe zasoby do projektowania oprogramowania opartego na rachunkowości, a nawet dobre implementacje prostego systemu księgowego?

Odpowiedz

8

Czy każdy może wskazać dodatkowe zasoby do projektowania oprogramowania opartego na rachunkowości, a nawet dobre implementacje prostego systemu księgowego?

Urządzenie Free Digital Money Project wygląda pomocniczo dla Twoich potrzeb. Zapewnia podstawową strukturę transakcji i równowagi.Jest celowo prosty i abstrakcyjny, więc może zaoferować przydatne informacje o projekcie, szczególnie jeśli chcesz przetestować nowe pomysły.

Cyclos jest bardziej praktyczny. Obejmuje konta użytkowników i transakcje.

MyBanco to kolejny system bankowy typu open source, obsługujący konta bankowe użytkowników i dostęp przez Internet. Może być używany zarówno w walutach wirtualnych, jak i rzeczywistych.

Wszystkie z nich są oprogramowaniem typu open source, dzięki czemu można bezpośrednio sprawdzić dokumentację, architekturę i kod.

Tak na marginesie, jeśli jesteś naprawdę zainteresowany tylko sald i transakcji, to brzmi jak każdy wzór lub projekt związany z reputacji, karmy, lub wskazuje systemy będą prawdopodobnie mieć odpowiednie nakładanie ...

+3

MyBanco jest php nonsensem –

+0

Dobre przykłady. Sprawdzę je, dzięki. –

+1

Strona internetowa Free Digital Money Project nie jest już dostępna. –

-3

Przechowuj pieniądze jako centy (całkowite) zamiast dolarów (float). To nie jest projekt, ale prawdopodobnie jest bardziej przydatny.

+5

nie jestem obecnie zaniepokojony szczegółów implementacji. Chcę wzorców projektowych. –

+1

int to katastrofa czekająca na zdarzenie. Dlaczego zamiast tego należy użyć typu danych dziesiętnych? int for money to nie tylko zaciemnianie - ile miejsc dziesiętnych trzymasz. Jeśli nie jesteś zawsze zaokrąglany do całych centów, będziesz potrzebował jakiegoś czynnika do podzielenia, aby uzyskać swoje miejsca po przecinku. Co się stanie, gdy zmienisz walutę na japoński jen, GBP, EUR. – Chris

1

Google search for "two phase commit"

Nie wzorzec projektowy per se, ale trzeba mieć pewność, że operacje takie jak "transfer $ ilości od $ account1 do $ account2" nie kiedykolwiek "wycofać" bez dopasowania " depozyt "... tzn. jeśli moc zgaśnie przed zakończeniem" depozytu ", wycofanie zostanie wycofane (cofnięte).

Transakcje wymagalne obejmują niezdolne do wycofania (wycofanie) sub-transakcje transakcje ...

  1. uprawnienia pozyskują potrzebne: trywialne odrzucenie, "niewystarczające fundusze"
  2. rozpocząć "dwufazowy commit"
  3. dodać sub-transakcje
  4. popełnienia lub roll-back

Ostrzeżenie: Matematyka BCD została wymyślona, ​​aby zapobiec błędowi zaokrągleń w matematyce Base 10. Nie wspominając o kwestie międzynarodowe, ale należałoby stałoprzecinkowych lub „duża precyzja” matematyki, konwersja walut oraz całą resztę ...

9

wzorców Fowler są nie zbyt skomplikowane. Chodzi o to, co jest potrzebne. Jest mało prawdopodobne, aby można było zbudować coś prostszego bez problemów z użytkownikami końcowymi lub księgowym.

4

Kiedy Implementacja rachunkowości to typowy model dzienników, transakcji i kont oraz typów kont.

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

Wtedy też tblJournals które grupy transakcji na podstawie oczywistej. Możesz także dodać JournalTypes, które zawierają ogólny opis tego, jaki jest dziennik, abyś mógł wykryć ładne rzeczy (rewersy itp.).

To miło, ponieważ zmiany w tym modelu są trywialne. Możesz po prostu zebrać wszystkie transakcje dla swojego dziennika i zamienić typ.

Transakcja tblTransactions ma wyzwalacz, a wyzwalacz aktualizuje wartość "CalculatedBalance" względem określonych kont w zależności od typu. Następnie można uruchomić raport w danym okresie i tak dalej.

Nie wymaga dużej wiedzy księgowej, aby to wdrożyć i jest proste, ale skuteczne.

+0

Mam prawie zerową wiedzę księgową, więc nawet "czasopisma" są dla mnie pojęciem obcym. Rozumiem, czym jest dziennik w oprogramowaniu, zwykle jest to system plików (dziennik transakcji, który może zostać odtworzony w przypadku awarii) ... Zakładam, że dziennik ma do tego pewne odpowiedniki. –

+0

Dziennik jest tylko wskaźnikiem dla serii transakcji, z dodatkowymi informacjami. Może więc zawierać datę, opis i "typ". Typ odnosi się do wszystkich transakcji leżących u podstaw rozliczeń. Zwrot, cokolwiek (możesz to zrobić w kontekście twojego systemu). Mapujesz je za pomocą tabeli takiej jak "tblJournalTransactions" (wiele transakcji do jednego dziennika). –

0

Jestem rzeczywiście autor MyBanco, jeśli chcieliby Państwo jakiejkolwiek pomocy, po prostu napisz do mnie e-maila :)