Git Product home page Git Product logo

admin-portal's Introduction

Invoice Ninja

Client application for Invoice Ninja.

Desktop Apps

Mobile Apps

Dashboard View Invoice List Invoice New Invoice

Table of Contents


Setting up the app

  • Initialize the config file

    cp lib/.env.dart.example lib/.env.dart

  • Support running the code unsigned on Android

    cp android/app/build.gradle.dev android/app/build.gradle

  • Run the app

    flutter run

Note: if you don't have an Invoice Ninja backend setup you can test the app with these credentials:

Steps to remove non-FOSS code

cp android/build.gradle.foss android/build.gradle
cp lib/utils/oauth.dart.foss lib/utils/oauth.dart
cp lib/utils/app_review.dart.foss lib/utils/app_review.dart
cp lib/ui/app/upgrade_dialog.dart.foss lib/ui/app/upgrade_dialog.dart
cp lib/ui/app/pinput.dart.foss lib/ui/app/pinput.dart
cp android/app/src/main/AndroidManifest.foss.xml android/app/src/main/AndroidManifest.xml
cp pubspec.foss.yaml pubspec.yaml 
rm pubspec.lock

Application Architecture

The application was created using the Flutter Redux Starter.

The architecture is based off these two projects:

File Structure

A High-level overview of the project structure:


lib/                     # Root Package
|
├─ data/                 # For data handling
│  ├─ mock/              # sample used for testing
│  ├─ models/            # Objects representing data
│  ├─ repositories/      # Source of data
|
├─ redux/                # manages app state
│  ├─ component/         # app building block
│     ├─ actions         # methods to update app state
|     ├─ middleware      # run in response to actions, execute before reducer
|     ├─ reducer         # intercepts actions, responsible for updating the state
|     ├─ selectors       # read data from the state, queries against your 'state database'
|     ├─ state           # immutable object that lives at the top of the widget hierarchy
|
├─ ui/                   # app views
│  ├─ component/         # views for different components
│    ├─ view/            # generel view for component
│    ├─ edit/            # change values on the views fields
|
├─ utils/                # Utility classes

The ui and redux folders contain components that are paired together. Put simply you will find an 'auth' folder in both the ui and redux folders.

For additional information on Redux architecture

Blog Posts

Code generation

  • Run flutter packages pub run build_runner build --delete-conflicting-outputs to regenerate the model files. It will also remove the old generated files so conflicts are avoided..

Tests

  • Run flutter drive --target=test_driver/all_it.dart to run the tests

Credits

https://github.com/invoiceninja/invoiceninja#credits

Contributions

We gladly accept contributions! If you'd like to get involved with development please join our Slack group or Discord Server.

admin-portal's People

Contributors

binsaed avatar danger-ahead avatar danysz avatar esarbanis avatar flutterninja9 avatar ggasbarri avatar guptaanmol184 avatar heilmela avatar hillelcoren avatar hmnd avatar joshuadwire avatar kishanmnpatel avatar larsk1 avatar licaon-kter avatar lsaudon avatar mindnervestech avatar psame18 avatar thomaspr1205 avatar turbo124 avatar whatisfydocom avatar yois615 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

admin-portal's Issues

App not connecting WRONG_VERSION_NUMBER

I found an error when trying to connect to the self-hosted version of the app, I followed the instructions and set the API key. But when I try to connect to it through the app it says:

HandshakeException: Handshake error in client (OS Error: WRONG_VERSION_NUMBER(tls_record.cc:242))

Running Invoice Ninja v4.5.7 and the latest version from the Play store on Android 9.

Login errors when currencies table contains values

Related to an issue reported in slack: https://invoiceninja.slack.com/archives/CBL9F6WJZ/p1531164141000085

Invoiceninja 4.5
After trying to log in through the app I got this error:

login

In my database, all exchange_rate values were set to 1.0000 (other than one which was null).

I installed a fresh copy locally and checked the table and all values were null by default. So I set everything to null on my live version and then I could log in.

I'm not sure what modifies the exchange_rate value, since they were all set to the same value 1.000, but it might explain why others weren't running into the same issue.
I have previously sent invoices in 4 different currencies.
I have fixer.io set up for exchange rates.

EXCHANGE_RATES_ENABLED=true
XCHANGE_RATES_URL=http://data.fixer.io/latest?access_key=mykey
EXCHANGE_RATES_BASE=GBP

I can't find anything in the site admin that modifies these values so I'm guessing it's something like the above?

