Giter Club home page Giter Club logo

rekeningsysteem-bouwbedrijf-mackloet's People

Contributors

dependabot[bot] avatar rvanheest avatar

Watchers

 avatar  avatar

rekeningsysteem-bouwbedrijf-mackloet's Issues

Merge ParticulierFactuur and AangenomenFactuur into one new type

Header stays the same, but the invoice's items can be merged.

An EsselinkArtikel does not necessarily need to be in the invoice's list: it can also be used to create a description for the actual ListItem, as well as to transfer data from the database to the application.

Other types of ListItems can possible be merged as well. Also the LoonList can maybe be merged with the normal items.

BTW verlegd

When BTW 0.0% put the text "BTW verlegd naar " in case there is a btwnummer included in the debiteur.

Let's make this an option in the UI if that's possible.

Offerte PDF pagecount

Copy from #21

It appears as if there is something going wrong with the page count at the Offerte pdf. Results in ?? on the pdf.

Couldn't replicate this bug yet. More testing needs to be done.

Auto-update the application

Look into the possibilities of automatically updating the application when a newer version is released/available. (ask Mike for suggestions on this topic)

Factuurnummer formattering als <jaar><kenmerk><nummer>

In verband met de boekhouding van het bouwbedrijf en de imkerij is het nodig onderscheid te kunnen maken in de factuurnummers van beide bedrijven. In plaats van de huidige formattering (<nummer><jaar>) wordt overgeschakeld op <jaar><kenmerk><nummer>, met kenmerk 0 voor het bouwbedrijf en 1 voor de imkerij. Deze kenmerken generiek maken middels de config files. Opt-in/out voor offerte met de oude formattering als fallback. Houd ook rekening met automatische overgang van de ene naar de andere formattering.

Move properties to database?

Once #29 is completed (i.e. the properties are editable from within the application), we should consider moving the properties into the database. Maybe the Metadata table is useful for that?

Full screen mode

In full screen mode the windows bar should still be visible. At the moment, full screen does not show this bar.

