Compare commits

..

210 Commits

Author SHA1 Message Date
Jonathan Jenne
4e3b08038a Version 1.4.4.3 2024-01-15 08:23:25 +01:00
Jonathan Jenne
7c683cf13e Don't run price procedure in transaction 2024-01-15 08:23:16 +01:00
Jonathan Jenne
6eedcc687f Version 1.4.4.2 2023-11-07 10:51:19 +01:00
Jonathan Jenne
62708c02ef Fix table loading 2023-11-07 10:51:00 +01:00
Jonathan Jenne
4a6a8ded7c Version 1.4.4.1 2023-11-07 10:19:49 +01:00
Jonathan Jenne
25e9713c2c Remove Language, Filesystem modules 2023-11-07 10:19:30 +01:00
Jonathan Jenne
a0e5b4aa0b Version 1.4.4.0 2023-11-07 10:02:12 +01:00
Jonathan Jenne
dc4955db17 Only process active articles 2023-11-07 10:02:04 +01:00
Jonathan Jenne
34c8ecbee5 Fix logging in DocumentLoader 2023-11-07 10:01:22 +01:00
Jonathan Jenne
c1fa500f36 Improve Logging for frmConfig 2023-11-07 10:00:47 +01:00
Jonathan Jenne
f67368c1d9 Version 1.4.3.0 2023-10-25 16:08:17 +02:00
Jonathan Jenne
a5ae2118b3 Fix Language Module deprecation, Fix updated Tables, Fix missing null check for Config form 2023-10-25 16:07:57 +02:00
Jonathan Jenne
0fe344eefb Version 1.4.2.0 2023-10-04 14:13:01 +02:00
Jonathan Jenne
a68697a9e2 Disable export button while exporting 2023-10-04 14:12:39 +02:00
Jonathan Jenne
7cd4aa80cd Fix version 2023-09-14 08:41:52 +02:00
Jonathan Jenne
47e7de3c69 Version 1.4.1.0 2023-09-14 08:41:22 +02:00
Jonathan Jenne
77e760f9b4 Update Modules 2023-09-13 16:13:10 +02:00
Jonathan Jenne
7b3a36336a Version 1.4.0.0 2023-06-26 11:29:26 +02:00
Jonathan Jenne
68e4c59e63 Add support for multiple functions per field, add ADDRESS function 2023-06-26 11:27:51 +02:00
Jonathan Jenne
7846e660b9 Set lookupMandator to disabled on first start 2023-06-05 09:47:05 +02:00
Jonathan Jenne
dddb1dc53a Add error when price calculation was not successful 2023-05-24 15:16:10 +02:00
Jonathan Jenne
47407ac79a Version 1.3.9.9: Disable mandator before files are loaded 2023-05-24 13:59:14 +02:00
Jonathan Jenne
22bb9b14a1 Version 1.3.9.8 2023-03-27 10:45:48 +02:00
Jonathan Jenne
90029ab0f2 Handle same element occurring twice in a node, add warning 2023-03-27 10:45:07 +02:00
Jonathan Jenne
0eb8eaad2d Version 1.3.9.7 2022-11-29 10:47:00 +01:00
Jonathan Jenne
9094f8abe8 Update NLog to Version 5 2022-11-29 10:46:36 +01:00
Jonathan Jenne
7c0ccb7184 Version 1.3.9.6 2022-10-10 11:45:48 +02:00
Jonathan Jenne
2da202a2a7 Improve logging 2022-10-10 11:45:25 +02:00
Jonathan Jenne
16ace2c242 Show last modified date for templates 2022-10-10 11:45:08 +02:00
Jonathan Jenne
8a1bb6911f Version 1.3.9.5 2022-10-10 09:35:51 +02:00
Jonathan Jenne
a63bf73ca6 Fix dependencies, improve logging 2022-10-10 09:35:28 +02:00
Jonathan Jenne
6325fd7e68 Version 1.3.9.4 2022-09-05 11:28:41 +02:00
Jonathan Jenne
371305fb41 fix column names in config 2022-09-05 11:28:19 +02:00
Jonathan Jenne
608b077671 setup fix 2022-09-05 11:28:04 +02:00
Jonathan Jenne
34bc0004d2 Version 1.3.9.3 2022-07-04 12:55:38 +02:00
Jonathan Jenne
7363a8036e Remove backup project files 2022-07-04 12:55:31 +02:00
Jonathan Jenne
73bc1517f3 Add logging for ApplyItemFiltersForExport, fix xpath bug 2022-07-04 12:54:37 +02:00
Jonathan Jenne
dc14c80d59 Version 1.3.9.2 2022-07-04 11:50:05 +02:00
Jonathan Jenne
916e12cae7 Fix EAN, only change xml if a valid value was found 2022-07-04 11:49:37 +02:00
Jonathan Jenne
05dab8d045 Version 1.3.9.1 2022-07-04 09:13:05 +02:00
Jonathan Jenne
f0a340f742 Add configuration to autoload data on form open 2022-07-04 09:10:38 +02:00
Jonathan Jenne
a0217d0582 Version 1.3.9 2022-07-01 11:37:38 +02:00
Jonathan Jenne
fe4038f1c8 Add Filters, Fix Column Names, Improve Config 2022-07-01 11:37:11 +02:00
Jonathan Jenne
10565fb1da WIP: Filters 2022-06-28 16:25:39 +02:00
Jonathan Jenne
42b1ca72a6 Disable Input Directory for export 2022-06-28 15:55:29 +02:00
Jonathan Jenne
616e35f885 Version 1.3.8 2022-06-20 15:03:30 +02:00
Jonathan Jenne
adad5501f3 Consolidate parameter format and logic 2022-06-20 15:00:49 +02:00
Jonathan Jenne
b3140c48c5 Version 1.3.7 2022-06-10 11:49:01 +02:00
Jonathan Jenne
a8ca303f5e Support import without printing documents 2022-06-10 11:48:41 +02:00
Jonathan Jenne
5f335b4fee Version 1.3.6 2022-06-03 15:22:53 +02:00
Jonathan Jenne
beb0ee8ae5 simplify getdocumentfromdatarow 2022-05-25 10:45:54 +02:00
Jonathan Jenne
143823aae2 First attempt at fixing documenttype dependent export status 2022-05-24 16:10:34 +02:00
Jonathan Jenne
b460618548 Version 1.3.5 2022-05-13 15:18:00 +02:00
Jonathan Jenne
0258560221 show all errors in import grids 2022-05-13 15:16:52 +02:00
Jonathan Jenne
dc657c32a5 fix bug in Runningnumber versioning, improve handling of optional fields with functions 2022-05-13 15:03:25 +02:00
Jonathan Jenne
e168c65ca9 Version 1.3.4 2022-05-13 13:54:46 +02:00
Jonathan Jenne
bc8289e1b7 Improve logging 2022-05-13 13:54:24 +02:00
Jonathan Jenne
cd1cdfe19a add clipboard handler for all grids 2022-05-13 13:54:11 +02:00
Jonathan Jenne
ddaacfe75c disable NOCOUNT after executing pricedure 2022-05-13 13:53:18 +02:00
Jonathan Jenne
a5c2b93bfe Version 1.3.3 2022-05-12 15:28:56 +02:00
Jonathan Jenne
5dc851be7d Fix loading/mandator selection 2022-05-12 15:28:38 +02:00
Jonathan Jenne
e4345f3b76 Autoload template, ask for reload on selecting mandator 2022-05-12 13:03:31 +02:00
Jonathan Jenne
46d3dfbd47 Logging 2022-05-05 16:35:22 +02:00
Jonathan Jenne
f540c1dc17 Version 1.3.1.0 2022-05-05 10:32:02 +02:00
Jonathan Jenne
63527561ea Update execution of price function 2022-05-05 10:30:48 +02:00
Jonathan Jenne
2894d398d0 Version 1.3.0.0 2022-05-03 16:25:33 +02:00
Jonathan Jenne
8743f0c4b1 Filter out inactive accounts and document kinds 2022-05-03 15:59:18 +02:00
Jonathan Jenne
8e02ed7159 Rename TemplateConfigItem to FieldConfig 2022-05-03 15:38:35 +02:00
Jonathan Jenne
5accfbe002 Add PreferExternalValue to control which value will be the final value 2022-05-03 15:32:35 +02:00
Jonathan Jenne
5fe4079028 Execute SQL function when loading document 2022-05-03 12:29:08 +02:00
Jonathan Jenne
623e1717d6 clean up 2022-04-27 10:48:33 +02:00
Jonathan Jenne
fa4ac39074 Rework Patterns to allow for row based and final sql replacement when importing 2022-04-26 16:19:17 +02:00
Jonathan Jenne
371c8e27cc Small config form improvements 2022-04-26 14:18:08 +02:00
Jonathan Jenne
c33770dd9e Version 1.2.9.4 2022-04-26 12:02:40 +02:00
Jonathan Jenne
3e41502766 Improve Error handling across the board 2022-04-26 12:02:00 +02:00
Jonathan Jenne
13af72dee5 Add placeholder for Report Filename 2022-04-25 10:41:13 +02:00
Jonathan Jenne
69f4c640a8 clean up 2022-04-22 16:22:22 +02:00
Jonathan Jenne
5ee739dae8 Skip inactive articles when looking up EAN 2022-04-22 16:19:11 +02:00
Jonathan Jenne
866e31f37a Version 1.2.9.3 2022-04-21 16:40:33 +02:00
Jonathan Jenne
88f844d516 Sort by document number 2022-04-21 16:40:27 +02:00
Jonathan Jenne
edcdf770b7 Fix missing document numbers 2022-04-21 16:40:12 +02:00
Jonathan Jenne
14ac6875c5 Version 1.2.9.2 2022-04-21 15:54:58 +02:00
Jonathan Jenne
c74b91713d Fix unhandled exception when GetDocuments query fails 2022-04-21 15:52:49 +02:00
Jonathan Jenne
8dba67d3e1 Add some code for future formatting of values 2022-04-21 15:52:19 +02:00
Jonathan Jenne
ad671443b9 Show Message when exporting report by hand 2022-04-21 15:51:13 +02:00
Jonathan Jenne
3623138fd1 Tweak Report 2022-04-21 15:50:48 +02:00
Jonathan Jenne
85318a3e81 Better Logging and Error Handling 2022-04-21 15:50:30 +02:00
Jonathan Jenne
31e0835914 Improve filtering for document numbers 2022-04-20 15:18:31 +02:00
Jonathan Jenne
095838490f Version 1.2.9.1 2022-04-20 14:03:27 +02:00
Jonathan Jenne
1c3d5dd543 only mark fields with missing account as error if required, re-add selected field for checkboxes in file list, make automatic price calculation configurable 2022-04-20 14:03:04 +02:00
Jonathan Jenne
17d5f5ca1b Version 1.2.9.0 2022-04-20 13:00:47 +02:00
Jonathan Jenne
f87b1018de Better colors for file grid, small tweaks 2022-04-20 11:46:14 +02:00
Jonathan Jenne
1bef72d65c Show Errors, Make grids usable when no mandator is selected, move completed files also when reloading 2022-04-19 15:33:44 +02:00
Jonathan Jenne
9be55f3709 Version 1.2.8.0 2022-04-08 13:33:37 +02:00
Jonathan Jenne
51912b36c2 Add virtual property to field value, improve ui when loading files, improve initial loading 2022-04-08 13:17:46 +02:00
Jonathan Jenne
623f75d0e5 Increase size of WaitForm 2022-04-08 13:14:12 +02:00
Jonathan Jenne
aedfa5f0d8 Set XmlEditor Font to Consolas 2022-04-08 13:14:00 +02:00
Jonathan Jenne
aff92e2b34 Add packing units, calculate price according to packing units 2022-04-08 10:28:46 +02:00
Jonathan Jenne
648666ef8c Fix missing call to LoadWinlineData 2022-04-08 10:28:03 +02:00
Jonathan Jenne
8180c65ccd Fix a bug where virtual columns were created from other tables 2022-04-08 10:27:17 +02:00
Jonathan Jenne
b6801ab486 Version 1.2.7.5 2022-04-06 16:29:59 +02:00
Jonathan Jenne
8b6821adde Rename Shared to Common 2022-04-06 14:55:15 +02:00
Jonathan Jenne
54ba722ecb Add Setup Project 2022-04-06 14:54:57 +02:00
Jonathan Jenne
122aec02dd Version 1.2.7.4 2022-03-31 14:44:03 +02:00
Jonathan Jenne
15cb38d709 Fix config annoyance when saving 2022-03-31 14:43:42 +02:00
Jonathan Jenne
37cfa4a568 Version 1.2.7.3 2022-03-31 14:42:14 +02:00
Jonathan Jenne
1d6d2d2f2c fix saving óf config 2022-03-31 14:42:03 +02:00
Jonathan Jenne
374eb57268 Add Const MANDATORDB, Fix ui, Add Log buttons 2022-03-31 14:30:16 +02:00
Jonathan Jenne
9df22e098a Version 1.2.7.1 2022-03-31 13:02:27 +02:00
Jonathan Jenne
5b057eeb66 Fix Config crash 2022-03-31 13:02:09 +02:00
Jonathan Jenne
6d7c314381 Version 1.2.7.0 2022-03-31 12:03:33 +02:00
Jonathan Jenne
147f72b8a3 Improve config screen, add waiting days 2022-03-31 11:57:54 +02:00
Jonathan Jenne
f289a1d34c Add year combobox, fix filenames 2022-03-22 16:27:12 +01:00
Jonathan Jenne
ce78dea8cb Add FIELD Function, fix virtual columns 2022-03-22 13:58:11 +01:00
Jonathan Jenne
efd2aeb775 Start implementing FIELD function 2022-03-16 16:27:29 +01:00
Jonathan Jenne
b941416de4 fix Mandator being set after applying functions that rely on it 2022-03-16 15:18:55 +01:00
Jonathan Jenne
6526eb29b1 Rename Views 2022-03-16 13:50:57 +01:00
Jonathan Jenne
7ae712208b Rename TBEDI_XML_TEMPLATES to TBMT_TEMPLATES 2022-03-16 13:45:18 +01:00
Jonathan Jenne
3ab39d7486 Rename TBEDI_XML_TEMPLATE_ITEMS to TBMT_TEMPLATE_ITEMS 2022-03-16 13:44:45 +01:00
Jonathan Jenne
7eaddab5f1 Rename TBEDI_XML_TABLES to TBMT_TABLES 2022-03-16 13:44:10 +01:00
Jonathan Jenne
4db6f5f28b Rename TBEDI_XML_MAPPING_ENTITY to TBMT_MAPPING_ENTITIES 2022-03-16 13:43:43 +01:00
Jonathan Jenne
20a339f50a Rename TBEDI_XML_MAPPING_CONFIG to TBMT_MAPPING_CONFIG 2022-03-16 13:43:02 +01:00
Jonathan Jenne
0f244262f0 Rename TBEDI_XML_MANDATORS to TBMT_MANDATORS 2022-03-16 13:42:03 +01:00
Jonathan Jenne
13b66bc6b9 Rename TBEDI_XML_FUNCTIONS to TBMT_FUNCTIONS 2022-03-16 13:41:21 +01:00
Jonathan Jenne
5dc8d9f50b Rename TBEDI_XML_CONFIG To TBMT_CONFIG 2022-03-16 13:40:33 +01:00
Jonathan Jenne
5c30528a83 clean up 2022-03-16 12:18:23 +01:00
Jonathan Jenne
4c1a3a9220 improve function + params handling 2022-03-16 12:17:54 +01:00
Jonathan Jenne
e3c2e100bb implement new filename scheme for xml files 2022-03-16 12:16:54 +01:00
Jonathan Jenne
74a039862f implement searching for alternative field for accounts 2022-03-16 12:16:29 +01:00
Jonathan Jenne
f60c299f3c Improve Exported Constraint, Update call of price function 2022-03-16 12:07:03 +01:00
Jonathan Jenne
80e40fbc23 Show Template name in Report 2022-03-16 12:04:45 +01:00
Jonathan Jenne
18cc418fba Version 1.2.5.0 2022-03-04 10:50:20 +01:00
Jonathan Jenne
c1cce9101b first pass of price calculation, making document loader async 2022-03-04 10:49:13 +01:00
Jonathan Jenne
c11cba9cf3 Fix loading documents for export by document type 2022-03-04 10:48:43 +01:00
Jonathan Jenne
7f817ffce1 add button for Price calculation 2022-02-28 11:59:10 +01:00
Jonathan Jenne
f80ea96f8a Version 1.2.4.0 2022-02-28 11:58:13 +01:00
Jonathan Jenne
213bcef732 Fix DocumentTypes for Exports, Prepare Price calculation, load template parameters 2022-02-28 11:58:01 +01:00
Jonathan Jenne
2e7b0bef8a WIP Price Calculation 2022-02-10 16:59:24 +01:00
Jonathan Jenne
1aec033282 Correct filenames for output xml files, add template name 2022-02-10 12:20:01 +01:00
Jonathan Jenne
96c90c570e Version 1.2.3.0 2022-02-03 16:22:42 +01:00
Jonathan Jenne
8ee955f6f2 Add Edit Row Button, Transfer multiple files at once, F5 for Row Editor, Timeout for HTTP Client of 60 seconds 2022-02-03 16:22:20 +01:00
Jonathan Jenne
2e03e1b1f3 Version 1.2.2.0 2022-01-28 16:18:26 +01:00
Jonathan Jenne
9b3436686f Reload after export, Show and filter by Document Kind, Fix crash when reloading settings, change filename pattern for export files 2022-01-28 16:17:15 +01:00
Jonathan Jenne
f224c73a2e Version 1.2.1 2022-01-28 13:00:16 +01:00
Jonathan Jenne
5a8440ff05 Allow delete of config, add F5 for loading data in windows 2022-01-28 12:05:41 +01:00
Jonathan Jenne
6d6dd725d9 Improve frmConfig, Fix missing loop in ApplyItemFunctionsForExport, Add support for SQL function 2022-01-27 16:17:18 +01:00
Jonathan Jenne
ad8ea75db4 Constraints for search export documents 2022-01-27 14:28:40 +01:00
Jonathan Jenne
85fab072bb Version 1.2.0.0 2022-01-24 11:29:55 +01:00
Jonathan Jenne
82bd76d669 Show empty string for DateTime.MinValue in Export form 2022-01-24 10:46:16 +01:00
Jonathan Jenne
706edf8026 Export Columns in Export Grid 2022-01-21 15:03:51 +01:00
Jonathan Jenne
c315640d7d Finish FinalSQL, GLN/EAN for export, double click to open template, exporting multiple documents 2022-01-20 16:34:52 +01:00
Jonathan Jenne
ff7c8c63ea Version 1.1.2 2021-12-23 16:02:53 +01:00
Jonathan Jenne
4859406fe3 Update Report, Fix Paths issues, Small Tweaks, Work on Exports 2021-12-23 15:58:45 +01:00
Jonathan Jenne
79cfec3173 directories per template, export tweaks 2021-12-22 15:38:05 +01:00
Jonathan Jenne
9a3761acc0 Clean imported documents, first pass of Import form 2021-12-20 16:39:23 +01:00
Jonathan Jenne
3b0474e713 Mark documents as imported and clean them up when closing app, update to DevExpress 21, small tweaks 2021-12-20 11:57:41 +01:00
Jonathan Jenne
51c053769e Improve Main form performance 2021-12-06 10:23:37 +01:00
Jonathan Jenne
52ac886c1f Add ReportGenerator class 2021-12-06 10:23:13 +01:00
Jonathan Jenne
8ab2842594 Improve Error coloring and conditions 2021-12-03 11:44:25 +01:00
Jonathan Jenne
436293cbb7 Export report to Directory 2021-11-30 12:17:26 +01:00
Jonathan Jenne
ad7e6a9c84 Activate Debug Log 2021-11-26 16:09:42 +01:00
Jonathan Jenne
97f9b8ca59 Update Database 2021-11-26 16:09:15 +01:00
Jonathan Jenne
2a1a119ff2 Report, Dynamic SQL 2021-11-23 16:26:11 +01:00
Jonathan Jenne
cdff23b646 Migrate configuration from UserConfig to database 2021-11-23 11:28:50 +01:00
Jonathan Jenne
ac50cf661b First pass of new mandator selection 2021-11-19 16:23:18 +01:00
Jonathan Jenne
dec45ef493 Clean up, add DataRow Extension 2021-11-19 14:23:17 +01:00
Jonathan Jenne
cc81a77f05 Rename Schema to Template , Clean up obsolete files 2021-11-19 14:16:07 +01:00
Jonathan Jenne
ee23cdd7e8 WIP 2021-11-19 13:53:38 +01:00
Jonathan Jenne
673a507d04 Add Database Triggers, Added/Changed columns 2021-11-19 11:38:45 +01:00
Jonathan Jenne
c1b6e2ed4d small tweaks 2021-11-18 15:35:02 +01:00
Jonathan Jenne
0356699473 Add Template Selection, load templates from Database 2021-11-18 14:56:29 +01:00
Jonathan Jenne
15b553efc3 Clean up 2021-11-18 13:31:23 +01:00
Jonathan Jenne
3760453d82 Improve validation 2021-11-18 13:31:14 +01:00
Jonathan Jenne
3b07002c28 Generate script from MSSMS 2021-11-18 13:30:53 +01:00
Jonathan Jenne
6693ac770e Easier column configuration 2021-11-18 13:28:33 +01:00
Jonathan Jenne
1366343cdf Improve Validation, Report, Transfer document with selected mandator 2021-11-17 16:25:00 +01:00
Jonathan Jenne
47c22e9361 Validation and stuff 2021-11-16 16:16:46 +01:00
Jonathan Jenne
964f2ee60c First Version with Template Config from Database 2021-11-16 15:00:58 +01:00
Jonathan Jenne
510a08c1ed Version 1.1.1.0 2021-11-15 11:00:07 +01:00
Jonathan Jenne
e764c310ea Improve Loading report, add TODOs 2021-11-15 10:59:45 +01:00
Jonathan Jenne
29960916a0 Version 1.1.0.0 2021-11-12 16:43:32 +01:00
Jonathan Jenne
cc49d821f3 WIP 2021-11-12 16:43:16 +01:00
Jonathan Jenne
6bed0b3024 WIP 2021-11-11 16:31:08 +01:00
Jonathan Jenne
8dcd06154d Move DocumentRow into Documents Namespace 2021-11-11 10:55:50 +01:00
Jonathan Jenne
e732ce7099 WIP 2021-11-10 16:53:04 +01:00
Jonathan Jenne
1d74f2909f Rename README to markdown 2021-11-04 14:31:56 +01:00
Jonathan Jenne
85c8b07b68 Version 1.0.0.6 2021-11-04 11:50:05 +01:00
Jonathan Jenne
19e2b2f62b use constant for GUID column 2021-11-04 11:49:49 +01:00
Jonathan Jenne
437569919f Make it possible to delete rows 2021-11-04 11:43:26 +01:00
Jonathan Jenne
c6622ccbbc Version 1.0.0.5 2021-11-01 13:14:48 +01:00
Jonathan Jenne
8692dc595e add progress box for webservice calls 2021-11-01 12:37:48 +01:00
Jonathan Jenne
63d61c0e22 set Layout of Xml Editor to simple 2021-11-01 11:25:39 +01:00
Jonathan Jenne
a0bf297dfd Version 1.0.0.4 2021-11-01 10:47:31 +01:00
Jonathan Jenne
98c858e79d clean up 2021-11-01 10:47:16 +01:00
Jonathan Jenne
00165025f6 Trim values from user on save 2021-11-01 10:47:09 +01:00
Jonathan Jenne
f71b53b5c3 Add ConnectionString Attribute to connection string in config 2021-11-01 10:46:55 +01:00
Jonathan Jenne
0562d9c37d Use FormHelper to show error messages 2021-11-01 10:46:34 +01:00
Jonathan Jenne
b157fc0c2b Trim values from Xml 2021-11-01 10:45:12 +01:00
Jonathan Jenne
c3adecf210 Move shared strings to frmShared.resx 2021-11-01 10:44:57 +01:00
Jonathan Jenne
4461d03b8d Version 1.0.0.3 2021-10-29 16:12:38 +02:00
Jonathan Jenne
61286f16ef First bug fixes 2021-10-29 16:12:10 +02:00
Jonathan Jenne
880a345e06 Fix directory names 2021-10-29 10:50:48 +02:00
Jonathan Jenne
1035a0fb1f Change Name to MultiTool 2021-10-29 10:37:04 +02:00
Jonathan Jenne
f00e332737 Version 1.0.0.2 2021-10-28 15:51:44 +02:00
Jonathan Jenne
0d9f84cc24 First Version 2021-10-28 15:46:10 +02:00
Jonathan Jenne
0b83ddcc4d WIP 2021-10-28 14:04:56 +02:00
Jonathan Jenne
3fac097f46 WIP 2021-10-27 16:38:19 +02:00
Jonathan Jenne
a519b93f47 WIP 2021-10-27 10:32:04 +02:00
Jonathan Jenne
8dfc659ef8 WIP 2021-10-21 16:19:35 +02:00
Jonathan Jenne
5c58e05204 WIP 2021-10-18 14:25:51 +02:00
236 changed files with 26404 additions and 6642 deletions

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>

View File

@@ -1,41 +0,0 @@
Public Class Exceptions
Public MustInherit Class DocumentShowException
Inherits ApplicationException
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
Public Class WebServiceException
Inherits ApplicationException
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
Public Class NoMandatorException
Inherits DocumentShowException
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
Public Class MultipleAccountsException
Inherits DocumentShowException
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
Public Class NoAccountException
Inherits DocumentShowException
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
End Class

View File

@@ -1,62 +0,0 @@
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
Imports DigitalData.Modules.Logging
Imports ImporterShared
Public Class GridLoader
Inherits BaseClass
Public Sub New(pLogConfig As LogConfig)
MyBase.New(pLogConfig, pLogConfig.GetLogger())
End Sub
Public Function GetGridFromElement(pTable As Schemas.Schema.Table) As GridControl
Dim oGrid As New GridControl With {
.Dock = DockStyle.Fill,
.Name = pTable.Name
}
oGrid.ForceInitialize()
oGrid.MainView.PopulateColumns()
Dim oView As GridView = oGrid.DefaultView
oView.OptionsBehavior.ReadOnly = True
oView.OptionsBehavior.Editable = False
For Each oCol In pTable.Columns
Dim oColumn = New Columns.GridColumn With {
.Name = oCol.Name,
.Caption = oCol.Name,
.FieldName = oCol.Name,
.UnboundType = GetColumnType(oCol),
.VisibleIndex = 0
}
oView.Columns.Add(oColumn)
Next
Return oGrid
End Function
Private Function GetColumnType(pColumn As Schemas.Schema.Column)
Select Case pColumn.DataType
Case Schemas.Schema.ColumnType.Boolean
Return DevExpress.Data.UnboundColumnType.Boolean
Case Schemas.Schema.ColumnType.Date
Return DevExpress.Data.UnboundColumnType.DateTime
Case Schemas.Schema.ColumnType.Integer
Return DevExpress.Data.UnboundColumnType.Integer
Case Schemas.Schema.ColumnType.Decimal
Return DevExpress.Data.UnboundColumnType.Decimal
Case Else
Return DevExpress.Data.UnboundColumnType.String
End Select
End Function
End Class

View File

@@ -1,289 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{7AAEC958-955D-4F77-964C-38658684E424}</ProjectGuid>
<OutputType>WinExe</OutputType>
<StartupObject>ImporterForm.My.MyApplication</StartupObject>
<RootNamespace>ImporterForm</RootNamespace>
<AssemblyName>ImporterForm</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>WindowsForms</MyType>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>ImporterForm.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>ImporterForm.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="AutoMapper, Version=10.0.0.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.10.1.1\lib\net461\AutoMapper.dll</HintPath>
</Reference>
<Reference Include="DevExpress.Charts.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Data.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.DataAccess.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Images.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Office.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Pdf.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.PivotGrid.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Printing.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.RichEdit.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.RichEdit.v19.2.Export, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Sparkline.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.Utils.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\DevExpress 19.2\Components\Bin\Framework\DevExpress.Utils.v19.2.dll</HintPath>
</Reference>
<Reference Include="DevExpress.Utils.v19.2.UI, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Xpo.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\DevExpress 19.2\Components\Bin\Framework\DevExpress.XtraBars.v19.2.dll</HintPath>
</Reference>
<Reference Include="DevExpress.XtraCharts.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\DevExpress 19.2\Components\Bin\Framework\DevExpress.XtraEditors.v19.2.dll</HintPath>
</Reference>
<Reference Include="DevExpress.XtraGauges.v19.2.Core, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\DevExpress 19.2\Components\Bin\Framework\DevExpress.XtraGrid.v19.2.dll</HintPath>
</Reference>
<Reference Include="DevExpress.XtraLayout.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>D:\ProgramFiles\DevExpress 19.2\Components\Bin\Framework\DevExpress.XtraLayout.v19.2.dll</HintPath>
</Reference>
<Reference Include="DevExpress.XtraPrinting.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraReports.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraReports.v19.2.Extensions, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraRichEdit.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraTreeList.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraVerticalGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DigitalData.Controls.SQLConfig">
<HintPath>..\..\DDMonorepo\SQLConfig\bin\Debug\DigitalData.Controls.SQLConfig.dll</HintPath>
</Reference>
<Reference Include="DigitalData.GUIs.Common">
<HintPath>..\..\DDMonorepo\GUIs.Common\bin\Debug\DigitalData.GUIs.Common.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Config">
<HintPath>..\..\DDMonorepo\Modules.Config\bin\Debug\DigitalData.Modules.Config.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Database">
<HintPath>..\..\DDMonorepo\Modules.Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Filesystem, Version=1.0.7.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\DDMonorepo\Modules.Filesystem\bin\Debug\DigitalData.Modules.Filesystem.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Language, Version=1.3.2.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\DDMonorepo\Modules.Language\bin\Release\DigitalData.Modules.Language.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Logging">
<HintPath>..\..\DDMonorepo\Modules.Logging\bin\Release\DigitalData.Modules.Logging.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.10\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.DataAnnotations" />
<Reference Include="System.Configuration" />
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Drawing" />
<Import Include="System.Diagnostics" />
<Import Include="System.Windows.Forms" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="Exceptions.vb" />
<Compile Include="frmImportMain.Designer.vb">
<DependentUpon>frmImportMain.vb</DependentUpon>
</Compile>
<Compile Include="frmImportMain.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmImportMain_old.Designer.vb">
<DependentUpon>frmImportMain_old.vb</DependentUpon>
</Compile>
<Compile Include="frmImportMain_old.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmMain.Designer.vb">
<DependentUpon>frmMain.vb</DependentUpon>
</Compile>
<Compile Include="frmMain.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmMandatorSelection.Designer.vb">
<DependentUpon>frmMandatorSelection.vb</DependentUpon>
</Compile>
<Compile Include="frmMandatorSelection.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="frmRowEditor.Designer.vb">
<DependentUpon>frmRowEditor.vb</DependentUpon>
</Compile>
<Compile Include="frmRowEditor.vb">
<SubType>Form</SubType>
</Compile>
<Compile Include="GridLoader.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
<DesignTime>True</DesignTime>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Positions\Position.vb" />
<Compile Include="Positions\PositionColumns.vb" />
<Compile Include="Positions\PositionData.vb" />
<Compile Include="Positions\PositionGrid.vb" />
<Compile Include="Reports\OrderReport.Designer.vb">
<DependentUpon>OrderReport.vb</DependentUpon>
</Compile>
<Compile Include="Reports\OrderReport.vb">
<SubType>Component</SubType>
</Compile>
<Compile Include="frmWaitForm.Designer.vb">
<DependentUpon>frmWaitForm.vb</DependentUpon>
</Compile>
<Compile Include="frmWaitForm.vb">
<SubType>Form</SubType>
</Compile>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="frmImportMain.resx">
<DependentUpon>frmImportMain.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmImportMain_old.resx">
<DependentUpon>frmImportMain_old.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmMain.resx">
<DependentUpon>frmMain.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmMandatorSelection.resx">
<DependentUpon>frmMandatorSelection.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmRowEditor.resx">
<DependentUpon>frmRowEditor.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="My Project\licenses.licx" />
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
<EmbeddedResource Include="Reports\OrderReport.resx">
<DependentUpon>OrderReport.vb</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="frmWaitForm.resx">
<DependentUpon>frmWaitForm.vb</DependentUpon>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="App.config" />
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<Content Include="README.txt" />
<None Include="Resources\open21.svg" />
<None Include="Resources\paymentrefund.svg" />
<None Include="Resources\open2.svg" />
<None Include="Resources\open.svg" />
<None Include="Resources\pagesetup.svg" />
<None Include="Resources\showallfieldcodes.svg" />
<None Include="Resources\bo_validation.svg" />
<None Include="Resources\itemtypechecked.svg" />
<None Include="Resources\deletetablerows.svg" />
<None Include="Resources\tableproperties.svg" />
<None Include="Resources\tilelabels.svg" />
<None Include="Resources\wraptext.svg" />
<None Include="Resources\singlepageview.svg" />
<None Include="Resources\preview.svg" />
</ItemGroup>
<ItemGroup>
<None Include="Resources\import.svg" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\ImporterShared\ImporterShared.vbproj">
<Project>{dd1ac3b9-7595-4d3c-b9bb-97c46a480fa0}</Project>
<Name>ImporterShared</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@@ -1,213 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary>
''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ImporterForm.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property bo_validation() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("bo_validation", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property deletetablerows() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("deletetablerows", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property import() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("import", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property itemtypechecked() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("itemtypechecked", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property open() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("open", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property open2() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("open2", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property open21() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("open21", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property pagesetup() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("pagesetup", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property paymentrefund() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("paymentrefund", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property preview() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("preview", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property showallfieldcodes() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("showallfieldcodes", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property singlepageview() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("singlepageview", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property tableproperties() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("tableproperties", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property tilelabels() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("tilelabels", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Ressource vom Typ DevExpress.Utils.Svg.SvgImage.
'''</summary>
Friend ReadOnly Property wraptext() As DevExpress.Utils.Svg.SvgImage
Get
Dim obj As Object = ResourceManager.GetObject("wraptext", resourceCulture)
Return CType(obj,DevExpress.Utils.Svg.SvgImage)
End Get
End Property
End Module
End Namespace

View File

@@ -1,16 +0,0 @@
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.SearchLookUpEdit, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.CheckEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraReports.UserDesigner.XRDesignDockManager, DevExpress.XtraReports.v19.2.Extensions, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v20.1, Version=20.1.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraRichEdit.RichEditControl, DevExpress.XtraRichEdit.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraReports.UI.XtraReport, DevExpress.XtraReports.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.DateEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.ComboBoxEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraReports.UserDesigner.XRDesignBarManager, DevExpress.XtraReports.v19.2.Extensions, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a

View File

@@ -1,16 +0,0 @@
Namespace Positions
Public Class Position
Public Property RowNumber As Integer
Public Property EuropeanArticleNumber As String
Public Property ArticleNumber As String
Public Property ArticleNumberVendor As String
Public Property ArticleDescription As String
Public Property EDIPrice As Double
Public Property WinLinePrice As Double
Public Property Price As Double
Public Property Amount As Double
Public Property ReplacementArticleNumber As String
Public Property UseReplacementNumber As Boolean = False
End Class
End Namespace

View File

@@ -1,76 +0,0 @@
Imports DevExpress.XtraGrid.Columns
Namespace Positions
Public Class PositionColumns
Public Shared Property ColumnRowNumber As New GridColumn With {
.FieldName = "RowNumber",
.Caption = "Nr.",
.VisibleIndex = 0,
.MaxWidth = 30
}
Public Shared Property ColumnArticleNumber As New GridColumn With {
.FieldName = "ArticleNumber",
.Caption = "Artikelnummer",
.VisibleIndex = 1
}
Public Shared Property ColumnEuropeanArticleNumber As New GridColumn With {
.FieldName = "EuropeanArticleNumber",
.Caption = "EAN",
.VisibleIndex = 2
}
Public Shared Property ColumnReplacementArticleNumber As New GridColumn With {
.FieldName = "ReplacementArticleNumber",
.Caption = "Ersatzartikel",
.VisibleIndex = 3
}
Public Shared Property ColumnArticleNumberVendor As New GridColumn With {
.FieldName = "ArticleNumberVendor",
.Caption = "Artikel Lieferant",
.VisibleIndex = 4
}
Public Shared Property ColumnArticleDescription As New GridColumn With {
.FieldName = "ArticleDescription",
.Caption = "Artikel Beschreibung",
.VisibleIndex = 5
}
Public Shared Property ColumnAmount As New GridColumn With {
.FieldName = "Amount",
.Caption = "Menge",
.VisibleIndex = 6
}
Public Shared Property ColumnEDIPrice As New GridColumn With {
.FieldName = "EDIPrice",
.Caption = "Einzelpreis EDI",
.VisibleIndex = 7
}
Public Shared Property ColumnWinLinePrice As New GridColumn With {
.FieldName = "WinLinePrice",
.Caption = "Einzelpreis WinLine",
.VisibleIndex = 8
}
Public Shared Property ColumnPrice As New GridColumn With {
.FieldName = "Price",
.Caption = "Einzelpreis",
.VisibleIndex = 9
}
''' <summary>
''' Columns that can be changed in the positions grid
''' </summary>
Public Shared Property WritableColumns As New List(Of GridColumn) From {
ColumnPrice
}
Public Shared Property AllColumns As New List(Of GridColumn) From {
ColumnRowNumber,
ColumnArticleNumber,
ColumnReplacementArticleNumber,
ColumnArticleNumberVendor,
ColumnEuropeanArticleNumber,
ColumnArticleDescription,
ColumnEDIPrice,
ColumnWinLinePrice,
ColumnPrice
}
End Class
End Namespace

View File

@@ -1,49 +0,0 @@
Imports DigitalData.Modules.Logging
Imports ImporterForm.Positions
Imports ImporterShared.Winline
Imports ImporterShared.Schemas
Public Class PositionData
Inherits ImporterShared.BaseClass
Private Winline As Data
Public Sub New(pLogConfig As LogConfig, pWinline As Data)
MyBase.New(pLogConfig, pLogConfig.GetLogger())
Winline = pWinline
End Sub
'Public Function Load(pMandator As Mandator, pData As Orders.Input.MESOWebService, pDataOriginal As Orders.Input.MESOWebService) As List(Of Position)
' Dim oPositions = Orders.Helpers.GetOrderPositions(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT026)(pData)
' Dim oPositionsOriginal = Orders.Helpers.GetOrderPositions(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT026)(pDataOriginal)
' Dim oPositionList As New List(Of Position)
' For Each oPosition In oPositions
' Dim oPositionOriginal = oPositionsOriginal.
' Where(Function(p) p.Zeilennummer = oPosition.Zeilennummer).
' SingleOrDefault()
' Dim oReplacementNumber As String = Winline.GetReplacementArticleNumber(oPosition.Artikelnummer, pMandator)
' ' If ArticleNumber is the same as the replacement Number, this Article does not have a replacement Number
' If oReplacementNumber = oPosition.Artikelnummer Then
' oReplacementNumber = Nothing
' End If
' oPositionList.Add(New Position With {
' .ArticleNumber = oPosition.Artikelnummer,
' .RowNumber = oPosition.Zeilennummer,
' .ArticleDescription = oPosition.Bezeichnung,
' .ArticleNumberVendor = oPosition.Lieferantenartikelnummer,
' .EDIPrice = oPosition.Einzelpreis,
' .WinLinePrice = 0,
' .Price = 0,
' .Amount = oPosition.Menge_bestellt,
' .EuropeanArticleNumber = oPositionOriginal.Artikelnummer,
' .ReplacementArticleNumber = oReplacementNumber
' })
' Next
' Return oPositionList
'End Function
End Class

View File

@@ -1,44 +0,0 @@
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraGrid.Views.Grid
Imports ImporterShared.Documents
Imports ImporterForm.Positions
Namespace Positions
Public Class PositionGrid
Public Shared Sub LoadPositionViewAndColumns(pView As GridView, pDocumentType As DocumentType)
Dim oColumns As List(Of GridColumn)
' Create columns list depending on DocumentType
Select Case pDocumentType
Case DocumentType.Order
oColumns = PositionColumns.AllColumns
Case Else
oColumns = New List(Of GridColumn)
End Select
' Reset the grid
pView.GridControl.DataSource = Nothing
pView.GridControl.ForceInitialize()
' Add and adjust columns
pView.Columns.AddRange(oColumns.ToArray())
pView.BestFitColumns()
' Set columns readonly that need it
Dim oReadOnlyColumns = oColumns.
Except(PositionColumns.WritableColumns).
ToList()
For Each oColumn As GridColumn In pView.Columns
If oReadOnlyColumns.Contains(oColumn) Then
oColumn.OptionsColumn.ReadOnly = True
oColumn.OptionsColumn.AllowEdit = False
Else
oColumn.Caption &= " *"
End If
Next
End Sub
End Class
End Namespace

View File

@@ -1,7 +0,0 @@
# README
## Generieren von Classentypen aus einem Schema
```
.\xsd.exe /c /l:VB OrdersSchema.xsd
```

View File

@@ -1,587 +0,0 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Public Class OrderReport
Inherits DevExpress.XtraReports.UI.XtraReport
'XtraReport overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Designer
'It can be modified using the Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.Title = New DevExpress.XtraReports.UI.XRControlStyle()
Me.GroupCaption1 = New DevExpress.XtraReports.UI.XRControlStyle()
Me.GroupData1 = New DevExpress.XtraReports.UI.XRControlStyle()
Me.DetailCaption1 = New DevExpress.XtraReports.UI.XRControlStyle()
Me.DetailData1 = New DevExpress.XtraReports.UI.XRControlStyle()
Me.DetailCaption2 = New DevExpress.XtraReports.UI.XRControlStyle()
Me.DetailData2 = New DevExpress.XtraReports.UI.XRControlStyle()
Me.DetailData3_Odd = New DevExpress.XtraReports.UI.XRControlStyle()
Me.PageInfo = New DevExpress.XtraReports.UI.XRControlStyle()
Me.TopMargin = New DevExpress.XtraReports.UI.TopMarginBand()
Me.BottomMargin = New DevExpress.XtraReports.UI.BottomMarginBand()
Me.pageInfo1 = New DevExpress.XtraReports.UI.XRPageInfo()
Me.pageInfo2 = New DevExpress.XtraReports.UI.XRPageInfo()
Me.ReportHeader = New DevExpress.XtraReports.UI.ReportHeaderBand()
Me.Detail = New DevExpress.XtraReports.UI.DetailBand()
Me.table3 = New DevExpress.XtraReports.UI.XRTable()
Me.tableRow4 = New DevExpress.XtraReports.UI.XRTableRow()
Me.tableCell44 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell46 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell47 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell49 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell50 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell52 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell53 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell54 = New DevExpress.XtraReports.UI.XRTableCell()
Me.table4 = New DevExpress.XtraReports.UI.XRTable()
Me.tableRow5 = New DevExpress.XtraReports.UI.XRTableRow()
Me.tableCell65 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell67 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell68 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell70 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell71 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell73 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell74 = New DevExpress.XtraReports.UI.XRTableCell()
Me.tableCell75 = New DevExpress.XtraReports.UI.XRTableCell()
Me.XrLabel1 = New DevExpress.XtraReports.UI.XRLabel()
Me.Detail1 = New DevExpress.XtraReports.UI.DetailBand()
Me.DetailReport = New DevExpress.XtraReports.UI.DetailReportBand()
Me.XrLabel2 = New DevExpress.XtraReports.UI.XRLabel()
Me.XrLabel3 = New DevExpress.XtraReports.UI.XRLabel()
Me.XrLabel4 = New DevExpress.XtraReports.UI.XRLabel()
Me.XrLabel5 = New DevExpress.XtraReports.UI.XRLabel()
Me.XrLabel6 = New DevExpress.XtraReports.UI.XRLabel()
Me.XrLabel7 = New DevExpress.XtraReports.UI.XRLabel()
Me.XrLabel8 = New DevExpress.XtraReports.UI.XRLabel()
Me.XrLabel9 = New DevExpress.XtraReports.UI.XRLabel()
Me.XrLabel10 = New DevExpress.XtraReports.UI.XRLabel()
Me.XrLabel11 = New DevExpress.XtraReports.UI.XRLabel()
Me.ObjectDataSource1 = New DevExpress.DataAccess.ObjectBinding.ObjectDataSource(Me.components)
Me.XrLabel12 = New DevExpress.XtraReports.UI.XRLabel()
CType(Me.table3, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.table4, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ObjectDataSource1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me, System.ComponentModel.ISupportInitialize).BeginInit()
'
'Title
'
Me.Title.BackColor = System.Drawing.Color.Transparent
Me.Title.BorderColor = System.Drawing.Color.Black
Me.Title.Borders = DevExpress.XtraPrinting.BorderSide.None
Me.Title.BorderWidth = 1.0!
Me.Title.Font = New System.Drawing.Font("Arial", 14.25!)
Me.Title.ForeColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(70, Byte), Integer), CType(CType(80, Byte), Integer))
Me.Title.Name = "Title"
'
'GroupCaption1
'
Me.GroupCaption1.BackColor = System.Drawing.Color.FromArgb(CType(CType(23, Byte), Integer), CType(CType(104, Byte), Integer), CType(CType(196, Byte), Integer))
Me.GroupCaption1.BorderColor = System.Drawing.Color.White
Me.GroupCaption1.Borders = DevExpress.XtraPrinting.BorderSide.Bottom
Me.GroupCaption1.BorderWidth = 2.0!
Me.GroupCaption1.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Bold)
Me.GroupCaption1.ForeColor = System.Drawing.Color.FromArgb(CType(CType(228, Byte), Integer), CType(CType(228, Byte), Integer), CType(CType(228, Byte), Integer))
Me.GroupCaption1.Name = "GroupCaption1"
Me.GroupCaption1.Padding = New DevExpress.XtraPrinting.PaddingInfo(6, 2, 0, 0, 100.0!)
Me.GroupCaption1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft
'
'GroupData1
'
Me.GroupData1.BackColor = System.Drawing.Color.FromArgb(CType(CType(23, Byte), Integer), CType(CType(104, Byte), Integer), CType(CType(196, Byte), Integer))
Me.GroupData1.BorderColor = System.Drawing.Color.White
Me.GroupData1.Borders = DevExpress.XtraPrinting.BorderSide.Bottom
Me.GroupData1.BorderWidth = 2.0!
Me.GroupData1.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Bold)
Me.GroupData1.ForeColor = System.Drawing.Color.White
Me.GroupData1.Name = "GroupData1"
Me.GroupData1.Padding = New DevExpress.XtraPrinting.PaddingInfo(6, 2, 0, 0, 100.0!)
Me.GroupData1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft
'
'DetailCaption1
'
Me.DetailCaption1.BackColor = System.Drawing.Color.FromArgb(CType(CType(23, Byte), Integer), CType(CType(104, Byte), Integer), CType(CType(196, Byte), Integer))
Me.DetailCaption1.BorderColor = System.Drawing.Color.White
Me.DetailCaption1.Borders = DevExpress.XtraPrinting.BorderSide.Left
Me.DetailCaption1.BorderWidth = 2.0!
Me.DetailCaption1.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Bold)
Me.DetailCaption1.ForeColor = System.Drawing.Color.White
Me.DetailCaption1.Name = "DetailCaption1"
Me.DetailCaption1.Padding = New DevExpress.XtraPrinting.PaddingInfo(6, 6, 0, 0, 100.0!)
Me.DetailCaption1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft
'
'DetailData1
'
Me.DetailData1.BorderColor = System.Drawing.Color.Transparent
Me.DetailData1.Borders = DevExpress.XtraPrinting.BorderSide.Left
Me.DetailData1.BorderWidth = 2.0!
Me.DetailData1.Font = New System.Drawing.Font("Arial", 8.25!)
Me.DetailData1.ForeColor = System.Drawing.Color.Black
Me.DetailData1.Name = "DetailData1"
Me.DetailData1.Padding = New DevExpress.XtraPrinting.PaddingInfo(6, 6, 0, 0, 100.0!)
Me.DetailData1.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft
'
'DetailCaption2
'
Me.DetailCaption2.BackColor = System.Drawing.Color.FromArgb(CType(CType(37, Byte), Integer), CType(CType(129, Byte), Integer), CType(CType(216, Byte), Integer))
Me.DetailCaption2.BorderColor = System.Drawing.Color.White
Me.DetailCaption2.Borders = DevExpress.XtraPrinting.BorderSide.Left
Me.DetailCaption2.BorderWidth = 2.0!
Me.DetailCaption2.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Bold)
Me.DetailCaption2.ForeColor = System.Drawing.Color.White
Me.DetailCaption2.Name = "DetailCaption2"
Me.DetailCaption2.Padding = New DevExpress.XtraPrinting.PaddingInfo(6, 6, 0, 0, 100.0!)
Me.DetailCaption2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft
'
'DetailData2
'
Me.DetailData2.BorderColor = System.Drawing.Color.Transparent
Me.DetailData2.Borders = DevExpress.XtraPrinting.BorderSide.Left
Me.DetailData2.BorderWidth = 2.0!
Me.DetailData2.Font = New System.Drawing.Font("Arial", 8.25!)
Me.DetailData2.ForeColor = System.Drawing.Color.Black
Me.DetailData2.Name = "DetailData2"
Me.DetailData2.Padding = New DevExpress.XtraPrinting.PaddingInfo(6, 6, 0, 0, 100.0!)
Me.DetailData2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft
'
'DetailData3_Odd
'
Me.DetailData3_Odd.BackColor = System.Drawing.Color.FromArgb(CType(CType(243, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(248, Byte), Integer))
Me.DetailData3_Odd.BorderColor = System.Drawing.Color.Transparent
Me.DetailData3_Odd.Borders = DevExpress.XtraPrinting.BorderSide.None
Me.DetailData3_Odd.BorderWidth = 1.0!
Me.DetailData3_Odd.Font = New System.Drawing.Font("Arial", 8.25!)
Me.DetailData3_Odd.ForeColor = System.Drawing.Color.Black
Me.DetailData3_Odd.Name = "DetailData3_Odd"
Me.DetailData3_Odd.Padding = New DevExpress.XtraPrinting.PaddingInfo(6, 6, 0, 0, 100.0!)
Me.DetailData3_Odd.TextAlignment = DevExpress.XtraPrinting.TextAlignment.MiddleLeft
'
'PageInfo
'
Me.PageInfo.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Bold)
Me.PageInfo.ForeColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(70, Byte), Integer), CType(CType(80, Byte), Integer))
Me.PageInfo.Name = "PageInfo"
Me.PageInfo.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
'
'TopMargin
'
Me.TopMargin.HeightF = 25.0!
Me.TopMargin.Name = "TopMargin"
'
'BottomMargin
'
Me.BottomMargin.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.pageInfo1, Me.pageInfo2})
Me.BottomMargin.HeightF = 29.0!
Me.BottomMargin.Name = "BottomMargin"
'
'pageInfo1
'
Me.pageInfo1.LocationFloat = New DevExpress.Utils.PointFloat(6.0!, 6.0!)
Me.pageInfo1.Name = "pageInfo1"
Me.pageInfo1.PageInfo = DevExpress.XtraPrinting.PageInfo.DateTime
Me.pageInfo1.SizeF = New System.Drawing.SizeF(513.0!, 23.0!)
Me.pageInfo1.StyleName = "PageInfo"
'
'pageInfo2
'
Me.pageInfo2.LocationFloat = New DevExpress.Utils.PointFloat(531.0!, 6.0!)
Me.pageInfo2.Name = "pageInfo2"
Me.pageInfo2.SizeF = New System.Drawing.SizeF(513.0!, 23.0!)
Me.pageInfo2.StyleName = "PageInfo"
Me.pageInfo2.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight
Me.pageInfo2.TextFormatString = "Seite {0} von {1}"
'
'ReportHeader
'
Me.ReportHeader.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrLabel12, Me.XrLabel11, Me.XrLabel9, Me.XrLabel10, Me.XrLabel8, Me.XrLabel6, Me.XrLabel7, Me.XrLabel5, Me.XrLabel4, Me.XrLabel3, Me.XrLabel2})
Me.ReportHeader.HeightF = 234.2917!
Me.ReportHeader.Name = "ReportHeader"
'
'Detail
'
Me.Detail.HeightF = 0!
Me.Detail.KeepTogether = True
Me.Detail.Name = "Detail"
'
'table3
'
Me.table3.LocationFloat = New DevExpress.Utils.PointFloat(0.00003973643!, 0!)
Me.table3.Name = "table3"
Me.table3.Rows.AddRange(New DevExpress.XtraReports.UI.XRTableRow() {Me.tableRow4})
Me.table3.SizeF = New System.Drawing.SizeF(1050.0!, 28.0!)
'
'tableRow4
'
Me.tableRow4.Cells.AddRange(New DevExpress.XtraReports.UI.XRTableCell() {Me.tableCell44, Me.tableCell46, Me.tableCell47, Me.tableCell49, Me.tableCell50, Me.tableCell52, Me.tableCell53, Me.tableCell54})
Me.tableRow4.Name = "tableRow4"
Me.tableRow4.Weight = 1.0R
'
'tableCell44
'
Me.tableCell44.Name = "tableCell44"
Me.tableCell44.StyleName = "DetailCaption2"
Me.tableCell44.Text = "Zeilennummer"
Me.tableCell44.Weight = 0.04382187252952939R
'
'tableCell46
'
Me.tableCell46.Name = "tableCell46"
Me.tableCell46.StyleName = "DetailCaption2"
Me.tableCell46.Text = "Artikelnummer"
Me.tableCell46.Weight = 0.0450318363734654R
'
'tableCell47
'
Me.tableCell47.Name = "tableCell47"
Me.tableCell47.StyleName = "DetailCaption2"
Me.tableCell47.Text = "Bezeichnung"
Me.tableCell47.Weight = 0.10979868348239258R
'
'tableCell49
'
Me.tableCell49.Name = "tableCell49"
Me.tableCell49.StyleName = "DetailCaption2"
Me.tableCell49.Text = "Lieferantenartikelnummer"
Me.tableCell49.Weight = 0.044113117808847475R
'
'tableCell50
'
Me.tableCell50.Name = "tableCell50"
Me.tableCell50.StyleName = "DetailCaption2"
Me.tableCell50.Text = "Bestellt"
Me.tableCell50.Weight = 0.026839454366174756R
'
'tableCell52
'
Me.tableCell52.Name = "tableCell52"
Me.tableCell52.StyleName = "DetailCaption2"
Me.tableCell52.Text = "Geliefert"
Me.tableCell52.Weight = 0.024127269849467645R
'
'tableCell53
'
Me.tableCell53.Name = "tableCell53"
Me.tableCell53.StyleName = "DetailCaption2"
Me.tableCell53.Text = "Colli"
Me.tableCell53.Weight = 0.030175568915830075R
'
'tableCell54
'
Me.tableCell54.Name = "tableCell54"
Me.tableCell54.StyleName = "DetailCaption2"
Me.tableCell54.Text = "Preis"
Me.tableCell54.Weight = 0.023647549748139415R
'
'table4
'
Me.table4.LocationFloat = New DevExpress.Utils.PointFloat(0!, 28.00001!)
Me.table4.Name = "table4"
Me.table4.OddStyleName = "DetailData3_Odd"
Me.table4.Rows.AddRange(New DevExpress.XtraReports.UI.XRTableRow() {Me.tableRow5})
Me.table4.SizeF = New System.Drawing.SizeF(1050.0!, 25.0!)
'
'tableRow5
'
Me.tableRow5.Cells.AddRange(New DevExpress.XtraReports.UI.XRTableCell() {Me.tableCell65, Me.tableCell67, Me.tableCell68, Me.tableCell70, Me.tableCell71, Me.tableCell73, Me.tableCell74, Me.tableCell75})
Me.tableRow5.Name = "tableRow5"
Me.tableRow5.Weight = 11.5R
'
'tableCell65
'
Me.tableCell65.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Zeilennummer]")})
Me.tableCell65.Name = "tableCell65"
Me.tableCell65.StyleName = "DetailData2"
Me.tableCell65.Weight = 0.04382187252952939R
'
'tableCell67
'
Me.tableCell67.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Artikelnummer]")})
Me.tableCell67.Name = "tableCell67"
Me.tableCell67.StyleName = "DetailData2"
Me.tableCell67.Weight = 0.0450318363734654R
'
'tableCell68
'
Me.tableCell68.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Bezeichnung]")})
Me.tableCell68.Name = "tableCell68"
Me.tableCell68.StyleName = "DetailData2"
Me.tableCell68.Weight = 0.10979876020551542R
'
'tableCell70
'
Me.tableCell70.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Lieferantenartikelnummer]")})
Me.tableCell70.Name = "tableCell70"
Me.tableCell70.StyleName = "DetailData2"
Me.tableCell70.Weight = 0.044113126146570605R
'
'tableCell71
'
Me.tableCell71.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Menge_bestellt]")})
Me.tableCell71.Name = "tableCell71"
Me.tableCell71.StyleName = "DetailData2"
Me.tableCell71.Weight = 0.026839462904304431R
'
'tableCell73
'
Me.tableCell73.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Menge_geliefert]")})
Me.tableCell73.Name = "tableCell73"
Me.tableCell73.StyleName = "DetailData2"
Me.tableCell73.Weight = 0.024127176250492R
'
'tableCell74
'
Me.tableCell74.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Colli]")})
Me.tableCell74.Name = "tableCell74"
Me.tableCell74.StyleName = "DetailData2"
Me.tableCell74.Weight = 0.030175672656399144R
'
'tableCell75
'
Me.tableCell75.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Einzelpreis]")})
Me.tableCell75.Name = "tableCell75"
Me.tableCell75.StyleName = "DetailData2"
Me.tableCell75.Weight = 0.02364744600757035R
'
'XrLabel1
'
Me.XrLabel1.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Notizblock]")})
Me.XrLabel1.Font = New System.Drawing.Font("Arial", 8.25!)
Me.XrLabel1.LocationFloat = New DevExpress.Utils.PointFloat(0!, 53.0!)
Me.XrLabel1.Multiline = True
Me.XrLabel1.Name = "XrLabel1"
Me.XrLabel1.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel1.SizeF = New System.Drawing.SizeF(1050.0!, 23.0!)
Me.XrLabel1.StylePriority.UseFont = False
Me.XrLabel1.Text = "XrLabel1"
'
'Detail1
'
Me.Detail1.Controls.AddRange(New DevExpress.XtraReports.UI.XRControl() {Me.XrLabel1, Me.table4, Me.table3})
Me.Detail1.HeightF = 135.2917!
Me.Detail1.Name = "Detail1"
'
'DetailReport
'
Me.DetailReport.Bands.AddRange(New DevExpress.XtraReports.UI.Band() {Me.Detail1})
Me.DetailReport.DataMember = "Positions"
Me.DetailReport.DataSource = Me.ObjectDataSource1
Me.DetailReport.Level = 0
Me.DetailReport.Name = "DetailReport"
'
'XrLabel2
'
Me.XrLabel2.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel2.LocationFloat = New DevExpress.Utils.PointFloat(9.999998!, 10.00001!)
Me.XrLabel2.Multiline = True
Me.XrLabel2.Name = "XrLabel2"
Me.XrLabel2.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel2.SizeF = New System.Drawing.SizeF(108.3333!, 23.0!)
Me.XrLabel2.StylePriority.UseFont = False
Me.XrLabel2.Text = "Kunde"
'
'XrLabel3
'
Me.XrLabel3.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Head].[Fakt_Kontonummer]")})
Me.XrLabel3.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel3.LocationFloat = New DevExpress.Utils.PointFloat(118.3903!, 10.00001!)
Me.XrLabel3.Multiline = True
Me.XrLabel3.Name = "XrLabel3"
Me.XrLabel3.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel3.SizeF = New System.Drawing.SizeF(265.092!, 23.0!)
Me.XrLabel3.StylePriority.UseFont = False
Me.XrLabel3.Text = "XrLabel2"
'
'XrLabel4
'
Me.XrLabel4.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Head].[Fakt_Name]")})
Me.XrLabel4.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel4.LocationFloat = New DevExpress.Utils.PointFloat(118.3904!, 33.00001!)
Me.XrLabel4.Multiline = True
Me.XrLabel4.Name = "XrLabel4"
Me.XrLabel4.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel4.SizeF = New System.Drawing.SizeF(265.092!, 23.0!)
Me.XrLabel4.StylePriority.UseFont = False
Me.XrLabel4.Text = "XrLabel2"
'
'XrLabel5
'
Me.XrLabel5.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel5.LocationFloat = New DevExpress.Utils.PointFloat(383.4824!, 10.00001!)
Me.XrLabel5.Multiline = True
Me.XrLabel5.Name = "XrLabel5"
Me.XrLabel5.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel5.SizeF = New System.Drawing.SizeF(108.3333!, 23.0!)
Me.XrLabel5.StylePriority.UseFont = False
Me.XrLabel5.Text = "Datum"
'
'XrLabel6
'
Me.XrLabel6.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Head].[Datum_AuftragBestellung]")})
Me.XrLabel6.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel6.LocationFloat = New DevExpress.Utils.PointFloat(491.8157!, 10.00001!)
Me.XrLabel6.Multiline = True
Me.XrLabel6.Name = "XrLabel6"
Me.XrLabel6.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel6.SizeF = New System.Drawing.SizeF(108.3333!, 23.0!)
Me.XrLabel6.StylePriority.UseFont = False
Me.XrLabel6.Text = "XrLabel2"
Me.XrLabel6.TextFormatString = "{0:dd.MM.yyyy}"
'
'XrLabel7
'
Me.XrLabel7.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Head].[Leistungsdatum]")})
Me.XrLabel7.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel7.LocationFloat = New DevExpress.Utils.PointFloat(491.8157!, 33.00001!)
Me.XrLabel7.Multiline = True
Me.XrLabel7.Name = "XrLabel7"
Me.XrLabel7.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel7.SizeF = New System.Drawing.SizeF(108.3333!, 23.0!)
Me.XrLabel7.StylePriority.UseFont = False
Me.XrLabel7.Text = "XrLabel2"
Me.XrLabel7.TextFormatString = "{0:dd.MM.yyyy}"
'
'XrLabel8
'
Me.XrLabel8.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel8.LocationFloat = New DevExpress.Utils.PointFloat(9.999998!, 64.16667!)
Me.XrLabel8.Multiline = True
Me.XrLabel8.Name = "XrLabel8"
Me.XrLabel8.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel8.SizeF = New System.Drawing.SizeF(108.3333!, 23.0!)
Me.XrLabel8.StylePriority.UseFont = False
Me.XrLabel8.Text = "Bestellnummer"
'
'XrLabel9
'
Me.XrLabel9.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Head].[AuftragsBestellnummer]")})
Me.XrLabel9.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel9.LocationFloat = New DevExpress.Utils.PointFloat(118.3333!, 64.16667!)
Me.XrLabel9.Multiline = True
Me.XrLabel9.Name = "XrLabel9"
Me.XrLabel9.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel9.SizeF = New System.Drawing.SizeF(265.149!, 23.0!)
Me.XrLabel9.StylePriority.UseFont = False
Me.XrLabel9.Text = "XrLabel2"
'
'XrLabel10
'
Me.XrLabel10.ExpressionBindings.AddRange(New DevExpress.XtraReports.UI.ExpressionBinding() {New DevExpress.XtraReports.UI.ExpressionBinding("BeforePrint", "Text", "[Head].[Auftragsreferenz]")})
Me.XrLabel10.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel10.LocationFloat = New DevExpress.Utils.PointFloat(9.999998!, 110.1667!)
Me.XrLabel10.Multiline = True
Me.XrLabel10.Name = "XrLabel10"
Me.XrLabel10.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel10.SizeF = New System.Drawing.SizeF(373.4824!, 120.9167!)
Me.XrLabel10.StylePriority.UseFont = False
Me.XrLabel10.Text = "XrLabel2"
'
'XrLabel11
'
Me.XrLabel11.Font = New System.Drawing.Font("Arial", 15.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel11.LocationFloat = New DevExpress.Utils.PointFloat(814.504!, 10.00001!)
Me.XrLabel11.Multiline = True
Me.XrLabel11.Name = "XrLabel11"
Me.XrLabel11.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel11.SizeF = New System.Drawing.SizeF(225.496!, 77.16665!)
Me.XrLabel11.StylePriority.UseFont = False
Me.XrLabel11.StylePriority.UseTextAlignment = False
Me.XrLabel11.Text = "ORDERS" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Offene EDI Sätze"
Me.XrLabel11.TextAlignment = DevExpress.XtraPrinting.TextAlignment.TopRight
'
'ObjectDataSource1
'
Me.ObjectDataSource1.DataSource = GetType(ImporterShared.Schemas.Orders.ReportSource)
Me.ObjectDataSource1.Name = "ObjectDataSource1"
'
'XrLabel12
'
Me.XrLabel12.Font = New System.Drawing.Font("Arial", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.XrLabel12.LocationFloat = New DevExpress.Utils.PointFloat(9.999998!, 87.16666!)
Me.XrLabel12.Multiline = True
Me.XrLabel12.Name = "XrLabel12"
Me.XrLabel12.Padding = New DevExpress.XtraPrinting.PaddingInfo(2, 2, 0, 0, 100.0!)
Me.XrLabel12.SizeF = New System.Drawing.SizeF(108.3333!, 23.0!)
Me.XrLabel12.StylePriority.UseFont = False
Me.XrLabel12.Text = "Auftragsreferenz"
'
'OrderReport
'
Me.Bands.AddRange(New DevExpress.XtraReports.UI.Band() {Me.TopMargin, Me.BottomMargin, Me.ReportHeader, Me.Detail, Me.DetailReport})
Me.ComponentStorage.AddRange(New System.ComponentModel.IComponent() {Me.ObjectDataSource1})
Me.DataSource = Me.ObjectDataSource1
Me.Font = New System.Drawing.Font("Arial", 9.75!)
Me.Landscape = True
Me.Margins = New System.Drawing.Printing.Margins(25, 25, 25, 29)
Me.PageHeight = 850
Me.PageWidth = 1100
Me.StyleSheet.AddRange(New DevExpress.XtraReports.UI.XRControlStyle() {Me.Title, Me.GroupCaption1, Me.GroupData1, Me.DetailCaption1, Me.DetailData1, Me.DetailCaption2, Me.DetailData2, Me.DetailData3_Odd, Me.PageInfo})
Me.Version = "19.2"
CType(Me.table3, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.table4, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ObjectDataSource1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me, System.ComponentModel.ISupportInitialize).EndInit()
End Sub
Friend WithEvents ObjectDataSource1 As DevExpress.DataAccess.ObjectBinding.ObjectDataSource
Friend WithEvents Title As DevExpress.XtraReports.UI.XRControlStyle
Friend WithEvents GroupCaption1 As DevExpress.XtraReports.UI.XRControlStyle
Friend WithEvents GroupData1 As DevExpress.XtraReports.UI.XRControlStyle
Friend WithEvents DetailCaption1 As DevExpress.XtraReports.UI.XRControlStyle
Friend WithEvents DetailData1 As DevExpress.XtraReports.UI.XRControlStyle
Friend WithEvents DetailCaption2 As DevExpress.XtraReports.UI.XRControlStyle
Friend WithEvents DetailData2 As DevExpress.XtraReports.UI.XRControlStyle
Friend WithEvents DetailData3_Odd As DevExpress.XtraReports.UI.XRControlStyle
Friend WithEvents PageInfo As DevExpress.XtraReports.UI.XRControlStyle
Friend WithEvents TopMargin As DevExpress.XtraReports.UI.TopMarginBand
Friend WithEvents BottomMargin As DevExpress.XtraReports.UI.BottomMarginBand
Friend WithEvents pageInfo1 As DevExpress.XtraReports.UI.XRPageInfo
Friend WithEvents pageInfo2 As DevExpress.XtraReports.UI.XRPageInfo
Friend WithEvents ReportHeader As DevExpress.XtraReports.UI.ReportHeaderBand
Friend WithEvents Detail As DevExpress.XtraReports.UI.DetailBand
Friend WithEvents table3 As DevExpress.XtraReports.UI.XRTable
Friend WithEvents tableRow4 As DevExpress.XtraReports.UI.XRTableRow
Friend WithEvents tableCell44 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell46 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell47 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell49 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell50 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell52 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell53 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell54 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents table4 As DevExpress.XtraReports.UI.XRTable
Friend WithEvents tableRow5 As DevExpress.XtraReports.UI.XRTableRow
Friend WithEvents tableCell65 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell67 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell68 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell70 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell71 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell73 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell74 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents tableCell75 As DevExpress.XtraReports.UI.XRTableCell
Friend WithEvents XrLabel1 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents Detail1 As DevExpress.XtraReports.UI.DetailBand
Friend WithEvents DetailReport As DevExpress.XtraReports.UI.DetailReportBand
Friend WithEvents XrLabel6 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents XrLabel7 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents XrLabel5 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents XrLabel4 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents XrLabel3 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents XrLabel2 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents XrLabel9 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents XrLabel10 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents XrLabel8 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents XrLabel11 As DevExpress.XtraReports.UI.XRLabel
Friend WithEvents XrLabel12 As DevExpress.XtraReports.UI.XRLabel
End Class

View File

@@ -1,268 +0,0 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class frmImportMain
Inherits DevExpress.XtraBars.Ribbon.RibbonForm
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim UnboundSourceProperty1 As DevExpress.Data.UnboundSourceProperty = New DevExpress.Data.UnboundSourceProperty()
Me.RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.txtVersion = New DevExpress.XtraBars.BarStaticItem()
Me.txtFilesLoaded = New DevExpress.XtraBars.BarStaticItem()
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
Me.BarButtonItem3 = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonStatusBar = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl()
Me.GridControlFiles = New DevExpress.XtraGrid.GridControl()
Me.GridViewFiles = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.GridColumn1 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.GridColumn2 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.GridColumn3 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.SplitContainerControl2 = New DevExpress.XtraEditors.SplitContainerControl()
Me.SplitContainerControl3 = New DevExpress.XtraEditors.SplitContainerControl()
Me.SplitContainerControl4 = New DevExpress.XtraEditors.SplitContainerControl()
Me.UnboundSource1 = New DevExpress.Data.UnboundSource(Me.components)
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl1.SuspendLayout()
CType(Me.GridControlFiles, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridViewFiles, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.SplitContainerControl2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl2.SuspendLayout()
CType(Me.SplitContainerControl3, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl3.SuspendLayout()
CType(Me.SplitContainerControl4, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl4.SuspendLayout()
CType(Me.UnboundSource1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'RibbonControl
'
Me.RibbonControl.ExpandCollapseItem.Id = 0
Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.txtVersion, Me.txtFilesLoaded, Me.BarButtonItem1, Me.BarButtonItem2, Me.BarButtonItem3})
Me.RibbonControl.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl.MaxItemId = 6
Me.RibbonControl.Name = "RibbonControl"
Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl.Size = New System.Drawing.Size(1215, 158)
Me.RibbonControl.StatusBar = Me.RibbonStatusBar
'
'txtVersion
'
Me.txtVersion.Alignment = DevExpress.XtraBars.BarItemLinkAlignment.Right
Me.txtVersion.Caption = "BarStaticItem1"
Me.txtVersion.Id = 1
Me.txtVersion.Name = "txtVersion"
'
'txtFilesLoaded
'
Me.txtFilesLoaded.Caption = "BarStaticItem2"
Me.txtFilesLoaded.Id = 2
Me.txtFilesLoaded.Name = "txtFilesLoaded"
'
'BarButtonItem1
'
Me.BarButtonItem1.Caption = "Import"
Me.BarButtonItem1.Id = 3
Me.BarButtonItem1.Name = "BarButtonItem1"
'
'BarButtonItem2
'
Me.BarButtonItem2.Caption = "Export"
Me.BarButtonItem2.Id = 4
Me.BarButtonItem2.Name = "BarButtonItem2"
'
'BarButtonItem3
'
Me.BarButtonItem3.Caption = "Edit"
Me.BarButtonItem3.Id = 5
Me.BarButtonItem3.Name = "BarButtonItem3"
'
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1})
Me.RibbonPage1.Name = "RibbonPage1"
Me.RibbonPage1.Text = "RibbonPage1"
'
'RibbonPageGroup1
'
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem1)
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem2)
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem3)
Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
Me.RibbonPageGroup1.Text = "RibbonPageGroup1"
'
'RibbonStatusBar
'
Me.RibbonStatusBar.ItemLinks.Add(Me.txtVersion)
Me.RibbonStatusBar.ItemLinks.Add(Me.txtFilesLoaded)
Me.RibbonStatusBar.Location = New System.Drawing.Point(0, 722)
Me.RibbonStatusBar.Name = "RibbonStatusBar"
Me.RibbonStatusBar.Ribbon = Me.RibbonControl
Me.RibbonStatusBar.Size = New System.Drawing.Size(1215, 24)
'
'SplitContainerControl1
'
Me.SplitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 158)
Me.SplitContainerControl1.Name = "SplitContainerControl1"
Me.SplitContainerControl1.Panel1.Controls.Add(Me.GridControlFiles)
Me.SplitContainerControl1.Panel1.Text = "Panel1"
Me.SplitContainerControl1.Panel2.Controls.Add(Me.SplitContainerControl2)
Me.SplitContainerControl1.Panel2.Text = "Panel2"
Me.SplitContainerControl1.Size = New System.Drawing.Size(1215, 564)
Me.SplitContainerControl1.SplitterPosition = 325
Me.SplitContainerControl1.TabIndex = 2
'
'GridControlFiles
'
Me.GridControlFiles.Dock = System.Windows.Forms.DockStyle.Fill
Me.GridControlFiles.Location = New System.Drawing.Point(0, 0)
Me.GridControlFiles.MainView = Me.GridViewFiles
Me.GridControlFiles.MenuManager = Me.RibbonControl
Me.GridControlFiles.Name = "GridControlFiles"
Me.GridControlFiles.Size = New System.Drawing.Size(325, 564)
Me.GridControlFiles.TabIndex = 0
Me.GridControlFiles.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridViewFiles})
'
'GridViewFiles
'
Me.GridViewFiles.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.GridColumn1, Me.GridColumn2, Me.GridColumn3})
Me.GridViewFiles.GridControl = Me.GridControlFiles
Me.GridViewFiles.Name = "GridViewFiles"
'
'GridColumn1
'
Me.GridColumn1.Caption = "GridColumn1"
Me.GridColumn1.FieldName = "Name"
Me.GridColumn1.Name = "GridColumn1"
Me.GridColumn1.Visible = True
Me.GridColumn1.VisibleIndex = 0
'
'GridColumn2
'
Me.GridColumn2.Caption = "GridColumn2"
Me.GridColumn2.FieldName = "FullName"
Me.GridColumn2.Name = "GridColumn2"
Me.GridColumn2.Visible = True
Me.GridColumn2.VisibleIndex = 1
'
'GridColumn3
'
Me.GridColumn3.Caption = "GridColumn3"
Me.GridColumn3.FieldName = "Selected"
Me.GridColumn3.Name = "GridColumn3"
Me.GridColumn3.Visible = True
Me.GridColumn3.VisibleIndex = 2
'
'SplitContainerControl2
'
Me.SplitContainerControl2.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl2.Horizontal = False
Me.SplitContainerControl2.Location = New System.Drawing.Point(0, 0)
Me.SplitContainerControl2.Name = "SplitContainerControl2"
Me.SplitContainerControl2.Panel1.Controls.Add(Me.SplitContainerControl3)
Me.SplitContainerControl2.Panel1.Text = "Panel1"
Me.SplitContainerControl2.Panel2.Controls.Add(Me.SplitContainerControl4)
Me.SplitContainerControl2.Panel2.Text = "Panel2"
Me.SplitContainerControl2.Size = New System.Drawing.Size(880, 564)
Me.SplitContainerControl2.SplitterPosition = 288
Me.SplitContainerControl2.TabIndex = 0
'
'SplitContainerControl3
'
Me.SplitContainerControl3.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl3.Horizontal = False
Me.SplitContainerControl3.Location = New System.Drawing.Point(0, 0)
Me.SplitContainerControl3.Name = "SplitContainerControl3"
Me.SplitContainerControl3.Panel1.Text = "Panel1"
Me.SplitContainerControl3.Panel2.Text = "Panel2"
Me.SplitContainerControl3.Size = New System.Drawing.Size(880, 288)
Me.SplitContainerControl3.SplitterPosition = 118
Me.SplitContainerControl3.TabIndex = 0
'
'SplitContainerControl4
'
Me.SplitContainerControl4.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl4.Horizontal = False
Me.SplitContainerControl4.Location = New System.Drawing.Point(0, 0)
Me.SplitContainerControl4.Name = "SplitContainerControl4"
Me.SplitContainerControl4.Panel1.Text = "Panel1"
Me.SplitContainerControl4.Panel2.Text = "Panel2"
Me.SplitContainerControl4.Size = New System.Drawing.Size(880, 266)
Me.SplitContainerControl4.SplitterPosition = 126
Me.SplitContainerControl4.TabIndex = 0
'
'UnboundSource1
'
UnboundSourceProperty1.DisplayName = Nothing
UnboundSourceProperty1.Name = "Property0"
Me.UnboundSource1.Properties.Add(UnboundSourceProperty1)
'
'frmImportMain
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1215, 746)
Me.Controls.Add(Me.SplitContainerControl1)
Me.Controls.Add(Me.RibbonStatusBar)
Me.Controls.Add(Me.RibbonControl)
Me.Name = "frmImportMain"
Me.Ribbon = Me.RibbonControl
Me.StatusBar = Me.RibbonStatusBar
Me.Text = "frmImportMain"
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl1.ResumeLayout(False)
CType(Me.GridControlFiles, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridViewFiles, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.SplitContainerControl2, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl2.ResumeLayout(False)
CType(Me.SplitContainerControl3, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl3.ResumeLayout(False)
CType(Me.SplitContainerControl4, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl4.ResumeLayout(False)
CType(Me.UnboundSource1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents RibbonControl As DevExpress.XtraBars.Ribbon.RibbonControl
Friend WithEvents RibbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents RibbonStatusBar As DevExpress.XtraBars.Ribbon.RibbonStatusBar
Friend WithEvents SplitContainerControl1 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents GridControlFiles As DevExpress.XtraGrid.GridControl
Friend WithEvents GridViewFiles As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents txtVersion As DevExpress.XtraBars.BarStaticItem
Friend WithEvents txtFilesLoaded As DevExpress.XtraBars.BarStaticItem
Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents SplitContainerControl2 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents SplitContainerControl3 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents SplitContainerControl4 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents GridColumn1 As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents GridColumn2 As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents GridColumn3 As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents UnboundSource1 As DevExpress.Data.UnboundSource
Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents BarButtonItem3 As DevExpress.XtraBars.BarButtonItem
End Class

View File

@@ -1,222 +0,0 @@
Imports System.ComponentModel
Imports System.IO
Imports System.Xml
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
Imports DigitalData.Controls.SQLConfig
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports ImporterShared
Imports ImporterShared.Documents
Imports ImporterShared.Schemas
Imports ImporterShared.Winline
Public Class frmImportMain
Private LogConfig As LogConfig
Private Logger As Logger
Private ConfigManager As ConfigManager(Of ImporterShared.Config)
Private Database As MSSQLServer
Private Winline As Data
Private WebService As WebService
Private PositionData As PositionData
Private DocumentLoader As Documents.DocumentLoader
Private SchemaLoader As Schemas.SchemaLoader
Private GridLoader As GridLoader
Private Grids As List(Of GridControl)
Private CurrentSchema As String
Private Sub frmImportMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
txtVersion.Caption = String.Format(txtVersion.Caption, Application.ProductVersion)
LogConfig = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, "Digital Data", "EDI Document Importer")
Logger = LogConfig.GetLogger()
Logger.Info("EDI Document Importer, Version [{0}]", Application.ProductVersion)
ConfigManager = New ConfigManager(Of ImporterShared.Config)(LogConfig,
Application.UserAppDataPath,
Application.CommonAppDataPath,
Application.StartupPath)
' If ConnectionString does not exist, show SQL Config Form
If ConfigManager.Config.ConnectionString = String.Empty Then
Dim oForm As New frmSQLConfig(LogConfig) With {
.FormTitle = "EDI Document Importer"
}
Dim oResult = oForm.ShowDialog()
If oResult = DialogResult.OK Then
ConfigManager.Config.ConnectionString = oForm.ConnectionString
ConfigManager.Save()
End If
End If
' Initialize Database
Dim oConnectionString = MSSQLServer.DecryptConnectionString(ConfigManager.Config.ConnectionString)
Database = New MSSQLServer(LogConfig, oConnectionString)
Winline = New Data(LogConfig, Database, ConfigManager.Config)
WebService = New WebService(LogConfig, ConfigManager.Config)
PositionData = New PositionData(LogConfig, Winline)
' Load WinLine Data
Winline.Mandators.Clear()
Winline.LoadMandators()
Winline.LoadEconomicYears()
Winline.LoadDocumentKinds(Winline.Mandators)
For Each oMandator In Winline.Mandators
Winline.LoadAccounts(oMandator)
Next
DocumentLoader = New DocumentLoader(LogConfig, Winline)
SchemaLoader = New SchemaLoader(LogConfig)
GridLoader = New GridLoader(LogConfig)
SchemaLoader.LoadFiles(ConfigManager.Config.SchemaDirectory)
CurrentSchema = SchemaLoader.SchemaList.First().FullName
Dim oSchema = SchemaLoader.GetSchemaFromFile(CurrentSchema)
Grids = CreateGridsAndColumns(oSchema)
End Sub
Private Function CreateGridsAndColumns(pSchema As Schemas.Schema) As List(Of GridControl)
Dim oGrids As New List(Of GridControl)
Dim oTableCounter = 0
For Each oTable In pSchema.Tables
If oTableCounter = 0 Then
Dim oGrid = GridLoader.GetGridFromElement(oTable)
AddHandler oGrid.DoubleClick, AddressOf Grid_DoubleClick
SplitContainerControl3.Panel1.Controls.Add(oGrid)
oGrids.Add(oGrid)
End If
If oTableCounter = 1 Then
Dim oGrid = GridLoader.GetGridFromElement(oTable)
AddHandler oGrid.DoubleClick, AddressOf Grid_DoubleClick
SplitContainerControl3.Panel2.Controls.Add(oGrid)
oGrids.Add(oGrid)
End If
If oTableCounter = 2 Then
Dim oGrid = GridLoader.GetGridFromElement(oTable)
AddHandler oGrid.DoubleClick, AddressOf Grid_DoubleClick
SplitContainerControl4.Panel1.Controls.Add(oGrid)
oGrids.Add(oGrid)
End If
If oTableCounter = 3 Then
Dim oGrid = GridLoader.GetGridFromElement(oTable)
AddHandler oGrid.DoubleClick, AddressOf Grid_DoubleClick
SplitContainerControl4.Panel2.Controls.Add(oGrid)
oGrids.Add(oGrid)
End If
If oTableCounter > 3 Then
MsgBox("Only 4 Tables are allowed currently!", MsgBoxStyle.Exclamation, Text)
End If
oTableCounter += 1
Next
If oTableCounter < 3 Then
SplitContainerControl2.PanelVisibility = DevExpress.XtraEditors.SplitPanelVisibility.Panel1
End If
Return oGrids
End Function
Private Sub Grid_DoubleClick(sender As Object, e As EventArgs)
Dim oGrid As GridControl = DirectCast(sender, GridControl)
Dim oView As GridView = DirectCast(oGrid.FocusedView, GridView)
Dim oRow As DataRow = oView.GetDataRow(oView.FocusedRowHandle)
Dim oColumns = oView.Columns.Select(Function(c) c.FieldName).ToList()
Dim oForm As New frmRowEditor(oRow, oColumns)
oForm.Showdialog()
End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
If DocumentLoader.LoadFiles(ConfigManager.Config.InputDirectory) Then
GridControlFiles.DataSource = DocumentLoader.Files
End If
End Sub
Private Sub GridViewFiles_FocusedRowChanged(sender As Object, e As Views.Base.FocusedRowChangedEventArgs) Handles GridViewFiles.FocusedRowChanged
Dim oDocument As Document = GridViewFiles.GetRow(e.FocusedRowHandle)
Dim oDatasources As New Dictionary(Of String, DataTable)
For Each oRow In oDocument.Rows
Dim oGrid As GridControl = Grids.
Where(Function(g) g.Name = oRow.Name).
SingleOrDefault()
If Not oDatasources.ContainsKey(oRow.Name) Then
Dim oTable As New DataTable()
For Each ofield In oRow.Fields
oTable.Columns.Add(New DataColumn(ofield.Key))
Next
oDatasources.Add(oRow.Name, oTable)
oGrid.DataSource = oTable
End If
Dim oDataTable = oDatasources.Item(oRow.Name)
Dim oDataRow = oDataTable.NewRow()
For Each oField In oRow.Fields
oDataRow.Item(oField.Key) = oField.Value
Next
oDataTable.Rows.Add(oDataRow)
oDataTable.AcceptChanges()
Next
End Sub
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
Dim oDocument As Document = GridViewFiles.GetRow(GridViewFiles.FocusedRowHandle)
Using oStream As New MemoryStream()
Dim w = XmlWriter.Create(oStream)
w.WriteStartDocument()
w.WriteStartElement("MESOWebService")
w.WriteAttributeString("Template", oDocument.TemplateName)
w.WriteAttributeString("TemplateType", oDocument.TemplateType)
w.WriteAttributeString("option", oDocument.Option)
w.WriteAttributeString("printVoucher", oDocument.PrintVoucher)
For Each oRow In oDocument.Rows
w.WriteStartElement(oRow.Name)
For Each oField As KeyValuePair(Of String, String) In oRow.Fields
w.WriteStartElement(oField.Key)
w.WriteValue(oField.Value)
w.WriteEndElement() ' Field
Next
w.WriteEndElement() ' Row
Next
w.WriteEndElement() ' MESOWebService
w.WriteEndDocument() ' Document
w.Close()
File.WriteAllBytes(ConfigManager.Config.OutputDirectory, oStream.ToArray)
End Using
End Sub
End Class

File diff suppressed because it is too large Load Diff

View File

@@ -1,509 +0,0 @@
Imports System.IO
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraRichEdit
Imports DevExpress.XtraEditors
Imports DevExpress.XtraReports.UI
Imports DevExpress.DataAccess.ObjectBinding
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Config
Imports DigitalData.Controls.SQLConfig
Imports DigitalData.GUIs.Common
Imports ImporterShared.Documents
Imports ImporterShared.Winline
Imports ImporterShared.Schemas
Imports ImporterForm.Positions
Imports DevExpress.XtraLayout
Public Class frmImportMain_old
Public LogConfig As LogConfig
Public Logger As Logger
Public ConfigManager As ConfigManager(Of ImporterShared.Config)
Public Database As MSSQLServer
Public DocumentLoader As DocumentLoader
Public GridBuilder As GridBuilder
Public PositionData As PositionData
Public Winline As Data
Public WebService As WebService
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Try
txtVersion.Caption = String.Format(txtVersion.Caption, Application.ProductVersion)
LogConfig = New LogConfig(LogConfig.PathType.AppData, Nothing, Nothing, "Digital Data", "EDI Document Importer")
Logger = LogConfig.GetLogger()
Logger.Info("EDI Document Importer, Version [{0}]", Application.ProductVersion)
ConfigManager = New ConfigManager(Of ImporterShared.Config)(LogConfig,
Application.UserAppDataPath,
Application.CommonAppDataPath,
Application.StartupPath)
' If ConnectionString does not exist, show SQL Config Form
If ConfigManager.Config.ConnectionString = String.Empty Then
Dim oForm As New frmSQLConfig(LogConfig) With {
.FormTitle = "EDI Document Importer"
}
Dim oResult = oForm.ShowDialog()
If oResult = DialogResult.OK Then
ConfigManager.Config.ConnectionString = oForm.ConnectionString
ConfigManager.Save()
End If
End If
' Initialize Database
Dim oConnectionString = MSSQLServer.DecryptConnectionString(ConfigManager.Config.ConnectionString)
Database = New MSSQLServer(LogConfig, oConnectionString)
Winline = New Data(LogConfig, Database, ConfigManager.Config)
WebService = New WebService(LogConfig, ConfigManager.Config)
PositionData = New PositionData(LogConfig, Winline)
' Load WinLine Data
Winline.Mandators.Clear()
Winline.LoadMandators()
Winline.LoadEconomicYears()
Winline.LoadDocumentKinds(Winline.Mandators)
For Each oMandator In Winline.Mandators
Winline.LoadAccounts(oMandator)
Next
' Load data for UI Fields
cmbMandator.Properties.DataSource = Winline.Mandators
cmbYear.Properties.Items.AddRange(Winline.Years)
cmbYear.SelectedItem = ConfigManager.Config.GetYear()
' Initialize Grids
GridBuilder = New GridBuilder(New List(Of GridView) From {GridViewFiles, GridViewPositions})
GridBuilder.WithDefaults()
PositionGrid.LoadPositionViewAndColumns(GridViewPositions, DocumentType.Order)
' Construct classes related to the xml data
DocumentLoader = New DocumentLoader(LogConfig, Winline)
Catch ex As Exception
Logger.Error(ex)
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden der Anwendung")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
End Try
End Sub
#Region "Helpers"
Private Function GetValidationMessage(FieldName As String) As String
Return $"Das Feld '{FieldName}' muss ausgefüllt werden!"
End Function
Private Function GetErrorMessage(pException As Exception, pErrorText As String)
Return $"{pErrorText}:{vbNewLine}{vbNewLine}{pException.Message}"
End Function
Private Function GetFocusedDocument() As Document
Dim oRowHandles = GridViewFiles.GetSelectedRows().ToList()
Dim oDocument As Document = GridViewFiles.GetRow(oRowHandles.First())
Return oDocument
End Function
Private Function GetFocusedPosition() As Position
Dim oRowHandles = GridViewPositions.GetSelectedRows().ToList()
Dim oPosition As Position = GridViewPositions.GetRow(oRowHandles.First())
Return oPosition
End Function
Private Sub TryOpenDirectory(pPath As String, pDisplayName As String)
If Directory.Exists(pPath) Then
Process.Start(pPath)
Else
MsgBox($"{pDisplayName} nicht konfiguriert oder nicht gefunden!", MsgBoxStyle.Exclamation, Text)
End If
End Sub
#End Region
Private Sub btnLoadDocuments_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnLoadDocuments.ItemClick
Try
If DocumentLoader.LoadFiles(ConfigManager.Config.InputDirectory) = True Then
RibbonGroupDataTransmission.Enabled = True
RibbonGroupDocument.Enabled = True
RibbonGroupPositions.Enabled = True
LayoutControlHead.Enabled = True
GridControlPositions.Enabled = True
btnReloadDocument.Enabled = True
GridControlFiles.DataSource = DocumentLoader.Files
txtFilesLoaded.Caption = $"{DocumentLoader.Files.Count} Dokumente geladen"
End If
Catch ex As Exception
Dim oMessage = ex.Message
If ex.InnerException IsNot Nothing Then
oMessage &= vbNewLine & vbNewLine & ex.InnerException.Message
End If
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
End Try
End Sub
Private Sub GridViewFiles_FocusedRowChanged(sender As Object, e As DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs) Handles GridViewFiles.FocusedRowChanged
Dim oDocument As Document = GridViewFiles.GetRow(e.FocusedRowHandle)
If oDocument Is Nothing Then
Exit Sub
End If
ShowDocument(oDocument)
End Sub
Private Sub ShowDocument(pDocument As Document)
' Load XML File in the sidebar
RichEditXml.LoadDocument(pDocument.FullName, DocumentFormat.PlainText)
If pDocument.Mandator Is Nothing Then
Dim oForm As New frmMandatorSelection() With {
.Mandators = Winline.Mandators,
.SelectedMandator = Nothing
}
Dim oResult = oForm.ShowDialog()
If oResult <> DialogResult.OK Then
Exit Sub
End If
pDocument.Mandator = oForm.SelectedMandator.Id
End If
Try
Select Case pDocument.Type
Case DocumentType.Order
MsgBox("TODO")
'ShowOrderDocument(pDocument)
End Select
Catch ex As Xml.XmlException
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden des Dokuments")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
Logger.Error(ex)
Catch ex As Exceptions.NoMandatorException
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden des Dokuments")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
Logger.Error(ex)
Catch ex As Exception
Dim oMessage = GetErrorMessage(ex, "Fehler beim Laden des Dokuments")
MsgBox(oMessage, MsgBoxStyle.Critical, Text)
Logger.Error(ex)
End Try
End Sub
'Private Sub ShowOrderDocument(pDocument As Document)
' If pDocument.Mandator Is Nothing Then
' Throw New Exceptions.NoMandatorException("Es konnte kein Mandant gefunden werden")
' End If
' Dim oData As Orders.Input.MESOWebService = DirectCast(pDocument.Data, Orders.Input.MESOWebService)
' Dim oDataOriginal As Orders.Input.MESOWebService = DirectCast(pDocument.DataOriginal, Orders.Input.MESOWebService)
' Dim oHead = Orders.Helpers.GetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oData)
' Dim oHeadOriginal = Orders.Helpers.GetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oDataOriginal)
' ' --- Head Data --------------------------------------------------------------------------------------
' ' Original, Unreplaced Data
' txtCustomerGLN.Text = oHeadOriginal.Fakt_Kontonummer
' txtDeliveryAddressGLN.Text = oHeadOriginal.Lief_Kontonummer
' ' Regular Data from EDI
' txtRunningNumber.Text = oHead.Laufnummer
' cmbOrderIssuer.Text = oHead.Bestellt_Von
' txtOrderNumber.Text = oHead.Auftragsreferenz
' txtInfoText.Text = oHead.Infotext
' Try
' dateOrderDate.EditValue = Date.ParseExact(oHead.Datum_AuftragBestellung, "yyyy-MM-dd", Globalization.CultureInfo.InvariantCulture)
' Catch ex As Exception
' dateOrderDate.EditValue = Nothing
' End Try
' ' --- Find Mandator --------------------------------------------------------------------------------------
' Dim oMandator = Winline.Mandators.
' Where(Function(m) m.Id = pDocument.Mandator).
' SingleOrDefault()
' cmbMandator.EditValue = oMandator
' ' --- Find DocumentKinds ---------------------------------------------------------------------------------
' Dim oMandatorKinds = Winline.DocumentKinds.
' Where(Function(k) k.Mandator = oMandator.Id).
' ToList()
' Dim oSelectedKind = oMandatorKinds.
' Where(Function(k) k.Id.ToString = oHead.Belegart).
' SingleOrDefault()
' cmbDocumentKind.Properties.Items.Clear()
' cmbDocumentKind.Properties.Items.AddRange(oMandatorKinds)
' If oSelectedKind Is Nothing Then
' cmbDocumentKind.ErrorText = "Es wurde keine passende Belegart gefunden."
' cmbDocumentKind.SelectedItem = Nothing
' Else
' cmbDocumentKind.SelectedItem = oSelectedKind
' End If
' ' --- Find Accounts --------------------------------------------------------------------------------------
' Dim oMandatorAccounts = Winline.Accounts.
' Where(Function(a) a.Mandator = oMandator.Id).
' ToList()
' cmbCustomer.Properties.DataSource = oMandatorAccounts
' cmbDeliveryAddress.Properties.DataSource = oMandatorAccounts
' ' FAKTURA
' If oHead.Fakt_Kontonummer = oHeadOriginal.Fakt_Kontonummer Then
' cmbCustomer.ErrorText = GetValidationMessage("Faktura Konto")
' cmbCustomer.EditValue = Nothing
' Else
' Dim oMatchingAccounts = oMandatorAccounts.
' Where(Function(oAccount) oAccount.Id = oHead.Fakt_Kontonummer)
' If oMatchingAccounts.Count() > 1 Then
' cmbCustomer.EditValue = Nothing
' cmbCustomer.ErrorText = "Für die Kontonummer wurden mehrere Konten gefunden."
' ElseIf oMatchingAccounts.Count() = 0 Then
' cmbCustomer.EditValue = Nothing
' cmbCustomer.ErrorText = "Für die Kontonummer wurde kein Konto gefunden."
' Else
' cmbCustomer.EditValue = oMatchingAccounts.SingleOrDefault()
' End If
' End If
' ' CONTACTS
' If cmbCustomer.EditValue IsNot Nothing Then
' Dim oContacts = Winline.GetContacts(oHead.Fakt_Kontonummer, oMandator)
' cmbOrderIssuer.Properties.DataSource = oContacts
' End If
' ' DEVLIERY
' If oHead.Lief_Kontonummer = oHeadOriginal.Lief_Kontonummer Then
' If oHeadOriginal.Lief_Kontonummer = String.Empty Then
' txtPlace.EditValue = oHeadOriginal.Lief_Ort
' txtZIP.EditValue = oHeadOriginal.Lief_PLZ
' txtStreetName.EditValue = oHeadOriginal.Lief_Strasse
' txtName.EditValue = oHeadOriginal.Lief_Name
' Else
' cmbDeliveryAddress.ErrorText = GetValidationMessage("Lieferanten Konto")
' cmbDeliveryAddress.EditValue = Nothing
' End If
' Else
' Dim oMatchingAccounts = oMandatorAccounts.
' Where(Function(oAccount) oAccount.Id = oHead.Lief_Kontonummer)
' If oMatchingAccounts.Count() > 1 Then
' cmbDeliveryAddress.EditValue = Nothing
' cmbDeliveryAddress.ErrorText = "Für die Kontonummer wurden mehrere Konten gefunden."
' ElseIf oMatchingAccounts.Count() = 0 Then
' cmbDeliveryAddress.EditValue = Nothing
' cmbDeliveryAddress.ErrorText = "Für die Kontonummer wurde kein Konto gefunden."
' Else
' cmbDeliveryAddress.EditValue = oMatchingAccounts.SingleOrDefault()
' End If
' End If
' ' --- Find Positions ------------------------------------------------------------------------------------
' Dim oPositionList = PositionData.Load(oMandator, oData, oDataOriginal)
' GridControlPositions.DataSource = oPositionList
' GridViewPositions.BestFitColumns()
'End Sub
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
TryOpenDirectory(ConfigManager.Config.InputDirectory, "Eingangsverzeichnis")
End Sub
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
TryOpenDirectory(ConfigManager.Config.OutputDirectory, "Ausgangsverzeichnis")
End Sub
Private Sub BarButtonItem3_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem3.ItemClick
Dim oUserConfigDirectory = New FileInfo(ConfigManager.UserConfigPath).Directory
TryOpenDirectory(oUserConfigDirectory.FullName, "Konfigurationsverzeichnis")
End Sub
Private Sub checkShowXml_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles checkShowXml.CheckedChanged
SplitContainerControl3.Collapsed = Not checkShowXml.Checked
End Sub
'Private Async Sub BarButtonItem4_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem4.ItemClick
' Dim oMessageText As String = ""
' Dim oMessageStyle As MsgBoxStyle = MsgBoxStyle.Critical
' Dim oDocument As Document = GetFocusedDocument()
' If oDocument Is Nothing Then
' Exit Sub
' End If
' SplashScreenManager1.ShowWaitForm()
' ChangeUIState(False)
' Try
' Dim oFinalDocument As Document = TransferChangesToDocument(oDocument)
' Dim oResult = Await WebService.TransferDocumentToWinLine(oFinalDocument)
' oMessageText = "Beleg wurde erfolgreich übertragen!"
' oMessageStyle = MsgBoxStyle.Information
' Catch ex As Exception
' Logger.Error(ex)
' oMessageText = $"Fehler beim Übertragen des Dokuments:{vbNewLine}{vbNewLine}{ex.Message}"
' oMessageStyle = MsgBoxStyle.Critical
' Finally
' SplashScreenManager1.CloseWaitForm()
' ChangeUIState(True)
' MsgBox(oMessageText, oMessageStyle, Text)
' End Try
'End Sub
Private Sub ChangeUIState(pEnabled As Boolean)
GridControlPositions.Enabled = pEnabled
GridControlFiles.Enabled = pEnabled
LayoutControlHead.Enabled = pEnabled
RibbonGroupDataTransmission.Enabled = pEnabled
RibbonGroupDataLoading.Enabled = pEnabled
RibbonGroupDocument.Enabled = pEnabled
RibbonGroupPositions.Enabled = pEnabled
End Sub
'Private Function TransferChangesToDocument(pDocument As Document)
' Dim oData As Orders.Input.MESOWebService = pDocument.Data
' Try
' Orders.Helpers.SetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oData, AddressOf UpdateOrderHead)
' Catch ex As Exception
' Logger.Error(ex)
' Throw ex
' End Try
' Return pDocument
'End Function
'Private Function UpdateOrderHead(pObject As Orders.Input.MESOWebServiceEXIMVRG_ordersT025) As Orders.Input.MESOWebServiceEXIMVRG_ordersT025
' ' Update DocumentKind
' If cmbDocumentKind.EditValue IsNot Nothing AndAlso TypeOf cmbDocumentKind.EditValue Is DocumentKind Then
' pObject.Belegart = DirectCast(cmbDocumentKind.EditValue, DocumentKind).Id
' End If
' ' Update Talking Person lol
' If cmbOrderIssuer.EditValue IsNot Nothing AndAlso TypeOf cmbOrderIssuer.EditValue Is Contact Then
' pObject.Bestellt_Von = DirectCast(cmbOrderIssuer.EditValue, Contact).Id
' End If
' ' Update Delivery Address
' If cmbDeliveryAddress.EditValue IsNot Nothing AndAlso TypeOf cmbDeliveryAddress.EditValue Is Account Then
' pObject.Lief_Kontonummer = DirectCast(cmbDeliveryAddress.EditValue, Account)?.Id
' End If
' ' Update Order Number
' If txtOrderNumber.EditValue IsNot Nothing AndAlso txtOrderNumber.EditValue <> String.Empty Then
' pObject.Auftragsreferenz = txtOrderNumber.EditValue
' End If
' ' Update Order Date
' If dateOrderDate IsNot Nothing Then
' pObject.Datum_AuftragBestellung = DirectCast(dateOrderDate.EditValue, Date).ToString("yyyy-MM-dd")
' End If
' ' Update Extra Address
' pObject.Lief_Name = txtName.EditValue
' pObject.Lief_Ort = txtPlace.EditValue
' pObject.Lief_PLZ = txtZIP.EditValue
' pObject.Lief_Strasse = txtStreetName.EditValue
' Return pObject
'End Function
Private Sub BarButtonItem8_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem8.ItemClick
TryOpenDirectory(LogConfig.LogDirectory, "Logverzeichnis")
End Sub
Private Sub cmbCustomer_Validating(sender As BaseEdit, e As System.ComponentModel.CancelEventArgs) Handles cmbCustomer.Validating, cmbDocumentKind.Validating, cmbMandator.Validating, cmbYear.Validating
If sender.EditValue Is Nothing Then
sender.ErrorText = "Dieses Feld muss ausgefüllt werden"
Else
sender.ErrorText = ""
End If
End Sub
'Private Sub btnPreviewReport_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnPreviewReport.ItemClick
' Dim oDocument As Document = GetFocusedDocument()
' If oDocument Is Nothing Then
' Exit Sub
' End If
' Dim oReport As New OrderReport()
' Dim oDataSource = New DevExpress.DataAccess.ObjectBinding.ObjectDataSource With {
' .DataSource = New Orders.ReportSource With {
' .Head = Orders.Helpers.GetOrderHead(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oDocument.Data),
' .Positions = Orders.Helpers.GetOrderPositions(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT025)(oDocument.Data)
' }
' }
' oDataSource.Fill()
' oReport.DataSource = oDataSource
' Dim oReportPrintTool As New ReportPrintTool(oReport)
' oReportPrintTool.ShowPreview()
'End Sub
Private Sub btnReloadDocument_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnReloadDocument.ItemClick
Dim oResult = MsgBox("Wenn sie das Dokument neu laden, werden alle manuell geänderten Wert verworfen. Wollen Sie fortfahren?", MsgBoxStyle.YesNo Or MsgBoxStyle.Question, Text)
If oResult = MsgBoxResult.Yes Then
Dim oDocument As Document = GetFocusedDocument()
If oDocument Is Nothing Then
Exit Sub
End If
ShowDocument(oDocument)
End If
End Sub
Private Sub btnDeletePosition_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnDeletePosition.ItemClick
Dim oPosition = GetFocusedPosition()
If oPosition Is Nothing Then
MsgBox("Bitte wählen Sie eine Position aus!", MsgBoxStyle.Exclamation, Text)
Exit Sub
End If
Dim oResult = MsgBox($"Wollen Sie die ausgewählte Position Artikel [{oPosition.ArticleNumber}] wirklich löschen?", MsgBoxStyle.Question Or MsgBoxStyle.YesNo, Text)
If oResult = MsgBoxResult.Yes Then
GridViewPositions.DeleteSelectedRows()
MsgBox("Position gelöscht")
End If
End Sub
Private Sub BarButtonItem7_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem7.ItemClick
MsgBox("Mach et!")
End Sub
Private Sub BarButtonItem6_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs)
Dim oUserConfigDirectory = New FileInfo(ConfigManager.UserConfigPath).Directory
TryOpenDirectory(oUserConfigDirectory.FullName, "Konfigurationsverzeichnis")
End Sub
End Class

View File

@@ -1,93 +0,0 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmMain
Inherits DevExpress.XtraEditors.XtraForm
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.LabelControl1 = New DevExpress.XtraEditors.LabelControl()
Me.LabelControl2 = New DevExpress.XtraEditors.LabelControl()
Me.ListBoxControl1 = New DevExpress.XtraEditors.ListBoxControl()
Me.ListBoxControl2 = New DevExpress.XtraEditors.ListBoxControl()
Me.SimpleButton1 = New DevExpress.XtraEditors.SimpleButton()
CType(Me.ListBoxControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ListBoxControl2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'LabelControl1
'
Me.LabelControl1.Location = New System.Drawing.Point(41, 43)
Me.LabelControl1.Name = "LabelControl1"
Me.LabelControl1.Size = New System.Drawing.Size(32, 13)
Me.LabelControl1.TabIndex = 0
Me.LabelControl1.Text = "Import"
'
'LabelControl2
'
Me.LabelControl2.Location = New System.Drawing.Point(41, 239)
Me.LabelControl2.Name = "LabelControl2"
Me.LabelControl2.Size = New System.Drawing.Size(32, 13)
Me.LabelControl2.TabIndex = 1
Me.LabelControl2.Text = "Export"
'
'ListBoxControl1
'
Me.ListBoxControl1.Location = New System.Drawing.Point(41, 62)
Me.ListBoxControl1.Name = "ListBoxControl1"
Me.ListBoxControl1.Size = New System.Drawing.Size(600, 126)
Me.ListBoxControl1.TabIndex = 2
'
'ListBoxControl2
'
Me.ListBoxControl2.Location = New System.Drawing.Point(41, 258)
Me.ListBoxControl2.Name = "ListBoxControl2"
Me.ListBoxControl2.Size = New System.Drawing.Size(600, 126)
Me.ListBoxControl2.TabIndex = 2
'
'SimpleButton1
'
Me.SimpleButton1.Location = New System.Drawing.Point(608, 481)
Me.SimpleButton1.Name = "SimpleButton1"
Me.SimpleButton1.Size = New System.Drawing.Size(137, 44)
Me.SimpleButton1.TabIndex = 3
Me.SimpleButton1.Text = "SimpleButton1"
'
'frmMain
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(757, 537)
Me.Controls.Add(Me.SimpleButton1)
Me.Controls.Add(Me.ListBoxControl2)
Me.Controls.Add(Me.ListBoxControl1)
Me.Controls.Add(Me.LabelControl2)
Me.Controls.Add(Me.LabelControl1)
Me.Name = "frmMain"
Me.Text = "frmMain"
CType(Me.ListBoxControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ListBoxControl2, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents LabelControl1 As DevExpress.XtraEditors.LabelControl
Friend WithEvents LabelControl2 As DevExpress.XtraEditors.LabelControl
Friend WithEvents ListBoxControl1 As DevExpress.XtraEditors.ListBoxControl
Friend WithEvents ListBoxControl2 As DevExpress.XtraEditors.ListBoxControl
Friend WithEvents SimpleButton1 As DevExpress.XtraEditors.SimpleButton
End Class

View File

@@ -1,3 +0,0 @@
Public Class frmMain
End Class

View File

@@ -1,115 +0,0 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class frmMandatorSelection
Inherits DevExpress.XtraEditors.XtraForm
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMandatorSelection))
Me.GridMandators = New DevExpress.XtraGrid.GridControl()
Me.ViewMandators = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.PanelControl1 = New DevExpress.XtraEditors.PanelControl()
Me.SimpleButton1 = New DevExpress.XtraEditors.SimpleButton()
Me.LabelControl1 = New DevExpress.XtraEditors.LabelControl()
Me.SimpleButton2 = New DevExpress.XtraEditors.SimpleButton()
CType(Me.GridMandators, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ViewMandators, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.PanelControl1.SuspendLayout()
Me.SuspendLayout()
'
'GridMandators
'
Me.GridMandators.Dock = System.Windows.Forms.DockStyle.Top
Me.GridMandators.Location = New System.Drawing.Point(0, 0)
Me.GridMandators.MainView = Me.ViewMandators
Me.GridMandators.Name = "GridMandators"
Me.GridMandators.Size = New System.Drawing.Size(606, 292)
Me.GridMandators.TabIndex = 0
Me.GridMandators.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ViewMandators})
'
'ViewMandators
'
Me.ViewMandators.GridControl = Me.GridMandators
Me.ViewMandators.Name = "ViewMandators"
'
'PanelControl1
'
Me.PanelControl1.Controls.Add(Me.LabelControl1)
Me.PanelControl1.Controls.Add(Me.SimpleButton2)
Me.PanelControl1.Controls.Add(Me.SimpleButton1)
Me.PanelControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.PanelControl1.Location = New System.Drawing.Point(0, 292)
Me.PanelControl1.Name = "PanelControl1"
Me.PanelControl1.Size = New System.Drawing.Size(606, 61)
Me.PanelControl1.TabIndex = 1
'
'SimpleButton1
'
Me.SimpleButton1.DialogResult = System.Windows.Forms.DialogResult.OK
Me.SimpleButton1.Location = New System.Drawing.Point(465, 6)
Me.SimpleButton1.Name = "SimpleButton1"
Me.SimpleButton1.Size = New System.Drawing.Size(129, 43)
Me.SimpleButton1.TabIndex = 0
Me.SimpleButton1.Text = "OK"
'
'LabelControl1
'
Me.LabelControl1.Appearance.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.LabelControl1.Appearance.Options.UseFont = True
Me.LabelControl1.AutoSizeMode = DevExpress.XtraEditors.LabelAutoSizeMode.Vertical
Me.LabelControl1.Location = New System.Drawing.Point(12, 6)
Me.LabelControl1.Name = "LabelControl1"
Me.LabelControl1.Size = New System.Drawing.Size(312, 45)
Me.LabelControl1.TabIndex = 1
Me.LabelControl1.Text = "Für das Dokument konnte kein eindeutiger Mandant bestimmt werden. Bitte wählen si" &
"e einen Mandanten aus der Liste oder klicken Sie auf Überspringen."
'
'SimpleButton2
'
Me.SimpleButton2.DialogResult = System.Windows.Forms.DialogResult.Ignore
Me.SimpleButton2.Location = New System.Drawing.Point(330, 6)
Me.SimpleButton2.Name = "SimpleButton2"
Me.SimpleButton2.Size = New System.Drawing.Size(129, 43)
Me.SimpleButton2.TabIndex = 0
Me.SimpleButton2.Text = "Überspringen"
'
'frmMandatorSelection
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(606, 353)
Me.Controls.Add(Me.PanelControl1)
Me.Controls.Add(Me.GridMandators)
Me.IconOptions.SvgImage = CType(resources.GetObject("frmMandatorSelection.IconOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.Name = "frmMandatorSelection"
Me.Text = "Mandanten Auswahl"
CType(Me.GridMandators, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ViewMandators, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PanelControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.PanelControl1.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
Friend WithEvents GridMandators As DevExpress.XtraGrid.GridControl
Friend WithEvents ViewMandators As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents PanelControl1 As DevExpress.XtraEditors.PanelControl
Friend WithEvents SimpleButton1 As DevExpress.XtraEditors.SimpleButton
Friend WithEvents LabelControl1 As DevExpress.XtraEditors.LabelControl
Friend WithEvents SimpleButton2 As DevExpress.XtraEditors.SimpleButton
End Class

View File

@@ -1,10 +0,0 @@
Imports ImporterShared.Winline
Public Class frmMandatorSelection
Public Property Mandators As List(Of Mandator)
Public Property SelectedMandator As Mandator
Private Sub frmMandatorSelection_Load(sender As Object, e As EventArgs) Handles MyBase.Load
MsgBox("TODO: Mach et!")
End Sub
End Class

View File

@@ -1,150 +0,0 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class frmRowEditor
Inherits DevExpress.XtraBars.Ribbon.RibbonForm
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.GridControl1 = New DevExpress.XtraGrid.GridControl()
Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.KEY = New DevExpress.XtraGrid.Columns.GridColumn()
Me.VALUE = New DevExpress.XtraGrid.Columns.GridColumn()
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'RibbonControl1
'
Me.RibbonControl1.CommandLayout = DevExpress.XtraBars.Ribbon.CommandLayout.Simplified
Me.RibbonControl1.ExpandCollapseItem.Id = 0
Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.RibbonControl1.SearchEditItem, Me.BarButtonItem1})
Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl1.MaxItemId = 2
Me.RibbonControl1.Name = "RibbonControl1"
Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl1.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.RibbonControl1.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide
Me.RibbonControl1.Size = New System.Drawing.Size(914, 63)
Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1
'
'BarButtonItem1
'
Me.BarButtonItem1.Caption = "Save"
Me.BarButtonItem1.Id = 1
Me.BarButtonItem1.Name = "BarButtonItem1"
'
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1})
Me.RibbonPage1.Name = "RibbonPage1"
Me.RibbonPage1.Text = "RibbonPage1"
'
'RibbonPageGroup1
'
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem1)
Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
Me.RibbonPageGroup1.Text = "RibbonPageGroup1"
'
'RibbonStatusBar1
'
Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 589)
Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
Me.RibbonStatusBar1.Size = New System.Drawing.Size(914, 24)
'
'RibbonPage2
'
Me.RibbonPage2.Name = "RibbonPage2"
Me.RibbonPage2.Text = "RibbonPage2"
'
'GridControl1
'
Me.GridControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.GridControl1.Location = New System.Drawing.Point(0, 63)
Me.GridControl1.MainView = Me.GridView1
Me.GridControl1.MenuManager = Me.RibbonControl1
Me.GridControl1.Name = "GridControl1"
Me.GridControl1.Size = New System.Drawing.Size(914, 526)
Me.GridControl1.TabIndex = 8
Me.GridControl1.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.GridView1})
'
'GridView1
'
Me.GridView1.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.KEY, Me.VALUE})
Me.GridView1.GridControl = Me.GridControl1
Me.GridView1.Name = "GridView1"
'
'KEY
'
Me.KEY.AppearanceCell.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
Me.KEY.AppearanceCell.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.KEY.AppearanceCell.Options.UseBackColor = True
Me.KEY.AppearanceCell.Options.UseFont = True
Me.KEY.Caption = "KEY"
Me.KEY.FieldName = "KEY"
Me.KEY.Name = "KEY"
Me.KEY.OptionsColumn.AllowEdit = False
Me.KEY.OptionsColumn.ReadOnly = True
Me.KEY.Visible = True
Me.KEY.VisibleIndex = 0
'
'VALUE
'
Me.VALUE.Caption = "VALUE"
Me.VALUE.FieldName = "VALUE"
Me.VALUE.Name = "VALUE"
Me.VALUE.Visible = True
Me.VALUE.VisibleIndex = 1
'
'frmRowEditor
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(914, 613)
Me.Controls.Add(Me.GridControl1)
Me.Controls.Add(Me.RibbonStatusBar1)
Me.Controls.Add(Me.RibbonControl1)
Me.Name = "frmRowEditor"
Me.Ribbon = Me.RibbonControl1
Me.StatusBar = Me.RibbonStatusBar1
Me.Text = "frmRowEditor"
CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridControl1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.GridView1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl
Friend WithEvents RibbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents RibbonStatusBar1 As DevExpress.XtraBars.Ribbon.RibbonStatusBar
Friend WithEvents RibbonPage2 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents GridControl1 As DevExpress.XtraGrid.GridControl
Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents KEY As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents VALUE As DevExpress.XtraGrid.Columns.GridColumn
End Class

View File

@@ -1,52 +0,0 @@
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraVerticalGrid.Rows
Imports ImporterShared.Documents
Public Class frmRowEditor
Private Row As DataRow
Private Columns As List(Of String)
Public Sub New(pRow As DataRow, pColumns As List(Of String))
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
Row = pRow
Columns = pColumns
End Sub
Private Sub frmRowEditor_Load(sender As Object, e As EventArgs) Handles Me.Load
If Row Is Nothing Then
Exit Sub
End If
Dim oDataTable As New DataTable()
Dim oDict = New Dictionary(Of String, String)
For Each oColumn As String In Columns
Dim oValue
Try
oValue = Row.Item(oColumn)
Catch ex As Exception
oValue = String.Empty
End Try
oDict.Add(oColumn, oValue)
Next
oDataTable.Columns.Add("KEY")
oDataTable.Columns.Add("VALUE")
For Each oKV In oDict
oDataTable.Rows.Add(oKV.Key, oKV.Value)
Next
GridControl1.DataSource = oDataTable
GridView1.BestFitColumns()
End Sub
End Class

View File

@@ -1,120 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"></xsd:import>
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0"></xsd:element>
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string"></xsd:attribute>
<xsd:attribute name="type" type="xsd:string"></xsd:attribute>
<xsd:attribute name="mimetype" type="xsd:string"></xsd:attribute>
<xsd:attribute ref="xml:space"></xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string"></xsd:attribute>
<xsd:attribute name="name" type="xsd:string"></xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"></xsd:element>
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2"></xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1"></xsd:attribute>
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3"></xsd:attribute>
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4"></xsd:attribute>
<xsd:attribute ref="xml:space"></xsd:attribute>
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1"></xsd:element>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@@ -1,31 +0,0 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.31005.135
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ImporterForm", "EDIDocumentImport\ImporterForm.vbproj", "{7AAEC958-955D-4F77-964C-38658684E424}"
EndProject
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "ImporterShared", "ImporterShared\ImporterShared.vbproj", "{DD1AC3B9-7595-4D3C-B9BB-97C46A480FA0}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{7AAEC958-955D-4F77-964C-38658684E424}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{7AAEC958-955D-4F77-964C-38658684E424}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7AAEC958-955D-4F77-964C-38658684E424}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7AAEC958-955D-4F77-964C-38658684E424}.Release|Any CPU.Build.0 = Release|Any CPU
{DD1AC3B9-7595-4D3C-B9BB-97C46A480FA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{DD1AC3B9-7595-4D3C-B9BB-97C46A480FA0}.Debug|Any CPU.Build.0 = Debug|Any CPU
{DD1AC3B9-7595-4D3C-B9BB-97C46A480FA0}.Release|Any CPU.ActiveCfg = Release|Any CPU
{DD1AC3B9-7595-4D3C-B9BB-97C46A480FA0}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {AD617F4E-5646-4DF2-923B-6EE1E0A5CD95}
EndGlobalSection
EndGlobal

View File

@@ -1,11 +0,0 @@
Imports DigitalData.Modules.Logging
Public Class BaseClass
Public ReadOnly LogConfig As LogConfig
Public ReadOnly Logger As Logger
Public Sub New(pLogConfig As LogConfig, pLogger As Logger)
LogConfig = pLogConfig
Logger = pLogger
End Sub
End Class

View File

@@ -1,35 +0,0 @@
Public Class Config
Public Property ConnectionString As String = ""
Public Property Mandators As New List(Of MandatorConfig)
Public Property InputDirectory As String = ""
Public Property OutputDirectory As String = ""
Public Property SchemaDirectory As String = ""
Public Property Webservice As New WebServiceConfig()
Public Property DefaultYearOverride As Integer = 0
Public Class WebServiceConfig
Public Property BaseUrl As String = "http://127.0.0.1/EWL"
Public Property Username As String = "Username"
Public Property Password As String = "Password"
Public Property ImportBasePath As String = ""
Public Property ImportRelativePath As String = ""
End Class
Public Class MandatorConfig
Public Property Order As Integer
Public Property Name As String
Public Property ArticleRegex As String
End Class
<DebuggerStepThrough>
Public Function GetYear() As Integer
If DefaultYearOverride > 0 Then
Return DefaultYearOverride
End If
Return Now.Year
End Function
End Class

View File

@@ -1,53 +0,0 @@
Imports System.IO
Namespace Documents
Public Class Document
Public File As FileInfo
Public Mandator As String
Public Type As DocumentType
Public Selected As Boolean = False
Public TemplateName As String
Public TemplateType As Integer
Public [Option] As Integer
Public PrintVoucher As Integer
Public ReadOnly Property FullName As String
Get
Return File?.FullName
End Get
End Property
Public ReadOnly Property Name As String
Get
Return File?.Name
End Get
End Property
Public Rows As New List(Of DocumentRow)
' Public Type As DocumentType
' Public Data As Object
' Public DataOriginal As Object
' Public DataOutput As Object
' Public DataString As String
' Public Selected As Boolean = False
' Public Shared Function GetDocumentTypeFromTemplateName(pTemplateName As String) As DocumentType
' Return DocumentMatch.TypeMatchingTable.
' Where(Function(kv) pTemplateName.Contains(kv.Key)).
' Select(Function(kv) kv.Value).
' FirstOrDefault()
' End Function
' Public Shared Function GetDocumentSchemaFromDocumentType(pDocumentType As DocumentType) As Type
' Return DocumentMatch.SchemaMatchingTable.
' Where(Function(kv) pDocumentType = kv.Key).
' Select(Function(kv) kv.Value).
' FirstOrDefault()
' End Function
End Class
End Namespace

View File

@@ -1,233 +0,0 @@
Imports System.ComponentModel
Imports System.IO
Imports System.Reflection
Imports System.Text.RegularExpressions
Imports System.Xml.Serialization
Imports System.Xml.XPath
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.Logging
Imports ImporterShared.Documents
Imports ImporterShared.Schemas.Orders
Namespace Documents
Public Class DocumentLoader
Inherits BaseClass
Private ReadOnly Winline As Winline.Data
Private ReadOnly Serializer As Serializer
Public Files As New List(Of Document)
Public Sub New(pLogConfig As LogConfig, pWinline As Winline.Data)
MyBase.New(pLogConfig, pLogConfig.GetLogger())
Winline = pWinline
Serializer = New Serializer(pLogConfig)
End Sub
Public Function LoadFiles(pInputDirectory) As Boolean
If pInputDirectory = String.Empty Then
Throw New ArgumentNullException("InputDirectory")
End If
Logger.Info("Loading files from directory [{0}]", pInputDirectory)
Try
Dim oDirectory As New DirectoryInfo(pInputDirectory)
Dim oFiles = oDirectory.GetFiles()
Logger.Debug("Found [{0}] files in directory [{1}]", oFiles.Count, oDirectory)
Files = oFiles.
Select(AddressOf WrapFileInfo).
Select(AddressOf LoadDocumentData2).
ToList()
Return True
Catch ex As Exception
Logger.Error(ex)
Throw New IO.IOException($"Could not load files from directory {pInputDirectory}", ex)
End Try
End Function
Private Function LoadDocumentData2(pDocument As Document) As Document
Dim oText As String = IO.File.ReadAllText(pDocument.FullName)
Dim oDoc = XDocument.Parse(oText)
Dim oRootElement As XElement = XmlData.GetElement(oDoc, "MESOWebService")
Dim oTemplateName = XmlData.GetElementAttribute(oRootElement, "Template")
Dim oTemplateType = XmlData.GetElementAttribute(oRootElement, "TemplateType")
Dim oOption = XmlData.GetElementAttribute(oRootElement, "option")
Dim oPrintVoucher = XmlData.GetElementAttribute(oRootElement, "printVoucher")
Dim oRowElements As List(Of XElement) = oRootElement.Elements.ToList
Dim oRows As New List(Of DocumentRow)
For Each oElement As XElement In oRowElements
Dim oFields As New Dictionary(Of String, String)
Dim oSubElements = oElement.Descendants().ToList()
For Each oSubElement As XElement In oSubElements
oFields.Add(oSubElement.Name.ToString, oSubElement.Value)
Next
Dim oRow = New DocumentRow With {
.Name = oElement.Name.ToString,
.Fields = oFields
}
oRows.Add(oRow)
Next
pDocument.TemplateName = oTemplateName
pDocument.TemplateType = oTemplateType
pDocument.Rows = oRows
pDocument.Option = oOption
pDocument.PrintVoucher = oPrintVoucher
Return pDocument
End Function
'Private Function MatchDataFromWinLine(pDocument As Document, pMandators As List(Of Winline.Mandator)) As Document
' Dim oMandators As List(Of Winline.Mandator) = pMandators.
' Where(Function(m) m.IsWhitelisted = True).
' OrderBy(Function(m) m.Order).
' ToList()
' If TypeOf pDocument.Data Is Schemas.Orders.Input.MESOWebService Then
' Dim oMandator = Winline.FindMatchingMandatorFromOrder(pDocument.Data)
' Dim oData As Schemas.Orders.Input.MESOWebService = MatchOrderData(pDocument.Data, oMandator)
' If oMandator Is Nothing Then
' Logger.Warn("Mandator not found for File [{0}]", pDocument.File.Name)
' End If
' pDocument.Mandator = oMandator.Id
' pDocument.Data = oData
' End If
' Return pDocument
'End Function
Private Function MatchOrderData(pData As Input.MESOWebService, pMandator As Winline.Mandator) As Input.MESOWebService
Dim oYear = Winline.GetWinLineYear()
If pMandator Is Nothing Then
Return pData
End If
Dim oHead As Input.MESOWebServiceEXIMVRG_ordersT025 = pData.Items.
Where(Function(h) TypeOf h Is Input.MESOWebServiceEXIMVRG_ordersT025).
SetValue(Sub(h As Input.MESOWebServiceEXIMVRG_ordersT025)
Dim oAccount = Winline.TryGetAccount(h.Fakt_Kontonummer, pMandator)
If oAccount IsNot Nothing Then
h.Fakt_Kontonummer = oAccount.Id
h.Fakt_Name = oAccount.Name
End If
End Sub).
SetValue(Sub(h As Input.MESOWebServiceEXIMVRG_ordersT025)
Dim oAccount = Winline.TryGetAccount(h.Lief_Kontonummer, pMandator)
If oAccount IsNot Nothing Then
h.Lief_Kontonummer = oAccount.Id
h.Lief_Name = oAccount.Name
End If
End Sub).
FirstOrDefault()
Dim oPositions As List(Of Input.MESOWebServiceEXIMVRG_ordersT026) = pData.Items.
Where(Function(p) TypeOf p Is Input.MESOWebServiceEXIMVRG_ordersT026).
SetValue(Sub(p)
Dim oArticleNumber = Winline.TryGetArticleNumber(p.Artikelnummer, pMandator)
If oArticleNumber IsNot Nothing Then
p.Artikelnummer = oArticleNumber
End If
End Sub).
Select(Of Input.MESOWebServiceEXIMVRG_ordersT026)(Function(i) i).
ToList()
pData.Items = New List(Of Object) From {oHead}.
Concat(oPositions).
ToArray()
Return pData
End Function
Private Function WrapFileInfo(pFileInfo As FileInfo) As Document
Return New Document With {.File = pFileInfo}
End Function
'Private Function LoadDocumentData(pDocument As Document) As Document
' Using oFileStream As New FileStream(pDocument.FullName, FileMode.Open, FileAccess.Read, FileShare.Read)
' Try
' Dim oXmlDocument = New XPathDocument(oFileStream)
' Dim oDocument = oXmlDocument.CreateNavigator()
' Dim oTemplateName = GetTemplateName(oDocument)
' Dim oDocumentType = DocumentMatch.GetDocumentTypeFromTemplateName(oTemplateName)
' Dim oSchemaType As Type = DocumentMatch.GetDocumentSchemaFromDocumentType(oDocumentType)
' ' Read data the first time, working copy
' 'Using oReader = oNavigator.ReadSubtree()
' ' Dim oSerializer = Serializer.GetSerializer(oSchemaType)
' ' pDocument.Data = oSerializer.Deserialize(oReader)
' 'End Using
' ' Read data the second time, archive copy
' 'Using oReader = oNavigator.ReadSubtree()
' ' Dim oSerializer = Serializer.GetSerializer(oSchemaType)
' ' pDocument.DataOriginal = oSerializer.Deserialize(oReader)
' 'End Using
' 'Dim oInstance As Object = Activator.CreateInstance(oSchemaType)
' 'Dim oProps = oSchemaType.GetProperties()
' 'Dim oHead = oProps.
' ' Where(Function(p) p.Name = "Head").
' ' SingleOrDefault()
' 'Dim oDescriptionHead As CustomAttributeData = oHead.CustomAttributes.
' ' Where(Function(d) d.AttributeType.Equals(GetType(DescriptionAttribute))).
' ' SingleOrDefault()
' 'Dim oDescriptionHeadValue = oDescriptionHead.ConstructorArguments.First().Value
' 'Dim oHeadXml = oDocument.Select($"//MESOWebService/{oDescriptionHeadValue}")
' 'Dim oPositions As PropertyInfo = oProps.
' ' Where(Function(p) p.Name = "Positions").
' ' SingleOrDefault()
' 'Dim oDescriptionPos As CustomAttributeData = oPositions.CustomAttributes.
' ' Where(Function(d) d.AttributeType.Equals(GetType(DescriptionAttribute))).
' ' SingleOrDefault()
' 'Dim oDescriptionPosValue = oDescriptionPos.ConstructorArguments.First().Value
' 'Dim oPosXml = oDocument.Select($"//MESOWebService/{oDescriptionPosValue}")
' pDocument.Type = oDocumentType
' Return pDocument
' Catch ex As Exception
' Logger.Error(ex)
' Dim oException As Exception = ex
' If ex.InnerException IsNot Nothing Then
' oException = ex.InnerException
' End If
' Throw oException
' End Try
' End Using
'End Function
Private Function GetTemplateName(pDocument As XPathNavigator) As String
Dim oTemplateName = pDocument.
SelectSingleNode("//MESOWebService").
GetAttribute("Template", "")
Return oTemplateName
End Function
End Class
End Namespace

View File

@@ -1,28 +0,0 @@
Namespace Documents
Public Class DocumentMatch
Public Shared Property TypeMatchingTable As New Dictionary(Of String, DocumentType) From {
{"orders", DocumentType.Order},
{"ordrsp", DocumentType.OrderResponse},
{"desadv", DocumentType.DispatchNotification},
{"invoic", DocumentType.Invoice}
}
Public Shared Property SchemaMatchingTable As New Dictionary(Of DocumentType, Type) From {
{DocumentType.Order, GetType(Schemas.OrderSchema)}
}
Public Shared Function GetDocumentTypeFromTemplateName(pTemplateName As String) As DocumentType
Return TypeMatchingTable.
Where(Function(kv) pTemplateName.Contains(kv.Key)).
Select(Function(kv) kv.Value).
FirstOrDefault()
End Function
Public Shared Function GetDocumentSchemaFromDocumentType(pDocumentType As DocumentType) As Type
Return SchemaMatchingTable.
Where(Function(kv) pDocumentType = kv.Key).
Select(Function(kv) kv.Value).
FirstOrDefault()
End Function
End Class
End Namespace

View File

@@ -1,4 +0,0 @@
Public Class DocumentRow
Public Name As String
Public Fields As Dictionary(Of String, String)
End Class

View File

@@ -1,8 +0,0 @@
Namespace Documents
Public Enum DocumentType
Order ' Auftrag
OrderResponse ' Bestellbestätigung
DispatchNotification ' Lieferavis/ Eingangs Lieferschein
Invoice ' Rechnung
End Enum
End Namespace

View File

@@ -1,146 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{DD1AC3B9-7595-4D3C-B9BB-97C46A480FA0}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>ImporterShared</RootNamespace>
<AssemblyName>ImporterShared</AssemblyName>
<FileAlignment>512</FileAlignment>
<MyType>Windows</MyType>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<Deterministic>true</Deterministic>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>ImporterShared.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<DefineDebug>false</DefineDebug>
<DefineTrace>true</DefineTrace>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DocumentationFile>ImporterShared.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup>
<PropertyGroup>
<OptionExplicit>On</OptionExplicit>
</PropertyGroup>
<PropertyGroup>
<OptionCompare>Binary</OptionCompare>
</PropertyGroup>
<PropertyGroup>
<OptionStrict>Off</OptionStrict>
</PropertyGroup>
<PropertyGroup>
<OptionInfer>On</OptionInfer>
</PropertyGroup>
<ItemGroup>
<Reference Include="AutoMapper, Version=10.0.0.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.10.1.1\lib\net461\AutoMapper.dll</HintPath>
</Reference>
<Reference Include="DevExpress.DataAccess.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DigitalData.Modules.Database">
<HintPath>..\..\DDMonorepo\Modules.Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Filesystem">
<HintPath>..\..\DDMonorepo\Modules.Filesystem\bin\Debug\DigitalData.Modules.Filesystem.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Language">
<HintPath>..\..\DDMonorepo\Modules.Language\bin\Release\DigitalData.Modules.Language.dll</HintPath>
</Reference>
<Reference Include="DigitalData.Modules.Logging">
<HintPath>..\..\DDMonorepo\Modules.Logging\bin\Release\DigitalData.Modules.Logging.dll</HintPath>
</Reference>
<Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.10\lib\net45\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Data" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
<Reference Include="System.Xml" />
<Reference Include="System.Core" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="System.Net.Http" />
</ItemGroup>
<ItemGroup>
<Import Include="Microsoft.VisualBasic" />
<Import Include="System" />
<Import Include="System.Collections" />
<Import Include="System.Collections.Generic" />
<Import Include="System.Data" />
<Import Include="System.Diagnostics" />
<Import Include="System.Linq" />
<Import Include="System.Xml.Linq" />
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="BaseClass.vb" />
<Compile Include="Config.vb" />
<Compile Include="Documents\Document.vb" />
<Compile Include="Documents\DocumentMatch.vb" />
<Compile Include="Documents\DocumentType.vb" />
<Compile Include="Documents\DocumentLoader.vb" />
<Compile Include="IEnumerableEx.vb" />
<Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon>
</Compile>
<Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
<Compile Include="My Project\Settings.Designer.vb">
<AutoGen>True</AutoGen>
<DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile>
<Compile Include="Mapper.vb" />
<Compile Include="Schemas\Orders\Input.vb" />
<Compile Include="Schemas\Orders\Output.vb" />
<Compile Include="Schemas\Orders\ReportSource.vb" />
<Compile Include="Serializer.vb" />
<Compile Include="Winline\Account.vb" />
<Compile Include="Winline\Data.vb" />
<Compile Include="Winline\Mandator.vb" />
<Compile Include="Winline\WebService.vb" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="My Project\Resources.resx">
<Generator>VbMyResourcesResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.vb</LastGenOutput>
<CustomToolNamespace>My.Resources</CustomToolNamespace>
<SubType>Designer</SubType>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<None Include="My Project\Application.myapp">
<Generator>MyApplicationCodeGenerator</Generator>
<LastGenOutput>Application.Designer.vb</LastGenOutput>
</None>
<None Include="My Project\Settings.settings">
<Generator>SettingsSingleFileGenerator</Generator>
<CustomToolNamespace>My</CustomToolNamespace>
<LastGenOutput>Settings.Designer.vb</LastGenOutput>
</None>
<None Include="packages.config" />
</ItemGroup>
<ItemGroup />
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
</Project>

View File

@@ -1,47 +0,0 @@
Imports System.Globalization
Imports AutoMapper
Imports AutoMapper.Configuration
Public Class MapperFactory
Private Shared MapperConfig As Object
'Public Shared Function GetMapper() As Mapper
' MapperConfig = New MapperConfiguration(CreateMapperConfig())
' MapperConfig.AssertConfigurationIsValid()
' Return MapperConfig.CreateMapper()
'End Function
'Private Shared Function CreateMapperConfig() As MapperConfigurationExpression
' Dim oConfig As New MapperConfigurationExpression()
' oConfig.CreateMap(Of String, Integer)().ConvertUsing(New IntegerTypeConverter())
' oConfig.CreateMap(Of String, Decimal)().ConvertUsing(New DecimalTypeConverter())
' oConfig.CreateMap(Of String, DateTime)().ConvertUsing(New DateTimeTypeConverter())
' oConfig.CreateMap(Of Schemas.Orders.Input.MESOWebService, Schemas.Orders.Output.MESOWebService)()
' oConfig.CreateMap(Of Schemas.Orders.Input.MESOWebServiceEXIMVRG_ordersT025, Schemas.Orders.Output.MESOWebServiceEXIMVRG_ordersT025)()
' oConfig.CreateMap(Of Schemas.Orders.Input.MESOWebServiceEXIMVRG_ordersT026, Schemas.Orders.Output.MESOWebServiceEXIMVRG_ordersT026)()
' Return oConfig
'End Function
Private Class DateTimeTypeConverter
Implements ITypeConverter(Of String, DateTime)
Public Function Convert(source As String, destination As Date, context As ResolutionContext) As Date Implements ITypeConverter(Of String, Date).Convert
Return System.Convert.ToDateTime(source)
End Function
End Class
Private Class IntegerTypeConverter
Implements ITypeConverter(Of String, Integer)
Public Function Convert(source As String, destination As Integer, context As ResolutionContext) As Integer Implements ITypeConverter(Of String, Integer).Convert
Return System.Convert.ToInt32(source)
End Function
End Class
Private Class DecimalTypeConverter
Implements ITypeConverter(Of String, Decimal)
Public Function Convert(source As String, destination As Decimal, context As ResolutionContext) As Decimal Implements ITypeConverter(Of String, Decimal).Convert
Return System.Convert.ToDecimal(source, CultureInfo.InvariantCulture)
End Function
End Class
End Class

View File

@@ -1,62 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My.Resources
'This class was auto-generated by the StronglyTypedResourceBuilder
'class via a tool like ResGen or Visual Studio.
'To add or remove a member, edit your .ResX file then rerun ResGen
'with the /str option, or rebuild your VS project.
'''<summary>
''' A strongly-typed resource class, for looking up localized strings, etc.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Returns the cached ResourceManager instance used by this class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("ImporterShared.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Overrides the current thread's CurrentUICulture property for all
''' resource lookups using this strongly typed resource class.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set(ByVal value As Global.System.Globalization.CultureInfo)
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -1,73 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase
Private Shared defaultInstance As MySettings = CType(Global.System.Configuration.ApplicationSettingsBase.Synchronized(New MySettings), MySettings)
#Region "My.Settings Auto-Save Functionality"
#If _MyType = "WindowsForms" Then
Private Shared addedHandler As Boolean
Private Shared addedHandlerLockObject As New Object
<Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Private Shared Sub AutoSaveSettings(ByVal sender As Global.System.Object, ByVal e As Global.System.EventArgs)
If My.Application.SaveMySettingsOnExit Then
My.Settings.Save()
End If
End Sub
#End If
#End Region
Public Shared ReadOnly Property [Default]() As MySettings
Get
#If _MyType = "WindowsForms" Then
If Not addedHandler Then
SyncLock addedHandlerLockObject
If Not addedHandler Then
AddHandler My.Application.Shutdown, AddressOf AutoSaveSettings
addedHandler = True
End If
End SyncLock
End If
#End If
Return defaultInstance
End Get
End Property
End Class
End Namespace
Namespace My
<Global.Microsoft.VisualBasic.HideModuleNameAttribute(), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute()> _
Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.ImporterShared.My.MySettings
Get
Return Global.ImporterShared.My.MySettings.Default
End Get
End Property
End Module
End Namespace

View File

@@ -1,7 +0,0 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" UseMySettingsClassName="true">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>

View File

@@ -1,8 +0,0 @@
Namespace Schemas
Public Class BaseSchema
Public Property Template As String
Public Property TemplateType As Integer
Public Property [Option] As Integer
Public Property PrintVoucher As Integer
End Class
End Namespace

View File

@@ -1,28 +0,0 @@
Namespace Schemas.Orders
'Public Class Helpers
' Public Shared Function GetOrderHead(Of T)(pData As IMesoWebservice) As T
' Dim oHead As T = pData.Items.
' Where(Function(i) TypeOf i Is T).
' FirstOrDefault()
' Return oHead
' End Function
' Public Shared Sub SetOrderHead(Of T)(pData As IMesoWebservice, pUpdateFunction As Action(Of T))
' Dim oHead As T = pData.Items.
' Where(Function(i) TypeOf i Is T).
' SetValue(Sub(pObject As T)
' pUpdateFunction(pObject)
' End Sub).
' FirstOrDefault()
' End Sub
' Public Shared Function GetOrderPositions(Of T)(pData As IMesoWebservice) As List(Of T)
' Dim oPositions As List(Of T) = pData.Items.
' Where(Function(i) TypeOf i Is T).
' Select(Of T)(Function(i) i).
' ToList()
' Return oPositions
' End Function
'End Class
End Namespace

View File

@@ -1,713 +0,0 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict Off
Option Explicit On
Imports System.Xml.Serialization
'
'This source code was auto-generated by xsd, Version=4.8.3928.0.
'
Namespace Schemas.Orders.Input
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0"),
System.SerializableAttribute(),
System.Diagnostics.DebuggerStepThroughAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True),
System.Xml.Serialization.XmlRootAttribute([Namespace]:="", IsNullable:=False)>
Partial Public Class MESOWebService
Private itemsField() As Object
Private templateTypeField As String
Private templateField As String
Private optionField As String
Private amountField As String
Private extEntryField As String
Private printVoucherField As String
Private extInsertField As String
Private changeLotSizeField As String
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute("EXIM-VRG_ordersT025", GetType(MESOWebServiceEXIMVRG_ordersT025), Form:=System.Xml.Schema.XmlSchemaForm.Unqualified),
System.Xml.Serialization.XmlElementAttribute("EXIM-VRG_ordersT026", GetType(MESOWebServiceEXIMVRG_ordersT026), Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)>
Public Property Items() As Object()
Get
Return Me.itemsField
End Get
Set
Me.itemsField = Value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="string")>
Public Property TemplateType() As String
Get
Return Me.templateTypeField
End Get
Set
Me.templateTypeField = Value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute()>
Public Property Template() As String
Get
Return Me.templateField
End Get
Set
Me.templateField = Value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="string")>
Public Property [option]() As String
Get
Return Me.optionField
End Get
Set
Me.optionField = Value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="string")>
Public Property amount() As String
Get
Return Me.amountField
End Get
Set
Me.amountField = Value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="string")>
Public Property extEntry() As String
Get
Return Me.extEntryField
End Get
Set
Me.extEntryField = Value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="string")>
Public Property printVoucher() As String
Get
Return Me.printVoucherField
End Get
Set
Me.printVoucherField = Value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="string")>
Public Property extInsert() As String
Get
Return Me.extInsertField
End Get
Set
Me.extInsertField = Value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlAttributeAttribute(DataType:="string")>
Public Property ChangeLotSize() As String
Get
Return Me.changeLotSizeField
End Get
Set
Me.changeLotSizeField = Value
End Set
End Property
End Class
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true)> _
Partial Public Class MESOWebServiceEXIMVRG_ordersT025
Private bELEGKEYField As String
Private fakt_KontonummerField As String
Private laufnummerField As String
Private fakt_NameField As String
Private fakt_StrasseField As String
Private fakt_PLZField As String
Private fakt_OrtField As String
Private fakt_AnsprechpartnerField As String
Private lief_KontonummerField As String
Private lief_NameField As String
Private lief_StrasseField As String
Private lief_PLZField As String
Private lief_OrtField As String
Private belegartField As String
Private datum_AuftragBestellungField As String
Private datum_AuftragBestellungFieldSpecified As Boolean
Private auftragsBestellnummerField As String
Private leistungsdatumField As String
Private leistungsdatumFieldSpecified As Boolean
Private auftragsreferenzField As String
Private infotextField As String
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType:="string")> _
Public Property BELEGKEY() As String
Get
Return Me.bELEGKEYField
End Get
Set
Me.bELEGKEYField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Fakt_Kontonummer() As String
Get
Return Me.fakt_KontonummerField
End Get
Set
Me.fakt_KontonummerField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Laufnummer() As String
Get
Return Me.laufnummerField
End Get
Set
Me.laufnummerField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Fakt_Name() As String
Get
Return Me.fakt_NameField
End Get
Set
Me.fakt_NameField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Fakt_Strasse() As String
Get
Return Me.fakt_StrasseField
End Get
Set
Me.fakt_StrasseField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Fakt_PLZ() As String
Get
Return Me.fakt_PLZField
End Get
Set
Me.fakt_PLZField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Fakt_Ort() As String
Get
Return Me.fakt_OrtField
End Get
Set
Me.fakt_OrtField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Fakt_Ansprechpartner() As String
Get
Return Me.fakt_AnsprechpartnerField
End Get
Set
Me.fakt_AnsprechpartnerField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Lief_Kontonummer() As String
Get
Return Me.lief_KontonummerField
End Get
Set
Me.lief_KontonummerField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Lief_Name() As String
Get
Return Me.lief_NameField
End Get
Set
Me.lief_NameField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Lief_Strasse() As String
Get
Return Me.lief_StrasseField
End Get
Set
Me.lief_StrasseField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Lief_PLZ() As String
Get
Return Me.lief_PLZField
End Get
Set
Me.lief_PLZField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Lief_Ort() As String
Get
Return Me.lief_OrtField
End Get
Set
Me.lief_OrtField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Belegart() As String
Get
Return Me.belegartField
End Get
Set
Me.belegartField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute("Datum_Auftrag-Bestellung", Form:=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType:="string")> _
Public Property Datum_AuftragBestellung() As String
Get
Return Me.datum_AuftragBestellungField
End Get
Set
Me.datum_AuftragBestellungField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlIgnoreAttribute()> _
Public Property Datum_AuftragBestellungSpecified() As Boolean
Get
Return Me.datum_AuftragBestellungFieldSpecified
End Get
Set
Me.datum_AuftragBestellungFieldSpecified = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute("Auftrags-Bestellnummer", Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property AuftragsBestellnummer() As String
Get
Return Me.auftragsBestellnummerField
End Get
Set
Me.auftragsBestellnummerField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType:="string")> _
Public Property Leistungsdatum() As String
Get
Return Me.leistungsdatumField
End Get
Set
Me.leistungsdatumField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlIgnoreAttribute()> _
Public Property LeistungsdatumSpecified() As Boolean
Get
Return Me.leistungsdatumFieldSpecified
End Get
Set
Me.leistungsdatumFieldSpecified = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Auftragsreferenz() As String
Get
Return Me.auftragsreferenzField
End Get
Set
Me.auftragsreferenzField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Infotext() As String
Get
Return Me.infotextField
End Get
Set
Me.infotextField = value
End Set
End Property
End Class
'''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0"), _
System.SerializableAttribute(), _
System.Diagnostics.DebuggerStepThroughAttribute(), _
System.ComponentModel.DesignerCategoryAttribute("code"), _
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true)> _
Partial Public Class MESOWebServiceEXIMVRG_ordersT026
Private bELEGKEYField As String
Private zeilennummerField As String
Private datentypField As String
Private artikelnummerField As String
Private bezeichnungField As String
Private notizblockField As String
Private lieferantenartikelnummerField As String
Private menge_bestelltField As String
Private menge_bestelltFieldSpecified As Boolean
Private menge_geliefertField As String
Private colliField As String
Private einzelpreisField As String
Private einzelpreisFieldSpecified As Boolean
Private zeilenrabatt1Field As String
Private zeilenrabatt1FieldSpecified As Boolean
Private zeilenrabatt2Field As String
Private zeilenrabatt2FieldSpecified As Boolean
Private zeilenrabatt3Field As String
Private zeilenrabatt3FieldSpecified As Boolean
Private zeilenrabatt4Field As String
Private zeilenrabatt4FieldSpecified As Boolean
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType:="string")> _
Public Property BELEGKEY() As String
Get
Return Me.bELEGKEYField
End Get
Set
Me.bELEGKEYField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified, DataType:="string")> _
Public Property Zeilennummer() As String
Get
Return Me.zeilennummerField
End Get
Set
Me.zeilennummerField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Datentyp() As String
Get
Return Me.datentypField
End Get
Set
Me.datentypField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Artikelnummer() As String
Get
Return Me.artikelnummerField
End Get
Set
Me.artikelnummerField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Bezeichnung() As String
Get
Return Me.bezeichnungField
End Get
Set
Me.bezeichnungField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Notizblock() As String
Get
Return Me.notizblockField
End Get
Set
Me.notizblockField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Lieferantenartikelnummer() As String
Get
Return Me.lieferantenartikelnummerField
End Get
Set
Me.lieferantenartikelnummerField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Menge_bestellt() As String
Get
Return Me.menge_bestelltField
End Get
Set
Me.menge_bestelltField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlIgnoreAttribute()> _
Public Property Menge_bestelltSpecified() As Boolean
Get
Return Me.menge_bestelltFieldSpecified
End Get
Set
Me.menge_bestelltFieldSpecified = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Menge_geliefert() As String
Get
Return Me.menge_geliefertField
End Get
Set
Me.menge_geliefertField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Colli() As String
Get
Return Me.colliField
End Get
Set
Me.colliField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Einzelpreis() As String
Get
Return Me.einzelpreisField
End Get
Set
Me.einzelpreisField = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlIgnoreAttribute()> _
Public Property EinzelpreisSpecified() As Boolean
Get
Return Me.einzelpreisFieldSpecified
End Get
Set
Me.einzelpreisFieldSpecified = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Zeilenrabatt1() As String
Get
Return Me.zeilenrabatt1Field
End Get
Set
Me.zeilenrabatt1Field = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlIgnoreAttribute()> _
Public Property Zeilenrabatt1Specified() As Boolean
Get
Return Me.zeilenrabatt1FieldSpecified
End Get
Set
Me.zeilenrabatt1FieldSpecified = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Zeilenrabatt2() As String
Get
Return Me.zeilenrabatt2Field
End Get
Set
Me.zeilenrabatt2Field = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlIgnoreAttribute()> _
Public Property Zeilenrabatt2Specified() As Boolean
Get
Return Me.zeilenrabatt2FieldSpecified
End Get
Set
Me.zeilenrabatt2FieldSpecified = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Zeilenrabatt3() As String
Get
Return Me.zeilenrabatt3Field
End Get
Set
Me.zeilenrabatt3Field = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlIgnoreAttribute()> _
Public Property Zeilenrabatt3Specified() As Boolean
Get
Return Me.zeilenrabatt3FieldSpecified
End Get
Set
Me.zeilenrabatt3FieldSpecified = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlElementAttribute(Form:=System.Xml.Schema.XmlSchemaForm.Unqualified)> _
Public Property Zeilenrabatt4() As String
Get
Return Me.zeilenrabatt4Field
End Get
Set
Me.zeilenrabatt4Field = value
End Set
End Property
'''<remarks/>
<System.Xml.Serialization.XmlIgnoreAttribute()> _
Public Property Zeilenrabatt4Specified() As Boolean
Get
Return Me.zeilenrabatt4FieldSpecified
End Get
Set
Me.zeilenrabatt4FieldSpecified = value
End Set
End Property
End Class
End Namespace

View File

@@ -1,55 +0,0 @@
Imports System.ComponentModel
Namespace Schemas
''' <summary>
''' XML Schema to import the Data-Files
''' </summary>
Public Class OrderSchema
Inherits BaseSchema
<Description("EXIM-VRG_ordersT025")>
Public Property Head As New OrderHead
<Description("EXIM-VRG_ordersT026")>
Public Property Positions As New List(Of OrderPosition)
Public Class OrderHead
<Description("BELEGKEY")>
Public Property DocumentKey As String
<Description("Fakt_Kontonummer")>
Public Property AccountNumber As String
<Description("Laufnummer")>
Public Property RunningNumber As String
<Description("Bestellt_von")>
Public Property OrderedBy As String
<Description("Lief_Kontonummer")>
Public Property AccountNumber2 As String
<Description("Belegart")>
Public Property DocumentType As Integer
<Description("Datum_Auftrag-Bestellung")>
Public Property OrderDate As Date
<Description("Auftrags-Bestellnummer")>
Public Property OrderNumber As String
<Description("Infotext")>
Public Property InfoText As String
End Class
Public Class OrderPosition
<Description("BELEGKEY")>
Public Property DocumentKey As String
<Description("Zeilennummer")>
Public Property LineNumber As String
<Description("Artikelnummer")>
Public Property ArticleNumber As String
<Description("Bezeichnung")>
Public Property ArticleDescription As String
<Description("Lieferantenartikelnummer")>
Public Property VendorNumber As String
End Class
End Class
End Namespace

View File

@@ -1,21 +0,0 @@
Imports DevExpress.DataAccess.ObjectBinding
Imports System.Collections.Generic
Imports System.ComponentModel
Namespace Schemas.Orders
<DisplayName("OrdersReport"), HighlightedClass>
Public Class ReportSource
<HighlightedMember>
Public Property Head As Orders.Input.MESOWebServiceEXIMVRG_ordersT025
<HighlightedMember>
Public Property Positions As IEnumerable(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT026)
<HighlightedMember>
Public Iterator Function GetPositionList() As IEnumerable(Of Orders.Input.MESOWebServiceEXIMVRG_ordersT026)
For Each oPosition In Positions
Yield oPosition
Next
End Function
End Class
End Namespace

View File

@@ -1,28 +0,0 @@
Namespace Schemas
Public Class Schema
Public Enum ColumnType As Integer
[String]
[Integer]
[Date]
[Boolean]
[Decimal]
End Enum
Public Property Tables As New List(Of Table)
Public Property Name As String
Class Table
Public Property Name As String
Public Property Columns As New List(Of Column)
End Class
Class Column
Public Property Name As String
Public Property Required As String
Public Property DataType As ColumnType
End Class
End Class
End Namespace

View File

@@ -1,116 +0,0 @@
Imports System.IO
Imports System.Xml
Imports System.Xml.XPath
Imports DigitalData.Modules.Logging
Namespace Schemas
Public Class SchemaLoader
Inherits BaseClass
Private ns As XNamespace = "http://www.w3.org/2001/XMLSchema"
Public SchemaList As List(Of FileInfo)
Public Sub New(pLogConfig As LogConfig)
MyBase.New(pLogConfig, pLogConfig.GetLogger)
End Sub
Public Function LoadFiles(pSchemaDirectory) As Boolean
If pSchemaDirectory = String.Empty Then
Throw New ArgumentNullException("SchemaDirectory")
End If
Logger.Info("Loading files from directory [{0}]", pSchemaDirectory)
Try
Dim oDirectory As New DirectoryInfo(pSchemaDirectory)
Dim oFiles = oDirectory.GetFiles()
Logger.Debug("Found [{0}] files in directory [{1}]", oFiles.Count, oDirectory)
SchemaList = oFiles.ToList()
Return True
Catch ex As Exception
Logger.Error(ex)
Throw New IO.IOException($"Could not load files from directory {pSchemaDirectory}", ex)
End Try
End Function
Public Function GetSchemaFromFile(pSchemaFilePath As String) As Schema
Dim oSchema As New Schema
Dim oElements = GetSchemaElements(pSchemaFilePath)
For Each oElement In oElements
Dim oColumns = GetElementColumns(oElement)
Dim oSchemaColumns As New List(Of Schema.Column)
For Each oColumn As XElement In oColumns
Dim oName = XmlData.GetElementAttribute(oColumn, "name")
Dim oMinOccurs = XmlData.GetElementAttribute(oColumn, "minOccurs")
Dim oMaxOccurs = XmlData.GetElementAttribute(oColumn, "maxOccurs")
Dim oType = GetElementType(oColumn)
Dim oRequired = False
If oMinOccurs = 1 And oMaxOccurs = 1 Then
oRequired = True
End If
Dim oSchemaColumn As New Schema.Column With {
.Name = oName,
.Required = oRequired,
.DataType = oType
}
oSchemaColumns.Add(oSchemaColumn)
Next
oSchema.Tables.Add(New Schema.Table With {
.Name = XmlData.GetElementAttribute(oElement, "name"),
.Columns = oSchemaColumns
})
Next
Return oSchema
End Function
Public Function GetElementType(pElement As XElement) As Schema.ColumnType
Dim oTypeString = XmlData.GetElementAttribute(pElement, "type")
If oTypeString Is Nothing Then
Dim oRestrictionElement As XElement = pElement.
Descendants(ns + "restriction").
FirstOrDefault()
oTypeString = XmlData.GetElementAttribute(oRestrictionElement, "base")
End If
Select Case oTypeString
Case "xs:date"
Return Schema.ColumnType.Date
Case "xs:integer"
Return Schema.ColumnType.Integer
Case "xs:decimal"
Return Schema.ColumnType.Decimal
Case "xs:boolean"
Return Schema.ColumnType.Boolean
Case Else
Return Schema.ColumnType.String
End Select
End Function
Public Function GetSchemaElements(pSchemaFilePath As String) As List(Of XElement)
Dim oText As String = IO.File.ReadAllText(pSchemaFilePath)
Dim oDoc = XDocument.Parse(oText)
Return XmlData.GetElementsFromElement(oDoc, "choice", ns)
End Function
Public Function GetElementColumns(pElement As XElement) As List(Of XElement)
Return XmlData.GetElementsFromElement(pElement, "sequence", ns)
End Function
End Class
End Namespace

View File

@@ -1,461 +0,0 @@
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.Database
Imports ImporterShared
Imports System.Text.RegularExpressions
Namespace Winline
Public Class Data
Inherits BaseClass
Private ReadOnly Database As MSSQLServer
Private ReadOnly Config As Config
Public Accounts As New List(Of Account)
Public Mandators As New List(Of Mandator)
Public DocumentKinds As New List(Of DocumentKind)
Public Years As List(Of Integer)
Public XmlConfigHead As List(Of XmlItem)
Public XmlConfigPositions As List(Of XmlItem)
Public Const ALL_MESOCOMP = "mesocomp"
Public Const V21_ARTICLENUMBER = "c011"
Public Const V21_REPLACEMENTARTICLENUMBER = "c123"
Public Const V50_ACCOUNTNUMBER = "c002"
Public Const V50_ACCOUNTNAME = "c003"
Public Const T45_KEY = "c000"
Public Const T45_NAME = "c001"
Public Const T45_CONTACTNUMBER = "c063"
Public Const V05_ACCOUNTID = "c002"
Public Const V05_ACCOUNTNAME = "c003"
Public Const T357_KINDID = "c030"
Public Const T357_KINDNAME = "c001"
Public Const T01_DATABASEINFO = "c004"
Public Const T01_MANDATORID = "c000"
Public Const T01_MANDATORNAME = "c003"
Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer, pConfig As Config)
MyBase.New(pLogConfig, pLogConfig.GetLogger())
Database = pDatabase
Config = pConfig
End Sub
<DebuggerStepThrough>
Public Function GetWinLineYear(pYear As Integer)
Return (pYear - 1900) * 12
End Function
<DebuggerStepThrough>
Public Function GetWinLineYear()
Return GetWinLineYear(Config.GetYear)
End Function
Public Sub LoadAccounts(pMandator As Mandator)
Logger.Info("Loading Accounts for Mandator [{0}]", pMandator)
Dim oYear = GetWinLineYear()
Try
Dim oSQL = $"
SELECT DISTINCT
[c002],
[c003]
FROM [{pMandator.Server}].[{pMandator.Database}].[dbo].[v005]
WHERE
c139 IS NULL
AND mesocomp = '{pMandator.Id}'
AND mesoyear = {oYear}"
Dim oTable = Database.GetDatatable(oSQL)
Dim oAccounts As New List(Of Account)
For Each oRow As DataRow In oTable.Rows
oAccounts.Add(New Account With {
.Id = oRow.Item(V05_ACCOUNTID),
.Name = oRow.Item(V05_ACCOUNTNAME),
.Mandator = pMandator.Id
})
Next
Accounts.AddRange(oAccounts)
Logger.Info("[{0}] Accounts loaded for Mandator [{1}]", oAccounts.Count, pMandator)
Catch ex As Exception
Logger.Warn("Could not load Accounts for Mandator [{0}]", pMandator)
Logger.Error(ex)
End Try
End Sub
Public Sub LoadMandators()
Try
Dim oSQL = "SELECT [c000], [c003], [c004] FROM [cwlsystem].[dbo].[T001SRV] (NOLOCK)"
Dim oTable = Database.GetDatatable(oSQL)
Mandators.Clear()
For Each oRow As DataRow In oTable.Rows
Dim oDbInfo = SplitConnectionInfo(oRow)
Dim oMandator = New Mandator With {
.Id = oRow.Item(T01_MANDATORID),
.Name = oRow.Item(T01_MANDATORNAME),
.Database = oDbInfo.Item1,
.Server = oDbInfo.Item2
}
Dim oMandatorConfig As Config.MandatorConfig = Config.Mandators.
Where(Function(m) oMandator.Id = m.Name).
SingleOrDefault()
If oMandatorConfig IsNot Nothing Then
oMandator.IsWhitelisted = True
oMandator.Regex = oMandatorConfig.ArticleRegex
oMandator.Order = oMandatorConfig.Order
End If
Mandators.Add(oMandator)
Next
Logger.Info("[{0}] Mandators loaded", Mandators.Count)
Catch ex As Exception
Logger.Warn("Could not load Mandators")
Logger.Error(ex)
End Try
End Sub
Public Sub LoadEconomicYears()
Dim oCurrentYear = Now.Year
Dim oRange As IEnumerable(Of Integer) = Enumerable.Range(oCurrentYear - 10, 12).ToList()
Years = oRange
End Sub
Public Sub LoadDocumentKinds(pMandators As List(Of Mandator))
Dim oDocumentKinds As New List(Of DocumentKind)
Dim oMandatorString = String.Join(",", pMandators.Select(Function(m) $"'{m.Id}'").ToArray)
Dim oYear As Integer = GetWinLineYear()
DocumentKinds.Clear()
For Each oMandator As Mandator In pMandators
Try
Dim oSQL = $"
SELECT
[c030],
[c001],
[mesocomp]
FROM [{oMandator.Database}].[dbo].[t357] (NOLOCK)
WHERE (
[c001] LIKE 'Werk%(VK)' OR
[c001] LIKE 'Werk%(WK)'
)
AND [mesocomp] = '{oMandator.Id}' AND [mesoyear] = {oYear}"
Dim oTable As DataTable = Database.GetDatatable(oSQL)
If oTable.Rows.Count = 0 Then
Logger.Warn("No DocumentKinds found for Mandator [{0}]", oMandator.Id)
Continue For
End If
For Each oRow As DataRow In oTable.Rows
oDocumentKinds.Add(New DocumentKind With {
.Id = oRow.Item(T357_KINDID),
.Name = oRow.Item(T357_KINDNAME),
.Mandator = oRow.Item(ALL_MESOCOMP)
})
Next
Catch ex As Exception
Logger.Warn("Could not load DocumentKinds")
Logger.Error(ex)
End Try
Next
DocumentKinds = oDocumentKinds.ToList()
End Sub
Public Function TryGetAccount(pGLN As String, pMandator As Mandator) As Account
Try
If pGLN Is Nothing OrElse pGLN = String.Empty Then
Return Nothing
End If
Dim oYear As Integer = GetWinLineYear()
Dim oSQL = $"
SELECT
[c002], -- Kundennummer
[c003] -- Kundenname
FROM [{pMandator.Database}].[dbo].[v050]
WHERE [c004] = 2 -- KontoTyp
AND [c260] = '{pGLN}'
AND [mesocomp] = '{pMandator.Id}' and [mesoyear] = {oYear}"
Dim oTable As DataTable = Database.GetDatatable(oSQL)
' GLN not found in this Mandator, continue to next one
If oTable.Rows.Count = 0 Then
Logger.Debug("GLN [{0}] was not found in Mandator: [{1}]", pGLN, pMandator.Id)
Return Nothing
End If
' Duplicate GLN, exit and do nothing about this number
If oTable.Rows.Count > 1 Then
Logger.Warn("GLN [{0}] was found more than once in Mandator: [{1}]", pGLN, pMandator.Id)
Return Nothing
End If
Dim oRow As DataRow = oTable.Rows.Item(0)
Dim oAccountNumber As String = Utils.NotNull(oRow.Item(V50_ACCOUNTNUMBER), String.Empty)
Dim oAccountName As String = Utils.NotNull(oRow.Item(V50_ACCOUNTNAME), String.Empty)
Return New Account With {
.Id = oAccountNumber,
.Name = oAccountName,
.Mandator = pMandator.Id
}
Catch ex As Exception
Logger.Warn("Error while trying to get account for GLN [{0}]", pGLN)
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function TryGetArticleNumber(pEAN As String, pMandator As Mandator) As String
Try
Dim oYear As Integer = GetWinLineYear()
Dim oSQL As String = $"
SELECT
[c011], -- Artikelnummer
[c003], -- Artikelbezeichnung
[c075], -- EAN-Nummer
[c123] -- Ersatzartikelnummer
FROM [{pMandator.Database}].[dbo].[v021]
WHERE [c075] = '{pEAN}'
AND [mesocomp] = '{pMandator.Id}' AND [mesoyear] = {oYear}"
Dim oTable As DataTable = Database.GetDatatable(oSQL)
' EAN not found in this Mandator, continue to next one
If oTable.Rows.Count = 0 Then
Logger.Debug("EAN [{0}] was not found in Mandator: [{1}]", pEAN, pMandator.Id)
Return Nothing
End If
' Duplicate EAN, exit and do nothing about this number
If oTable.Rows.Count > 1 Then
Logger.Warn("EAN [{0}] was found more than once", pEAN)
Return Nothing
End If
Dim oRow As DataRow = oTable.Rows.Item(0)
Dim oArticleNumber As String = Utils.NotNull(oRow.Item(V21_ARTICLENUMBER), String.Empty)
Return oArticleNumber
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function GetContacts(pAccountNumber As String, pMandator As Mandator) As List(Of Contact)
Try
Dim oContacts As New List(Of Contact)
Dim oYear As Integer = GetWinLineYear()
Dim oSQL As String = $"
SELECT
[c000], -- Key
[c001], -- Name
[c063] -- Kontaktnummer
FROM [{pMandator.Database}].[dbo].[t045]
WHERE [c063] LIKE '{pAccountNumber}-%'
AND [mesocomp] = '{pMandator.Id}' AND [mesoyear] = {oYear}"
Dim oTable As DataTable = Database.GetDatatable(oSQL)
' Contact not found in this Mandator, continue to next one
If oTable.Rows.Count = 0 Then
Logger.Debug("Contact for Account [{0}] was not found in Mandator: [{1}]", pAccountNumber, pMandator.Id)
Return Nothing
End If
For Each oRow In oTable.Rows
oContacts.Add(New Contact With {
.Id = Utils.NotNull(oRow.Item(T45_KEY), Nothing),
.Name = Utils.NotNull(oRow.Item(T45_NAME), Nothing),
.Number = Utils.NotNull(oRow.Item(T45_CONTACTNUMBER), Nothing)
})
Next
Return oContacts
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function GetReplacementArticleNumber(pArticleNumber As String, pMandator As Mandator)
Try
Dim oYear As Integer = GetWinLineYear()
Dim oSQL As String = $"
SELECT
[c011], -- Artikelnummer
[c003], -- Artikelbezeichnung
[c075], -- EAN-Nummer
[c123] -- Ersatzartikelnummer
FROM [{pMandator.Database}].[dbo].[v021]
WHERE [c011] = '{pArticleNumber}'
AND [mesocomp] = '{pMandator.Id}' AND [mesoyear] = {oYear}"
Dim oTable As DataTable = Database.GetDatatable(oSQL)
' ArticleNumber not found in this Mandator, continue to next one
If oTable.Rows.Count = 0 Then
Logger.Debug("ArticleNumber [{0}] was not found in Mandator: [{1}]", pArticleNumber, pMandator.Id)
Return Nothing
End If
' Duplicate EAN, exit and do nothing about this number
If oTable.Rows.Count > 1 Then
Logger.Warn("ArticleNumber [{0}] was found more than once", pArticleNumber)
Return Nothing
End If
Dim oRow As DataRow = oTable.Rows.Item(0)
Dim oReplacementArticleNumber = Utils.NotNull(oRow.Item(V21_REPLACEMENTARTICLENUMBER), Nothing)
If oReplacementArticleNumber Is Nothing Then
Return pArticleNumber
End If
Return GetReplacementArticleNumber(oReplacementArticleNumber, pMandator)
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
End Function
Public Function FindMatchingMandatorFromOrder(pData As Schemas.Orders.Input.MESOWebService) As Mandator
Dim oPositions As List(Of Schemas.Orders.Input.MESOWebServiceEXIMVRG_ordersT026) = pData.Items.
Where(Function(i) TypeOf i Is Schemas.Orders.Input.MESOWebServiceEXIMVRG_ordersT026).
Select(Of Schemas.Orders.Input.MESOWebServiceEXIMVRG_ordersT026)(Function(i) i).
ToList()
Dim oYear = GetWinLineYear()
Dim oMandatorId As String = String.Empty
Dim oWhitelistedMandators = Mandators.
Where(Function(m) m.IsWhitelisted = True).
ToList()
For Each oPos In oPositions
For Each oMandator In oWhitelistedMandators
Dim oSQL As String = $"
SELECT
[c011], -- Artikelnummer
[c003], -- Artikelbezeichnung
[c075], -- EAN-Nummer
[c123] -- Ersatzartikelnummer
FROM [{oMandator.Database}].[dbo].[v021]
WHERE [c075] = '{oPos.Artikelnummer}'
AND [mesocomp] = '{oMandator.Id}' AND [mesoyear] = {oYear}"
Dim oTable As DataTable = Database.GetDatatable(oSQL)
' EAN not found in this Mandator, continue to next one
If oTable.Rows.Count = 0 Then
Logger.Debug("EAN [{0}] was not found in Mandator: [{1}]", oPos.Artikelnummer, oMandator.Id)
Continue For
End If
' Duplicate EAN, exit and do nothing about this manda
If oTable.Rows.Count > 1 Then
Logger.Warn("EAN [{0}] was found more than once. Skipping Mandator [{1}]", oPos.Artikelnummer, oMandator.Id)
Exit For
End If
Dim oRow As DataRow = oTable.Rows.Item(0)
Dim oArticleNumber As String = Utils.NotNull(oRow.Item(V21_ARTICLENUMBER), String.Empty)
' EAN was found, now we need to check it against the Regex of the current Mandantor, if one exists
If oMandator.Regex <> String.Empty Then
Try
Dim oRegex As New Regex(oMandator.Regex)
Dim oMatch = oRegex.Match(oArticleNumber)
' If ArticleNumber matches the regex, we assign it and exit
If oMatch.Success Then
oMandatorId = oMandator.Id
Exit For
Else
' If it does not match, continue to the next mandator
End If
Catch ex As Exception
Logger.Error(ex)
Logger.Warn("Regex [{0}] could not be parsed. Skipping.", oMandator.Regex)
End Try
Else
' If no regex was found, we assume the number matches
oMandatorId = oMandator.Id
End If
Next
Next
If oMandatorId = String.Empty Then
Return Nothing
Else
Return oWhitelistedMandators.
Where(Function(m) m.Id = oMandatorId).
Take(1).
SingleOrDefault()
End If
End Function
Public Sub GetXmlConfiguration()
Try
Dim oSql = $"SELECT XML_NAME, XML_ROOT, DATA_TYPE, IS_HEAD FROM [DD_ECM].[dbo].[VWEDI_XML_ITEMS]"
Dim oTable As DataTable = Database.GetDatatable(oSql)
For Each oRow As DataRow In oTable.Rows
Dim oXmlItem As New XmlItem With {
.Name = oRow.Item("XML_NAME"),
.Root = oRow.Item("XML_ROOT"),
.Type = oRow.Item("XML_TYPE")
}
Next
Catch ex As Exception
End Try
End Sub
''' <summary>
''' Turns a database info like "SQLCWLDATEN on SERVER\INSTANCE" into a Tuple of two strings
''' </summary>
''' <param name="pRow"></param>
''' <returns></returns>
Private Function SplitConnectionInfo(pRow As DataRow) As Tuple(Of String, String)
Dim oDbInfo = pRow.Item(T01_DATABASEINFO).ToString()
Dim oSplittedInfo = SplitAtString(oDbInfo.ToUpper, "ON")
Dim oServer = oSplittedInfo.Item(1).Trim()
Dim oDatabase = oSplittedInfo.Item(0).Trim()
If oDatabase.StartsWith("SQL") Then
oDatabase = oDatabase.Remove(0, 3)
End If
Return New Tuple(Of String, String)(oDatabase, oServer)
End Function
Private Function SplitAtString(pStringToSplit As String, pDelimiter As String) As List(Of String)
Dim oDelimiter As String() = New String(0) {pDelimiter}
Return pStringToSplit.
Split(oDelimiter, StringSplitOptions.None).
ToList()
End Function
End Class
End Namespace

View File

@@ -1,9 +0,0 @@
Namespace Winline
Public Class XmlItem
Public Name As String
Public Root As String
Public Type As String
Public IsHead As Boolean
End Class
End Namespace

View File

@@ -1,219 +0,0 @@
Imports System.Xml
Imports System.Net
Imports System.Net.Http
Imports System.Globalization
Imports AutoMapper
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Filesystem
Imports ImporterShared.Documents
Imports System.Text
Namespace Winline
Public Class WebService
Inherits BaseClass
Private ReadOnly Config As Config
Private ReadOnly Serializer As Serializer
Private ReadOnly Mapper As AutoMapper.Mapper
Private ReadOnly FileEx As File
Public Sub New(pLogConfig As LogConfig, pConfig As Config)
MyBase.New(pLogConfig, pLogConfig.GetLogger())
FileEx = New File(pLogConfig)
Serializer = New Serializer(pLogConfig)
Config = pConfig
'Mapper = MapperFactory.GetMapper()
End Sub
'Public Async Function TransferDocumentToWinLine(pDocument As Document) As Task(Of Boolean)
' If TypeOf pDocument.Data Is Schemas.Orders.Input.MESOWebService Then
' Return Await TransferOrderToWinline(pDocument)
' Else
' Return False
' End If
'End Function
'Private Async Function TransferOrderToWinline(pDocument As Document) As Task(Of Boolean)
' Dim oOrderOutput = TransformOrderToOutput(pDocument.Data)
' Dim oWS As Config.WebServiceConfig = Config.Webservice
' ' --- Get and create path for request/response files
' Dim oPath As String = GetBaseWebServicePath()
' If IO.Directory.Exists(oPath) = False Then
' IO.Directory.CreateDirectory(oPath)
' End If
' ' --- Build all teh filenamez and pathz
' Dim oBaseFileName As String = GetBaseFilenameForRequest()
' Dim oFileName = GetXmlFilenameWithSuffix(oBaseFileName, "Request", "xml")
' ' Relative Path for Webservice Call
' Dim oImportRelativeFilePath = IO.Path.Combine(GetDateSubDirectoryPath(Config.Webservice.ImportRelativePath), oFileName)
' ' Absolute Path to copy Request file
' Dim oImportAbsolutePath = IO.Path.Combine(Config.Webservice.ImportBasePath, Config.Webservice.ImportRelativePath)
' Dim oImportAbsoluteFilePath = IO.Path.Combine(GetDateSubDirectoryPath(oImportAbsolutePath), oFileName)
' ' --- Serialize Data into XML string
' Dim oOutputFilePath = SerializeOrder(oOrderOutput, oFileName)
' ' --- Copy file to Winline Import Directory
' Try
' IO.File.Copy(oOutputFilePath, oImportAbsoluteFilePath, True)
' Catch ex As Exception
' Logger.Error(ex)
' Throw ex
' End Try
' ' --- Prepare URL and HTTP Client
' Dim oTemplateType = 30
' Dim oTemplateName = "EXIM-VRG_orders"
' ' ActionCode: Should this be a test or not?
' ' 0 = Testcall
' ' 1 = Real call
' Dim oActionCode = 1
' ' Byref: Should data be supplied as file or as string?
' ' 0 = As String
' ' 1 = As File (relative to Winline Server directory)
' Dim oByref = 1
' Dim oURL As String = $"{oWS.BaseUrl}/ewlservice/import?User={oWS.Username}&Password={oWS.Password}&Company={pDocument.Mandator}&Type={oTemplateType}&Vorlage={oTemplateName}&ActionCode={oActionCode}&Byref={oByref}&Data={oImportRelativeFilePath}"
' Dim oClient As New HttpClient()
' Logger.Info("Creating HTTP Request to [{0}]", oWS.BaseUrl)
' ' --- Bring the action!
' Try
' Dim oResponse As HttpResponseMessage = Await oClient.GetAsync(oURL)
' Await HandleResponse(oResponse, oPath, oBaseFileName)
' Return True
' Catch ex As Exception
' Logger.Error(ex)
' Throw ex
' Finally
' oClient.Dispose()
' End Try
'End Function
Private Async Function HandleResponse(pResponse As HttpResponseMessage, pPath As String, pBaseFileNAme As String) As Task
pResponse.EnsureSuccessStatusCode()
Dim oResponseBody As String = Await pResponse.Content.ReadAsStringAsync()
Dim oContentType = pResponse.Content.Headers.ContentType.MediaType
Dim oSerializer = Serializer.GetSerializer(GetType(Schemas.MESOWebServiceResult))
Select Case oContentType
Case "text/xml"
WriteResponseFile(pPath, pBaseFileNAme, oResponseBody, "xml")
Dim oBytes As Byte() = Encoding.UTF8.GetBytes(oResponseBody)
Using oStream As New IO.MemoryStream(oBytes)
Dim oResponseObject As Schemas.MESOWebServiceResult = oSerializer.Deserialize(oStream)
For Each oDetails As Schemas.MESOWebServiceResultResultDetails In oResponseObject.ResultDetails
If oDetails.Success = True Then
Logger.Info("KeyValue: [{0}]", oDetails.KeyValue)
Logger.Info("VoucherNumber: [{0}]", oDetails.VoucherNumber)
Else
Logger.Warn("ErrorCode: [{0}]", oDetails.ErrorCode)
Logger.Warn("ErrorText: [{0}]", oDetails.ErrorText)
End If
Next
If oResponseObject.OverallSuccess = False Then
Throw New ApplicationException("Request to Webservice was unsuccessful. Please check the logs.")
End If
End Using
Case "text/html"
WriteResponseFile(pPath, pBaseFileNAme, oResponseBody, "txt")
Throw New ApplicationException(oResponseBody)
Case Else
Throw New ApplicationException(oResponseBody)
End Select
End Function
Private Function WriteResponseFile(pPath As String, pBaseFileName As String, pResponseBody As String, pExtension As String)
Try
Dim oRequestFileName As String = GetXmlFilenameWithSuffix(pBaseFileName, "Response", pExtension)
Dim oFilePath As String = IO.Path.Combine(pPath, oRequestFileName)
IO.File.WriteAllText(oFilePath, pResponseBody)
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
'Private Function TransformOrderToOutput(pData As Schemas.Orders.Input.MESOWebService) As Schemas.Orders.Output.MESOWebService
' Dim oData As Schemas.Orders.Input.MESOWebService = pData
' Dim oResult As Schemas.Orders.Output.MESOWebService = Mapper.Map(Of Schemas.Orders.Output.MESOWebService)(oData)
' Dim oItems = oData.Items.
' Select(Function(i)
' If TypeOf i Is Schemas.Orders.Input.MESOWebServiceEXIMVRG_ordersT025 Then
' Return Mapper.Map(Of Schemas.Orders.Output.MESOWebServiceEXIMVRG_ordersT025)(i)
' Else
' Return Mapper.Map(Of Schemas.Orders.Output.MESOWebServiceEXIMVRG_ordersT026)(i)
' End If
' End Function).
' ToList()
' oResult.Items = oItems.ToArray()
' Return oResult
'End Function
'Private Function SerializeOrder(pData As Schemas.Orders.Output.MESOWebService, pFileName As String) As String
' Dim oSerializer = Serializer.GetSerializer(GetType(Schemas.Orders.Output.MESOWebService))
' Dim oPath As String = GetBaseWebServicePath()
' Dim oFilePath As String = IO.Path.Combine(oPath, pFileName)
' Using oWriter = XmlWriter.Create(oFilePath, New XmlWriterSettings With {.Indent = True})
' oSerializer.Serialize(oWriter, pData)
' End Using
' Return oFilePath
'End Function
Private Function GetBaseWebServicePath() As String
Return IO.Path.Combine(FileEx.GetAppDataPath("Digital Data", "EDI Document Importer"), "WebService")
End Function
Private Function GetBaseFilenameForRequest() As String
Return $"{Now:yyyy-MM-dd_hh-mm-ffff}"
End Function
Private Function GetXmlFilenameWithSuffix(pBaseString As String, pSuffix As String, pExtension As String)
Return $"{pBaseString}-{pSuffix}.{pExtension}"
End Function
Private Function GetDateSubDirectoryPath(pBasePath As String)
Dim oDirectoryPath As String = Now.ToString("yyyy\\MM\\dd")
Dim oFullPath As String = IO.Path.Combine(pBasePath, oDirectoryPath)
If IO.Directory.Exists(oFullPath) = False Then
Try
IO.Directory.CreateDirectory(oFullPath)
Return oFullPath
Catch ex As Exception
Logger.Error(ex)
Return Nothing
End Try
Else
Return oFullPath
End If
End Function
End Class
End Namespace

View File

@@ -0,0 +1,17 @@
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Public Class BaseClass
Inherits DigitalData.Modules.Base.BaseClass
Friend Database As MSSQLServer
Public Sub New(pLogConfig As LogConfig)
MyBase.New(pLogConfig)
End Sub
Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer)
MyBase.New(pLogConfig)
Database = pDatabase
End Sub
End Class

View File

@@ -0,0 +1,10 @@
Imports DigitalData.Modules.Config.ConfigAttributes
Public Class Config
<ConnectionString>
Public Property ConnectionString As String = ""
Public Property LastUsedMandator As String = ""
Public Property Debug As Boolean = False
Public Property AutomaticPriceCalculation As Boolean = True
Public Property AutomaticLoadingOnFormOpen As Boolean = False
End Class

View File

@@ -0,0 +1,104 @@
Public Class Constants
Public Const HTTP_REQUEST_TIMEOUT_IN_SECONDS = 60
Public Const COLUMN_GUID = "GUID"
Public Const FUNCTION_GLN = "GLN"
Public Const FUNCTION_EAN = "EAN"
Public Const FUNCTION_PRICE = "PRICE"
Public Const FUNCTION_SQL = "SQL"
Public Const FUNCTION_FIELD = "FIELD"
Public Const FUNCTION_RUNNINGNUMBER = "RUNNINGNUMBER"
Public Const FUNCTION_ADDRESS = "ADDRESS"
Public Const PLACEHOLDER_CONST = "CONST"
Public Const PLACEHOLDER_FIELD = "FIELD"
Public Const TEMPLATE_TYPE_DATE = "xs:date"
Public Const TEMPLATE_TYPE_INTEGER = "xs:integer"
Public Const TEMPLATE_TYPE_DECIMAL = "xs:decimal"
Public Const TEMPLATE_TYPE_BOOLEAN = "xs:boolean"
Public Const DB_TYPE_DATE = "DATE"
Public Const DB_TYPE_INTEGER = "INTEGER"
Public Const DB_TYPE_DECIMAL = "DECIMAL"
Public Const DB_TYPE_BOOLEAN = "BOOLEAN"
Public Const ALL_MESOCOMP = "mesocomp"
Public Const V21_ARTICLENUMBER = "c002"
Public Const V21_ARTICLEDESCRIPTION = "c003"
Public Const V21_MAINARTICLENUMBER = "c011"
Public Const V21_REPLACEMENTARTICLENUMBER = "c123"
Public Const V21_EAN = "c075"
Public Const V50_ACCOUNTNUMBER = "c002"
Public Const V50_ACCOUNTNAME = "c003"
Public Const V50_STREETNAME = "c050"
Public Const V50_ZIPCODE = "c051"
Public Const V50_CITYNAME = "c052"
Public Const V50_GLN = "c260"
Public Const T45_KEY = "c000"
Public Const T45_NAME = "c001"
Public Const T45_CONTACTNUMBER = "c063"
Public Const V05_ACCOUNTID = "c002"
Public Const V05_ACCOUNTNAME = "c003"
Public Const T357_KINDID = "c030"
Public Const T357_KINDNAME = "c001"
Public Const T01_DATABASEINFO = "c004"
Public Const T01_MANDATORID = "c000"
Public Const T01_MANDATORNAME = "c003"
Public Enum ColumnType As Integer
[String]
[Integer]
[Date]
[Boolean]
[Decimal]
End Enum
Public Enum FieldErrorType
None
MissingValue
AccountNotFound
ArticleNotFound
PriceNotCalculated
MissingParameter
End Enum
Public Class FieldError
Public Type As FieldErrorType
Public Message As String
Public Overrides Function ToString() As String
Return $"{Message} ({Type})"
End Function
End Class
Public Enum DocumentErrorType
MandatorNotFound
MissingXmlAttribute
AttributeValidationFailed
PriceNotCalculated
End Enum
Public Class DocumentError
Public Type As DocumentErrorType
Public Message As String
Public Overrides Function ToString() As String
Return $"{Message} ({Type})"
End Function
End Class
Public Enum XmlFunction
None = 0
GLN = 1
EAN = 2
End Enum
End Class

View File

@@ -0,0 +1,108 @@
Imports System.IO
Imports MultiTool.Common.Constants
Imports MultiTool.Common.Templates
Imports MultiTool.Common.Winline.Entities
Namespace Documents
Public Class Document
Public File As FileInfo
Public Schema As Template
Public Mandator As Mandator
Public TemplateName As String
Public Property TemplateType As Integer
Public [Option] As Integer
Public PrintVoucher As Integer
''' <summary>
''' Original Values, read-only
''' </summary>
Public Property Rows As New List(Of DocumentRow)
Public Property Imported As Boolean = False
''' <summary>
''' This is used for saving the selected state via checkbox, don't remove!
''' </summary>
Public Property Selected As Boolean = False
Private DocumentErrors As New List(Of DocumentError)
Public ReadOnly Property HasErrors As Boolean
Get
Return Errors.Count > 0
End Get
End Property
Public ReadOnly Property Errors As List(Of String)
Get
Dim oRowErrors = Rows.
SelectMany(Function(row) row.Errors, Function(row, err) err.ToString).
ToList()
Dim oDocumentErrors As List(Of String) = DocumentErrors.
Select(Function(err) err.ToString()).
ToList()
Return oDocumentErrors.
Concat(oRowErrors).
ToList()
End Get
End Property
Public Sub AddDocumentError(pDocumentError As DocumentErrorType, pMessage As String)
DocumentErrors.Add(New DocumentError With {
.Type = pDocumentError,
.Message = pMessage
})
End Sub
Public ReadOnly Property MandatorId As String
Get
Return Mandator?.Id
End Get
End Property
Public ReadOnly Property CreatedAt As Date
Get
Return File?.CreationTime
End Get
End Property
Public ReadOnly Property FullName As String
Get
Return File?.FullName
End Get
End Property
Public ReadOnly Property FileName As String
Get
Return File?.Name
End Get
End Property
''' <summary>
''' Finds the first occurrence of Field and returns its value
''' </summary>
Public Function GetFieldValue(pField As String) As String
For Each oRow In Rows
For Each oField In oRow.Fields
If oField.Key = pField Then
Return oField.Value.Final
End If
Next
Next
Return Nothing
End Function
Public Overrides Function Equals(obj As Object) As Boolean
If obj Is Nothing Then
Return False
End If
Return FullName = DirectCast(obj, Document).FullName
End Function
End Class
End Namespace

View File

@@ -0,0 +1,59 @@
Imports System.IO
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Base
Imports MultiTool.Common.Templates
Namespace Documents
Public Class DocumentCleaner
Inherits BaseClass
Private ReadOnly Template As Template
Private ReadOnly FileEx As FilesystemEx
Public Sub New(pLogConfig As LogConfig, pTemplate As Template)
MyBase.New(pLogConfig)
Template = pTemplate
FileEx = New FilesystemEx(LogConfig)
End Sub
Public Function CleanImportedDocuments(pDocuments As List(Of Document)) As Boolean
Dim oResult = True
Dim oOutputDirectory = FileEx.CreateDateDirectory(Template.ArchiveDirectory)
Dim oImportedDocuments = pDocuments.
Where(Function(doc) doc.Imported = True).
ToList()
If oImportedDocuments.Count = 0 Then
Logger.Debug("No exported files found. Skipping.")
Return True
End If
Logger.Debug("Cleaning [{0}] exported files, moving to [{1}]", oImportedDocuments.Count, oOutputDirectory)
Dim oRemovedDocuments As New List(Of Document)
For Each oDocument As Document In oImportedDocuments
Try
Dim oFileinfo = New FileInfo(oDocument.FullName)
Dim oDestination = Path.Combine(oOutputDirectory, oFileinfo.Name)
File.Move(oFileinfo.FullName, oDestination)
oRemovedDocuments.Add(oDocument)
Logger.Debug("File [{0}] successfully moved.", oFileinfo.Name)
Catch ex As Exception
Logger.Warn("File [{0}] could not be moved to output directory!", oDocument.FullName)
Logger.Error(ex)
oResult = False
End Try
Next
Logger.Debug("Moved [{0}] files successfully.", oRemovedDocuments.Count)
pDocuments = pDocuments.
Except(oRemovedDocuments).
ToList()
Return oResult
End Function
End Class
End Namespace

View File

@@ -0,0 +1,815 @@
Imports System.IO
Imports System.Text.RegularExpressions
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Language
Imports MultiTool.Common.Exceptions
Imports MultiTool.Common.Templates
Imports MultiTool.Common.Winline
Imports MultiTool.Common.Winline.Entities
Imports MultiTool.Common.Constants
Imports DigitalData.Modules.Database
Imports DevExpress.Utils.CommonDialogs
Imports DigitalData.Modules.Base
Namespace Documents
Public Class DocumentLoader
Inherits BaseClass
Private ReadOnly Winline As WinlineData
Private ReadOnly MappingConfig As MappingConfig
Private ReadOnly TemplateConfig As TemplateConfig
Private ReadOnly ApplicationConfig As Config
Private ReadOnly Patterns As Patterns
Public Property Files As New List(Of Document)
Public Property FilesTotal As Integer = 0
Public Property FilesLoaded As Integer = 0
Public Event FileLoadComplete As EventHandler(Of FileLoadInfo)
Public Event FileLoadProgress As EventHandler(Of FileLoadProgressInfo)
Public Class FileLoadInfo
Public FilesLoaded As Integer
Public FilesTotal As Integer
Public Sub New(pTotal As Integer, pLoaded As Integer)
FilesTotal = pTotal
FilesLoaded = pLoaded
End Sub
End Class
Public Class FileLoadProgressInfo
Inherits FileLoadInfo
Public RunningFunction As String
Public Sub New(pTotal As Integer, pLoaded As Integer)
MyBase.New(pTotal, pLoaded)
End Sub
End Class
Public Sub New(pLogConfig As LogConfig, pWinline As WinlineData, pDatabase As MSSQLServer, pMappingConfig As MappingConfig, pTemplateConfig As TemplateConfig, pGeneralConfig As GeneralConfig, pApplicationConfig As Config)
MyBase.New(pLogConfig, pDatabase)
Winline = pWinline
MappingConfig = pMappingConfig
TemplateConfig = pTemplateConfig
ApplicationConfig = pApplicationConfig
Patterns = New Patterns(pLogConfig, pGeneralConfig)
End Sub
Public Async Function LoadFiles(pTemplate As Template, pMandator As Mandator) As Task(Of Boolean)
Logger.Info("Loading files from directory [{0}]", pTemplate.InputDirectory)
Files.Clear()
Try
Dim oDirectory As New DirectoryInfo(pTemplate.InputDirectory)
Dim oFiles = oDirectory.GetFiles()
FilesTotal = oFiles.Count
Logger.Debug("Found [{0}] files in directory [{1}]", oFiles.Count, oDirectory)
For Each oFile In oFiles
Logger.Info("Loading file [{0}]", oFile.Name)
Dim oDocument = Await LoadFile(oFile, pTemplate, pMandator)
Files.Add(oDocument)
FilesLoaded = Files.Count
Dim oInfo As New FileLoadInfo(FilesTotal, FilesLoaded)
RaiseEvent FileLoadComplete(Me, oInfo)
Next
Return True
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
End Function
Public Async Function LoadFile(pFileInfo As FileInfo, pTemplate As Template, pMandator As Mandator) As Task(Of Document)
Logger.Debug("Creating new Document object for file [{0}]", pFileInfo.Name)
Dim oDocument As New Document With {
.File = pFileInfo,
.Schema = pTemplate
}
Try
oDocument = LoadDocumentData(oDocument, pTemplate, TemplateConfig)
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
Try
oDocument = Await MatchDataFromWinLine(oDocument, Winline.Mandators, pMandator, pTemplate)
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
Try
oDocument = MarkRequiredFields(oDocument)
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
Return oDocument
End Function
Public Function MarkRequiredFields(pDocument As Document) As Document
For Each oRow In pDocument.Rows
For Each oField In oRow.Fields
If oField.Value.Final = String.Empty And oField.Value.IsRequired Then
oField.Value.AddFieldError(FieldErrorType.MissingValue, $"Attribut '{oField.Key}' ist ein Pflichtfeld, wurde aber nicht gefüllt.")
End If
Next
Next
Return pDocument
End Function
Public Sub ReplaceDocument(pDocument As Document)
Dim oIndex = Files.IndexOf(pDocument)
Files.Item(oIndex) = pDocument
End Sub
Private Function IncludeSchema(pDocument As Document, pTemplate As Template) As Document
Logger.Debug("Adding schema to Document object.")
pDocument.Schema = pTemplate
Return pDocument
End Function
''' <summary>
''' Loads a single document from the FullName Property in the Document Object
''' </summary>
''' <example>
''' A document might look like this:
''' <MESOWebService>
''' <Row1></Row1>
''' <Row2></Row2>
''' <Row3></Row3>
''' </MESOWebService>
''' </example>
Private Function LoadDocumentData(pDocument As Document, pTemplate As Template, pTemplateConfig As TemplateConfig) As Document
Logger.Debug("Loading file contents")
Dim oText As String
Dim oDoc As XDocument
Try
Logger.Debug("Loading file from fs..")
oText = IO.File.ReadAllText(pDocument.FullName)
Logger.Debug("Parsing file..")
oDoc = XDocument.Parse(oText)
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
Logger.Debug("File Loaded.")
Dim oRootElement As XElement = XmlData.GetElement(oDoc, "MESOWebService")
If oRootElement Is Nothing Then
pDocument.AddDocumentError(DocumentErrorType.MissingXmlAttribute, "Datei enthält kein MESOWebService-Attribut")
End If
Dim oTemplateName = XmlData.GetElementAttribute(oRootElement, "Template")
If oTemplateName Is Nothing Then
pDocument.AddDocumentError(DocumentErrorType.MissingXmlAttribute, "Datei enthält kein Template-Attribut")
End If
Dim oTemplateType = XmlData.GetElementAttribute(oRootElement, "TemplateType")
If oTemplateType Is Nothing Then
pDocument.AddDocumentError(DocumentErrorType.MissingXmlAttribute, "Datei enthält kein TemplateType-Attribut")
End If
Dim oOption = XmlData.GetElementAttribute(oRootElement, "option")
If oOption Is Nothing Then
pDocument.AddDocumentError(DocumentErrorType.MissingXmlAttribute, "Datei enthält kein option-Attribut")
End If
Dim oPrintVoucher = XmlData.GetElementAttribute(oRootElement, "printVoucher")
If oPrintVoucher Is Nothing Then
pDocument.AddDocumentError(DocumentErrorType.MissingXmlAttribute, "Datei enthält kein printVoucher-Attribut")
End If
' The first level of Elements are the document Rows
Dim oTopLevelElements As List(Of XElement) = oRootElement.Elements.ToList
Dim oDocumentRows As New List(Of DocumentRow)
Dim oRowSortKey As Integer = 0
' TODO: Somehow add all fields in the correct order
'
' Right now, the method of
' - first the filled field from xml
' - then the rest from schema
'
' leads to unordered fields.
For Each oTopLevelElement As XElement In oTopLevelElements
Dim oColumnSortKey = 0
Dim oFields As New Dictionary(Of String, DocumentRow.FieldValue)
Dim oSubElements = oTopLevelElement.Descendants().ToList()
Dim oTable = pTemplate.Tables.
Where(Function(t) t.Name = oTopLevelElement.Name).
FirstOrDefault()
Logger.Debug("Creating fields from [{0}] columns for Table [{1}]", oTable.Columns.Count, oTable.Name)
For Each oColumn In oTable.Columns
Dim oQuery = oSubElements.Where(Function(e) e.Name = oColumn.Name)
Dim oElementCount = oQuery.Count()
Dim oSubElement = oQuery.FirstOrDefault()
If oElementCount > 1 Then
Logger.Warn("Found [{0}] elements for column [{1}]. Using first occurrence.")
End If
If oSubElement IsNot Nothing Then
Dim oRequired = oColumn.IsRequired
Dim oValue = oSubElement.Value.Trim()
Logger.Debug("Creating existing field from Element: [{0}]", oSubElement.Name.ToString)
' TODO: Needed when we have time for date times
'If oTemplateField.DataType = Constants.ColumnType.Date Then
' Dim oDate = Date.ParseExact(oValue, "yyyy-MM-dd", CultureInfo.InvariantCulture)
' oValue = oDate.ToString("d")
'End If
Dim oFieldValue = GetFieldValueFromColumn(oColumn, oColumnSortKey)
oFieldValue.SetOriginalValue(oValue)
oFields.Add(oSubElement.Name.ToString, oFieldValue)
Else
Logger.Debug("Creating new field from Configuration: [{0}]", oColumn.Name)
Dim oFieldValue = GetFieldValueFromColumn(oColumn, oColumnSortKey)
If oColumn.Config?.IsRequired Then
oFieldValue.AddFieldError(FieldErrorType.MissingValue, $"Attribut {oSubElement.Name} wird benötigt, ist aber nicht gefüllt.")
End If
oFields.Add(oColumn.Name, oFieldValue)
End If
oColumnSortKey += 1
Next
' Create a DocumentRow object for each Top Level Element
Dim oRow = New DocumentRow With {
.SortKey = oRowSortKey,
.TableName = oTopLevelElement.Name.ToString,
.Fields = oFields
}
oRowSortKey += 1
oDocumentRows.Add(oRow)
Next
' Update the document
pDocument.TemplateName = oTemplateName
pDocument.TemplateType = oTemplateType
pDocument.Option = oOption
pDocument.PrintVoucher = oPrintVoucher
pDocument.Rows = oDocumentRows
Return pDocument
End Function
Public Function GetFieldValueFromColumn(pColumn As Template.Column, pSortKey As Integer) As DocumentRow.FieldValue
Return New DocumentRow.FieldValue(LogConfig) With {
.DataType = pColumn.DataType,
.IsRequired = pColumn.IsRequired,
.IsVirtual = pColumn.Config.IsVirtual,
.PreferExternalValue = pColumn.Config.PreferExternalValue,
.SortKey = pSortKey
}
End Function
Private Async Function MatchDataFromWinLine(pDocument As Document, pMandators As List(Of Mandator), pMandator As Mandator, pTemplate As Template) As Task(Of Document)
Dim oMandators As List(Of Mandator) = pMandators.
Where(Function(m) m.IsWhitelisted = True).
OrderBy(Function(m) m.Order).
ToList()
Dim oInfo As New FileLoadProgressInfo(FilesTotal, FilesLoaded) With {.RunningFunction = "Mandant finden"}
RaiseEvent FileLoadProgress(Me, oInfo)
Dim oMandator As Mandator = Nothing
If pMandator IsNot Nothing Then
oMandator = pMandator
Else
oMandator = Winline.FindMatchingMandatorFromOrder(pDocument)
End If
If oMandator Is Nothing Then
Logger.Warn("Mandator not found for File [{0}]", pDocument.File.Name)
' Without mandator, we just exit, life is meaningless.
pDocument.AddDocumentError(DocumentErrorType.MandatorNotFound, "Mandant nicht gefunden. Verarbeitung wurde abgebrochen.")
Else
' Set mandator befor applying any functions that depend on a valid mandator
pDocument.Mandator = oMandator
RaiseEvent FileLoadProgress(Me, New FileLoadProgressInfo(FilesTotal, FilesLoaded) With {.RunningFunction = "Winline-Funktionen"})
pDocument = Await ApplyDefinedItemFunctionsForImportAsync(pDocument, oMandator, pTemplate)
pDocument = ApplyDynamicItemFunctionsForImport(pDocument, oMandator)
RaiseEvent FileLoadProgress(Me, New FileLoadProgressInfo(FilesTotal, FilesLoaded) With {.RunningFunction = "Preis-Funktionen"})
If ApplicationConfig.AutomaticPriceCalculation = True Then
' These functions will only be applied if the document does not have errors
pDocument = Await MaybeApplyPriceFunctions(pDocument, oMandator, pTemplate)
End If
RaiseEvent FileLoadProgress(Me, New FileLoadProgressInfo(FilesTotal, FilesLoaded) With {.RunningFunction = "Feld-Funktionen"})
pDocument = ApplySQLFunctionForImport(pDocument, TemplateConfig.SqlItems)
' This function needs to be the last one because
' it can relate to any previously set value
pDocument = ApplyFieldFunctionForImport(pDocument, oMandator, pTemplate)
End If
Return pDocument
End Function
Private Function ApplySQLFunctionForImport(pDocument As Document, pSQLConfig As List(Of FieldConfig)) As Document
For Each oSQLConfigItem In pSQLConfig
For Each oFunction In oSQLConfigItem.Functions
If Not oFunction.Name = FUNCTION_SQL Then
Continue For
End If
' FieldList is a list of fields that will be changed
' Example: Setting SQL for Article StorageLocation will invoke the sql for each row
Dim oRowList = pDocument.Rows.
Where(Function(row) row.Fields.Any(Function(field) field.Key = oSQLConfigItem.Name)).
ToList()
For Each oRow As DocumentRow In oRowList
Dim oSQL = oFunction.Params
Dim oField = oRow.Fields.
Where(Function(field) field.Key = oSQLConfigItem.Name).
SingleOrDefault()
oSQL = Patterns.ReplaceForImport(pDocument, oRow, oSQL)
Dim oValue = Database.GetScalarValue(oSQL)
If oValue IsNot Nothing Then
oField.Value.SetExternalValue(oValue)
End If
Next
Next
Next
Return pDocument
End Function
''' <summary>
''' Apply price calculation to the documents products
'''
''' This needs to be strictly seperated from `ApplyDefinedItemFunctionsForImport`
''' because prices can only be calculated if GLN and EAN functions were already (successfully) processed
''' </summary>
Public Async Function MaybeApplyPriceFunctions(pDocument As Document, pMandator As Mandator, pTemplate As Template) As Task(Of Document)
If pDocument.HasErrors Then
pDocument.AddDocumentError(DocumentErrorType.PriceNotCalculated, "Der Preis konnte für mindestens eine Zeile nicht ermittelt werden, weil es noch Fehler im Dokument gibt")
Return pDocument
End If
For Each oRow As DocumentRow In pDocument.Rows
Dim oTable = pTemplate.Tables.Where(Function(table) table.Name = oRow.TableName).SingleOrDefault()
For Each oField In oRow.Fields
If oTable Is Nothing Then
Exit For
End If
Dim oColumn = oTable.Columns.Where(Function(c) c.Name = oField.Key).SingleOrDefault()
If oColumn Is Nothing Then
Continue For
End If
For Each oFunction As FieldConfig.ColumnFunction In oColumn.Config.Functions
Dim oFunctionName = oFunction.Name
Dim oFunctionParams = oFunction.Params
If oFunctionName = String.Empty Then
Continue For
End If
Logger.Debug("Running Function: [{0}]", oFunctionName)
Logger.Debug("With Parameters: [{0}]", oFunctionParams)
Dim oParamsDict = Parameters.Parse(oFunctionParams)
If oFunctionName = Constants.FUNCTION_PRICE Then
Await SetPrice(oRow, oField.Key, oParamsDict, pDocument, pMandator, pTemplate)
End If
Next
Next
Next
Return pDocument
End Function
Private Async Function ApplyDefinedItemFunctionsForImportAsync(pDocument As Document, pMandator As Mandator, pTemplate As Template) As Task(Of Document)
For Each oRow As DocumentRow In pDocument.Rows
Dim oTable = pTemplate.Tables.Where(Function(table) table.Name = oRow.TableName).SingleOrDefault()
For Each oField In oRow.Fields
If oTable Is Nothing Then
Exit For
End If
Dim oItemName As String = oField.Key
Dim oColumn = oTable.Columns.Where(Function(c) c.Name = oItemName).SingleOrDefault()
If oColumn Is Nothing Then
Continue For
End If
For Each oFunction As FieldConfig.ColumnFunction In oColumn.Config.Functions
Dim oFunctionName = oFunction.Name
Dim oFunctionParams = oFunction.Params
' The code below needs a defined function
If oFunctionName = String.Empty Then
Continue For
End If
Dim oParamsDict = Parameters.Parse(oFunctionParams)
' The main identifier will be checked for String.empty and not required.
' This makes sure that optional fields do not generate errors.
Dim oIdentifier As DocumentRow.FieldValue = oRow.Fields.GetOrDefault(oItemName)
If oIdentifier.Original = String.Empty And oIdentifier.IsRequired = False Then
Continue For
End If
Select Case oFunctionName
Case FUNCTION_GLN
SetAccountByGLN(oRow, pMandator, oItemName, Nothing, oParamsDict)
Case FUNCTION_EAN
SetArticleByEAN(oRow, pMandator, oItemName)
Case FUNCTION_RUNNINGNUMBER
Await SetVersionedRunningNumber(pDocument, oRow, pMandator, oItemName, oParamsDict)
Case FUNCTION_ADDRESS
Await SetAddressByAccountNumber(pDocument, oRow, pMandator, oItemName, oParamsDict)
End Select
Next
Next
Next
Return pDocument
End Function
Private Function ApplyFieldFunctionForImport(pDocument As Document, pMandator As Mandator, pTemplate As Template) As Document
For Each oRow As DocumentRow In pDocument.Rows
Dim oTable = pDocument.Schema.Tables.Where(Function(table) table.Name = oRow.TableName).SingleOrDefault()
For Each oField In oRow.Fields
If oTable Is Nothing Then
Logger.Warn("Table [{0}] was not found in the Schema. Exiting.", oRow.TableName)
Exit For
End If
Dim oColumn = oTable.Columns.Where(Function(c) c.Name = oField.Key).SingleOrDefault()
If oColumn Is Nothing Then
Logger.Warn("Column [{0}] was not found in Table [{0}]. Skipping.", oField.Key, oTable.Name)
Continue For
End If
For Each oFunction As FieldConfig.ColumnFunction In oColumn.Config.Functions
Dim oFunctionName = oFunction.Name
Dim oFunctionParams = oFunction.Params
Dim oParamsDict = Parameters.Parse(oFunctionParams)
If oFunctionName = FUNCTION_FIELD Then
Try
Logger.Debug("Applying function FIELD to field [{0}]", oField.Key)
Dim oParam = oParamsDict.FirstOrDefault()
If IsNothing(oParam) Then
Logger.Warn("Function FIELD needs exactly one parameter. Skipping")
Continue For
End If
Dim oFieldName = oParam.Key
Dim oSubKey = oParam.Value
Dim oReferencedField = oRow.Fields.
Where(Function(field) field.Key = oFieldName).
FirstOrDefault()
If IsNothing(oReferencedField) = False Then
Dim oRawValue = oReferencedField.Value?.GetValue(oSubKey)
Dim oValue As String = ObjectEx.NotNull(oRawValue, String.Empty)
If oValue <> String.Empty Then
oField.Value.SetExternalValue(oValue)
End If
Else
Logger.Warn("Referenced Field [{0}] was not found. Skipping.", oFieldName)
Continue For
End If
Catch ex As Exception
Logger.Warn("Function FIELD could not be applied to field [{0}]. Skipping.", oField.Key)
Continue For
End Try
End If
Next
Next
Next
Return pDocument
End Function
''' <summary>
''' Execute Mappings defined in TBMT_MAPPING_CONFIG,
''' for example mapping Article Numbers to Winline Mandators
''' </summary>
Private Function ApplyDynamicItemFunctionsForImport(pDocument As Document, pMandator As Mandator) As Document
' We only want the mapping config for things in the xml file.
' that excludes things like setting the mandator.
Dim oFilteredMappingConfig = MappingConfig.Items.
Where(Function(item) item.DestinationItem <> String.Empty).
ToList()
For Each oMapping As MappingConfigItem In oFilteredMappingConfig
' Get Source Value
Dim oField As KeyValuePair(Of String, DocumentRow.FieldValue) = pDocument.Rows.
SelectMany(Function(row) row.Fields).
Where(Function(field) field.Key = oMapping.SourceItem).
FirstOrDefault()
' Test on Regex
Dim oRegex As New Regex(oMapping.SourceRegex)
If oRegex.IsMatch(oField.Value.Final) Then
pDocument.Rows.
SelectMany(Function(row) row.Fields).
Where(Function(field) field.Key = oMapping.DestinationItem).
SetValue(Sub(field) field.Value.SetExternalValue(oMapping.DestinationValue))
Else
' don't do anything
End If
Next
Return pDocument
End Function
Private Async Function SetPrice(pRow As DocumentRow, pPriceField As String, pParamMap As Dictionary(Of String, String), pDocument As Document, pMandator As Mandator, pTemplate As Template) As Task
Dim oPriceItem As DocumentRow.FieldValue = pRow.Fields.GetOrDefault(pPriceField)
' These fields are fetched from the current row
Const PARAMETER_ARTICLE = "Article"
Dim oArticleNumberField As String = pParamMap.GetOrDefault(PARAMETER_ARTICLE, Nothing)
If oArticleNumberField Is Nothing Then
Logger.Warn("Parameter '{0}' not found for Function PRICE", PARAMETER_ARTICLE)
End If
If pRow.Fields.ContainsKey(oArticleNumberField) = False Then
Logger.Warn("Value '{0}' for Parameter '{1}' not found for Function PRICE", oArticleNumberField, PARAMETER_ARTICLE)
End If
Dim oArticleNumber As String = pRow.Fields.Item(oArticleNumberField).Final
Const PARAMETER_QUANTITY = "Quantity"
Dim oQuantityField As String = pParamMap.GetOrDefault(PARAMETER_QUANTITY, Nothing)
If oQuantityField Is Nothing Then
Logger.Warn("Parameter '{0}' not found for Function PRICE", PARAMETER_QUANTITY)
End If
Dim oQuantity As Integer = 1
If Integer.TryParse(pRow.Fields.Item(oQuantityField).Final, oQuantity) = False Then
Logger.Warn("Value for parameter '{0}' could not be parsed. Setting to 1.", PARAMETER_QUANTITY)
End If
' These fields a fetched from the head row, ie. the first row
Dim oAccountNumberField As String = pParamMap.GetOrDefault("Account", Nothing)
Dim oAccountNumber = pDocument.GetFieldValue(oAccountNumberField)
Dim oDocumentDateField As String = pParamMap.GetOrDefault("DocumentDate", Nothing)
Dim oDocumentDate = pDocument.GetFieldValue(oDocumentDateField)
Dim oDocumentKindField As String = pParamMap.GetOrDefault("DocumentKind", Nothing)
Dim oDocumentKind As Integer = 0
If Integer.TryParse(pDocument.GetFieldValue(oDocumentKindField), oDocumentKind) = False Then
Logger.Warn("Value for parameter DocumentKind could not be parsed. Setting to 0.")
End If
' TODO: Add Field Names as Constants
' TODO: Check for missing values
' TODO: This function should not be hardcoded, but be replaced with virtual field or something..
' It is related to customer SCHAUM and nothing general
Dim oWaitingDays As Integer = Await Winline.TryGetWaitingDaysAsync(oDocumentKind, pMandator)
' END TODO
Dim oArticlePrice As Double = Await Winline.TryGetArticlePriceAsync(oArticleNumber, oAccountNumber, oQuantity, oDocumentDate, pMandator, pTemplate, oWaitingDays)
If oArticlePrice > 0 Then
oPriceItem.SetExternalValue(oArticlePrice)
Logger.Info("Price for Item [{0}] set to [{1}]", pPriceField, oArticlePrice)
Else
Logger.Warn("Price for Item [{0}] could not be found!", pPriceField)
oPriceItem.AddFieldError(FieldErrorType.PriceNotCalculated, "Der Preis für diese Position konnte nicht ermittelt werden.")
End If
End Function
Private Sub SetArticleByEAN(pRow As DocumentRow, pMandator As Mandator, pArticleField As String)
Dim oNumberItem As DocumentRow.FieldValue = pRow.Fields.GetOrDefault(pArticleField)
If oNumberItem Is Nothing Then
Exit Sub
End If
Dim oArticleNumber = Winline.TryGetArticleNumber(oNumberItem.Original, pMandator)
If oArticleNumber IsNot Nothing Then
oNumberItem.SetExternalValue(oArticleNumber)
Logger.Info("EAN [{0}] resolved to ArticleNumber [{1}]", oNumberItem.Original, oArticleNumber)
Else
oNumberItem.AddFieldError(FieldErrorType.ArticleNotFound, $"EAN in Attribut '{pArticleField}' konnte nicht aufgelöst werden.")
Logger.Warn("EAN [{0}] could not be resolved ArticleNumber", oNumberItem.Original)
End If
End Sub
Private Sub SetAccountByGLN(oRow As DocumentRow, pMandator As Mandator, pNumberField As String, pNameField As String, pParams As Dictionary(Of String, String))
Try
' Try to read the Account number (which is a GLN really) and account Name
Dim oNumberItem As DocumentRow.FieldValue = oRow.Fields.GetOrDefault(pNumberField)
Dim oNameItem As DocumentRow.FieldValue = oRow.Fields.GetOrDefault(pNameField)
Dim oContainsAccountName As Boolean = Not IsNothing(oNameItem)
If oNumberItem Is Nothing Then
Exit Sub
End If
' Try to find an account that matches the GLN
Dim oAlternateField As String = pParams.GetOrDefault("AltField", String.Empty)
Dim oAccount As Account = Winline.TryGetAccount(oNumberItem.Original, pMandator, "c260", oAlternateField)
' If an account was found, set it for External and Final value
If oAccount IsNot Nothing Then
oNumberItem.SetExternalValue(oAccount.Id)
If oContainsAccountName Then
oNameItem.SetExternalValue(oAccount.Name)
Else
' TODO: What to to if name field is missing or not set?
'oRow.Fields.Add(pNameField, New DocumentRow.FieldValue() With {
' .External = oAccount.Name,
' .Final = oAccount.Name
'})
End If
Else
' If no account was found, mark it as error.
oNumberItem.AddFieldError(FieldErrorType.AccountNotFound, $"GLN in Attribut '{pNumberField}' konnte nicht aufgelöst werden.")
End If
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
End Sub
Public Async Function SetVersionedRunningNumber(pDocument As Document, pRow As DocumentRow, pMandator As Mandator, pNumberField As String, pParams As Dictionary(Of String, String)) As Task
Try
Const PARAMETER_ACCOUNT = "Account"
Dim oAccountField As String = pParams.GetOrDefault(PARAMETER_ACCOUNT, Nothing)
If oAccountField Is Nothing Then
Logger.Warn("Parameter '{0}' not found for Function RUNNINGNUMBER", PARAMETER_ACCOUNT)
End If
Dim oRunningNumberItem As DocumentRow.FieldValue = pRow.Fields.GetOrDefault(pNumberField)
Dim oRunningNumber = oRunningNumberItem.Original
' We use the Final value to work with the actual account number, not the GLN
Dim oAccountNumberItem As DocumentRow.FieldValue = pRow.Fields.GetOrDefault(oAccountField)
Dim oAccountNumber = oAccountNumberItem.Final
Dim oVersionedNumber = Await Winline.GetVersionedRunningNumberAsync(pDocument, pMandator, oAccountNumber, oRunningNumber)
If oVersionedNumber <> oRunningNumber Then
oRunningNumberItem.SetExternalValue(oVersionedNumber)
End If
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
End Function
Public Function SetAddressByAccountNumber(pDocument As Document, pRow As DocumentRow, pMandator As Mandator, pAccountField As String, pParams As Dictionary(Of String, String)) As Task
Try
Const PARAMETER_NAME = "Name"
Const PARAMETER_STREET = "Street"
Const PARAMETER_ZIP = "Zip"
Const PARAMETER_CITY = "City"
Dim oAccountNumberItem As DocumentRow.FieldValue = pRow.Fields.GetOrDefault(pAccountField)
Dim oAccountNumber = oAccountNumberItem.Final
Dim oNameField As String = pParams.GetOrDefault(PARAMETER_NAME, Nothing)
Dim oNameFieldItem As DocumentRow.FieldValue = pRow.Fields.GetOrDefault(oNameField)
If oNameField Is Nothing Then
Logger.Warn("Parameter '{0}' not found for Function ADDRESS", PARAMETER_NAME)
oAccountNumberItem.AddFieldError(FieldErrorType.MissingParameter, $"Parameter '{PARAMETER_NAME}' wurde nicht gefüllt.")
End If
Dim oStreetField As String = pParams.GetOrDefault(PARAMETER_STREET, Nothing)
Dim oStreetFieldItem As DocumentRow.FieldValue = pRow.Fields.GetOrDefault(oStreetField)
If oStreetField Is Nothing Then
Logger.Warn("Parameter '{0}' not found for Function ADDRESS", PARAMETER_STREET)
oAccountNumberItem.AddFieldError(FieldErrorType.MissingParameter, $"Parameter '{PARAMETER_STREET}' wurde nicht gefüllt.")
End If
Dim oZipField As String = pParams.GetOrDefault(PARAMETER_ZIP, Nothing)
Dim oZipFieldItem As DocumentRow.FieldValue = pRow.Fields.GetOrDefault(oZipField)
If oZipField Is Nothing Then
Logger.Warn("Parameter '{0}' not found for Function ADDRESS", PARAMETER_ZIP)
oAccountNumberItem.AddFieldError(FieldErrorType.MissingParameter, $"Parameter '{PARAMETER_ZIP}' wurde nicht gefüllt.")
End If
Dim oCityField As String = pParams.GetOrDefault(PARAMETER_CITY, Nothing)
Dim oCityFieldItem As DocumentRow.FieldValue = pRow.Fields.GetOrDefault(oCityField)
If oCityField Is Nothing Then
Logger.Warn("Parameter '{0}' not found for Function ADDRESS", PARAMETER_CITY)
oAccountNumberItem.AddFieldError(FieldErrorType.MissingParameter, $"Parameter '{PARAMETER_CITY}' wurde nicht gefüllt.")
End If
Dim oAccount = Winline.Accounts.Where(Function(a) a.Id = oAccountNumber And a.Mandator.Equals(pMandator)).SingleOrDefault()
If oAccount Is Nothing Then
Logger.Warn("Account with Id [{0}] in Mandator [{1}] could not be found.", oAccountNumber, pMandator.Id)
End If
oNameFieldItem.SetExternalValue(oAccount.Name)
oStreetFieldItem.SetExternalValue(oAccount.StreetName)
oZipFieldItem.SetExternalValue(oAccount.ZipCode)
oCityFieldItem.SetExternalValue(oAccount.CityName)
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
Return Task.CompletedTask
End Function
End Class
End Namespace

View File

@@ -0,0 +1,208 @@
Imports System.Text.RegularExpressions
Imports DigitalData.Modules.Logging
Imports MultiTool.Common.Constants
Namespace Documents
Public Class DocumentRow
Implements IComparable
''' <summary>
''' GUID to match DocumentRow with Row from Grid/DataTable
''' </summary>
Public Property Id As New Guid
''' <summary>
''' Counter to ensure consistency and order when writing XML
''' </summary>
Public Property SortKey As Integer
''' <summary>
''' Tabellen/Elementname aus XML
''' </summary>
Public Property TableName As String
''' <summary>
''' List of Row Values
''' </summary>
''' <returns></returns>
Public Property Fields As Dictionary(Of String, FieldValue)
Public ReadOnly Property HasErrors As Boolean
Get
If Errors.Count > 0 Then
Return True
Else
Return False
End If
End Get
End Property
Public ReadOnly Property Errors As List(Of FieldError)
Get
Return Fields.
Where(Function(f) f.Value.HasError).
SelectMany(Function(f) f.Value.Errors).ToList()
End Get
End Property
Public Sub New()
Id = Guid.NewGuid()
End Sub
Public Function CompareTo(other As Object) As Integer Implements IComparable.CompareTo
Return SortKey.CompareTo(DirectCast(other, DocumentRow).SortKey)
End Function
''' <summary>
''' TODO: Use this class to
''' </summary>
Public Class Field
Public ReadOnly Property Name
Public Property Value As FieldValue
Public Sub New(pName As String)
Name = pName
End Sub
End Class
Public Class FieldValue
Private _Final As String = ""
Private _External As String = ""
Private _Original As String = ""
Private Logger As Logger
Public Property DataType As ColumnType = ColumnType.String
Public Property Errors As New List(Of FieldError)
Public ReadOnly Property Original As String
Get
Return FormatValue(_Original, DataType)
End Get
End Property
Public ReadOnly Property External As String
Get
Return FormatValue(_External, DataType)
End Get
End Property
Public ReadOnly Property Final As String
Get
Return FormatValue(_Final, DataType)
End Get
End Property
Public Property IsRequired As Boolean = False
Public Property IsVirtual As Boolean = False
Public Property PreferExternalValue As Boolean = True
Public Property SortKey As Integer = 0
Public Sub New(pLogConfig As LogConfig)
Logger = pLogConfig.GetLogger()
End Sub
Public Function GetValue(pValueType As String) As String
Select Case pValueType
Case "Original"
Return Original
Case "External"
Return External
Case "Final"
Return Final
Case Else
Return Nothing
End Select
End Function
Public Sub SetValue(pValueType As String, pValue As String)
Select Case pValueType
Case "Original"
_Original = pValue
Case "External"
_External = pValue
Case "Final"
_Final = pValue
Case Else
' Noop
End Select
End Sub
Public Sub AddFieldError(pType As FieldErrorType, pMessage As String)
Errors.Add(New FieldError() With {
.Type = pType,
.Message = pMessage
})
End Sub
Public Sub SetExternalValue(pValue As String)
_External = pValue
' Set the external value as the final value, overriding the original / previous external value
' if the external value should be preferred
If PreferExternalValue = True Then
Logger.Debug("Setting Final value to [{0}] because PreferExternalValue is True", pValue)
_Final = pValue
End If
' If there is no Original value (because the field is virtual),
' set the external value as the final value regardless of the PreferExternalValue setting
If _Original = String.Empty Then
Logger.Debug("Setting Final value to [{0}] because Original value is empty", pValue)
_Final = pValue
End If
End Sub
Public Sub SetOriginalValue(pValue As String)
_Original = pValue
_Final = pValue
End Sub
Public ReadOnly Property HasError As Boolean
Get
' Required check was moved to DocumentLoader
Return Errors.Count > 0 'Or (IsRequired And Final = String.Empty)
End Get
End Property
Public Overrides Function ToString() As String
Return Final
End Function
Private Function FormatValue(pValue As String, pType As ColumnType) As String
Select Case pType
Case ColumnType.Decimal
Return FormatDecimalValue(pValue)
Case Else
Return pValue
End Select
End Function
''' <summary>
''' This function will capture values like below and format them according to winline format values
'''
''' 1000
''' 1.000
''' 1.000,00
''' </summary>
''' <param name="pValue">A string value that represents a number</param>
''' <returns>A string value which contains at dot (.) as the decimal divider, ex. 1000.00</returns>
Private Function FormatDecimalValue(pValue As String) As String
If Not pValue.Contains(","c) Then
Return pValue
End If
Dim oRegex = New Regex("(?<Value>\d+(?:\.\d+)*(?:,\d+)?)")
Dim oMatch = oRegex.Match(pValue)
If oMatch.Success Then
Dim oValue = oMatch.Groups.Item("Value").Value
Return oValue.Replace(","c, "."c)
Else
Return pValue
End If
End Function
End Class
End Class
End Namespace

View File

@@ -0,0 +1,70 @@
Public Class Exceptions
''' <summary>
''' Abstract class
''' </summary>
Public MustInherit Class MultiToolException
Inherits ApplicationException
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
''' -----------------------------------------------
Public Class DocumentLoaderException
Inherits MultiToolException
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
Public Class DatabaseException
Inherits MultiToolException
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
Public Class WebServiceException
Inherits MultiToolException
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
Public Class MissingAttributeException
Inherits MultiToolException
Public Sub New(attributeName As String)
MyBase.New(attributeName)
End Sub
End Class
Public Class MultipleAccountsException
Inherits MultiToolException
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
Public Class NoAccountException
Inherits MultiToolException
Public Sub New(message As String)
MyBase.New(message)
End Sub
End Class
Public Class LengthExceededException
Inherits MultiToolException
Public Sub New(attribute As String)
MyBase.New(attribute)
End Sub
End Class
End Class

View File

@@ -0,0 +1,22 @@
Imports System.Runtime.CompilerServices
Module IDictionaryEx
<Extension()>
Function GetOrDefault(Of TKey, TValue)(pDictionary As Dictionary(Of TKey, TValue), pKey As TKey, Optional pOnMissing As TValue = Nothing) As TValue
Dim oValue As TValue
If pKey Is Nothing Then
Return Nothing
End If
Return IIf(pDictionary.TryGetValue(pKey, oValue), oValue, pOnMissing)
End Function
<Extension()>
Function GetOrInsertNew(Of T, U As New)(dic As Dictionary(Of T, U), key As T) As U
If dic.ContainsKey(key) Then Return dic(key)
Dim newObj As U = New U()
dic(key) = newObj
Return newObj
End Function
End Module

View File

@@ -2,7 +2,7 @@
Module IEnumerableEx Module IEnumerableEx
<Extension()> <Extension()>
Function SetValue(Of T)(ByVal items As IEnumerable(Of T), ByVal updateMethod As Action(Of T)) As IEnumerable(Of T) Function SetValue(Of T)(items As IEnumerable(Of T), updateMethod As Action(Of T)) As IEnumerable(Of T)
For Each item As T In items For Each item As T In items
updateMethod(item) updateMethod(item)
Next Next

127
MultiTool.Common/Mapper.vb Normal file
View File

@@ -0,0 +1,127 @@
Imports System.Globalization
Imports System.Text.RegularExpressions
Imports AutoMapper
Imports AutoMapper.Configuration
Imports DigitalData.Modules.Logging
Imports MultiTool.Common.Documents.DocumentRow
Public Class Mapper
Private MapperConfig As MapperConfiguration
Private ReadOnly LogConfig As LogConfig
Private ReadOnly Logger As Logger
Public Sub New(pLogConfig As LogConfig)
LogConfig = pLogConfig
Logger = pLogConfig.GetLogger
End Sub
Public Function GetMapper(Of T)(pPropertyMap As Dictionary(Of String, String)) As IMapper
MapperConfig = New MapperConfiguration(CreateMapperConfig(Of T)(pPropertyMap))
MapperConfig.AssertConfigurationIsValid()
Return MapperConfig.CreateMapper()
End Function
Private Function CreateMapperConfig(Of T)(pPropertyMap As Dictionary(Of String, String)) As MapperConfigurationExpression
Logger.Info("Creating mapper config for type [{0}]", GetType(T).Name)
Dim oConfig As New MapperConfigurationExpression()
oConfig.AddProfile(New MappingProfile(Of T)(LogConfig, pPropertyMap))
Return oConfig
End Function
Public Class MappingProfile(Of T)
Inherits Profile
Private ReadOnly LogConfig As LogConfig
Public Overrides ReadOnly Property ProfileName As String
Get
Return "MappingProfile"
End Get
End Property
Public Sub New(pLogConfig As LogConfig, pPropertyMap As Dictionary(Of String, String))
LogConfig = pLogConfig
CreateMap(Of Dictionary(Of String, FieldValue), T).ConvertUsing(New ReportTypeConverter(Of T)(LogConfig, pPropertyMap))
End Sub
End Class
Private Class ReportTypeConverter(Of TDestination)
Implements ITypeConverter(Of Dictionary(Of String, FieldValue), TDestination)
Private ReadOnly PropertyMap As Dictionary(Of String, String)
Private ReadOnly KeyWithSubkey As New Regex("(?<Key>[\w\s-]+)(?:\[(?<Subkey>[\w]+)\])?")
Private ReadOnly Logger As Logger
Public Sub New(pLogConfig As LogConfig, pPropertyMap As Dictionary(Of String, String))
MyBase.New()
Logger = pLogConfig.GetLogger()
PropertyMap = pPropertyMap
End Sub
Public Function Convert(pSource As Dictionary(Of String, FieldValue), pDestination As TDestination, pContext As ResolutionContext) As TDestination Implements ITypeConverter(Of Dictionary(Of String, FieldValue), TDestination).Convert
If pSource Is Nothing Then
Return Nothing
End If
Dim oResult = Activator.CreateInstance(Of TDestination)
Logger.Info("Mapping object of Type [{0}]", GetType(TDestination).Name)
For Each oMapItem As KeyValuePair(Of String, String) In PropertyMap
Try
' SourceKey will be something like 'Fakt_Kontonummer[Final]'
' DestinationKey will be something like 'Text1'
Dim oSourceKeyCombined As String = oMapItem.Key
Dim oDestinationKey As String = oMapItem.Value
' Resolve SourceKey into Key and Subkey
Dim oMatch As Match = KeyWithSubkey.Match(oSourceKeyCombined)
Dim oSourceKey As String = oMatch.Groups("Key")?.Value
Dim oSourceSubkey As String = oMatch.Groups("Subkey")?.Value
' Set property value if property exists in source
If pSource.ContainsKey(oSourceKey) Then
' Try to get the value from 'source'
Dim oFieldValue As FieldValue = pSource.Item(oSourceKey)
' Get the destination property by DestinationKey
Dim oProperty = GetType(TDestination).
GetProperties().
SingleOrDefault(Function(p) p.Name = oDestinationKey)
' Set the property if it exists
If oProperty IsNot Nothing Then
Dim oValue = GetFieldValue(oFieldValue, oSourceSubkey)
Logger.Info("Transferring value [{0}] from [{1}] -> [{2}]", oValue, oSourceKeyCombined, oDestinationKey)
oProperty.SetValue(oResult, oValue)
Else
Logger.Warn("Property [{0}] does not exist in destination object. Possible error in configuration.", oDestinationKey)
End If
End If
Catch ex As Exception
Logger.Warn("Could not transfer key [{0}] to destination object", oMapItem.Key)
Logger.Error(ex)
End Try
Next
Return oResult
End Function
Private Function GetFieldValue(pValue As FieldValue, pKey As String) As String
If pKey = "Original" Then
Return pValue.Original
ElseIf pKey = "External" Then
Return pValue.External
Else
Return pValue.Final
End If
End Function
End Class
End Class

View File

@@ -6,12 +6,13 @@
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{DD1AC3B9-7595-4D3C-B9BB-97C46A480FA0}</ProjectGuid> <ProjectGuid>{DD1AC3B9-7595-4D3C-B9BB-97C46A480FA0}</ProjectGuid>
<OutputType>Library</OutputType> <OutputType>Library</OutputType>
<RootNamespace>ImporterShared</RootNamespace> <RootNamespace>MultiTool.Common</RootNamespace>
<AssemblyName>ImporterShared</AssemblyName> <AssemblyName>MultiTool.Common</AssemblyName>
<FileAlignment>512</FileAlignment> <FileAlignment>512</FileAlignment>
<MyType>Windows</MyType> <MyType>Windows</MyType>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion> <TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<Deterministic>true</Deterministic> <Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols> <DebugSymbols>true</DebugSymbols>
@@ -19,7 +20,7 @@
<DefineDebug>true</DefineDebug> <DefineDebug>true</DefineDebug>
<DefineTrace>true</DefineTrace> <DefineTrace>true</DefineTrace>
<OutputPath>bin\Debug\</OutputPath> <OutputPath>bin\Debug\</OutputPath>
<DocumentationFile>ImporterShared.xml</DocumentationFile> <DocumentationFile>MultiTool.Common.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn> <NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
@@ -28,7 +29,7 @@
<DefineTrace>true</DefineTrace> <DefineTrace>true</DefineTrace>
<Optimize>true</Optimize> <Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath> <OutputPath>bin\Release\</OutputPath>
<DocumentationFile>ImporterShared.xml</DocumentationFile> <DocumentationFile>MultiTool.Common.xml</DocumentationFile>
<NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn> <NoWarn>42016,41999,42017,42018,42019,42032,42036,42020,42021,42022</NoWarn>
</PropertyGroup> </PropertyGroup>
<PropertyGroup> <PropertyGroup>
@@ -47,25 +48,32 @@
<Reference Include="AutoMapper, Version=10.0.0.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL"> <Reference Include="AutoMapper, Version=10.0.0.0, Culture=neutral, PublicKeyToken=be96cd2c38ef1005, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.10.1.1\lib\net461\AutoMapper.dll</HintPath> <HintPath>..\packages\AutoMapper.10.1.1\lib\net461\AutoMapper.dll</HintPath>
</Reference> </Reference>
<Reference Include="DevExpress.DataAccess.v19.2, Version=19.2.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" /> <Reference Include="DevExpress.Data.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DigitalData.Modules.Database"> <Reference Include="DevExpress.DataAccess.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<HintPath>..\..\DDMonorepo\Modules.Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath> <Reference Include="DevExpress.Printing.v21.2.Core, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DigitalData.Modules.Base, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
</Reference> </Reference>
<Reference Include="DigitalData.Modules.Filesystem"> <Reference Include="DigitalData.Modules.Config, Version=1.1.4.1, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\DDMonorepo\Modules.Filesystem\bin\Debug\DigitalData.Modules.Filesystem.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\DDModules\Config\bin\Debug\DigitalData.Modules.Config.dll</HintPath>
</Reference> </Reference>
<Reference Include="DigitalData.Modules.Interfaces"> <Reference Include="DigitalData.Modules.Database, Version=2.2.7.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\DDMonorepo\Modules.Interfaces\bin\Debug\DigitalData.Modules.Interfaces.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
</Reference> </Reference>
<Reference Include="DigitalData.Modules.Language"> <Reference Include="DigitalData.Modules.Interfaces, Version=1.7.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\DDMonorepo\Modules.Language\bin\Release\DigitalData.Modules.Language.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\DDModules\Interfaces\bin\Debug\DigitalData.Modules.Interfaces.dll</HintPath>
</Reference> </Reference>
<Reference Include="DigitalData.Modules.Logging"> <Reference Include="DigitalData.Modules.Logging, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\DDMonorepo\Modules.Logging\bin\Release\DigitalData.Modules.Logging.dll</HintPath> <SpecificVersion>False</SpecificVersion>
<HintPath>..\..\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
</Reference> </Reference>
<Reference Include="Microsoft.CSharp" /> <Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL"> <Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.7.10\lib\net45\NLog.dll</HintPath> <HintPath>..\packages\NLog.5.1.0\lib\net46\NLog.dll</HintPath>
</Reference> </Reference>
<Reference Include="System" /> <Reference Include="System" />
<Reference Include="System.Configuration" /> <Reference Include="System.Configuration" />
@@ -94,16 +102,20 @@
<ItemGroup> <ItemGroup>
<Compile Include="BaseClass.vb" /> <Compile Include="BaseClass.vb" />
<Compile Include="Config.vb" /> <Compile Include="Config.vb" />
<Compile Include="Constants.vb" />
<Compile Include="Documents\Document.vb" /> <Compile Include="Documents\Document.vb" />
<Compile Include="Documents\DocumentMatch.vb" /> <Compile Include="Documents\DocumentCleaner.vb" />
<Compile Include="Documents\DocumentRow.vb" /> <Compile Include="Documents\DocumentRow.vb" />
<Compile Include="Documents\DocumentType.vb" />
<Compile Include="Documents\DocumentLoader.vb" /> <Compile Include="Documents\DocumentLoader.vb" />
<Compile Include="Exceptions.vb" />
<Compile Include="IDictionaryEx.vb" />
<Compile Include="IEnumerableEx.vb" /> <Compile Include="IEnumerableEx.vb" />
<Compile Include="Mapper.vb" />
<Compile Include="My Project\AssemblyInfo.vb" /> <Compile Include="My Project\AssemblyInfo.vb" />
<Compile Include="My Project\Application.Designer.vb"> <Compile Include="My Project\Application.Designer.vb">
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
<DependentUpon>Application.myapp</DependentUpon> <DependentUpon>Application.myapp</DependentUpon>
<DesignTime>True</DesignTime>
</Compile> </Compile>
<Compile Include="My Project\Resources.Designer.vb"> <Compile Include="My Project\Resources.Designer.vb">
<AutoGen>True</AutoGen> <AutoGen>True</AutoGen>
@@ -115,23 +127,34 @@
<DependentUpon>Settings.settings</DependentUpon> <DependentUpon>Settings.settings</DependentUpon>
<DesignTimeSharedInput>True</DesignTimeSharedInput> <DesignTimeSharedInput>True</DesignTimeSharedInput>
</Compile> </Compile>
<Compile Include="Mapper.vb" /> <Compile Include="Parameters.vb" />
<Compile Include="Schemas\BaseSchema.vb" /> <Compile Include="Patterns.vb" />
<Compile Include="Schemas\Orders\Helpers.vb" /> <Compile Include="Report\ReportGenerator.vb" />
<Compile Include="Schemas\Orders\Input.vb" /> <Compile Include="Templates\FilterConfig.vb" />
<Compile Include="Schemas\Orders\OrderSchema.vb" /> <Compile Include="Templates\FilterConfigItem.vb" />
<Compile Include="Schemas\Orders\ReportSource.vb" /> <Compile Include="Templates\GeneralConfig.vb" />
<Compile Include="Schemas\Response.vb" /> <Compile Include="Templates\MandatorConfig.vb" />
<Compile Include="Schemas\Schema.vb" /> <Compile Include="Templates\MandatorConfigItem.vb" />
<Compile Include="Schemas\SchemaLoader.vb" /> <Compile Include="Templates\MappingConfig.vb" />
<Compile Include="Templates\MappingConfigItem.vb" />
<Compile Include="Report\ReportHead.vb" />
<Compile Include="Report\ReportPosition.vb" />
<Compile Include="Report\ReportSource.vb" />
<Compile Include="Winline\Entities\ExportDocument.vb" />
<Compile Include="Winline\Entities\PackingUnit.vb" />
<Compile Include="Winline\Entities\Response.vb" />
<Compile Include="Templates\Template.vb" />
<Compile Include="Templates\TemplateLoader.vb" />
<Compile Include="Serializer.vb" /> <Compile Include="Serializer.vb" />
<Compile Include="Templates\TemplateConfig.vb" />
<Compile Include="Winline\Entities\Account.vb" /> <Compile Include="Winline\Entities\Account.vb" />
<Compile Include="Winline\Data.vb" /> <Compile Include="Winline\WinlineData.vb" />
<Compile Include="Winline\Entities\Article.vb" />
<Compile Include="Winline\Entities\Contact.vb" /> <Compile Include="Winline\Entities\Contact.vb" />
<Compile Include="Winline\Entities\DocumentKind.vb" /> <Compile Include="Winline\Entities\DocumentKind.vb" />
<Compile Include="Winline\Entities\Mandator.vb" /> <Compile Include="Winline\Entities\Mandator.vb" />
<Compile Include="Winline\Entities\XmlItem.vb" /> <Compile Include="Templates\FieldConfig.vb" />
<Compile Include="Winline\WebService.vb" /> <Compile Include="Winline\WebServiceData.vb" />
<Compile Include="XmlData.vb" /> <Compile Include="XmlData.vb" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

View File

@@ -1,10 +1,10 @@
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------
' <auto-generated> ' <auto-generated>
' This code was generated by a tool. ' Dieser Code wurde von einem Tool generiert.
' Runtime Version:4.0.30319.42000 ' Laufzeitversion:4.0.30319.42000
' '
' Changes to this file may cause incorrect behavior and will be lost if ' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' the code is regenerated. ' der Code erneut generiert wird.
' </auto-generated> ' </auto-generated>
'------------------------------------------------------------------------------ '------------------------------------------------------------------------------

View File

@@ -8,12 +8,12 @@ Imports System.Runtime.InteropServices
' Werte der Assemblyattribute überprüfen ' Werte der Assemblyattribute überprüfen
<Assembly: AssemblyTitle("ImporterShared")> <Assembly: AssemblyTitle("MultiTool.Common")>
<Assembly: AssemblyDescription("")> <Assembly: AssemblyDescription("")>
<Assembly: AssemblyCompany("")> <Assembly: AssemblyCompany("")>
<Assembly: AssemblyProduct("ImporterShared")> <Assembly: AssemblyProduct("MultiTool.Common")>
<Assembly: AssemblyCopyright("Copyright © 2021")> <Assembly: AssemblyCopyright("Copyright © 2024")>
<Assembly: AssemblyTrademark("")> <Assembly: AssemblyTrademark("1.0.0.0")>
<Assembly: ComVisible(False)> <Assembly: ComVisible(False)>

View File

@@ -0,0 +1,63 @@
'------------------------------------------------------------------------------
' <auto-generated>
' Dieser Code wurde von einem Tool generiert.
' Laufzeitversion:4.0.30319.42000
'
' Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
' der Code erneut generiert wird.
' </auto-generated>
'------------------------------------------------------------------------------
Option Strict On
Option Explicit On
Imports System
Namespace My.Resources
'Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
'-Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
'Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
'mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
'''<summary>
''' Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
'''</summary>
<Global.System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0"), _
Global.System.Diagnostics.DebuggerNonUserCodeAttribute(), _
Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.Microsoft.VisualBasic.HideModuleNameAttribute()> _
Friend Module Resources
Private resourceMan As Global.System.Resources.ResourceManager
Private resourceCulture As Global.System.Globalization.CultureInfo
'''<summary>
''' Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend ReadOnly Property ResourceManager() As Global.System.Resources.ResourceManager
Get
If Object.ReferenceEquals(resourceMan, Nothing) Then
Dim temp As Global.System.Resources.ResourceManager = New Global.System.Resources.ResourceManager("MultiTool.Common.Resources", GetType(Resources).Assembly)
resourceMan = temp
End If
Return resourceMan
End Get
End Property
'''<summary>
''' Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
''' Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
'''</summary>
<Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Friend Property Culture() As Global.System.Globalization.CultureInfo
Get
Return resourceCulture
End Get
Set
resourceCulture = value
End Set
End Property
End Module
End Namespace

View File

@@ -15,7 +15,7 @@ Option Explicit On
Namespace My Namespace My
<Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _ <Global.System.Runtime.CompilerServices.CompilerGeneratedAttribute(), _
Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.8.1.0"), _ Global.System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.5.0.0"), _
Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _ Global.System.ComponentModel.EditorBrowsableAttribute(Global.System.ComponentModel.EditorBrowsableState.Advanced)> _
Partial Friend NotInheritable Class MySettings Partial Friend NotInheritable Class MySettings
Inherits Global.System.Configuration.ApplicationSettingsBase Inherits Global.System.Configuration.ApplicationSettingsBase
@@ -64,9 +64,9 @@ Namespace My
Friend Module MySettingsProperty Friend Module MySettingsProperty
<Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _ <Global.System.ComponentModel.Design.HelpKeywordAttribute("My.Settings")> _
Friend ReadOnly Property Settings() As Global.ImporterForm.My.MySettings Friend ReadOnly Property Settings() As Global.MultiTool.Common.My.MySettings
Get Get
Return Global.ImporterForm.My.MySettings.Default Return Global.MultiTool.Common.My.MySettings.Default
End Get End Get
End Property End Property
End Module End Module

View File

@@ -0,0 +1,49 @@
Imports DigitalData.Modules.Logging
Public Class Parameters
''' <summary>
''' Parse a list of parameters and return a directory of the parsed parameters.
''' </summary>
''' <remarks>The special case of SQL Parameters is NOT handled by this function.</remarks>
Public Shared Function Parse(pParameters As String) As Dictionary(Of String, String)
Try
Dim oParamsDict As New Dictionary(Of String, String)
If pParameters <> String.Empty Then
Dim oParamList = pParameters.Split("|").ToList()
For Each oParam In oParamList
Dim oParamSplit = oParam.Split("=")
If oParamSplit.Count = 2 Then
oParamsDict.Add(oParamSplit(0), oParamSplit(1))
End If
Next
End If
Return oParamsDict
Catch ex As Exception
Return New Dictionary(Of String, String)
End Try
End Function
Public Shared Function TryGet(pParameters As String, pName As String) As Tuple(Of String, String)
Try
Dim pParamDict = Parse(pParameters)
If pParamDict.Count = 0 Then
Return Nothing
End If
If Not pParamDict.ContainsKey(pName) Then
Return Nothing
End If
Dim oValue = pParamDict.Item(pName)
Return New Tuple(Of String, String)(pName, oValue)
Catch ex As Exception
Return Nothing
End Try
End Function
End Class

View File

@@ -0,0 +1,167 @@
Imports System.Text.RegularExpressions
Imports DigitalData.Modules.Logging
Imports MultiTool.Common.Documents
Imports MultiTool.Common.Templates
Imports MultiTool.Common.Constants
Imports MultiTool.Common.Winline.Entities
Public Class Patterns
Inherits BaseClass
Private ReadOnly GeneralConfig As GeneralConfig
Private ReadOnly Regex As New Regex("{#(\w+)#([\w\s_-]+)}+")
Public Sub New(pLogConfig As LogConfig, pGeneralConfig As GeneralConfig)
MyBase.New(pLogConfig)
GeneralConfig = pGeneralConfig
End Sub
''' <summary>
''' Replaces placeholders in an sql marked as final sql in the template.
''' </summary>
''' <remarks>
''' This SQL does not replace field-value placeholders!
''' This is a globally applied function!
''' </remarks>
Public Function ReplaceForImportFinalSQL(pDocument As Document, pReportFileName As String, pString As String) As String
Dim oMatches As MatchCollection = Regex.Matches(pString)
For Each oMatch As Match In oMatches
Dim oPlaceholderString As String = oMatch.Groups.Item(0)?.Value
Dim oPlaceholderType As String = oMatch.Groups.Item(1)?.Value
Dim oPlaceholderValue As String = oMatch.Groups.Item(2)?.Value
Select Case oPlaceholderType.ToUpper
Case PLACEHOLDER_CONST
Dim oValue = ""
Select Case oPlaceholderValue.ToUpper
Case "FILENAME"
oValue = pDocument.FileName
Case "FILENAME_REPORT"
oValue = pReportFileName
Case Else
oValue = ReplaceBasicValues(oPlaceholderValue, pDocument.Mandator)
End Select
If oValue <> "" Then
pString = pString.Replace(oPlaceholderString, oValue)
End If
End Select
Next
Return pString
End Function
''' <summary>
'''
''' </summary>
''' <param name="pDocument"></param>
''' <param name="pRow"></param>
''' <param name="pString"></param>
''' <returns></returns>
Public Function ReplaceForImport(pDocument As Document, pRow As DocumentRow, pString As String)
Dim oMatches As MatchCollection = Regex.Matches(pString)
For Each oMatch As Match In oMatches
Dim oPlaceholderString As String = oMatch.Groups.Item(0)?.Value
Dim oPlaceholderType As String = oMatch.Groups.Item(1)?.Value
Dim oPlaceholderValue As String = oMatch.Groups.Item(2)?.Value
Select Case oPlaceholderType.ToUpper
Case PLACEHOLDER_FIELD
Dim oFieldName = oPlaceholderValue
Dim oTargetField = pRow.Fields.
Where(Function(field) field.Key = oFieldName).
SingleOrDefault()
pString = pString.Replace(oPlaceholderString, oTargetField.Value.Final)
Case PLACEHOLDER_CONST
Dim oValue = ""
Select Case oPlaceholderValue.ToUpper
Case "FILENAME"
oValue = pDocument.FileName
Case Else
oValue = ReplaceBasicValues(oPlaceholderValue, pDocument.Mandator)
End Select
If oValue <> "" Then
pString = pString.Replace(oPlaceholderString, oValue)
End If
End Select
Next
Return pString
End Function
Public Function ReplaceForExport(pDocument As ExportDocument, pMandator As Mandator, oString As String)
Dim oMatches As MatchCollection = Regex.Matches(oString)
For Each oMatch As Match In oMatches
Dim oPlaceholderString As String = oMatch.Groups.Item(0)?.Value
Dim oPlaceholderType As String = oMatch.Groups.Item(1)?.Value
Dim oPlaceholderValue As String = oMatch.Groups.Item(2)?.Value
Select Case oPlaceholderType.ToUpper
Case PLACEHOLDER_CONST
Dim oValue = ""
Select Case oPlaceholderValue.ToUpper
Case "FILENAME"
oValue = pDocument.FilenameExport
Case "ACCOUNTNUMBER"
oValue = pDocument.Account.Id
Case "RUNNINGNUMBER"
oValue = pDocument.RunningNumber
Case Else
oValue = ReplaceBasicValues(oPlaceholderValue, pMandator)
End Select
If oValue <> "" Then
oString = oString.Replace(oPlaceholderString, oValue)
End If
End Select
Next
Return oString
End Function
''' <summary>
''' Replaces basic values in the CONST namespace that only depend on the current mandator
''' </summary>
''' <returns>Value that will be used to replaced the placeholder</returns>
Public Function ReplaceBasicValues(pPlaceholderValue As String, pMandator As Mandator) As String
Select Case pPlaceholderValue.ToUpper
Case "MESOYEAR"
Return GeneralConfig.GetWinLineYear()
Case "MESOCOMP"
Return pMandator.Id
Case "USERNAME"
Return Environment.UserName
Case "MANDATORDB"
Return pMandator.Database
Case "CURRENTDATE"
Return Now.ToString()
Case Else
Return String.Empty
End Select
End Function
End Class

View File

@@ -0,0 +1,141 @@
Imports System.Text.RegularExpressions
Imports DevExpress.XtraReports
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports MultiTool.Common.Documents
Imports MultiTool.Common.Documents.DocumentRow
Imports MultiTool.Common.Report
Imports MultiTool.Common.Templates
Imports MultiTool.Common.Winline.Entities
Public Class ReportGenerator(Of TReport As IReport)
Inherits BaseClass
Private ReadOnly TemplateConfig As TemplateConfig
Private ReadOnly GeneralConfig As GeneralConfig
Private ReadOnly Patterns As Patterns
Private ReadOnly FileEx As FilesystemEx
Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer, pTemplateConfig As TemplateConfig, pGeneralConfig As GeneralConfig)
MyBase.New(pLogConfig)
Database = pDatabase
GeneralConfig = pGeneralConfig
TemplateConfig = pTemplateConfig
Patterns = New Patterns(pLogConfig, pGeneralConfig)
FileEx = New FilesystemEx(LogConfig)
End Sub
Public Function GetReportFilePath(pDocument As Document, pTemplate As Template)
Dim oFinalDirectory = FileEx.CreateDateDirectory(pTemplate.OutputReportDirectory)
Dim oFileName = FileEx.GetFilenameWithSuffix(IO.Path.GetFileNameWithoutExtension(pDocument.File.Name), FileEx.GetDateTimeString, "pdf")
Dim oFilePath As String = IO.Path.Combine(oFinalDirectory, oFileName)
Return oFilePath
End Function
Public Function GenerateReport(pDocument As Document, pTemplate As Template) As ReportResult(Of TReport)
Dim oFilePath = GetReportFilePath(pDocument, pTemplate)
Dim oMapperConfig As New Mapper(LogConfig)
Dim oHeadMapper = oMapperConfig.GetMapper(Of ReportHead)(New Dictionary(Of String, String) From {
{"Fakt_Kontoname", "Text1"},
{"Fakt_Kontonummer[Final]", "Text2"},
{"Auftrags-Bestellnummer", "Text3"},
{"Datum_Auftrag-Bestellung", "Text4"},
{"Bestellt_von", "Text5"}
})
Dim oPositionMapper = oMapperConfig.GetMapper(Of ReportPosition)(New Dictionary(Of String, String) From {
{"Artikelnummer", "Text1"},
{"Positionstext", "Text2"},
{"Bezeichnung", "Text3"},
{"Menge_bestellt", "Text4"},
{"Menge_geliefert", "Text5"},
{"Colli", "Text6"},
{"Einzelpreis[Original]", "Text7"},
{"Einzelpreis[Final]", "Text8"},
{"EinheitProPalette", "Text9"},
{"Lagerstand", "Text10"}
})
pDocument = FillFieldValuesFromSQL(pDocument, TemplateConfig.SqlItems, oFilePath)
Dim oHeadRow = pDocument.Rows.
Where(Function(r) r.TableName.EndsWith("T025")).
Select(Function(r) r.Fields).
FirstOrDefault()
Dim oPositionRows = pDocument.Rows.
Where(Function(r) r.TableName.EndsWith("T026")).
ToList()
Dim oReportHead = oHeadMapper.Map(Of Dictionary(Of String, FieldValue), ReportHead)(oHeadRow)
oReportHead.Title = pTemplate.Name
oReportHead.Subtitle = "Schaum"
oReportHead.Filename = pDocument.FileName
Dim oReportPositions As New List(Of ReportPosition)
Dim oCounter = 1
For Each oRow As DocumentRow In oPositionRows
Dim oReportPosition As ReportPosition = oPositionMapper.Map(Of Dictionary(Of String, FieldValue), ReportPosition)(oRow.Fields)
oReportPosition.Id = oCounter
oReportPositions.Add(oReportPosition)
oCounter += 1
Next
Dim oReportSource As New ReportSource With {
.Head = oReportHead,
.Positions = oReportPositions
}
Dim oReport = Activator.CreateInstance(GetType(TReport))
Dim oDataSource = New DevExpress.DataAccess.ObjectBinding.ObjectDataSource With {
.DataSource = oReportSource
}
oDataSource.Fill()
oReport.DataSource = oDataSource
Dim oResult = New ReportResult(Of TReport) With {
.Report = oReport,
.FileName = oFilePath
}
Return oResult
End Function
Private Function FillFieldValuesFromSQL(pDocument As Document, pSQLConfig As List(Of FieldConfig), pReportFileName As String) As Document
For Each oSQLConfigItem In pSQLConfig
' FieldList is a list of fields that will be changed
' Example: Setting SQL for Article StorageLocation will invoke the sql for each row
Dim oRowList = pDocument.Rows.
Where(Function(row) row.Fields.Any(Function(field) field.Key = oSQLConfigItem.Name)).
ToList()
For Each oRow As DocumentRow In oRowList
For Each oFunction In oSQLConfigItem.Functions
Dim oSQL = oFunction.Params
Dim oField = oRow.Fields.
Where(Function(field) field.Key = oSQLConfigItem.Name).
SingleOrDefault()
oSQL = Patterns.ReplaceForImportFinalSQL(pDocument, pReportFileName, oSQL)
Dim oValue = Database.GetScalarValue(oSQL)
If oValue IsNot Nothing Then
oField.Value.SetExternalValue(oValue)
End If
Next
Next
Next
Return pDocument
End Function
Public Structure ReportResult(Of T)
Public Report As T
Public FileName As String
End Structure
End Class

View File

@@ -0,0 +1,23 @@
Namespace Report
Public Class ReportHead
Public Property Title As String
Public Property Subtitle As String
Public Property Filename As String
Public Property DateCreated As Date
Public Property Id As String
Public Property Text1 As String
Public Property Text2 As String
Public Property Text3 As String
Public Property Text4 As String
Public Property Text5 As String
Public Property Text6 As String
Public Property Text7 As String
Public Property Text8 As String
Public Property Text9 As String
Public Property Text10 As String
End Class
End Namespace

View File

@@ -0,0 +1,27 @@
Namespace Report
Public Class ReportPosition
Public Property Id As String
Public Property Text1 As String
Public Property Text2 As String
Public Property Text3 As String
Public Property Text4 As String
Public Property Text5 As String
Public Property Text6 As String
Public Property Text7 As String
Public Property Text8 As String
Public Property Text9 As String
Public Property Text10 As String
Public Property Text11 As String
Public Property Text12 As String
Public Property Text13 As String
Public Property Text14 As String
Public Property Text15 As String
Public Property Text16 As String
Public Property Text17 As String
Public Property Text18 As String
Public Property Text19 As String
Public Property Text20 As String
End Class
End Namespace

View File

@@ -0,0 +1,18 @@
Imports System.ComponentModel
Imports DevExpress.DataAccess.ObjectBinding
Namespace Report
<HighlightedClass, DisplayName("ReportSource")>
Public Class ReportSource
<HighlightedMember>
Public Property Head As ReportHead
<HighlightedMember>
Public Property Positions As IEnumerable(Of ReportPosition)
<HighlightedMember>
Public Iterator Function GetPositionList() As IEnumerable(Of ReportPosition)
For Each oPosition In Positions
Yield oPosition
Next
End Function
End Class
End Namespace

View File

@@ -4,7 +4,7 @@ Imports DigitalData.Modules.Logging
Public Class Serializer Public Class Serializer
Inherits BaseClass Inherits BaseClass
Public Sub New(pLogConfig As LogConfig) Public Sub New(pLogConfig As LogConfig)
MyBase.New(pLogConfig, pLogConfig.GetLogger()) MyBase.New(pLogConfig)
End Sub End Sub
Public Function GetSerializer(pSchemaType As Type) As XmlSerializer Public Function GetSerializer(pSchemaType As Type) As XmlSerializer

View File

@@ -0,0 +1,49 @@
Imports MultiTool.Common.Constants
Imports DigitalData.Modules.Language
Namespace Templates
Public Class FieldConfig
Public Property Id As Integer
Public Property Name As String
Public Property Table As String
Public Property Type As ColumnType
Public Property Template As String
Public Property OrderKey As Integer
Public Property IsHead As Boolean
Public Property IsReadOnly As Boolean
Public Property IsVisible As Boolean
Public Property IsRequired As Boolean
Public Property IsVirtual As Boolean
Public Property PreferExternalValue As Boolean
Public Property Functions As New List(Of ColumnFunction)
Public Class ColumnFunction
Public Id As XmlFunction
Public Name As String
Public Params As String
End Class
Public Shared Function ConvertType(pType As String) As ColumnType
Select Case pType
Case DB_TYPE_DATE
Return ColumnType.Date
Case DB_TYPE_DECIMAL
Return ColumnType.Date
Case DB_TYPE_BOOLEAN
Return ColumnType.Boolean
Case DB_TYPE_INTEGER
Return ColumnType.Integer
Case Else
Return ColumnType.String
End Select
End Function
End Class
End Namespace

View File

@@ -0,0 +1,5 @@
Namespace Templates
Public Class FilterConfig
Public Property Items As New List(Of FilterConfigItem)
End Class
End Namespace

View File

@@ -0,0 +1,10 @@
Namespace Templates
Public Class FilterConfigItem
Public Property Guid As Integer
Public Property SQLCommand As String
Public Property TableId As Integer
Public Property TableName As String
Public Property ColumnId As Integer
Public Property ColumnName As String
End Class
End Namespace

View File

@@ -0,0 +1,35 @@
Namespace Templates
Public Class GeneralConfig
Public Property TemplateDirectory As String = ""
Public Property Webservice As New WebServiceConfig()
Public Property DefaultYearOverride As Integer = 0
Public Class WebServiceConfig
Public Property BaseUrl As String = "http://127.0.0.1/EWL"
Public Property Username As String = "Username"
Public Property Password As String = "Password"
Public Property ImportBasePath As String = ""
Public Property ImportRelativePath As String = ""
End Class
<DebuggerStepThrough>
Public Function GetYear() As Integer
If DefaultYearOverride > 0 Then
Return DefaultYearOverride
End If
Return Now.Year
End Function
<DebuggerStepThrough>
Public Function GetWinLineYear()
Return GetWinLineYear(GetYear)
End Function
<DebuggerStepThrough>
Public Function GetWinLineYear(pYear As Integer)
Return (pYear - 1900) * 12
End Function
End Class
End Namespace

View File

@@ -0,0 +1,5 @@
Namespace Templates
Public Class MandatorConfig
Public Property Items As New List(Of MandatorConfigItem)
End Class
End Namespace

View File

@@ -0,0 +1,7 @@
Namespace Templates
Public Class MandatorConfigItem
Public Property Name As String
Public Property OrderKey As Integer
End Class
End Namespace

View File

@@ -0,0 +1,12 @@
Namespace Templates
Public Class MappingConfig
Public Class Entity
Public Const MANDATOR = "MANDATOR"
Public Const DOCUMENTTYPE = "DOCUMENTTYPE"
Public Const ARTICLE = "ARTICLE"
End Class
Public Property Items As New List(Of MappingConfigItem)
End Class
End Namespace

View File

@@ -0,0 +1,12 @@
Namespace Templates
Public Class MappingConfigItem
Public Property OrderKey As Integer
Public Property SourceName As String
Public Property SourceItem As String
Public Property SourceRegex As String
Public Property DestinationName As String
Public Property DestinationItem As String
Public Property DestinationValue As String
End Class
End Namespace

View File

@@ -0,0 +1,138 @@
Imports DigitalData.Modules.Base
Imports MultiTool.Common.Winline.WinlineData
Namespace Templates
Public Class Template
Public Property Guid As Integer
Public Property Name As String
Public Property FileName As String
Public Property Description As String
Public Property IsImport As Boolean
Public Property Parameter1 As String
Public Property Parameter2 As String
Public Property FinalSQL As String
''' <summary>
''' Tabledata from XSD
''' </summary>
Public Property Tables As New List(Of Table)
Public Property InputDirectory As String
Public Property OutputDirectory As String
Public Property ArchiveDirectory As String
''' <summary>
''' Last modified date of the template file
''' </summary>
Public Property LastModified As Date
Public ReadOnly Property DocType As DocumentType
Get
Dim oDocType As String = GetParameter("DOCTYPE")
Dim oPreselectedDocType As Integer = 0
If oDocType IsNot Nothing Then
Integer.TryParse(oDocType, oPreselectedDocType)
End If
Return [Enum].Parse(GetType(DocumentType), oPreselectedDocType)
End Get
End Property
Public ReadOnly Property PrintDocument As Boolean
Get
Dim oPrintDocument = GetParameter("PRINT")
Dim oDefaultValue = True
If oPrintDocument IsNot Nothing Then
oDefaultValue = IIf(oPrintDocument = "0", False, True)
End If
Return oDefaultValue
End Get
End Property
Public ReadOnly Property DocTypeCategory As DocumentTypeCategory
Get
Select Case DocType
Case DocumentType.IncomingOffer,
DocumentType.IncomingOrder,
DocumentType.IncomingDeliveryNote,
DocumentType.IncomingInvoice
Return DocumentTypeCategory.Outgoing
Case DocumentType.OutgoingOffer,
DocumentType.OutgoingOrder,
DocumentType.OutgoingDeliveryNote,
DocumentType.OutgoingInvoice
Return DocumentTypeCategory.Incoming
Case Else
Return DocumentTypeCategory.Undefined
End Select
End Get
End Property
Public ReadOnly Property OutputReportDirectory
Get
Return IO.Path.Combine(OutputDirectory, "Reports")
End Get
End Property
Public ReadOnly Property OutputWebserviceDirectory
Get
Return IO.Path.Combine(OutputDirectory, "WebService")
End Get
End Property
Public ReadOnly Property OutputXmlFileDirectory
Get
Return IO.Path.Combine(OutputDirectory, "XmlFiles")
End Get
End Property
Public Function GetParameter(pName As String) As String
Dim oParam1 As String = ObjectEx.NotNull(Parameter1, String.Empty)
Dim oParam2 As String = ObjectEx.NotNull(Parameter2, String.Empty)
Dim oParamValue1 = Parameters.TryGet(oParam1, pName)
Dim oParamValue2 = Parameters.TryGet(oParam2, pName)
If oParamValue1 IsNot Nothing AndAlso oParamValue1.Item1 = pName Then
Return oParamValue1.Item2
End If
If oParamValue2 IsNot Nothing AndAlso oParamValue2.Item1 = pName Then
Return oParamValue2.Item2
End If
Return Nothing
End Function
''' <summary>
''' Table from XSD
''' </summary>
Class Table
Public Property Name As String
Public Property Columns As New List(Of Column)
End Class
Class Column
Public Property Name As String
Public Property DataType As Constants.ColumnType
''' <summary>
''' Required value from Schema. This value will be written in the ColumnConfig and is not relevant from that point on.
''' </summary>
Public Property IsRequired As Boolean
Public Property Config As FieldConfig
Public Overrides Function ToString() As String
Return Name
End Function
End Class
End Class
End Namespace

View File

@@ -0,0 +1,25 @@
Imports MultiTool.Common.Winline
Namespace Templates
''' <summary>
''' Class for loading column/field config from database
''' </summary>
Public Class TemplateConfig
Public Property Items As List(Of FieldConfig)
Public ReadOnly Property SqlItems As List(Of FieldConfig)
Get
Return Items.
Where(Function(item) item.Functions.Any(Function(f) f.Name = Constants.FUNCTION_SQL)).
ToList()
End Get
End Property
Public Function GetColumn(pName As String, pTable As String) As FieldConfig
Return Items.
Where(Function(c) c.Name = pName And c.Table = pTable).
FirstOrDefault()
End Function
End Class
End Namespace

View File

@@ -0,0 +1,422 @@
Imports System.IO
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Base
Namespace Templates
Public Class TemplateLoader
Inherits BaseClass
Private ReadOnly ns As XNamespace = "http://www.w3.org/2001/XMLSchema"
Public Property TemplateList As List(Of Template)
Public Property TemplateConfiguration As New TemplateConfig
Public Property MappingConfiguration As New MappingConfig
Public Property MandatorConfiguration As New MandatorConfig
Public Property GeneralConfiguration As New GeneralConfig
Public Property FilterConfiguration As New FilterConfig
Private Const SQL_TBMT_FILTERS = "SELECT * FROM [DD_ECM].[dbo].[VWMT_FILTERS]"
Private Const SQL_VWMT_ITEMS = "SELECT * FROM [DD_ECM].[dbo].[VWMT_ITEMS] ORDER BY TEMPLATE_NAME, TABLE_NAME"
Private Const SQL_VWMT_FUNCTIONS = "SELECT * FROM [DD_ECM].[dbo].[VWMT_FUNCTIONS] ORDER BY ITEM_ID, SEQUENCE"
Private Const SQL_VWMT_MAPPING = "SELECT * FROM [DD_ECM].[dbo].[VWMT_MAPPING]"
Private Const SQL_TBMT_MANDATORS = "SELECT * FROM [DD_ECM].[dbo].[TBMT_MANDATORS] ORDER BY ORDER_KEY"
Private Const SQL_TBMT_CONFIG = "SELECT * FROM [DD_ECM].[dbo].[TBMT_CONFIG]"
Private Const SQL_TBMT_TEMPLATES = "SELECT * FROM [DD_ECM].[dbo].[TBMT_TEMPLATES] WHERE ACTIVE = 1"
Public Sub New(pLogConfig As LogConfig, pMSSQL As MSSQLServer)
MyBase.New(pLogConfig, pMSSQL)
End Sub
Public Async Function LoadFilterConfiguration() As Task(Of Boolean)
Try
Dim oTable As DataTable = Await Database.GetDatatableAsync(SQL_TBMT_FILTERS)
Dim oFilters As New List(Of FilterConfigItem)
For Each oRow As DataRow In oTable.Rows
Dim oFilter As New FilterConfigItem With {
.Guid = oRow.Item("GUID"),
.SQLCommand = oRow.ItemEx("SQL_COMMAND", String.Empty),
.TableId = oRow.ItemEx("TABLE_ID", 0),
.TableName = oRow.ItemEx("TABLE_NAME", String.Empty),
.ColumnId = oRow.ItemEx("ITEM_ID", 0),
.ColumnName = oRow.ItemEx("ITEM_NAME", String.Empty)
}
oFilters.Add(oFilter)
Next
FilterConfiguration.Items = oFilters
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Async Function LoadTemplates() As Task(Of Boolean)
Try
Dim oTable As DataTable = Await Database.GetDatatableAsync(SQL_TBMT_TEMPLATES)
Dim oTemplates As New List(Of Template)
For Each oRow As DataRow In oTable.Rows
Dim oTemplate As New Template With {
.Guid = oRow.Item("GUID"),
.Name = oRow.ItemEx("NAME", String.Empty),
.Description = oRow.ItemEx("DESCRIPTION", String.Empty),
.FileName = oRow.ItemEx("FILE_NAME", String.Empty),
.IsImport = oRow.ItemEx("IS_IMPORT", True),
.FinalSQL = oRow.ItemEx("FINAL_SQL", String.Empty),
.Parameter1 = oRow.ItemEx("PARAMETER_1", String.Empty),
.Parameter2 = oRow.ItemEx("PARAMETER_2", String.Empty)
}
Logger.Debug("Loading Template [{0}]", oTemplate.Name)
oTemplates.Add(oTemplate)
Next
TemplateList = oTemplates
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Async Function LoadGeneralConfiguration() As Task(Of Boolean)
Try
Dim oTable As DataTable = Await Database.GetDatatableAsync(SQL_TBMT_CONFIG)
Dim oGeneralConfig As New GeneralConfig
For Each oRow As DataRow In oTable.Rows
Dim oValue As String = oRow.ItemEx("VALUE", String.Empty)
Select Case oRow.Item("KEY")
Case "YEAR_OVERRIDE"
oGeneralConfig.DefaultYearOverride = oRow.ItemEx("VALUE", 0)
Case "WEBSERVICE_BASEURL"
oGeneralConfig.Webservice.BaseUrl = oValue
Case "WEBSERVICE_USERNAME"
oGeneralConfig.Webservice.Username = oValue
Case "WEBSERIVCE_PASSWORD"
oGeneralConfig.Webservice.Password = oValue
Case "WEBSERVICE_IMPORT_BASE_PATH"
oGeneralConfig.Webservice.ImportBasePath = oValue
Case "WEBSERVICE_IMPORT_RELATIVE_PATH"
oGeneralConfig.Webservice.ImportRelativePath = oValue
Case "TEMPLATE_DIRECTORY"
oGeneralConfig.TemplateDirectory = oValue
End Select
Next
GeneralConfiguration = oGeneralConfig
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Async Function LoadMappingConfiguration() As Task(Of Boolean)
Try
Dim oTable As DataTable = Await Database.GetDatatableAsync(SQL_VWMT_MAPPING)
Dim oMappingConfig As New MappingConfig
For Each oRow As DataRow In oTable.Rows
Dim oTemplate As New MappingConfigItem With {
.OrderKey = oRow.ItemEx("ORDER_KEY", String.Empty),
.SourceName = oRow.ItemEx("SOURCE_NAME", String.Empty),
.SourceItem = oRow.ItemEx("SOURCE_ITEM", String.Empty),
.SourceRegex = oRow.ItemEx("SOURCE_REGEX", String.Empty),
.DestinationName = oRow.ItemEx("DESTINATION_NAME", String.Empty),
.DestinationItem = oRow.ItemEx("DESTINATION_ITEM", String.Empty),
.DestinationValue = oRow.ItemEx("DESTINATION_VALUE", String.Empty)
}
oMappingConfig.Items.Add(oTemplate)
Next
MappingConfiguration = oMappingConfig
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Async Function LoadMandatorConfiguration() As Task(Of Boolean)
Try
Dim oTable As DataTable = Await Database.GetDatatableAsync(SQL_TBMT_MANDATORS)
Dim oMandatorConfig As New MandatorConfig
For Each oRow As DataRow In oTable.Rows
Dim oMandator As New MandatorConfigItem With {
.OrderKey = oRow.ItemEx("ORDER_KEY", String.Empty),
.Name = oRow.ItemEx("NAME", String.Empty)
}
oMandatorConfig.Items.Add(oMandator)
Next
MandatorConfiguration = oMandatorConfig
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Async Function LoadTemplateConfiguration() As Task(Of Boolean)
Try
Dim oTable As DataTable = Await Database.GetDatatableAsync(SQL_VWMT_ITEMS)
Dim oItems As New List(Of FieldConfig)
For Each oRow As DataRow In oTable.Rows
Dim oColumn As New FieldConfig() With {
.Id = oRow.ItemEx("ITEM_ID", 0),
.Template = oRow.ItemEx("TEMPLATE_NAME", String.Empty),
.Table = oRow.ItemEx("TABLE_NAME", String.Empty),
.Name = oRow.ItemEx("ITEM_NAME", String.Empty),
.Type = FieldConfig.ConvertType(ItemEx(oRow, "DATA_TYPE", String.Empty)),
.OrderKey = oRow.ItemEx("ORDER_KEY", 0),
.IsReadOnly = oRow.ItemEx("IS_READ_ONLY", False),
.IsVisible = oRow.ItemEx("IS_VISIBLE", True),
.IsRequired = oRow.ItemEx("IS_REQUIRED", False),
.IsVirtual = oRow.ItemEx("IS_VIRTUAL", False),
.IsHead = oRow.ItemEx("IS_HEAD", True),
.PreferExternalValue = oRow.ItemEx("PREFER_EXTERNAL", True),
.Functions = New List(Of FieldConfig.ColumnFunction)
}
Logger.Debug("Creating Template Item for Table [{0}]: [{1}]", oColumn.Table, oColumn.Name)
oItems.Add(oColumn)
Next
TemplateConfiguration = New TemplateConfig With {
.Items = oItems
}
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Async Function LoadTemplateFunctions() As Task(Of Boolean)
Try
Dim oTable As DataTable = Await Database.GetDatatableAsync(SQL_VWMT_FUNCTIONS)
Dim oItems As New List(Of FieldConfig)
For Each oRow As DataRow In oTable.Rows
Dim oTemplateItemId = oRow.ItemEx("ITEM_ID", 0)
Dim oTemplateItem = TemplateConfiguration.Items.SingleOrDefault(Function(i) i.Id = oTemplateItemId)
If oTemplateItem Is Nothing Then
Logger.Warn("Function configuration could not be assigned to an existing template item, item id was [{0}]", oTemplateItemId)
Continue For
End If
oTemplateItem.Functions.Add(New FieldConfig.ColumnFunction With {
.Id = oRow.ItemEx("FUNCTION_ID", 0),
.Name = oRow.ItemEx("FUNCTION_NAME", String.Empty),
.Params = oRow.ItemEx("FUNCTION_PARAMETERS", String.Empty)
})
Next
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Public Function UpdateTemplateFromFile(pTemplate As Template, pInputDirectory As String) As Template
Dim oFullPath = Path.Combine(pInputDirectory, pTemplate.FileName)
If Not IO.File.Exists(oFullPath) Then
Throw New FileNotFoundException(oFullPath)
End If
Dim oElements = GetTemplateElements(oFullPath)
For Each oElement In oElements
Dim oColumns = GetElementColumns(oElement)
Dim oTemplateColumns As New List(Of Template.Column)
For Each oColumn As XElement In oColumns
Dim oName = XmlData.GetElementAttribute(oColumn, "name")
Dim oMinOccurs = XmlData.GetElementAttribute(oColumn, "minOccurs")
Dim oMaxOccurs = XmlData.GetElementAttribute(oColumn, "maxOccurs")
Dim oType = GetElementType(oColumn)
Dim oRequired = False
If oMinOccurs = 1 And oMaxOccurs = 1 Then
oRequired = True
End If
Dim oTemplateColumn As New Template.Column With {
.Name = oName,
.DataType = oType,
.IsRequired = oRequired
}
oTemplateColumns.Add(oTemplateColumn)
Next
pTemplate.Tables.Add(New Template.Table With {
.Name = XmlData.GetElementAttribute(oElement, "name"),
.Columns = oTemplateColumns
})
Next
Return pTemplate
End Function
Public Function UpdateTemplateTablesFromDatabase(pTemplate As Template, pTemplateConfig As TemplateConfig) As Template
If pTemplateConfig Is Nothing Then
Logger.Warn("Template config is empty. Skipping.")
Return pTemplate
End If
Dim oTemplate = CreateVirtualColumns(pTemplate, pTemplateConfig)
For Each oTable In oTemplate.Tables
For Each oColumn As Template.Column In oTable.Columns
Dim oConfig As FieldConfig = pTemplateConfig.GetColumn(oColumn.Name, oTable.Name)
If oConfig Is Nothing Then
oConfig = New FieldConfig With {
.IsRequired = oColumn.IsRequired,
.Name = oColumn.Name
}
End If
oColumn.Config = oConfig
Next
Next
Return oTemplate
End Function
Private Function CreateVirtualColumns(pTemplate As Template, pTemplateConfig As TemplateConfig) As Template
Dim oTemplateItems = pTemplateConfig.Items.
Where(Function(item) item.Template = pTemplate.Name).
ToList()
For Each oItem In oTemplateItems
' Find the table that relates to this config item
Dim oTable = pTemplate.Tables.Where(Function(table) table.Name = oItem.Table).FirstOrDefault()
If oTable Is Nothing Then
Logger.Warn("Table [{0}] for item [{1}] does not exist in this Template!", oItem.Table, oItem.Name)
Continue For
End If
Dim oColumnExists = oTable.Columns.Any(Function(column) column.Name = oItem.Name)
If oColumnExists = False And oItem.IsVirtual = True Then
oTable.Columns.Add(New Template.Column() With {
.Name = oItem.Name,
.Config = oItem,
.DataType = Constants.ColumnType.String,
.IsRequired = False
})
End If
Next
Return pTemplate
End Function
Public Function UpdateTemplateFromDatabase(pTemplate As Template) As Template
Try
Dim oTable As DataTable = Database.GetDatatable($"{SQL_TBMT_CONFIG} WHERE TEMPLATE_ID = {pTemplate.Guid}")
Dim oGeneralConfig As New GeneralConfig
For Each oRow As DataRow In oTable.Rows
Dim oValue As String = oRow.ItemEx("VALUE", String.Empty)
Select Case oRow.Item("KEY")
Case "INPUT_DIRECTORY"
pTemplate.InputDirectory = oValue
Case "OUTPUT_DIRECTORY"
pTemplate.OutputDirectory = oValue
Case "ARCHIVE_DIRECTORY"
pTemplate.ArchiveDirectory = oValue
End Select
Next
Return pTemplate
Catch ex As Exception
Logger.Error(ex)
Return pTemplate
End Try
End Function
Public Function GetElementType(pElement As XElement) As Constants.ColumnType
Dim oTypeString = XmlData.GetElementAttribute(pElement, "type")
If oTypeString Is Nothing Then
Dim oRestrictionElement As XElement = pElement.
Descendants(ns + "restriction").
FirstOrDefault()
oTypeString = XmlData.GetElementAttribute(oRestrictionElement, "base")
End If
Select Case oTypeString
Case Constants.TEMPLATE_TYPE_DATE
Return Constants.ColumnType.Date
Case Constants.TEMPLATE_TYPE_INTEGER
Return Constants.ColumnType.Integer
Case Constants.TEMPLATE_TYPE_DECIMAL
Return Constants.ColumnType.Decimal
Case Constants.TEMPLATE_TYPE_BOOLEAN
Return Constants.ColumnType.Boolean
Case Else
Return Constants.ColumnType.String
End Select
End Function
Public Function GetTemplateElements(pTemplateFilePath As String) As List(Of XElement)
Dim oText As String = IO.File.ReadAllText(pTemplateFilePath)
Dim oDoc = XDocument.Parse(oText)
Return XmlData.GetElementsFromElement(oDoc, "choice", ns)
End Function
Public Function GetElementColumns(pElement As XElement) As List(Of XElement)
Return XmlData.GetElementsFromElement(pElement, "sequence", ns)
End Function
End Class
End Namespace

View File

@@ -0,0 +1,25 @@
Namespace Winline.Entities
Public Class Account
Public Property Id As String
Public Property Name As String
Public Property StreetName As String
Public Property CityName As String
Public Property ZipCode As String
Public Property GLN As String
Public Property Mandator As Mandator
Public Overrides Function GetHashCode() As Integer
Return Id.GetHashCode()
End Function
Public Overrides Function Equals(obj As Object) As Boolean
Return DirectCast(obj, Account).Id = Id
End Function
Public Overrides Function ToString() As String
Return $"{Name} ({Id})"
End Function
End Class
End Namespace

View File

@@ -1,19 +1,21 @@
Namespace Winline Namespace Winline.Entities
Public Class Account Public Class Article
Public Property Id As String Public Property Id As String
Public Property Name As String Public Property Name As String
Public Property Mandator As String Public Property EAN As String
Public Property Mandator As Mandator
Public Overrides Function GetHashCode() As Integer Public Overrides Function GetHashCode() As Integer
Return Id.GetHashCode() Return Id.GetHashCode()
End Function End Function
Public Overrides Function Equals(obj As Object) As Boolean Public Overrides Function Equals(obj As Object) As Boolean
Return DirectCast(obj, Account).Id = Id Return DirectCast(obj, Article).Id = Id
End Function End Function
Public Overrides Function ToString() As String Public Overrides Function ToString() As String
Return $"{Name} ({Id})" Return $"{Name} ({Id})"
End Function End Function
End Class End Class
End Namespace End Namespace

View File

@@ -1,4 +1,4 @@
Namespace Winline Namespace Winline.Entities
Public Class Contact Public Class Contact
Public Property Id As Integer Public Property Id As Integer
Public Property Number As String Public Property Number As String

View File

@@ -1,8 +1,8 @@
Namespace Winline Namespace Winline.Entities
Public Class DocumentKind Public Class DocumentKind
Public Id As Integer Public Property Id As Integer
Public Name As String Public Property Name As String
Public Mandator As String Public Property Mandator As Mandator
Public Overrides Function GetHashCode() As Integer Public Overrides Function GetHashCode() As Integer
Return Id.GetHashCode() Return Id.GetHashCode()

View File

@@ -0,0 +1,30 @@
Imports MultiTool.Common.Winline.WinlineData
Namespace Winline.Entities
Public Class ExportDocument
Public Property Schema As Templates.Template
Public Property Account As Account
Public ReadOnly Property AccountName As String
Get
Return Account?.ToString()
End Get
End Property
Public Property Kind As DocumentKind
Public Property RunningNumber As String
Public Property Number As String
Public Property [Date] As Date
Public Property DateColumn As String
Public Property NetAmount As Double
Public Property GrossAmount As Double
Public Property IsSelected As Boolean = False
Public Property IsExported As Boolean
Public Property FilenameExport As String
Public Property ExportedWhen As Date
Public Property ExportedWho As String
End Class
End Namespace

View File

@@ -1,4 +1,4 @@
Namespace Winline Namespace Winline.Entities
Public Class Mandator Public Class Mandator
Public Property Id As String Public Property Id As String
Public Property Name As String Public Property Name As String

View File

@@ -0,0 +1,25 @@
Namespace Winline.Entities
Public Class PackingUnit
Public Property Name As String
Public Property Description As String
Public Property Description2 As String
Public Property Unit As Integer
Public Property Factor As Decimal
Public Property Flag As Integer
Public Property Mandator As Mandator
Public Overrides Function GetHashCode() As Integer
Return Name.GetHashCode()
End Function
Public Overrides Function Equals(obj As Object) As Boolean
Return DirectCast(obj, PackingUnit).Name = Name
End Function
Public Overrides Function ToString() As String
Return Name
End Function
End Class
End Namespace

View File

@@ -11,20 +11,18 @@
Option Strict Off Option Strict Off
Option Explicit On Option Explicit On
Imports System.Xml.Serialization
' '
'This source code was auto-generated by xsd, Version=4.8.3928.0. 'This source code was auto-generated by xsd, Version=4.8.3928.0.
' '
Namespace Schemas Namespace Templates.Entities
'''<remarks/> '''<remarks/>
<System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0"), _ <System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "4.8.3928.0"),
System.SerializableAttribute(), _ System.SerializableAttribute(),
System.Diagnostics.DebuggerStepThroughAttribute(), _ System.Diagnostics.DebuggerStepThroughAttribute(),
System.ComponentModel.DesignerCategoryAttribute("code"), _ System.ComponentModel.DesignerCategoryAttribute("code"),
System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=true), _ System.Xml.Serialization.XmlTypeAttribute(AnonymousType:=True),
System.Xml.Serialization.XmlRootAttribute([Namespace]:="", IsNullable:=false)> _ System.Xml.Serialization.XmlRootAttribute([Namespace]:="", IsNullable:=False)>
Partial Public Class MESOWebServiceResult Partial Public Class MESOWebServiceResult
Private overallSuccessField As Boolean Private overallSuccessField As Boolean
@@ -90,7 +88,7 @@ Namespace Schemas
Return Me.errorCodeField Return Me.errorCodeField
End Get End Get
Set Set
Me.errorCodeField = value Me.errorCodeField = Value
End Set End Set
End Property End Property
@@ -101,7 +99,7 @@ Namespace Schemas
Return Me.errorTextField Return Me.errorTextField
End Get End Get
Set Set
Me.errorTextField = value Me.errorTextField = Value
End Set End Set
End Property End Property

View File

@@ -0,0 +1,564 @@
Imports System.Collections.Specialized
Imports System.Net.Http
Imports System.Text
Imports System.Xml
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Imports MultiTool.Common.Documents
Imports MultiTool.Common.Exceptions
Imports MultiTool.Common.Templates
Imports MultiTool.Common.Templates.GeneralConfig
Imports MultiTool.Common.Winline.Entities
Namespace Winline
Public Class WebServiceData
Inherits BaseClass
Private ReadOnly Config As WebServiceConfig
Private ReadOnly Filters As FilterConfig
Private ReadOnly Serializer As Serializer
Private ReadOnly Winline As WinlineData
Private ReadOnly FileEx As FilesystemEx
Private ReadOnly Patterns As Patterns
Public Event WebServiceProgress As EventHandler(Of String)
Public Sub New(pLogConfig As LogConfig, pDatabase As MSSQLServer, pWinline As WinlineData, pWebserviceConfig As WebServiceConfig, pGeneralConfig As GeneralConfig, pFilterConfig As FilterConfig)
MyBase.New(pLogConfig, pDatabase)
Serializer = New Serializer(pLogConfig)
Config = pWebserviceConfig
Filters = pFilterConfig
Patterns = New Patterns(pLogConfig, pGeneralConfig)
FileEx = New FilesystemEx(LogConfig)
Winline = pWinline
End Sub
Public Sub RaiseWebServiceProgress(pMessage As String)
RaiseEvent WebServiceProgress(Me, pMessage)
End Sub
#Region "Import"
''' <summary>
''' Transfers a document to winline via Webservices
''' </summary>
''' <param name="pDocument"></param>
''' <param name="pTemplate"></param>
''' <param name="pMandator"></param>
''' <param name="pIsTest"></param>
''' <exception cref="HttpRequestException"></exception>
''' <exception cref="WebServiceException"></exception>
''' <exception cref="TaskCanceledException"></exception>
''' <returns>True if request was successful.</returns>
Public Async Function TransferDocumentToWinline(pDocument As Documents.Document, pTemplate As Template, pMandator As Mandator, Optional pIsTest As Boolean = False) As Task(Of Boolean)
Dim oWS = Config
RaiseEvent WebServiceProgress(Me, "Einstellungen laden")
Logger.Debug("Loading setting and creating directories")
' --- Build all teh filenamez and pathz
Dim oBaseFileName As String = FileEx.GetDateTimeString()
Dim oFileName = $"{pTemplate.Name}-{oBaseFileName}-Request.xml"
' --- Get and create path for request/response files
Dim oOutputDirectory = FileEx.CreateDateDirectory(pTemplate.OutputWebserviceDirectory)
Dim oOutputFilePath = IO.Path.Combine(oOutputDirectory, oFileName)
' Generate absolute path to copy xml file to
Dim oAbsolutePath = IO.Path.Combine(oWS.ImportBasePath, oWS.ImportRelativePath)
oAbsolutePath = FileEx.CreateDateDirectory(oAbsolutePath)
Dim oImportAbsoluteFilePath = IO.Path.Combine(oAbsolutePath, oFileName)
' Generate relative path to supply to winline
Dim oRelativePath = IO.Path.Combine(oWS.ImportRelativePath)
oRelativePath = FileEx.GetDateDirectory(oRelativePath)
Dim oImportRelativeFilePath = IO.Path.Combine(oRelativePath, oFileName)
RaiseEvent WebServiceProgress(Me, "Dateien schreiben")
Logger.Debug("Writing request file to [{oOutputFilePath}]")
' If configured, prevent printing the document and instead create it as a draft in the "Nicht gedruckt" section
If pTemplate.PrintDocument = False Then
pDocument.PrintVoucher = 0
End If
' --- Serialize Data into XML string
Dim oBytes As Byte() = GetBytesFromDocument(pDocument)
IO.File.WriteAllBytes(oOutputFilePath, oBytes)
' --- Copy file to Winline Import Directory
Try
Logger.Debug("Copying request file to [{oImportAbsoluteFilePath}]")
IO.File.Copy(oOutputFilePath, oImportAbsoluteFilePath, True)
Catch ex As Exception
Logger.Error(ex)
Throw ex
End Try
' --- Prepare URL and HTTP Client
Dim oTemplateType = pDocument.TemplateType
Dim oTemplateName = pDocument.TemplateName
Logger.Debug("Using Template [{0}/{1}]", oTemplateName, oTemplateType)
' ActionCode: Should this be a test or not?
' 0 = Test call
' 1 = Real call
Dim oActionCode = 1
If pIsTest = True Then
oActionCode = 0
End If
Logger.Debug("Using ActionCode [{0}]", oActionCode)
' Byref: Should data be supplied as file or as string?
' 0 = As String
' 1 = As File (relative to Winline Server directory)
Dim oByref = 1
Dim oParams As New NameValueCollection() From {
{"User", oWS.Username},
{"Password", oWS.Password},
{"Company", pMandator.Id},
{"Type", oTemplateType},
{"Vorlage", oTemplateName},
{"ActionCode", oActionCode},
{"Byref", oByref},
{"Data", oImportRelativeFilePath}
}
Dim oURL As String = $"{oWS.BaseUrl}/ewlservice/import{ToQueryString(oParams)}"
'Dim oURL As String = $"{oWS.BaseUrl}/ewlservice/import?User={oWS.Username}&Password={oWS.Password}&Company={pMandator.Id}&Type={oTemplateType}&Vorlage={oTemplateName}&ActionCode={oActionCode}&Byref={oByref}&Data={oImportRelativeFilePath}"
Dim oClient As New HttpClient With {
.Timeout = TimeSpan.FromSeconds(Constants.HTTP_REQUEST_TIMEOUT_IN_SECONDS)
}
Logger.Info("Creating HTTP Request to [{0}]", oWS.BaseUrl)
RaiseEvent WebServiceProgress(Me, "Anfrage absenden")
' --- Bring the action!
Try
Dim oResponse As HttpResponseMessage = Await oClient.GetAsync(oURL)
Logger.Debug("HTTP Response recevied!")
Await HandleImportResponse(oResponse, pTemplate, oBaseFileName)
Return True
Catch ex As Exception
Logger.Error(ex)
Throw ex
Finally
oClient.Dispose()
End Try
End Function
Private Async Function HandleImportResponse(pResponse As HttpResponseMessage, pTemplate As Template, pBaseFileName As String) As Task
pResponse.EnsureSuccessStatusCode()
Dim oResponseBody As String = Await pResponse.Content.ReadAsStringAsync()
Dim oContentType = pResponse.Content.Headers.ContentType.MediaType
Dim oSerializer = Serializer.GetSerializer(GetType(Templates.Entities.MESOWebServiceResult))
Dim oOutputDirectory = FileEx.CreateDateDirectory(pTemplate.OutputWebserviceDirectory)
RaiseEvent WebServiceProgress(Me, "Antwort verarbeiten")
Logger.Debug("Response ContentType: [{0}]", oContentType)
Select Case oContentType
Case "text/xml"
Logger.Debug("Got XML Response. Checking.")
WriteResponseFile(oOutputDirectory, oResponseBody, $"{pTemplate.Name}-{pBaseFileName}-Response.xml")
Dim oBytes As Byte() = Encoding.UTF8.GetBytes(oResponseBody)
Using oStream As New IO.MemoryStream(oBytes)
Dim oResponseObject As Templates.Entities.MESOWebServiceResult = oSerializer.Deserialize(oStream)
Dim oErrorStrings As New List(Of String)
If oResponseObject.ResultDetails IsNot Nothing Then
For Each oDetails As Templates.Entities.MESOWebServiceResultResultDetails In oResponseObject.ResultDetails
If oDetails.Success = True Then
Logger.Debug("KeyValue: [{0}]", oDetails.KeyValue)
Logger.Debug("VoucherNumber: [{0}]", oDetails.VoucherNumber)
Else
Logger.Warn("ErrorCode: [{0}]", oDetails.ErrorCode)
Logger.Warn("ErrorText: [{0}]", oDetails.ErrorText)
oErrorStrings.Add($"[{oDetails.ErrorCode}] {oDetails.ErrorText}")
End If
Next
End If
If oResponseObject.OverallSuccess = False Then
Dim oMessage = $"Request to Webservice was unsuccessful:{vbNewLine}{vbNewLine}{String.Join(vbNewLine, oErrorStrings.ToArray)}"
Logger.Warn("Overall Success was [false]")
Throw New WebServiceException(oMessage)
End If
End Using
Case "text/html"
Logger.Debug("Got TEXT/HTML Response. Throwing.")
WriteResponseFile(oOutputDirectory, oResponseBody, $"{pTemplate.Name}-{pBaseFileName}-Response.xml")
Throw New WebServiceException(oResponseBody)
Case Else
Logger.Debug("Unknown Response ContentType: [{0}]", oContentType)
Throw New WebServiceException(oResponseBody)
End Select
End Function
Private Function GetBytesFromDocument(pDocument As Documents.Document) As Byte()
Using oStream As New IO.MemoryStream()
Dim w = XmlWriter.Create(oStream)
w.WriteStartDocument()
w.WriteStartElement("MESOWebService")
w.WriteAttributeString("Template", pDocument.TemplateName)
w.WriteAttributeString("TemplateType", pDocument.TemplateType)
w.WriteAttributeString("option", pDocument.Option)
w.WriteAttributeString("printVoucher", pDocument.PrintVoucher)
pDocument.Rows.Sort()
For Each oRow In pDocument.Rows
w.WriteStartElement(oRow.TableName)
For Each oField As KeyValuePair(Of String, DocumentRow.FieldValue) In oRow.Fields
If oField.Value.Final = String.Empty Then
Continue For
End If
If oField.Value.IsVirtual Then
Continue For
End If
w.WriteStartElement(oField.Key)
w.WriteValue(oField.Value.Final)
w.WriteEndElement() ' Field
Next
w.WriteEndElement() ' Row
Next
w.WriteEndElement() ' MESOWebService
w.WriteEndDocument() ' Document
w.Close()
Return oStream.ToArray()
End Using
End Function
#End Region
#Region "Export"
Async Function ExportDocumentFromWinline(pDocument As ExportDocument, pTemplate As Template, pMandator As Mandator, Optional pIsTest As Boolean = False) As Task(Of Boolean)
Dim oWS = Config
Logger.Info("Exporting document from Winline")
' --- Build all teh filenamez and pathz
Dim oBaseFileName As String = FileEx.GetDateTimeString()
Dim oFileName = $"{pTemplate.Name}-{oBaseFileName}.xml"
'Dim oFileName = FileEx.GetFilenameWithPrefix(oBaseFileName, pTemplate.Name, "xml")
Logger.Info("Filename will be [{0}]", oFileName)
' Save the filename to the document
pDocument.FilenameExport = oFileName
RaiseEvent WebServiceProgress(Me, "Abfrage vorbereiten")
Logger.Debug("Preparing WebService call")
' --- Prepare URL and HTTP Client
Dim oTemplateType = 30
Dim oTemplateName = pDocument.Schema.Name
Dim oKey = $"{pDocument.Account.Id}-{pDocument.RunningNumber}"
' ActionCode: Should this be a test or not?
' 0 = Test call
' 1 = Real call
Dim oActionCode = 1
If pIsTest = True Then
oActionCode = 0
End If
Logger.Debug("This is a test: [{0}]", pIsTest)
Dim oURL As String = $"{oWS.BaseUrl}/ewlservice/export?User={oWS.Username}&Password={oWS.Password}&Company={pMandator.Id}&Type={oTemplateType}&Vorlage={oTemplateName}&ActionCode={oActionCode}&Key={oKey}"
Dim oClient As New HttpClient()
Logger.Info("Creating HTTP Request to [{0}]", oWS.BaseUrl)
RaiseEvent WebServiceProgress(Me, "Anfrage absenden")
' --- Bring the action!
Try
Dim oResponse As HttpResponseMessage = Await oClient.GetAsync(oURL)
Logger.Info("Request ended with code: [{0}]", oResponse.StatusCode)
Await HandleExportResponse(oResponse, pDocument, pTemplate, pMandator, oBaseFileName)
Return True
Catch ex As Exception
Logger.Error(ex)
Throw ex
Finally
oClient.Dispose()
End Try
End Function
Private Async Function HandleExportResponse(pResponse As HttpResponseMessage, pDocument As Entities.ExportDocument, pTemplate As Template, pMandator As Mandator, pBaseFileName As String) As Task
pResponse.EnsureSuccessStatusCode()
Dim oResponseBody As String = Await pResponse.Content.ReadAsStringAsync()
Dim oContentType = pResponse.Content.Headers.ContentType.MediaType
Dim oSerializer = Serializer.GetSerializer(GetType(Templates.Entities.MESOWebServiceResult))
RaiseEvent WebServiceProgress(Me, "Antwort verarbeiten")
Logger.Debug("Processing response with type '{0}'", oContentType)
Select Case oContentType
Case "text/xml"
Dim oXmlResponse = oResponseBody
Dim oDoc = ConvertStringToDocument(oXmlResponse)
Logger.Debug("Applying Item Filters")
oDoc = ApplyItemFiltersForExport(pDocument, pTemplate, pMandator, oDoc)
Logger.Debug("Applying Item Functions")
oDoc = ApplyItemFunctionsForExport(pDocument, pTemplate, pMandator, oDoc)
Dim oXml = ConvertDocumentToString(oDoc)
' Webservice
WriteResponseFile(pTemplate.OutputWebserviceDirectory, oXml, $"{pTemplate.Name}-{pBaseFileName}-Response.xml")
' XML
WriteResponseFile(pTemplate.OutputXmlFileDirectory, oXml, $"{pTemplate.Name}-{pBaseFileName}.xml")
' Archive
WriteResponseFile(FileEx.CreateDateDirectory(pTemplate.ArchiveDirectory), oXml, $"{pTemplate.Name}-{pBaseFileName}.xml")
Case "text/html"
WriteResponseFile(pTemplate.OutputWebserviceDirectory, oResponseBody, $"{pTemplate.Name}-{pBaseFileName}-Response.txt")
Throw New ApplicationException(oResponseBody)
Case Else
Throw New ApplicationException(oResponseBody)
End Select
End Function
Private Function ConvertStringToDocument(pXmlString As String) As XmlDocument
Dim oDoc As New XmlDocument()
oDoc.LoadXml(pXmlString)
Return oDoc
End Function
Private Function ConvertDocumentToString(pXmlDocument As XmlDocument) As String
Dim oArray As Byte()
Using oStream As New IO.MemoryStream
pXmlDocument.Save(oStream)
oArray = oStream.ToArray()
End Using
Return System.Text.Encoding.UTF8.GetString(oArray)
End Function
Private Function ApplyItemFunctionsForExport(pDocument As Entities.ExportDocument, pTemplate As Template, pMandator As Mandator, oXMLDocument As XmlDocument) As XmlDocument
For Each oTable In pTemplate.Tables
Logger.Debug("Processing Table [{0}]", oTable.Name)
For Each oColumn As Template.Column In oTable.Columns
Dim oTableName As String = oTable.Name
Dim oItemName As String = oColumn.Name
Logger.Debug("Processing item [{0}]", oItemName)
For Each oFunction As FieldConfig.ColumnFunction In oColumn.Config.Functions
Dim oFunctionName = oFunction.Name
Dim oFunctionParams = oFunction.Params
Dim oPath = $"//MESOWebService/{oTableName}/{oItemName}"
Dim oNodes As XmlNodeList = oXMLDocument.SelectNodes(oPath)
Logger.Debug("Calling function [{0}] on node [{1}]", oFunctionName, oPath)
For Each oNode As XmlNode In oNodes
If oFunctionName = Constants.FUNCTION_GLN Then
Dim oGLN = Winline.TryGetGLN(oNode.InnerText, pMandator)
If oGLN Is Nothing Then
Throw New MissingAttributeException(Constants.FUNCTION_GLN)
End If
oNode.InnerText = oGLN
ElseIf oFunctionName = Constants.FUNCTION_EAN Then
Dim oEAN = Winline.TryGetEAN(oNode.InnerText, pMandator)
If oEAN Is Nothing Then
' 21.04.2022: Relax the EAN Check
' Since it is possible to have articles without a proper EAN in export,
' we dont throw here, but leave the original value in case of a failure.
' Throw New Exceptions.MissingAttributeException("EAN")
Logger.Warn("EAN could not be retrieved for Node {0}. Skipping.", oNode.Name)
Continue For
End If
oNode.InnerText = oEAN
ElseIf oFunctionName = Constants.FUNCTION_SQL Then
Dim oSQL = Patterns.ReplaceForExport(pDocument, pMandator, oFunctionParams)
Dim oValue = Database.GetScalarValue(oSQL)
If oValue Is Nothing Then
Throw New MissingAttributeException(Constants.FUNCTION_SQL)
End If
oNode.InnerText = oValue
End If
Next
Next
Next
Next
Return oXMLDocument
End Function
Private Function ApplyItemFiltersForExport(pDocument As ExportDocument, pTemplate As Template, pMandator As Mandator, oXMLDocument As XmlDocument) As XmlDocument
Dim oTableNames = pDocument.Schema.Tables.
Select(Function(table) table.Name).
ToList()
Dim oFilters = Filters.Items.
Where(Function(filter) oTableNames.Contains(filter.TableName)).
ToList()
Logger.Info("Applying [{0}] filters before exporting.", oFilters.Count)
For Each oFilter As FilterConfigItem In oFilters
Dim oTableName = oFilter.TableName
Logger.Debug("Applying filter for Table [{0}]", oTableName)
If String.IsNullOrEmpty(oFilter.SQLCommand) Then
Logger.Warn("SQL Command for filter is empty. Continuing.")
Continue For
End If
Logger.Debug("Executing SQL Command: [{0}]", oFilter.SQLCommand)
Dim oSQLResult = Database.GetDatatable(oFilter.SQLCommand)
If oSQLResult Is Nothing Then
Logger.Warn("SQL Command for filter returned nothing: {0}. Continuing.", oFilter.SQLCommand)
Continue For
End If
Dim oResultList = oSQLResult.AsEnumerable.
Select(Function(row) row.ItemEx(0, String.Empty).Trim).
ToList()
Logger.Debug("Filterlist contains [{0}] items", oResultList.Count)
Dim oTableNodes = oXMLDocument.SelectNodes($"//{oTableName}")
Logger.Debug("Table contains [{0}] elements", oTableNodes.Count)
For Each oElementNode As XmlNode In oTableNodes
Dim oPath As String = $"./{oFilter.ColumnName}"
Dim oSubNode = oElementNode.SelectSingleNode(oPath)
If oSubNode Is Nothing Then
Logger.Warn("Column [{0}] was not found in element.", oFilter.ColumnName)
Continue For
End If
Dim oNodeValue = oSubNode.InnerText.Trim
Logger.Debug("Element Value is [{0}]", oNodeValue)
If Not oResultList.Contains(oNodeValue) Then
Logger.Warn("Element for Column [{0}] was not found in filterlist.", oFilter.ColumnName)
Continue For
End If
Logger.Info("Removing node [{0}] containing value [{1}]", oPath, oNodeValue)
oElementNode.ParentNode.RemoveChild(oElementNode)
Next
Next
Return oXMLDocument
End Function
#End Region
Private Function WriteResponseFileWithSuffix(pPath As String, pBaseFileName As String, pResponseBody As String, pExtension As String, pSuffix As String) As Boolean
Try
Dim oRequestFileName As String = FileEx.GetFilenameWithSuffix(pBaseFileName, pSuffix, pExtension)
Dim oFilePath As String = IO.Path.Combine(pPath, oRequestFileName)
IO.File.WriteAllText(oFilePath, pResponseBody)
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Private Function WriteResponseFileWithPrefix(pPath As String, pBaseFileName As String, pResponseBody As String, pExtension As String, pPrefix As String) As Boolean
Try
Dim oRequestFileName As String = FileEx.GetFilenameWithPrefix(pBaseFileName, pPrefix, pExtension)
Dim oFilePath As String = IO.Path.Combine(pPath, oRequestFileName)
IO.File.WriteAllText(oFilePath, pResponseBody)
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Private Function WriteResponseFile(pPath As String, pResponseBody As String, pFileName As String) As Boolean
Try
Dim oFilePath As String = IO.Path.Combine(pPath, pFileName)
IO.File.WriteAllText(oFilePath, pResponseBody)
Return True
Catch ex As Exception
Logger.Error(ex)
Return False
End Try
End Function
Private Function ToQueryString(ByVal nvc As NameValueCollection) As String
Dim sb As StringBuilder = New StringBuilder("?")
Dim first As Boolean = True
For Each key As String In nvc.AllKeys
For Each value As String In nvc.GetValues(key)
If Not first Then
sb.Append("&")
End If
sb.AppendFormat("{0}={1}", Uri.EscapeDataString(key), Uri.EscapeDataString(value))
first = False
Next
Next
Return sb.ToString()
End Function
End Class
End Namespace

File diff suppressed because it is too large Load Diff

View File

@@ -2,7 +2,7 @@
Public Class XmlData Public Class XmlData
'<DebuggerStepThrough> <DebuggerStepThrough>
Public Shared Function GetElementAttribute(pElement As XElement, pName As String) As String Public Shared Function GetElementAttribute(pElement As XElement, pName As String) As String
Try Try
Dim oAttribute As XAttribute = pElement.Attribute(pName) Dim oAttribute As XAttribute = pElement.Attribute(pName)

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<packages> <packages>
<package id="AutoMapper" version="10.1.1" targetFramework="net461" /> <package id="AutoMapper" version="10.1.1" targetFramework="net461" />
<package id="NLog" version="4.7.10" targetFramework="net461" /> <package id="NLog" version="5.1.0" targetFramework="net461" />
</packages> </packages>

62
MultiTool.Form/App.config Normal file
View File

@@ -0,0 +1,62 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System">
<section name="DevExpress.LookAndFeel.Design.AppSettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/>
</sectionGroup>
</configSections>
<applicationSettings>
<DevExpress.LookAndFeel.Design.AppSettings>
<setting name="DefaultAppSkin" serializeAs="String">
<value></value>
</setting>
<setting name="DefaultPalette" serializeAs="String">
<value></value>
</setting>
<setting name="TouchUI" serializeAs="String">
<value></value>
</setting>
<setting name="CompactUI" serializeAs="String">
<value></value>
</setting>
<setting name="TouchScaleFactor" serializeAs="String">
<value></value>
</setting>
<setting name="DirectX" serializeAs="String">
<value></value>
</setting>
<setting name="RegisterUserSkins" serializeAs="String">
<value></value>
</setting>
<setting name="RegisterBonusSkins" serializeAs="String">
<value></value>
</setting>
<setting name="FontBehavior" serializeAs="String">
<value>UseSegoeUI</value>
</setting>
<setting name="DefaultAppFont" serializeAs="String">
<value></value>
</setting>
<setting name="DPIAwarenessMode" serializeAs="String">
<value>PerMonitorV2</value>
</setting>
<setting name="CustomPaletteCollection" serializeAs="Xml">
<value/>
</setting>
</DevExpress.LookAndFeel.Design.AppSettings>
</applicationSettings>
<connectionStrings>
<add name="MultiTool.Form.My.MySettings.DD_ECMConnectionString" connectionString="Data Source=SDD-VMP04-SQL17\SCHAUM;Initial Catalog=DD_ECM;Persist Security Info=True;User ID=sa;Password=dd" providerName="System.Data.SqlClient"/>
</connectionStrings>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View File

@@ -0,0 +1,15 @@
Imports Microsoft.VisualBasic.ApplicationServices
Namespace My
' Für MyApplication sind folgende Ereignisse verfügbar:
' Startup: Wird beim Starten der Anwendung noch vor dem Erstellen des Startformulars ausgelöst.
' Shutdown: Wird nach dem Schließen aller Anwendungsformulare ausgelöst. Dieses Ereignis wird nicht ausgelöst, wenn die Anwendung mit einem Fehler beendet wird.
' UnhandledException: Wird bei einem Ausnahmefehler ausgelöst.
' StartupNextInstance: Wird beim Starten einer Einzelinstanzanwendung ausgelöst, wenn die Anwendung bereits aktiv ist.
' NetworkAvailabilityChanged: Wird beim Herstellen oder Trennen der Netzwerkverbindung ausgelöst.
Partial Friend Class MyApplication
Protected Overrides Function OnUnhandledException(e As UnhandledExceptionEventArgs) As Boolean
Return MyBase.OnUnhandledException(e)
End Function
End Class
End Namespace

View File

@@ -0,0 +1,585 @@
USE [DD_ECM]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] DROP CONSTRAINT [FK_TBEDI_XML_TYPES]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] DROP CONSTRAINT [FK_TBEDI_XML_NODES]
GO
ALTER TABLE [dbo].[TBEDI_XML_TYPES] DROP CONSTRAINT [DF_TBEDI_XML_TYPES_ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBEDI_XML_TYPES] DROP CONSTRAINT [DF_TBEDI_XML_TYPES_ADDED_WHO]
GO
ALTER TABLE [dbo].[TBEDI_XML_TYPES] DROP CONSTRAINT [DF_TBEDI_XML_TYPES_ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATES] DROP CONSTRAINT [DF_TBMT_TEMPLATES_ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATES] DROP CONSTRAINT [DF_TBMT_TEMPLATES_ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATES] DROP CONSTRAINT [DF_TBMT_TEMPLATES_ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_TABLES] DROP CONSTRAINT [DF_TBMT_TABLES_ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_TABLES] DROP CONSTRAINT [DF_TBMT_TABLES_ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_TABLES] DROP CONSTRAINT [DF_TBMT_TABLES_ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_TABLES] DROP CONSTRAINT [DF_TBEDI_XML_NODES_IS_HEAD]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_ENTITIES] DROP CONSTRAINT [DF_TBMT_MAPPING_ENTITIES_ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_ENTITIES] DROP CONSTRAINT [DF_TBMT_MAPPING_ENTITIES_ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_ENTITIES] DROP CONSTRAINT [DF_TBMT_MAPPING_ENTITIES_ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_CONFIG] DROP CONSTRAINT [DF_TBMT_MAPPING_CONFIG_ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_CONFIG] DROP CONSTRAINT [DF_TBMT_MAPPING_CONFIG_ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_CONFIG] DROP CONSTRAINT [DF_TBMT_MAPPING_CONFIG_ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_CONFIG] DROP CONSTRAINT [DF_TBEDI_XML_VALUE_MAPPING_ORDER_KEY]
GO
ALTER TABLE [dbo].[TBMT_MANDATORS] DROP CONSTRAINT [DF_TBMT_MANDATORS_ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] DROP CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] DROP CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] DROP CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] DROP CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_IS_VIRTUAL]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] DROP CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_IS_REQUIRED]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] DROP CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_IS_VISIBLE]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] DROP CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_IS_READ_ONLY]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] DROP CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_ORDER_KEY]
GO
ALTER TABLE [dbo].[TBMT_FUNCTIONS] DROP CONSTRAINT [DF_TBMT_FUNCTIONS_ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_FUNCTIONS] DROP CONSTRAINT [DF_TBMT_FUNCTIONS_ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_FUNCTIONS] DROP CONSTRAINT [DF_TBMT_FUNCTIONS_ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_CONFIG] DROP CONSTRAINT [DF_TBMT_CONFIG_ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_CONFIG] DROP CONSTRAINT [DF_TBMT_CONFIG_ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_CONFIG] DROP CONSTRAINT [DF_TBMT_CONFIG_ACTIVE]
GO
/****** Object: Table [dbo].[TBEDI_XML_TYPES] Script Date: 26.11.2021 16:07:58 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TBEDI_XML_TYPES]') AND type in (N'U'))
DROP TABLE [dbo].[TBEDI_XML_TYPES]
GO
/****** Object: Table [dbo].[TBMT_TEMPLATES] Script Date: 26.11.2021 16:07:58 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TBMT_TEMPLATES]') AND type in (N'U'))
DROP TABLE [dbo].[TBMT_TEMPLATES]
GO
/****** Object: Table [dbo].[TBMT_TABLES] Script Date: 26.11.2021 16:07:58 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TBMT_TABLES]') AND type in (N'U'))
DROP TABLE [dbo].[TBMT_TABLES]
GO
/****** Object: Table [dbo].[TBMT_MAPPING_ENTITIES] Script Date: 26.11.2021 16:07:58 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TBMT_MAPPING_ENTITIES]') AND type in (N'U'))
DROP TABLE [dbo].[TBMT_MAPPING_ENTITIES]
GO
/****** Object: Table [dbo].[TBMT_MAPPING_CONFIG] Script Date: 26.11.2021 16:07:58 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TBMT_MAPPING_CONFIG]') AND type in (N'U'))
DROP TABLE [dbo].[TBMT_MAPPING_CONFIG]
GO
/****** Object: Table [dbo].[TBMT_MANDATORS] Script Date: 26.11.2021 16:07:58 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TBMT_MANDATORS]') AND type in (N'U'))
DROP TABLE [dbo].[TBMT_MANDATORS]
GO
/****** Object: Table [dbo].[TBMT_TEMPLATE_ITEMS] Script Date: 26.11.2021 16:07:58 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TBMT_TEMPLATE_ITEMS]') AND type in (N'U'))
DROP TABLE [dbo].[TBMT_TEMPLATE_ITEMS]
GO
/****** Object: Table [dbo].[TBMT_FUNCTIONS] Script Date: 26.11.2021 16:07:58 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TBMT_FUNCTIONS]') AND type in (N'U'))
DROP TABLE [dbo].[TBMT_FUNCTIONS]
GO
/****** Object: Table [dbo].[TBMT_CONFIG] Script Date: 26.11.2021 16:07:58 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[TBMT_CONFIG]') AND type in (N'U'))
DROP TABLE [dbo].[TBMT_CONFIG]
GO
/****** Object: Table [dbo].[TBMT_CONFIG] Script Date: 26.11.2021 16:07:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TBMT_CONFIG](
[GUID] [int] IDENTITY(1,1) NOT NULL,
[KEY] [nvarchar](100) NOT NULL,
[VALUE] [nvarchar](500) NOT NULL,
[ACTIVE] [bit] NOT NULL,
[COMMENT] [nvarchar](100) NULL,
[ADDED_WHO] [nvarchar](50) NOT NULL,
[ADDED_WHEN] [datetime] NULL,
[CHANGED_WHO] [nvarchar](50) NULL,
[CHANGED_WHEN] [datetime] NULL,
CONSTRAINT [PK_TBMT_CONFIG] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[TBMT_FUNCTIONS] Script Date: 26.11.2021 16:07:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TBMT_FUNCTIONS](
[GUID] [int] IDENTITY(1,1) NOT NULL,
[NAME] [nvarchar](max) NOT NULL,
[DESCRIPTION] [nvarchar](max) NOT NULL,
[PARAMETERS] [nvarchar](max) NULL,
[ACTIVE] [bit] NOT NULL,
[COMMENT] [nvarchar](100) NULL,
[ADDED_WHO] [nvarchar](50) NOT NULL,
[ADDED_WHEN] [datetime] NULL,
[CHANGED_WHO] [nvarchar](50) NULL,
[CHANGED_WHEN] [datetime] NULL,
CONSTRAINT [PK__TBEDI_XM__15B69B8E0E5FF7EC] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object: Table [dbo].[TBMT_TEMPLATE_ITEMS] Script Date: 26.11.2021 16:07:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TBMT_TEMPLATE_ITEMS](
[GUID] [int] IDENTITY(1,1) NOT NULL,
[ORDER_KEY] [int] NOT NULL,
[XML_NAME] [nvarchar](50) NOT NULL,
[XML_TABLE_ID] [int] NOT NULL,
[XML_TYPE_ID] [int] NOT NULL,
[IS_READ_ONLY] [bit] NOT NULL,
[IS_VISIBLE] [bit] NOT NULL,
[IS_REQUIRED] [bit] NOT NULL,
[IS_VIRTUAL] [bit] NOT NULL,
[FUNCTION_ID] [int] NULL,
[FUNCTION_PARAMETERS] [nvarchar](max) NULL,
[ACTIVE] [bit] NOT NULL,
[COMMENT] [nvarchar](100) NULL,
[ADDED_WHO] [nvarchar](50) NOT NULL,
[ADDED_WHEN] [datetime] NULL,
[CHANGED_WHO] [nvarchar](50) NULL,
[CHANGED_WHEN] [datetime] NULL,
CONSTRAINT [PK__TBEDI_XM__15B69B8E6125D501] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object: Table [dbo].[TBMT_MANDATORS] Script Date: 26.11.2021 16:07:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TBMT_MANDATORS](
[GUID] [int] IDENTITY(1,1) NOT NULL,
[NAME] [nvarchar](50) NULL,
[ORDER_KEY] [int] NULL,
[ACTIVE] [bit] NOT NULL,
[COMMENT] [nvarchar](100) NULL,
[ADDED_WHO] [nvarchar](50) NULL,
[ADDED_WHEN] [datetime] NULL,
[CHANGED_WHO] [nvarchar](50) NULL,
[CHANGED_WHEN] [datetime] NULL,
CONSTRAINT [PK_TBMT_MANDATORS] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[TBMT_MAPPING_CONFIG] Script Date: 26.11.2021 16:07:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TBMT_MAPPING_CONFIG](
[GUID] [int] IDENTITY(1,1) NOT NULL,
[ORDER_KEY] [int] NOT NULL,
[SOURCE_ENTITY_ID] [int] NOT NULL,
[SOURCE_REGEX] [nvarchar](100) NOT NULL,
[DESTINATION_ENTITY_ID] [int] NOT NULL,
[DESTINATION_VALUE] [nvarchar](100) NOT NULL,
[ACTIVE] [bit] NOT NULL,
[COMMENT] [nvarchar](100) NULL,
[ADDED_WHO] [nvarchar](50) NOT NULL,
[ADDED_WHEN] [datetime] NULL,
[CHANGED_WHO] [nvarchar](50) NULL,
[CHANGED_WHEN] [nchar](10) NULL,
CONSTRAINT [PK_TBMT_MAPPING_CONFIG] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[TBMT_MAPPING_ENTITIES] Script Date: 26.11.2021 16:07:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TBMT_MAPPING_ENTITIES](
[GUID] [int] IDENTITY(1,1) NOT NULL,
[NAME] [nvarchar](100) NULL,
[ITEM_ID] [int] NULL,
[ACTIVE] [bit] NOT NULL,
[COMMENT] [nvarchar](100) NULL,
[ADDED_WHO] [nvarchar](50) NOT NULL,
[ADDED_WHEN] [datetime] NULL,
[CHANGED_WHO] [nvarchar](50) NULL,
[CHANGED_WHEN] [datetime] NULL,
CONSTRAINT [PK_TBMT_MAPPING_ENTITIES] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object: Table [dbo].[TBMT_TABLES] Script Date: 26.11.2021 16:07:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TBMT_TABLES](
[GUID] [int] IDENTITY(1,1) NOT NULL,
[NAME] [nvarchar](max) NOT NULL,
[TEMPLATE_ID] [int] NOT NULL,
[IS_HEAD] [bit] NOT NULL,
[ACTIVE] [bit] NOT NULL,
[COMMENT] [nvarchar](100) NULL,
[ADDED_WHO] [nvarchar](50) NOT NULL,
[ADDED_WHEN] [datetime] NULL,
[CHANGED_WHO] [nvarchar](50) NULL,
[CHANGED_WHEN] [datetime] NULL,
CONSTRAINT [PK__TBEDI_XM__15B69B8E6F74D014] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object: Table [dbo].[TBMT_TEMPLATES] Script Date: 26.11.2021 16:07:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TBMT_TEMPLATES](
[GUID] [int] IDENTITY(1,1) NOT NULL,
[NAME] [nvarchar](20) NOT NULL,
[DESCRIPTION] [nvarchar](max) NULL,
[FILE_NAME] [nvarchar](100) NULL,
[IS_IMPORT] [bit] NULL,
[ACTIVE] [bit] NOT NULL,
[COMMENT] [nvarchar](100) NULL,
[ADDED_WHO] [nvarchar](50) NOT NULL,
[ADDED_WHEN] [datetime] NULL,
[CHANGED_WHO] [nvarchar](50) NULL,
[CHANGED_WHEN] [datetime] NULL,
CONSTRAINT [PK__TBEDI_XM__15B69B8E8C482F3B] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO
/****** Object: Table [dbo].[TBEDI_XML_TYPES] Script Date: 26.11.2021 16:07:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[TBEDI_XML_TYPES](
[GUID] [int] IDENTITY(1,1) NOT NULL,
[NAME] [nvarchar](20) NOT NULL,
[ACTIVE] [bit] NOT NULL,
[COMMENT] [nvarchar](100) NULL,
[ADDED_WHO] [nvarchar](50) NOT NULL,
[ADDED_WHEN] [datetime] NULL,
[CHANGED_WHO] [nvarchar](50) NULL,
[CHANGED_WHEN] [datetime] NULL,
CONSTRAINT [PK__TBEDI_XM__15B69B8E5B32E7AF] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[TBMT_CONFIG] ON
GO
INSERT [dbo].[TBMT_CONFIG] ([GUID], [KEY], [VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (2, N'YEAR_OVERRIDE', N'2020', 1, NULL, N'DEFAULT', CAST(N'2021-11-22T10:33:12.413' AS DateTime), NULL, NULL)
GO
INSERT [dbo].[TBMT_CONFIG] ([GUID], [KEY], [VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (3, N'WEBSERVICE_BASEURL', N'http://sDD-VMP05-VM01:8181', 1, NULL, N'DEFAULT', CAST(N'2021-11-22T10:34:07.760' AS DateTime), NULL, NULL)
GO
INSERT [dbo].[TBMT_CONFIG] ([GUID], [KEY], [VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (4, N'WEBSERVICE_USERNAME', N'DigitalData', 1, NULL, N'DEFAULT', CAST(N'2021-11-22T10:34:22.930' AS DateTime), NULL, NULL)
GO
INSERT [dbo].[TBMT_CONFIG] ([GUID], [KEY], [VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (5, N'WEBSERIVCE_PASSWORD', N'dd', 1, NULL, N'DEFAULT', CAST(N'2021-11-22T10:34:45.617' AS DateTime), NULL, NULL)
GO
INSERT [dbo].[TBMT_CONFIG] ([GUID], [KEY], [VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (6, N'WEBSERVICE_IMPORT_BASE_PATH', N'\\172.24.12.51\mesonic$\WinLine', 1, NULL, N'DEFAULT', CAST(N'2021-11-22T10:35:09.290' AS DateTime), NULL, NULL)
GO
INSERT [dbo].[TBMT_CONFIG] ([GUID], [KEY], [VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (8, N'WEBSERVICE_IMPORT_RELATIVE_PATH', N'', 1, NULL, N'DEFAULT', CAST(N'2021-11-22T10:35:32.977' AS DateTime), NULL, NULL)
GO
INSERT [dbo].[TBMT_CONFIG] ([GUID], [KEY], [VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (10, N'INPUT_DIRECTORY', N'P:\Projekte DIGITAL DATA\Schaum\mesonic Projekt\Werks EDI Import\Input', 1, NULL, N'DEFAULT', CAST(N'2021-11-22T10:37:16.697' AS DateTime), NULL, NULL)
GO
INSERT [dbo].[TBMT_CONFIG] ([GUID], [KEY], [VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (11, N'OUTPUT_DIRECTORY', N'', 1, NULL, N'DEFAULT', CAST(N'2021-11-22T10:37:22.447' AS DateTime), NULL, NULL)
GO
INSERT [dbo].[TBMT_CONFIG] ([GUID], [KEY], [VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (12, N'TEMPLATE_DIRECTORY', N'P:\Projekte DIGITAL DATA\Schaum\mesonic Projekt\Werks EDI Import\Schemata', 1, NULL, N'DEFAULT', CAST(N'2021-11-22T10:37:48.697' AS DateTime), NULL, NULL)
GO
SET IDENTITY_INSERT [dbo].[TBMT_CONFIG] OFF
GO
SET IDENTITY_INSERT [dbo].[TBMT_FUNCTIONS] ON
GO
INSERT [dbo].[TBMT_FUNCTIONS] ([GUID], [NAME], [DESCRIPTION], [PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (1, N'GLN', N'Finds an WinLine Account Number by GLN', NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_FUNCTIONS] ([GUID], [NAME], [DESCRIPTION], [PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (2, N'EAN', N'Finds an WinLine Article Number by EAN', NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_FUNCTIONS] ([GUID], [NAME], [DESCRIPTION], [PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (3, N'SQL', N'Finds a Value by SQL Query', N'Query', 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
SET IDENTITY_INSERT [dbo].[TBMT_FUNCTIONS] OFF
GO
SET IDENTITY_INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ON
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (1, 0, N'BELEGKEY', 1, 1, 0, 0, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (2, 0, N'Fakt_Kontonummer', 1, 1, 0, 1, 0, 0, 1, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (3, 0, N'Laufnummer', 1, 1, 0, 0, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (4, 0, N'Bestellt_von', 1, 1, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (5, 0, N'Lief_Kontonummer', 1, 1, 0, 1, 0, 0, 1, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (6, 0, N'Lief_Name', 1, 1, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (7, 0, N'Lief_Strasse', 1, 1, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (8, 0, N'Lief_PLZ', 1, 1, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (9, 0, N'Lief_Ort', 1, 1, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (10, 0, N'Belegart', 1, 2, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, CAST(N'2021-11-23T13:26:49.413' AS DateTime))
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (11, 0, N'Datum_Auftrag-Bestellung', 1, 3, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (12, 0, N'Auftrags-Bestellnummer', 1, 1, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (13, 0, N'Leistungsdatum', 1, 3, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (14, 0, N'Infotext', 1, 1, 0, 0, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (15, 0, N'BELEGKEY', 2, 1, 0, 0, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (16, 1, N'Zeilennummer', 2, 1, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (17, 0, N'Datentyp', 2, 2, 0, 0, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (18, 2, N'Artikelnummer', 2, 1, 0, 1, 0, 0, 2, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (19, 3, N'Bezeichnung', 2, 1, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (20, 0, N'Lieferantenartikelnummer', 2, 1, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (21, 0, N'Menge_bestellt', 2, 5, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (22, 0, N'Menge_geliefert', 2, 5, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (23, 0, N'Colli', 2, 1, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (24, 0, N'Einzelpreis', 2, 5, 0, 1, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (25, 0, N'Zeilenrabatt1', 2, 5, 0, 0, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (26, 0, N'Zeilenrabatt2', 2, 5, 0, 0, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (27, 0, N'Zeilenrabatt3', 2, 5, 0, 0, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (28, 0, N'Zeilenrabatt4', 2, 5, 0, 0, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (29, 0, N'Umsatzsteuerprozent_Zeile', 2, 2, 0, 0, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (30, 0, N'EDI_Infotext', 2, 1, 0, 0, 0, 0, NULL, NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (31, 0, N'Lagerstand', 2, 1, 0, 0, 0, 1, 3, N'SELECT (c008 - c009) FROM [CWLDATEN_SIVT].[dbo].[v021] WHERE c002 = ''{#FIELD#Artikelnummer}'' AND MESOCOMP = ''{#CONST#MESOCOMP}'' AND MESOYEAR = {#CONST#MESOYEAR}', 1, NULL, N'DEFAULT', CAST(N'2021-11-23T14:00:35.573' AS DateTime), NULL, CAST(N'2021-11-23T16:05:09.667' AS DateTime))
GO
INSERT [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID], [ORDER_KEY], [XML_NAME], [XML_TABLE_ID], [XML_TYPE_ID], [IS_READ_ONLY], [IS_VISIBLE], [IS_REQUIRED], [IS_VIRTUAL], [FUNCTION_ID], [FUNCTION_PARAMETERS], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (32, 0, N'EinheitProPalette', 2, 1, 0, 0, 0, 1, 3, N'SELECT TRY_CONVERT(float, ISNULL(c208, 0)) FROM [CWLDATEN_SIVT].[dbo].[v021] WHERE c002 = ''{#FIELD#Artikelnummer}'' AND MESOCOMP = ''{#CONST#MESOCOMP}'' AND MESOYEAR = {#CONST#MESOYEAR}', 1, NULL, N'DEFAULT', CAST(N'2021-11-23T15:41:26.263' AS DateTime), NULL, CAST(N'2021-11-23T15:42:23.123' AS DateTime))
GO
SET IDENTITY_INSERT [dbo].[TBMT_TEMPLATE_ITEMS] OFF
GO
SET IDENTITY_INSERT [dbo].[TBMT_MANDATORS] ON
GO
INSERT [dbo].[TBMT_MANDATORS] ([GUID], [NAME], [ORDER_KEY], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (1, N'SHGT', 1, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_MANDATORS] ([GUID], [NAME], [ORDER_KEY], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (2, N'SIVT', 2, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
SET IDENTITY_INSERT [dbo].[TBMT_MANDATORS] OFF
GO
SET IDENTITY_INSERT [dbo].[TBMT_MAPPING_CONFIG] ON
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (2, 1, 2, N'^R[a-zA-Z0-9\-_\s]+$', 1, N'SHGT', 1, NULL, N'DigitalData', NULL, NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (3, 2, 2, N'^R[a-zA-Z0-9\-_\s]+$', 3, N'1', 1, NULL, N'DigitalData', NULL, NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (5, 3, 2, N'^ABN-[a-zA-Z0-9\-_\s]+$', 1, N'SIVT', 1, NULL, N'DigitalData', NULL, NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (6, 4, 2, N'^ABN-[a-zA-Z0-9\-_\s]+$', 3, N'100', 1, NULL, N'DigitalData', CAST(N'2021-11-23T13:30:15.197' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (7, 5, 2, N'^HAU-[a-zA-Z0-9\-_\s]+$', 1, N'SIVT', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:40:10.130' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (8, 6, 2, N'^HAU-[a-zA-Z0-9\-_\s]+$', 3, N'101', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:40:23.803' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (11, 7, 2, N'^SCHI-[a-zA-Z0-9\-_\s]+$', 1, N'SIVT', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:41:22.587' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (12, 8, 2, N'^SCHI-[a-zA-Z0-9\-_\s]+$', 3, N'102', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:41:35.943' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (13, 9, 2, N'^FSC-[a-zA-Z0-9\-_\s]+$', 1, N'SIVT', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:42:05.040' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (15, 10, 2, N'^FSC-[a-zA-Z0-9\-_\s]+$', 3, N'103', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:42:18.227' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (16, 11, 2, N'^HEL-[a-zA-Z0-9\-_\s]+$', 1, N'SIVT', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:43:12.260' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (17, 12, 2, N'^HEL-[a-zA-Z0-9\-_\s]+$', 3, N'104', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:43:21.867' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (19, 13, 2, N'^NIE-[a-zA-Z0-9\-_\s]+$', 1, N'SIVT', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:43:54.493' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (20, 14, 2, N'^NIE-[a-zA-Z0-9\-_\s]+$', 3, N'106', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:44:07.993' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (21, 15, 2, N'^WAL-[a-zA-Z0-9\-_\s]+$', 1, N'SIVT', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:45:02.557' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (22, 16, 2, N'^WAL-[a-zA-Z0-9\-_\s]+$', 3, N'107', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:45:14.463' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (23, 17, 2, N'^HKL-[a-zA-Z0-9\-_\s]+$', 1, N'SIVT', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:45:36.150' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (24, 18, 2, N'^HKL-[a-zA-Z0-9\-_\s]+$', 3, N'108', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:45:46.430' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (25, 19, 2, N'^FIN-[a-zA-Z0-9\-_\s]+$', 1, N'SIVT', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:46:14.730' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (26, 20, 2, N'^FIN-[a-zA-Z0-9\-_\s]+$', 3, N'109', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:46:25.650' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (27, 21, 2, N'^ETH-[a-zA-Z0-9\-_\s]+$', 1, N'SIVT', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:47:34.057' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (28, 22, 2, N'^ETH-[a-zA-Z0-9\-_\s]+$', 3, N'110', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:47:46.963' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (29, 23, 2, N'^BRI-[a-zA-Z0-9\-_\s]+$', 1, N'SIVT', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:48:36.667' AS DateTime), NULL, N'Nov 26 202')
GO
INSERT [dbo].[TBMT_MAPPING_CONFIG] ([GUID], [ORDER_KEY], [SOURCE_ENTITY_ID], [SOURCE_REGEX], [DESTINATION_ENTITY_ID], [DESTINATION_VALUE], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (30, 24, 2, N'^BRI-[a-zA-Z0-9\-_\s]+$', 3, N'111', 1, NULL, N'DigitalData', CAST(N'2021-11-26T13:49:00.463' AS DateTime), NULL, N'Nov 26 202')
GO
SET IDENTITY_INSERT [dbo].[TBMT_MAPPING_CONFIG] OFF
GO
SET IDENTITY_INSERT [dbo].[TBMT_MAPPING_ENTITIES] ON
GO
INSERT [dbo].[TBMT_MAPPING_ENTITIES] ([GUID], [NAME], [ITEM_ID], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (1, N'MANDATOR', NULL, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_MAPPING_ENTITIES] ([GUID], [NAME], [ITEM_ID], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (2, N'ARTICLE', 18, 1, NULL, N'DEFAULT', NULL, NULL, CAST(N'2021-11-19T12:27:02.443' AS DateTime))
GO
INSERT [dbo].[TBMT_MAPPING_ENTITIES] ([GUID], [NAME], [ITEM_ID], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (3, N'DOCUMENTTYPE', 10, 1, NULL, N'DEFAULT', NULL, NULL, CAST(N'2021-11-19T12:26:06.693' AS DateTime))
GO
SET IDENTITY_INSERT [dbo].[TBMT_MAPPING_ENTITIES] OFF
GO
SET IDENTITY_INSERT [dbo].[TBMT_TABLES] ON
GO
INSERT [dbo].[TBMT_TABLES] ([GUID], [NAME], [TEMPLATE_ID], [IS_HEAD], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (1, N'EXIM-VRG_ordersT025', 1, 1, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBMT_TABLES] ([GUID], [NAME], [TEMPLATE_ID], [IS_HEAD], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (2, N'EXIM-VRG_ordersT026', 1, 0, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
SET IDENTITY_INSERT [dbo].[TBMT_TABLES] OFF
GO
SET IDENTITY_INSERT [dbo].[TBMT_TEMPLATES] ON
GO
INSERT [dbo].[TBMT_TEMPLATES] ([GUID], [NAME], [DESCRIPTION], [FILE_NAME], [IS_IMPORT], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (1, N'EXIM-VRG_orders', N'Schaum EDI Aufträge', N'MESOBelegeEXIM-VRG_orders.xsd', 1, 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
SET IDENTITY_INSERT [dbo].[TBMT_TEMPLATES] OFF
GO
SET IDENTITY_INSERT [dbo].[TBEDI_XML_TYPES] ON
GO
INSERT [dbo].[TBEDI_XML_TYPES] ([GUID], [NAME], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (1, N'STRING', 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBEDI_XML_TYPES] ([GUID], [NAME], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (2, N'INTEGER', 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBEDI_XML_TYPES] ([GUID], [NAME], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (3, N'DATE', 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBEDI_XML_TYPES] ([GUID], [NAME], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (4, N'BOOLEAN', 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBEDI_XML_TYPES] ([GUID], [NAME], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (5, N'DECIMAL', 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBEDI_XML_TYPES] ([GUID], [NAME], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (6, N'ACCOUNT', 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
INSERT [dbo].[TBEDI_XML_TYPES] ([GUID], [NAME], [ACTIVE], [COMMENT], [ADDED_WHO], [ADDED_WHEN], [CHANGED_WHO], [CHANGED_WHEN]) VALUES (7, N'ARTICLE', 1, NULL, N'DEFAULT', NULL, NULL, NULL)
GO
SET IDENTITY_INSERT [dbo].[TBEDI_XML_TYPES] OFF
GO
ALTER TABLE [dbo].[TBMT_CONFIG] ADD CONSTRAINT [DF_TBMT_CONFIG_ACTIVE] DEFAULT ((1)) FOR [ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_CONFIG] ADD CONSTRAINT [DF_TBMT_CONFIG_ADDED_WHO] DEFAULT (N'DEFAULT') FOR [ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_CONFIG] ADD CONSTRAINT [DF_TBMT_CONFIG_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_FUNCTIONS] ADD CONSTRAINT [DF_TBMT_FUNCTIONS_ACTIVE] DEFAULT ((1)) FOR [ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_FUNCTIONS] ADD CONSTRAINT [DF_TBMT_FUNCTIONS_ADDED_WHO] DEFAULT (N'DEFAULT') FOR [ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_FUNCTIONS] ADD CONSTRAINT [DF_TBMT_FUNCTIONS_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] ADD CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_ORDER_KEY] DEFAULT ((0)) FOR [ORDER_KEY]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] ADD CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_IS_READ_ONLY] DEFAULT ((0)) FOR [IS_READ_ONLY]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] ADD CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_IS_VISIBLE] DEFAULT ((0)) FOR [IS_VISIBLE]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] ADD CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_IS_REQUIRED] DEFAULT ((0)) FOR [IS_REQUIRED]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] ADD CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_IS_VIRTUAL] DEFAULT ((0)) FOR [IS_VIRTUAL]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] ADD CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_ACTIVE] DEFAULT ((1)) FOR [ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] ADD CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_ADDED_WHO] DEFAULT (N'DEFAULT') FOR [ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] ADD CONSTRAINT [DF_TBMT_TEMPLATE_ITEMS_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_MANDATORS] ADD CONSTRAINT [DF_TBMT_MANDATORS_ACTIVE] DEFAULT ((1)) FOR [ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_CONFIG] ADD CONSTRAINT [DF_TBEDI_XML_VALUE_MAPPING_ORDER_KEY] DEFAULT ((0)) FOR [ORDER_KEY]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_CONFIG] ADD CONSTRAINT [DF_TBMT_MAPPING_CONFIG_ACTIVE] DEFAULT ((1)) FOR [ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_CONFIG] ADD CONSTRAINT [DF_TBMT_MAPPING_CONFIG_ADDED_WHO] DEFAULT (N'DEFAULT') FOR [ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_CONFIG] ADD CONSTRAINT [DF_TBMT_MAPPING_CONFIG_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_ENTITIES] ADD CONSTRAINT [DF_TBMT_MAPPING_ENTITIES_ACTIVE] DEFAULT ((1)) FOR [ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_ENTITIES] ADD CONSTRAINT [DF_TBMT_MAPPING_ENTITIES_ADDED_WHO] DEFAULT (N'DEFAULT') FOR [ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_MAPPING_ENTITIES] ADD CONSTRAINT [DF_TBMT_MAPPING_ENTITIES_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_TABLES] ADD CONSTRAINT [DF_TBEDI_XML_NODES_IS_HEAD] DEFAULT ((0)) FOR [IS_HEAD]
GO
ALTER TABLE [dbo].[TBMT_TABLES] ADD CONSTRAINT [DF_TBMT_TABLES_ACTIVE] DEFAULT ((1)) FOR [ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_TABLES] ADD CONSTRAINT [DF_TBMT_TABLES_ADDED_WHO] DEFAULT (N'DEFAULT') FOR [ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_TABLES] ADD CONSTRAINT [DF_TBMT_TABLES_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATES] ADD CONSTRAINT [DF_TBMT_TEMPLATES_ACTIVE] DEFAULT ((1)) FOR [ACTIVE]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATES] ADD CONSTRAINT [DF_TBMT_TEMPLATES_ADDED_WHO] DEFAULT (N'DEFAULT') FOR [ADDED_WHO]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATES] ADD CONSTRAINT [DF_TBMT_TEMPLATES_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBEDI_XML_TYPES] ADD CONSTRAINT [DF_TBEDI_XML_TYPES_ACTIVE] DEFAULT ((1)) FOR [ACTIVE]
GO
ALTER TABLE [dbo].[TBEDI_XML_TYPES] ADD CONSTRAINT [DF_TBEDI_XML_TYPES_ADDED_WHO] DEFAULT (N'DEFAULT') FOR [ADDED_WHO]
GO
ALTER TABLE [dbo].[TBEDI_XML_TYPES] ADD CONSTRAINT [DF_TBEDI_XML_TYPES_ADDED_WHEN] DEFAULT (getdate()) FOR [ADDED_WHEN]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] WITH CHECK ADD CONSTRAINT [FK_TBEDI_XML_NODES] FOREIGN KEY([XML_TABLE_ID])
REFERENCES [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID])
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] CHECK CONSTRAINT [FK_TBEDI_XML_NODES]
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] WITH CHECK ADD CONSTRAINT [FK_TBEDI_XML_TYPES] FOREIGN KEY([XML_TYPE_ID])
REFERENCES [dbo].[TBMT_TEMPLATE_ITEMS] ([GUID])
GO
ALTER TABLE [dbo].[TBMT_TEMPLATE_ITEMS] CHECK CONSTRAINT [FK_TBEDI_XML_TYPES]
GO

7734
MultiTool.Form/DS_DD_ECM.Designer.vb generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<!--<autogenerated>
This code was generated by a tool.
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DataSetUISetting Version="1.00" xmlns="urn:schemas-microsoft-com:xml-msdatasource">
<TableUISettings />
</DataSetUISetting>

Some files were not shown because too many files have changed in this diff Show More