The freebil Drupal 7 module is intended to serve as a mini billing system for small businesses or individuals. It was first conceived as an accounting tool for freelancers. It tracks customers, contacts, invoices, and payments. All customer, invoice and payment data is entered by the user via forms. An invoice is generated which can be emailed to the customer in text or HTML format. As payments are received, the user enters the payment data and the balance due is updated. A new invoice can be generated if there is still an outstanding balance. A simple, yearly financial report is available which includes total payments for the year - useful for tax filing.

To get started, download and enable the module, go to Freebil configuration and fill out the form. Read the Freebil help in the admin help section. Then click the ‘Freebil’ menu item in the admin menu and create your first customer.

I created this module because I have a need for an invoicing system to use for my freelancing work, and I was not able to find any existing drupal project that would meet my invoicing needs. I'm contributing it to Drupal because I think that other people will also find it useful.

Sandbox project: https://www.drupal.org/sandbox/ajfwebdev/2516720

Git clone command:
git clone --branch 7.x-1.x http://git.drupal.org/sandbox/ajfwebdev/2516720.git freebil
cd freebil

Manual Reviews of Other Projects:
https://www.drupal.org/node/2550169#comment-10532796

Comments

ajfwebdev created an issue. See original summary.

anthonyf’s picture

cherebedov.s’s picture

Hi, please check your code in here.
http://pareview.sh/pareview/httpgitdrupalorgsandboxajfwebdev2516720git
You have a some issues. Thank's.

cherebedov.s’s picture

Status: Needs review » Needs work

Hi, please check your code in here.
http://pareview.sh/pareview/httpgitdrupalorgsandboxajfwebdev2516720git
You have a some issues. Thank's.

anthonyf’s picture

Status: Needs work » Needs review

Thank you, cherebedov.s, for your review.

I've cleaned up all but two of the errors and warnings returned by the scripts at pareview.sh. It is still flagging my two $transaction variables as unused, but these are false positives. The variables are needed for some transactional database processing. The $transaction variable stores the database transaction object returned by db_transaction(). This initiates transactional processing which is completed when the variable goes out of scope.

I also created my first SimpleTest functional test, and will be adding more of these as time allows.

PA robot’s picture

We are currently quite busy with all the project applications and we prefer projects with a review bonus. Please help reviewing and put yourself on the high priority list, then we will take a look at your project right away :-)

Also, you should get your friends, colleagues or other community members involved to review this application. Let them go through the review checklist and post a comment that sets this issue to "needs work" (they found some problems with the project) or "reviewed & tested by the community" (they found no major flaws).

I'm a robot and this is an automated message from Project Applications Scraper.

anthonyf’s picture

Issue summary: View changes
anthonyf’s picture

Issue summary: View changes
TimRutherford’s picture

Automated Review

Please go over the issues presented by pareview.sh again. Some new issues have arouse other than the unused $transaction variables. http://pareview.sh/pareview/httpgitdrupalorgsandboxajfwebdev2516720git

Manual Review

Individual user account
Yes: Follows the guidelines for individual user accounts.
No duplication
Yes: Does not cause module duplication and/or fragmentation.
Master Branch
Yes: Follows the guidelines for master branch.
Licensing
Yes: Follows the licensing requirements.
3rd party assets/code
Yes: Follows the guidelines for 3rd party assets/code.
README.txt/README.md
Yes: Follows the guidelines for in-project documentation and/or the README Template.
Code long/complex enough for review
Yes: Follows the guidelines for project length and complexity.
Secure code
Yes: Meets the security requirements.
Coding style & Drupal API usage
  1. Structure files into includes, tests, etc folders
  2. Some functions are missing documentation for params/return
  3. Some unnecessary lines (eg: $cont_data = array();) in the project. (freebil.contact.inc: line 129, freebil.customer.inc: line 345, freebil.invoice.inc: line 189/416, freebil.item.inc: line 478, freebil.item.inc: line 155/157/274/276, freebil.phone.inc: line 163/288)
  4. freebil.invoice.gen.inc: line 334, unused param $inv_data
  5. freebill.module: line 546, should have a return statement just in case non of the switch cases are hit.
  6. freebil.phone.inc: line 91, no reason to set $email_id
  7. freebil.sendmail.inc: line 860, both foreach loops use the same $key name, probably not best practice.
  8. freebil.test, test cases a bit lacking. Not required, but should probably test creating invoices, adding info to customers, printing out a report, etc.

The starred items (*) are fairly big issues and warrant going back to Needs Work. Items marked with a plus sign (+) are important and should be addressed before a stable project release. The rest of the comments in the code walkthrough are recommendations.

If added, please don't remove the security tag, we keep that for statistics and to show examples of security problems.

anthonyf’s picture

Hi Tim, thanks for your detailed review! I made most of the changes you suggested, including:

  • Cleaned up the pareview.sh errors and warnings.
  • Structured .inc, .css, and .test files into appropriate directories.
  • Removed unnecessary instantiation of array variables.
  • Removed unused function parameter.
  • Added default return statement to the hook_help() function.
  • Renamed the $key variable used in the 2nd foreach loop parameters in the same function.



I have not yet added more test cases, as I don't have time right now, but plan to add more if this project gets accepted.

pankajsachdeva’s picture

Automated Review

Still found issues on pareview.sh. Follow link: http://pareview.sh/pareview/httpgitdrupalorgsandboxajfwebdev2516720git

Coding style & Drupal API usage
  1. freebil.recipient.inc :
    Line 108: Potential problem: drupal_set_message() only accepts filtered text, be sure to use check_plain(), filter_xss() or similar to ensure your $variable is fully sanitized.
      drupal_set_message($msg);
  2. Configuratin form should be in admin.inc file
The module works fine and I didn't find any major blocker issue.
pankajsachdeva’s picture

Status: Needs review » Needs work
pankajsachdeva’s picture

Status: Needs work » Reviewed & tested by the community
anthonyf’s picture

Hello Pankajsachdeva,

Thanks for taking the time to review the module. I'll look into your recommendations and clean up the new pareview errors when I find the time. I've been adding some new SimpleTests which is where some of those style errors are coming from. As you say, the module works. I used it for my freelancing invoices and it came in handy at tax time to get the total payments I've received for the year. There are probably other people in the world who will find this module useful.

To the general community:

I created Freebil because I knew it would be useful in my business and it was a fun way to learn about Drupal module development. It took a long time to develop, more than I expected, and I was lucky to be in a situation where I could spend that time. Currently I'm much busier and will not have huge chunks of time to devote to improving or maintaining Freebil in the foreseeable future.

To approvers:

If you think that some people will benefit from the module as it is (and unsupported) and maybe want to build upon it or make improvements, then please approve it so it will become available to those people.

pankajsachdeva’s picture

Thanks for your contributions.I would suggest you to take a review bonus to speed up the process. Please help reviewing and put yourself on the high priority list, then Git Admins will take a look at your project right away :-)

DamienMcKenna’s picture

Status: Reviewed & tested by the community » Fixed

Thanks for your contribution, Anthony!

I updated your account so you can promote this to a full project and also create new projects as either a sandbox or a "full" project.

Here are some recommended readings to help with excellent maintainership:

You can find lots more contributors chatting on IRC in #drupal-contribute. So, come hang out and stay involved!

Thanks, also, for your patience with the review process. Anyone is welcome to participate in the review process. Please consider reviewing other projects that are pending review. I encourage you to learn more about that process and join the group of reviewers.

Thanks to the dedicated reviewer(s) as well.

Status: Fixed » Closed (fixed)

Automatically closed - issue fixed for 2 weeks with no activity.