Giter Site home page Giter Site logo

northwind-basic's Introduction

Overview

Northwind Traders Complete Accounting Project is being designed to fill a niche for accounting packages in an industry that has vastly different needs for financial breakdown of information - the trucking industry.

The trucking industry is a per mile industry, where the only financial information that matters is based upon the number of miles a unit may travel. These miles are either logged as empty or loaded, depending upon whether the unit is hauling a load from Point A to Point B, or deadheading from Point B to Point C to pick up another load. Regardless of whether the truck is loaded or empty, there are multiple costs involved in the unit movement, such as fuel, maintenance, tolls/parking, etc. Even when the unit is not actively hauling a load, if it is moving, it is incurring these costs. This is why the financial breakdown that makes the most sense to the trucking industry is the per mile breakdown. While empty, units typically get higher fuel economy and lower maintenance costs than when loaded. However, every mile moved costs the company money. All of the expenses that have been mentioned so far don't even take into account the pay for the driver of the unit, who is usually paid per mile when the unit is empty, as well as when the unit is loaded.

Northwind Traders Complete Accounting Project aims to answer this lack of software that tracks revenue and expenses per mile.

The Development System

Northwind Traders Complete Accounting Project is being developed using the Java™ Programming Language, as it is system independent. By using Java™ we will be able to design and code the project once and it will be able to be used on any operating system that supports a Java™ Virtual Machine (JVM).

Furthermore, the Project will be designed in a modular fashion. In this way, end users will only need to purchase those portions of the application that make sense for their business setup and structure. For this reason, not only are we developing the Project in the Java™ Programming Language, but we are using Java 12, which is modular by design.

Basic Edition

Northwind Traders Complete Accounting Basic Edition is focused on the single-truck owner/operator truck driver. This system will have all of the features that an owner/operator will need to manage his/her company and know his/her company's numbers, down to the mile.

The modules that make up the Basic Edition are:

  • Base Module - The entry and configuration module for the application.
  • Customer Mangement Module - Provides the means of storing and locating customers that are shipping or receiving the loads.
  • Vehicle/Unit Management Module - Provides a way for the owner/operator to maintain the information for their truck(s) and trailer(s).
  • Loads Module - The handling of all load information.
  • Accounting Module - The module that performs all of the accounting calculations for the application.
  • General Ledger Module - The module that handles the entry of financial information into the application.
  • Service Management Module - Manages and maintains records of repairs and maintenance on the vehicles/units.
  • Reporting Module - Provides all of the reports the system is set up to create.

northwind-basic's People

Contributors

jkovalsky avatar mend-bolt-for-github[bot] avatar seancarrick avatar

Watchers

 avatar  avatar

Forkers

jkovalsky

northwind-basic's Issues

Modularity in Java vs. NetBeans

I am starting to doubt attempting to do even the Basic Edition in plain old Java. I want to start creating some of the dialogs for input of data, in order to get a visual of the data and how it relates via the interface, but I still want to keep the system modular.

My biggest problem is trying to figure out how to only show menu items for windows/dialogs that have a module related to them available to the application. Also, I am confused as to how to keep the windows/dialogs that belong to a module, such as Load Tracking, within that module, yet be able to display them via the MainFrame class in the com.pekinsoft.northwind.desktop package and com_pekinsoft_northwind_desktop module.

Can you point me in the right direction on this? Or, should we build the Basic Edition as a NetBeans Platform application? I really think I messed up beginning the coding in the way that I did.

Feedback Requested: Log Output

Please provide me feedback on this output. Let me know anything that you think should be included that I'm not including. Thank you!

Here is a copy of a log file from running Northwind Traders:

================================= B E G I N ====================================
 -> 2020-03-11T18:31:45.783219600
Entering: com.is2300.northwind.Application.static initializer{}
Exiting: com.is2300.northwind.Application.static initializer{}
 -> 2020-03-11T18:31:45.809148900
