Motiondata DMS

The dealer management system MOTIONDATA DMS supports all kinds of operational processes within vehicle trade and vehicle repair (Ordering system, CRM, parts trade, time recording, service appointments, communication with importers etc.). Numerous market-adapted interfaces and a wide range of brands characterize the DMS.

Some application history background:

  • The original application was written in Clipper W85/S87
  • In the middle of the 90's: Upgrade to Clipper 5.1.
  • In 1998: Use of DBFCDX instead of DBFNTX.
  • In the beginning of 1999: Migration to CAVO 2.0, begin usage of ReportPro 2.x.
  • 2003 - 2004: Migration from DBFCDX to MS SQL Server using VO2Ado.
  • 2009: Start with Vulcan.NET conversion tests.
  • 2013: Migration to Vulcan.NET.
  • 2017: Start with X# migration tests/"dual solution" Vulcan.NET and X#.
  • November 2020: Complete migration to X# (Currently using X# 2.9, 2.10 is in test mode).

Some application background:

  • The application core solution contains 130 projects (X# as well as C# whereas X# holds the majority, all of them currently based on .NET Framework 4.5) as well as some C# NuGet packages and one unit test project (the majority written in C# but some with X#).
  • There are 132 additional solutions holding smaller "helper applications" , we call them "PlugIns" although they're not PlugIns in the common sense , containing of EXE and DLLs written in C# which are called from the "X# shell application".
  • We're using TSVN as a source version control system in Visual Studio; after completing some code CheckIns, the applications are built and deployed using Jenkins as build server agent.
  • The shell application is written in X#; meanwhile approximately 2/3 of the forms in the core solution are based on WinForm, the others (mostly the smaller ones) are still VO based ones and are converted to WinForm on demand.
  • Some of our used components:
    • Xs2Ado (As we still have tons of VO style code; newer applications are using .NET SqlConnection etc.)
    • bBrowser.NET 3.5.
    • ReportPro 2.x .NET
    • ObjectListView
    • PdfPrinting.Net (So far the best PDF component we ever discovered, including PDF preview, PDF printing including printer tray usage, PDF overlay, PDF editing/merging etc.)
    • EazFuscator
    • Not directly in the solution, but essential as well: .NET Memory Profiler
  • Total lines of codes within core application and PlugIns: Absolutely no clue - and who freaking cares? ≡ƒÿë

MotionData1

  • The main window , we call it the "shell" , is a X# WinForm with more than 600 dynamically created menu items, the DLLs are loaded dynamically on demand, and the methods are called via reflection.
  • The menu side panel is a VO window hosted in a panel on the .NET WinForm shell; this window not only holds the menu structure but also acts as owner window for all VO based child windows in order to provide the correct ownership and message handling.
  • The whole application is multilingual; currently we are supporting several German business language modules as well as English, French , and there are still some in Polish, Czech, Hungarian, Romanian and Croatian although the translation on the later ones is not complete.
  • Colors, fonts etc. can be customized on user/work station/company level by a so called "Style Manager".
  • WinForm based forms work together well with VO based ones.
  • Some typical forms with our common features: title section = HTML control, navigation area, information area, button area etc.

MotionData2

MotionData3

MotionData4

Something about our usage of ReportPro:

  • We started using ReportPro 2.x in 1999.
  • When starting our tests with Vulcan.NET we bought ReportPro.NET in December 2009.
  • Some years later we hired Robert van der Hulst to do great performance improvements concerning the printout, print preview, total page count as well as PDF export. Some of the best investments we ever made ≡ƒÿë
  • All of our Reports are using DBFs as data source , and last year we succeeded in populating the same Reports with .NET DataTables without modifying the RPT files which allows even better performance.
  • Yes, ReportPro may be old , but:
    • After Roberts enhancements it is fast, reliable and stable (We're literally producing millions of invoices, lists etc. per year).
    • There are thousands of ReportPro based reports created by our developers/project team/helpdesk/customers , and the number is still increasing.
    • Some years ago we started using Crystal Reports as well; although CR might have advantages concerning graphics and formatting, ReportPro meanwhile proved superior in stability and integration , and it certainly has no compatibility issues as CR does ≡ƒÿë
    • We can provide so-called "task files" in our ReportPro designer which hold an XML structure of variables/images/elements; if our clients need those new elements on their customized long-existing ReportPro Reports, they simply select the concerning items in the RP designer, perform something like "import XML task file" and all the variables/fields/elements are automatically created and positioned on the reports. *Very* useful for both our project and our helpdesk team , and our power customers as well. Meanwhile those files can be created/exported/imported by the ReportPro user himself.
    • We made some enhancements in ReportPro so that we can create dynamic QR code images; ReportPro will evaluate any string expression, pass it as a parameter to a delegate method in the core application which creates a .NET bitmap in memory , and by receiving the string representation of it ReportPro can directly print those images.

No comments