0

, поэтому я пытаюсь установить связь между распределением и учетной записью главной книги, и это оказывается немного сложнее, чем я начинал думать, мне просто интересно, было ли еще больше Элегантный способНесколько has_one и has_many отношений

Таким образом, в основном распределение должно иметь кредитную и дебетовую учетную запись, обе из которых являются учетными записями основной книги, и я не могу использовать ИППП, потому что общая учетная запись может быть дебетовой учетной записью на некоторые суммы, но кредитная учетная запись на другие.

Теперь еще одна особенность, которую я хочу получить, - это запросить все дебетовые и кредитные счета на конкретной учетной записи Главной книги. Таким образом, общая учетная запись теперь должна иметь много кредитов и дебетовых транзакций. Это то, что у меня есть до сих пор:

class Allocation 
    belongs_to :journal_entry_item 
    belongs_to :allocatable, polymorphic: true 

    has_one :debit_allocation 
    has_one :credit_allocation 
    has_one :debit_account, through: :debit_allocation, source: :general_ledger_account 
    has_one :credit_account, through: :credit_allocation, source: :general_ledger_account 
end 

class DebitAllocation 
    belongs_to :allocation 
    belongs_to :general_ledger_account 
end 

class CreditAllocation 
    belongs_to :allocation 
    belongs_to :general_ledger_account 
end 

class GeneralLedgerAccount 
    belongs_to :company 

    has_many :debit_allocations 
    has_many :credit_allocations 
    has_many :debits, through: :debit_allocations, source: :allocation 
    has_many :credits, through: :credit_allocations, source: :allocation 
end 

Я чувствую, что должен быть более простой способ ... Может ли кто-нибудь весить? Заранее спасибо!

ответ

0

Что вы думаете о том, может ли «распределение» быть «дебетовым» и «кредитным»?

Если это не представляется возможным, Вы можете определить следующие модели:

class Allocation 
    belongs_to :journal_entry_item 
    belongs_to :general_ledger_account 

    has_one :general_ledger_account 
    has_one :debit_account, source: :general_ledger_account 
    has_one :credit_account, source: :general_ledger_account 

    def is_debit? 
    debit_account&&!credit_account 
    end 

    def is_credit? 
    !debit_account&&credit_account 
    end 
end 

class GeneralLedgerAccount 
    belongs_to :company 

    has_many :allocations 
end 
+0

Распределение должно быть как дебетовой в кредит. В бухгалтерском учете должна быть учетная запись, в которой берется транзакция, и учетная запись, в которой происходит транзакция –

Смежные вопросы