A system that covers virtually all of the company's processes. With the help of this system, users can edit the list of estimates, orders, services, and assign tasks. View this tasks in your own calendar and edit there. Pack everything on containers, and move between warehouses or frames. Also, to track the tasks there is a map that shows order, addresses and task for the employee. On this map, employee can set the priority of tasks.
Of course there is the possibility of editing customers, employees. System have full information about employee. His sick leave, vacation, reprimands, information about driver's license, emergency contacts. Also system have the activity history.
There is a history of price changes and a history of orders and services. In the case of orders and services for tracking, Auditor was added. The system has a payment section through which a report on payment or refund is added. Balance is calculated for each customer, order and service automatically.
Users of the system can add products, warehouses, frames, vehicles, documents. Each document has its own unique number, which is created on the fly by the system. The administrator adds some kind of pattern and specifies for which document to use it. In the future, all this numbers will be created according to the created pattern.
As mentioned earlier, each product has a price and price history. But also imlemented a system that recounts the amount of the order or service if the price of a product has changed. This happens automatically thanks to DotNetRuleEngine which allows to save some of the code in the database, and then in the necessary place, this code is unloaded from the database and executed. So when the price of a product changes, system get the code (rule) how to recalculate the price and for which products. Perform the recalculation and update the database.
The system maintains statistics on various types of documents. It supports signing documents directly on the web client. There is no need to print the document. Also, all necessary documents for issuing an order, its transportation, etc. are automatically generated.
The administrator can edit locations, addresses, and permissions for various system roles. Almost all of the entities of the system associated with the location and everything that is displayed to the user depends on its location.
The system initialization is present. This is a remote console application that adds all the main data. Such as: addresses, locations, products, warehouses and their departments, prices, vehicles, access levels, in general all the main data.
For testing decided to use Unit Test project that covers more than 90% of the functional at the moment.
The system consists of three WCF services and three clients. There is also Workflow based on the Windows Workflow Foundation present. The relationship between clients and services is implemented according to the principle of Command Query Responsibility Segregation (CQRS), which allows you to change the business rules without changing the client and vice versa. In this regard, two services are implemented one for the execution of commands (addition, editing, deletion) and the second one for the request, both services are implemented according to the principle (CQRS). Thanks to CQRS it is easy and simple to add new functionality, the system is more elastic and scalable. The entire client part is based on Kendo UI. For both the client and server validation decided to use FluentValidation. Glimpse was used for performance investigation.
The third service is a utility for obtaining a price. CQRS was used too. The user selects one or more shapes, sets the size, type of the stone. Then based on these parameters, a table is created with prices that can be downloaded or printed. For further communication, the user can leave his coordinates. The client for this service is created on AngularJS.