我实际上是在尝试开发一个会计Rails应用程序而且我坚持逻辑......
事实上,我想简化试图自动化“脏”借记/贷记内容的用户的生活。
假设我的表格中包含以下字段:
在会计世界中,这对应于期刊中的1个ligne,如下所示: 1.日期:xxxx借记:account2贷记:account1金额:1000
但如果我使用这种逻辑,计算和报告将成为Rails的噩梦...... 然后我的想法是把它分成2个lignes,如:
有意义吗?如果是的话,我发现这样做的唯一方法是在javascript更新的表单中创建隐藏字段然后保存记录(听起来有点太讨厌我的味道:))有没有办法处理它控制器在数据库中生成2条记录而不使用“鬼域”技术?
如果我们想要在其中添加增值税逻辑,问题就会变得更加复杂......同样的例子,但让我们说操作中增值税为80 ...
会计世界期刊将是:
在数据库中:
1.Date:xxxx账户:account2金额:1000
2.Date:xxxx账户:account1金额:-1000
3.Date:xxxx账户:account3金额:80
4.Date:xxxx账户:account1金额:-80
这意味着使用“ghost fields”技术,我需要创建4条隐藏线等等......
有更好的方法吗?
非常感谢你的帮助。
丹
答案 0 :(得分:2)
您应该使用回调在模型中创建额外的记录,而不是在控制器中:
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
条记录。
答案 1 :(得分:0)
这可能很适合DCI模式。这意味着您可以创建一个AddToJournal上下文,其中Accountant角色会向日记帐添加费用。通过这种方式,您可以轻松测试逻辑,
DCI在Rails世界中是一个相当新的概念,所以没有关于如何实现它的约定,但我真的很喜欢本文中的方法:http://mikepackdev.com/blog_posts/24-the-right-way-to-code-dci-in-ruby
答案 2 :(得分:0)
您正在将金额从account1(借方金额)转移到account1(贷方金额)。
可以使用带有字段的标准表单来收集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
答案 3 :(得分:0)
大家好,非常感谢你的帮助。
我终于找到了一种方法,可以通过各种帖子的灵感解决这个问题。
我所做的是在模型级别添加一些代码来处理after_create操作,如:
after_create:journalize
然后我定义了:在另一个def中记录行动:
def journalize Ligne.create({与要创建的各种数据}) 端
再次感谢您的帮助。 和平 丹
答案 4 :(得分:0)
我遇到了会计分类帐的宝石:https://github.com/mbulat/plutus
自述文件:
plutus插件提供了一个完整的双入口会计系统,可用于任何Ruby on Rails应用程序。该插件遵循一般双重记录簿记惯例。所有计算都使用BigDecimal完成,以防止浮点舍入错误。该插件也需要数据库的十进制类型。
系统由维护您的帐户,交易和借记以及信用的表组成。每笔交易都可以有很多借记和贷记。记录您的业务交易的交易表基本上是您的会计日记帐。
可以认为过账到分类账是自动发生的,因为账户与其信用卡或借记卡交易具有相反的has_many关系。