Coder Social home page Coder Social logo

crater-invoice / crater Goto Github PK

View Code? Open in Web Editor NEW
7.6K 7.6K 1.5K 44.63 MB

Open Source Invoicing Solution for Individuals & Businesses

Home Page: https://craterapp.com

License: GNU Affero General Public License v3.0

PHP 47.84% JavaScript 8.12% Vue 40.30% Dockerfile 0.15% Shell 0.04% Blade 3.54% TypeScript 0.01%
invoices javascript laravel laravel-framework payment php vue

crater's People

Contributors

artfuld avatar asif798 avatar bansarishukla avatar birkhofflee avatar bram-pkg avatar brijraj1996 avatar cilas avatar claretnnamocha avatar daramayis avatar davwheat avatar dependabot[bot] avatar gohiljayvirsinh avatar harshjagad20 avatar hastichavda avatar hypnodev avatar jay04makwana avatar jpmurray avatar jramsgz avatar mohitpanjwani avatar patricklucas avatar proea avatar radhika587 avatar radhu587 avatar raishvaria avatar satyaprakash10 avatar sebastiancretu avatar theworstcomrade avatar thezoker avatar yashkanakiya avatar yogesh-gohil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

crater's Issues

Change update dialog color

When I click the check for update button, it says there is no update available, but it's a warning color (yellow). This should probably be green(success) or at least blue(info).

Feedback on the application and some questions

First of, nice work on the application! It looks and feels excellent. I haven't tried the mobile application yet, but I am sure that it is of the same quality.

  1. It seems like you have spent a significant amount of work developing it, how come you are giving it open source?
  2. I am thinking of replacing my current solution and this seems like a natural fit since I work with Laravel almost all the time. Are you willing to accept PRs for features?
  3. Currently what is preventing me from switching is a field on the customer which would hold the VAT number of the customer. In my country that number is called OIB (PIN in english or personal identification number) and it is required for each customer to be displayed on the invoice and estimates. I don't know how it is in other countries. Is this something that you are willing to accept a PR or should I make my own fork and implement this feature?
  4. Another thing that I should have the control over are invoice and estimate numbers. I have seen few issues here on github about those saying that this will be implemented in the next major release. Do you have any time frame for that?
  5. When fetching city names and counties in Croatia, I get "Shibenik" and "Drnish". That should be "Šibenik" and "Drniš". Maybe the collation on the database you are using for the demo is wrong or is that intentional?

Sorry for the long text, but I wanted to take the time to provide some feedback. I hope that you will find it to be constructive. Again, great work on the application. Congratulations!

New Jersey and "New Jersy" States are not working

When I select "New Jersey" the town list is empty. I noticed after updating to 1.1.0 that "New Jersy" is an option, but my town was not listed. Maybe related to the other open issue of the "off by one"

Address issue - US states off by one

I selected Florida but received cities for Georgia. This happens for each state selected.
Screen Shot 2019-11-29 at 1 46 10 AM

Also, the UX is super clunky using LastPass. You could add data-lpignore='true' or even better just let users enter the information in a text field.

Crater Android: Why is this happening?

I recently updated my Crater Application to v2.0.2 and then the android app stopped working. So I uninstalled and reinstalled the android app, it started working again. So after a day now, again my android app stopped working.

Screenshots


Taxes and shipping costs

Hi,

can Crater handle the German laws of VAT and shipping costs? Aka "what VAT has the shipping costs"? If I have items worth 100 € with 7 % VAT and items worth 200 € with 19 % VAT in my invoice, the VAT of the shipping costs would consist of 1/3 7 % and 2/3 19 %.

[Idea] Internal Taxes

Basically, an Invoice includes a fixed amount the client must pay. Let's say $100.000.

The normal tax is 15%, to say a random percentage. The amount received is $100.000, but from it $85.000 are gross income.

I've seen many payment gateways that take their cut over the amount paid, like for example 2%. That means:

  • $15.000 in state tax.
  • $2.000 in Gateway tax (costs).
  • $83.000 gross income.