Sort invoices by date incorrect

OS: Android

Host Version: 4.5.2

When I use the sort option to sort invoices by ascending or descending based on the invoices date it is not sorting correctly. For example when choosing descending order I have March invoices at the top and way at the bottom with August in the middle of the list.

Login error 4.5.1

Invoiceninja 4.5.1

After trying to log in through the app I got this error:

img_20180731_175436

Please help me!

Error getting a dependency package

Because every version of flutter_driver from sdk depends on intl 0.15.6 and invoiceninja_flutter depends on intl ^0.15.7, flutter_driver from sdk is forbidden.
So, because invoiceninja_flutter depends on flutter_driver any from sdk, version solving failed.
pub get failed (1)

task tax rate not added and typing in a "product" name doesn't assign tax to task - pick list needed

So I've set my tax rates in settings on the self hosted server side Settings/Advanced Settings to
"Enable specifying line item taxes" Nothing else checked. Default Tax Rate is set to 13%

I'm confused about how to set a tax rate for a task. Clients have different "task rates" specified in the Client section. From a computer (not phone app), invoicing task(s) works but I have to change the product of the task line to "Labour" from blank, to assign a tax rate. Everything here is 13% tax except a line item aka "product" for environmental recovery surcharge on hardware - this varies from monitor to desktop to laptop to mouse etc. but is not "taxed" as well.

I can continue to do the assigning a "Labour" product to the tasks - if I miss that no tax is collected - so not great - if you have a suggestion I'm open to it at this level.

This problem leads to the problem on my android phone InvNinja app... If I create an invoice with the task(s) performed at a job site, It allows me to click the "Product" assignment and type something in, but no pick list. If I type Labour or labour, it doesn't assign a tax even though Labour is a valid product with a tax rate assigned.

I see in Advanced Settings / Invoice Settings / Tasks two entries for "Task Field" I'm unclear if this is something I should set up or not related to this issue of just assigning a tax to tasks which would solve the issue.
Other possible solutions - can a task just be always affiliated with a "Product"?

"specifying an invoice tax" doesn't work because I can't subtract tax for those line items for "Electronics Stewardship Fees"

Basically, I can't invoice tasks from my phone because of this issue / or lack of understanding on my backend setup. Your guidance would be greatly appreciated.

Build Failed in iOS

/Library/Caches/com.apple.xbs/Sources/IDEXcode3ProjectSupport/IDEXcode3ProjectSupport-14306.16/Xcode3Core/LegacyProjects/Frameworks/DevToolsCore/DevToolsCore/BuildSystem/Runtime/PBXTargetBuildContext.mm:757
Details: unexpected successful exit code from cancelled command <C0014:'CpResource flutter_assets':P12>
Object: <PBXTargetBuildContext: 0x7f84063f10f0>
Method: -createCommandInvocationRecordFromInvocation:
Thread: <NSThread: 0x7f8406eb3210>{number = 13, name = (null)}
Please file a bug at https://bugreport.apple.com with this warning message and any useful information you can provide.
** BUILD FAILED **

Xcode's output:

=== BUILD TARGET Runner OF PROJECT Runner WITH CONFIGURATION Debug ===
error: the following command failed with exit code 1 but produced no further output
CopyPlistFile /Volumes/Workspace/AndoridProjects/Github/flutter-mobile/build/ios/Debug-iphonesimulator/Runner.app/GoogleService-Info.plist Runner/GoogleService-Info.plist

Logo design proposal

Hi, my name is Valeria. I'm a graphic designer and I'd like to collaborate on your open source project and propose free logo/icon design for your app. If it's something you're interested in, please, let me know!
Best,
Valeria

can't connect to Hosted Login?

"invalid secret" error is being thrown. Where can i get this secret if hosted login is used?
Basically how can i connect to the hosted version

One one resolution image included in the app

This is more of a question than an issue, I noticed you have included only one resolution image, I wonder how come your app did not get rejected on the AppStore.
Not all iPhones use same resolution images. Or did you use different resolution images and not included in this GitHub repo. Can you please guide me how to include different resolution image and how to include them in pubspec.yaml

NoSuchMethodError: The method '[]' was called on null.

Hi,
When I open the app & land on the Overview tab of the Dashboard, I just get the errors displayed in the below images. The screen in the second image is displayed when I try to open the menu.

Everything accessed via the Activity tab appears to be working as expected.

Invoice Ninja 4.5.8
PHP-FPM 7.2
Latest Android app

"The getter 'isNotEmpty' was called in null"

