2012-01-07 4 views
0

私の請求書作成アプリケーションは複数の支払い/請求書を記録します。私が抱えている問題は、顧客が現金で現金を支払うことができるということです。だから私が要約を見ると、現金総額は金額よりも大きいので、私が支払ったものについて現実的な見解ではない(私は変更を与えたので)。だから本質的に私がやりたいことは、支払いのコレクションを無効にすることです。私はそれに真実の議論を与えると、すべての支払いが表示されますが、顧客に返された金額は現金支払いから差し引かれます。Railsは結果を変更する別のパラメータを含むようにhas_manyコレクションを拡張します

例1:
Interacは有料$ 25
合計書:有料$ 10
現金:$ 20
変更の:$

(キャッシュバック付き)例2:合計
請求$ 25
インターキャット有料:$ 30
変更:$ 5

私Invoice.rbモデルで

has_many :payments, :dependent => :destroy do 
    def ???(actual_amounts = false) 
     // call to super() ??? 
     // Find any cash payments and override value to account for change. 
     // If there isn't a cash payment, make one. 
    end 
end 

したがって、これらは、私は両方の例については、期待される結果である:

例1:
@invoice.paymentsへの呼び出しは$ 10と$ 20生み出します
@invoice.payments(true)に電話すると、それぞれ$ 10と$ 155が得られます

例2:@invoice.payments
コールは@invoice.payments(true)から$ 30
コールを生み出す$ 30 Interacと生成 - 私はちょうど 'リターンの変化' を示す請求書モデル内のカスタムメソッドを作った$ 5現金

+0

「支払い」団体にいなければなりませんか?なぜなら、あなたの関連が 'relation'の代わりに値を返すようになると、元に戻ることはないからです。 – Azolo

+0

それは良い点です。私はそれを完全に避けるだけです。 – JakeTheSnake

+0

良い男。しかし、代わりに 'def with_surplus'のようなことをするためにあなたの質問を編集したいのであれば、私はそれをどうやってやるかもしれません。 – Azolo

答えて

0

を。 「本質的に支払われたもの」を表示することは理にかなっていないことが判明しました。特に、請求処理の支払いを当社の支払処理業者の記録と比較したいと思ったときには、

関連する問題