Rails:会计逻辑...一次创建多个记录
我实际上试着开发一个会计Rails应用程序,我坚持逻辑...Rails:会计逻辑...一次创建多个记录
事实上,我想简化生活的用户试图自动化“脏”的借记/贷记的东西。
让说,我有我的表单这些领域:
- 日期(XXXX)
- 银行帐户(帐户1)
- 费用categorie(账户2)
- 金额(1000)
在会计世界中,这对应于期刊中的1个ligne: 1.日期:xxxx借方:account2 Cre DIT:帐户1金额:1000
但是,如果我用这个逻辑,计算和报告将是Rails中的噩梦...... 后来我的想法是把它分解成2分法分,如:
- 日期:XXXX账户:帐户2金额:1000
- 日期:XXXX账户:帐户1量:-1000
是否有意义?如果是的话,我发现这样做的唯一方法是创建隐藏字段的形式更新一个JavaScript然后保存记录(听起来有点太讨厌我的口味:))有办法处理它在控制器在数据库中生成2条记录而不使用“鬼域”技术?
问题变得更加复杂,如果我们想象加增值税逻辑在里面...同样的例子,但与假设在操作增值税的80 ...
- 日期:XXXX
- 银行帐户:帐户1
- 费用类别:帐户2
- 金额(增值税):1000
- VAT帐户:帐户3
- VAT量:80
在会计世界日报将是:
- 日期:XXXX借:帐户2学分:帐户1金额:1000
- 日期:XXXX借:account3信用:帐户1金额:80
在数据库:
1.Date:XXXX账户:帐户2金额:1000
2.日期:xxxx账号:account1金额:-1000
3。日期:XXXX账号:account3金额:80
4.Date:XXXX账户:帐户1金额:-80
这意味着,与“鬼田”的技术,我需要创建4条隐藏线等...
有没有更好的方法来做到这一点?
非常感谢您的帮助。
丹
你应该在模型中的额外记录了回调,而不是在控制器:
class Journal
# ...
after_create :update_individual_accounts
def update_individual_accounts
debited_account.create_accounting_entry_with self
credited_account.create_accounting_entry_with self
end
end
现在,每当你添加一个新的记录Journal
,你还创建了两个AccountingEntry
记录在相应的帐户上。
这可能很适合DCI模式。这意味着您可以创建AddToJournal上下文,其中会计师角色将费用添加到日记帐。这样你就有了一个逻辑单元,可以很容易地测试。
DCI是在Rails社区相当新的概念,所以有关于如何实现它没有约定,但我真的很喜欢这篇文章中所采取的形式给出:http://mikepackdev.com/blog_posts/24-the-right-way-to-code-dci-in-ruby
你正在做从帐户1量转移(借方金额)到科目1(贷方金额)。 它可以通过使用标准形式与领域来收集account_frm
,account_to
& amount
。在内部代码中,您将加载account_frm帐户对象& account_to并在此后转帐以创建日记帐分录。
= form_tag amount_transfer_url do
= f.select :account_frm
= f.select :accoutn_to
= f.text_field :amount
class AccountsController < ..
def transfer
account1, account2 = Account.find_all_by_id(params[:account_frm], params[:accpunt_to])
account1.transfer(params[:amount], account2)
end
end
class Account < ..
def transfer(accnt2, amt)
# here self is account1
# make journal entries after successfull transfer
end
end
嗨,大家好,非常感谢您的帮助。
我终于找到了一种方法来解决这个问题,使用灵感从你的各种职位。
我所做的在模型级别来处理像after_create操作添加一些代码:
after_create:journalize
然后我定义:在另一个journalize行动DEF喜欢:
DEF再次journalize Ligne.create({与各种数据来创建}) 结束
SO感谢您的帮助。 和平 丹
我碰到这种宝石附带的账簿:https://github.com/mbulat/plutus
自述:
的招财插件提供了完整的复式记账系统on Rails应用程序在任何Ruby应用。该插件遵循一般的双重记账实践。所有计算均使用BigDecimal完成,以防止浮点舍入错误。该插件也需要数据库中的十进制类型。
该系统由维护您的账户,交易和借方和贷方的表格组成。每笔交易可以有很多借记和贷记。记录您的业务交易的交易表本质上是您的会计期刊。
由于账户与信贷或借记交易具有反向has_many关系,因此可以认为自动发生到账。
听起来很有趣,但我如何从一个表单填充2个条目? – Dannoel 2012-02-03 13:52:26
你不知道。您的表单发布一个“日记”条目。如果Journal条目成功创建,则会调用'after_create'。然后,您将在'debited_account'和'credited_account'上创建'AccountingEntry'条目。 (显然你必须在你的'Account'对象上定义'create_accounting_entry_with'方法。) – 2012-02-03 13:54:34
聪明的ehhehhe:)在增值税(4行)的情况下会是什么样子? – Dannoel 2012-02-03 14:00:22