Hi,

First, thanks for the great web app and for this new mobile app.
I installed the tester/developer version from Google Play, and am receiving the following error in the app:
The getter 'isNotEmpty' was called in null.

I am running a self-hosted installation and the latest version of the web app (4.5.0).

Screenshot attached
screenshot_20180709-132330

Seems to be missing multi currency settings...

Hi, First off, LOVE the look and feel of the new app, congrats! I just started testing and at first glance I notice that although in the web version I can see on my dashboard both Dollar and Euro clients, in the ios beta app I cannot. And I see that a couple of them are showing billed in my invoices, but with a dollar sign in front of them instead of Euro.

Issue with currency decimal digits

Hello.
I created a custom currency in the database(Albanian Lek, didn't exist on the list). I assigned zero decimal digits and in the main program works correctly. However there is an issue in the mobile app, it adds two decimal digits and messes up with the values. For example I have an invoice where I have value of 1667, VAT(20%) of 333 and total of 2000. Instead on the mobile app I have value of 1666, VAT of 333.4 and a total of 1999.4 Since I have set zero decimal digits, the web app is OK, but the mobile app does not respect that.

App stuck on the initial logo screen

I followed all the steps to setup the app but when i run it its just stuck on the home screen
image
the logs dont show anything particularly useful except the the no-method error
image

What can i do to debug the error? thanks

Dashboard stats not correct and multi-currency

When I check the dashboard screen, the time period for each section seems to be different with no way to change it. Some stats are also only for the default currency.

screenshot_20180709-222507

The invoices sent number is correct and shows the total number of invoices I have sent since installing in any currency.
I have 12 clients in the system, but 2 of them were set up for testing so I assume this is correct as invoices to the test accounts were deleted.
The outstanding value isn't correct. In the web admin I have 2,250.72 total outstanding GBP and 1,896.70 in the last 30 days (all other currencies are fully paid).
I'm not sure where the total revenue is coming from as it doesn't match any of the default timescales for the web dashboard.

I'm not sure where to check average invoice amount in the web app but it also seems very low.

All the stats are for the default currency of the main app, but I also bill in other currencies and there's no way to view those in the mobile app.

offline support

Application should support offline mode . i.e. create product ,client in offline mode.

QR Code for easy login with self hosting

Hello,
First, thank you for the application
On self hosting is not easy to login in the application but with an qr code this easier to do this.

I am open to other easy login :)

Tasks?

In case this has already been reported, feel free to close. But will task/time tracking be in the final version? I use it ALL the time. Thanks!

Sort by invoices Due Date

I use IN to manage reservation invoices for a small accommodation. As such the Due Date of the invoice is more important than the invoice date. The ability to sort by Due Date would be helpful. In addition, displaying the Due Date as part of the invoice list would be nice to have. (e.g. in addition to the name, amount due, invoice no and invoice status).

Dashboard not loading

I have the latest version of the Android app and Self Host of Invoice Ninja. I thought the Dashboard feature was not implemented yet until I saw a screenshot in this issue: #20 (comment)

My Dashboard never loads and just shows the loading icon forever:

screenshot

I am using Android 7 on a Moto X Pure edition.

App release versions aren't tagged

It would be great if app versions were tagged in Git and listed on the Releases page. It would be even better if the compiled binaries were also uploaded there. This will help people who don't use Google Play, and give us a way to easily check the latest version so we know when to update.

Add adaptive icon support on Android 8+

Newer versions of Android have a featured called Adaptive Icons. Essentially, this lets users choose the shape of all of the icons on their home screen, to keep them uniform. In the future, Google may use this feature for things such as notification indicators, or other unknown features.

Currently, the Invoice Ninja icon is appearing against a solid white background in most cases, and looks pretty bad (at least in my opinion). Adaptive icons are pretty easy to support, just requiring a couple of new graphics and about 5 lines of new XML code. I'd greatly appreciate it if Invoice Ninja could be updated to support Adaptive Icons.

https://developer.android.com/guide/practices/ui_guidelines/icon_design_adaptive

invoice-ninja

Customize email html markup

On both the iOS and Android apps, when customizing an email before sending, the body of the email contains html markup which makes it difficult to edit.

This is from Android app

Screenshot_20190410-092540

Activity tab in android app not reflecting correct updater as web version

In the activity tab on the android app it is not reflecting the updater that is in the activity tab in the web version.

So in the android app it shows "Joe Blogs updated invoice 0001" but in the web admin page it shows "Uncle Ben updated invoice 001", Uncle Ben being the correct updater.