----------------------------------  E N D --------------------------------------
CONFIG: Showing the MainFrame window.
================================= B E G I N ====================================
 -> 2020-03-11T18:31:45.839068600
Entering: com.pekinsoft.northwind.desktop.MainFrame.main
CONFIG: Setting the look and feel to the system default.
CONFIG: Starting the event queue...
Exiting: com.pekinsoft.northwind.desktop.MainFrame.main
 -> 2020-03-11T18:31:45.923842200
----------------------------------  E N D --------------------------------------
DEBUG: >>>>>Displaying the MainFrame...<<<<<
================================= B E G I N ====================================
 -> 2020-03-11T18:31:45.959746200
Entering: com.pekinsoft.northwind.desktop.MainFrame.Constructor
DEBUG: Initializing frame components...
DEBUG: Setting the MainFrame icon to:

	/com/pekinsoft/northwind/desktop/graphic
s/x16/Northwind.png
Exiting: com.pekinsoft.northwind.desktop.MainFrame.Constructor
 -> 2020-03-11T18:31:46.074514600
----------------------------------  E N D --------------------------------------
================================= B E G I N ====================================
 -> 2020-03-11T18:31:49.010958
Entering: com.is2300.northwind.Application.exit( 0 )
CONFIG: Attempting to write the properties to file.
DEBUG: Properties file written to: C:\Users\Integ\.northwind.conf
DEBUG: Calling System.exit(0)
DEBUG: ---> Exit Status: Normal
Exiting: com.is2300.northwind.Application.exit :: 0
 -> 2020-03-11T18:31:49.024921500
----------------------------------  E N D --------------------------------------

Automatic Versioning Help

I've tried to create a way for the application to automatically increment its version information. I do the math on the build number. Once the build reaches 9999, it should roll over to 0. The rest of the version numbers should calculate based off of the build number, automatically incrementing when the time is right.

However, the build number is not increasing, therefore, nothing else will automatically increment. Any ideas on what I messed up? Here's the code, which is in the static initializer (static{}) of the Application class:

        // Pull in the application version information from the properties file. 
        long bui = Long.valueOf(props.getProperty("app.build", "0"));
        int rev = Integer.valueOf(props.getProperty("app.revision", "0"));
        int min = Integer.valueOf(props.getProperty("app.minor", "1"));
        int maj = Integer.valueOf(props.getProperty("app.major", "0"));
        
        log.debug("Calculating the version of the application.");
        if ( Boolean.getBoolean(props.getProperty("debugging")) ) {
/* These commented out lines were an attempt to keep the build number between 1583 (just a 
 * random number that I picked) and 9999. I commented them out when the automatic version 
 * incrementing was not working and I started trying to debug the reason. Now, I am just adding
 * one to the build number that is read into the system from the properties file and it's still not
 * working. Also, I was originally going to do some math with the system time in milliseconds for
 * the build number. However, I decided against that because it could work out that the rest of the
 * version numbers would not increment as expected.
 */
//            if ( bui == 0 ) {
//                bui = 1583;
//            } else {
//                System.out.println("Current System Time in Milliseconds: " +
//                        System.currentTimeMillis());
                bui++;
//            }

            // If the build hits 10000, reset it the build to zero (0) and increment the 
            //+ revision by one (1).
            if ( bui > 9999 ) {
                bui = 0;
                rev++;
            }
            // If the revision hits 101, reset the revision to zero (0) and increment the 
            //+ minor by one (1).
            if ( rev > 100 ) {
                rev = 0;
                min++;
            }
            // If the minor hits 11, reset the minor to zero (0) and increment the 
            //+ major by one (1).
            if ( min > 10 ) {
                min = 0;
                maj++;
            }
        }
        
        // Store the calculated values to the constants and back into the application 
        //+ properties.
        MAJOR = maj; props.setProperty("app.major", String.valueOf(MAJOR));
        MINOR = min; props.setProperty("app.minor", String.valueOf(MINOR));
        REVISION = rev; props.setProperty("app.revision", String.valueOf(REVISION));
        BUILD = bui; props.setProperty("app.build", String.valueOf(BUILD));

