2015-05-12 11 views
5

Proszę o najlepsze praktyki od doświadczonych programistów finansowych.Czy należy przechowywać rekordy zwrotu w wartości dodatniej lub ujemnej?

np kod PSUDO:

class Transaction(Model): 
    order = ForeignKey() 
    amount = DecimalField() 
    type = 'refund' or 'purchase' 

Jeśli przechowywania refundacji w kwocie ujemnej, to mogę po prostu uruchomić sum() wszystkich transakcji, aby uzyskać równowagę, operacje matematyczne stać nieco rodzimy.

Jeśli przechowujesz zwroty w wartości dodatniej, to jest bardziej przyjazny dla ludzi na formularzu, takim jak purchase - refund = balance, nie muszę też odwracać, aby wyświetlać dodatnią kwotę zwrotu w szablonie.

Który powinienem wybrać, aby mieć większość korzyści i mniej gotch?

+0

Zwrot środków to kwota dodatnia. –

+0

W jaki sposób planujesz skorzystać z refundacji i zakupów? –

+0

@DaveNewton - Dlaczego zwroty są koniecznie dodatnimi kwotami? Z perspektywy klienta mogą być pozytywne. Ale z punktu widzenia biznesu są z pewnością negatywne. – HappyNomad

Odpowiedz

3

Jednym ze sposobów jest posiadanie pola amount, które przechowuje wartość jako dodatnią, i innego pola, na przykład signedAmount, które przechowuje jego podpisaną wersję. Tak więc, kiedy chcesz go wyświetlić lub zalogować, używaj amount, jeśli chcesz uwzględnić to w obliczeniach, użyj signedAmount.

Powiązane problemy