Polygon -- PolyPM ERP for Sewn and Textile Industries (VB6)
Overview
Polygon Software is a worldwide provider of software solutions for the sewn-goods and textile industries. Its PolyPM product is a client/server application that includes both Product Lifecycle Management (PLM) and Enterprise Resource Planning (ERP) products.
The PLM product includes global sourcing, data vault, bill of materials, costing, product configurator, event messaging, workflows, document tracking, measurement specs, style graphics and document publishing.
The ERP product is fully integrated with the PLM product and includes order processing, EDI, sales analysis, forecasting, inventory management, purchasing, receiving, production planning, cut planning, manufacturing, WIP tracking, quality control, shipping and invoicing.
Great Migrations worked with PolyPM to scope, estimate, and plan an upgrade effort then implemented the initial solution to produce an integrated build-complete C# system with a specific set of custom upgrade features. Great Migrations then installed the solution on a machine at the PolyPM site and provided training and support so that the PolyPM team could continue development and optimization of the upgrade solution in-house.
Project Highlights
System Metrics
Metric | Comments |
|
| |||||||
CODE | 254K LOC Logic and 20K LOC GUI in 1,120 Files: 134 Forms, 1 MDIForm, 778 Classes, 18 UserControls, 134 Modules, 2 PropertyPages, 4 Designers organized into 47 VBPs. | |||||||||
BINARIES | 11 EXEs, 32 DLLs, 4 Controls, 0 OLE EXEs |
|
| |||||||
MEMBERS | 17,408 unique subprograms: 6,882 subroutines, 4,644 functions, 2,387 properties , 594 externs , 2,901 event handlers. | |||||||||
UI | 119 unique UI containers containing 2,259 instances of 74 different kinds of controls. |
|
| |||||||
COM | 254,197 calls to external COM components. The diversity of COM members is 1,468 unique members from 317 classes in 40 COM components. | |||||||||
WIN32 | 1,069 calls to 244 unique entry-point APIs from 24 libraries. API Calls are made from 375 different user procedures. | |||||||||
COM Upgrades
ADODB: upgrade ADODB to System.Data, System.Data.SqlClient and MigrationSupport.DataLib
COMAdmin: upgrade COMAdmin to COMAdmin stub API with stronger typing
CommonDialog: upgrade CommonDialog to MigrationSupport.UI.CommonDialog
COMSVCSLib: upgrade to COMSVCSLib stub API with changes to reduce ref args
EasyLabel: upgrade to EasyLabel ELabelInfo control to interop wrapper and AxHost wrapper
Excel: upgrade Excel to Office Excel primary interop assembly
FlowChartLib: upgrade to FlowChartLib control to interop wrapper and AxHost wrapper
MSComCt2: upgrade MSComCt2 controls to WinForms (FlatScrollBar)
MSComCtl: upgrade MSComCtl controls to Winforms Controls (ListView, TreeView, ProgressBar, ToolBar, ImageList)
Outlook: upgrade to Outlook to Outlook primary interop wrapper
MSXML2: Upgrade MSXML to System.Xml
Quickbook: upgrade Quickbook to interop wrapper
Richtextlib: upgrade Richtextlib control to System.Windows.Forms.RichTextBox
Scripting: upgrade Scripting filesystem to System.IO; upgrade Scripting.Dictionary to PpmUtilities.PpmDictionary
SQLDMO: Upgrade SQLDMO to custom Microsoft.SqlServer.Smo wrapper
TabDlg: upgrade TabDlg Control to MigrationSupport.UI.TabControl
VszLib: upgrade VszLib to custom System.IO.Compression wrapper
ZRush_ShipRush: upgrade ZRush_ShipRush to control interop wrapper class
PpmToolbar: upgrade PpmToolbar to stub API
IHCs: in-house .NET assemblies were change from interop to native linkage
Custom Upgrades
Upgrade Custom collections and Scripting.Dictionary to strongly typed generic custom collections and dictionaries
Upgrade several technical classes to hand-coded replacements
Determine Dictionary types based on string literal field names found in the code
Restructure global multi-use classes into static classes
Eliminate unnecessary temporary arguments passed by ref
Upgrade specific method parameters to be optional
Upgrade error handling to use try-catch and MigrationSupport.Utils.ResumeNext
Eliminate unnecessary weak typing