No matter how many times I look at this code, I cannot figure out where my mistake is. Please help me figure this out, as I believe that I might be getting close to running the project 1583 times and want it to start incrementing. Thank you for your assistance with this.

Error Report Information

I tested the error reporting that generates a detailed report of the error in the .northwind/var/err folder in the user's home folder. The generated report looks like the sample below. Please, look it over and give me suggestions of any other information that should be gathered into it. Thanks for your input!

Sample error report:

Error Location: com.pekinsoft.northwind.desktop.MainFrame.ExitMenuItemActionPerformed

--------------------------------------------------------------------------------

Exception:  java.lang.Exception
Message:     null
Stacktrace:
com_pekinsoft_northwind_desktop/com.pekinsoft.northwind.desktop.MainFrame.ExitMenuItemActionPerformed(MainFrame.java:252)
com_pekinsoft_northwind_desktop/com.pekinsoft.northwind.desktop.MainFrame$3.actionPerformed(MainFrame.java:222)
java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)
java.desktop/javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:405)
java.desktop/javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:262)
java.desktop/javax.swing.AbstractButton.doClick(AbstractButton.java:369)
java.desktop/javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1020)
java.desktop/javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1064)
java.desktop/java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:297)
java.desktop/java.awt.Component.processMouseEvent(Component.java:6632)
java.desktop/javax.swing.JComponent.processMouseEvent(JComponent.java:3342)
java.desktop/java.awt.Component.processEvent(Component.java:6397)
java.desktop/java.awt.Container.processEvent(Container.java:2263)
java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5008)
java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
java.desktop/java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4918)
java.desktop/java.awt.LightweightDispatcher.processMouseEvent(Container.java:4547)
java.desktop/java.awt.LightweightDispatcher.dispatchEvent(Container.java:4488)
java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2307)
java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2762)
java.desktop/java.awt.Component.dispatchEvent(Component.java:4840)
java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:772)
java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
java.desktop/java.awt.EventQueue$4.run(EventQueue.java:715)
java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
java.desktop/java.awt.EventQueue$5.run(EventQueue.java:745)
java.desktop/java.awt.EventQueue$5.run(EventQueue.java:743)
java.base/java.security.AccessController.doPrivileged(AccessController.java:389)
java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:742)
java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
--------------------------------------------------------------------------------

                        S Y S T E M   I N F O R M A T I O N

OS..................Windows 10
OS Version.........10.0
Architecture.......amd64

                          J A V A   I N F O R M A T I O N

Java Virtual Machine.....Java HotSpot(TM) 64-Bit Server VM
Java VM Version..........12.0.2+10
Java Runtime Name........Java(TM) SE Runtime Environment
Java Runtime Version.....12.0.2+10
Java Specification.......Java Platform API Specification
Java Spec. Version.......12
Java Vendor..............Oracle Corporation
Java Version.............12.0.2
Java Version Date........2019-07-16
Java Class Path..........
Java Class Version.......56.0
Java Library Path........C:\Program Files\Java\jdk-12.0.2\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Program Files (x86)\Common Files\Oracle\Java\javapath;D:\Anaconda3;D:\Anaconda3\Library\mingw-w64\bin;D:\Anaconda3\Library\usr\bin;D:\Anaconda3\Library\bin;D:\Anaconda3\Scripts;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Users\Integ\AppData\Local\Microsoft\WindowsApps;D:\JetBrains\PyCharm Community Edition 2019.2.2\bin;;C:\Program Files\Java\jdk-12.0.2\bin\;;.

                          

User Country.............US
User Language............en

~~~ END OF ERROR REPORT ~~~

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.