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

RAS there? #4

Open
vks2 opened this issue May 5, 2023 · 13 comments
Open

RAS there? #4

vks2 opened this issue May 5, 2023 · 13 comments

Comments

@vks2
Copy link

vks2 commented May 5, 2023

Hey, what a cool job, thanks much.
do you plan to make an make_ledger method to make a possibility for RAS accounting?
I'm asking because accounting_types.py looks like a great iunterface for any type of accounting.

@epogrebnyak
Copy link
Owner

epogrebnyak commented May 6, 2023

Thank you for your kind words! Is RAS https://en.wikipedia.org/wiki/Russian_Accounting_Standards?

My intent is to make the engine as generic as possible and try fit into some working accounting system. RAS is good it has a fixed list of accounts, but the number of possible entries pairs is quite big... not sure about the usecase - trying to make abacus comete against 1C is a too monumental task, using it for reasearch - need some dataset.

In short, RAS can be explored, but more information needed on how abacus can be used with RAS.

(Ideally, abacus is an engine and there is a big config file to use with RAS).

@epogrebnyak
Copy link
Owner

epogrebnyak commented May 6, 2023

Hey, what a cool job, thanks much.

Putting your quote in README, hope you do not mind. I need some peer support and cheering up to get going with a project.

@epogrebnyak
Copy link
Owner

Another idea is to introduce a trial subset of RAS into chart and see if there are any incompatibiltities.

@dylan1218
Copy link

dylan1218 commented May 7, 2023

Different accounting methods could be handled by a "ledger concept".

You can have your "primary" ledger, which is what all accounting entries will initially be booked to (would need to add in a ledger dimension to the entry method) - user dependent what accounting method is defined for the primary, but could be RAS, GAAP, IFRS, etc.

In a "secondary" ledger you can have a backend process to copy all entries (or balances only, not sure if you've implemented stateful stored balances as a concept yet?) from the primary ledger and make adjusting entries directly to the "secondary" ledger as needed.

@epogrebnyak
Copy link
Owner

Thanks for the comment, moving between accounting frameworks indeed a useful feature, even though I think there is a lot of manual work I involved on reclassing entries. I like the idea abacus may be doing at least part of this work. Extra info should go to entries I think for this.

So far the ledger and entries are very simple, the ledger is just a mapping between account name and t-account, and entry is purposefully just Dr, Cr and amount, to make it as simple as possible. As for statefullness not sure what you mean - I got a ledger + entries result in new ledger, but it makes sense to store just initial state of the ledger and entries, so that any ledger state can be computed. As of now I'm struggling a bit with contraccounts, as some seem need to close and period end and some carry forward.

I'm less fluent in accounting than you are, so please reiterate if there is any point I'm missing.

@dylan1218
Copy link

dylan1218 commented May 7, 2023

Ah yea, when I referred to state more just meant I don't see any database backing anything, so guessing everything is just in memory stored in the objects?

Would think if you wanted to introduce tracking against multiple accounting methods you'd need to start implementing a database and processes that would operate against the stored data.

Big concept on contra accounts is that there's generally a balance sheet and a income statement component to each.

For example for depreciation: there's depreciation expense, which is needs to be "closed" into retained earnings, but there's also the accumulated depreciation component that nets against the assets in the balance sheet. Would think you need some type of mechanism to associate the balance contra account to their respective "offset" on the balance sheet.

I'd argue contra accounts are more of a convivence feature than something that's mission critical to a basic ERP. Unless your goal is to also implement reporting on the contra accounts balances, in which case then you would need to associate the contra accounts to their "primary" accounts to facilitate.

@vks2
Copy link
Author

vks2 commented May 9, 2023

I guess we do not need any ERP-logic here. What may be interesting is that idea of flexible rules (RAS, IFRS or any other) that may automaticly transform my CF records (that's the actual data bookeeped by all, even smallest small business owners) to a user-friendly balance sheet,

@epogrebnyak
Copy link
Owner

As a library, the package holds data in-memory, and as of now, abacus does not mind where it comes from, a database, json file, whatever. I have seen an old package where the code is tightly couples to SQLite, but the core of an engine should be database-agnostic I think. It makes a though choice though where do we store snapshots of the ledger and where just the entries. Will come up with a chart for this.

The contraccounts are pretty much solved now in abacus (at least as first implementation - in 0.2.0), probably need just more of documentation.

@epogrebnyak
Copy link
Owner

I guess we do not need any ERP-logic here. What may be interesting is that idea of flexible rules (RAS, IFRS or any other) that may automaticly transform my CF records (that's the actual data bookeeped by all, even smallest small business owners) to a user-friendly balance sheet,

One set of initial transaction data (with enough information) and reports by different rule is a cool functionality. What is a CF record though? What does it stand for?

The rules would differ by recognition/measurement/disclosure, out of which disclosure seems easier that measurement/recognition.Need some kind of examples to go forward.

@vks2
Copy link
Author

vks2 commented May 9, 2023

just any cash flow record (sales/expenses etc)
example:
entries = [
Entry("cash", "sales", 150), # selling thin air
Entry("discounts", "cash", 30), # with a discount
Entry("overhead", "cash", 50), # and overhead expense
]
but you still need data if you closed that cashflow record with a particular operation

@epogrebnyak
Copy link
Owner

The cash flow we can keep track of the type of record, no problem. If we had that information - would you wanted to construct the CF report under different rules?

@vks2
Copy link
Author

vks2 commented May 9, 2023

I guess it would be nice to switch between rules easily

@epogrebnyak
Copy link
Owner

epogrebnyak commented May 9, 2023 via email

Repository owner deleted a comment from p4u1d34n Dec 25, 2023
Repository owner deleted a comment Jan 1, 2024
Repository owner deleted a comment from mrpanday93 Feb 15, 2024
Repository owner deleted a comment Feb 21, 2024
Repository owner deleted a comment from Hamza-Ali0237 Feb 23, 2024
Repository owner deleted a comment from dsudduth Feb 26, 2024
Repository owner deleted a comment from yexuanyang Mar 4, 2024
@github-staff github-staff deleted a comment from 1291945816 Mar 27, 2024
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

4 participants
@epogrebnyak @dylan1218 @vks2 and others