2

特定のタスクを完了するためにユーザーに支払う、設計中の Web サービスがあります。たとえば、ユーザーがリンクをクリックすると、たとえば $0.10 がアカウントに支払われます。ユーザーは、これらのタスクのいずれかを 1 日 20 回まで実行できます。ユーザーが資金の支払いを要求するには、アカウント残高が $5 である必要があります。

トランザクションとアカウントを追跡する最善の方法を決定しようとしています。私のデザインは現在次のようになっています。

Accounts
---------
| account_id | member_id | balance  |
-------------------------------------
| 1          | 1         | 497.8500 | -- System Account
| 2          | 5         | 2.1500   |

Transactions
------------
| transaction_id | account_id | type_id | task_id | date | amount |
-------------------------------------------------------------------
| 1              | 1          | Debit   | 1       | date | -1.10  |
| 2              | 2          | Credit  | 1       | date | 1.10   |
| 3              | 1          | Debit   | 1       | date | -1.05  |
| 4              | 2          | Credit  | 1       | date | 1.05   |

この設計は、複式簿記の会計原則に基づいています。ここで私のジレンマは次のとおりです。技術的には、ユーザーが「支払い」を要求するまで、このお金は支払われません。「支払い」は、ユーザーがリクエストを送信し、リクエストが承認され、アカウントの残高からお金が差し引かれ、PayPal 経由で送金されることで構成されます。私の質問は、ユーザーがまだ支払いを要求していない場合、実際にシステムの残高から金額を差し引くのは良い考えですか? アカウントのお金は、サイトで追加の資金を調達するために使用できます。また、30 日間の非アクティブ後に期限切れになります。

私の考えは、トランザクションテーブルをそのままにして、次の構造を持つペイアウトと呼ばれる別のテーブルを設計することでした

Payouts
-------
| payout_id | account_id | date | amount |
------------------------------------------
| 1         | 2          | date | $2.00  |

しかし、支払いをトランザクション テーブルに反映するにはどうすればよいでしょうか。不完全なようです。

トランザクション テーブルからタスクを分離し、ユーザーが支払いを要求した場合にのみトランザクション レコードを入力する必要がありますか? そうすることで監査能力が失われるかどうかはわかりません。

誰か洞察力がありますか?

4

3 に答える 3

1

別の勘定科目/元帳/貸借対照表コードを使用するだけです

So on getting the 10c 
Your account is - 10c
Their payout account is + 10c
When the balance on their payout account > $5, then can request one.
When they do debit the amount from payout account, credit it to Payoutpending account
When it confirmed debit payout pending and credit payed out.
If it's rejected debit payout pending and credit payout account

.

ああ、残高を計算して報告するのではなく、残高を保存することを本当に考える必要があります。そうすると、混乱することになります。

于 2012-08-07T17:44:36.847 に答える
0

支払いの追跡に関するビジネス要件は何ですか?

あなたのビジネスは、日付、金額などを含む別のイベント (二重エントリ) として支払いを追跡する必要がありますか?それとも、支払いが要求されたことを知る必要があるだけですか?

これらのいずれかが当てはまる場合、または他の企業の慣行 (合併を考えてください) を考えると、その可能性が高い場合は、支払いを追跡するために行ったのと同じように、支払いテーブルを添付することをお勧めします。

複式簿記の要件についても詳しく教えてください。可能な限りビジネス ルールを明示的に設計に取り込もうとします。

お役に立てれば。コメントで対話を続けることができます。

于 2012-08-07T17:21:30.470 に答える
0

私は簿記のスキルが限られているので、お役に立てれば幸いですが、お答えする資格が十分ではないように感じます..

したがって、あなたは純粋な会計モデルにかなり近いと思いますが、この場合、支払いもトランザクションであるべきだと思います。

ユーザーがアカウントに現金が追加されたときからの概要が必要な場合、このリストには支払いも含まれている必要があります。ユーザーが $1 を 5 回受け取り、$5 を 1 回支払った場合、アカウントの残高は 0 になるはずです。

したがって、両方の取引を適切に行っているため、実際の支払いは口座から 5 ドルが差し引かれますが、これもどこかに行く必要があります。したがって、これが支払われると、「支払われた」別のアカウントが必要になると思います。

しかし.. 私のプログラマーは疑問に思います.. この場合、データベースに二重の簿記が本当に必要ですか。実際に支払いを行うときに、システム アカウントを使用せずにすべての数字を推測できます。

したがって、実際には実際の情報が失われているわけではありません.実際に現金が常にシステムアカウントから来ており、ユーザーが残高を別のアカウントに転送できない場合..

于 2012-08-07T17:28:27.340 に答える