Rails расширяет коллекцию has_many для включения другого параметра, который изменяет результат - PullRequest
0 голосов
/ 07 января 2012

Мое приложение для выставления счетов регистрирует несколько платежей / счет. У меня проблема в том, что клиент может расплатиться наличными сверх того, что должен. Поэтому, когда я просматриваю итоги, итоговые суммы денежных средств превышают суммы, причитающиеся, поэтому это не реалистичное представление о том, что мне заплатили (потому что я внес изменение). По сути, я хочу переопределить сбор платежей, так что, если я укажу аргумент (true), он покажет мне все платежи, но любые суммы, причитающиеся клиенту, будут вычтены из наличного платежа.

Пример 1:
Счет на общую сумму 25
Interac Платная: $ 10
Оплачено наличными: $ 20
Изменение: $ 5

Пример 2 (с возвратом денег):
Счет на общую сумму 25
Interac Платная: $ 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 и 15 долларов соответственно

Пример 2:
Звоните на @invoice.payments доходность $ 30
Позвоните на @invoice.payments(true) и получите $ 30 Interac и - $ 5 Cash

1 Ответ

0 голосов
/ 13 февраля 2014

Я только что создал собственный метод внутри модели Invoice, который показывает 'return change'.Оказывается, не имело смысла показывать «что по сути было оплачено» ... особенно, когда я хотел сравнить счета-фактуры с записями нашего платежного процессора.

...