This is happening in the latest android app and on self hosted v4.5.13 and has behaved like this on previous versions.

Many thanks.

Error login

Im getting this error..

Powered by Invoice Ninja - v4.5.8
Android v0.1.26

whatsapp image 2019-01-15 at 18 05 49

Thanks

Allow editing tasks seconds

At least on Android, start and stop time fields in tasks only allow to set hours and minutes but not seconds. Also, the task duration can only be set in periods of 15 minutes and not the real duration.

Tasks not loading

Hi, thanks for the excellent work your doing -- love this program!

Tasks never show a list, just spins.

I've cleared my phone cache and app, reinstalled the latest app. Removed the legacy app. Android 9 latest.

Data on self-hosted 4.5.7. All data hooks up fine and all views are fine for other areas (ie invoices, quotes, etc) Tasks just spins and doesn't show any ongoing tasks of any label/type. Checked change logs on newer 4.5.x versions. No mention of required for tasks to work. Nothing in their directly affects my workflow -- maybe I should update the self-host for this to work though?

Can create a new task. That shows up in the database and web view from workstation if I hit the cloud in the top right corner of the app. Task list remains empty on the phone screen. If I back out of an ongoing task created on the phone (return to task list screen or jump to invoices/other tabs) - I can't return to the running task as it's not listed either.

I don't believe it's a wait for sync issue as I've only been using this for about 2 months so there are about 200 tasks at most. Left it spinning for an hour - nothing listed still.

Thanks again.

iOS Paste not possible

Try to paste text in some fields. Not Wirkung. Got error:
NoSuchMethodError: The getter ‚pasteButtonLabel‘ called on Null.
Receiver: null
Tried Calling: pasteButtonLabel

Changing quantity removes unit cost

When changing the quantity at the android app it removes the unit cost leaving the invoice with 0,00... maybe a "reset unit cost" or some kinda protection could also help to prevent accidental inputs...

Unable to Login

The app was instant crashing on Android and after 2 updates (I think that is how many you pushed out) I can now attempt to log in again. The login fails every time though even with all the correct credentials and I get this massive error object in red text printed to the apps login page.

Please remove dependency of google services for app to be usable

Before the 20 March update from google play store i was able to use the app despite the error message saying that it needs google play services to work.
However after this update i cannot connect to the self-hosted server anymore plus i get the error message as i connect.

For the people who dont use google play services can you please remove the dependency in order to use the app? And no i dont mind if i dont get notifications. I just want the app to be usable without the error message.

Also, Why isnt any of the latest releases shown in the Releases page here since August 2018 ?

"SocketException Failed host lookup" when old app still installed

Hello,

First off, you guys are doing a really nice job with the movement of InvoiceNinja.

tl:dr Uninstall the old/original app if you have the below error.

I started this as a post with the below problem and then I just noticed that I still had the old/original app installed. It must cause some kind of conflict and because I couldn't find a single thing about it online. I figured that I would make this issue for anyone who runs into it.

SocketException: Failed host lookup:
'invoice.example.com' (OS Error: No
address associated with hostname, errno = 7)

Thanks a lot guys for the great app.

App force close since update

Hey, I'm using v0.1.4
Since the update, the app is force closing. I've also deleted APP-Data.

Mobile: Oneplus 6, Android 8.1.0

Unable to login to 4.5.7

Hello,

I'm having an issue with the app and 4.5.7. App is updated to the latest version and I just updated (and cleared the cache) of my InvoiceNinja selfhost.

I am able to login to Ninja using the old version of the Android app.

screenshot_20181215-210348

Publish on F-Droid

I wasn't able to find InvoiceNinja on F-Droid but it would be nice to have it published there as well. And my guess is that F-Droid has probably a higher percentage of users that might be interested in InvoiceNinja than the other stores. 😉

I am not sure how "open" this license is and whether it, and its dependencies are open enough to publish it on F-Droid.
The requirements for F-Droid are naturally strict but maybe the InvoiceNinja doesn't need any/much changes.

PS: thank you for your work 👐

New App Unable to Add Multiple Company?

Hi all,

I updated the mobile app but I'm unable to find way to add another company. Is the new app not allow multiple self hosted Invoice Ninja with different URL?

Please advice, thank you.

Default Tax rate not added to Invoice

The default tax rate set in Settings>Tax Rates>Default Tax Rate in the web UI, is not applied by default when invoice is created in the mobile app.

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.