Small improvements/bugs

  • A standard text is desirable at the Offerte text area
    image
  • Improve the Offerte text area (layout and such) (see #31)
  • It appears as if there is something going wrong with the page count at the Offerte pdf. Results in ?? on the pdf (see #30)
  • Saving the Offerte in a different folder is maybe not the best thing to do?
    • Suggest option to save all in 1 folder
    • Choose an extra default save location for Offerte (not sure if possible in the current state of the code)

Error while building

Look up how this can be fixed. Appeared since we started using Java8, I think...

[INFO] Scanning for projects...
[INFO] 
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building RekeningSysteem Bouwbedrijf Mackloet v0.4-alpha
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ Rekeningsysteem ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 42 resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.2:compile (default-compile) @ Rekeningsysteem ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 232 source files to G:\Richard van Heest\Rekeningsysteem-Bouwbedrijf-Mackloet\Rekeningsysteem\target\classes
[INFO] Some messages have been simplified; recompile with -Xdiags:verbose to get full output
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR : 
[INFO] -------------------------------------------------------------
[ERROR] /G:/Richard van Heest/Rekeningsysteem-Bouwbedrijf-Mackloet/Rekeningsysteem/src/main/java/org/rekeningsysteem/ui/textfields/PercentageFieldSkin.java:[30,25] variable control might not have been initialized
[ERROR] /G:/Richard van Heest/Rekeningsysteem-Bouwbedrijf-Mackloet/Rekeningsysteem/src/main/java/org/rekeningsysteem/ui/textfields/PercentageFieldSkin.java:[40,53] variable control might not have been initialized
[ERROR] /G:/Richard van Heest/Rekeningsysteem-Bouwbedrijf-Mackloet/Rekeningsysteem/src/main/java/org/rekeningsysteem/application/working/IOWorker.java:[57,77] incompatible types: bad return type in lambda expression
    rx.Observable<capture#1 of ? extends org.rekeningsysteem.data.util.AbstractRekening> cannot be converted to rx.Observable<? extends capture#2 of ? extends org.rekeningsysteem.data.util.AbstractRekening>
[INFO] 3 errors 
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.027 s
[INFO] Finished at: 2015-08-19T09:03:06+01:00
[INFO] Final Memory: 16M/203M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.2:compile (default-compile) on project Rekeningsysteem: Compilation failure: Compilation failure:
[ERROR] /G:/Richard van Heest/Rekeningsysteem-Bouwbedrijf-Mackloet/Rekeningsysteem/src/main/java/org/rekeningsysteem/ui/textfields/PercentageFieldSkin.java:[30,25] variable control might not have been initialized
[ERROR] /G:/Richard van Heest/Rekeningsysteem-Bouwbedrijf-Mackloet/Rekeningsysteem/src/main/java/org/rekeningsysteem/ui/textfields/PercentageFieldSkin.java:[40,53] variable control might not have been initialized
[ERROR] /G:/Richard van Heest/Rekeningsysteem-Bouwbedrijf-Mackloet/Rekeningsysteem/src/main/java/org/rekeningsysteem/application/working/IOWorker.java:[57,77] incompatible types: bad return type in lambda expression
[ERROR] rx.Observable<capture#1 of ? extends org.rekeningsysteem.data.util.AbstractRekening> cannot be converted to rx.Observable<? extends capture#2 of ? extends org.rekeningsysteem.data.util.AbstractRekening>
[ERROR] -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

Searchbox default text

The default text in the EsselinkArtikel's is still in English. This needs to be translated in Dutch.

Open pdf in application

The open button should also be able to open pdf files. This should open the file in the default pdf reader.

Invoice number in the filename of the invoice

Add the invoice number to the filename of the invoice. So, when, in the dialog window, the user types file123.xml, and the invoice number generator returns 32018, the final name will be 32018 - file123.xml.

Make this an opt-in/out in the user interface: in the invoice number section, add a checkbox if the invoice number is not yet set.

Improved error reporting

Use the logging more often than it is now and make the error messages more specific. Also consider implementing an email service that notifies when an error has occurred. (maybe ask Mike for suggestions on the latter half?)

PDF vs Save

When a new invoice is created and a PDF is created without first saving, the invoice number is not allocated and it is no longer possible to create an XML document afterwards.

Clicking on the PDF button should first invoke the save action and then invoke the pdf action.

BTW

Changes in the BTW:

  1. Mutaties should only have one percentage, rather than the current two
  2. Aangenomen and Particulier should have a percentage per ListItem with default set by the settings

Intellegence update

Auto completion on Debiteur based on given information. For example when street and number are entered, suggest the zip code and place. Not sure yet what this can be based upon. Probably an external source?

Also try to predict the EsselinkArtikel based on previously selected items and the search query entered so far. After that we can limit the number of suggested items to a certain number n.

Offerte text with styling

Instead of plain text, the offerte text area needs to include styling. For this we can use the JavaFx HTMLEditor or maybe something similar to this with less styling options.

The HTMLEditor has an HTML String as its output. Since the Offerte PDFs are generated using LaTeX either a parser needs to be written to generate LaTeX code from the HTML or the new implementation of the editor returns a LaTeX String instead.

Styling the might be supported:

  • Bold/italic/underline
  • Font size
  • Font type (header 1..n, paragraph, etc.)
  • Font color
  • Background color
  • Horizontal rule
  • Lists (bullets and numbers) + nesting

Styling that will no be supported:

  • Font family

Layout of pdf

For an invoice with one item and no tax, the pdf looks a bit silly. To avoid that, let's lower the cumulatives to the bottom of the page. Presumably this only needs a change in the LaTeX files or LaTeX layout file.

Also, if an invoice has only has items with no tax, we can remove the "subtotaal" line.

XML and CSV parser

Look into parser combinators using the Parsec paper by Daan Leijen to re-implement the XML and CSV parsers. Also the parser needed for #31 could be implemented this way.

Either write our own parser from scratch (based on the Parsec paper) or maybe try to use RxParsec for this?

Rename 'bonnummer' to 'inkooporder'

Since special customer 'woningbouw' changed 'bonnummer' to 'inkooporder', we have to do this as well. First change this in the PDF and UI, then also in the backend. Keep the 'bonnummer' in the XML though, it's not worth introducing a new version of the (schemaless) schema for this.

BTW lines in invoice

Change the text in the BTW lines to

Omschrijving Bedrag BTW
BTW percentage% over valuta netto bedrag btw bedrag

Unknown bug in pdf creation

The following is a bug that is seen a lot in the client's errorlog. Not sure yet how this is caused and what is going wrong here.

[ERROR|org.rekeningsysteem.io.pdf.PdfExporter.export(PdfExporter.java:39)] Errors occurred while executing pdfLaTeX! Exit value of the process: 1
org.rekeningsysteem.exception.PdfException: Errors occurred while executing pdfLaTeX! Exit value of the process: 1
    at org.rekeningsysteem.io.pdf.PdfExporterVisitor.generate(PdfExporterVisitor.java:219)
    at org.rekeningsysteem.io.pdf.PdfExporterVisitor.general(PdfExporterVisitor.java:76)
    at org.rekeningsysteem.io.pdf.PdfExporterVisitor.visit(PdfExporterVisitor.java:105)
    at org.rekeningsysteem.data.offerte.Offerte.accept(Offerte.java:38)
    at org.rekeningsysteem.io.pdf.PdfExporter.export(PdfExporter.java:36)
    at org.rekeningsysteem.application.working.IOWorker.export(IOWorker.java:40)
    at org.rekeningsysteem.application.working.RekeningTab.lambda$export$150(RekeningTab.java:131)
    at org.rekeningsysteem.application.working.RekeningTab$$Lambda$448/2026413.call(Unknown Source)
    at rx.Observable$32.onNext(Observable.java:7187)
    at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:130)
    at rx.internal.operators.OperatorSingle$1.onCompleted(OperatorSingle.java:75)
    at rx.internal.operators.OperatorTake$1.onNext(OperatorTake.java:69)
    at rx.internal.operators.NotificationLite.accept(NotificationLite.java:150)
    at rx.internal.util.RxRingBuffer.accept(RxRingBuffer.java:432)
    at rx.internal.operators.OnSubscribeCombineLatest$MultiSourceProducer.tick(OnSubscribeCombineLatest.java:152)
    at rx.internal.operators.OnSubscribeCombineLatest$MultiSourceProducer.onNext(OnSubscribeCombineLatest.java:209)
    at rx.internal.operators.OnSubscribeCombineLatest$MultiSourceRequestableSubscriber.onNext(OnSubscribeCombineLatest.java:252)
    at org.rekeningsysteem.rxjavafx.Observables.lambda$3(Observables.java:56)
    at org.rekeningsysteem.rxjavafx.Observables$$Lambda$251/33396634.call(Unknown Source)
    at rx.Observable.unsafeSubscribe(Observable.java:7304)
    at rx.internal.operators.OnSubscribeCombineLatest$MultiSourceProducer.request(OnSubscribeCombineLatest.java:131)
    at rx.internal.operators.OperatorTake$1$1.request(OperatorTake.java:89)
    at rx.Subscriber.setProducer(Subscriber.java:137)
    at rx.Subscriber.setProducer(Subscriber.java:133)
    at rx.Subscriber.setProducer(Subscriber.java:133)
    at rx.internal.operators.OperatorTake$1.setProducer(OperatorTake.java:80)
    at rx.internal.operators.OnSubscribeCombineLatest.call(OnSubscribeCombineLatest.java:68)
    at rx.internal.operators.OnSubscribeCombineLatest.call(OnSubscribeCombineLatest.java:45)
    at rx.Observable$1.call(Observable.java:145)
    at rx.Observable$1.call(Observable.java:137)
    at rx.Observable$1.call(Observable.java:145)
    at rx.Observable$1.call(Observable.java:137)
    at rx.Observable.subscribe(Observable.java:7393)
    at rx.Observable.subscribe(Observable.java:7173)
    at org.rekeningsysteem.application.working.RekeningTab.export(RekeningTab.java:131)
    at org.rekeningsysteem.application.working.MainPane.lambda$19(MainPane.java:155)
    at org.rekeningsysteem.application.working.MainPane$$Lambda$447/21493206.accept(Unknown Source)
    at java.util.Optional.ifPresent(Unknown Source)
    at org.rekeningsysteem.application.working.MainPane.lambda$4(MainPane.java:153)
    at org.rekeningsysteem.application.working.MainPane$$Lambda$97/36929.call(Unknown Source)
    at rx.Observable$31.onNext(Observable.java:7139)
    at rx.observers.SafeSubscriber.onNext(SafeSubscriber.java:130)
    at rx.internal.operators.OperatorDoOnEach$1.onNext(OperatorDoOnEach.java:84)
    at rx.internal.operators.OperatorMap$1.onNext(OperatorMap.java:54)
    at rx.internal.operators.OperatorSubscribeOn$1$1$1.onNext(OperatorSubscribeOn.java:76)
    at org.rekeningsysteem.rxjavafx.Observables$$Lambda$230/26636394.handle(Unknown Source)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(Unknown Source)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
    at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
    at javafx.event.Event.fireEvent(Unknown Source)
    at javafx.scene.Node.fireEvent(Unknown Source)
    at javafx.scene.control.Button.fire(Unknown Source)
    at com.sun.javafx.scene.control.behavior.ButtonBehavior.mouseReleased(Unknown Source)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(Unknown Source)
    at com.sun.javafx.scene.control.skin.BehaviorSkinBase$1.handle(Unknown Source)
    at com.sun.javafx.event.CompositeEventHandler$NormalEventHandlerRecord.handleBubblingEvent(Unknown Source)
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(Unknown Source)
    at com.sun.javafx.event.EventUtil.fireEventImpl(Unknown Source)
    at com.sun.javafx.event.EventUtil.fireEvent(Unknown Source)
    at javafx.event.Event.fireEvent(Unknown Source)
    at javafx.scene.Scene$MouseHandler.process(Unknown Source)
    at javafx.scene.Scene$MouseHandler.access$1500(Unknown Source)
    at javafx.scene.Scene.impl_processMouseEvent(Unknown Source)
    at javafx.scene.Scene$ScenePeerListener.mouseEvent(Unknown Source)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$MouseEventNotification.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleMouseEvent(Unknown Source)
    at com.sun.glass.ui.View.handleMouseEvent(Unknown Source)
    at com.sun.glass.ui.View.notifyMouse(Unknown Source)
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method)
    at com.sun.glass.ui.win.WinApplication.lambda$null$141(Unknown Source)
    at com.sun.glass.ui.win.WinApplication$$Lambda$37/29531133.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

OutOfMemoryException while loading Esselink data from CSV

OutOfMemoryException when loading data from CSV into Database

Caused by org.reken....Database.lambda$1(Database.java:72)
Probably this is due to a bug in the threading with the IOScheduler

This does not happen on my own pc, only on the client's pc.

Remember open/save location

Remember the last open/save location for both the XML and PDF and open next open/save window on that location.

Debiteur management is buggy

Update queries are not processed properly. When an update is done in the settings screen, the update is applied. However, when the application is restarted, the updates seem to be undone.

Presumably these changed are applied locally but are not properly executed in the database.

Debiteur admin

Debiteur admin needs to be added.

Features:

  • search for existing ones (suggestions)
  • add new one by using same format as the online banking "add to addressbook" feature
  • debiteur management via settings

Settings for the properties

Make a settings tab to view or edit the properties that are used for running the program. However, not all properties should be displayed there! Only the following ones should be displayed in there:

  • date-format
  • uurloon
  • valuta
  • valuta - ISO 4217
  • loon btw percentage
  • materiaal btw percentage
  • factuurnummer
  • offertenummer
  • pdf templates
    • Aangenomen
    • Mutaties
    • Reparaties
    • Particulier
    • Offerte

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.