It would be good to have an internal tax, not set in the invoice, but internally (after tax? post tax? internal tax?) to avoid surprises when retrieving the income from the gateway service.

Manual Upadate?

What are the steps for manually updating the application?

Unable to install in different databases than mysql

Hello.

In App\Space\EnvironmentManager function saveDatabaseVariables have a call to select "SHOW TABLES". This query makes the app installer mysql only. Didn't have time anymore to keep checking but got some calls to DB::raw too, that usually limits laravel to a single database only.

Found out about you guys on reddit, keep up the good job!

wizard.errors.undefined during on-boarding process

Hi,

On the Site URL & Database page I input all the data fields and click save & continue. The script populates the database, getting as far as 30 tables and 58 rows before responding with

{
"message": "Server Error"
}

Could you advise how to go about resolving this?

Current system:
PHP: 7.2.5
MYSQL: 5.7.22
Apache: 2.4.33 (Win32)

Tax Handling per Item

Hi,

I'm currently evaluating Crater a bit and is the following possible (as I haven't found it)?
In Germany, the tax depends on the item. Sometimes, it is reduced, sometimes it is the regular amount.
Can I set the tax per item and don't have to select it in the actual invoice? This way I don't need to remember which item has what tax rate.

Quantity has to be a whole number?

I was planning on using this for invoicing clients, but when I went to make a new invoice I noticed the quantity has to be a whole number. I bill in 15 minute increments, so 3.25 hours or something like that, and then would put my hourly rate in the price box to get the total.

Should I consider making the code adjustments myself or is this something you're aware of?

Modify payment mode list

Hi,

I would love to have custom payment modes in the list. The default ones are not enough. Probably a dependent list would be perfect. If let's say I have two bank accounts, or several payment gateways like Stripe & Paypal.

Thanks

Custom payment number

Hi,

Could you please add an option to allow custom payment numbers? I don't want any prefixes there, as I would use custom values for different customers. I might also need another field if we keep current structure where I can refer to a real payment ID via payment system.

Unable to view some pdfs

Might be something to do with #14, but I think it's a slightly different issue.

I have 12 invoices and from the "Invoices" / ... / "View" menu I can view all of them except the first two I created - the rest (10 other invoices) are fine.

If I click the "... / Edit" action button and then the "View PDF" then all the pdfs are fine.

Steps to reproduce:

  • have at least 11 invoices
  • go to "Invoices"
  • (optional) go to the "All" tab if the invoices have been paid
  • at the bottom of the page go to the second page
  • click one of the "... (actions) / View" links

Results:
an empty page (see screenshot)

Expected result:
the list of invoices and the pdf invoice shown next to the list (as for the other 10 invoices).

I'm just guessing here without looking at the code, but could it be something to do with the /invoices endpoint returning only the first 10 invoices (ordered by the created date) and the first two that I'm unable to access aren't in that list?
Screenshot from 2019-12-08 10-57-53

VAT cannot be zeroed

Hello there..

There are some cases where VAT is 0% zero between European countries while the Add New VAT won't let me add zero VAT.

I know I can skip the VAT part, although occasionally you might need to specifically write down its 0% VAT due to VIES invoices.

Screenshot:
image

Security issues

The output of npm install reveals some security vulnerabilities in the packages used:

npm WARN The package cross-env is included as both a dev and production dependency.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})

added 2002 packages from 1582 contributors and audited 33828 packages in 29.829s
found 24 vulnerabilities (1 low, 1 moderate, **22 high**)
  run `npm audit fix` to fix them, or `npm audit` for details

Runtime error: Syntax error or access violation

[2019-12-10 16:04:20] production.ERROR: SQLSTATE[42000]: Syntax error or access violation: 1055 'crater.users.name' isn't in GROUP BY (SQL: select `users`.*, sum(invoices.due_amount) as due_amount from `users
` left join `invoices` on `users`.`id` = `invoices`.`user_id` where `role` = customer and `users`.`company_id` = 1 group by `users`.`id` order by `created_at` desc limit 10 offset 0) {"userId":1,"exception":"
[object] (Illuminate\\Database\\QueryException(code: 42000): SQLSTATE[42000]: Syntax error or access violation: 1055 'crater.users.name' isn't in GROUP BY (SQL: select `users`.*, sum(invoices.due_amount) as d
ue_amount from `users` left join `invoices` on `users`.`id` = `invoices`.`user_id` where `role` = customer and `users`.`company_id` = 1 group by `users`.`id` order by `created_at` desc limit 10 offset 0) at /
app/vendor/laravel/framework/src/Illuminate/Database/Connection.php:665)

[previous exception] [object] (Doctrine\\DBAL\\Driver\\PDOException(code: 42000): SQLSTATE[42000]: Syntax error or access violation: 1055 'crater.users.name' isn't in GROUP BY at /app/vendor/doctrine/dbal/lib
/Doctrine/DBAL/Driver/PDOConnection.php:63)

[previous exception] [object] (PDOException(code: 42000): SQLSTATE[42000]: Syntax error or access violation: 1055 'crater.users.name' isn't in GROUP BY at /app/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php:61)

Not sure what's the issue. Brand new Docker install.

Installation - Company information

When selecting "United Kingdom" from the Country dropdown the cities / towns appear in the "State" dropdown instead of the one labelled "City".

The "City" dropdown only shows one item called "Angus".

[Correction]

I said the cities appear in the State dropdown, that was incorrect. Some cities (such as Birmingham, Bristol) appear in this list but I believe they are not states like Buckinghamshire or Essex.

Multi-tenant

Are there plans to create a multi-tenant app of this?

Ability to customize the invoice number

I already have a few invoices and creating new ones with Crater would cause issues if I didn't know how to change it in the database. ;)

I believe (although I'm not an accountant) that here in the UK there's only one rule for invoice numbers which is that it has to be unique, but companies or people from other countries might have specific needs regarding the format of the invoice number.

For example, the way I do the invoicing is this: unique prefix for the client + auto increment number, so:

CLIENT1-202
CLIENT1-203
...

and then for another client:
CLIENT-2-200
CLIENT-2-201
...

I think at least the ability to overwrite the invoice number is needed. A more robust solution could be to have a prefix on the customer record and use that prefix to generate the invoice number.

Missing currency

I was checking out the demo and I noticed that the currency "Kuwaiti Dinar" is missing

crater.users.name isn't in GROUP BY

Hi!

I just installed locally a version of the package. But after I created my first client, I got this error on the clients listing page. Did I miss something?

"SQLSTATE[42000]: Syntax error or access violation:
1055 'crater.users.name' isn't in GROUP BY
(SQL: select 'users'.*, sum(invoices.due_amount) as due_amount from 'users'
left join 'invoices'
on 'users'.'id' = 'invoices'.'user_id' where 'role' = customer
and 'users'.'company_id' = 1
group by 'users'.'id' limit 10 offset 0)"

The error seems to happen here: "Crater\Http\Controllers\CustomersController".

Thanks for your time!

Feature Suggestion: On premises backup

This would be a feature that could be implemented later but I seriously think it should be implemented first as Crater is being used by many already in production.

Implementation

This can be achieved by using a wonderful library provided by Spatie spatie/laravel-backup.

Features

  • Schedule Runners for auto-backup
  • One click backup from Settings page
  • Downloading functionality for the latest backup
  • Cleanup Utility to clean previous backups and auto-cleaning
  • Auto-backup before updating

P.S.: Please also add a contribution guide to the repo. I would really like to contribute.

wizard.errors.undefined

Hello,
When I tired to install, it shows "wizard.errors.undefined" on "Site URL & Database" step.
Can anyone please help?
Thanks

[enhancement] Issue template

Hi,

I think it would be a good idea to come up with some sort of issue template for this project. Currently, I see lot of new issues being opened but most of them lack the necessary information to investigate properly.

I believe a strict minimum would be:

  • Crater version.
  • PHP version
  • Database type and version

A simple description and steps to reproduce the issue would also go a long way.

Just my two cents :)

Where are the Cities?

Hello,

I'm checking to see if this is a good starting point for a future application and I can't wrap my head around this thing:

This is from routes/api.php:

// Country, State & City
//----------------------------------

Route::get('/countries', [
    'as' => 'countries',
    'uses' => 'LocationController@getCountries'
]);

Route::get('/states/{id}', [
    'as' => 'states',
    'uses' => 'LocationController@getStates'
]);

Route::get('/cities/{id}', [
    'as' => 'cities',
    'uses' => 'LocationController@getCities'
]);

This is the whole app/Http/Controllers/LocationController.php:

<?php
namespace Crater\Http\Controllers;

use Illuminate\Http\Request;
use Crater\Country;

class LocationController extends Controller
{
    public function getCountries()
    {
        return response()->json([
            'countries' => Country::all()
        ]);
    }
}

Where are the getStates and getCities methods called from? and where are the cities stored?
There are also no tables for those created through migrations...

Related to #13 , #22, #38

How to install in sharedhost (max_execution_time)

Hi, thank you guys for contributing and develop this nice software. I am new here so I will go straight to my problem.

I have a problem installing this on a shared host (Godaddy) as it says server error while populating the database, I think its max_execution_time, I try to increase it on (Godaddy Cpanel) but I continue to have the same problem.

Is there a workaround for this, can you guys share installed DB & password to install directly on PHPMyAdmin..? Please help I need this so much.

Services

Looking at the items section, I didn't see the ability to add services, or the ability use the unit "hours" or something similar.

Incorrect figures on the Dashboard

When I log into the app, the figures on the Dashboard all show 0.00 amounts, 0 customers, 0 invoices. Then I go to any other page and back to the Dashboard, the figures change - showing the amount of the last invoice, the correct number of customers, etc.

Steps to reproduce:

  • clear cache / open an incognito window
  • log into the app - note the figures and the chart
  • click "Customers" or any other link
  • click "Dashboard" again

Result:
The figures on the Dashboard change so that they are showing the amount of the last invoice (or any other, positive amount - I guess depending on what expenses / incomes you have)

Expected result:
The figures should be the same as when logging in.

Screenshots:

After logging in:
Screenshot_2019-12-09 Crater - Self Hosted Invoicing Platform

After clicking the "Dashboard" menu again:

Screenshot_2019-12-09 2 Crater - Self Hosted Invoicing Platform

Ability to specify days for the financial year

In the UK the tax year starts on the 6th April each year and ends on the 5th April the following. This date, however, can be changed in some cases. For instance, if you're a self-employed then you have the ability to change this date to whatever suits you(r business) - I believe.

But for the sake of simplicity, let's stick with the "default" tax year period and imagine the following scenario (financial year set to "april-march" in the settings):

  • (Crater) user sends an invoice to the customer
  • customer pays the invoice on the 2nd April

This invoice will appear on the Dashboard in the "Sales" widget (chart period set to "This year"), but this invoice actually is for the last financial year.

I think this issue could be solved by allowing to specify days for the financial year, not just the months.

npm run dev fails

After cloning the repository and running npm install && npm run dev it fails with error"Module not found: Error: Can't resolve './base-date-picker/BaseDatePicker.vue'"

Installation Issue

Hi all,
I've tried to install the app many times on many servers, but it always failed!
On a server using Mariadb, it gives an error due to JSON.
On server using Mysql 5.7 it gives error "wizard.errors.undefined" in database installation step!
I don't know where is the issue exactly, any body can help?

Thank you.

Can we use creator as a service ?

Hi Guys,

First of all congratulations . Crater looks beautiful .

So my question is Imagine there is already an Identity and access management system. How do you recommend we include crater as service into that?.

Will crater allow that ?

Target class [App\Http\Middleware\Authenticate] does not exist.

When trying to login it gives me the following error:

{message: "Target class [App\Http\Middleware\Authenticate] does not exist.",…}
exception: "Illuminate\Contracts\Container\BindingResolutionException"
file: "/var/www/html/crater/vendor/laravel/framework/src/Illuminate/Container/Container.php"
line: 806
message: "Target class [App\Http\Middleware\Authenticate] does not exist

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.