Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sub account possible? #54

Open
ccfiel opened this issue Nov 1, 2015 · 9 comments
Open

Sub account possible? #54

ccfiel opened this issue Nov 1, 2015 · 9 comments

Comments

@ccfiel
Copy link

ccfiel commented Nov 1, 2015

Hello Guys,

Great gem! ;) Anyway is it possible to create a sub account.

Example
I have an Account Current Asset under asset. Then Under Current Asset I have a sub account Bank number 1 and Bank Number 2. Also under Current Assets I have a sub account Prepaid.

Asset
=====
   Current Asset
         Bank 1
         Bank 2
    Prepaid
         Another Account 1
         Another Account 2

Which I can get the balance for the sub account or the main account.

Is it possible in plutus?

@amicheals
Copy link

I have the same question

@ramontayag
Copy link
Contributor

Yes I feel like this should work. I will look at the codebase and see. However, what do the maintainer/s think? @mbulat?

@maxigarciaf
Copy link

Does anyone solved the problem?

@mbulat
Copy link
Owner

mbulat commented May 12, 2016

I'd like to avoid building in any tree bases structure into the models, since it would increase complexity. I've used gems like awesome_nested_set in the past, but I'd also like to keep dependencies to a minimum.

A standard way to do something like this in accounting is to use accounting codes. There's been some discussion about this in #10. So for example a small organization would use something like

010 Cash
020 Petty cash
030 Accounts receivable
100 Fixed assets – Computer equipment
110 Fixed assets – Computer software
120 Fixed assets – Furniture and fixtures
...

A larger organization might use

Account No. Division    Department  Description
10-00-010   Boston  xxx Cash
10-00-020   Boston  xxx Petty cash
10-00-030   Boston  xxx Accounts receivable
10-20-800   Boston  Sales   Bank charges
10-20-805   Boston  Sales   Benefits
10-20-810   Boston  Sales   Depreciation
10-20-815   Boston  Sales   Insurance
20-00-010   Omaha   xxx Cash
20-00-020   Omaha   xxx Petty cash
20-00-030   Omaha   xxx Accounts receivable
...

If someone has a way to implement account codes and a rollup feature that would be agnostic to some number of formats, I'd welcome comments or PRs!

@ramontayag
Copy link
Contributor

I think this is a fine idea. Yes nesting would make it complicated. I've also seen names like Assets:Cash, Assets:Checking

@fabOnReact
Copy link

@ramontayag @mbulat based on my previous experience with SAP Finance

I believe you should have different GEMS which can be installed together to add functionalities and new Models. Plutus is great because it is simple and easy to use, but still you will need some essential new objects:

  1. Accounting Documents and Transaction Types
    image

Accounting Documents and Transaction Types will save you lot of code writing when postings entries. For example creating a Asset Posting (AA) document would automatically select the correct accounts.

Debit                          Credit
Asset Account     -     Bank Account   100

While DR - Customer Invoice would be used for registering the sale of a product to a Customer, also here this accounts get selected from the correct table.

Debit                                                        Credit
Account Receivable(Customer 1)     -     Sales of Products (Revenues-P&L)    10

SAP is built like this, you have also performance advantages as User or Automatic Posting will have faster query when selecting the Account Master Data. You may have 10.000 Accounts, but maybe just 100 Customers.

  1. Master Data about Customers and Vendors/Suppliers

The whole idea of Account Receivable/Customer Invoice or Account Payable/Supplier Invoice is that they refer to each single Customer, for example Customer n1 Fabrizio Bertoglio, which is a totally different level of information from Customer when you have 100-1000 Customers.

so here I get to point 3 - Subledger

  1. SAP sub-ledgers modules FI-AR (Account Receivable) and AP (Account Payables)

As there is a different depth of information, the best strategy is using sub-ledgers (different tables).
With this logic you would have different set of tables for Asset Accounting, Account Payable, Account Receivable, Banking and much more.

In the below image left side we can see the Account Receivable (Customer Entries) tables.
This table entries will have the customer_id foreign key with the customers master data table. I am talking about BSID-KUNNR which in german is Beleg Segment Kunde Nummer (Document Line Item Customer Number), that is the foreign key to another table that records all the Customers information.

image

  1. Sub-ledger vs General Ledger

In the end you would have the sub-ledger tables BSID/BSAD (from the image) for the Customer Items and the BKPF/BSEG for the General Ledger. Entries from the Customer Tables would be relative to each single customer (Customer @ramontayag and Customer @mbulat), which do exist in the system Master Data, while BKPF would just have the aggregated result of all those Document Entries in a General Ledger Account named either Customer National or Customer International.

The same is for Assets etc...

----------------------------------------------------In Conclusion------------------------------------------------------------

I believe using the structure of an existing system is easier then recreating a new one.
SAP winning strategy was using modules which are like gems, companies could install and configure them separately.

I will probably try to recreate some of this functionalities in my project development branch and maybe one day extrapolate them in a separate GEM that can be installed by the other developers, but making one single too complex accounting GEM would be a non-sense as most of the users do not want/need that level of complexity.

All my projects are and always will be opensource


the image is from http://www.erpgreat.com/ and it is free to use

@vonchristian
Copy link
Contributor

What i did was to create a different category to group the accounts.
example:
Current Assets ------------------- Grand Parent Account Category
Cash and Cash Equivalents ------ Parent Account Category
Cash in Bank ------------------- Account Category
Bank 1 ------------------------ Account
Bank 2 ----------------------- Account

class GrandParentAccountCategory < ApplicationRecord
has_many :parent_account_categories
end

class ParentAccountCategory < ApplicationRecord
belongs_to :grand_parent_account_category
has_many :account_categories
end

class AccountCategory < ApplicationRecord
belongs_to :parent_account_category
has_many :accounts
end

@prdpspkt
Copy link

Has anyone used sub account with Plutus ? I'm also trying to use it in my small project. I'm thinking about one idea but not tested yet. For creation of sub account under assets can we add type to assets model and extend it to create current_assets, fixed_assets etc. ??

@ramontayag
Copy link
Contributor

It's probably not possible without changing the gem, which IMO isn't needed.

You should be able to just create your own accounts on your project and make a 1:1 association with the Plutus account record

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants