Przeglądaj źródła

Moved settings from Registry to AppData to prevent privilege requirements
Updated ESC/P codes to include emphasis and character pitch settings used on Tally Printers

Brett Credo 8 lat temu
rodzic
commit
06387825ee

+ 2 - 2
BulkPrinting/BulkPrinting/BulkPrinting.csproj

@@ -13,7 +13,7 @@
13 13
     <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
14 14
     <TargetFrameworkProfile />
15 15
     <IsWebBootstrapper>false</IsWebBootstrapper>
16
-    <PublishUrl>C:\Users\Brett\Desktop\Bulk Printing Setup\</PublishUrl>
16
+    <PublishUrl>D:\BPSetup\</PublishUrl>
17 17
     <Install>true</Install>
18 18
     <InstallFrom>Disk</InstallFrom>
19 19
     <UpdateEnabled>false</UpdateEnabled>
@@ -26,7 +26,7 @@
26 26
     <TargetCulture>en-ZA</TargetCulture>
27 27
     <ProductName>Bulk Printing</ProductName>
28 28
     <PublisherName>R-Group</PublisherName>
29
-    <ApplicationRevision>4</ApplicationRevision>
29
+    <ApplicationRevision>9</ApplicationRevision>
30 30
     <ApplicationVersion>1.0.0.%2a</ApplicationVersion>
31 31
     <UseApplicationTrust>false</UseApplicationTrust>
32 32
     <CreateDesktopShortcut>true</CreateDesktopShortcut>

+ 1 - 1
BulkPrinting/BulkPrinting/BulkPrinting.csproj.user

@@ -1,7 +1,7 @@
1 1
 <?xml version="1.0" encoding="utf-8"?>
2 2
 <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3 3
   <PropertyGroup>
4
-    <PublishUrlHistory>C:\Users\Brett\Desktop\Bulk Printing Setup\|C:\Users\Brett\Desktop\R-Group Deploy\|publish\</PublishUrlHistory>
4
+    <PublishUrlHistory>D:\BPSetup\|C:\Users\Brett\Desktop\Bulk Printing Setup\|C:\Users\Brett\Desktop\R-Group Deploy\|publish\</PublishUrlHistory>
5 5
     <InstallUrlHistory />
6 6
     <SupportUrlHistory />
7 7
     <UpdateUrlHistory />

+ 1 - 1
BulkPrinting/BulkPrinting/Configuration.cs

@@ -9,7 +9,7 @@ namespace BulkPrinting
9 9
 {
10 10
     public static class Configuration
11 11
     {
12
-        public const string ServerDN = "196.31.118.146";
12
+        public const string ServerDN = "196.31.118.146";//"localhost";
13 13
         public const string ServerPort = "443";//"50069";
14 14
         public const string MaxDBFileName = "maxdata.dat";
15 15
         public const string MaxDataPathName = "M@X";

+ 11 - 0
BulkPrinting/BulkPrinting/Models.cs

@@ -8,6 +8,17 @@ using Newtonsoft.Json.Serialization;
8 8
 
9 9
 namespace BulkPrinting
10 10
 {
11
+    public class SavedSettings {
12
+        [JsonProperty("vendorId")]
13
+        public int VendorId { get; set; }
14
+
15
+        [JsonProperty("userId")]
16
+        public int UserId { get; set; }
17
+
18
+        [JsonProperty("username")]
19
+        public string Username { get; set; }
20
+    }
21
+
11 22
     public enum SessionModes {
12 23
         Invalid = 0,
13 24
         Offline = 1,

+ 19 - 9
BulkPrinting/BulkPrinting/PrintAlignmentDialog.cs

@@ -52,22 +52,32 @@ namespace BulkPrinting
52 52
 
53 53
         private void btnAlignment_Click(object sender, EventArgs e)
54 54
         {
55
-            if (Globals.MaxPrinter.Open("Alignment")==0) return;
56 55
 
57 56
             var PrinterInitString = new StringBuilder();
58
-            PrinterInitString.Append(Printer.INITIALISE_PRINTER).Append(Printer.UNIDIRECTIONAL_OFF).Append(Printer.EMPHASISE_ON);
59
-            Globals.MaxPrinter.Print(PrinterInitString.ToString());
57
+            //PrinterInitString.Append(Printer.INITIALISE_PRINTER).Append(Printer.EMPHASISE_ON).Append(Printer.UNIDIRECTIONAL_OFF).Append(Printer.CHARPITCHELITE);
58
+            int initJobID = Globals.MaxPrinter.Open("Printer_Init");
59
+            if (initJobID == 0) return;
60
+            //Globals.MaxPrinter.Print(PrinterInitString.ToString());
61
+            Globals.MaxPrinter.Print(Printer.INITIALISE_PRINTER);
62
+            Globals.MaxPrinter.Print(Printer.UNIDIRECTIONAL_OFF);
63
+            Globals.MaxPrinter.Print(Printer.CHARPITCHELITE);
64
+            Globals.MaxPrinter.Print(Printer.EMPHASISE_ON);
65
+            //Globals.MaxPrinter.Close();
60 66
 
61
-            string AlignmentPage ="";// = Printer.UNIDIRECTIONAL_OFF;
67
+
68
+            //if (Globals.MaxPrinter.Open("Alignment")==0) return;
69
+
70
+            string AlignmentPage ="";
62 71
 
63 72
             for (var i = 0; i < 8; i++) //Two full pages of vouchers
64 73
             {
65
-                AlignmentPage += "\r\n\n\n" +
66
-                "[VOUCHER  PIN  CODE]     [VOUCHER  PIN  CODE]      [VOUCHER  PIN  CODE]     [VOUCHER  PIN  CODE]     [VOUCHER  PIN  CODE]\r\n\n" +
67
-                "[VOUCHER SERIAL NUM]     [VOUCHER SERIAL NUM]      [VOUCHER SERIAL NUM]     [VOUCHER SERIAL NUM]     [VOUCHER SERIAL NUM]\r\n" +
68
-                "[BATCHNO/SEQNO/PAGE]     [BATCHNO/SEQNO/PAGE]      [BATCHNO/SEQNO/PAGE]     [BATCHNO/SEQNO/PAGE]     [BATCHNO/SEQNO/PAGE]\r\n" +
69
-                "[VOUCHERDESCRIPTION]     [VOUCHERDESCRIPTION]      [VOUCHERDESCRIPTION]     [VOUCHERDESCRIPTION]     [VOUCHERDESCRIPTION]\r\n\n\n\n\n\n\n\n\n\n\n";
74
+                //AlignmentPage += "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789\r\n";
70 75
                 
76
+                AlignmentPage += "\r\n\n\n" +
77
+                "[--VOUCHER  PIN  CODE--]      [--VOUCHER  PIN  CODE--]      [--VOUCHER  PIN  CODE--]       [--VOUCHER  PIN  CODE--]      [--VOUCHER  PIN  CODE--]\r\n\n" +
78
+                "[--VOUCHER SERIAL NUM--]      [--VOUCHER SERIAL NUM--]      [--VOUCHER SERIAL NUM--]       [--VOUCHER SERIAL NUM--]      [--VOUCHER SERIAL NUM--]\r\n" +
79
+                "[--BATCHNO/SEQNO/PAGE--]      [--BATCHNO/SEQNO/PAGE--]      [--BATCHNO/SEQNO/PAGE--]       [--BATCHNO/SEQNO/PAGE--]      [--BATCHNO/SEQNO/PAGE--]\r\n" +
80
+                "[--VOUCHERDESCRIPTION--]      [--VOUCHERDESCRIPTION--]      [--VOUCHERDESCRIPTION--]       [--VOUCHERDESCRIPTION--]      [--VOUCHERDESCRIPTION--]\r\n\n\n\n\n\n\n\n\n\n\n";
71 81
             }
72 82
             
73 83
             Globals.MaxPrinter.Print(AlignmentPage);

+ 3 - 0
BulkPrinting/BulkPrinting/Printer.cs

@@ -19,6 +19,9 @@ namespace BulkPrinting
19 19
         public const string CHARPITCHS2 = "\x1B\x36";
20 20
         public const string CHARPITCHPUB = "\x1B\x21\x5a";
21 21
         public const string CHARPITCHS0 = "\x1B\x21\x40";
22
+        public const string CHARPITCHPICO = "\x1B\x50";
23
+        public const string CHARPITCHELITE = "\x1B\x4D";
24
+        public const string CONDENSED = "\x1B\x0F";
22 25
         public const string INITIALISE_PRINTER = "\x1B\x40";
23 26
         public const string EMPHASISE_ON = "\x1B\x45";
24 27
         public const string EMPHASISE_OFF = "\x1B\x46";

+ 3 - 3
BulkPrinting/BulkPrinting/UserLoginForm.cs

@@ -171,12 +171,12 @@ namespace BulkPrinting
171 171
         {
172 172
             Globals.LogSyncWaiting = false; //Ensure LogSync starts in correct state
173 173
             this.lblHDDSerial.Text = Globals.HDDSerialNumber;
174
-            this.txtUsername.Text = Utility.RegFetch("Username");
175
-            this.txtUserID.Text = Utility.RegFetch("UserID");
174
+            this.txtUsername.Text = Utility.LoadSetting("Username");
175
+            this.txtUserID.Text = Utility.LoadSetting("UserID");
176 176
             if (this.txtUsername.Text != "") {
177 177
                 chkRemember.Checked = true;
178 178
             }
179
-            this.txtVendorID.Text = Utility.RegFetch("VendorID");
179
+            this.txtVendorID.Text = Utility.LoadSetting("VendorID");
180 180
             if (this.txtVendorID.Text != "")
181 181
             {
182 182
                 txtVendorID.Enabled = false;

+ 89 - 27
BulkPrinting/BulkPrinting/Utility.cs

@@ -57,6 +57,7 @@ namespace BulkPrinting
57 57
 
58 58
             HttpWebRequest request = WebRequest.Create("https://" + Configuration.ServerDN + ":" + Configuration.ServerPort + "/api/login") as HttpWebRequest;
59 59
             request.ServerCertificateValidationCallback = delegate { return true; };
60
+
60 61
             request.Method = "POST";
61 62
             request.ContentType = "application/json";
62 63
             request.ContentLength = data.Length;
@@ -76,20 +77,14 @@ namespace BulkPrinting
76 77
                 Globals.SessionData = JsonConvert.DeserializeObject<OKResponse>(responseString);
77 78
                 if (RememberMe == true)
78 79
                 {
79
-                    RegSave("Username", UserLoginData.Username);
80
-                    RegSave("UserID", UserLoginData.UserId.ToString());
80
+                    SaveSetting("Username", UserLoginData.Username);
81
+                    SaveSetting("UserID", UserLoginData.UserId.ToString());
81 82
                 }
82 83
                 else {
83
-                    RegSave("Username", "");
84
-                    RegSave("UserID", "");
84
+                    SaveSetting("Username", "");
85
+                    SaveSetting("UserID", "");
85 86
                 }
86
-                RegSave("VendorID", UserLoginData.VendorId.ToString());
87
-
88
-                //TODO: Remove ovveride
89
-                RegSave("EncryptedDBPassword", BitConverter.ToString(Globals.SessionData.Credentials.Payload.EncryptedDatabasePassword));
90
-                RegSave("SessionData", BitConverter.ToString(Globals.SessionData.Credentials.Salt));
91
-                RegSave("SessionValue", Globals.SessionData.Credentials.Iterations.ToString());
92
-
87
+                SaveSetting("VendorID", UserLoginData.VendorId.ToString());
93 88
 
94 89
                 Globals.SessionEncryptedDatabasePassword = Globals.SessionData.Credentials.Payload.EncryptedDatabasePassword;
95 90
                 Globals.SessionSalt = Globals.SessionData.Credentials.Salt;
@@ -97,7 +92,7 @@ namespace BulkPrinting
97 92
 
98 93
                 return true;
99 94
             }
100
-            catch (WebException e) {
95
+            catch (WebException) {
101 96
                 return false;
102 97
             }
103 98
         }
@@ -145,7 +140,7 @@ namespace BulkPrinting
145 140
                 return false;
146 141
             }
147 142
         }
148
-
143
+        /*
149 144
         private static bool RegSave(string Key, string Value)
150 145
         {
151 146
             bool Result;
@@ -178,7 +173,73 @@ namespace BulkPrinting
178 173
             }
179 174
             return Result;
180 175
         }
176
+        */
181 177
 
178
+        private static bool SaveSetting(string Key, string Value)
179
+        {
180
+            SavedSettings StoredValues = LoadSavedSettings();
181
+            switch (Key)
182
+            {
183
+                case "Username":
184
+                    StoredValues.Username = Value;
185
+                    break;
186
+                case "UserID":
187
+                    if (Value == "")
188
+                        StoredValues.UserId = 0;
189
+                    else
190
+                        StoredValues.UserId = int.Parse(Value);
191
+                    break;
192
+                case "VendorID":
193
+                    if (Value == "")
194
+                        StoredValues.VendorId = 0;
195
+                    else
196
+                        StoredValues.VendorId = int.Parse(Value);
197
+                    break;
198
+                default:
199
+                    return false;
200
+            }
201
+            string MaxAppDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Configuration.MaxDataPathName);
202
+            string MaxSettingsFilePath = Path.Combine(MaxAppDataPath, "maxsettings.dat");
203
+            File.WriteAllText(MaxSettingsFilePath, JsonConvert.SerializeObject(StoredValues));
204
+            return true;
205
+        }
206
+
207
+        public static string LoadSetting(string Key)
208
+        {
209
+            SavedSettings StoredValues = LoadSavedSettings();
210
+            string ReturnVal = "";
211
+            switch (Key)
212
+            {
213
+                case "Username":
214
+                    ReturnVal = StoredValues.Username;
215
+                    break;
216
+                case "UserID":
217
+                    ReturnVal = StoredValues.UserId.ToString();
218
+                    break;
219
+                case "VendorID":
220
+                    ReturnVal = StoredValues.VendorId.ToString();
221
+                    break;
222
+                default:
223
+                    return "";
224
+            }
225
+            if (ReturnVal == "0")
226
+                return "";
227
+            return ReturnVal;
228
+        }
229
+
230
+        private static SavedSettings LoadSavedSettings() {
231
+            string MaxAppDataPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Configuration.MaxDataPathName);
232
+            string MaxSettingsFilePath = Path.Combine(MaxAppDataPath, "maxsettings.dat");
233
+            SavedSettings StoredValues = new SavedSettings();
234
+            if (File.Exists(MaxSettingsFilePath)) {
235
+                StoredValues = JsonConvert.DeserializeObject<SavedSettings>(File.ReadAllText(MaxSettingsFilePath));
236
+            }
237
+            else {
238
+                File.WriteAllText(MaxSettingsFilePath, JsonConvert.SerializeObject(StoredValues));
239
+            }
240
+            return StoredValues;
241
+        }
242
+        
182 243
         public static byte[] Transform(ICryptoTransform transform, byte[] input)
183 244
         {
184 245
             using (var memoryStream = new MemoryStream())
@@ -331,7 +392,11 @@ namespace BulkPrinting
331 392
             bool IsReprint;
332 393
 
333 394
             var PrinterInitString = new StringBuilder();
334
-            PrinterInitString.Append(Printer.INITIALISE_PRINTER).Append(Printer.UNIDIRECTIONAL_OFF).Append(Printer.EMPHASISE_ON);
395
+            PrinterInitString.Append(Printer.INITIALISE_PRINTER).Append(Printer.EMPHASISE_ON).Append(Printer.UNIDIRECTIONAL_OFF).Append(Printer.CHARPITCHELITE);
396
+            int initJobID = Globals.MaxPrinter.Open("Printer_Init");
397
+            if (initJobID == 0) return;
398
+            Globals.MaxPrinter.Print(PrinterInitString.ToString());
399
+            Globals.MaxPrinter.Close();
335 400
 
336 401
             List<EventLog> LogEvents = new List<EventLog>();
337 402
 
@@ -366,42 +431,39 @@ namespace BulkPrinting
366 431
                     if (VoucherCount >= 5 || TotalCount == (EndSeqNo - StartSeqNo))
367 432
                     {
368 433
                         RowCount++;
369
-                        string PrintRow = "\r\n\n\n";
370
-                        //var PrintRowToo = new StringBuilder();
434
+                        string PrintRow = "\r\n\n\n  ";
371 435
                         for (int Column = 0; Column < VoucherRow.Count(); Column++)
372 436
                         {
373 437
                             IndividualVoucher = VoucherRow[Column];
374
-                            PrintRow += (Column == 2 ? " " : "") + ("  " + IndividualVoucher.DecryptedPIN).PadRight(25, ' ');
375
-                            //PrintRowToo.Append(Column == 2 ? " " : "").AppendFormat("  {0:25}", IndividualVoucher.DecryptedPIN);
438
+                            PrintRow += (Column == 2 ? " " : "") + ("  " + IndividualVoucher.DecryptedPIN).PadRight(30, ' ');
376 439
                         }
377
-                        PrintRow = PrintRow.TrimEnd() + "\r\n\n";
440
+                        PrintRow = PrintRow.TrimEnd() + "\r\n\n  ";
378 441
                         for (int Column = 0; Column < VoucherRow.Count(); Column++)
379 442
                         {
380 443
                             IndividualVoucher = VoucherRow[Column];
381 444
                             SerialNumberTrimmed = IndividualVoucher.Serial;
382
-                            if (SerialNumberTrimmed.Length > 20)
445
+                            if (SerialNumberTrimmed.Length > 24)
383 446
                             {
384
-                                SerialNumberTrimmed = SerialNumberTrimmed.Substring(0, 20);
447
+                                SerialNumberTrimmed = SerialNumberTrimmed.Substring(0, 24);
385 448
                             }
386
-                            PrintRow += (Column == 2 ? " " : "") + SerialNumberTrimmed.PadRight(25, ' ');
449
+                            PrintRow += (Column == 2 ? " " : "") + SerialNumberTrimmed.PadRight(30, ' ');
387 450
                         }
388
-                        PrintRow = PrintRow.TrimEnd() + "\r\n";
451
+                        PrintRow = PrintRow.TrimEnd() + "\r\n  ";
389 452
                         for (int Column = 0; Column < VoucherRow.Count(); Column++)
390 453
                         {
391 454
                             IndividualVoucher = VoucherRow[Column];
392
-                            PrintRow += (Column == 2 ? " " : "") + String.Format("{0}/{1}/{2}", IndividualVoucher.BatchId, IndividualVoucher.SequenceNumber, PageCount).PadRight(25, ' ');
455
+                            PrintRow += (Column == 2 ? " " : "") + String.Format("{0}/{1}/{2}", IndividualVoucher.BatchId, IndividualVoucher.SequenceNumber, PageCount).PadRight(30, ' ');
393 456
                         }
394
-                        PrintRow = PrintRow.TrimEnd() + "\r\n";
457
+                        PrintRow = PrintRow.TrimEnd() + "\r\n  ";
395 458
                         for (int Column = 0; Column < VoucherRow.Count(); Column++)
396 459
                         {
397 460
                             IndividualVoucher = VoucherRow[Column];
398
-                            PrintRow += (Column == 2 ? " " : "") + IndividualVoucher.Description.PadRight(25, ' ');
461
+                            PrintRow += (Column == 2 ? " " : "") + IndividualVoucher.Description.PadRight(30, ' ');
399 462
                         }
400 463
                         PrintRow = PrintRow.TrimEnd() + "\r\n\n\n\n\n\n\n\n\n\n\n";
401 464
                         int JobID = Globals.MaxPrinter.Open("Vouchers");
402 465
                         if (JobID == 0) return;
403 466
                         Globals.MaxPrinter.Print(PrintRow);
404
-                        Globals.MaxPrinter.Print(PrinterInitString.ToString());
405 467
                         Globals.MaxPrinter.Close();
406 468
                         foreach (PrintVoucher PrintedVoucher in VoucherRow)
407 469
                         {