Files @ fe16442497d3
Branch filter:

Location: NPO-Accounting/npo-accounting-ikiwiki/ExistingProjects/ERPNext.mdwn

http://wandborg.se/ Joar@web
GnuCash evaluation
Links:

- <https://erpnext.com> - Commercial homepage
- <https://erpnext.com/open-source> - Community homepage
- <https://github.com/webnotes/erpnext> - Source code

Demo: <https://demo.erpnext.com>

### Evaluation of codebase & development

The framework [wnframework](https://github.com/webnotes/wnframework) is used and seemingly developed in parallel.

The python code does not follow the guidelines in [PEP8](http://www.python.org/dev/peps/pep-0008/).


#### Database

wnframework contains a database model abstraction which is used in some places, though there are > 2000 places where raw SQL is composed using python's `'foo %s' % ('bar')` string formatting. I have managed to cause some minor SQL injections, I have not yet found any places where I can cause significant damage / data loss.

Not using a database abstraction model such as SQLAlchemy reduces storage portability and adds security overhead to ensure that no malicious queries can be executed.

Update: SQLAlchemy has a severe performance penalty based on our testing. Plus, SQL reduces the code complexity in many instances and has much better performance too. - *Rushabh*

In those places I have seen, no input sanitation was performed, although they were only SELECT queries. I suspect that you could alter database contents by modifiying a SELECT query, but I have not managed to do so myself.

Update: The library does not allow multiple SQL Queries to be executed, hence altering is not possible. There is possibility of overriding certain conditions. We will fix these on priority. - *Rushabh*

### Evaluation of [[Reporting|UseCases/GeneratingReports]] UseCases
- [[Trial Balance Report|UseCases/GeneratingReports#trial-balance]]: [Yes](https://demo.erpnext.com/app.html#trial-balance)
- [[Bank Reconciliation Report|UseCases/GeneratingReports#bank-reconcilation]]: [Yes](https://demo.erpnext.com/app.html#Form/Bank%20Reconciliation/Bank%20Reconciliation)
- [[Chart of Accounts|UseCases/GeneratingReports#chart-of-accounts]]: [Yes](https://demo.erpnext.com/app.html#Accounts%20Browser/Account)
- [[Cash Disbursements Journal|UseCases/GeneratingReports#cash-disbursements]]: FIXME
- [[Income Report|UseCases/GeneratingReports#income-report]]: [Kind of](https://demo.erpnext.com/app.html#financial-analytics)
- [[Expense Report|UseCases/GeneratingReports#expense-report]]: Yes, shown together with "Income Report" and a graph.

### Evaluation of [[Reporting|UseCases/GeneratingReports]] UseCases for Fund Accounting

Can each of these reports be generated, confined to a specific temporarily
restricted asset type?

*It does not seem like it*. There are 'Cost Centers', but they do not seem to be usable in fund accounting.

Update: *Yes*. Cost Centers can be easily extended to manage funds. Each Income / Expense is tagged against cost center, so you can accurately track per Fund. Some of the terminology can be fixed if required - *Rushabh*
   
- [[Trial Balance Report|UseCases/GeneratingReports#trial-balance]]: YES
- [[Bank Reconciliation Report|UseCases/GeneratingReports#bank-reconcilation]]: YES
- [[Chart of Accounts|UseCases/GeneratingReports#chart-of-accounts]]: YES
- [[Cash Disbursements Journal|UseCases/GeneratingReports#cash-disbursements]]: YES
- [[Income Report|UseCases/GeneratingReports#income-report]]: YES
- [[Expense Report|UseCases/GeneratingReports#expense-report]]: YES

### Evaluation of [[Fund Accounting|UseCases/FundAccounting]] UseCases

*No*. It does not seem like 'Cost Centers' can be used this way. 

Update: *Yes*. Please see earlier comment, each fund can be a cost center and invoices, expenses can be booked against it. Even budgeting can be done against a cost center. - *Rushabh*

- [[Fund-only View|UseCases/FundAccounting#fund-view]]
- [[Funds as part of whole org View|UseCases/FundAccounting#fundless-view]]
- [[Ignore Funds for operations|UseCases/FundAccounting#fundless-view]]

### [[UseCases/Collaborating]] evaluation
- [[Simultaneous Editing of Ledger|UseCases/Collaborating#simultaneous-ledger-edits]]: Yes, the application is web-based.
- FIXME: Other uses cases need rewrite.

### Evaluation of [[Double-entry Accounting|UseCases/DoubleEntryAccounting]] UseCases

- Does the system implement pure double-entry accounting? In my judgement, yes. Money goes into one or more accounts, out of another one or more accounts.

### Evaluation of [[TrackingDocumentation|UseCases/TrackingDocumentation]] UseCases

- Does the system [[link up to external documentation|UseCases/TrackingDocumentation#document-link-up]]? Yes, it seems so.

- Does it have a [[the ability to explore transactions via documentation linkage|UseCases/TrackingDocumentation#document-link-explore]]? Yes, you can e.g. filter "Journal Vouchers" by "Bill No".

### Evaluation of [[Handling multiple currencies|UseCases/MultiCurrency]] UseCases

- Does it support the concept of
  [[a single functional currency|UseCases/MultiCurrency]], while still
  permitting multi-currency entries? I have a good faith belief that it does.

### Evaluation of [[draft transaction|UseCases/DraftTransactions]] UseCases

- Does the system allow
  [[generally for draft transactions|UseCases/DraftTransactions#draft-general]]
  that can be later approved before officially being posted to the books? Yes. Each transaction has a Draft and Submitted status. And separate rights can be given to separate roles for doing approvals. Plus rule based approvals based on properties also exist.

### Evaluation of WorkFlow UseCases
- Is a [[specific workflow dictated by the system|UseCases/WorkFlow#workflow-dictated]] ? Yes
- Is a [[the workflow configurable|UseCases/WorkFlow#workflow-configurable]] ? Yes - there is a workflow system [User Docs](https://docs.erpnext.com/workflows.html)
- [[Unaccrued Invoice|UseCases/WorkFlow#unaccrued-invioice]] ? Exists - You can check in Accounts Receivable

### Evaluation of the [[Reading and Reporting API|UseCases/ReadingAPI]]

See below.

### Evaluation of the [[Storage API|UseCases/StorageAPI]]

It is a web application using JavaScript to communicate with the backend, so there is an API endpoint for everything you'll ever see in the application.

- Is the accounting API separate from the ERP stuff? No

### Evaluation of the [[Community Health|UseCases/CommunityHealth]]
- To post in [erpnext-developer-forum](https://groups.google.com/forum/#!forum/erpnext-developer-forum) you must first apply for membership.
- Is the [[license both determined as Free Software by FSF and OSI-approved|USeCases/CommunityHealth#license-approved]]? Yes, it's [GPLv3](https://github.com/webnotes/erpnext/blob/master/license.txt), (CC-BY-SA 3.0 for documentation).
- Is the [[license GPL-compatible||USeCases/CommunityHealth#gpl-compatible]]? Yes, it's [GPLv3](https://github.com/webnotes/erpnext/blob/master/license.txt), (CC-BY-SA 3.0 for documentation).

## Final(-ish) Evaluation
<a id="final-eval"></a>

Unfortunately, we discovered
[this policy early in our evaluation](https://github.com/webnotes/erpnext#copyright-for-contributors),
and decided that until this policy can be corrected to something more fitting
with actual copyright law and that will allow us to contribute under the
stated license of the project, it's not worth further evaluation of the codebase,
since this policy is just not acceptable.  bkuhn has
[raised the issue on the ERPNext Developers' Forum](https://groups.google.com/forum/?_escaped_fragment_=msg/erpnext-developer-forum/jfsURU8Ew9A/HVDX1z3vvkgJ#!msg/erpnext-developer-forum/jfsURU8Ew9A/HVDX1z3vvkgJ). 

Udpate: **FIxed** - Rushabh