Explorar o código

HMLG scan order beta

Ray Zhang %!s(int64=4) %!d(string=hai) anos
pai
achega
d007c15c6a
Modificáronse 64 ficheiros con 7634 adicións e 1426 borrados
  1. 60 0
      RedAnt ERP Mobile/HMLG Scan Order.xcodeproj/project.pbxproj
  2. 1 1
      RedAnt ERP Mobile/HMLG Scan Order.xcodeproj/xcuserdata/ruizhang.xcuserdatad/xcschemes/xcschememanagement.plist
  3. 212 31
      RedAnt ERP Mobile/HMLG Scan Order/Base.lproj/Main.storyboard
  4. 20 0
      RedAnt ERP Mobile/HMLG Scan Order/ChangePasswordViewController.h
  5. 91 0
      RedAnt ERP Mobile/HMLG Scan Order/ChangePasswordViewController.m
  6. 21 0
      RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/server_bg.imageset/Contents.json
  7. BIN=BIN
      RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/server_bg.imageset/QQ20220401-151220.png
  8. 6 6
      RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/wishlist.imageset/Contents.json
  9. BIN=BIN
      RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/wishlist.imageset/appicon-1.png
  10. BIN=BIN
      RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/wishlist.imageset/appicon-2.png
  11. BIN=BIN
      RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/wishlist.imageset/appicon.png
  12. 6 3
      RedAnt ERP Mobile/HMLG Scan Order/MainViewController.h
  13. 185 87
      RedAnt ERP Mobile/HMLG Scan Order/MainViewController.m
  14. 2053 0
      RedAnt ERP Mobile/HMLG Scan Order/SO.storyboard
  15. 31 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanCartItemCell.h
  16. 390 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanCartItemCell.m
  17. 18 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanHistoryViewController.h
  18. 91 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanHistoryViewController.m
  19. 28 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanListCell.h
  20. 195 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanListCell.m
  21. 30 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanModelListCell.h
  22. 49 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanModelListCell.m
  23. 19 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanOrderModelListViewController.h
  24. 331 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanOrderModelListViewController.m
  25. 26 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanSearchViewController.h
  26. 460 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanSearchViewController.m
  27. 18 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanServerListViewController.h
  28. 71 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanServerListViewController.m
  29. 240 36
      RedAnt ERP Mobile/HMLG Scan Order/ServerSettingViewController.m
  30. 23 0
      RedAnt ERP Mobile/HMLG Scan Order/SetupServerViewController.h
  31. 270 0
      RedAnt ERP Mobile/HMLG Scan Order/SetupServerViewController.m
  32. 21 0
      RedAnt ERP Mobile/HMLG Scan Order/SignUpViewController.h
  33. 84 0
      RedAnt ERP Mobile/HMLG Scan Order/SignUpViewController.m
  34. 228 212
      RedAnt ERP Mobile/HMLG Scan Order/config.h
  35. 2 2
      RedAnt ERP Mobile/HMLG Scan Order/default_appearance.json
  36. 2 1
      RedAnt ERP Mobile/common/AppDelegateBase.h
  37. 40 24
      RedAnt ERP Mobile/common/AppDelegateBase.m
  38. 115 1
      RedAnt ERP Mobile/common/ERP_Mobile_Cart.storyboard
  39. 5 5
      RedAnt ERP Mobile/common/ERP_Mobile_Search.storyboard
  40. 178 176
      RedAnt ERP Mobile/common/Functions/MainViewController.m
  41. 3 3
      RedAnt ERP Mobile/common/Functions/OLO/OLOSettingViewController.m
  42. 483 444
      RedAnt ERP Mobile/common/Functions/OLO/ScanOrderListViewController.m
  43. 21 12
      RedAnt ERP Mobile/common/Functions/camscan/ScannerViewController.m
  44. 1 0
      RedAnt ERP Mobile/common/Functions/cart/CartViewController.h
  45. 858 149
      RedAnt ERP Mobile/common/Functions/cart/CartViewController.m
  46. 12 10
      RedAnt ERP Mobile/common/Functions/category/CategoryViewController.m
  47. 6 0
      RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.h
  48. 132 12
      RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.m
  49. 32 20
      RedAnt ERP Mobile/common/Functions/order/CreateOrderViewController.m
  50. 13 10
      RedAnt ERP Mobile/common/Functions/search+itemsearch/ItemSearchViewController.m
  51. 16 13
      RedAnt ERP Mobile/common/Functions/search+itemsearch/SearchViewController.m
  52. 4 0
      RedAnt ERP Mobile/common/Functions/sidemenu/LoginViewController.h
  53. 22 0
      RedAnt ERP Mobile/common/Functions/sidemenu/LoginViewController.m
  54. 5 1
      RedAnt ERP Mobile/common/RASingleton.h
  55. 8 0
      RedAnt ERP Mobile/common/data_provider/RADataProvider.h
  56. 145 0
      RedAnt ERP Mobile/common/data_provider/RADataProvider.m
  57. 52 20
      RedAnt ERP Mobile/common/data_provider/RANetwork.m
  58. 53 0
      RedAnt ERP Mobile/iSales-CONTRAST.xcodeproj/project.pbxproj
  59. 1 1
      RedAnt ERP Mobile/iSales-CONTRAST.xcodeproj/xcuserdata/ruizhang.xcuserdatad/xcschemes/xcschememanagement.plist
  60. 2 2
      RedAnt ERP Mobile/iSales-CONTRAST/config.h
  61. 4 4
      RedAnt ERP Mobile/iSales-NPD.xcodeproj/project.pbxproj
  62. 100 100
      RedAnt ERP Mobile/iSales-NPD/Base.lproj/Main.storyboard
  63. 37 39
      RedAnt ERP Mobile/iSales-NPD/Base.lproj/OLM.storyboard
  64. 4 1
      RedAnt ERP Mobile/iSales-NPD/config.h

+ 60 - 0
RedAnt ERP Mobile/HMLG Scan Order.xcodeproj/project.pbxproj

@@ -7,6 +7,8 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
+		3C16916C27FE7E3000026FE5 /* SignUpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C16916B27FE7E3000026FE5 /* SignUpViewController.m */; };
+		3C16916F280004E000026FE5 /* ChangePasswordViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C16916E280004E000026FE5 /* ChangePasswordViewController.m */; };
 		3C2F99B8237BE1790000808F /* PortfolioListTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C2F99B6237BE1790000808F /* PortfolioListTableViewCell.m */; };
 		3C3A5AFE27D74E50005F4EFB /* ScanResultViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C3A5AFD27D74E4F005F4EFB /* ScanResultViewController.m */; };
 		3C3A5B0127D74F91005F4EFB /* ScanOrderScanModelViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C3A5B0027D74F91005F4EFB /* ScanOrderScanModelViewController.m */; };
@@ -78,6 +80,11 @@
 		3C7E5A8E237BDB0C006D0105 /* PortfolioListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C7E5A8C237BDB0C006D0105 /* PortfolioListViewController.m */; };
 		3C872A1E27955CF300BE1FC8 /* scan_cart.json in Resources */ = {isa = PBXBuildFile; fileRef = 3C872A1D27955CF300BE1FC8 /* scan_cart.json */; };
 		3C872A262797FE7C00BE1FC8 /* scan_order.json in Resources */ = {isa = PBXBuildFile; fileRef = 3C872A252797FE7C00BE1FC8 /* scan_order.json */; };
+		3C8855A427E2D9CC005DC3FA /* ScanOrderModelListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C8855A327E2D9CC005DC3FA /* ScanOrderModelListViewController.m */; };
+		3C8855A727E2DB1A005DC3FA /* ScanModelListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C8855A627E2DB1A005DC3FA /* ScanModelListCell.m */; };
+		3C8855AA27E85A0C005DC3FA /* ScanCartItemCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C8855A927E85A0C005DC3FA /* ScanCartItemCell.m */; };
+		3C9F81D427F6E04300B4C511 /* SetupServerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C9F81D327F6E04300B4C511 /* SetupServerViewController.m */; };
+		3C9F81D727F831A500B4C511 /* ScanServerListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C9F81D627F831A500B4C511 /* ScanServerListViewController.m */; };
 		3CC1122B279163F4004ACA57 /* offline_order_new_contact.json in Resources */ = {isa = PBXBuildFile; fileRef = 3CC1122A279163F4004ACA57 /* offline_order_new_contact.json */; };
 		3CDDB25C273A564200681F78 /* DefaultTableHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CDDB25A273A564200681F78 /* DefaultTableHeaderView.m */; };
 		3CDDB262273A59DF00681F78 /* TouchImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CDDB260273A59DF00681F78 /* TouchImageView.m */; };
@@ -88,6 +95,9 @@
 		3CF33C8B27BF4936001CBEEC /* ServerSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CF33C8A27BF4936001CBEEC /* ServerSettingViewController.m */; };
 		3CF33C8F27BF4A3D001CBEEC /* RAQRCodeScannerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CF33C8C27BF4A3D001CBEEC /* RAQRCodeScannerViewController.m */; };
 		3CF33C9027BF4A3D001CBEEC /* QRCode.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3CF33C8E27BF4A3D001CBEEC /* QRCode.storyboard */; };
+		3CF513A227F2FF31004B4818 /* ScanHistoryViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CF513A127F2FF31004B4818 /* ScanHistoryViewController.m */; };
+		3CF513A527F3FECF004B4818 /* ScanListCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CF513A427F3FECF004B4818 /* ScanListCell.m */; };
+		3CF513A827F437CF004B4818 /* ScanSearchViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CF513A727F437CF004B4818 /* ScanSearchViewController.m */; };
 		423CC87521D22FDE008BD2C4 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 423CC87421D22FDE008BD2C4 /* Launch Screen.storyboard */; };
 		424A02D11FFB3A0B0088DC56 /* RABackOrderSubmitAlertController.m in Sources */ = {isa = PBXBuildFile; fileRef = 424A02D01FFB3A0B0088DC56 /* RABackOrderSubmitAlertController.m */; };
 		4254CCDE1FB1AC2B00C8B4B6 /* RAOrderEditorViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 4254CCDD1FB1AC2B00C8B4B6 /* RAOrderEditorViewController.m */; };
@@ -328,6 +338,10 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
+		3C16916A27FE7E3000026FE5 /* SignUpViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SignUpViewController.h; sourceTree = "<group>"; };
+		3C16916B27FE7E3000026FE5 /* SignUpViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SignUpViewController.m; sourceTree = "<group>"; };
+		3C16916D280004E000026FE5 /* ChangePasswordViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChangePasswordViewController.h; sourceTree = "<group>"; };
+		3C16916E280004E000026FE5 /* ChangePasswordViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ChangePasswordViewController.m; sourceTree = "<group>"; };
 		3C2F99B6237BE1790000808F /* PortfolioListTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PortfolioListTableViewCell.m; path = common/Functions/portfolio/PortfolioListTableViewCell.m; sourceTree = SOURCE_ROOT; };
 		3C2F99B7237BE1790000808F /* PortfolioListTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PortfolioListTableViewCell.h; path = common/Functions/portfolio/PortfolioListTableViewCell.h; sourceTree = SOURCE_ROOT; };
 		3C3A5AFC27D74E4F005F4EFB /* ScanResultViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = ScanResultViewController.h; path = common/Functions/camscan/ScanResultViewController.h; sourceTree = SOURCE_ROOT; };
@@ -443,6 +457,16 @@
 		3C7E5A8D237BDB0C006D0105 /* PortfolioListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PortfolioListViewController.h; path = common/Functions/portfolio/PortfolioListViewController.h; sourceTree = SOURCE_ROOT; };
 		3C872A1D27955CF300BE1FC8 /* scan_cart.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = scan_cart.json; path = common/Functions/OLO/scan_cart.json; sourceTree = SOURCE_ROOT; };
 		3C872A252797FE7C00BE1FC8 /* scan_order.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = scan_order.json; path = common/Functions/OLO/scan_order.json; sourceTree = SOURCE_ROOT; };
+		3C8855A227E2D9CC005DC3FA /* ScanOrderModelListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScanOrderModelListViewController.h; sourceTree = "<group>"; };
+		3C8855A327E2D9CC005DC3FA /* ScanOrderModelListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScanOrderModelListViewController.m; sourceTree = "<group>"; };
+		3C8855A527E2DB1A005DC3FA /* ScanModelListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScanModelListCell.h; sourceTree = "<group>"; };
+		3C8855A627E2DB1A005DC3FA /* ScanModelListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScanModelListCell.m; sourceTree = "<group>"; };
+		3C8855A827E85A0B005DC3FA /* ScanCartItemCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScanCartItemCell.h; sourceTree = "<group>"; };
+		3C8855A927E85A0C005DC3FA /* ScanCartItemCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScanCartItemCell.m; sourceTree = "<group>"; };
+		3C9F81D227F6E04300B4C511 /* SetupServerViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SetupServerViewController.h; sourceTree = "<group>"; };
+		3C9F81D327F6E04300B4C511 /* SetupServerViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SetupServerViewController.m; sourceTree = "<group>"; };
+		3C9F81D527F831A500B4C511 /* ScanServerListViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScanServerListViewController.h; sourceTree = "<group>"; };
+		3C9F81D627F831A500B4C511 /* ScanServerListViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScanServerListViewController.m; sourceTree = "<group>"; };
 		3CC1122A279163F4004ACA57 /* offline_order_new_contact.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = offline_order_new_contact.json; path = common/Functions/contact/offline_order_new_contact.json; sourceTree = SOURCE_ROOT; };
 		3CDDB25A273A564200681F78 /* DefaultTableHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DefaultTableHeaderView.m; path = ../../common/customUI/commoneditor/DefaultTableHeaderView.m; sourceTree = "<group>"; };
 		3CDDB25B273A564200681F78 /* DefaultTableHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DefaultTableHeaderView.h; path = ../../common/customUI/commoneditor/DefaultTableHeaderView.h; sourceTree = "<group>"; };
@@ -462,6 +486,12 @@
 		3CF33C8C27BF4A3D001CBEEC /* RAQRCodeScannerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAQRCodeScannerViewController.m; sourceTree = "<group>"; };
 		3CF33C8D27BF4A3D001CBEEC /* RAQRCodeScannerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAQRCodeScannerViewController.h; sourceTree = "<group>"; };
 		3CF33C8E27BF4A3D001CBEEC /* QRCode.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = QRCode.storyboard; sourceTree = "<group>"; };
+		3CF513A027F2FF31004B4818 /* ScanHistoryViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScanHistoryViewController.h; sourceTree = "<group>"; };
+		3CF513A127F2FF31004B4818 /* ScanHistoryViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScanHistoryViewController.m; sourceTree = "<group>"; };
+		3CF513A327F3FECF004B4818 /* ScanListCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScanListCell.h; sourceTree = "<group>"; };
+		3CF513A427F3FECF004B4818 /* ScanListCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScanListCell.m; sourceTree = "<group>"; };
+		3CF513A627F437CF004B4818 /* ScanSearchViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ScanSearchViewController.h; sourceTree = "<group>"; };
+		3CF513A727F437CF004B4818 /* ScanSearchViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ScanSearchViewController.m; sourceTree = "<group>"; };
 		423CC87421D22FDE008BD2C4 /* Launch Screen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = SOURCE_ROOT; };
 		424A02CF1FFB3A0B0088DC56 /* RABackOrderSubmitAlertController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = RABackOrderSubmitAlertController.h; path = common/Functions/order/RABackOrderSubmitAlertController.h; sourceTree = SOURCE_ROOT; };
 		424A02D01FFB3A0B0088DC56 /* RABackOrderSubmitAlertController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; name = RABackOrderSubmitAlertController.m; path = common/Functions/order/RABackOrderSubmitAlertController.m; sourceTree = SOURCE_ROOT; };
@@ -1031,6 +1061,26 @@
 				3C3A5AFF27D74F91005F4EFB /* ScanOrderScanModelViewController.h */,
 				3C3A5B0027D74F91005F4EFB /* ScanOrderScanModelViewController.m */,
 				3C3A5B0227D87BA1005F4EFB /* SO.storyboard */,
+				3C9F81D527F831A500B4C511 /* ScanServerListViewController.h */,
+				3C9F81D627F831A500B4C511 /* ScanServerListViewController.m */,
+				3C8855A527E2DB1A005DC3FA /* ScanModelListCell.h */,
+				3C8855A627E2DB1A005DC3FA /* ScanModelListCell.m */,
+				3CF513A327F3FECF004B4818 /* ScanListCell.h */,
+				3CF513A427F3FECF004B4818 /* ScanListCell.m */,
+				3C8855A227E2D9CC005DC3FA /* ScanOrderModelListViewController.h */,
+				3C8855A327E2D9CC005DC3FA /* ScanOrderModelListViewController.m */,
+				3C8855A827E85A0B005DC3FA /* ScanCartItemCell.h */,
+				3C8855A927E85A0C005DC3FA /* ScanCartItemCell.m */,
+				3CF513A027F2FF31004B4818 /* ScanHistoryViewController.h */,
+				3CF513A127F2FF31004B4818 /* ScanHistoryViewController.m */,
+				3CF513A627F437CF004B4818 /* ScanSearchViewController.h */,
+				3CF513A727F437CF004B4818 /* ScanSearchViewController.m */,
+				3C9F81D227F6E04300B4C511 /* SetupServerViewController.h */,
+				3C9F81D327F6E04300B4C511 /* SetupServerViewController.m */,
+				3C16916A27FE7E3000026FE5 /* SignUpViewController.h */,
+				3C16916B27FE7E3000026FE5 /* SignUpViewController.m */,
+				3C16916D280004E000026FE5 /* ChangePasswordViewController.h */,
+				3C16916E280004E000026FE5 /* ChangePasswordViewController.m */,
 			);
 			name = OLO;
 			sourceTree = "<group>";
@@ -2251,6 +2301,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				3C8855A727E2DB1A005DC3FA /* ScanModelListCell.m in Sources */,
 				7141DD531C57459B00F7DF59 /* qrspec.c in Sources */,
 				3C69618323C7156D0075172A /* WebViewController.m in Sources */,
 				71BF07081D2F3D2800981938 /* SyncControlPanelViewController.m in Sources */,
@@ -2321,6 +2372,7 @@
 				3C51494E273D095900F78617 /* CommonEditorCellImg.m in Sources */,
 				71DF74891C57608F00F2789C /* RadioButton.m in Sources */,
 				3CDDB26B273A5A1500681F78 /* CustomIOSAlertView.m in Sources */,
+				3CF513A827F437CF004B4818 /* ScanSearchViewController.m in Sources */,
 				7162A5DF1C5876E300AB630E /* ScannerSettingViewController.m in Sources */,
 				71DF74831C57608F00F2789C /* ImageScrollerView.m in Sources */,
 				71DF74871C57608F00F2789C /* NIDropDown.m in Sources */,
@@ -2358,6 +2410,7 @@
 				3C514994273E091500F78617 /* VideoPreviewCell.m in Sources */,
 				71D01B1B1E0A2055006620CE /* PDFUtils.m in Sources */,
 				3CDDB26E273A5A7800681F78 /* RAUtils.m in Sources */,
+				3CF513A527F3FECF004B4818 /* ScanListCell.m in Sources */,
 				7141DD4F1C57459B00F7DF59 /* mask.c in Sources */,
 				7162A54E1C58722200AB630E /* CreditCardEditorViewController.m in Sources */,
 				7162A5C31C5873BB00AB630E /* ItemSearchFilterViewController.m in Sources */,
@@ -2379,6 +2432,7 @@
 				71CB70751F99DF02009FDCB7 /* FileCache.m in Sources */,
 				7162A54A1C58719D00AB630E /* RATreeView+UIScrollView.m in Sources */,
 				7162A55D1C58724700AB630E /* ContactListViewController.m in Sources */,
+				3C8855A427E2D9CC005DC3FA /* ScanOrderModelListViewController.m in Sources */,
 				3C514995273E091500F78617 /* PhotoPreviewCell.m in Sources */,
 				7162A5751C58728D00AB630E /* LineView.m in Sources */,
 				712AFEDD1DBA050200254965 /* RAPDFPage.m in Sources */,
@@ -2393,12 +2447,16 @@
 				714B1F401C7BF74100539193 /* OrderDetailSignatureCell.m in Sources */,
 				4289802E1E2492D2005F1BD8 /* SetCategoryPriceController.m in Sources */,
 				714036FC21646CFF0029B10F /* UIResponder+Router.m in Sources */,
+				3C9F81D427F6E04300B4C511 /* SetupServerViewController.m in Sources */,
 				71D01B1A1E0A2055006620CE /* ImageUtils.m in Sources */,
 				3CF33C8F27BF4A3D001CBEEC /* RAQRCodeScannerViewController.m in Sources */,
 				7141DD521C57459B00F7DF59 /* qrinput.c in Sources */,
 				7162A5601C58724700AB630E /* CustomerEditViewController.m in Sources */,
 				7162A5DC1C5876E300AB630E /* LoginViewController.m in Sources */,
+				3C16916C27FE7E3000026FE5 /* SignUpViewController.m in Sources */,
+				3C9F81D727F831A500B4C511 /* ScanServerListViewController.m in Sources */,
 				3C51495F273D09B800F78617 /* MonthPickerViewController.m in Sources */,
+				3CF513A227F2FF31004B4818 /* ScanHistoryViewController.m in Sources */,
 				4289805D1E249375005F1BD8 /* UIColor+JK_HEX.m in Sources */,
 				7162A5811C5872EF00AB630E /* HomeTableViewCellBanner.m in Sources */,
 				3C514956273D097E00F78617 /* CommonEditorTableContainerView.m in Sources */,
@@ -2436,6 +2494,7 @@
 				7162A5451C58719D00AB630E /* RATreeView.m in Sources */,
 				3C514974273E074500F78617 /* CommonEditorCellEditor.m in Sources */,
 				71DF74841C57608F00F2789C /* ImageScrollerViewController.m in Sources */,
+				3C16916F280004E000026FE5 /* ChangePasswordViewController.m in Sources */,
 				3CDDB25C273A564200681F78 /* DefaultTableHeaderView.m in Sources */,
 				71DF74861C57608F00F2789C /* ImageViewController.m in Sources */,
 				7162A5821C5872EF00AB630E /* HomeTableViewCellButtonBanner.m in Sources */,
@@ -2466,6 +2525,7 @@
 				7162A5181C58704600AB630E /* CartViewController.m in Sources */,
 				42BF67CC1E5179970081F90A /* ERPUtils.m in Sources */,
 				42FD1A031FBD1A3000C5D9A8 /* RAOrderPreviewController.m in Sources */,
+				3C8855AA27E85A0C005DC3FA /* ScanCartItemCell.m in Sources */,
 				7141DD3C1C5726B700F7DF59 /* ScanApiHelper.mm in Sources */,
 				7162A5261C58706C00AB630E /* CategoryViewController.m in Sources */,
 				7162A50A1C586FC100AB630E /* NSTimer+Addition.m in Sources */,

+ 1 - 1
RedAnt ERP Mobile/HMLG Scan Order.xcodeproj/xcuserdata/ruizhang.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,7 +7,7 @@
 		<key>HMLG Scan Order.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>2</integer>
+			<integer>5</integer>
 		</dict>
 	</dict>
 </dict>

+ 212 - 31
RedAnt ERP Mobile/HMLG Scan Order/Base.lproj/Main.storyboard

@@ -25,11 +25,11 @@
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <subviews>
                                     <view clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hTL-PV-pUp" customClass="MainHeaderViewColorPanel">
-                                        <rect key="frame" x="180" y="20" width="345" height="72"/>
+                                        <rect key="frame" x="130" y="20" width="460" height="72"/>
                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                                         <subviews>
                                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qK2-gY-nOG" userLabel="cart button">
-                                                <rect key="frame" x="29" y="0.0" width="72" height="72"/>
+                                                <rect key="frame" x="0.0" y="0.0" width="72" height="72"/>
                                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                 <state key="normal" image="cart_empty"/>
                                                 <connections>
@@ -50,7 +50,7 @@
                                                 </userDefinedRuntimeAttributes>
                                             </label>
                                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="wordWrap" translatesAutoresizingMaskIntoConstraints="NO" id="04b-vI-vkz" userLabel="order button">
-                                                <rect key="frame" x="108" y="0.0" width="72" height="72"/>
+                                                <rect key="frame" x="79" y="0.0" width="72" height="72"/>
                                                 <autoresizingMask key="autoresizingMask" flexibleMaxY="YES"/>
                                                 <state key="normal" image="order"/>
                                                 <connections>
@@ -58,15 +58,31 @@
                                                 </connections>
                                             </button>
                                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Nz4-iJ-NSG" userLabel="setting button">
-                                                <rect key="frame" x="259" y="0.0" width="72" height="72"/>
+                                                <rect key="frame" x="388" y="0.0" width="72" height="72"/>
                                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                 <state key="normal" image="setting"/>
                                                 <connections>
                                                     <action selector="onScanOrderSetting:" destination="BYZ-38-t0r" eventType="touchUpInside" id="LzV-0I-k5y"/>
                                                 </connections>
                                             </button>
-                                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" enabled="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nIa-ra-HBo" userLabel="scan button">
-                                                <rect key="frame" x="180" y="0.0" width="72" height="72"/>
+                                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="OLi-re-vUv" userLabel="list button">
+                                                <rect key="frame" x="230" y="0.0" width="72" height="72"/>
+                                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                <state key="normal" image="wishlist"/>
+                                                <connections>
+                                                    <action selector="switchToList:" destination="BYZ-38-t0r" eventType="touchUpInside" id="a6g-zn-YIl"/>
+                                                </connections>
+                                            </button>
+                                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="U68-uF-QmO" userLabel="search button">
+                                                <rect key="frame" x="309" y="0.0" width="72" height="72"/>
+                                                <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                <state key="normal" image="search"/>
+                                                <connections>
+                                                    <action selector="switchToSearch:" destination="BYZ-38-t0r" eventType="touchUpInside" id="AnX-0p-4Vh"/>
+                                                </connections>
+                                            </button>
+                                            <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="nIa-ra-HBo" userLabel="scan button">
+                                                <rect key="frame" x="151" y="0.0" width="72" height="72"/>
                                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                 <state key="normal" image="scan"/>
                                                 <connections>
@@ -77,28 +93,28 @@
                                         <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
                                     </view>
                                     <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="W7z-q5-hQg" userLabel="npd_logo">
-                                        <rect key="frame" x="49" y="21" width="99" height="50"/>
+                                        <rect key="frame" x="15" y="21" width="99" height="50"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <state key="normal" image="npd_logo">
                                             <color key="titleColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                         </state>
                                     </button>
-                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="A6K-Xr-CN6" userLabel="so#">
-                                        <rect key="frame" x="5" y="75" width="158" height="21"/>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="A6K-Xr-CN6" userLabel="server">
+                                        <rect key="frame" x="5" y="50" width="120" height="21"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                         <color key="textColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                         <nil key="highlightedColor"/>
                                     </label>
-                                    <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0eT-W5-bga" userLabel="select sales">
-                                        <rect key="frame" x="563" y="20" width="181" height="30"/>
+                                    <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0eT-W5-bga" userLabel="login">
+                                        <rect key="frame" x="583" y="20" width="161" height="30"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
-                                        <state key="normal" title="Sales">
+                                        <state key="normal" title="Sign in">
                                             <color key="titleColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                             <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                         </state>
                                         <connections>
-                                            <action selector="onSelectSales:" destination="BYZ-38-t0r" eventType="touchUpInside" id="ySn-jm-MZ0"/>
+                                            <action selector="onUserButtonClick:" destination="BYZ-38-t0r" eventType="touchUpInside" id="XQ8-89-GOk"/>
                                         </connections>
                                     </button>
                                     <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="" textAlignment="center" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zoc-d5-pNq" userLabel="mode">
@@ -108,7 +124,7 @@
                                         <nil key="highlightedColor"/>
                                     </label>
                                     <button opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="top" buttonType="system" lineBreakMode="wordWrap" translatesAutoresizingMaskIntoConstraints="NO" id="A7D-bo-1PR" userLabel="contact">
-                                        <rect key="frame" x="563" y="50" width="181" height="50"/>
+                                        <rect key="frame" x="583" y="50" width="161" height="50"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                         <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                         <state key="normal" title="aaa">
@@ -117,7 +133,6 @@
                                         </state>
                                         <connections>
                                             <action selector="onContactClick:" destination="BYZ-38-t0r" eventType="touchUpInside" id="vfj-Y2-dIU"/>
-                                            <action selector="onUserButtonClick:" destination="BYZ-38-t0r" eventType="touchUpInside" id="r9q-nF-Lk6"/>
                                         </connections>
                                     </button>
                                     <view hidden="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="bQ2-5t-t5t" customClass="MainHeaderViewColorPanel">
@@ -280,7 +295,7 @@
                         <outlet property="employee_bp" destination="hTL-PV-pUp" id="WrQ-II-a4s"/>
                         <outlet property="headerView" destination="NhN-BH-vsu" id="ueD-EJ-r33"/>
                         <outlet property="labelMode" destination="zoc-d5-pNq" id="7Cb-3e-Hxa"/>
-                        <outlet property="labelSo" destination="A6K-Xr-CN6" id="5WI-2k-wyU"/>
+                        <outlet property="labelServer" destination="A6K-Xr-CN6" id="EsZ-It-lcM"/>
                         <outlet property="labelVer" destination="MTI-0q-XWj" id="aGz-th-8qe"/>
                         <outlet property="label_ccount" destination="1R3-At-QFU" id="lGc-YZ-9hq"/>
                         <outlet property="menuButton" destination="z6K-Ge-vfg" id="9iM-Kq-gAy"/>
@@ -659,7 +674,7 @@
                             <constraint firstItem="e4L-J6-NNX" firstAttribute="top" secondItem="2AI-yS-Vfe" secondAttribute="bottom" constant="10" id="zWZ-Ih-Z7f"/>
                         </constraints>
                     </view>
-                    <navigationItem key="navigationItem" title="NPD" id="InA-1X-4Kd">
+                    <navigationItem key="navigationItem" title="Sign In" id="InA-1X-4Kd">
                         <barButtonItem key="rightBarButtonItem" image="close" style="plain" id="Rl4-6e-kHm">
                             <connections>
                                 <action selector="CloseClick:" destination="Q1j-qK-Nq8" id="pAM-ui-IMx"/>
@@ -682,7 +697,7 @@
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="LPP-1Z-0yh" userLabel="First Responder" sceneMemberID="firstResponder"/>
             </objects>
-            <point key="canvasLocation" x="1167.96875" y="-935.15624999999989"/>
+            <point key="canvasLocation" x="885" y="-1033"/>
         </scene>
         <!--Home View Controller-->
         <scene sceneID="ooR-wa-PJg">
@@ -889,28 +904,24 @@
                                             <action selector="TargetButtonClick:" destination="EIb-H4-v4U" eventType="touchUpInside" id="9Mf-ms-ZCb"/>
                                         </connections>
                                     </button>
-                                    <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5z7-HK-0WT">
-                                        <rect key="frame" x="282" y="305" width="180" height="34.5"/>
-                                        <state key="normal" title="Button"/>
-                                        <buttonConfiguration key="configuration" style="plain" title="Type: Model Name">
-                                            <fontDescription key="titleFontDescription" type="system" weight="heavy" pointSize="17"/>
-                                        </buttonConfiguration>
-                                        <connections>
-                                            <action selector="TypeButtonClick:" destination="EIb-H4-v4U" eventType="touchUpInside" id="ike-GD-8aF"/>
-                                        </connections>
-                                    </button>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Scan QR code to review product info" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cEj-j3-KnR">
+                                        <rect key="frame" x="233" y="293.5" width="278.5" height="21"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                        <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
                                 </subviews>
                                 <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstItem="dHM-WV-ZSO" firstAttribute="centerY" secondItem="Zfm-0K-VDC" secondAttribute="centerY" id="3Tu-om-no6"/>
-                                    <constraint firstItem="5z7-HK-0WT" firstAttribute="centerX" secondItem="G66-bZ-5AK" secondAttribute="centerX" id="Ak3-eD-Z7Y"/>
+                                    <constraint firstItem="nxQ-Fb-gF5" firstAttribute="top" secondItem="cEj-j3-KnR" secondAttribute="bottom" constant="80" id="BJe-ob-Vqo"/>
                                     <constraint firstItem="nxQ-Fb-gF5" firstAttribute="centerX" secondItem="G66-bZ-5AK" secondAttribute="centerX" id="BnE-cg-2FL"/>
                                     <constraint firstAttribute="trailing" secondItem="dHM-WV-ZSO" secondAttribute="trailing" constant="47" id="CkA-Dv-7BS"/>
                                     <constraint firstItem="nxQ-Fb-gF5" firstAttribute="centerY" secondItem="G66-bZ-5AK" secondAttribute="centerY" id="E1I-kP-Upr"/>
+                                    <constraint firstItem="cEj-j3-KnR" firstAttribute="centerX" secondItem="G66-bZ-5AK" secondAttribute="centerX" id="Jdm-eP-iOw"/>
                                     <constraint firstItem="Zfm-0K-VDC" firstAttribute="trailing" secondItem="nxQ-Fb-gF5" secondAttribute="trailing" id="Nxl-G2-3f7"/>
                                     <constraint firstItem="Zfm-0K-VDC" firstAttribute="leading" secondItem="nxQ-Fb-gF5" secondAttribute="leading" id="dPZ-Wb-EbB"/>
                                     <constraint firstItem="Zfm-0K-VDC" firstAttribute="top" secondItem="nxQ-Fb-gF5" secondAttribute="bottom" constant="60" id="fzg-pY-V2d"/>
-                                    <constraint firstItem="nxQ-Fb-gF5" firstAttribute="top" secondItem="5z7-HK-0WT" secondAttribute="bottom" constant="55" id="j0b-GP-MEZ"/>
                                 </constraints>
                             </view>
                         </subviews>
@@ -929,7 +940,6 @@
                         <outlet property="focusZone" destination="nxQ-Fb-gF5" id="mgU-R3-NhT"/>
                         <outlet property="scanButton" destination="dHM-WV-ZSO" id="zJA-gj-H7R"/>
                         <outlet property="targetButton" destination="Zfm-0K-VDC" id="REG-YG-Zej"/>
-                        <outlet property="typeButton" destination="5z7-HK-0WT" id="Kfn-X4-VnO"/>
                     </connections>
                 </viewController>
                 <placeholder placeholderIdentifier="IBFirstResponder" id="5qg-tr-rF5" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -1684,6 +1694,175 @@ Email: redantsupport@united-us.net</string>
             </objects>
             <point key="canvasLocation" x="4485.9375" y="365.0390625"/>
         </scene>
+        <!--Sign up-->
+        <scene sceneID="Oii-ov-sOV">
+            <objects>
+                <viewController storyboardIdentifier="SignUpViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="l0S-Da-hdh" userLabel="Sign up" customClass="SignUpViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="5v2-4A-suw">
+                        <rect key="frame" x="0.0" y="0.0" width="480" height="320"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="User" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="95h-K5-jjG">
+                                <rect key="frame" x="60" y="64" width="360" height="30"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="30" id="DH6-m7-FHt"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" autocorrectionType="no"/>
+                            </textField>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Email" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="4W6-zK-jjF">
+                                <rect key="frame" x="60" y="104" width="360" height="30"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="30" id="Hc5-U5-sbW"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" autocorrectionType="no"/>
+                            </textField>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="zc7-Q1-EQZ">
+                                <rect key="frame" x="60" y="144" width="360" height="34"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
+                            </textField>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Confirm Password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="AJR-m5-lKB">
+                                <rect key="frame" x="60" y="188" width="360" height="34"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
+                            </textField>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0UZ-jt-A5O">
+                                <rect key="frame" x="389" y="259" width="75" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Sign Up"/>
+                                <connections>
+                                    <action selector="onSignUpClick:" destination="l0S-Da-hdh" eventType="touchUpInside" id="itI-F0-EhC"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FCL-qH-QSG">
+                                <rect key="frame" x="20" y="259" width="60.5" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Close"/>
+                                <connections>
+                                    <action selector="onCloseClick:" destination="l0S-Da-hdh" eventType="touchUpInside" id="VeH-St-Hah"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <viewLayoutGuide key="safeArea" id="bfy-vf-LnP"/>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="AJR-m5-lKB" firstAttribute="top" secondItem="zc7-Q1-EQZ" secondAttribute="bottom" constant="10" id="3Qj-Fy-ZGo"/>
+                            <constraint firstItem="zc7-Q1-EQZ" firstAttribute="leading" secondItem="95h-K5-jjG" secondAttribute="leading" id="ASn-rX-F7v"/>
+                            <constraint firstItem="FCL-qH-QSG" firstAttribute="leading" secondItem="bfy-vf-LnP" secondAttribute="leading" constant="20" id="BDA-hU-vBJ"/>
+                            <constraint firstItem="4W6-zK-jjF" firstAttribute="top" secondItem="95h-K5-jjG" secondAttribute="bottom" constant="10" id="BT9-aP-Y1U"/>
+                            <constraint firstItem="AJR-m5-lKB" firstAttribute="trailing" secondItem="95h-K5-jjG" secondAttribute="trailing" id="Ee7-jx-Qdl"/>
+                            <constraint firstItem="zc7-Q1-EQZ" firstAttribute="top" secondItem="4W6-zK-jjF" secondAttribute="bottom" constant="10" id="MpJ-Zm-2sy"/>
+                            <constraint firstItem="bfy-vf-LnP" firstAttribute="trailing" secondItem="95h-K5-jjG" secondAttribute="trailing" constant="60" id="O7p-Cn-J5A"/>
+                            <constraint firstAttribute="bottom" secondItem="FCL-qH-QSG" secondAttribute="bottom" constant="30" id="RRS-dU-b5M"/>
+                            <constraint firstItem="95h-K5-jjG" firstAttribute="leading" secondItem="bfy-vf-LnP" secondAttribute="leading" constant="60" id="RxQ-mF-s6W"/>
+                            <constraint firstItem="4W6-zK-jjF" firstAttribute="leading" secondItem="95h-K5-jjG" secondAttribute="leading" id="V7w-PC-ml1"/>
+                            <constraint firstAttribute="bottom" secondItem="0UZ-jt-A5O" secondAttribute="bottom" constant="30" id="XNc-1G-T8C"/>
+                            <constraint firstItem="AJR-m5-lKB" firstAttribute="leading" secondItem="95h-K5-jjG" secondAttribute="leading" id="XaV-5y-PuY"/>
+                            <constraint firstItem="4W6-zK-jjF" firstAttribute="trailing" secondItem="95h-K5-jjG" secondAttribute="trailing" id="ah5-wl-iNT"/>
+                            <constraint firstItem="bfy-vf-LnP" firstAttribute="trailing" secondItem="0UZ-jt-A5O" secondAttribute="trailing" constant="16" id="caz-9r-GYj"/>
+                            <constraint firstItem="zc7-Q1-EQZ" firstAttribute="trailing" secondItem="95h-K5-jjG" secondAttribute="trailing" id="rQG-4T-5ez"/>
+                            <constraint firstItem="zc7-Q1-EQZ" firstAttribute="trailing" secondItem="95h-K5-jjG" secondAttribute="trailing" id="tgH-f4-rkt"/>
+                            <constraint firstItem="95h-K5-jjG" firstAttribute="top" secondItem="bfy-vf-LnP" secondAttribute="top" constant="40" id="v9y-dg-hdi"/>
+                        </constraints>
+                    </view>
+                    <value key="contentSizeForViewInPopover" type="size" width="480" height="320"/>
+                    <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+                    <size key="freeformSize" width="480" height="320"/>
+                    <connections>
+                        <outlet property="editEmail" destination="4W6-zK-jjF" id="REZ-3F-0yl"/>
+                        <outlet property="editUser" destination="95h-K5-jjG" id="XjO-fk-iaq"/>
+                        <outlet property="editcpwd" destination="AJR-m5-lKB" id="F3z-NP-S1g"/>
+                        <outlet property="editpwd" destination="zc7-Q1-EQZ" id="2zg-rK-Moa"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="4EG-7V-qhg" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1608" y="-935"/>
+        </scene>
+        <!--Change Password-->
+        <scene sceneID="nTU-wE-EK4">
+            <objects>
+                <viewController storyboardIdentifier="ChangePasswordViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="pzZ-xO-hIS" userLabel="Change Password" customClass="ChangePasswordViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="UjQ-Iv-YoG">
+                        <rect key="frame" x="0.0" y="0.0" width="480" height="320"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Old Password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="AOH-KD-dBj">
+                                <rect key="frame" x="60" y="64" width="360" height="30"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="30" id="Yv8-Rb-hqa"/>
+                                </constraints>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" autocorrectionType="no" secureTextEntry="YES"/>
+                            </textField>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="New Password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="cSJ-9f-dpe">
+                                <rect key="frame" x="60" y="104" width="360" height="34"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
+                            </textField>
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Confirm Password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="5dt-h8-yFx">
+                                <rect key="frame" x="60" y="148" width="360" height="34"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
+                            </textField>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Mct-GI-24g">
+                                <rect key="frame" x="390" y="259" width="74" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Change"/>
+                                <connections>
+                                    <action selector="onChangeClick:" destination="pzZ-xO-hIS" eventType="touchUpInside" id="PvS-x1-xGL"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="L1z-x1-ESN">
+                                <rect key="frame" x="20" y="259" width="60.5" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Close"/>
+                                <connections>
+                                    <action selector="onCloseClick:" destination="pzZ-xO-hIS" eventType="touchUpInside" id="g7X-TN-hvz"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <viewLayoutGuide key="safeArea" id="Ufh-nh-7nX"/>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="5dt-h8-yFx" firstAttribute="leading" secondItem="AOH-KD-dBj" secondAttribute="leading" id="3Tl-rl-hb7"/>
+                            <constraint firstItem="Ufh-nh-7nX" firstAttribute="trailing" secondItem="AOH-KD-dBj" secondAttribute="trailing" constant="60" id="3yD-OX-Z6u"/>
+                            <constraint firstItem="cSJ-9f-dpe" firstAttribute="top" secondItem="AOH-KD-dBj" secondAttribute="bottom" constant="10" id="EZD-vb-KyV"/>
+                            <constraint firstAttribute="bottom" secondItem="Mct-GI-24g" secondAttribute="bottom" constant="30" id="Ile-3U-wfa"/>
+                            <constraint firstItem="AOH-KD-dBj" firstAttribute="leading" secondItem="Ufh-nh-7nX" secondAttribute="leading" constant="60" id="NXA-pg-W2U"/>
+                            <constraint firstItem="AOH-KD-dBj" firstAttribute="top" secondItem="Ufh-nh-7nX" secondAttribute="top" constant="40" id="WWU-NY-2P4"/>
+                            <constraint firstItem="cSJ-9f-dpe" firstAttribute="trailing" secondItem="AOH-KD-dBj" secondAttribute="trailing" id="Wvp-zO-zba"/>
+                            <constraint firstItem="5dt-h8-yFx" firstAttribute="top" secondItem="cSJ-9f-dpe" secondAttribute="bottom" constant="10" id="ZAJ-50-srw"/>
+                            <constraint firstItem="5dt-h8-yFx" firstAttribute="trailing" secondItem="AOH-KD-dBj" secondAttribute="trailing" id="gL3-sa-evk"/>
+                            <constraint firstItem="cSJ-9f-dpe" firstAttribute="leading" secondItem="AOH-KD-dBj" secondAttribute="leading" id="mHh-nb-h33"/>
+                            <constraint firstItem="cSJ-9f-dpe" firstAttribute="trailing" secondItem="AOH-KD-dBj" secondAttribute="trailing" id="ou2-JM-bf9"/>
+                            <constraint firstAttribute="bottom" secondItem="L1z-x1-ESN" secondAttribute="bottom" constant="30" id="pVf-Xz-y5D"/>
+                            <constraint firstItem="Ufh-nh-7nX" firstAttribute="trailing" secondItem="Mct-GI-24g" secondAttribute="trailing" constant="16" id="qAM-CD-qcj"/>
+                            <constraint firstItem="L1z-x1-ESN" firstAttribute="leading" secondItem="Ufh-nh-7nX" secondAttribute="leading" constant="20" id="vGK-Qk-4dA"/>
+                        </constraints>
+                    </view>
+                    <value key="contentSizeForViewInPopover" type="size" width="480" height="320"/>
+                    <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+                    <size key="freeformSize" width="480" height="320"/>
+                    <connections>
+                        <outlet property="editcpwd" destination="5dt-h8-yFx" id="JEg-yQ-a6v"/>
+                        <outlet property="editnpwd" destination="cSJ-9f-dpe" id="mUo-BC-czQ"/>
+                        <outlet property="editopwd" destination="AOH-KD-dBj" id="GxU-XS-EAT"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="SxZ-26-RSM" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1710" y="-669"/>
+        </scene>
     </scenes>
     <resources>
         <image name="about" width="96" height="96"/>
@@ -1703,7 +1882,9 @@ Email: redantsupport@united-us.net</string>
         <image name="profle" width="64" height="64"/>
         <image name="red_ant_logo" width="72" height="72"/>
         <image name="scan" width="72" height="72"/>
+        <image name="search" width="72" height="72"/>
         <image name="setting" width="72" height="72"/>
         <image name="upload" width="48" height="48"/>
+        <image name="wishlist" width="72" height="72"/>
     </resources>
 </document>

+ 20 - 0
RedAnt ERP Mobile/HMLG Scan Order/ChangePasswordViewController.h

@@ -0,0 +1,20 @@
+//
+//  ChangePasswordViewController.h
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 4/8/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ChangePasswordViewController : UIViewController
+@property (weak, nonatomic) IBOutlet UITextField *editopwd;
+@property (weak, nonatomic) IBOutlet UITextField *editnpwd;
+@property (weak, nonatomic) IBOutlet UITextField *editcpwd;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 91 - 0
RedAnt ERP Mobile/HMLG Scan Order/ChangePasswordViewController.m

@@ -0,0 +1,91 @@
+//
+//  ChangePasswordViewController.m
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 4/8/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ChangePasswordViewController.h"
+#import "AppDelegate.h"
+#import "RAUtils.h"
+#import "RADataProvider.h"
+@interface ChangePasswordViewController ()
+
+@end
+
+@implementation ChangePasswordViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+- (IBAction)onChangeClick:(id)sender {
+    
+    UIApplication * app = [UIApplication sharedApplication];
+    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+//    if(appDelegate.user.length==0)
+//    {
+//        [RAUtils message_alert:@"You must sign in first." title:@"Delete Account" controller:self];
+//        return;
+//    }
+    NSString* opwd = self.editopwd.text;
+    
+    NSString* pwd = self.editnpwd.text;
+    NSString* cpwd = self.editcpwd.text;
+    
+    if(![opwd isEqualToString: appDelegate.password])
+    {
+        [RAUtils message_alert:@"Password incorrect." title:@"Warrning" controller:self];
+        return;
+    }
+    if(![RAUtils checkPassword:pwd])
+    {
+        [RAUtils message_alert:@"Password must be 8-16 characters and contain numbers and letters." title:@"Warrning" controller:self];
+        return;
+    }
+    if(![pwd isEqualToString:cpwd])
+    {
+        [RAUtils message_alert:@"Password does not equal" title:@"Warrning" controller:self];
+        return;
+    }
+    __block UIAlertController * waitalert =[RAUtils waiting_alert:self title:@"Change Password" completion:nil];
+    
+    dispatch_async(dispatch_get_main_queue(), ^{
+        [RADataProvider request_change_password:pwd completionHandler:^(NSMutableDictionary *result) {
+            [waitalert dismissViewControllerAnimated:true completion:^{
+                NSMutableDictionary* return_json = result;
+                if([[return_json valueForKey:@"result"] intValue]==2)
+                {
+
+                    
+                    [RAUtils message_alert:@"Change password successful" title:@"Change Password" controller:self action_handler:^(UIAlertAction * _Nonnull action) {
+                        appDelegate.password = pwd;
+                        [self dismissViewControllerAnimated:true completion:nil];
+                    } completion:nil];
+
+                }
+                else
+                {
+                    [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Change Password" controller:self] ;
+                }
+
+            }];
+        }];
+    });
+}
+- (IBAction)onCloseClick:(id)sender {
+    [self dismissViewControllerAnimated:true completion:nil];
+}
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 21 - 0
RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/server_bg.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images" : [
+    {
+      "filename" : "QQ20220401-151220.png",
+      "idiom" : "universal",
+      "scale" : "1x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "2x"
+    },
+    {
+      "idiom" : "universal",
+      "scale" : "3x"
+    }
+  ],
+  "info" : {
+    "author" : "xcode",
+    "version" : 1
+  }
+}

BIN=BIN
RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/server_bg.imageset/QQ20220401-151220.png


+ 6 - 6
RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/wishlist.imageset/Contents.json

@@ -1,23 +1,23 @@
 {
   "images" : [
     {
-      "idiom" : "universal",
       "filename" : "appicon.png",
+      "idiom" : "universal",
       "scale" : "1x"
     },
     {
-      "idiom" : "universal",
       "filename" : "appicon-1.png",
+      "idiom" : "universal",
       "scale" : "2x"
     },
     {
-      "idiom" : "universal",
       "filename" : "appicon-2.png",
+      "idiom" : "universal",
       "scale" : "3x"
     }
   ],
   "info" : {
-    "version" : 1,
-    "author" : "xcode"
+    "author" : "xcode",
+    "version" : 1
   }
-}
+}

BIN=BIN
RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/wishlist.imageset/appicon-1.png


BIN=BIN
RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/wishlist.imageset/appicon-2.png


BIN=BIN
RedAnt ERP Mobile/HMLG Scan Order/Images.xcassets/wishlist.imageset/appicon.png


+ 6 - 3
RedAnt ERP Mobile/HMLG Scan Order/MainViewController.h

@@ -15,6 +15,7 @@
 #import "RAViewController.h"
 //#import "OrderListViewController.h"
 #import "ScanOrderListViewController.h"
+#import "ScanSearchViewController.h"
 //#import "SearchViewController.h"
 #import "CustomerInfoViewController.h"
 //#import "ItemSearchViewController.h"
@@ -23,6 +24,7 @@
 #import "ContactListViewController.h"
 #import "MainHeaderViewColorPanel.h"
 #import "ServerSettingViewController.h"
+#import "ScanHistoryViewController.h"
 //#import "OrderInfoViewController.h"
 //#define VC_HOME 0
 //#define VC_CATEGORY 1
@@ -43,7 +45,7 @@
 //@property  (strong,nonatomic)OrderListViewController* orderViewController;
 @property  (strong,nonatomic)ScanOrderListViewController* scanorderViewController;
 //@property  (strong,nonatomic)ItemSearchViewController* itemSearchViewController;
-//@property  (strong,nonatomic)WatchListViewController* watchListViewController;
+@property  (strong,nonatomic)ScanHistoryViewController* scanHistoryViewController;
 //@property  (strong,nonatomic)PortfolioViewController* portfolioViewController;
 @property  (strong,nonatomic)ContactListViewController* contactListViewController;
 @property  (strong,nonatomic)ServerSettingViewController* settingViewController;
@@ -52,7 +54,8 @@
 
 @property (strong, nonatomic) IBOutlet UIButton *btn_LogoHome;
 
-
+@property (weak, nonatomic) IBOutlet UILabel *labelServer;
+@property  (strong,nonatomic)ScanSearchViewController* scansearchViewController;
 //@property  (strong,nonatomic)SearchViewController* searchViewController;
 //@property (strong, nonatomic) IBOutlet UILabel *labelUser;
 //@property (strong, nonatomic) IBOutlet UILabel *labelHello;
@@ -114,7 +117,7 @@
 
 
 @property (strong, nonatomic) IBOutlet MainHeaderViewColorPanel *employee_bp;
-@property (strong, nonatomic) IBOutlet MainHeaderViewColorPanel *customer_bp;
+//@property (strong, nonatomic) IBOutlet MainHeaderViewColorPanel *customer_bp;
 @property (strong, nonatomic) IBOutlet UILabel *label_cccount;
 @property (strong, nonatomic) IBOutlet UILabel *label_cwcount;
 

+ 185 - 87
RedAnt ERP Mobile/HMLG Scan Order/MainViewController.m

@@ -32,9 +32,11 @@
 #import "RASingleton.h"
 #import "NotificationNameCenter.h"
 //#import "OLOSettingViewController.h"
+//#import "ScanHistoryViewController.h"
 #import "CustomerEditViewController.h"
 #import "ScanOrderScanModelViewController.h"
-
+#import "ScanOrderModelListViewController.h"
+#import "SetupServerViewController.h"
 #import "ScanUserListViewController.h"
 @interface MainViewController ()
 // scan order main frame
@@ -50,6 +52,8 @@
 -(void) logoutCart
 {
     [self.cartViewController logout];
+    RASingleton.sharedInstance.scan_cart = nil;
+    RASingleton.sharedInstance.price_type = 0;
 }
 -(void) logoutWish
 {
@@ -598,6 +602,27 @@
 //    NSLog(@"decrypt:%@",[AESCrypt fastdecrypt:@"vafHUwfRPIUbPNVnKhLc5aAVK7sOFRztlfJVRHW7QVa/qGgm11E5UwfYWZEBTQpH"]);
  
     
+    NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"];
+    if (addressDic) {
+     
+        self.labelServer.text = [addressDic objectForKey:@"name"];
+//        NSUInteger selectedIndex = [[addressDic objectForKey:@"selectedIndex"] integerValue];
+//        switch (selectedIndex) {
+//            case 0:
+//            case 1: {
+//                [self internalCheckBtnClick:self.internalCheckBtn];
+//            }
+//                break;
+//            case 2: {
+//                [self externalCheckBtnClick:self.externalCheckBtn];
+//            }
+//                break;
+//
+//            default:
+//                break;
+//        }
+    }
+    
     
     self.btnContact.hidden = NO;
     
@@ -644,7 +669,7 @@
     
     
     self.employee_bp.hidden = false;
-    self.customer_bp.hidden = true;
+//    self.customer_bp.hidden = true;
     
     
     UIApplication * app = [UIApplication sharedApplication];
@@ -678,7 +703,7 @@
     
     
     
-    self.cartViewController =[[UIStoryboard storyboardWithName:@"ERP_Mobile_Cart" bundle:nil] instantiateViewControllerWithIdentifier:@"CartViewController"];
+    self.cartViewController =[[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"CartViewController"];
     __block MainViewController *brself= self;
     
     
@@ -713,14 +738,14 @@
     
     
     
-//    self.watchListViewController =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"WatchListViewController"];
+    self.scanHistoryViewController =[[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"ScanHistoryViewController"];
 //    self.portfolioViewController = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Portfolio" bundle:nil] instantiateViewControllerWithIdentifier:@"PortfolioViewController" ];
     
     
 //    self.pdfListViewController = [[UIStoryboard storyboardWithName:@"ERP_Mobile_Portfolio" bundle:nil] instantiateViewControllerWithIdentifier:@"PortfolioListViewController" ];
     
 //    self.itemSearchViewController=[[UIStoryboard storyboardWithName:@"ERP_Mobile_Search" bundle:nil] instantiateViewControllerWithIdentifier:@"ItemSearchViewController"];
-//    self.searchViewController=[ [UIStoryboard storyboardWithName:@"ERP_Mobile_Search" bundle:nil] instantiateViewControllerWithIdentifier:@"SearchViewController"];
+    self.scansearchViewController=[ [UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"ScanSearchViewController"];
     
     [self addChildViewController:self.scanorderViewController];  //1
     
@@ -752,6 +777,9 @@
 
     
     // Do any additional setup after loading the view, typically from a nib.
+//    SetupServerViewController * servervc =[[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"SetupServerViewController"];
+//    [self.navigationController pushViewController:servervc animated:true];
+
 }
 - (IBAction)onmenuButtonClicked:(id)sender {
     self.openMenuButton.hidden = true;
@@ -884,6 +912,7 @@
         LoginViewController * loginvc =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginViewController"];
         loginvc.returnValue = ^(bool blogin){
             
+            
             [self checklogin :true];
             
         };
@@ -974,35 +1003,42 @@
     
     
 //    LoginViewController * loginvc =[[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginViewController"];
-        ScanOrderScanModelViewController *scanresult = [[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"ScanOrderScanModelViewController"];
+//        ScanOrderScanModelViewController *scanresult = [[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"ScanOrderScanModelViewController"];
+    
+    
+    ScanOrderModelListViewController* scanresult = [[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"ScanOrderModelListViewController"];
     scannerVC.resultvc = scanresult;
     [self.navigationController pushViewController:scannerVC animated:true];
     
     
     
 }
-//- (IBAction)switchToSearch:(UIButton *)sender {
-//    if([self.current_VC isKindOfClass:[SearchViewController class]])
-//        return;
-//    [self flipFromViewController:self.current_VC toViewController:self.searchViewController withDirection:UIViewAnimationOptionTransitionCrossDissolve];
-//
-//
-//}
-//- (IBAction)switchToWishlist:(UIButton *)sender {
+- (IBAction)switchToSearch:(UIButton *)sender {
+    if([self.current_VC isKindOfClass:[ScanSearchViewController class]])
+        return;
+    [self flipFromViewController:self.current_VC toViewController:self.scansearchViewController withDirection:UIViewAnimationOptionTransitionCrossDissolve];
+
+
+}
+//- (IBAction)switchToList:(UIButton *)sender {
 //    [self switchtowishlist];
 //}
-//-(void)switchtowishlist
-//{
-//    if([self.current_VC isKindOfClass:[WatchListViewController class]])
+
+- (IBAction)switchToList:(UIButton *)sender {
+    [self switchtowishlist];
+}
+-(void)switchtowishlist
+{
+    if([self.current_VC isKindOfClass:[ScanHistoryViewController class]])
+        return;
+
+
+//    if([self.current_VC isKindOfClass:[OrderListViewController class]])
 //        return;
-//
-//
-////    if([self.current_VC isKindOfClass:[OrderListViewController class]])
-////        return;
-//
-//
-//    UIApplication * app = [UIApplication sharedApplication];
-//    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+
+
+    UIApplication * app = [UIApplication sharedApplication];
+    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
 //    if(appDelegate.bLogin==false)
 //    {
 //        LoginViewController * loginvc =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginViewController"];
@@ -1043,9 +1079,9 @@
 //        }];
 //    }
 //    else
-//    [self flipFromViewController:self.current_VC toViewController:self.watchListViewController withDirection:UIViewAnimationOptionTransitionCrossDissolve];
-//
-//}
+    [self flipFromViewController:self.current_VC toViewController:self.scanHistoryViewController withDirection:UIViewAnimationOptionTransitionCrossDissolve];
+
+}
 - (IBAction)switchToContact:(UIButton *)sender {
     [self switchtocontact];
 }
@@ -1142,39 +1178,98 @@
 }
 - (IBAction)onUserButtonClick:(id)sender {
     
-//    DebugLog(@"header view login");
-//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
-//    if( appDelegate.user ==nil)
-//    {
-//
-//        LoginViewController * loginvc =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginViewController"];
-//        //        loginvc.delegate = self;
-//        //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
-//
-//        loginvc.returnValue = ^(bool blogin){
-//
-//            [self checklogin:true];
-//
-//        };
-//
-//
-//        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ;
-//
-//
-//
-//
-//
-//        //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
-//
-//        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
-//        [self presentViewController:navi animated:YES completion:^{
-//
-//
-//            //  <#code#>
-//        }];
-//
-//
-//    }
+    DebugLog(@"header view login");
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if( appDelegate.user ==nil)
+    {
+
+        LoginViewController * loginvc =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginViewController"];
+        //        loginvc.delegate = self;
+        //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+
+        loginvc.returnValue = ^(bool blogin){
+
+            [self checklogin:true];
+
+        };
+
+
+        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:loginvc] ;
+
+
+
+
+
+        //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+
+        navi.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+        [self presentViewController:navi animated:YES completion:^{
+
+
+            //  <#code#>
+        }];
+
+
+    }
+    else
+    {
+                        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Sign Out" message:@"" preferredStyle:UIAlertControllerStyleAlert];
+        
+                        UIAlertAction *action_1 = [UIAlertAction actionWithTitle:@"Sign Out" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
+                            //open exist
+                            AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                            
+                            
+                            
+                            appDelegate.cart_count = 0;//[[jsobj  :@"cart_count"] intValue];
+                            appDelegate.wish_count =0;//[[jsobj valueForKey:@"wish_count"] intValue];
+                            appDelegate.port_count =0;//[[jsobj valueForKey:@"portfolio_count"] intValue];
+                            
+                            [appDelegate update_count_mark];
+                            
+                            
+                            appDelegate.can_show_price =false;
+                            appDelegate.can_see_price =false;
+                            appDelegate.can_create_portfolio =false;
+                            appDelegate.can_create_order =false;
+                            
+                            
+                            appDelegate.can_cancel_order =false;
+                            appDelegate.can_set_cart_price =false;
+                            appDelegate.can_delete_order =false;
+                            appDelegate.can_submit_order =false;
+                            appDelegate.can_set_tearsheet_price =false;
+                            appDelegate.can_update_contact_info = false;
+                            
+                            appDelegate.save_order_logout = false;
+                            appDelegate.submit_order_logout = false;
+                            appDelegate.alert_sold_in_quantities = false;
+                            
+                            appDelegate.ipad_perm =nil ;
+                            appDelegate.user_type = USER_ROLE_UNKNOWN;
+                            appDelegate.OrderFilter= nil;
+                            [appDelegate SetSo:nil];
+                            [appDelegate set_main_button_panel];
+                #ifdef RA_NOTIFICATION
+                            [ActiveViewController Notify:@"SearchViewController" Message:RA_NOTIFICATION_CLEAR_DATA];
+                #endif
+                            [appDelegate Logout];
+                        }];
+                         UIAlertAction *action_2 = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+                             //create new;
+        
+                        
+        
+                         }];
+                        
+                         [alertController addAction:action_1];
+                         [alertController addAction:action_2];
+
+        
+        
+                         [self presentViewController:alertController animated:YES completion:nil];
+        
+    }
 }
 #pragma mark - LoginViewControllerDelegate
 -(void)LoginViewControllerDidLogin:(LoginViewController *)viewController
@@ -1405,19 +1500,11 @@
 //    //    [self.container addSubview:self.homeViewController.view]; //2
 //    //    [self.homeViewController didMoveToParentViewController:self];
 //}
-//-(void)switchToHome
-//{
-//    if([self.current_VC isKindOfClass:[HomeViewController class]])
-//        return;
-//
-//    if(self.homeViewController == nil)
-//    {
-//        self.homeViewController =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"HomeViewController"];
-//        self.homeViewController.view.frame = self.container.bounds;
-//    }
-//    [self flipFromViewController:self.current_VC toViewController:self.homeViewController withDirection:UIViewAnimationOptionTransitionCrossDissolve];
-//
-//}
+-(void)switchToHome
+{
+  
+    [self switchToOrder];
+}
 
 -(void) switchToPreviousVC
 {
@@ -2610,18 +2697,21 @@
 -(void) initAppDelegate
 {
     AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
-    appDelegate.user_type = USER_ROLE_EMPLOYEE;
-    appDelegate.can_set_cart_price = true;
-    appDelegate.can_see_price = true;
-    appDelegate.can_set_cart_price = true;
-    appDelegate.can_show_price = true;
-    appDelegate.can_cancel_order = true;
-    appDelegate.can_create_order=true;
-    appDelegate.can_delete_order = true;
-    appDelegate.can_submit_order = true;
-    appDelegate.bLogin = true;
+//    appDelegate.user_type = USER_ROLE_EMPLOYEE;
+//    appDelegate.can_set_cart_price = true;
+//    appDelegate.can_see_price = true;
+//    appDelegate.can_set_cart_price = true;
+//    appDelegate.can_show_price = true;
+//    appDelegate.can_cancel_order = true;
+//    appDelegate.can_create_order=true;
+//    appDelegate.can_delete_order = true;
+//    appDelegate.can_submit_order = true;
+//    appDelegate.bLogin = true;
+    
+//    RASingleton.sharedInstance.permissions_edit_order = true;
     
     
+    [OLDataProvider createScanTempFolder];
     
     NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"] ;
     if (addressDic) {
@@ -2637,9 +2727,17 @@
     else
     {
 //        return;
-        if([self.current_VC isKindOfClass:[ServerSettingViewController class]])
-            return;
-        [self flipFromViewController:self.current_VC toViewController:self.settingViewController withDirection:UIViewAnimationOptionTransitionCrossDissolve];
+        SetupServerViewController * servervc =[[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"SetupServerViewController"];
+        
+        servervc.returnValue = ^{
+            NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"];
+            if (addressDic) {
+             
+                self.labelServer.text = [addressDic objectForKey:@"name"];
+
+            }
+        };
+        [self.navigationController pushViewController:servervc animated:true];
     }
 }
 //-(void) newoloorder

+ 2053 - 0
RedAnt ERP Mobile/HMLG Scan Order/SO.storyboard

@@ -143,9 +143,2062 @@
             </objects>
             <point key="canvasLocation" x="130.64516129032259" y="109.62047661076787"/>
         </scene>
+        <!--Scan History View Controller-->
+        <scene sceneID="AyY-er-cCO">
+            <objects>
+                <viewController storyboardIdentifier="ScanHistoryViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="15s-Fk-XvT" customClass="ScanHistoryViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="mJj-rg-l2T">
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="aHE-X4-VOt">
+                                <rect key="frame" x="15" y="15" width="714" height="1083"/>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <prototypes>
+                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="ScanListCell" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="ScanListCell" rowHeight="136" id="JlU-EJ-LYV" customClass="ScanListCell">
+                                        <rect key="frame" x="0.0" y="44.5" width="714" height="136"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="JlU-EJ-LYV" id="Vzc-30-9sw">
+                                            <rect key="frame" x="0.0" y="0.0" width="714" height="136"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Model" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XBQ-8j-TZL" userLabel="item label">
+                                                    <rect key="frame" x="16" y="13" width="50.5" height="21"/>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="v2T-FE-AfL" userLabel="available">
+                                                    <rect key="frame" x="581" y="44" width="72" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" text="Now" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="55L-4P-mxX" userLabel="item label">
+                                                    <rect key="frame" x="663" y="44" width="35" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Dimension" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="EK6-MT-Dz1" userLabel="item label">
+                                                    <rect key="frame" x="16" y="77" width="160" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="24" id="tgP-Kc-Kcq"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" text="Description" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bak-md-sWJ" userLabel="description">
+                                                    <rect key="frame" x="16" y="44" width="87.5" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Port" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dJu-6d-5UT" userLabel="item label">
+                                                    <rect key="frame" x="336.5" y="77" width="60" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Origin" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="And-qd-bRr" userLabel="item label">
+                                                    <rect key="frame" x="276.5" y="77" width="60" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" relation="lessThanOrEqual" constant="100" id="AnL-mB-IYY"/>
+                                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="60" id="puT-Bi-ba6"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="FOB CTNR" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nmq-YR-dd1" userLabel="item label">
+                                                    <rect key="frame" x="396.5" y="77" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="FOB N.CA" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AKn-ou-hEZ" userLabel="item label">
+                                                    <rect key="frame" x="497" y="77" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="25%" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nQn-Ng-eHU" userLabel="item label">
+                                                    <rect key="frame" x="597.5" y="77" width="100.5" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" relation="lessThanOrEqual" constant="120" id="aZm-Hh-Zf7"/>
+                                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" priority="900" constant="85" id="rVr-XR-IsL"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="Cuft" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="SIh-yC-3BV" userLabel="item label">
+                                                    <rect key="frame" x="176" y="77" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="42.8 x 68.3 x 30.5H" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2Am-Ht-mJp" userLabel="item label">
+                                                    <rect key="frame" x="16" y="101" width="160" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" priority="950" constant="160" id="ej0-2V-PXR"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123.45" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lj4-1Y-Ypg" userLabel="item label">
+                                                    <rect key="frame" x="176" y="101" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ABCD" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dwh-y8-Vbd" userLabel="item label">
+                                                    <rect key="frame" x="276.5" y="101" width="60" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ABCD" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rDp-OZ-uGv" userLabel="item label">
+                                                    <rect key="frame" x="336.5" y="101" width="60" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123.45" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JjA-la-BJy" userLabel="item label">
+                                                    <rect key="frame" x="396.5" y="101" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="234.56" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fe8-mk-hKa" userLabel="item label">
+                                                    <rect key="frame" x="497" y="101" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="345.67" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9kP-dN-7LL" userLabel="item label">
+                                                    <rect key="frame" x="597.5" y="101" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dUT-KX-gYS">
+                                                    <rect key="frame" x="603" y="8" width="96" height="31"/>
+                                                    <state key="normal" title="Button"/>
+                                                    <buttonConfiguration key="configuration" style="plain" title="Add to cart"/>
+                                                    <connections>
+                                                        <action selector="onAddToCart:" destination="JlU-EJ-LYV" eventType="touchUpInside" id="ABt-X6-Its"/>
+                                                    </connections>
+                                                </button>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstItem="XBQ-8j-TZL" firstAttribute="leading" secondItem="Vzc-30-9sw" secondAttribute="leading" constant="16" id="263-fa-Ihn"/>
+                                                <constraint firstItem="rDp-OZ-uGv" firstAttribute="centerY" secondItem="2Am-Ht-mJp" secondAttribute="centerY" id="2bH-ha-y0V"/>
+                                                <constraint firstItem="lj4-1Y-Ypg" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="4Ic-63-roH"/>
+                                                <constraint firstItem="v2T-FE-AfL" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="bak-md-sWJ" secondAttribute="trailing" constant="50" id="4me-3f-2y3"/>
+                                                <constraint firstItem="dwh-y8-Vbd" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="6BZ-mE-hgP"/>
+                                                <constraint firstItem="And-qd-bRr" firstAttribute="centerY" secondItem="EK6-MT-Dz1" secondAttribute="centerY" id="7Ua-ft-77s"/>
+                                                <constraint firstItem="And-qd-bRr" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="7d7-U3-Vd2"/>
+                                                <constraint firstItem="dJu-6d-5UT" firstAttribute="leading" secondItem="And-qd-bRr" secondAttribute="trailing" id="8DO-kd-7LD"/>
+                                                <constraint firstItem="And-qd-bRr" firstAttribute="leading" secondItem="dwh-y8-Vbd" secondAttribute="leading" id="BB2-TR-5Kt"/>
+                                                <constraint firstItem="nmq-YR-dd1" firstAttribute="width" secondItem="SIh-yC-3BV" secondAttribute="width" id="C6b-hr-ciV"/>
+                                                <constraint firstItem="JjA-la-BJy" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="CBU-hI-FNG"/>
+                                                <constraint firstItem="nmq-YR-dd1" firstAttribute="width" secondItem="lj4-1Y-Ypg" secondAttribute="width" id="DDi-C2-m3W"/>
+                                                <constraint firstItem="2Am-Ht-mJp" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="HJy-z4-kqZ"/>
+                                                <constraint firstItem="2Am-Ht-mJp" firstAttribute="width" secondItem="EK6-MT-Dz1" secondAttribute="width" id="HNn-m6-KRd"/>
+                                                <constraint firstItem="dUT-KX-gYS" firstAttribute="centerY" secondItem="XBQ-8j-TZL" secondAttribute="centerY" id="LTL-M3-zMI"/>
+                                                <constraint firstItem="bak-md-sWJ" firstAttribute="leading" secondItem="Vzc-30-9sw" secondAttribute="leadingMargin" id="LTz-0v-vII"/>
+                                                <constraint firstItem="nQn-Ng-eHU" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="M34-RE-npX"/>
+                                                <constraint firstItem="rDp-OZ-uGv" firstAttribute="width" secondItem="And-qd-bRr" secondAttribute="width" id="Nli-bH-MyH"/>
+                                                <constraint firstItem="2Am-Ht-mJp" firstAttribute="leading" secondItem="bak-md-sWJ" secondAttribute="leading" id="OYH-bi-QvX"/>
+                                                <constraint firstItem="lj4-1Y-Ypg" firstAttribute="leading" secondItem="SIh-yC-3BV" secondAttribute="leading" id="Omt-fc-GfE"/>
+                                                <constraint firstItem="JjA-la-BJy" firstAttribute="width" secondItem="lj4-1Y-Ypg" secondAttribute="width" id="PJz-2D-KNr"/>
+                                                <constraint firstItem="JjA-la-BJy" firstAttribute="centerY" secondItem="2Am-Ht-mJp" secondAttribute="centerY" id="S2A-mN-o18"/>
+                                                <constraint firstItem="AKn-ou-hEZ" firstAttribute="centerY" secondItem="EK6-MT-Dz1" secondAttribute="centerY" id="T9o-np-ETe"/>
+                                                <constraint firstItem="dwh-y8-Vbd" firstAttribute="width" secondItem="And-qd-bRr" secondAttribute="width" id="TCJ-if-peJ"/>
+                                                <constraint firstItem="nQn-Ng-eHU" firstAttribute="leading" secondItem="AKn-ou-hEZ" secondAttribute="trailing" id="VCo-uI-1Pu"/>
+                                                <constraint firstItem="fe8-mk-hKa" firstAttribute="centerY" secondItem="2Am-Ht-mJp" secondAttribute="centerY" id="Wcf-6E-mvb"/>
+                                                <constraint firstItem="AKn-ou-hEZ" firstAttribute="leading" secondItem="nmq-YR-dd1" secondAttribute="trailing" id="WgL-Y2-5Mq"/>
+                                                <constraint firstItem="bak-md-sWJ" firstAttribute="top" secondItem="XBQ-8j-TZL" secondAttribute="bottom" constant="10" id="XLI-ia-zQk"/>
+                                                <constraint firstAttribute="trailing" secondItem="dUT-KX-gYS" secondAttribute="trailing" constant="15" id="XrU-Mw-7LE"/>
+                                                <constraint firstItem="2Am-Ht-mJp" firstAttribute="top" secondItem="EK6-MT-Dz1" secondAttribute="bottom" id="ZHq-PQ-AFv"/>
+                                                <constraint firstItem="SIh-yC-3BV" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="ZLP-s3-oXU"/>
+                                                <constraint firstItem="rDp-OZ-uGv" firstAttribute="leading" secondItem="dJu-6d-5UT" secondAttribute="leading" id="aBQ-KH-eRM"/>
+                                                <constraint firstItem="EK6-MT-Dz1" firstAttribute="top" secondItem="bak-md-sWJ" secondAttribute="bottom" constant="12" id="bdq-6U-dNg"/>
+                                                <constraint firstItem="nQn-Ng-eHU" firstAttribute="width" secondItem="nmq-YR-dd1" secondAttribute="width" id="cQ8-j5-ekS"/>
+                                                <constraint firstAttribute="trailing" secondItem="55L-4P-mxX" secondAttribute="trailing" constant="16" id="ceU-Qu-s6S"/>
+                                                <constraint firstItem="lj4-1Y-Ypg" firstAttribute="centerY" secondItem="2Am-Ht-mJp" secondAttribute="centerY" id="e7h-KL-5RU"/>
+                                                <constraint firstItem="XBQ-8j-TZL" firstAttribute="leading" secondItem="Vzc-30-9sw" secondAttribute="leadingMargin" id="edl-9N-3CL"/>
+                                                <constraint firstItem="fe8-mk-hKa" firstAttribute="leading" secondItem="AKn-ou-hEZ" secondAttribute="leading" id="g4y-j7-mNF"/>
+                                                <constraint firstItem="EK6-MT-Dz1" firstAttribute="leading" secondItem="bak-md-sWJ" secondAttribute="leading" id="hF3-hw-2cy"/>
+                                                <constraint firstItem="fe8-mk-hKa" firstAttribute="width" secondItem="lj4-1Y-Ypg" secondAttribute="width" id="hYB-fC-5DG"/>
+                                                <constraint firstItem="And-qd-bRr" firstAttribute="leading" secondItem="SIh-yC-3BV" secondAttribute="trailing" id="iIu-qz-99W"/>
+                                                <constraint firstItem="9kP-dN-7LL" firstAttribute="leading" secondItem="nQn-Ng-eHU" secondAttribute="leading" id="ji8-g1-aRx"/>
+                                                <constraint firstItem="XBQ-8j-TZL" firstAttribute="top" secondItem="Vzc-30-9sw" secondAttribute="top" constant="13" id="krE-tA-ECi"/>
+                                                <constraint firstItem="v2T-FE-AfL" firstAttribute="centerY" secondItem="bak-md-sWJ" secondAttribute="centerY" id="kv3-31-5Rw"/>
+                                                <constraint firstItem="9kP-dN-7LL" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="kxX-Dw-ac1"/>
+                                                <constraint firstItem="nmq-YR-dd1" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="lRC-KP-pih"/>
+                                                <constraint firstItem="9kP-dN-7LL" firstAttribute="width" secondItem="lj4-1Y-Ypg" secondAttribute="width" id="lgx-PK-LLA"/>
+                                                <constraint firstItem="nmq-YR-dd1" firstAttribute="leading" secondItem="dJu-6d-5UT" secondAttribute="trailing" id="lkF-LT-awB"/>
+                                                <constraint firstItem="dJu-6d-5UT" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="lwt-Hn-tKp"/>
+                                                <constraint firstItem="SIh-yC-3BV" firstAttribute="centerY" secondItem="EK6-MT-Dz1" secondAttribute="centerY" id="nQY-nC-gOC"/>
+                                                <constraint firstItem="9kP-dN-7LL" firstAttribute="centerY" secondItem="2Am-Ht-mJp" secondAttribute="centerY" id="nTq-h2-7u9"/>
+                                                <constraint firstItem="nmq-YR-dd1" firstAttribute="centerY" secondItem="EK6-MT-Dz1" secondAttribute="centerY" id="nul-Up-ada"/>
+                                                <constraint firstItem="JjA-la-BJy" firstAttribute="leading" secondItem="nmq-YR-dd1" secondAttribute="leading" id="qaP-cd-oZT"/>
+                                                <constraint firstItem="nQn-Ng-eHU" firstAttribute="centerY" secondItem="EK6-MT-Dz1" secondAttribute="centerY" id="qzE-zM-g8u"/>
+                                                <constraint firstAttribute="trailing" secondItem="nQn-Ng-eHU" secondAttribute="trailing" constant="16" id="tKy-VR-rNh"/>
+                                                <constraint firstItem="55L-4P-mxX" firstAttribute="centerY" secondItem="bak-md-sWJ" secondAttribute="centerY" id="uIG-66-q5q"/>
+                                                <constraint firstItem="dJu-6d-5UT" firstAttribute="width" secondItem="And-qd-bRr" secondAttribute="width" id="uVG-Su-I7C"/>
+                                                <constraint firstItem="SIh-yC-3BV" firstAttribute="leading" secondItem="EK6-MT-Dz1" secondAttribute="trailing" id="vmv-3E-zkD"/>
+                                                <constraint firstItem="dJu-6d-5UT" firstAttribute="centerY" secondItem="EK6-MT-Dz1" secondAttribute="centerY" id="vza-cf-jwz"/>
+                                                <constraint firstItem="AKn-ou-hEZ" firstAttribute="width" secondItem="nmq-YR-dd1" secondAttribute="width" id="wJl-20-ODr"/>
+                                                <constraint firstItem="55L-4P-mxX" firstAttribute="leading" secondItem="v2T-FE-AfL" secondAttribute="trailing" constant="10" id="wUk-b5-L0q"/>
+                                                <constraint firstItem="AKn-ou-hEZ" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="yGb-7W-rYO"/>
+                                                <constraint firstItem="rDp-OZ-uGv" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="yJO-Zo-pNT"/>
+                                                <constraint firstItem="fe8-mk-hKa" firstAttribute="height" secondItem="EK6-MT-Dz1" secondAttribute="height" id="yQa-Ab-0db"/>
+                                                <constraint firstItem="dwh-y8-Vbd" firstAttribute="centerY" secondItem="2Am-Ht-mJp" secondAttribute="centerY" id="zMK-RH-0nU"/>
+                                            </constraints>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="labelAvailable" destination="55L-4P-mxX" id="v5f-Je-3o0"/>
+                                            <outlet property="labelCuft" destination="lj4-1Y-Ypg" id="TpY-tq-J14"/>
+                                            <outlet property="labelDescription" destination="bak-md-sWJ" id="UTY-mo-WDE"/>
+                                            <outlet property="labelDimension" destination="2Am-Ht-mJp" id="RH0-w8-3rE"/>
+                                            <outlet property="labelModel" destination="XBQ-8j-TZL" id="gwU-N4-q3D"/>
+                                            <outlet property="labelOrigin" destination="dwh-y8-Vbd" id="Phh-ZH-Tgk"/>
+                                            <outlet property="labelPort" destination="rDp-OZ-uGv" id="Ft0-Zh-xHz"/>
+                                            <outlet property="labelPrice25p" destination="9kP-dN-7LL" id="E7W-A9-ebB"/>
+                                            <outlet property="labelPriceCTNR" destination="JjA-la-BJy" id="Ue1-jo-HrA"/>
+                                            <outlet property="labelPriceNCA" destination="fe8-mk-hKa" id="oGQ-Bf-ZwQ"/>
+                                        </connections>
+                                    </tableViewCell>
+                                </prototypes>
+                                <connections>
+                                    <outlet property="dataSource" destination="15s-Fk-XvT" id="XZz-CX-Iba"/>
+                                    <outlet property="delegate" destination="15s-Fk-XvT" id="Jhs-s8-iXH"/>
+                                </connections>
+                            </tableView>
+                        </subviews>
+                        <viewLayoutGuide key="safeArea" id="wVu-7y-EsC"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="aHE-X4-VOt" firstAttribute="top" secondItem="mJj-rg-l2T" secondAttribute="top" constant="15" id="M5r-zh-Fhf"/>
+                            <constraint firstItem="aHE-X4-VOt" firstAttribute="leading" secondItem="wVu-7y-EsC" secondAttribute="leading" constant="15" id="Pp5-iB-lwc"/>
+                            <constraint firstItem="wVu-7y-EsC" firstAttribute="trailing" secondItem="aHE-X4-VOt" secondAttribute="trailing" constant="15" id="aFz-Ah-AWz"/>
+                            <constraint firstItem="wVu-7y-EsC" firstAttribute="bottom" secondItem="aHE-X4-VOt" secondAttribute="bottom" constant="15" id="c3n-4O-S2T"/>
+                        </constraints>
+                    </view>
+                    <connections>
+                        <outlet property="tableview" destination="aHE-X4-VOt" id="MNw-1b-ccZ"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="zJm-0S-zhX" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-2201" y="96"/>
+        </scene>
+        <!--Scan Order Model List View Controller-->
+        <scene sceneID="yPs-Ny-frH">
+            <objects>
+                <viewController storyboardIdentifier="ScanOrderModelListViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="p2v-UD-wPL" customClass="ScanOrderModelListViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="IpQ-Py-Irh">
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="bW9-lh-e8E">
+                                <rect key="frame" x="15" y="44" width="714" height="978"/>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <prototypes>
+                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="ScanModelListCell" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="ScanModelListCell" rowHeight="136" id="di6-XI-avZ" customClass="ScanModelListCell">
+                                        <rect key="frame" x="0.0" y="44.5" width="714" height="136"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="di6-XI-avZ" id="Ajw-zF-nXf">
+                                            <rect key="frame" x="0.0" y="0.0" width="714" height="136"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Model" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Z2Y-LD-RFG" userLabel="item label">
+                                                    <rect key="frame" x="16" y="13" width="50.5" height="21"/>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3p3-9a-FHo" userLabel="item label">
+                                                    <rect key="frame" x="581" y="13" width="72" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Now" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="TH8-wb-r5l" userLabel="item label">
+                                                    <rect key="frame" x="663" y="13" width="35" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="QTY:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oVz-hr-vFh" userLabel="item label">
+                                                    <rect key="frame" x="598" y="44" width="38" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Dimension" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YMl-Uz-O4O" userLabel="item label">
+                                                    <rect key="frame" x="16" y="77" width="160" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="24" id="EIE-cH-hSV"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Description" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DVA-Pi-NA3" userLabel="item label">
+                                                    <rect key="frame" x="16" y="44" width="542" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Port" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dpT-CT-Ret" userLabel="item label">
+                                                    <rect key="frame" x="336.5" y="77" width="60" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Origin" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vwr-od-ENo" userLabel="item label">
+                                                    <rect key="frame" x="276.5" y="77" width="60" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="60" id="75P-B9-RES"/>
+                                                        <constraint firstAttribute="width" relation="lessThanOrEqual" constant="100" id="PZA-Ej-eMX"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="FOB CTNR" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bVe-RI-TAM" userLabel="item label">
+                                                    <rect key="frame" x="396.5" y="77" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="FOB N.CA" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="uHg-xx-aR0" userLabel="item label">
+                                                    <rect key="frame" x="497" y="77" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="25%" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pMY-tU-GDI" userLabel="item label">
+                                                    <rect key="frame" x="597.5" y="77" width="100.5" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" relation="lessThanOrEqual" constant="120" id="bFD-FA-Zzf"/>
+                                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" priority="900" constant="85" id="hR1-1G-6H9"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="Cuft" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AK1-ap-AfF" userLabel="item label">
+                                                    <rect key="frame" x="176" y="77" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="9999" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="gGf-Qb-Uc9">
+                                                    <rect key="frame" x="646" y="37.5" width="52" height="34"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" constant="52" id="fro-N7-6ZI"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                                    <textInputTraits key="textInputTraits"/>
+                                                </textField>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="42.8 x 68.3 x 30.5H" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2JG-Qa-LOy" userLabel="item label">
+                                                    <rect key="frame" x="16" y="101" width="160" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" priority="950" constant="160" id="wfN-Mx-Pqy"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123.45" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ygm-0i-NY3" userLabel="item label">
+                                                    <rect key="frame" x="176" y="101" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ABCD" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dcE-Le-QMW" userLabel="item label">
+                                                    <rect key="frame" x="276.5" y="101" width="60" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ABCD" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Mbc-CV-To1" userLabel="item label">
+                                                    <rect key="frame" x="336.5" y="101" width="60" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123.45" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="N3z-jY-g8U" userLabel="item label">
+                                                    <rect key="frame" x="396.5" y="101" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="234.56" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IEa-T1-E8F" userLabel="item label">
+                                                    <rect key="frame" x="497" y="101" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="345.67" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="4MP-XW-NEm" userLabel="item label">
+                                                    <rect key="frame" x="597.5" y="101" width="100.5" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstItem="DVA-Pi-NA3" firstAttribute="top" secondItem="Z2Y-LD-RFG" secondAttribute="bottom" constant="10" id="24d-9E-saS"/>
+                                                <constraint firstItem="vwr-od-ENo" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="28r-vA-YOF"/>
+                                                <constraint firstItem="uHg-xx-aR0" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="2Lq-2c-gGn"/>
+                                                <constraint firstItem="2JG-Qa-LOy" firstAttribute="leading" secondItem="DVA-Pi-NA3" secondAttribute="leading" id="2T0-C8-nfH"/>
+                                                <constraint firstItem="pMY-tU-GDI" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="3a6-g7-EvT"/>
+                                                <constraint firstItem="pMY-tU-GDI" firstAttribute="width" secondItem="bVe-RI-TAM" secondAttribute="width" id="67I-OL-PNV"/>
+                                                <constraint firstItem="AK1-ap-AfF" firstAttribute="leading" secondItem="YMl-Uz-O4O" secondAttribute="trailing" id="6nP-hd-T2I"/>
+                                                <constraint firstItem="AK1-ap-AfF" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="72i-qa-zoO"/>
+                                                <constraint firstItem="2JG-Qa-LOy" firstAttribute="width" secondItem="YMl-Uz-O4O" secondAttribute="width" id="75S-Ad-reD"/>
+                                                <constraint firstItem="uHg-xx-aR0" firstAttribute="width" secondItem="bVe-RI-TAM" secondAttribute="width" id="7hy-oO-30j"/>
+                                                <constraint firstItem="N3z-jY-g8U" firstAttribute="centerY" secondItem="2JG-Qa-LOy" secondAttribute="centerY" id="97G-4J-Ns7"/>
+                                                <constraint firstItem="IEa-T1-E8F" firstAttribute="width" secondItem="ygm-0i-NY3" secondAttribute="width" id="9dH-kC-ZwO"/>
+                                                <constraint firstItem="bVe-RI-TAM" firstAttribute="leading" secondItem="dpT-CT-Ret" secondAttribute="trailing" id="ASQ-sU-yPW"/>
+                                                <constraint firstItem="dcE-Le-QMW" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="BFf-tY-HW7"/>
+                                                <constraint firstItem="gGf-Qb-Uc9" firstAttribute="leading" secondItem="oVz-hr-vFh" secondAttribute="trailing" constant="10" id="BJt-YV-Vgf"/>
+                                                <constraint firstItem="oVz-hr-vFh" firstAttribute="centerY" secondItem="DVA-Pi-NA3" secondAttribute="centerY" id="D29-Jq-cDn"/>
+                                                <constraint firstItem="Z2Y-LD-RFG" firstAttribute="leading" secondItem="Ajw-zF-nXf" secondAttribute="leadingMargin" id="Dnx-iy-q1U"/>
+                                                <constraint firstItem="ygm-0i-NY3" firstAttribute="leading" secondItem="AK1-ap-AfF" secondAttribute="leading" id="EAM-Yj-PNG"/>
+                                                <constraint firstAttribute="trailing" secondItem="pMY-tU-GDI" secondAttribute="trailing" constant="16" id="F6p-bD-MOH"/>
+                                                <constraint firstItem="Mbc-CV-To1" firstAttribute="centerY" secondItem="2JG-Qa-LOy" secondAttribute="centerY" id="FKj-ix-umZ"/>
+                                                <constraint firstItem="dpT-CT-Ret" firstAttribute="width" secondItem="vwr-od-ENo" secondAttribute="width" id="FbP-M1-690"/>
+                                                <constraint firstItem="TH8-wb-r5l" firstAttribute="centerY" secondItem="Z2Y-LD-RFG" secondAttribute="centerY" id="GlY-0e-0zi"/>
+                                                <constraint firstItem="N3z-jY-g8U" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="H6M-kC-RI8"/>
+                                                <constraint firstItem="pMY-tU-GDI" firstAttribute="leading" secondItem="uHg-xx-aR0" secondAttribute="trailing" id="HAZ-62-XFy"/>
+                                                <constraint firstItem="dcE-Le-QMW" firstAttribute="width" secondItem="vwr-od-ENo" secondAttribute="width" id="HMj-f5-fii"/>
+                                                <constraint firstItem="bVe-RI-TAM" firstAttribute="width" secondItem="ygm-0i-NY3" secondAttribute="width" id="IMz-wy-LMp"/>
+                                                <constraint firstItem="oVz-hr-vFh" firstAttribute="leading" secondItem="DVA-Pi-NA3" secondAttribute="trailing" constant="40" id="JiL-tN-pP6"/>
+                                                <constraint firstItem="Mbc-CV-To1" firstAttribute="leading" secondItem="dpT-CT-Ret" secondAttribute="leading" id="LFQ-Ya-qxe"/>
+                                                <constraint firstItem="IEa-T1-E8F" firstAttribute="leading" secondItem="uHg-xx-aR0" secondAttribute="leading" id="Nac-8g-NBn"/>
+                                                <constraint firstItem="ygm-0i-NY3" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="O7c-Qu-uqS"/>
+                                                <constraint firstItem="IEa-T1-E8F" firstAttribute="centerY" secondItem="2JG-Qa-LOy" secondAttribute="centerY" id="OGJ-VS-O9u"/>
+                                                <constraint firstItem="bVe-RI-TAM" firstAttribute="width" secondItem="AK1-ap-AfF" secondAttribute="width" id="OjN-fO-Geg"/>
+                                                <constraint firstItem="N3z-jY-g8U" firstAttribute="leading" secondItem="bVe-RI-TAM" secondAttribute="leading" id="Qjv-uq-7zC"/>
+                                                <constraint firstItem="3p3-9a-FHo" firstAttribute="centerY" secondItem="Z2Y-LD-RFG" secondAttribute="centerY" id="RSw-rN-Age"/>
+                                                <constraint firstItem="vwr-od-ENo" firstAttribute="leading" secondItem="dcE-Le-QMW" secondAttribute="leading" id="TSC-hM-vND"/>
+                                                <constraint firstItem="pMY-tU-GDI" firstAttribute="centerY" secondItem="YMl-Uz-O4O" secondAttribute="centerY" id="UD6-1S-c8f"/>
+                                                <constraint firstItem="Z2Y-LD-RFG" firstAttribute="leading" secondItem="Ajw-zF-nXf" secondAttribute="leading" constant="16" id="UFH-kg-VIh"/>
+                                                <constraint firstItem="4MP-XW-NEm" firstAttribute="width" secondItem="ygm-0i-NY3" secondAttribute="width" id="UZh-WF-JY1"/>
+                                                <constraint firstItem="4MP-XW-NEm" firstAttribute="leading" secondItem="pMY-tU-GDI" secondAttribute="leading" id="Wjc-Eb-x15"/>
+                                                <constraint firstItem="2JG-Qa-LOy" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="Xee-AH-Kan"/>
+                                                <constraint firstItem="Mbc-CV-To1" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="Xf7-ne-CPX"/>
+                                                <constraint firstItem="N3z-jY-g8U" firstAttribute="width" secondItem="ygm-0i-NY3" secondAttribute="width" id="XpU-fc-YLy"/>
+                                                <constraint firstItem="dcE-Le-QMW" firstAttribute="centerY" secondItem="2JG-Qa-LOy" secondAttribute="centerY" id="YgQ-kg-AEM"/>
+                                                <constraint firstItem="Mbc-CV-To1" firstAttribute="width" secondItem="vwr-od-ENo" secondAttribute="width" id="ZBR-MF-wc9"/>
+                                                <constraint firstItem="4MP-XW-NEm" firstAttribute="centerY" secondItem="2JG-Qa-LOy" secondAttribute="centerY" id="ZEq-8U-voa"/>
+                                                <constraint firstItem="ygm-0i-NY3" firstAttribute="centerY" secondItem="2JG-Qa-LOy" secondAttribute="centerY" id="ZxX-Al-1LZ"/>
+                                                <constraint firstItem="gGf-Qb-Uc9" firstAttribute="centerY" secondItem="DVA-Pi-NA3" secondAttribute="centerY" id="aMd-jb-RzM"/>
+                                                <constraint firstAttribute="trailing" secondItem="gGf-Qb-Uc9" secondAttribute="trailing" constant="16" id="bnh-bx-YNG"/>
+                                                <constraint firstItem="IEa-T1-E8F" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="cIH-p3-UdS"/>
+                                                <constraint firstItem="dpT-CT-Ret" firstAttribute="centerY" secondItem="YMl-Uz-O4O" secondAttribute="centerY" id="dcI-i7-L40"/>
+                                                <constraint firstAttribute="trailing" secondItem="TH8-wb-r5l" secondAttribute="trailing" constant="16" id="dhf-p6-P51"/>
+                                                <constraint firstItem="Z2Y-LD-RFG" firstAttribute="top" secondItem="Ajw-zF-nXf" secondAttribute="top" constant="13" id="dkp-C9-VUk"/>
+                                                <constraint firstItem="uHg-xx-aR0" firstAttribute="leading" secondItem="bVe-RI-TAM" secondAttribute="trailing" id="faE-qd-lWC"/>
+                                                <constraint firstItem="AK1-ap-AfF" firstAttribute="centerY" secondItem="YMl-Uz-O4O" secondAttribute="centerY" id="gQC-Yc-i9N"/>
+                                                <constraint firstItem="DVA-Pi-NA3" firstAttribute="leading" secondItem="Ajw-zF-nXf" secondAttribute="leadingMargin" id="jN0-9u-J3d"/>
+                                                <constraint firstItem="dpT-CT-Ret" firstAttribute="leading" secondItem="vwr-od-ENo" secondAttribute="trailing" id="lE3-Ei-9e0"/>
+                                                <constraint firstItem="4MP-XW-NEm" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="noJ-i6-TnN"/>
+                                                <constraint firstItem="YMl-Uz-O4O" firstAttribute="leading" secondItem="DVA-Pi-NA3" secondAttribute="leading" id="oL5-89-83r"/>
+                                                <constraint firstItem="YMl-Uz-O4O" firstAttribute="top" secondItem="DVA-Pi-NA3" secondAttribute="bottom" constant="12" id="oQ8-nB-LgR"/>
+                                                <constraint firstItem="uHg-xx-aR0" firstAttribute="centerY" secondItem="YMl-Uz-O4O" secondAttribute="centerY" id="qKQ-4n-JFD"/>
+                                                <constraint firstItem="dpT-CT-Ret" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="rYf-Lr-0jl"/>
+                                                <constraint firstItem="bVe-RI-TAM" firstAttribute="height" secondItem="YMl-Uz-O4O" secondAttribute="height" id="s04-Sd-AGc"/>
+                                                <constraint firstItem="vwr-od-ENo" firstAttribute="leading" secondItem="AK1-ap-AfF" secondAttribute="trailing" id="tad-OY-4rk"/>
+                                                <constraint firstItem="bVe-RI-TAM" firstAttribute="centerY" secondItem="YMl-Uz-O4O" secondAttribute="centerY" id="trF-Ua-Jn0"/>
+                                                <constraint firstItem="vwr-od-ENo" firstAttribute="centerY" secondItem="YMl-Uz-O4O" secondAttribute="centerY" id="twM-7p-seh"/>
+                                                <constraint firstItem="oVz-hr-vFh" firstAttribute="centerX" secondItem="3p3-9a-FHo" secondAttribute="centerX" id="xnq-S9-kCP"/>
+                                                <constraint firstItem="TH8-wb-r5l" firstAttribute="leading" secondItem="3p3-9a-FHo" secondAttribute="trailing" constant="10" id="yBY-vu-czG"/>
+                                                <constraint firstItem="2JG-Qa-LOy" firstAttribute="top" secondItem="YMl-Uz-O4O" secondAttribute="bottom" id="yjh-O9-wcX"/>
+                                            </constraints>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="editQTY" destination="gGf-Qb-Uc9" id="QHu-a1-ys6"/>
+                                            <outlet property="labelAvailable" destination="TH8-wb-r5l" id="Bo8-Ri-e4g"/>
+                                            <outlet property="labelCuft" destination="ygm-0i-NY3" id="VRz-pZ-uYe"/>
+                                            <outlet property="labelDescription" destination="DVA-Pi-NA3" id="oD1-iG-Gvm"/>
+                                            <outlet property="labelDimension" destination="2JG-Qa-LOy" id="BFk-hZ-AOX"/>
+                                            <outlet property="labelModel" destination="Z2Y-LD-RFG" id="pej-PG-D8q"/>
+                                            <outlet property="labelOrigin" destination="dcE-Le-QMW" id="tTy-if-nuP"/>
+                                            <outlet property="labelPort" destination="Mbc-CV-To1" id="Tcm-RS-bae"/>
+                                            <outlet property="labelPrice25p" destination="4MP-XW-NEm" id="qGs-JG-763"/>
+                                            <outlet property="labelPriceCTNR" destination="N3z-jY-g8U" id="lCb-SO-DXC"/>
+                                            <outlet property="labelPriceNCA" destination="IEa-T1-E8F" id="TZm-Xx-1VY"/>
+                                        </connections>
+                                    </tableViewCell>
+                                </prototypes>
+                                <connections>
+                                    <outlet property="dataSource" destination="p2v-UD-wPL" id="4pz-n4-gQR"/>
+                                    <outlet property="delegate" destination="p2v-UD-wPL" id="kvt-ru-Td0"/>
+                                </connections>
+                            </tableView>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="N1G-LR-2o5">
+                                <rect key="frame" x="608" y="1042" width="96" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Add to cart"/>
+                                <connections>
+                                    <action selector="onAddToCart:" destination="p2v-UD-wPL" eventType="touchUpInside" id="uj2-9t-r7x"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zM0-LF-q8I">
+                                <rect key="frame" x="480" y="1042" width="88" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Scan next"/>
+                                <connections>
+                                    <action selector="onScanNext:" destination="p2v-UD-wPL" eventType="touchUpInside" id="OMw-WQ-nsL"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <viewLayoutGuide key="safeArea" id="awB-eh-iQ1"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="awB-eh-iQ1" firstAttribute="trailing" secondItem="bW9-lh-e8E" secondAttribute="trailing" constant="15" id="9XJ-w6-Rom"/>
+                            <constraint firstItem="bW9-lh-e8E" firstAttribute="top" secondItem="awB-eh-iQ1" secondAttribute="top" constant="20" id="9nV-jB-QcH"/>
+                            <constraint firstItem="N1G-LR-2o5" firstAttribute="centerY" secondItem="zM0-LF-q8I" secondAttribute="centerY" id="CyQ-E6-Xas"/>
+                            <constraint firstItem="N1G-LR-2o5" firstAttribute="top" secondItem="bW9-lh-e8E" secondAttribute="bottom" constant="20" id="DjH-DK-l5t"/>
+                            <constraint firstItem="awB-eh-iQ1" firstAttribute="trailing" secondItem="N1G-LR-2o5" secondAttribute="trailing" constant="40" id="JMN-mC-Jp7"/>
+                            <constraint firstItem="N1G-LR-2o5" firstAttribute="leading" secondItem="zM0-LF-q8I" secondAttribute="trailing" constant="40" id="Lk7-5c-XO9"/>
+                            <constraint firstItem="bW9-lh-e8E" firstAttribute="leading" secondItem="awB-eh-iQ1" secondAttribute="leading" constant="15" id="NU7-9g-SxT"/>
+                            <constraint firstItem="awB-eh-iQ1" firstAttribute="bottom" secondItem="N1G-LR-2o5" secondAttribute="bottom" constant="40" id="ZGa-sj-pwl"/>
+                        </constraints>
+                    </view>
+                    <value key="contentSizeForViewInPopover" type="size" width="480" height="320"/>
+                    <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
+                    <connections>
+                        <outlet property="tableView" destination="bW9-lh-e8E" id="N4g-Py-fjm"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Hy3-80-z6R" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-828" y="131"/>
+        </scene>
+        <!--Cart View Controller-->
+        <scene sceneID="202-v9-HZP">
+            <objects>
+                <viewController storyboardIdentifier="CartViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="oRS-pB-8jo" customClass="CartViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="Nru-ZY-H46">
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
+                        <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="RmD-zr-fSi" userLabel="cart item view">
+                                <rect key="frame" x="0.0" y="40" width="744" height="969"/>
+                                <subviews>
+                                    <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" animating="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="lpm-Ch-BkE" userLabel="mum">
+                                        <rect key="frame" x="353.5" y="466" width="37" height="37"/>
+                                        <color key="color" red="0.0" green="0.47843137250000001" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                    </activityIndicatorView>
+                                    <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="120" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="3W5-s1-uRe">
+                                        <rect key="frame" x="0.0" y="0.0" width="744" height="969"/>
+                                        <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
+                                        <color key="sectionIndexBackgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                        <prototypes>
+                                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="CartItemCell" rowHeight="146" id="fdn-6O-9Xe" customClass="ModelItemCell">
+                                                <rect key="frame" x="0.0" y="44.5" width="744" height="146"/>
+                                                <autoresizingMask key="autoresizingMask"/>
+                                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="fdn-6O-9Xe" id="dsP-tF-cWg">
+                                                    <rect key="frame" x="0.0" y="0.0" width="744" height="146"/>
+                                                    <autoresizingMask key="autoresizingMask"/>
+                                                    <subviews>
+                                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="name aaaaaaaaaaaaa aaaaaaaaaa BBBBB  CCCCC" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oqD-9S-X3Y" userLabel="name and description">
+                                                            <rect key="frame" x="123" y="10" width="158" height="100"/>
+                                                            <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="15"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="9999" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="1eH-Ve-85d" userLabel="qty">
+                                                            <rect key="frame" x="414" y="41" width="60" height="32"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="32" id="cJg-9M-hWQ"/>
+                                                                <constraint firstAttribute="width" constant="60" id="gBB-Cj-PZn"/>
+                                                            </constraints>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                                            <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
+                                                            <connections>
+                                                                <outlet property="delegate" destination="fdn-6O-9Xe" id="gSw-aO-tkP"/>
+                                                            </connections>
+                                                        </textField>
+                                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="IiP-RS-RWr" userLabel="imgbtn detail">
+                                                            <rect key="frame" x="15" y="10" width="100" height="100"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="100" id="Hke-5f-GAw"/>
+                                                                <constraint firstAttribute="width" constant="100" id="dZn-2v-NbT"/>
+                                                            </constraints>
+                                                            <state key="normal">
+                                                                <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            </state>
+                                                            <connections>
+                                                                <action selector="imgbtnClick:" destination="oRS-pB-8jo" eventType="touchUpInside" id="tKi-4F-GnW"/>
+                                                            </connections>
+                                                        </button>
+                                                        <stepper opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" maximumValue="99999" translatesAutoresizingMaskIntoConstraints="NO" id="6xs-Lv-Lz6">
+                                                            <rect key="frame" x="489" y="41" width="94" height="32"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="32" id="axG-nU-ukL"/>
+                                                                <constraint firstAttribute="width" constant="94" id="nPK-gx-pbW"/>
+                                                            </constraints>
+                                                            <connections>
+                                                                <action selector="setpperChanged:" destination="fdn-6O-9Xe" eventType="touchUpInside" id="Oq0-fY-ryy"/>
+                                                            </connections>
+                                                        </stepper>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12345678.99" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="G3q-Ix-H24" userLabel="unit price">
+                                                            <rect key="frame" x="289" y="46.5" width="110" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="110" id="xFT-aA-Bp3"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="30 bundle item with $xxx" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1IO-bU-Oxa">
+                                                            <rect key="frame" x="123" y="87.5" width="424" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="21" id="hez-sl-3Yv"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12345678.99" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Q6c-K9-rlF" userLabel="price before discount" customClass="StrikethroughLabel">
+                                                            <rect key="frame" x="289" y="10" width="110" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="110" id="7ER-mm-hzG"/>
+                                                                <constraint firstAttribute="height" constant="21" id="lEf-wa-bUr"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.33333333329999998" green="0.33333333329999998" blue="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="99.99% off" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="N1Z-2x-l0W" userLabel="discount">
+                                                            <rect key="frame" x="443" y="10" width="100" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="100" id="Cr1-6y-5Ag"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sold in QTY of:9999" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="tLh-hg-C39">
+                                                            <rect key="frame" x="553" y="10" width="160" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="21" id="ayf-7z-kaO"/>
+                                                                <constraint firstAttribute="width" constant="160" id="p0E-C7-5Od"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123456789.00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UkH-i1-iGl" userLabel="subtotal price">
+                                                            <rect key="frame" x="598" y="46.5" width="115" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="115" id="Jcg-7F-KDZ"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rWd-EH-8O4" customClass="BundleDetailButton">
+                                                            <rect key="frame" x="555" y="83" width="50" height="30"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="30" id="ciL-EM-lOo"/>
+                                                                <constraint firstAttribute="width" constant="50" id="nKh-Cx-BM8"/>
+                                                            </constraints>
+                                                            <state key="normal" title="Detail">
+                                                                <color key="titleShadowColor" red="0.5" green="0.5" blue="0.5" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            </state>
+                                                            <connections>
+                                                                <action selector="OnClick_BundleDetail:" destination="fdn-6O-9Xe" eventType="touchUpInside" id="Ql0-6Q-qbO"/>
+                                                            </connections>
+                                                        </button>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nhs-qX-bOm">
+                                                            <rect key="frame" x="15" y="117" width="714" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="21" id="R3w-bO-5Ss"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="No Such Model" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="faS-8H-H1x">
+                                                            <rect key="frame" x="61" y="56" width="337" height="42"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="337" id="BzO-dn-cAj"/>
+                                                                <constraint firstAttribute="height" constant="42" id="Zqx-xO-eue"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="boldSystem" pointSize="35"/>
+                                                            <color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="0Qp-mD-Agt">
+                                                            <rect key="frame" x="15" y="10" width="100" height="100"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="100" id="ElE-td-g8R"/>
+                                                                <constraint firstAttribute="width" constant="100" id="YeG-4G-9ZU"/>
+                                                            </constraints>
+                                                            <string key="text"> Out
+of
+Stock</string>
+                                                            <fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
+                                                            <color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NbN-g8-LAY" customClass="BundleDetailButton">
+                                                            <rect key="frame" x="613" y="83" width="100" height="30"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="30" id="IDL-jT-zy1"/>
+                                                                <constraint firstAttribute="width" constant="100" id="adt-KM-bK9"/>
+                                                            </constraints>
+                                                            <state key="normal" title="Master Model"/>
+                                                            <connections>
+                                                                <action selector="masterBundleClick:" destination="fdn-6O-9Xe" eventType="touchUpInside" id="Brs-ex-bpJ"/>
+                                                            </connections>
+                                                        </button>
+                                                    </subviews>
+                                                    <constraints>
+                                                        <constraint firstItem="UkH-i1-iGl" firstAttribute="trailing" secondItem="tLh-hg-C39" secondAttribute="trailing" id="2Hv-WB-Xh8"/>
+                                                        <constraint firstAttribute="trailing" secondItem="nhs-qX-bOm" secondAttribute="trailing" constant="15" id="38m-P6-eAH"/>
+                                                        <constraint firstItem="oqD-9S-X3Y" firstAttribute="leading" secondItem="IiP-RS-RWr" secondAttribute="trailing" constant="8" id="7TB-cB-yNr"/>
+                                                        <constraint firstItem="NbN-g8-LAY" firstAttribute="leading" secondItem="rWd-EH-8O4" secondAttribute="trailing" constant="8" id="84A-FG-xZt"/>
+                                                        <constraint firstItem="0Qp-mD-Agt" firstAttribute="top" secondItem="dsP-tF-cWg" secondAttribute="top" constant="10" id="8LD-fW-nVa"/>
+                                                        <constraint firstItem="oqD-9S-X3Y" firstAttribute="bottom" secondItem="0Qp-mD-Agt" secondAttribute="bottom" id="9O0-5x-DMI"/>
+                                                        <constraint firstItem="1eH-Ve-85d" firstAttribute="leading" secondItem="G3q-Ix-H24" secondAttribute="trailing" constant="15" id="9YX-qv-hp0"/>
+                                                        <constraint firstItem="nhs-qX-bOm" firstAttribute="top" secondItem="NbN-g8-LAY" secondAttribute="bottom" constant="4" id="F5s-nI-gu6"/>
+                                                        <constraint firstItem="oqD-9S-X3Y" firstAttribute="top" secondItem="0Qp-mD-Agt" secondAttribute="top" id="IIi-uM-Vfy"/>
+                                                        <constraint firstItem="NbN-g8-LAY" firstAttribute="firstBaseline" secondItem="rWd-EH-8O4" secondAttribute="firstBaseline" id="ILG-tk-zI3"/>
+                                                        <constraint firstItem="6xs-Lv-Lz6" firstAttribute="centerY" secondItem="G3q-Ix-H24" secondAttribute="centerY" id="PaN-wg-Z49"/>
+                                                        <constraint firstItem="nhs-qX-bOm" firstAttribute="leading" secondItem="dsP-tF-cWg" secondAttribute="leading" constant="15" id="R2v-HC-4jj"/>
+                                                        <constraint firstItem="IiP-RS-RWr" firstAttribute="top" secondItem="dsP-tF-cWg" secondAttribute="top" constant="10" id="Sd2-Sr-1F3"/>
+                                                        <constraint firstItem="tLh-hg-C39" firstAttribute="top" secondItem="0Qp-mD-Agt" secondAttribute="top" id="UL7-rf-qx7"/>
+                                                        <constraint firstItem="6xs-Lv-Lz6" firstAttribute="top" secondItem="N1Z-2x-l0W" secondAttribute="bottom" constant="10" id="UMA-jR-Cz0"/>
+                                                        <constraint firstItem="IiP-RS-RWr" firstAttribute="leading" secondItem="dsP-tF-cWg" secondAttribute="leading" constant="15" id="UOf-sk-VIp"/>
+                                                        <constraint firstItem="rWd-EH-8O4" firstAttribute="top" secondItem="6xs-Lv-Lz6" secondAttribute="bottom" constant="10" id="WnE-Hq-j0Q"/>
+                                                        <constraint firstItem="Q6c-K9-rlF" firstAttribute="leading" secondItem="oqD-9S-X3Y" secondAttribute="trailing" constant="8" id="Z2p-mN-s27"/>
+                                                        <constraint firstItem="1eH-Ve-85d" firstAttribute="centerY" secondItem="G3q-Ix-H24" secondAttribute="centerY" id="acw-1G-fUC"/>
+                                                        <constraint firstAttribute="trailingMargin" secondItem="NbN-g8-LAY" secondAttribute="trailing" constant="15" id="atw-OG-hhL"/>
+                                                        <constraint firstItem="UkH-i1-iGl" firstAttribute="centerY" secondItem="G3q-Ix-H24" secondAttribute="centerY" id="cQQ-qR-ejt"/>
+                                                        <constraint firstItem="rWd-EH-8O4" firstAttribute="leading" secondItem="1IO-bU-Oxa" secondAttribute="trailing" constant="8" id="gUn-As-Akd"/>
+                                                        <constraint firstItem="faS-8H-H1x" firstAttribute="top" secondItem="dsP-tF-cWg" secondAttribute="topMargin" constant="45" id="iZh-zK-76i"/>
+                                                        <constraint firstAttribute="bottom" secondItem="nhs-qX-bOm" secondAttribute="bottom" constant="8" id="j2y-zD-CVF"/>
+                                                        <constraint firstItem="0Qp-mD-Agt" firstAttribute="leading" secondItem="dsP-tF-cWg" secondAttribute="leading" constant="15" id="llo-6b-x0p"/>
+                                                        <constraint firstItem="UkH-i1-iGl" firstAttribute="leading" secondItem="6xs-Lv-Lz6" secondAttribute="trailing" constant="15" id="lyC-Yx-nun"/>
+                                                        <constraint firstItem="NbN-g8-LAY" firstAttribute="trailing" secondItem="UkH-i1-iGl" secondAttribute="trailing" id="nru-Ky-V4o"/>
+                                                        <constraint firstItem="Q6c-K9-rlF" firstAttribute="leading" secondItem="G3q-Ix-H24" secondAttribute="leading" id="qfh-b3-c7N"/>
+                                                        <constraint firstItem="rWd-EH-8O4" firstAttribute="firstBaseline" secondItem="1IO-bU-Oxa" secondAttribute="firstBaseline" id="rmY-BO-axC"/>
+                                                        <constraint firstItem="faS-8H-H1x" firstAttribute="leading" secondItem="dsP-tF-cWg" secondAttribute="leadingMargin" constant="45" id="sI4-Ut-sLv"/>
+                                                        <constraint firstItem="NbN-g8-LAY" firstAttribute="leading" secondItem="rWd-EH-8O4" secondAttribute="trailing" constant="8" id="sec-mG-24x"/>
+                                                        <constraint firstItem="1IO-bU-Oxa" firstAttribute="leading" secondItem="IiP-RS-RWr" secondAttribute="trailing" constant="8" id="tig-Bg-jEC"/>
+                                                        <constraint firstItem="tLh-hg-C39" firstAttribute="firstBaseline" secondItem="Q6c-K9-rlF" secondAttribute="firstBaseline" id="veh-bQ-a6g"/>
+                                                        <constraint firstItem="tLh-hg-C39" firstAttribute="leading" secondItem="N1Z-2x-l0W" secondAttribute="trailing" constant="10" id="wDE-ow-WN3"/>
+                                                        <constraint firstItem="N1Z-2x-l0W" firstAttribute="firstBaseline" secondItem="Q6c-K9-rlF" secondAttribute="firstBaseline" id="xeu-Kg-9Bn"/>
+                                                        <constraint firstItem="6xs-Lv-Lz6" firstAttribute="leading" secondItem="1eH-Ve-85d" secondAttribute="trailing" constant="15" id="zyP-H8-Wsf"/>
+                                                    </constraints>
+                                                </tableViewCellContentView>
+                                                <connections>
+                                                    <outlet property="btnImage" destination="IiP-RS-RWr" id="8fI-I9-kVy"/>
+                                                    <outlet property="bundleButton" destination="rWd-EH-8O4" id="ezu-J0-5aq"/>
+                                                    <outlet property="bundleLabel" destination="1IO-bU-Oxa" id="Dre-9S-k0R"/>
+                                                    <outlet property="editCount" destination="1eH-Ve-85d" id="Ebu-vK-uDR"/>
+                                                    <outlet property="labelDescription" destination="oqD-9S-X3Y" id="oyO-td-DtA"/>
+                                                    <outlet property="labelDiscount" destination="N1Z-2x-l0W" id="8uh-rG-4Rt"/>
+                                                    <outlet property="labelMasterpack" destination="tLh-hg-C39" id="lLF-dE-E3r"/>
+                                                    <outlet property="labelNoSuchModel" destination="faS-8H-H1x" id="Lsf-SM-8Tq"/>
+                                                    <outlet property="labelNotes" destination="nhs-qX-bOm" id="1UN-4y-LUV"/>
+                                                    <outlet property="labelOldPrice" destination="Q6c-K9-rlF" id="iLs-1P-SBQ"/>
+                                                    <outlet property="labelOutOfStock" destination="0Qp-mD-Agt" id="hYk-fi-cZ1"/>
+                                                    <outlet property="labelPrice" destination="UkH-i1-iGl" id="2oP-ZQ-yzl"/>
+                                                    <outlet property="labelUnitPrice" destination="G3q-Ix-H24" id="vNl-ty-SEj"/>
+                                                    <outlet property="masterBtn" destination="NbN-g8-LAY" id="HbA-Uh-mxf"/>
+                                                    <outlet property="stepper" destination="6xs-Lv-Lz6" id="8FR-ez-c8b"/>
+                                                </connections>
+                                            </tableViewCell>
+                                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="ScanCartItemCell" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="ScanCartItemCell" rowHeight="120" id="Dud-Nr-Lt5" customClass="ScanCartItemCell">
+                                                <rect key="frame" x="0.0" y="190.5" width="744" height="120"/>
+                                                <autoresizingMask key="autoresizingMask"/>
+                                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Dud-Nr-Lt5" id="PQw-Da-A7v">
+                                                    <rect key="frame" x="0.0" y="0.0" width="744" height="120"/>
+                                                    <autoresizingMask key="autoresizingMask"/>
+                                                    <subviews>
+                                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="name aaaaaaaaaaaaa aaaaaaaaaa BBBBB  CCCCC" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="NIQ-22-rOQ" userLabel="name and description">
+                                                            <rect key="frame" x="15" y="37" width="270" height="47"/>
+                                                            <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="16"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="9999" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="a3S-8x-BFg" userLabel="qty">
+                                                            <rect key="frame" x="425" y="41.5" width="60" height="32"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="60" id="Ocp-kw-IJU"/>
+                                                                <constraint firstAttribute="height" constant="32" id="i02-Vn-UGg"/>
+                                                            </constraints>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                                            <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
+                                                            <connections>
+                                                                <outlet property="delegate" destination="Dud-Nr-Lt5" id="CuZ-Z8-2k1"/>
+                                                            </connections>
+                                                        </textField>
+                                                        <stepper opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" maximumValue="99999" translatesAutoresizingMaskIntoConstraints="NO" id="bZK-ve-mQz">
+                                                            <rect key="frame" x="500" y="41.5" width="94" height="32"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="94" id="ije-r7-EKw"/>
+                                                                <constraint firstAttribute="height" constant="32" id="lzG-UR-3lu"/>
+                                                            </constraints>
+                                                            <connections>
+                                                                <action selector="setpperChanged:" destination="Dud-Nr-Lt5" eventType="valueChanged" id="iqR-LK-69q"/>
+                                                            </connections>
+                                                        </stepper>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12345678.99" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PfY-2T-g06" userLabel="unit price">
+                                                            <rect key="frame" x="300" y="47" width="110" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="110" id="Jln-Q9-O1q"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sold in QTY of:9999" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="m36-cN-e8o">
+                                                            <rect key="frame" x="564" y="11" width="160" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="160" id="TPC-Ef-jTv"/>
+                                                                <constraint firstAttribute="height" constant="21" id="ggQ-hQ-eNM"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123456789.00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rNF-bG-daa" userLabel="subtotal price">
+                                                            <rect key="frame" x="609" y="47" width="115" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="115" id="pms-fx-3vJ"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5ZW-F8-dwV">
+                                                            <rect key="frame" x="15" y="91" width="714" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="21" id="sTv-Iw-lA1"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="slt-h5-vgC">
+                                                            <rect key="frame" x="15" y="11" width="44.5" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="21" id="7zD-0F-bPf"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
+                                                            <nil key="textColor"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                    </subviews>
+                                                    <constraints>
+                                                        <constraint firstAttribute="trailing" secondItem="rNF-bG-daa" secondAttribute="trailing" constant="20" id="1ic-w3-NSN"/>
+                                                        <constraint firstItem="bZK-ve-mQz" firstAttribute="centerY" secondItem="PfY-2T-g06" secondAttribute="centerY" id="4hC-kB-1vp"/>
+                                                        <constraint firstAttribute="bottom" secondItem="5ZW-F8-dwV" secondAttribute="bottom" constant="8" id="7ka-Kv-FB0"/>
+                                                        <constraint firstItem="bZK-ve-mQz" firstAttribute="leading" secondItem="a3S-8x-BFg" secondAttribute="trailing" constant="15" id="CQb-Bf-hnY"/>
+                                                        <constraint firstItem="slt-h5-vgC" firstAttribute="top" secondItem="PQw-Da-A7v" secondAttribute="top" constant="11" id="NcX-KG-WGp"/>
+                                                        <constraint firstItem="rNF-bG-daa" firstAttribute="leading" secondItem="bZK-ve-mQz" secondAttribute="trailing" constant="15" id="TQ3-dS-BKH"/>
+                                                        <constraint firstItem="5ZW-F8-dwV" firstAttribute="leading" secondItem="PQw-Da-A7v" secondAttribute="leading" constant="15" id="UJI-FD-5cb"/>
+                                                        <constraint firstAttribute="trailing" secondItem="5ZW-F8-dwV" secondAttribute="trailing" constant="15" id="Xa3-Xb-ZPP"/>
+                                                        <constraint firstItem="PfY-2T-g06" firstAttribute="leading" secondItem="NIQ-22-rOQ" secondAttribute="trailing" constant="15" id="c8j-Ry-uiq"/>
+                                                        <constraint firstItem="NIQ-22-rOQ" firstAttribute="leading" secondItem="slt-h5-vgC" secondAttribute="leading" id="cQt-7Y-75o"/>
+                                                        <constraint firstItem="5ZW-F8-dwV" firstAttribute="top" secondItem="NIQ-22-rOQ" secondAttribute="bottom" constant="7" id="cuH-zj-5vr"/>
+                                                        <constraint firstItem="NIQ-22-rOQ" firstAttribute="top" secondItem="slt-h5-vgC" secondAttribute="bottom" constant="5" id="dCJ-Ri-FUQ"/>
+                                                        <constraint firstItem="a3S-8x-BFg" firstAttribute="centerY" secondItem="PfY-2T-g06" secondAttribute="centerY" id="eKx-7s-dmh"/>
+                                                        <constraint firstItem="rNF-bG-daa" firstAttribute="trailing" secondItem="m36-cN-e8o" secondAttribute="trailing" id="pRT-qN-sw2"/>
+                                                        <constraint firstItem="rNF-bG-daa" firstAttribute="top" secondItem="m36-cN-e8o" secondAttribute="bottom" constant="15" id="sa1-Zj-jYM"/>
+                                                        <constraint firstItem="slt-h5-vgC" firstAttribute="leading" secondItem="PQw-Da-A7v" secondAttribute="leading" constant="15" id="usL-R8-XNC"/>
+                                                        <constraint firstItem="a3S-8x-BFg" firstAttribute="leading" secondItem="PfY-2T-g06" secondAttribute="trailing" constant="15" id="yAX-0T-afJ"/>
+                                                        <constraint firstItem="m36-cN-e8o" firstAttribute="top" secondItem="slt-h5-vgC" secondAttribute="top" id="yTl-TA-TlP"/>
+                                                        <constraint firstItem="rNF-bG-daa" firstAttribute="centerY" secondItem="PfY-2T-g06" secondAttribute="centerY" id="yrm-Xn-7s9"/>
+                                                    </constraints>
+                                                </tableViewCellContentView>
+                                                <connections>
+                                                    <outlet property="editQTY" destination="a3S-8x-BFg" id="kbC-W9-r6i"/>
+                                                    <outlet property="labelDescription" destination="NIQ-22-rOQ" id="ItG-w3-I5L"/>
+                                                    <outlet property="labelModel" destination="slt-h5-vgC" id="wdG-zz-KOG"/>
+                                                    <outlet property="labelMpack" destination="m36-cN-e8o" id="cwU-y9-qf7"/>
+                                                    <outlet property="labelNotes" destination="5ZW-F8-dwV" id="WFA-Pd-uk0"/>
+                                                    <outlet property="labelSubtotal" destination="rNF-bG-daa" id="tQl-xH-b6H"/>
+                                                    <outlet property="labelUnitPrice" destination="PfY-2T-g06" id="4Wm-YA-ZdX"/>
+                                                    <outlet property="setpperQTY" destination="bZK-ve-mQz" id="bzt-R2-tNG"/>
+                                                </connections>
+                                            </tableViewCell>
+                                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="section_header_cell" rowHeight="50" id="PUX-MI-ptL">
+                                                <rect key="frame" x="0.0" y="310.5" width="744" height="50"/>
+                                                <autoresizingMask key="autoresizingMask"/>
+                                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="PUX-MI-ptL" id="eIK-df-kd8">
+                                                    <rect key="frame" x="0.0" y="0.0" width="744" height="50"/>
+                                                    <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
+                                                    <subviews>
+                                                        <label opaque="NO" userInteractionEnabled="NO" tag="8520" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Section" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="YoP-Cy-WJk">
+                                                            <rect key="frame" x="15" y="0.0" width="714" height="50"/>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="21"/>
+                                                            <nil key="textColor"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                    </subviews>
+                                                    <constraints>
+                                                        <constraint firstAttribute="trailing" secondItem="YoP-Cy-WJk" secondAttribute="trailing" constant="15" id="091-qz-puJ"/>
+                                                        <constraint firstItem="YoP-Cy-WJk" firstAttribute="top" secondItem="eIK-df-kd8" secondAttribute="top" id="Bkd-Pt-YXu"/>
+                                                        <constraint firstAttribute="bottom" secondItem="YoP-Cy-WJk" secondAttribute="bottom" id="Dss-hw-R6w"/>
+                                                        <constraint firstItem="YoP-Cy-WJk" firstAttribute="leading" secondItem="eIK-df-kd8" secondAttribute="leading" constant="15" id="kES-cg-Wfo"/>
+                                                    </constraints>
+                                                </tableViewCellContentView>
+                                                <color key="backgroundColor" red="0.42482998700000002" green="0.29070497229999998" blue="0.040483503669999997" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                <constraints>
+                                                    <constraint firstItem="eIK-df-kd8" firstAttribute="leading" secondItem="PUX-MI-ptL" secondAttribute="leading" id="Nh0-lb-QhW"/>
+                                                    <constraint firstAttribute="bottom" secondItem="eIK-df-kd8" secondAttribute="bottom" id="QHC-gh-Kd2"/>
+                                                    <constraint firstItem="eIK-df-kd8" firstAttribute="top" secondItem="PUX-MI-ptL" secondAttribute="top" id="hUm-Qj-5yG"/>
+                                                    <constraint firstAttribute="trailing" secondItem="eIK-df-kd8" secondAttribute="trailing" id="zWk-kG-1oN"/>
+                                                </constraints>
+                                            </tableViewCell>
+                                        </prototypes>
+                                        <connections>
+                                            <outlet property="dataSource" destination="oRS-pB-8jo" id="h26-eI-fbc"/>
+                                            <outlet property="delegate" destination="oRS-pB-8jo" id="DgS-PD-uqt"/>
+                                        </connections>
+                                    </tableView>
+                                    <label hidden="YES" opaque="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Cannot get data from server.
Tap to try again." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Rac-Ya-aVK">
+                                        <rect key="frame" x="251.5" y="462" width="241.5" height="45.5"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="19"/>
+                                        <color key="textColor" red="0.33333333329999998" green="0.33333333329999998" blue="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                </subviews>
+                                <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                <constraints>
+                                    <constraint firstItem="Rac-Ya-aVK" firstAttribute="centerX" secondItem="RmD-zr-fSi" secondAttribute="centerX" id="2f6-mM-5YG"/>
+                                    <constraint firstItem="lpm-Ch-BkE" firstAttribute="centerY" secondItem="RmD-zr-fSi" secondAttribute="centerY" id="7hu-VN-Kwd"/>
+                                    <constraint firstItem="3W5-s1-uRe" firstAttribute="top" secondItem="RmD-zr-fSi" secondAttribute="top" id="Vmk-SF-Qhl"/>
+                                    <constraint firstItem="3W5-s1-uRe" firstAttribute="leading" secondItem="RmD-zr-fSi" secondAttribute="leading" id="ZHp-5v-V7S"/>
+                                    <constraint firstItem="lpm-Ch-BkE" firstAttribute="centerX" secondItem="RmD-zr-fSi" secondAttribute="centerX" id="buh-zJ-yWu"/>
+                                    <constraint firstAttribute="trailing" secondItem="3W5-s1-uRe" secondAttribute="trailing" id="qWD-9t-O8q"/>
+                                    <constraint firstItem="Rac-Ya-aVK" firstAttribute="centerY" secondItem="RmD-zr-fSi" secondAttribute="centerY" id="vvD-Fu-fyy"/>
+                                    <constraint firstAttribute="bottom" secondItem="3W5-s1-uRe" secondAttribute="bottom" id="wwS-rg-Sxa"/>
+                                </constraints>
+                            </view>
+                            <toolbar hidden="YES" opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="Rxh-S5-42X">
+                                <rect key="frame" x="0.0" y="1089" width="744" height="44"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="44" id="cVA-QF-XVg"/>
+                                </constraints>
+                                <items>
+                                    <barButtonItem title="Select All" id="1Dp-sO-suu">
+                                        <connections>
+                                            <action selector="OnEditSelectClick:" destination="oRS-pB-8jo" id="aR1-hD-nCf"/>
+                                        </connections>
+                                    </barButtonItem>
+                                    <barButtonItem width="42" style="plain" systemItem="fixedSpace" id="ZBW-XP-wIf"/>
+                                    <barButtonItem title="Move To Wish List" id="kpx-Gm-qig">
+                                        <connections>
+                                            <action selector="onEditAddWishClick:" destination="oRS-pB-8jo" id="p51-v9-QIr"/>
+                                        </connections>
+                                    </barButtonItem>
+                                    <barButtonItem width="42" style="plain" systemItem="fixedSpace" id="xxz-nF-LoK"/>
+                                    <barButtonItem title="Delete" id="XVs-gw-r3X">
+                                        <connections>
+                                            <action selector="onEditDelClick:" destination="oRS-pB-8jo" id="CY6-6x-6Or"/>
+                                        </connections>
+                                    </barButtonItem>
+                                    <barButtonItem style="plain" systemItem="flexibleSpace" id="iuu-yW-hGc"/>
+                                    <barButtonItem title="End Edit" id="m1v-Dw-xPT">
+                                        <connections>
+                                            <action selector="onEndEditClick:" destination="oRS-pB-8jo" id="Jec-QS-kEl"/>
+                                        </connections>
+                                    </barButtonItem>
+                                </items>
+                            </toolbar>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="G78-MN-iaL">
+                                <rect key="frame" x="0.0" y="1009" width="744" height="124"/>
+                                <subviews>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total QTY:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DdS-4S-1zx" userLabel="total price">
+                                        <rect key="frame" x="487" y="10" width="110" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="110" id="JkE-9G-otz"/>
+                                            <constraint firstAttribute="height" constant="20" id="eFU-xu-5Ku"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Subtotal Price:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lRq-Ow-fEk" userLabel="total price">
+                                        <rect key="frame" x="487" y="62" width="110" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="Baf-Qx-Zjc"/>
+                                            <constraint firstAttribute="width" constant="110" id="dah-IQ-F5m"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eiF-G7-95R" userLabel="value">
+                                        <rect key="frame" x="605" y="61.5" width="124" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="124" id="KRd-69-btU"/>
+                                            <constraint firstAttribute="height" constant="20" id="cob-nE-6nX"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="8gM-ne-ChU" userLabel="value">
+                                        <rect key="frame" x="333" y="36" width="124" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="5Nx-rU-92d"/>
+                                            <constraint firstAttribute="width" constant="124" id="LBs-do-I4g"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Prh-BQ-CkY" customClass="DefaultImageButton">
+                                        <rect key="frame" x="599" y="84" width="130" height="30"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="30" id="3Ci-aJ-2hT"/>
+                                            <constraint firstAttribute="width" constant="130" id="ABv-Ui-RXU"/>
+                                        </constraints>
+                                        <state key="normal" title="Place Order" backgroundImage="continue">
+                                            <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <userDefinedRuntimeAttributes>
+                                            <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                                <integer key="value" value="15"/>
+                                            </userDefinedRuntimeAttribute>
+                                        </userDefinedRuntimeAttributes>
+                                        <connections>
+                                            <action selector="onPlaceOrder:" destination="oRS-pB-8jo" eventType="touchUpInside" id="6MN-HR-RET"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3hY-G2-bAt" customClass="DefaultImageButton">
+                                        <rect key="frame" x="549" y="84" width="30" height="30"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="30" id="8BN-db-j9R"/>
+                                            <constraint firstAttribute="width" constant="30" id="gd5-ss-Lfd"/>
+                                        </constraints>
+                                        <state key="normal" title="Cancel Order" backgroundImage="btn_cancelorder">
+                                            <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
+                                        </state>
+                                        <connections>
+                                            <action selector="OnCancelOrderClicked:" destination="oRS-pB-8jo" eventType="touchUpInside" id="WoB-Fs-XvY"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total CuFt:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="IpA-sg-I9m">
+                                        <rect key="frame" x="215" y="36" width="110" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="110" id="4la-F2-4NM"/>
+                                            <constraint firstAttribute="height" constant="20" id="BSO-lV-Isl"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Total  Items:" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="UVG-on-4aI">
+                                        <rect key="frame" x="487" y="36" width="110" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="110" id="kM6-ac-A26"/>
+                                            <constraint firstAttribute="height" constant="20" id="tXP-jf-Jbq"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="EcM-RL-hry">
+                                        <rect key="frame" x="15" y="84" width="100" height="30"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="100" id="HV9-Om-2DM"/>
+                                            <constraint firstAttribute="height" constant="30" id="yag-60-1xF"/>
+                                        </constraints>
+                                        <state key="normal" title="General notes"/>
+                                        <connections>
+                                            <action selector="onEditGeneralNotes:" destination="oRS-pB-8jo" eventType="touchUpInside" id="1M2-S8-TH2"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DcE-qL-jJq">
+                                        <rect key="frame" x="605" y="35.5" width="124" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="6he-ZG-y1N"/>
+                                            <constraint firstAttribute="width" constant="124" id="oco-zZ-8nm"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="sS1-r0-cLw">
+                                        <rect key="frame" x="605" y="9.5" width="124" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="QK3-oa-eZO"/>
+                                            <constraint firstAttribute="width" constant="124" id="r2b-D2-1Q0"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="jbJ-5K-Qgr">
+                                        <rect key="frame" x="135" y="89" width="294" height="20"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="20" id="2DQ-eN-zoh"/>
+                                        </constraints>
+                                        <fontDescription key="fontDescription" type="system" pointSize="16"/>
+                                        <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Fkc-Lk-5jB">
+                                        <rect key="frame" x="15" y="10" width="30" height="30"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="30" id="BzR-8i-dR2"/>
+                                            <constraint firstAttribute="width" constant="30" id="NLz-kk-iSM"/>
+                                        </constraints>
+                                        <state key="normal" title="Edit"/>
+                                        <userDefinedRuntimeAttributes>
+                                            <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                                <integer key="value" value="15"/>
+                                            </userDefinedRuntimeAttribute>
+                                        </userDefinedRuntimeAttributes>
+                                        <connections>
+                                            <action selector="onEditClick:" destination="oRS-pB-8jo" eventType="touchUpInside" id="MZc-jt-K0w"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="g1j-nr-vEW">
+                                        <rect key="frame" x="499" y="84" width="30" height="30"/>
+                                        <constraints>
+                                            <constraint firstAttribute="height" constant="30" id="Mnb-qo-2cV"/>
+                                            <constraint firstAttribute="width" constant="30" id="xPm-1Y-ius"/>
+                                        </constraints>
+                                        <state key="normal" backgroundImage="btn_email_order"/>
+                                        <connections>
+                                            <action selector="emailButtonClick:" destination="oRS-pB-8jo" eventType="touchUpInside" id="rLH-tN-CcJ"/>
+                                        </connections>
+                                    </button>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="XBV-xN-bZf">
+                                        <rect key="frame" x="449" y="84" width="30" height="30"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="30" id="Sh8-0k-Ps7"/>
+                                            <constraint firstAttribute="height" constant="30" id="lju-as-nWm"/>
+                                        </constraints>
+                                        <state key="normal" backgroundImage="btn_print_order"/>
+                                        <connections>
+                                            <action selector="printCartButtonClick:" destination="oRS-pB-8jo" eventType="touchUpInside" id="cpf-MK-TYN"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Price Type:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ubF-HT-6Rg">
+                                        <rect key="frame" x="15" y="9.5" width="85" height="21"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                        <nil key="textColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0i6-zY-RD3">
+                                        <rect key="frame" x="110" y="5" width="100" height="30"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="100" id="zeS-YR-DtO"/>
+                                        </constraints>
+                                        <state key="normal" title="FOB N.CA"/>
+                                        <userDefinedRuntimeAttributes>
+                                            <userDefinedRuntimeAttribute type="number" keyPath="layer.cornerRadius">
+                                                <integer key="value" value="15"/>
+                                            </userDefinedRuntimeAttribute>
+                                        </userDefinedRuntimeAttributes>
+                                        <connections>
+                                            <action selector="onChangePrice:" destination="oRS-pB-8jo" eventType="touchUpInside" id="JO7-64-TIF"/>
+                                        </connections>
+                                    </button>
+                                </subviews>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstItem="DcE-qL-jJq" firstAttribute="trailing" secondItem="sS1-r0-cLw" secondAttribute="trailing" id="0Oq-Tl-aOo"/>
+                                    <constraint firstAttribute="trailing" secondItem="Prh-BQ-CkY" secondAttribute="trailing" constant="15" id="0by-01-SwR"/>
+                                    <constraint firstItem="3hY-G2-bAt" firstAttribute="leading" secondItem="g1j-nr-vEW" secondAttribute="trailing" constant="20" id="1Fc-Xk-22e"/>
+                                    <constraint firstAttribute="bottom" secondItem="EcM-RL-hry" secondAttribute="bottom" constant="10" id="2Z3-SC-CW7"/>
+                                    <constraint firstItem="DcE-qL-jJq" firstAttribute="firstBaseline" secondItem="UVG-on-4aI" secondAttribute="firstBaseline" id="5kH-Vg-fzN"/>
+                                    <constraint firstItem="sS1-r0-cLw" firstAttribute="firstBaseline" secondItem="DdS-4S-1zx" secondAttribute="firstBaseline" id="7ox-bV-elE"/>
+                                    <constraint firstItem="8gM-ne-ChU" firstAttribute="centerY" secondItem="IpA-sg-I9m" secondAttribute="centerY" id="7r9-02-GvP"/>
+                                    <constraint firstAttribute="height" constant="124" id="Adt-4W-5pA"/>
+                                    <constraint firstItem="DdS-4S-1zx" firstAttribute="top" secondItem="G78-MN-iaL" secondAttribute="top" constant="10" id="BjC-bA-ALS"/>
+                                    <constraint firstItem="UVG-on-4aI" firstAttribute="top" secondItem="DdS-4S-1zx" secondAttribute="bottom" constant="6" id="Esb-kd-FZb"/>
+                                    <constraint firstItem="3hY-G2-bAt" firstAttribute="bottom" secondItem="XBV-xN-bZf" secondAttribute="bottom" id="FJg-9B-RhK"/>
+                                    <constraint firstItem="Prh-BQ-CkY" firstAttribute="leading" secondItem="3hY-G2-bAt" secondAttribute="trailing" constant="20" id="JNx-Ee-BQv"/>
+                                    <constraint firstItem="XBV-xN-bZf" firstAttribute="leading" secondItem="jbJ-5K-Qgr" secondAttribute="trailing" constant="20" id="Jh4-cl-d5N"/>
+                                    <constraint firstItem="lRq-Ow-fEk" firstAttribute="top" secondItem="UVG-on-4aI" secondAttribute="bottom" constant="6" id="JqM-06-bA1"/>
+                                    <constraint firstItem="UVG-on-4aI" firstAttribute="centerY" secondItem="IpA-sg-I9m" secondAttribute="centerY" id="L0g-Gm-0Sm"/>
+                                    <constraint firstItem="g1j-nr-vEW" firstAttribute="leading" secondItem="XBV-xN-bZf" secondAttribute="trailing" constant="20" id="MD2-e8-SCH"/>
+                                    <constraint firstItem="Fkc-Lk-5jB" firstAttribute="leading" secondItem="G78-MN-iaL" secondAttribute="leading" constant="15" id="MEJ-ty-xl7"/>
+                                    <constraint firstItem="Prh-BQ-CkY" firstAttribute="trailing" secondItem="sS1-r0-cLw" secondAttribute="trailing" id="MsO-PZ-a84"/>
+                                    <constraint firstItem="Fkc-Lk-5jB" firstAttribute="top" secondItem="G78-MN-iaL" secondAttribute="top" constant="10" id="R0N-8I-YGp"/>
+                                    <constraint firstItem="EcM-RL-hry" firstAttribute="leading" secondItem="G78-MN-iaL" secondAttribute="leading" constant="15" id="U1h-9m-98l"/>
+                                    <constraint firstItem="DdS-4S-1zx" firstAttribute="centerY" secondItem="ubF-HT-6Rg" secondAttribute="centerY" id="X2N-xu-p9v"/>
+                                    <constraint firstItem="g1j-nr-vEW" firstAttribute="bottom" secondItem="XBV-xN-bZf" secondAttribute="bottom" id="ZAm-rp-exn"/>
+                                    <constraint firstItem="8gM-ne-ChU" firstAttribute="leading" secondItem="IpA-sg-I9m" secondAttribute="trailing" constant="8" id="aSt-SN-Z33"/>
+                                    <constraint firstItem="DdS-4S-1zx" firstAttribute="leading" secondItem="8gM-ne-ChU" secondAttribute="trailing" constant="30" id="akl-rO-LQ6"/>
+                                    <constraint firstItem="DcE-qL-jJq" firstAttribute="leading" secondItem="UVG-on-4aI" secondAttribute="trailing" constant="8" id="btY-O9-P6i"/>
+                                    <constraint firstItem="0i6-zY-RD3" firstAttribute="leading" secondItem="ubF-HT-6Rg" secondAttribute="trailing" constant="10" id="cY6-Bd-slj"/>
+                                    <constraint firstAttribute="bottom" secondItem="Prh-BQ-CkY" secondAttribute="bottom" constant="10" id="d7A-oO-Jo6"/>
+                                    <constraint firstItem="ubF-HT-6Rg" firstAttribute="leading" secondItem="EcM-RL-hry" secondAttribute="leading" id="eRY-Ny-QmT"/>
+                                    <constraint firstItem="Prh-BQ-CkY" firstAttribute="bottom" secondItem="XBV-xN-bZf" secondAttribute="bottom" id="eSI-6t-C2i"/>
+                                    <constraint firstItem="jbJ-5K-Qgr" firstAttribute="firstBaseline" secondItem="EcM-RL-hry" secondAttribute="firstBaseline" id="hvb-Hs-p0i"/>
+                                    <constraint firstItem="sS1-r0-cLw" firstAttribute="leading" secondItem="DdS-4S-1zx" secondAttribute="trailing" constant="8" id="lSr-h4-TVl"/>
+                                    <constraint firstItem="eiF-G7-95R" firstAttribute="trailing" secondItem="sS1-r0-cLw" secondAttribute="trailing" id="nIM-HS-Y70"/>
+                                    <constraint firstItem="jbJ-5K-Qgr" firstAttribute="leading" secondItem="EcM-RL-hry" secondAttribute="trailing" constant="20" id="o2n-hY-mEQ"/>
+                                    <constraint firstItem="0i6-zY-RD3" firstAttribute="centerY" secondItem="ubF-HT-6Rg" secondAttribute="centerY" id="odm-FA-KLw"/>
+                                    <constraint firstItem="eiF-G7-95R" firstAttribute="leading" secondItem="lRq-Ow-fEk" secondAttribute="trailing" constant="8" id="rrE-cA-toh"/>
+                                    <constraint firstItem="eiF-G7-95R" firstAttribute="firstBaseline" secondItem="lRq-Ow-fEk" secondAttribute="firstBaseline" id="ycs-nm-Vmu"/>
+                                </constraints>
+                            </view>
+                        </subviews>
+                        <viewLayoutGuide key="safeArea" id="ioz-jR-kgv"/>
+                        <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                        <constraints>
+                            <constraint firstItem="G78-MN-iaL" firstAttribute="leading" secondItem="ioz-jR-kgv" secondAttribute="leading" id="Csg-gU-nMR"/>
+                            <constraint firstItem="Rxh-S5-42X" firstAttribute="trailing" secondItem="ioz-jR-kgv" secondAttribute="trailing" id="CzP-Jh-hTJ"/>
+                            <constraint firstItem="G78-MN-iaL" firstAttribute="trailing" secondItem="ioz-jR-kgv" secondAttribute="trailing" id="PsF-zy-5j9"/>
+                            <constraint firstItem="RmD-zr-fSi" firstAttribute="top" secondItem="Nru-ZY-H46" secondAttribute="top" constant="40" id="UKn-4r-EAA"/>
+                            <constraint firstAttribute="bottom" secondItem="Rxh-S5-42X" secondAttribute="bottom" id="VEG-dD-rtz"/>
+                            <constraint firstItem="RmD-zr-fSi" firstAttribute="trailing" secondItem="ioz-jR-kgv" secondAttribute="trailing" id="dlJ-VB-4yv"/>
+                            <constraint firstAttribute="bottom" secondItem="G78-MN-iaL" secondAttribute="bottom" id="hQL-5t-ea5"/>
+                            <constraint firstItem="G78-MN-iaL" firstAttribute="top" secondItem="RmD-zr-fSi" secondAttribute="bottom" id="i1b-ep-UGk"/>
+                            <constraint firstItem="Rxh-S5-42X" firstAttribute="leading" secondItem="ioz-jR-kgv" secondAttribute="leading" id="uIx-NR-Elx"/>
+                            <constraint firstItem="RmD-zr-fSi" firstAttribute="leading" secondItem="ioz-jR-kgv" secondAttribute="leading" id="wYp-iY-BFK"/>
+                        </constraints>
+                    </view>
+                    <connections>
+                        <outlet property="btnPrice" destination="0i6-zY-RD3" id="ecM-tU-WKg"/>
+                        <outlet property="btn_addwish" destination="kpx-Gm-qig" id="Ot0-Qi-7Hn"/>
+                        <outlet property="btn_delete" destination="XVs-gw-r3X" id="xv7-gz-evt"/>
+                        <outlet property="btn_edit_select" destination="1Dp-sO-suu" id="piX-OA-FpF"/>
+                        <outlet property="cancelOrderButton" destination="3hY-G2-bAt" id="Ahl-gr-36S"/>
+                        <outlet property="cartItemView" destination="RmD-zr-fSi" id="grc-gh-lJO"/>
+                        <outlet property="editButton" destination="Fkc-Lk-5jB" id="F77-EH-va1"/>
+                        <outlet property="emailButton" destination="g1j-nr-vEW" id="FhI-0v-CCx"/>
+                        <outlet property="itemListTable" destination="3W5-s1-uRe" id="dc7-kL-vlD"/>
+                        <outlet property="labelTotal" destination="eiF-G7-95R" id="ZB7-6l-YLY"/>
+                        <outlet property="labelTotalcuft" destination="IpA-sg-I9m" id="gvT-Bh-Cug"/>
+                        <outlet property="label_cuft" destination="8gM-ne-ChU" id="Ovj-aG-Fj6"/>
+                        <outlet property="label_items" destination="DcE-qL-jJq" id="hBY-Ws-0Sw"/>
+                        <outlet property="label_net_err" destination="Rac-Ya-aVK" id="65D-vu-uGA"/>
+                        <outlet property="label_notes" destination="jbJ-5K-Qgr" id="frI-Qt-0d3"/>
+                        <outlet property="label_qty" destination="sS1-r0-cLw" id="LNQ-CK-pHN"/>
+                        <outlet property="mum" destination="lpm-Ch-BkE" id="vy3-7s-wna"/>
+                        <outlet property="placeOrderButton" destination="Prh-BQ-CkY" id="mzw-sB-X8J"/>
+                        <outlet property="printButton" destination="XBV-xN-bZf" id="2jT-L9-Rmr"/>
+                        <outlet property="toolbar" destination="Rxh-S5-42X" id="QjP-2w-fsT"/>
+                        <outlet property="toolpanel" destination="G78-MN-iaL" id="vRO-fo-YfC"/>
+                        <outlet property="valuecuft" destination="8gM-ne-ChU" id="Oxp-RD-uxc"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="SMC-LY-nXG" userLabel="First Responder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="1800" y="609.79699911738749"/>
+        </scene>
+        <!--Scan Search View Controller-->
+        <scene sceneID="BMt-94-Jmb">
+            <objects>
+                <viewController storyboardIdentifier="ScanSearchViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="lUM-3R-fk4" customClass="ScanSearchViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="0fB-og-gMM">
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6GX-om-hTb" userLabel="searchbar">
+                                <rect key="frame" x="0.0" y="24" width="744" height="44"/>
+                                <subviews>
+                                    <searchBar contentMode="redraw" searchBarStyle="minimal" placeholder="Enter keyword" translatesAutoresizingMaskIntoConstraints="NO" id="XiM-yi-Oqa">
+                                        <rect key="frame" x="489" y="0.0" width="240" height="44"/>
+                                        <constraints>
+                                            <constraint firstAttribute="width" constant="240" id="6hL-oJ-3XL"/>
+                                            <constraint firstAttribute="height" constant="44" id="EnJ-0T-fkB"/>
+                                        </constraints>
+                                        <textInputTraits key="textInputTraits"/>
+                                        <connections>
+                                            <outlet property="delegate" destination="lUM-3R-fk4" id="yNI-Ub-tGq"/>
+                                        </connections>
+                                    </searchBar>
+                                </subviews>
+                                <viewLayoutGuide key="safeArea" id="fNb-CL-FsK"/>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstAttribute="height" constant="44" id="Jsa-vZ-v8r"/>
+                                    <constraint firstItem="fNb-CL-FsK" firstAttribute="trailing" secondItem="XiM-yi-Oqa" secondAttribute="trailing" constant="15" id="RcI-eJ-h3J"/>
+                                    <constraint firstItem="XiM-yi-Oqa" firstAttribute="centerY" secondItem="6GX-om-hTb" secondAttribute="centerY" id="bHO-nA-5Hc"/>
+                                </constraints>
+                            </view>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="Zxn-QV-WBs">
+                                <rect key="frame" x="0.0" y="68" width="744" height="1045"/>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <prototypes>
+                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="ScanListCell" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="ScanListCell" rowHeight="136" id="rbR-kE-WQZ" customClass="ScanListCell">
+                                        <rect key="frame" x="0.0" y="44.5" width="744" height="136"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="rbR-kE-WQZ" id="qQY-LL-MNJ">
+                                            <rect key="frame" x="0.0" y="0.0" width="744" height="136"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                            <subviews>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Model" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qZe-rC-dUo" userLabel="item label">
+                                                    <rect key="frame" x="16" y="13" width="50.5" height="21"/>
+                                                    <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Available:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1Xb-Jn-2m7" userLabel="available">
+                                                    <rect key="frame" x="611" y="44" width="72" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" text="Now" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5gp-No-IH2" userLabel="item label">
+                                                    <rect key="frame" x="693" y="44" width="35" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Dimension" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Yk9-Bx-g5o" userLabel="item label">
+                                                    <rect key="frame" x="16" y="77" width="160" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="height" constant="24" id="nU9-Hr-Icl"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" text="Description" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vyG-X7-ePR" userLabel="description">
+                                                    <rect key="frame" x="16" y="44" width="87.5" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Port" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Xfa-Hf-MCo" userLabel="item label">
+                                                    <rect key="frame" x="344" y="77" width="60" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Origin" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="oQ0-xd-zt8" userLabel="item label">
+                                                    <rect key="frame" x="284" y="77" width="60" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" relation="lessThanOrEqual" constant="100" id="Zkc-AT-rSF"/>
+                                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="60" id="gRv-m5-Qzk"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="FOB CTNR" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AOh-L4-OtN" userLabel="item label">
+                                                    <rect key="frame" x="404" y="77" width="108" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="FOB N.CA" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="69A-jS-M9V" userLabel="item label">
+                                                    <rect key="frame" x="512" y="77" width="108" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="25%" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="fpN-F2-AdC" userLabel="item label">
+                                                    <rect key="frame" x="620" y="77" width="108" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" priority="900" constant="85" id="flD-EX-BUa"/>
+                                                        <constraint firstAttribute="width" relation="lessThanOrEqual" constant="120" id="jke-gT-qek"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="Cuft" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="xgX-hN-MgC" userLabel="item label">
+                                                    <rect key="frame" x="176" y="77" width="108" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="42.8 x 68.3 x 30.5H" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1WZ-rG-smR" userLabel="item label">
+                                                    <rect key="frame" x="16" y="101" width="160" height="24"/>
+                                                    <constraints>
+                                                        <constraint firstAttribute="width" relation="greaterThanOrEqual" priority="950" constant="160" id="enL-qw-uFJ"/>
+                                                    </constraints>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123.45" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="f3r-p7-OfA" userLabel="item label">
+                                                    <rect key="frame" x="176" y="101" width="108" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ABCD" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="3fU-j2-Eck" userLabel="item label">
+                                                    <rect key="frame" x="284" y="101" width="60" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="ABCD" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zr9-m9-uym" userLabel="item label">
+                                                    <rect key="frame" x="344" y="101" width="60" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123.45" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="keK-c8-zNv" userLabel="item label">
+                                                    <rect key="frame" x="404" y="101" width="108" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="234.56" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="eDG-t4-9yd" userLabel="item label">
+                                                    <rect key="frame" x="512" y="101" width="108" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="345.67" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5W1-e9-q7C" userLabel="item label">
+                                                    <rect key="frame" x="620" y="101" width="108" height="24"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="15"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                    <userDefinedRuntimeAttributes>
+                                                        <userDefinedRuntimeAttribute type="number" keyPath="layer.borderWidth">
+                                                            <integer key="value" value="1"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="color" keyPath="layer.borderUIColor">
+                                                            <color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
+                                                        </userDefinedRuntimeAttribute>
+                                                        <userDefinedRuntimeAttribute type="boolean" keyPath="layer.masksToBounds" value="YES"/>
+                                                    </userDefinedRuntimeAttributes>
+                                                </label>
+                                                <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="rAR-Ck-xWH">
+                                                    <rect key="frame" x="633" y="8" width="96" height="31"/>
+                                                    <state key="normal" title="Button"/>
+                                                    <buttonConfiguration key="configuration" style="plain" title="Add to cart"/>
+                                                    <connections>
+                                                        <action selector="onAddToCart:" destination="rbR-kE-WQZ" eventType="touchUpInside" id="kU3-ZR-1eb"/>
+                                                    </connections>
+                                                </button>
+                                            </subviews>
+                                            <constraints>
+                                                <constraint firstItem="3fU-j2-Eck" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="00O-jv-16d"/>
+                                                <constraint firstAttribute="trailing" secondItem="fpN-F2-AdC" secondAttribute="trailing" constant="16" id="3bR-sY-Uf0"/>
+                                                <constraint firstItem="1WZ-rG-smR" firstAttribute="top" secondItem="Yk9-Bx-g5o" secondAttribute="bottom" id="4FH-Qe-NbR"/>
+                                                <constraint firstItem="oQ0-xd-zt8" firstAttribute="leading" secondItem="3fU-j2-Eck" secondAttribute="leading" id="5dz-oJ-rMK"/>
+                                                <constraint firstItem="69A-jS-M9V" firstAttribute="centerY" secondItem="Yk9-Bx-g5o" secondAttribute="centerY" id="6VQ-BV-dIj"/>
+                                                <constraint firstItem="5gp-No-IH2" firstAttribute="leading" secondItem="1Xb-Jn-2m7" secondAttribute="trailing" constant="10" id="6tu-te-m1Y"/>
+                                                <constraint firstItem="xgX-hN-MgC" firstAttribute="centerY" secondItem="Yk9-Bx-g5o" secondAttribute="centerY" id="7Ug-MX-kN0"/>
+                                                <constraint firstItem="qZe-rC-dUo" firstAttribute="leading" secondItem="qQY-LL-MNJ" secondAttribute="leadingMargin" id="87n-4g-fLF"/>
+                                                <constraint firstItem="eDG-t4-9yd" firstAttribute="centerY" secondItem="1WZ-rG-smR" secondAttribute="centerY" id="DxL-uM-xJG"/>
+                                                <constraint firstItem="oQ0-xd-zt8" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="EQO-hU-qih"/>
+                                                <constraint firstItem="69A-jS-M9V" firstAttribute="leading" secondItem="AOh-L4-OtN" secondAttribute="trailing" id="FKi-l9-e1Z"/>
+                                                <constraint firstItem="3fU-j2-Eck" firstAttribute="width" secondItem="oQ0-xd-zt8" secondAttribute="width" id="Ftl-3c-eTa"/>
+                                                <constraint firstItem="fpN-F2-AdC" firstAttribute="width" secondItem="AOh-L4-OtN" secondAttribute="width" id="J63-Ml-iLZ"/>
+                                                <constraint firstItem="xgX-hN-MgC" firstAttribute="leading" secondItem="Yk9-Bx-g5o" secondAttribute="trailing" id="JlF-Qy-XWW"/>
+                                                <constraint firstItem="keK-c8-zNv" firstAttribute="leading" secondItem="AOh-L4-OtN" secondAttribute="leading" id="LHw-y7-pjA"/>
+                                                <constraint firstItem="keK-c8-zNv" firstAttribute="width" secondItem="f3r-p7-OfA" secondAttribute="width" id="OK7-Cf-n27"/>
+                                                <constraint firstItem="3fU-j2-Eck" firstAttribute="centerY" secondItem="1WZ-rG-smR" secondAttribute="centerY" id="OaB-fT-yJx"/>
+                                                <constraint firstItem="AOh-L4-OtN" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="Om3-i1-VrQ"/>
+                                                <constraint firstItem="1WZ-rG-smR" firstAttribute="leading" secondItem="vyG-X7-ePR" secondAttribute="leading" id="Q43-54-wdV"/>
+                                                <constraint firstItem="xgX-hN-MgC" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="SoZ-Fg-xcO"/>
+                                                <constraint firstItem="Xfa-Hf-MCo" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="ThU-Q3-YRw"/>
+                                                <constraint firstItem="5gp-No-IH2" firstAttribute="centerY" secondItem="vyG-X7-ePR" secondAttribute="centerY" id="UzP-Xa-0mI"/>
+                                                <constraint firstItem="rAR-Ck-xWH" firstAttribute="centerY" secondItem="qZe-rC-dUo" secondAttribute="centerY" id="V4p-wc-poH"/>
+                                                <constraint firstItem="vyG-X7-ePR" firstAttribute="leading" secondItem="qQY-LL-MNJ" secondAttribute="leadingMargin" id="VxE-Pv-NSR"/>
+                                                <constraint firstItem="Xfa-Hf-MCo" firstAttribute="leading" secondItem="oQ0-xd-zt8" secondAttribute="trailing" id="WQp-fW-acj"/>
+                                                <constraint firstItem="Yk9-Bx-g5o" firstAttribute="leading" secondItem="vyG-X7-ePR" secondAttribute="leading" id="XEG-w4-fpb"/>
+                                                <constraint firstAttribute="trailing" secondItem="rAR-Ck-xWH" secondAttribute="trailing" constant="15" id="XOk-tp-0En"/>
+                                                <constraint firstItem="eDG-t4-9yd" firstAttribute="leading" secondItem="69A-jS-M9V" secondAttribute="leading" id="XWB-0g-86j"/>
+                                                <constraint firstItem="keK-c8-zNv" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="Xbq-Vw-vTP"/>
+                                                <constraint firstItem="AOh-L4-OtN" firstAttribute="width" secondItem="xgX-hN-MgC" secondAttribute="width" id="Y2j-BB-RwE"/>
+                                                <constraint firstItem="f3r-p7-OfA" firstAttribute="leading" secondItem="xgX-hN-MgC" secondAttribute="leading" id="Y8Y-kx-Ar5"/>
+                                                <constraint firstItem="eDG-t4-9yd" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="YEi-q7-Mio"/>
+                                                <constraint firstItem="5W1-e9-q7C" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="YlC-gr-36a"/>
+                                                <constraint firstItem="5W1-e9-q7C" firstAttribute="width" secondItem="f3r-p7-OfA" secondAttribute="width" id="Z6T-Fp-90C"/>
+                                                <constraint firstItem="Xfa-Hf-MCo" firstAttribute="width" secondItem="oQ0-xd-zt8" secondAttribute="width" id="aiJ-9z-hlG"/>
+                                                <constraint firstItem="Xfa-Hf-MCo" firstAttribute="centerY" secondItem="Yk9-Bx-g5o" secondAttribute="centerY" id="bAq-9n-lmF"/>
+                                                <constraint firstItem="AOh-L4-OtN" firstAttribute="width" secondItem="f3r-p7-OfA" secondAttribute="width" id="bIr-Zt-6h9"/>
+                                                <constraint firstItem="1WZ-rG-smR" firstAttribute="width" secondItem="Yk9-Bx-g5o" secondAttribute="width" id="bjc-Lf-DfH"/>
+                                                <constraint firstItem="69A-jS-M9V" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="cPi-nQ-dGb"/>
+                                                <constraint firstItem="69A-jS-M9V" firstAttribute="width" secondItem="AOh-L4-OtN" secondAttribute="width" id="dKe-8m-cCf"/>
+                                                <constraint firstItem="oQ0-xd-zt8" firstAttribute="leading" secondItem="xgX-hN-MgC" secondAttribute="trailing" id="dt2-s3-GNi"/>
+                                                <constraint firstItem="f3r-p7-OfA" firstAttribute="centerY" secondItem="1WZ-rG-smR" secondAttribute="centerY" id="eGg-gd-BeN"/>
+                                                <constraint firstItem="5W1-e9-q7C" firstAttribute="centerY" secondItem="1WZ-rG-smR" secondAttribute="centerY" id="f1b-jd-UA7"/>
+                                                <constraint firstItem="keK-c8-zNv" firstAttribute="centerY" secondItem="1WZ-rG-smR" secondAttribute="centerY" id="fPd-3m-EAw"/>
+                                                <constraint firstItem="Yk9-Bx-g5o" firstAttribute="top" secondItem="vyG-X7-ePR" secondAttribute="bottom" constant="12" id="fi8-bU-OP2"/>
+                                                <constraint firstItem="zr9-m9-uym" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="h8R-qb-9nr"/>
+                                                <constraint firstItem="fpN-F2-AdC" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="iFi-ez-AfW"/>
+                                                <constraint firstItem="zr9-m9-uym" firstAttribute="centerY" secondItem="1WZ-rG-smR" secondAttribute="centerY" id="ifz-LG-aDR"/>
+                                                <constraint firstItem="AOh-L4-OtN" firstAttribute="leading" secondItem="Xfa-Hf-MCo" secondAttribute="trailing" id="j96-dS-f5q"/>
+                                                <constraint firstItem="f3r-p7-OfA" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="kjA-4o-SJV"/>
+                                                <constraint firstItem="oQ0-xd-zt8" firstAttribute="centerY" secondItem="Yk9-Bx-g5o" secondAttribute="centerY" id="mD8-kn-Ss7"/>
+                                                <constraint firstItem="vyG-X7-ePR" firstAttribute="top" secondItem="qZe-rC-dUo" secondAttribute="bottom" constant="10" id="mPR-nL-S8l"/>
+                                                <constraint firstItem="1WZ-rG-smR" firstAttribute="height" secondItem="Yk9-Bx-g5o" secondAttribute="height" id="pFO-TO-tmm"/>
+                                                <constraint firstItem="1Xb-Jn-2m7" firstAttribute="centerY" secondItem="vyG-X7-ePR" secondAttribute="centerY" id="pg5-WO-LxL"/>
+                                                <constraint firstItem="zr9-m9-uym" firstAttribute="leading" secondItem="Xfa-Hf-MCo" secondAttribute="leading" id="r34-za-tch"/>
+                                                <constraint firstItem="qZe-rC-dUo" firstAttribute="top" secondItem="qQY-LL-MNJ" secondAttribute="top" constant="13" id="sRa-Ok-bCg"/>
+                                                <constraint firstItem="fpN-F2-AdC" firstAttribute="centerY" secondItem="Yk9-Bx-g5o" secondAttribute="centerY" id="sY4-Xc-l82"/>
+                                                <constraint firstItem="5W1-e9-q7C" firstAttribute="leading" secondItem="fpN-F2-AdC" secondAttribute="leading" id="tp6-TY-emJ"/>
+                                                <constraint firstAttribute="trailing" secondItem="5gp-No-IH2" secondAttribute="trailing" constant="16" id="vO9-2e-FEK"/>
+                                                <constraint firstItem="1Xb-Jn-2m7" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="vyG-X7-ePR" secondAttribute="trailing" constant="50" id="vQc-uw-urY"/>
+                                                <constraint firstItem="zr9-m9-uym" firstAttribute="width" secondItem="oQ0-xd-zt8" secondAttribute="width" id="vYJ-DW-rOC"/>
+                                                <constraint firstItem="eDG-t4-9yd" firstAttribute="width" secondItem="f3r-p7-OfA" secondAttribute="width" id="wLq-ss-xki"/>
+                                                <constraint firstItem="fpN-F2-AdC" firstAttribute="leading" secondItem="69A-jS-M9V" secondAttribute="trailing" id="xUg-Zi-faN"/>
+                                                <constraint firstItem="AOh-L4-OtN" firstAttribute="centerY" secondItem="Yk9-Bx-g5o" secondAttribute="centerY" id="ydu-c9-F1D"/>
+                                                <constraint firstItem="qZe-rC-dUo" firstAttribute="leading" secondItem="qQY-LL-MNJ" secondAttribute="leading" constant="16" id="yyW-3M-tqj"/>
+                                            </constraints>
+                                        </tableViewCellContentView>
+                                        <connections>
+                                            <outlet property="labelAvailable" destination="5gp-No-IH2" id="3D9-EY-FRz"/>
+                                            <outlet property="labelCuft" destination="f3r-p7-OfA" id="aeP-0z-Ays"/>
+                                            <outlet property="labelDescription" destination="vyG-X7-ePR" id="evM-DK-lag"/>
+                                            <outlet property="labelDimension" destination="1WZ-rG-smR" id="Pbj-Hq-UJL"/>
+                                            <outlet property="labelModel" destination="qZe-rC-dUo" id="t1P-4a-Gec"/>
+                                            <outlet property="labelOrigin" destination="3fU-j2-Eck" id="E0V-US-HgV"/>
+                                            <outlet property="labelPort" destination="zr9-m9-uym" id="dXU-mw-ecr"/>
+                                            <outlet property="labelPrice25p" destination="5W1-e9-q7C" id="cMW-Ck-GHE"/>
+                                            <outlet property="labelPriceCTNR" destination="keK-c8-zNv" id="lQl-iF-IR1"/>
+                                            <outlet property="labelPriceNCA" destination="eDG-t4-9yd" id="Lt1-Ng-6nV"/>
+                                        </connections>
+                                    </tableViewCell>
+                                </prototypes>
+                                <connections>
+                                    <outlet property="dataSource" destination="lUM-3R-fk4" id="SeB-wE-d8I"/>
+                                    <outlet property="delegate" destination="lUM-3R-fk4" id="5Hl-c5-5St"/>
+                                </connections>
+                            </tableView>
+                        </subviews>
+                        <viewLayoutGuide key="safeArea" id="Ze6-Is-6dX"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="Ze6-Is-6dX" firstAttribute="bottom" secondItem="Zxn-QV-WBs" secondAttribute="bottom" id="8Bl-lK-rgd"/>
+                            <constraint firstItem="6GX-om-hTb" firstAttribute="leading" secondItem="0fB-og-gMM" secondAttribute="leading" id="WAy-la-TKm"/>
+                            <constraint firstItem="Ze6-Is-6dX" firstAttribute="trailing" secondItem="Zxn-QV-WBs" secondAttribute="trailing" id="WF3-hF-mle"/>
+                            <constraint firstItem="Zxn-QV-WBs" firstAttribute="leading" secondItem="Ze6-Is-6dX" secondAttribute="leading" id="afS-hg-asP"/>
+                            <constraint firstItem="Zxn-QV-WBs" firstAttribute="top" secondItem="6GX-om-hTb" secondAttribute="bottom" id="eL1-cg-g69"/>
+                            <constraint firstAttribute="trailing" secondItem="6GX-om-hTb" secondAttribute="trailing" id="ild-BP-4V2"/>
+                            <constraint firstItem="6GX-om-hTb" firstAttribute="top" secondItem="Ze6-Is-6dX" secondAttribute="top" id="nfF-ch-ag6"/>
+                        </constraints>
+                    </view>
+                    <connections>
+                        <outlet property="headerView" destination="6GX-om-hTb" id="Iqv-GJ-Dqy"/>
+                        <outlet property="searchBar" destination="XiM-yi-Oqa" id="NvG-2e-RVh"/>
+                        <outlet property="tableview" destination="Zxn-QV-WBs" id="D9e-aP-h09"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="SgX-3r-9B0" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-2230" y="768"/>
+        </scene>
+        <!--Setup Server-->
+        <scene sceneID="RBm-Dh-AFt">
+            <objects>
+                <viewController storyboardIdentifier="SetupServerViewController" title="Setup Server" useStoryboardIdentifierAsRestorationIdentifier="YES" id="90X-Sr-PW7" customClass="SetupServerViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="uQc-Lh-Rs6">
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <imageView clipsSubviews="YES" userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="server_bg" translatesAutoresizingMaskIntoConstraints="NO" id="Fch-tn-bXo">
+                                <rect key="frame" x="0.0" y="0.0" width="744" height="450"/>
+                                <constraints>
+                                    <constraint firstAttribute="width" secondItem="Fch-tn-bXo" secondAttribute="height" multiplier="124:75" id="iaV-e6-iH3"/>
+                                </constraints>
+                            </imageView>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Homelegance Warehouse Location:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5Vv-Np-lYi">
+                                <rect key="frame" x="206" y="496" width="332" height="24"/>
+                                <fontDescription key="fontDescription" type="boldSystem" pointSize="20"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pIX-gE-l1R">
+                                <rect key="frame" x="206" y="550" width="332" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Select a server"/>
+                                <connections>
+                                    <action selector="onSelectServer:" destination="90X-Sr-PW7" eventType="touchUpInside" id="z7C-c4-hEC"/>
+                                </connections>
+                            </button>
+                            <textField opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Password" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="AcX-Su-5k5">
+                                <rect key="frame" x="206" y="611" width="332" height="34"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
+                            </textField>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cO1-GO-FNL">
+                                <rect key="frame" x="482.5" y="693" width="55.5" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Save"/>
+                                <connections>
+                                    <action selector="onSaveClick:" destination="90X-Sr-PW7" eventType="touchUpInside" id="fjn-o6-gyF"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="j4q-WP-XaC">
+                                <rect key="frame" x="206" y="693" width="101" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Refresh List"/>
+                                <connections>
+                                    <action selector="onreloadList:" destination="90X-Sr-PW7" eventType="touchUpInside" id="sqE-Vm-FnM"/>
+                                </connections>
+                            </button>
+                            <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="ogl-HO-s1X">
+                                <rect key="frame" x="469" y="748" width="69" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Cancel"/>
+                                <connections>
+                                    <action selector="onCancelClick:" destination="90X-Sr-PW7" eventType="touchUpInside" id="G4J-VR-nep"/>
+                                </connections>
+                            </button>
+                        </subviews>
+                        <viewLayoutGuide key="safeArea" id="XV0-bs-Lf0"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="cO1-GO-FNL" firstAttribute="top" secondItem="AcX-Su-5k5" secondAttribute="bottom" constant="48" id="5yZ-K9-vZe"/>
+                            <constraint firstItem="cO1-GO-FNL" firstAttribute="trailing" secondItem="5Vv-Np-lYi" secondAttribute="trailing" id="MBP-we-xhA"/>
+                            <constraint firstItem="pIX-gE-l1R" firstAttribute="leading" secondItem="5Vv-Np-lYi" secondAttribute="leading" id="ToX-JP-OFi"/>
+                            <constraint firstItem="pIX-gE-l1R" firstAttribute="top" secondItem="5Vv-Np-lYi" secondAttribute="bottom" constant="30" id="UGA-Ic-jaO"/>
+                            <constraint firstItem="j4q-WP-XaC" firstAttribute="leading" secondItem="AcX-Su-5k5" secondAttribute="leading" id="VHv-nF-txM"/>
+                            <constraint firstItem="AcX-Su-5k5" firstAttribute="leading" secondItem="5Vv-Np-lYi" secondAttribute="leading" id="Vzf-NC-jGT"/>
+                            <constraint firstItem="cO1-GO-FNL" firstAttribute="centerY" secondItem="j4q-WP-XaC" secondAttribute="centerY" id="WKP-5n-tAT"/>
+                            <constraint firstItem="AcX-Su-5k5" firstAttribute="top" secondItem="pIX-gE-l1R" secondAttribute="bottom" constant="30" id="Wjb-lr-y4z"/>
+                            <constraint firstItem="Fch-tn-bXo" firstAttribute="leading" secondItem="XV0-bs-Lf0" secondAttribute="leading" id="ecu-14-4j6"/>
+                            <constraint firstItem="ogl-HO-s1X" firstAttribute="trailing" secondItem="cO1-GO-FNL" secondAttribute="trailing" id="ejr-8o-WEU"/>
+                            <constraint firstItem="ogl-HO-s1X" firstAttribute="top" secondItem="cO1-GO-FNL" secondAttribute="bottom" constant="24" id="ikm-Bm-jRx"/>
+                            <constraint firstItem="5Vv-Np-lYi" firstAttribute="centerX" secondItem="uQc-Lh-Rs6" secondAttribute="centerX" id="kQV-6o-O8r"/>
+                            <constraint firstItem="5Vv-Np-lYi" firstAttribute="top" secondItem="Fch-tn-bXo" secondAttribute="bottom" constant="46" id="onn-tp-jbO"/>
+                            <constraint firstItem="pIX-gE-l1R" firstAttribute="trailing" secondItem="5Vv-Np-lYi" secondAttribute="trailing" id="pUB-d6-Kry"/>
+                            <constraint firstItem="AcX-Su-5k5" firstAttribute="trailing" secondItem="5Vv-Np-lYi" secondAttribute="trailing" id="rRj-hJ-waf"/>
+                            <constraint firstItem="Fch-tn-bXo" firstAttribute="top" secondItem="uQc-Lh-Rs6" secondAttribute="top" id="tiy-Gc-40c"/>
+                            <constraint firstAttribute="trailing" secondItem="Fch-tn-bXo" secondAttribute="trailing" id="xc6-v5-vy7"/>
+                        </constraints>
+                    </view>
+                    <connections>
+                        <outlet property="btnCancel" destination="ogl-HO-s1X" id="Ms1-qy-7V3"/>
+                        <outlet property="btnSelectServer" destination="pIX-gE-l1R" id="PbD-qc-Ic9"/>
+                        <outlet property="editPassword" destination="AcX-Su-5k5" id="2tu-2E-xen"/>
+                    </connections>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="eeH-R3-pfb" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-1426.6129032258063" y="777.6699029126213"/>
+        </scene>
+        <!--Scan Server List View Controller-->
+        <scene sceneID="4sh-Im-wPt">
+            <objects>
+                <viewController storyboardIdentifier="ScanServerListViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="5Xm-sJ-ELC" customClass="ScanServerListViewController" sceneMemberID="viewController">
+                    <view key="view" contentMode="scaleToFill" id="2i6-bB-uDo">
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
+                        <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+                        <subviews>
+                            <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="-1" estimatedSectionHeaderHeight="-1" sectionFooterHeight="-1" estimatedSectionFooterHeight="-1" translatesAutoresizingMaskIntoConstraints="NO" id="AOw-ME-gdy">
+                                <rect key="frame" x="0.0" y="24" width="744" height="1089"/>
+                                <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                                <prototypes>
+                                    <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="hO3-NR-b05">
+                                        <rect key="frame" x="0.0" y="44.5" width="744" height="43.5"/>
+                                        <autoresizingMask key="autoresizingMask"/>
+                                        <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="hO3-NR-b05" id="jg4-JD-jFQ">
+                                            <rect key="frame" x="0.0" y="0.0" width="744" height="43.5"/>
+                                            <autoresizingMask key="autoresizingMask"/>
+                                        </tableViewCellContentView>
+                                    </tableViewCell>
+                                </prototypes>
+                                <connections>
+                                    <outlet property="dataSource" destination="5Xm-sJ-ELC" id="aGz-H2-4l4"/>
+                                    <outlet property="delegate" destination="5Xm-sJ-ELC" id="kc1-7Z-34e"/>
+                                </connections>
+                            </tableView>
+                        </subviews>
+                        <viewLayoutGuide key="safeArea" id="FIq-lf-MSt"/>
+                        <color key="backgroundColor" systemColor="systemBackgroundColor"/>
+                        <constraints>
+                            <constraint firstItem="AOw-ME-gdy" firstAttribute="leading" secondItem="FIq-lf-MSt" secondAttribute="leading" id="Hv8-2s-lzO"/>
+                            <constraint firstItem="FIq-lf-MSt" firstAttribute="bottom" secondItem="AOw-ME-gdy" secondAttribute="bottom" id="f2E-4b-Ds8"/>
+                            <constraint firstItem="AOw-ME-gdy" firstAttribute="top" secondItem="FIq-lf-MSt" secondAttribute="top" id="pN1-dS-LZR"/>
+                            <constraint firstItem="FIq-lf-MSt" firstAttribute="trailing" secondItem="AOw-ME-gdy" secondAttribute="trailing" id="qsG-wx-8MN"/>
+                        </constraints>
+                    </view>
+                </viewController>
+                <placeholder placeholderIdentifier="IBFirstResponder" id="Po2-Ch-srx" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
+            </objects>
+            <point key="canvasLocation" x="-2868" y="716"/>
+        </scene>
     </scenes>
     <resources>
+        <image name="btn_cancelorder" width="30" height="30"/>
+        <image name="btn_email_order" width="30" height="30"/>
+        <image name="btn_print_order" width="30" height="30"/>
+        <image name="continue" width="130" height="30"/>
         <image name="notfound_s" width="180" height="180"/>
+        <image name="server_bg" width="920" height="557"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
         </systemColor>

+ 31 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanCartItemCell.h

@@ -0,0 +1,31 @@
+//
+//  ScanCartItemCell.h
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/21/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ScanCartItemCell : UITableViewCell
+@property (weak, nonatomic) IBOutlet UILabel *labelModel;
+@property (weak, nonatomic) IBOutlet UILabel *labelDescription;
+@property (weak, nonatomic) IBOutlet UILabel *labelUnitPrice;
+@property (weak, nonatomic) IBOutlet UILabel *labelSubtotal;
+@property (weak, nonatomic) IBOutlet UILabel *labelMpack;
+@property (weak, nonatomic) IBOutlet UITextField *editQTY;
+@property (weak, nonatomic) IBOutlet UIStepper *setpperQTY;
+@property (weak, nonatomic) IBOutlet UILabel *labelNotes;
+@property double unit_price;
+@property bool noprice;
+@property (strong,nonatomic) NSString* cart_id;
+
+-(void) set_Count:(int) count;
+-(void) init_Stepper:(int) step max:(int) max min:(int)min value:(int)value;
+@property (nonatomic , copy) void (^onReturnQTY)(int qty , NSDictionary* ext);
+@end
+
+NS_ASSUME_NONNULL_END

+ 390 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanCartItemCell.m

@@ -0,0 +1,390 @@
+//
+//  ScanCartItemCell.m
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/21/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ScanCartItemCell.h"
+#import "AppDelegate.h"
+#import "RANetwork.h"
+#import "CartViewController.h"
+#define NUMBERS @"0123456789\n"
+@implementation ScanCartItemCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+-(void) init_Stepper:(int) step max:(int) max min:(int)min value:(int)value
+{
+    
+//    [self.stepper becomeFirstResponder];
+    if(self.setpperQTY!=nil)
+    {
+        if(min<=0)
+            min=1;
+        if(step<=0)
+            step=1;
+        self.setpperQTY.minimumValue= min;
+        
+        
+        
+        self.setpperQTY.stepValue= step;
+        
+        self.setpperQTY.value= value;
+        
+//        self.pre_val = value;
+        
+        [self.setpperQTY addTarget:self action:@selector(valueChanged:) forControlEvents:UIControlEventValueChanged];
+//        self.totalchange=0;
+        
+    }
+}
+
+- (void)valueChanged:(UIStepper *)sender {
+    
+    
+    
+    self.editQTY.text = [NSString stringWithFormat:@"%d",(int)sender.value ];
+    
+    [self set_Count:(int)sender.value ];
+    
+    
+    //
+    //    [celldelegate stepClicked:(int)sender.value];
+    //    -(void) stepClicked:(int) value;
+}
+- (IBAction)setpperChanged:(UIStepper *)sender {
+    
+    DebugLog(@"setpperChanged");
+    
+//    int val_change=(int)sender.value-self.pre_val;
+//
+//        _totalchange=_totalchange+val_change;
+    
+    
+//
+//    if(val_change==(int)sender.stepValue)
+//    {
+//
+//        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//            NSDictionary* cart_json = [iSalesNetwork cart_incresement:self.cart_id increse:true];
+//
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//
+//
+//
+//                if([[cart_json valueForKey:@"result"] intValue]==2)
+//                {
+//                    if(self.onReturnQTY)
+//                        self.onReturnQTY(sender.value,cart_json);
+////
+////                    if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+////                        [self.delegate returnQTY:sender.value ];
+//                   // }
+//                }
+//                else
+//                {
+//                    UIViewController* vc=[RAUtils getViewController :self];
+//                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+//                }
+//
+//
+//
+//
+//            });
+//        });
+//        //increse;
+//    }
+//    else if(val_change==-(int)sender.stepValue)
+//    {
+//        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//            NSDictionary* cart_json = [iSalesNetwork cart_incresement:self.cart_id increse:false];
+//
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//
+//
+//
+//
+//                if([[cart_json valueForKey:@"result"] intValue]==2)
+//                {
+//                    if(self.onReturnQTY)
+//                        self.onReturnQTY(sender.value,cart_json);
+//                }
+//                else
+//                {
+//                    UIViewController* vc=[RAUtils getViewController :self];
+//                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+//                }
+//
+//
+//            });
+//        });
+//
+//    }
+//    else
+//    {
+//        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//            NSDictionary* cart_json = [iSalesNetwork cart_setQTY:self.cart_id value:sender.value];
+//
+//            dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                if([[cart_json valueForKey:@"result"] intValue]==2)
+//                {
+//                    if(self.onReturnQTY)
+//                        self.onReturnQTY(sender.value,cart_json);
+////                    if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+////                        [self.delegate returnQTY:sender.value ];
+////                    }
+//                }
+//                else
+//                {
+//                    UIViewController* vc=[RAUtils getViewController :self];
+//                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+//                }
+//
+//
+//
+//            });
+//        });
+//
+//        //setvalue;
+//    }
+    
+    
+    
+    [self cancel_setQTY];
+    [self performSelector:@selector(delayRun) withObject:nil afterDelay:0.8];
+    
+}
+-(void) cancel_setQTY
+{
+    [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(delayRun) object:nil];
+}
+
+-(void) delayRun
+{
+//    NSThread *thread = [[NSThread alloc] initWithTarget:self selector:@selector(calculate) object:nil];
+//    // 启动
+//    [thread start];
+    
+    [RANetwork request_update_cartqty:self.cart_id value:self.setpperQTY.value completionHandler:^(NSMutableDictionary *result) {
+        NSDictionary* cart_json =result;
+        
+        if([[cart_json valueForKey:@"result"] intValue]==2)
+        {
+            if(self.onReturnQTY)
+                self.onReturnQTY(self.setpperQTY.value,cart_json);
+            //                    if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+            //                        [self.delegate returnQTY:sender.value ];
+            //                    }
+        }
+        else
+        {
+            UIViewController* vc=[RAUtils getViewController :self];
+            [((CartViewController *)vc).itemListTable reloadData];
+            [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+        }
+        
+        
+        
+    }];
+    
+//            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//                NSDictionary* cart_json = [RANetwork cart_setQTY:self.cart_id value:self.pre_val];
+//
+//                dispatch_async(dispatch_get_main_queue(), ^{
+//                    self.totalchange=0;
+//                    if([[cart_json valueForKey:@"result"] intValue]==2)
+//                    {
+//                        if(self.onReturnQTY)
+//                            self.onReturnQTY(self.pre_val,cart_json);
+//    //                    if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+//    //                        [self.delegate returnQTY:sender.value ];
+//    //                    }
+//                    }
+//                    else
+//                    {
+//                        UIViewController* vc=[RAUtils getViewController :self];
+//                        [((CartViewController *)vc).itemListTable reloadData];
+//                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+//                    }
+//
+//
+//
+//                });
+//            });
+    
+    
+}
+-(void) set_Count:(int) count
+{
+    
+    self.setpperQTY.value=count;
+  
+//    double dprice=0;
+
+
+    //    self.labelUnitPrice.text =[NSString stringWithFormat:@"%.2f",self.unit_price];
+    
+    
+    
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    NSString* price = [NSString stringWithFormat:@"%.2f",self.unit_price*count ];
+//    if(appDelegate.can_see_price&&appDelegate.price_hidden==false)
+//    {
+//        
+//    }
+//    else
+//    {
+//        price=nil;
+//    }
+    
+
+    if(self.noprice&&self.unit_price==0.0)
+        self.labelSubtotal.text =@"No Price";
+    else
+        self.labelSubtotal.text =price;
+    
+    self.editQTY.text =[NSString stringWithFormat:@"%d",count];
+}
+
+
+#pragma mark textField delegate
+
+- (BOOL)textFieldShouldReturn:(UITextField *)textField {
+    [textField resignFirstResponder];
+    return NO;
+}
+-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
+    
+    
+    DebugLog(@"text:%@",textField.text);
+    
+    
+  
+    NSCharacterSet *cs;
+    cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];
+    
+    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];
+    
+    BOOL canChange = [string isEqualToString:filtered];
+    
+    
+    
+    
+    return canChange;
+}
+- (void)textFieldDidEndEditing:(UITextField *)textField
+{
+    
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    int qty = [textField.text intValue];
+    
+    if(qty==0)
+        qty=self.setpperQTY.minimumValue;
+    
+#ifdef MPACK
+    if ((int)qty % (int)self.stepper.stepValue != 0) {
+        UIViewController* vc=[RAUtils getViewController :self];
+        [((CartViewController *)vc).itemListTable reloadData];
+        [RAUtils message_alert:[NSString stringWithFormat:@"Sold in quantities of %d",(int)(self.stepper.stepValue)] title:@"Change Model Count" controller:vc];
+        return;
+    }
+#endif
+    
+        
+        int c=qty;
+        
+//        int m=c%(int)(self.setpperQTY.stepValue);
+//        if(m!=0&&appDelegate.alert_sold_in_quantities)
+//
+//        else
+        {
+            [self set_Count:qty];
+            
+            [RANetwork request_update_cartqty:self.cart_id value:qty completionHandler:^(NSMutableDictionary *result) {
+                NSDictionary* cart_json =result;
+                if([[cart_json valueForKey:@"result"] intValue]==2)
+                {
+                    //                if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+                    //                    [self.delegate returnQTY:qty];
+                    //                }
+                    
+                    if(self.onReturnQTY)
+                        self.onReturnQTY(qty,cart_json);
+                }
+                else
+                {
+                    UIViewController* vc=[RAUtils getViewController :self];
+                    [((CartViewController *)vc).itemListTable reloadData];
+                    [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+                }
+                
+                
+                
+            }];
+            
+//            dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+//
+//                NSDictionary* cart_json = [RANetwork cart_setQTY:self.cart_id value:qty];
+//
+//                dispatch_async(dispatch_get_main_queue(), ^{
+//
+//                    if([[cart_json valueForKey:@"result"] intValue]==2)
+//                    {
+//                        //                if (self.delegate && [self.delegate respondsToSelector:@selector(returnQTY:)]) {
+//                        //                    [self.delegate returnQTY:qty];
+//                        //                }
+//
+//                        if(self.onReturnQTY)
+//                            self.onReturnQTY(qty,cart_json);
+//                    }
+//                    else
+//                    {
+//                        UIViewController* vc=[RAUtils getViewController :self];
+//                        [((CartViewController *)vc).itemListTable reloadData];
+//                        [RAUtils message_alert:[cart_json valueForKey:@"err_msg"] title:@"Change Model Count" controller:vc] ;
+//                    }
+//
+//
+//
+//                });
+//            });
+
+        }
+        
+    
+        
+    
+    
+    
+    
+
+}
+
+- (void)textFieldDidBeginEditing:(UITextField *)textField
+{
+    NSString* text = textField.text;
+    if(text.length==0)
+        text=@"0";
+//    self.pre_val = [textField.text intValue];
+    
+   // self.last_edit = textField.text;
+}
+
+@end

+ 18 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanHistoryViewController.h

@@ -0,0 +1,18 @@
+//
+//  ScanHistoryViewController.h
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/29/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "ActiveViewController.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ScanHistoryViewController : ActiveViewController
+@property (weak, nonatomic) IBOutlet UITableView *tableview;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 91 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanHistoryViewController.m

@@ -0,0 +1,91 @@
+//
+//  ScanHistoryViewController.m
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/29/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ScanHistoryViewController.h"
+#import "ScanListCell.h"
+#import "RASingleton.h"
+
+@interface ScanHistoryViewController ()
+
+@end
+
+@implementation ScanHistoryViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    
+    return RASingleton.sharedInstance.scan_list.count;
+    
+    
+
+}
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+    return 136.0f;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    ScanListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ScanListCell"];
+    if (!cell) {
+        cell = [[ScanListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ScanListCell"];
+    }
+
+    NSMutableArray* arr = RASingleton.sharedInstance.scan_list;
+    
+    [cell setModelJson:arr[indexPath.row]];
+   
+    
+    return cell;
+}
+
+//#pragma mark - TableView Delegate
+
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+
+//- (IBAction)onAddToCart:(id)sender {
+//    
+//    [self dismissViewControllerAnimated:true completion:^{
+//            if(self.returnValue)
+//                self.returnValue(self.modellist);
+//        }];
+//    
+//    
+//}
+#pragma mark - RA_NOTIFICAITON
+-(void) refresh_ui
+{
+    [self.tableview reloadData];
+}
+-(void) reload_data {
+    [self.tableview reloadData];
+}
+@end

+ 28 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanListCell.h

@@ -0,0 +1,28 @@
+//
+//  ScanListCell.h
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/30/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ScanListCell : UITableViewCell
+@property (weak, nonatomic) IBOutlet UILabel *labelModel;
+@property (weak, nonatomic) IBOutlet UILabel *labelDescription;
+@property (weak, nonatomic) IBOutlet UILabel *labelDimension;
+@property (weak, nonatomic) IBOutlet UILabel *labelCuft;
+@property (weak, nonatomic) IBOutlet UILabel *labelOrigin;
+@property (weak, nonatomic) IBOutlet UILabel *labelPort;
+@property (weak, nonatomic) IBOutlet UILabel *labelPriceCTNR;
+@property (weak, nonatomic) IBOutlet UILabel *labelPriceNCA;
+@property (weak, nonatomic) IBOutlet UILabel *labelPrice25p;
+@property (weak, nonatomic) IBOutlet UILabel *labelAvailable;
+
+@property (strong, nonatomic) NSMutableDictionary *modelJson;
+@end
+
+NS_ASSUME_NONNULL_END

+ 195 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanListCell.m

@@ -0,0 +1,195 @@
+//
+//  ScanListCell.m
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/30/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ScanListCell.h"
+#import "RASingleton.h"
+#import "OLDataProvider.h"
+#import "ActiveViewController.h"
+#import "RAConvertor.h"
+#import "RAUtils.h"
+
+@implementation ScanListCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+    // Initialization code
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+- (IBAction)onAddToCart:(id)sender {
+     //            DebugLog(@"shouldchangeedit %d_%d",indexPath.section,indexPath.row);
+    
+    
+    
+    
+        
+        if(RASingleton.sharedInstance.scan_cart ==nil)
+        {
+//            NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:URL_SO_CART ofType:@"json" ]];
+            NSMutableDictionary* cartTemplate=[OLDataProvider loadScanTemplate:@"scan_cart.json"];
+            RASingleton.sharedInstance.scan_cart=cartTemplate;//[[RAConvertor data2dict:json] mutableCopy];
+        }
+        // 初始化为 FOB CTNR;
+    if(RASingleton.sharedInstance.scan_cart[@"price_type"] ==nil)
+    {
+        RASingleton.sharedInstance.scan_cart[@"price_type"] = @0;
+    RASingleton.sharedInstance.price_type = 0;
+    }
+
+        NSMutableDictionary* section =[RASingleton.sharedInstance.scan_cart[@"section_0"] mutableCopy];
+        int count =[section[@"count"] intValue];
+        
+        
+        
+        NSMutableDictionary* jitem = nil;
+         jitem = [self.modelJson mutableCopy];
+        
+        bool newitem = true;
+        for(int i=0;i<count;i++)
+        {
+            
+            NSMutableDictionary* litem = [section[[NSString stringWithFormat:@"item_%i",i]] mutableCopy];
+            
+            if([litem[@"product_id"] isEqualToString:jitem[@"product_id"]])
+            {
+                
+//                    int oldcount = [litem[@"stockUom"] intValue];
+                newitem = false;
+            
+                litem[@"count"]=@([litem[@"count"] intValue] +[jitem[@"count"] intValue]);
+                litem[@"cuft"]=@([litem[@"count"] intValue] * [litem[@"unit_cuft"] doubleValue]);
+                
+                section[[NSString stringWithFormat:@"item_%i",i]] = litem;
+                break;
+                
+                
+            }
+            
+
+
+        }
+        if(newitem)
+        {
+            jitem[@"check"]=@(true);
+            jitem[@"cart_item_id"]=[NSUUID UUID].UUIDString;
+            section[[NSString stringWithFormat:@"item_%i",count]] = jitem;
+            section[@"count"]= @(count+1);
+            count++;
+            
+        }
+        
+        
+        RASingleton.sharedInstance.scan_cart[@"section_0"] = section;
+        
+        //加list
+        
+        
+        
+        
+        
+
+            [ActiveViewController Notify:@"CartViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+
+            
+        [OLDataProvider saveScanCart:RASingleton.sharedInstance.scan_cart];
+
+    [RAUtils message_alert:@"Successful" title:@"Add to cart" controller:[RAUtils getViewController:self]];
+    
+    
+}
+
+- (void)setModelJson:(NSMutableDictionary *)modelJson
+{
+    _modelJson = modelJson;
+
+    NSLog( [RAConvertor dict2string:modelJson]);
+    
+    
+    
+    _labelModel.text=_modelJson[@"model"];
+    _labelDescription.text=_modelJson[@"description"];
+    _labelDimension.text=_modelJson[@"dimension"];
+    _labelCuft.text=_modelJson[@"unit_cuft"];
+    _labelOrigin.text=_modelJson[@"origin"];
+    _labelPort.text=_modelJson[@"port"];
+    NSString* price0=_modelJson[@"price0"];
+    NSString* price1=_modelJson[@"price1"];
+    NSString* price2;
+ 
+    if(price0.length==0)
+        price0 = @"N/A";
+    else
+        price0 = [NSString stringWithFormat:@"%.2f",[_modelJson[@"price0"] doubleValue]];
+    
+    
+    if(price1.length==0)
+        price1 = @"N/A";
+    else
+        price1 = [NSString stringWithFormat:@"%.2f",[_modelJson[@"price1"] doubleValue]];
+    
+    if(![price1 isEqualToString:@"N/A"])
+    {
+        price2 =  [NSString stringWithFormat:@"%.2f",[_modelJson[@"price1"] doubleValue] *1.25];
+        _modelJson[@"price2"]= price2;
+    }
+    else
+    {
+        price2=@"N/A";
+    }
+    
+    _labelPriceCTNR.text=price0;
+    _labelPriceNCA.text=price1;
+    _labelPrice25p.text=price2;
+    _labelAvailable.text=_modelJson[@"available"];
+    NSString * unit_cuft=_modelJson[@"unit_cuft"];
+    if(unit_cuft.length==0)
+        unit_cuft = @"N/A";
+    else
+    {
+        
+        unit_cuft = [NSString stringWithFormat:@"%.2f", [_modelJson[@"unit_cuft"] doubleValue]];
+    }
+    
+    NSString * unit_price;
+    if(RASingleton.sharedInstance.price_type==2)
+    {
+        unit_price=_modelJson[@"price2"];
+    }
+    else if(RASingleton.sharedInstance.price_type==1)
+    {
+        unit_price=_modelJson[@"price1"];
+    }
+    else
+    {
+        unit_price=_modelJson[@"price0"];
+    }
+    if(unit_price.length==0)
+        unit_price = @"N/A";
+    else
+    {
+        
+        unit_price = [NSString stringWithFormat:@"%.2f", [unit_price doubleValue]];
+    }
+    
+
+    
+    
+    
+    
+    NSString * mpack=_modelJson[@"stockUom"];
+    _modelJson[@"cuft"] = @([mpack intValue]* [unit_cuft doubleValue]);
+    _modelJson[@"subtotal_price"] = @([mpack intValue]* [unit_price doubleValue]);
+
+
+}
+
+@end

+ 30 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanModelListCell.h

@@ -0,0 +1,30 @@
+//
+//  ScanModelListCell.h
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/17/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ScanModelListCell : UITableViewCell
+@property (weak, nonatomic) IBOutlet UILabel *labelModel;
+@property (weak, nonatomic) IBOutlet UILabel *labelDescription;
+@property (weak, nonatomic) IBOutlet UILabel *labelDimension;
+@property (weak, nonatomic) IBOutlet UILabel *labelCuft;
+@property (weak, nonatomic) IBOutlet UILabel *labelOrigin;
+@property (weak, nonatomic) IBOutlet UILabel *labelPort;
+@property (weak, nonatomic) IBOutlet UILabel *labelPriceCTNR;
+@property (weak, nonatomic) IBOutlet UILabel *labelPriceNCA;
+@property (weak, nonatomic) IBOutlet UILabel *labelPrice25p;
+@property (weak, nonatomic) IBOutlet UILabel *labelAvailable;
+@property (weak, nonatomic) IBOutlet UITextField *editQTY;
+@property (strong, nonatomic) NSMutableDictionary *modelJson;
+
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 49 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanModelListCell.m

@@ -0,0 +1,49 @@
+//
+//  ScanModelListCell.m
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/17/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ScanModelListCell.h"
+
+@implementation ScanModelListCell
+
+- (void)awakeFromNib {
+    [super awakeFromNib];
+//    self.editQTY.delegate = self;
+    
+    // Initialization code
+}
+
+- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
+    [super setSelected:selected animated:animated];
+
+    // Configure the view for the selected state
+}
+
+- (void)setModelJson:(NSMutableDictionary *)modelJson
+{
+    _modelJson = modelJson;
+
+    
+    
+    _labelModel.text=_modelJson[@"model"];
+    _labelDescription.text=_modelJson[@"description"];
+    _labelDimension.text=_modelJson[@"dimension"];
+    _labelCuft.text=_modelJson[@"unit_cuft"];
+    _labelOrigin.text=_modelJson[@"origin"];
+    _labelPort.text=_modelJson[@"port"];
+    _labelPriceCTNR.text=_modelJson[@"price0"];
+    _labelPriceNCA.text=_modelJson[@"price1"];
+    _labelPrice25p.text=_modelJson[@"price2"];
+    _labelAvailable.text=_modelJson[@"available"];
+        _editQTY.text=_modelJson[@"count"];
+}
+
+
+
+
+
+@end

+ 19 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanOrderModelListViewController.h

@@ -0,0 +1,19 @@
+//
+//  ScanOrderModelListViewController.h
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/17/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ScanResultViewController.h"
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ScanOrderModelListViewController : ScanResultViewController<UITextFieldDelegate>
+@property (weak, nonatomic) IBOutlet UITableView *tableView;
+
+@property (strong, nonatomic) NSMutableArray* modellist;
+@end
+
+NS_ASSUME_NONNULL_END

+ 331 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanOrderModelListViewController.m

@@ -0,0 +1,331 @@
+//
+//  ScanOrderModelListViewController.m
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/17/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ScanOrderModelListViewController.h"
+#import "ScanModelListCell.h"
+#define NUMBERS @"0123456789\n"
+#import "RASingleton.h"
+#import "ActiveViewController.h"
+@interface ScanOrderModelListViewController ()
+
+@end
+
+@implementation ScanOrderModelListViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+
+- (void)setScan_val:(id)scan_val
+{
+    [super setScan_val:scan_val];
+    
+    
+    self.modellist = [NSMutableArray new];
+    
+    NSArray* arr = (NSArray*) self.scan_val;
+    for(int i=0;i<arr.count;i++)
+    {
+        NSArray* item = arr[i];
+        
+        NSMutableDictionary* jitem = [NSMutableDictionary new];
+        
+        
+        
+        NSString* pid = item[0];
+        NSString * model =item[1];
+        if(model.length==0)
+            model = @"";
+        NSString * description=item[2];
+        if(description.length==0)
+            description = @"";
+        
+        NSString * dimension=item[3];
+        if(dimension.length==0)
+            dimension = @"";
+        
+        NSString * mpack=item[4];
+        if(mpack.length==0)
+            mpack = @"1";
+        
+        NSString * unit_cuft=item[5];
+        if(unit_cuft.length==0)
+            unit_cuft = @"N/A";
+        else
+        {
+            
+            unit_cuft = [NSString stringWithFormat:@"%.2f", [item[5] doubleValue]];
+        }
+        
+        NSString * port=item[6];
+        if(port.length==0)
+            port = @"N/A";
+        
+        NSString * origin=item[7];
+        if(origin.length==0)
+            origin = @"N/A";
+        
+        NSString * available=item[8];
+        if(available.length==0)
+            available = @"N/A";
+        
+        NSString* price0;
+        NSString* price1;
+        NSString* price2;
+        NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"];
+        if (addressDic) {
+            
+            int price_index =[addressDic[ @"price_index"] intValue];
+    //        NSString* ia=addressDic[@"internalAddress"];
+    //        NSString* ea=addressDic[@"externalAddress"];
+    //        NSString* sa=addressDic[@"serverAddress"];
+    //        if(sa.length==0)
+    //        {
+    //            if(ea.length>0)
+    //                sa=ea;
+    //            else if(ia.length>0)
+    //            sa=ia;
+    //        }
+    //        NSString* server_name=[addressDic objectForKey:@"name"];
+            
+            int idx = 9+price_index;
+
+            
+            price0=item[idx];
+            if(price0.length==0)
+                price0 = @"N/A";
+            else
+                price0 = [NSString stringWithFormat:@"%.2f",[item[idx] doubleValue]];
+            
+            price1=item[idx+1];
+            if(price1.length==0)
+                price1 = @"N/A";
+            else
+                price1 = [NSString stringWithFormat:@"%.2f",[item[idx+1] doubleValue]];
+            
+            if(![price1 isEqualToString:@"N/A"])
+            {
+                price2 =  [NSString stringWithFormat:@"%.2f",[item[idx+1] doubleValue] *1.25];
+            }
+            else
+            {
+                price2 = @"N/A";
+            }
+        }
+        
+        
+        
+        
+        jitem[@"product_id"]= pid;
+        jitem[@"model"] =model;
+        jitem[@"description"] = description;
+        
+        
+        
+        if(RASingleton.sharedInstance.price_type==2)
+        {
+            jitem[@"unit_price"] =price2;
+        }
+        else if(RASingleton.sharedInstance.price_type==1)
+        {
+            jitem[@"unit_price"] =price1;
+        }
+        else
+        {
+            jitem[@"unit_price"] =price0;
+        }
+        
+        jitem[@"price0"] =price0;
+        jitem[@"price1"] =price1;
+        jitem[@"price2"] =price2;
+        jitem[@"stockUom"] = mpack;
+        jitem[@"count"] = mpack;
+        jitem[@"subtotal_price"] = @([mpack intValue]* [jitem[@"unit_price"] doubleValue]);
+
+        jitem[@"dimension"] = dimension;
+        jitem[@"unit_cuft"] = unit_cuft;
+        jitem[@"cuft"] = @([mpack intValue]* [unit_cuft doubleValue]);
+        jitem[@"origin"] = origin;
+        jitem[@"port"] = port;
+        jitem[@"available"] = available;
+        
+        //        jitem[@"unit_price"] =@( [item[3] doubleValue]);
+        //        jitem[@"stockUom"] = @([item[4] intValue]);
+        //        jitem[@"count"] = @([item[4] intValue]);
+        //        jitem[@"subtotal_price"] = @([item[4] intValue]* [item[3] doubleValue]);
+        
+        jitem[@"check"]=@(true);
+        
+        
+        [self.modellist addObject:jitem];
+        
+        if(RASingleton.sharedInstance.scan_list == nil)
+            RASingleton.sharedInstance.scan_list = [NSMutableArray new];
+        int idx = [RASingleton.sharedInstance.scan_list indexOfObject:jitem];
+        if(idx>=0)
+        {
+            //如果存在,移动到最前。
+            [RASingleton.sharedInstance.scan_list removeObject:jitem];
+            
+        }
+        if(RASingleton.sharedInstance.scan_list.count>=200)
+           [RASingleton.sharedInstance.scan_list removeLastObject];
+        [RASingleton.sharedInstance.scan_list insertObject:jitem atIndex:0];
+        
+        [ActiveViewController Notify:@"ScanHistoryViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+        
+        
+    }
+    
+    [self.tableView reloadData];
+}
+
+#pragma mark - TableView DataSource
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    
+    NSMutableArray* arr = (NSMutableArray*) self.scan_val;
+    return arr.count;
+}
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+    return 136.0f;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    ScanModelListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ScanModelListCell"];
+    if (!cell) {
+        cell = [[ScanModelListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ScanModelListCell"];
+    }
+
+    NSMutableArray* arr = (NSMutableArray*) self.modellist;
+    
+    [cell setModelJson:arr[indexPath.row]];
+    cell.editQTY.delegate = self;
+    
+    return cell;
+}
+
+//#pragma mark - TableView Delegate
+
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+- (IBAction)onScanNext:(id)sender {
+    [self dismissViewControllerAnimated:true completion:^{
+            if(self.returnValue)
+                self.returnValue(nil);
+        }];
+}
+
+- (IBAction)onAddToCart:(id)sender {
+    
+    [self dismissViewControllerAnimated:true completion:^{
+            if(self.returnValue)
+                self.returnValue(self.modellist);
+        }];
+    
+    
+}
+
+
+
+
+
+#pragma mark textField delegate
+
+- (BOOL)textFieldShouldReturn:(UITextField *)textField {
+    [textField resignFirstResponder];
+    return NO;
+}
+-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
+    
+    
+//    DebugLog(@"text:%@",textField.text);
+    
+    
+  
+    NSCharacterSet *cs;
+    cs = [[NSCharacterSet characterSetWithCharactersInString:NUMBERS]invertedSet];
+    
+    NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs]componentsJoinedByString:@""];
+    
+    BOOL canChange = [string isEqualToString:filtered];
+    
+    
+    
+    
+    return canChange;
+}
+
+
+- (void)textFieldDidBeginEditing:(UITextField *)textField
+{
+   
+    
+//    self.lastedit = textField;
+//    UITableViewCell *cell = (UITableViewCell *) textField.superview.superview;
+//    self.lastedit_from  = [self.editorTable indexPathForCell:cell];
+//    
+//    NSDictionary* item_json =((NSMutableArray*)self.content_data_control[self.lastedit_from.section])[self.lastedit_from.row];
+//    
+//    if ([item_json valueForKey:@"clear"]) {
+//        //开始编辑时清掉旧内容
+//        BOOL clear = [[item_json valueForKey:@"clear"] doubleValue] == [textField.text doubleValue];
+//        
+//        if (clear) {
+//            textField.text = nil;
+//        }
+//    }
+}
+
+- (void)textFieldDidEndEditing:(UITextField *)textField
+{
+    
+ 
+    UITableViewCell *cell = (UITableViewCell *) textField.superview.superview;
+    NSIndexPath *   indexPath = [self.tableView indexPathForCell:cell];
+    int qty = [textField.text intValue];
+    
+    NSMutableDictionary* item= self.modellist[indexPath.row];
+    
+    
+    item[@"count"] = @(qty);
+    item[@"subtotal_price"] = @(qty*[item[@"unit_price"] doubleValue]);
+    
+    self.modellist[indexPath.row] = item;
+    
+//    NSMutableArray* item_arr=arr[indexPath.row] mutableCopy;
+    
+    
+    
+    
+//    NSIndexPath *   indexPath = self.lastedit_from;
+//
+//    NSDictionary* item_json =((NSMutableArray*)self.content_data_control[indexPath.section])[indexPath.row];
+//    if ([item_json objectForKey:@"fill"]) {
+//        NSString *fillText = [item_json objectForKey:@"fill"];
+//
+//        if (fillText && textField.text.length == 0) {
+//            textField.text = fillText;
+//        }
+//    }
+//
+//    [self textfieldSetValue:indexPath value:textField.text];
+//
+//
+}
+@end

+ 26 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanSearchViewController.h

@@ -0,0 +1,26 @@
+//
+//  ScanSearchViewController.h
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/30/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+#import "ActiveViewController.h"
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ScanSearchViewController : ActiveViewController
+@property (weak, nonatomic) IBOutlet UITableView *tableview;
+@property (strong, nonatomic) NSMutableArray* modellist;
+@property (weak, nonatomic) IBOutlet UISearchBar *searchBar;
+@property (strong,nonatomic) NSString* keywords;
+@property (weak, nonatomic) IBOutlet UIView *headerView;
+@property (strong,nonatomic) NSString* load_more_hint;
+
+
+@property long offset;
+//@property bool loadall;
+@end
+
+NS_ASSUME_NONNULL_END

+ 460 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanSearchViewController.m

@@ -0,0 +1,460 @@
+//
+//  ScanSearchViewController.m
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 3/30/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ScanSearchViewController.h"
+#import "ScanListCell.h"
+#import "RASingleton.h"
+#import "RADataProvider.h"
+
+
+#define PAGE_ITEM 20
+
+@interface ScanSearchViewController ()
+
+
+
+//@property (nonatomic,assign) UIInterfaceOrientation toOrientation;///<屏幕将要旋转到的方向
+
+@property (nonatomic,strong) NSOperationQueue *dataOperationQueue;
+
+
+@end
+
+
+@implementation ScanSearchViewController
+
+
+
+- (NSOperationQueue *)dataOperationQueue {
+    if (!_dataOperationQueue) {
+        _dataOperationQueue = [[NSOperationQueue alloc] init];
+        _dataOperationQueue.maxConcurrentOperationCount = 1;
+    }
+    return _dataOperationQueue;
+}
+#ifndef RA_NOTIFICATION
+-(void) reload_container_getdata:(bool)update_data
+{
+    if(self.disable_refresh)
+        return;
+    [super reload_container_getdata:update_data];
+    if(update_data)
+    {
+        self.offset = 0;
+        //  [self.content_data removeAllObjects];
+        [self reload];
+    }
+    else
+    {
+        [self.tableview reloadData];
+    }
+    return;
+    
+    //    if(!self.showDetail)
+    //        return;
+    //    NSArray* a= self.childViewControllers;
+    //
+    //    for (int i=0;i<a.count;i++)
+    //    {
+    //        if([a[i] isKindOfClass:[DetailViewController class]])
+    //        {
+    //            DetailViewController *detailvc=a[i];
+    //            [detailvc reload];
+    //        }
+    //    }
+}
+#endif
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    
+    self.modellist = [NSMutableArray new];
+    // Do any additional setup after loading the view.
+    //添加四个边阴影
+    
+//    self.headerView.layer.shadowColor = [UIColor grayColor].CGColor;
+//    self.headerView.layer.shadowOffset = CGSizeMake(0, 0);
+//    self.headerView.layer.shadowOpacity = 0.5;
+//    self.headerView.layer.shadowRadius = 2.0;
+    
+    
+    //添加两个边阴影
+    self.tableview.layer.masksToBounds = false;
+    self.tableview.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.tableview.bounds].CGPath;
+    self.tableview.layer.shadowColor = [UIColor grayColor].CGColor;
+    self.tableview.layer.shadowOffset = CGSizeMake(0, 0);
+    self.tableview.layer.shadowOpacity = 0.5;
+    self.tableview.layer.shadowRadius = 2.0;
+    
+    
+    
+    
+    //刷新
+    UIRefreshControl *ref = [[UIRefreshControl alloc]init];
+    ref.tag = 201 ;
+    ref.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"];
+    ref.tintColor = [UIColor colorWithRed:0.10 green:0.68 blue:0.94 alpha:0.7];
+    //    ref.hidden = true;
+    [ref addTarget:self action:@selector(manually_refresh) forControlEvents:UIControlEventValueChanged];
+    [self.tableview addSubview:ref];
+    self.tableview.alwaysBounceVertical = YES;
+}
+-(void)manually_refresh
+{
+    UIRefreshControl *reF = (UIRefreshControl *)[self.view viewWithTag:201];
+    if(self.isrefreshing)
+    {
+        [reF endRefreshing];
+        return;
+    }
+    reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Refreshing"];
+    if ([self respondsToSelector:@selector(reload)])
+        [self performSelector:@selector(reload) withObject:nil afterDelay:1];
+    
+}
+
+-(void)viewWillLayoutSubviews
+{
+    //    if(self.showDetail==true)
+    //    {
+    //        UIInterfaceOrientation orientation =[UIApplication sharedApplication].statusBarOrientation;
+    //        int width=175;
+    //        // int height;
+    //        if(orientation == UIDeviceOrientationLandscapeLeft ||orientation == UIDeviceOrientationLandscapeRight)
+    //        {
+    //            width = 370;
+    //            //      height = 400;
+    //        }
+    //        else
+    //        {
+    //            //      height = 300;
+    //            width = 175;
+    //        }
+    //
+    //
+    //        CGRect frame = CGRectMake(0, 64, width, self.view.bounds.size.height-64);
+    //
+    //        self.collectionview.frame=frame;
+    //
+    //
+    //
+    //        CGRect framedetail = CGRectMake(width,64 ,self.view.bounds.size.width-width,self.view.bounds.size.height-64);
+    //        self.detailView.frame = framedetail;
+    //    }
+    
+    
+    self.headerView.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.headerView.bounds].CGPath;
+    
+    self.tableview.layer.shadowPath =[UIBezierPath bezierPathWithRect:self.tableview.bounds].CGPath;
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    
+
+    if( self.modellist.count==0)
+        return 0;
+    return self.modellist.count+1;
+    
+
+}
+- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+    if(indexPath.row==self.modellist.count)
+        return 44;
+    else
+        return 136.0f;
+}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    
+    
+    if(indexPath.row==self.modellist.count)
+    {
+        UITableViewCell *moreCell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"mores"];
+        UILabel *moreDataLabel=[[UILabel alloc] init];
+        
+        moreDataLabel.tag=200;
+        moreDataLabel.text=self.load_more_hint;
+        [moreDataLabel setFont:[UIFont systemFontOfSize:14.0f]];
+        [moreDataLabel setTextAlignment:NSTextAlignmentCenter];
+        moreDataLabel.frame=CGRectMake(0, 10, self.tableview.bounds.size.width, 20);
+        [moreDataLabel setBackgroundColor:[UIColor clearColor]];
+        moreDataLabel.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
+        //        [moreDataLabel addTarget:self action:@selector(changeCell) forControlEvents:UIControlEventValueChanged];
+        
+        [moreCell.contentView addSubview:moreDataLabel];
+        if([self.load_more_hint isEqualToString:@"Load more..."])
+            [self performSelector:@selector(loadMore) withObject:nil afterDelay:1];
+        //        DebugLog(@"更多...");
+        moreCell.backgroundColor = [UIColor whiteColor];
+        return moreCell;
+    }
+    else
+    {
+    ScanListCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ScanListCell"];
+    if (!cell) {
+        cell = [[ScanListCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"ScanListCell"];
+    }
+
+    NSMutableArray* arr = self.modellist;
+    
+    [cell setModelJson:arr[indexPath.row]];
+   
+    
+    return cell;
+    }
+}
+
+-(void) loadMore {
+    __weak typeof(self) weakself = self;
+    NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
+        
+        if (weakself) {
+            __strong typeof(weakself) strongself = weakself;
+            [strongself operation_loadMore];
+        }
+        
+    }];
+    
+    [self.dataOperationQueue addOperation:operation];
+}
+-(void) operation_loadMore
+{
+    if (self.dataOperationQueue.operationCount > 1) {
+        return;
+    }
+    dispatch_async(dispatch_get_main_queue(), ^{
+        
+//        if(self.loadall)
+//        {
+////            if(self.showalert)
+//            {
+////                self.showalert=false;
+//                [RAUtils message_alert:@"All loaded" title:@"Loading items" controller:self] ;
+//            }
+//            return;
+//        }
+//
+//        self.mum.hidden = false;
+//        [self.mum startAnimating];
+//        self.mum.center = self.view.center;
+        
+        self.isrefreshing=true;
+        
+        [RADataProvider request_scansearch:self.offset limit:PAGE_ITEM keywords:self.keywords completionHandler:^(NSMutableDictionary *result) {
+            NSMutableDictionary* category_more=result;
+            
+//            [self.mum stopAnimating];
+            self.isrefreshing=false;
+            if (self.dataOperationQueue.operationCount > 1) {
+                return;
+            }
+            
+//            NSDictionary* more_items=[category_more objectForKey:@"items"];
+            if([[category_more valueForKey:@"result"] intValue]==2)
+            {
+                //  self.category_data = category_data;
+//                NSMutableDictionary* items_json= [[category_more objectForKey:@"items"] mutableCopy];
+                
+                int count =[[category_more valueForKey:@"count"] intValue];
+                
+
+                for(int i=0;i<count;i++)
+                {
+                    
+                    NSMutableDictionary* item = [category_more[[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
+                    [self.modellist addObject:item];
+                    
+                }
+//                long newcount=count;
+//                [items_json setValue: [NSString stringWithFormat:@"%ld",newcount] forKey:@"count"];
+//                [self.category_data setObject:items_json forKey:@"items"];
+                self.offset+=count;
+                
+                    if(count<PAGE_ITEM)
+                    {
+                        
+                        //                    int i =self.btnrefresh.state;
+                        self.load_more_hint=@"All loaded";
+                        //                    self.btnrefresh.titleLabel.text =NSLocalizedString(@"no_more", nil);
+                        //                    [self.btnrefresh setTitle:@"No more" forState:UIControlStateNormal];
+                    }
+                    else
+                    {
+                        self.load_more_hint=@"Load more...";
+                        //                    self.btnrefresh.enabled = true;
+                        //                    self.btnrefresh.titleLabel.text =NSLocalizedString(@"load_more",nil);
+                        //                    [self.btnrefresh setTitle:@"Load more" forState:UIControlStateNormal];
+                    }
+                //            NSDictionary * item_json = [self.category_data objectForKey:@"items"];
+                
+                
+                
+                
+                //        DebugLog(@"%@",self.category_data);
+                
+                [self.tableview reloadData];
+                
+            }
+            else
+            {
+                [RAUtils message_alert:[category_more valueForKey:@"err_msg"] title:@"Search" controller:self] ;
+            }
+            self.isrefreshing=false;
+            
+            
+        }];
+        
+        return;
+    
+    });
+}
+-(void) reload {
+    __weak typeof(self) weakself = self;
+    NSBlockOperation *operation = [NSBlockOperation blockOperationWithBlock:^{
+        
+        if (weakself) {
+            __strong typeof(weakself) strongself = weakself;
+            [strongself operation_reload];
+        }
+        
+    }];
+    
+    [self.dataOperationQueue addOperation:operation];
+}
+
+
+-(void) operation_reload
+{
+    if (self.dataOperationQueue.operationCount > 1) {
+        return;
+    }
+
+    dispatch_async(dispatch_get_main_queue(), ^{
+        if(self.isrefreshing)
+            return;
+//        self.showalert=true;
+        self.isrefreshing=true;
+//        self.loadall = false;
+        UIRefreshControl *reF = (UIRefreshControl *)[self.tableview viewWithTag:201];
+        
+        [reF endRefreshing];
+        
+        reF.attributedTitle = [[NSAttributedString alloc]initWithString:@"Pull to refresh"];
+//        self.label_net_err.hidden=true;
+//        self.collectionview.hidden=true;
+//        self.mum.center = self.view.center;
+//        self.mum.hidden = false;
+//        [self.mum startAnimating];
+//        self.loadmore_matchfull = self.switch_matchfull.isOn;
+        [RADataProvider request_scansearch:0 limit:PAGE_ITEM keywords:self.keywords completionHandler:^(NSMutableDictionary *result) {
+            NSMutableDictionary* category_data=result;
+            
+            
+//            [self.mum stopAnimating];
+            self.isrefreshing=false;
+            if (self.dataOperationQueue.operationCount > 1) {
+                return;
+            }
+            
+//            self.category_data = [category_data mutableCopy];
+//            [self.collectionview reloadData];
+            
+            if([[category_data valueForKey:@"result"] intValue]==2)
+            {
+//                self.collectionview.hidden=false;
+//                NSDictionary * item_json = [category_data objectForKey:@"items"];
+                
+                
+                int c=[[category_data valueForKey:@"count"] intValue];
+                self.offset = c;
+                for (int i=0;i<c;i++)
+                {
+                    NSMutableDictionary* item = [category_data[[NSString stringWithFormat:@"item_%d",i]] mutableCopy];
+                    [self.modellist addObject:item];
+                }
+                
+                
+                
+                    if(c<PAGE_ITEM)
+                    {
+                        
+                        //                    int i =self.btnrefresh.state;
+                        self.load_more_hint=@"All loaded";
+                        //                    self.btnrefresh.titleLabel.text =NSLocalizedString(@"no_more", nil);
+                        //                    [self.btnrefresh setTitle:@"No more" forState:UIControlStateNormal];
+                    }
+                    else
+                    {
+                        self.load_more_hint=@"Load more...";
+                        //                    self.btnrefresh.enabled = true;
+                        //                    self.btnrefresh.titleLabel.text =NSLocalizedString(@"load_more",nil);
+                        //                    [self.btnrefresh setTitle:@"Load more" forState:UIControlStateNormal];
+                    }
+                
+                [self.tableview reloadData];
+                
+//                int total = [[self.category_data valueForKey:@"item_total_count"]intValue];
+//
+//                if(total<2)
+//                {
+//                    self.labelTotal.text = [NSString stringWithFormat:@"Total %d item",total];
+//                    if(total==1)
+//                    {
+//                        NSDictionary * detail_item = [item_json objectForKey:@"item_0"];
+//                        NSString* detail_id=    [detail_item valueForKey:@"product_id"] ;
+//
+//                        [self showDetailat:detail_id category_id:nil name:[detail_item objectForKey:@"fash_name"] index:0];
+//                    }
+//                }
+//                else
+//                    self.labelTotal.text = [NSString stringWithFormat:@"Total %d items",total];
+            }
+            else
+            {
+                [RAUtils message_alert:[category_data valueForKey:@"err_msg"] title:@"Search" controller:self] ;
+            }
+            
+            self.isrefreshing=false;
+            
+            
+        }];
+        
+        return;
+ 
+    });
+}
+
+
+
+    
+    
+    
+    
+
+#pragma mark - searchBar delegate;
+- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
+{
+    
+    
+    self.keywords=searchBar.text;
+    self.offset = 0;
+    //  [self.content_data removeAllObjects];
+    [self reload];
+    
+}
+@end

+ 18 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanServerListViewController.h

@@ -0,0 +1,18 @@
+//
+//  ScanServerListViewController.h
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 4/2/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface ScanServerListViewController : UIViewController
+@property (strong, nonatomic) NSArray* serverlist;
+@property (nonatomic , copy) void (^returnValue)(int index);
+@end
+
+NS_ASSUME_NONNULL_END

+ 71 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanServerListViewController.m

@@ -0,0 +1,71 @@
+//
+//  ScanServerListViewController.m
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 4/2/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import "ScanServerListViewController.h"
+
+@interface ScanServerListViewController ()
+
+@end
+
+@implementation ScanServerListViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+
+- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
+    
+    return self.serverlist.count;
+    
+    
+
+}
+//- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
+//    return 136.0f;
+//}
+
+- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
+{
+    static NSString *MyIdentifier = @"Cell";
+    
+    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];
+    
+    if (cell == nil)
+    {
+        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
+                                      reuseIdentifier:MyIdentifier];
+
+    }
+    cell.textLabel.text = self.serverlist[indexPath.row][@"name"];
+    
+    return cell;
+}
+
+- (void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
+    
+    
+    if(self.returnValue)
+        self.returnValue(indexPath.item);
+    
+    [[self navigationController]popViewControllerAnimated:true];
+    
+//    [self dismissViewControllerAnimated:TRUE completion:nil];
+    
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 240 - 36
RedAnt ERP Mobile/HMLG Scan Order/ServerSettingViewController.m

@@ -17,11 +17,15 @@
 #import "ZipArchive.h"
 #import "AboutViewController.h"
 #import "WebViewController.h"
+#import "MainViewController.h"
+#import "ChangePasswordViewController.h"
+#import "SetupServerViewController.h"
 
 @interface ServerSettingViewController ()<UITextFieldDelegate>
 
 @property (strong, nonatomic) IBOutlet UITextField *nameTextField;
-@property (strong, nonatomic) IBOutlet UITextField *internalTextField;
+//@property (strong, nonatomic) IBOutlet UITextField *internalTextField;
+@property (strong, nonatomic)  NSString *internalText;
 @property (nonatomic,copy) NSString *checkedAddress;
 
 @end
@@ -120,8 +124,9 @@
             else if(ia.length>0)
             sa=ia;
         }
-        self.internalTextField.text = sa;
+        self.internalText= sa;
         self.nameTextField.text = [addressDic objectForKey:@"name"];
+//        RASingleton.sharedInstance.price_index =[addressDic[@"price_type"] intValue];
 //        NSUInteger selectedIndex = [[addressDic objectForKey:@"selectedIndex"] integerValue];
 //        switch (selectedIndex) {
 //            case 0:
@@ -154,7 +159,7 @@
 - (void)doneItemClick:(UIBarButtonItem *)sender {
     self.checkedAddress = nil;
     NSUInteger selectedIndex = 1;
-    self.checkedAddress = self.internalTextField.text;
+    self.checkedAddress = self.internalText;
 //    if (self.internalCheckBtn.selected) {
 //        self.checkedAddress = self.internalTextField.text;
 //        selectedIndex = 1;
@@ -172,7 +177,7 @@
         if (weakself.checkedAddress.length) {
             // 保存信息
             NSString *name = weakself.nameTextField.text;
-            NSString *internalAddr = weakself.internalTextField.text;
+            NSString *internalAddr = weakself.internalText;
 //            NSString *externalAddr = weakself.externalTextField.text;
             NSMutableDictionary *addressDic = [NSMutableDictionary dictionary];
             if (internalAddr.length) {
@@ -201,7 +206,7 @@
 }
 - (IBAction)onUpdateClick:(id)sender {
     
-    if(self.internalTextField.text.length>0)
+    if(self.internalText.length>0)
     {
         AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
         NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
@@ -312,39 +317,135 @@
     }
 }
 - (IBAction)onScanClick:(id)sender {
-    __weak typeof(self) weakself = self;
-//    ScannerViewController *scannerVC = [[UIStoryboard storyboardWithName:@"cam_scan" bundle:nil] instantiateViewControllerWithIdentifier:@"NewScannerViewController"];
-//    scannerVC.returnCode = ^(NSString *code) {
-//        // 扫描成功保存扫描值
+//    __weak typeof(self) weakself = self;
+////    ScannerViewController *scannerVC = [[UIStoryboard storyboardWithName:@"cam_scan" bundle:nil] instantiateViewControllerWithIdentifier:@"NewScannerViewController"];
+////    scannerVC.returnCode = ^(NSString *code) {
+////        // 扫描成功保存扫描值
+////        if (weakself) {
+////            __strong typeof(weakself) strongSelf = weakself;
+////            [strongSelf processScanResult:code];
+////        }
+////    };
+////    [self presentViewController:scannerVC animated:YES completion:nil];
+//
+//    RAQRCodeScannerViewController *scannerVC = [[UIStoryboard storyboardWithName:@"QRCode" bundle:nil] instantiateViewControllerWithIdentifier:@"RAQRCodeScannerViewControllerAuto"];
+//
+////    RAQRCodeScannerViewController *scannerVC = [RAQRCodeScannerViewController viewControllerFromStoryboard];
+//    scannerVC.QRCodeViewControllerDidCompletion = ^(RAQRCodeScannerViewController *qrcodeViewController, NSString *value) {
+//
 //        if (weakself) {
 //            __strong typeof(weakself) strongSelf = weakself;
-//            [strongSelf processScanResult:code];
+//            [strongSelf processScanResult:value];
+//
+//
 //        }
+//
+//        [qrcodeViewController dismissViewControllerAnimated:YES completion:nil];
+//    };
+//
+//    scannerVC.QRCodeViewControllerDidCanceled = ^(RAQRCodeScannerViewController *qrcodeViewController) {
+//
+//        [qrcodeViewController dismissViewControllerAnimated:YES completion:nil];
 //    };
+//
 //    [self presentViewController:scannerVC animated:YES completion:nil];
     
-    RAQRCodeScannerViewController *scannerVC = [[UIStoryboard storyboardWithName:@"QRCode" bundle:nil] instantiateViewControllerWithIdentifier:@"RAQRCodeScannerViewControllerAuto"];
-    
-//    RAQRCodeScannerViewController *scannerVC = [RAQRCodeScannerViewController viewControllerFromStoryboard];
-    scannerVC.QRCodeViewControllerDidCompletion = ^(RAQRCodeScannerViewController *qrcodeViewController, NSString *value) {
-        
-        if (weakself) {
-            __strong typeof(weakself) strongSelf = weakself;
-            [strongSelf processScanResult:value];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.bLogin)
+    {
+        UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Set Server" message:@"Are you sure you to sign out and setup the server?" preferredStyle:UIAlertControllerStyleAlert];
+
+        UIAlertAction *action_1 = [UIAlertAction actionWithTitle:@"Sign out and set" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
+            //open exist
+            AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
             
             
-        }
+            
+            appDelegate.cart_count = 0;//[[jsobj  :@"cart_count"] intValue];
+            appDelegate.wish_count =0;//[[jsobj valueForKey:@"wish_count"] intValue];
+            appDelegate.port_count =0;//[[jsobj valueForKey:@"portfolio_count"] intValue];
+            
+            [appDelegate update_count_mark];
+            
+            
+            appDelegate.can_show_price =false;
+            appDelegate.can_see_price =false;
+            appDelegate.can_create_portfolio =false;
+            appDelegate.can_create_order =false;
+            
+            
+            appDelegate.can_cancel_order =false;
+            appDelegate.can_set_cart_price =false;
+            appDelegate.can_delete_order =false;
+            appDelegate.can_submit_order =false;
+            appDelegate.can_set_tearsheet_price =false;
+            appDelegate.can_update_contact_info = false;
+            
+            appDelegate.save_order_logout = false;
+            appDelegate.submit_order_logout = false;
+            appDelegate.alert_sold_in_quantities = false;
+            
+            appDelegate.ipad_perm =nil ;
+            appDelegate.user_type = USER_ROLE_UNKNOWN;
+            appDelegate.OrderFilter= nil;
+            [appDelegate SetSo:nil];
+            [appDelegate set_main_button_panel];
+#ifdef RA_NOTIFICATION
+            [ActiveViewController Notify:@"SearchViewController" Message:RA_NOTIFICATION_CLEAR_DATA];
+#endif
+            [appDelegate Logout];
+            
+            SetupServerViewController * servervc =[[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"SetupServerViewController"];
+            servervc.showCancel = true;
+            servervc.returnValue = ^{
+                NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"];
+                if (addressDic) {
+                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                    MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
+                    main_vc.labelServer.text = [addressDic objectForKey:@"name"];
+                    self.nameTextField.text = [addressDic objectForKey:@"name"];
+                    self.internalText = [addressDic objectForKey:@"serverAddress"];
+
+                }
+            };
+            [self.navigationController pushViewController:servervc animated:true];
+        }];
+         UIAlertAction *action_2 = [UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+             //create new;
+
         
-        [qrcodeViewController dismissViewControllerAnimated:YES completion:nil];
-    };
-    
-    scannerVC.QRCodeViewControllerDidCanceled = ^(RAQRCodeScannerViewController *qrcodeViewController) {
+
+         }];
         
-        [qrcodeViewController dismissViewControllerAnimated:YES completion:nil];
-    };
-    
-    [self presentViewController:scannerVC animated:YES completion:nil];
-    
+         [alertController addAction:action_1];
+         [alertController addAction:action_2];
+
+
+
+         [self presentViewController:alertController animated:YES completion:nil];
+        
+        
+       
+    }
+    else
+    {
+        SetupServerViewController * servervc =[[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"SetupServerViewController"];
+        servervc.showCancel = true;
+        servervc.returnValue = ^{
+            NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"];
+            if (addressDic) {
+                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
+                main_vc.labelServer.text = [addressDic objectForKey:@"name"];
+                self.nameTextField.text = [addressDic objectForKey:@"name"];
+                self.internalText = [addressDic objectForKey:@"serverAddress"];
+
+            }
+        };
+        [self.navigationController pushViewController:servervc animated:true];
+        
+    }
+
 }
 
 - (void)scanItemClick:(UIBarButtonItem *)sender {
@@ -414,7 +515,7 @@
             //                    NSString *externalAddr = [dataArr objectAtIndex:2];
             
             self.nameTextField.text = name;
-            self.internalTextField.text = internalAddr;
+            self.internalText = internalAddr;
             //                    strongself.externalTextField.text = externalAddr;
         }
         else if (dataArr.count == 2) {
@@ -423,7 +524,7 @@
             //                    NSString *externalAddr = [dataArr objectAtIndex:2];
             
             self.nameTextField.text = name;
-            self.internalTextField.text = internalAddr;
+            self.internalText = internalAddr;
             //                    strongself.externalTextField.text = externalAddr;
         }
         else {
@@ -440,7 +541,7 @@
         
         self.checkedAddress = nil;
         NSUInteger selectedIndex = 1;
-        self.checkedAddress = self.internalTextField.text;
+        self.checkedAddress = self.internalText;
    
 //        if (self.returnValue) {
 //            self.returnValue(self.nameTextField.text, self.checkedAddress);
@@ -450,7 +551,7 @@
             if (self.checkedAddress.length) {
                 // 保存信息
                 NSString *name = self.nameTextField.text;
-                NSString *internalAddr = self.internalTextField.text;
+                NSString *internalAddr = self.internalText;
     //            NSString *externalAddr = weakself.externalTextField.text;
                 NSMutableDictionary *addressDic = [NSMutableDictionary dictionary];
                 if (internalAddr.length) {
@@ -476,11 +577,11 @@
     
     self.checkedAddress = nil;
     NSUInteger selectedIndex = 1;
-    self.checkedAddress = self.internalTextField.text;
+    self.checkedAddress = self.internalText;
  
             // 保存信息
             NSString *name = self.nameTextField.text;
-            NSString *internalAddr = self.internalTextField.text;
+            NSString *internalAddr = self.internalText;
 //            NSString *externalAddr = weakself.externalTextField.text;
             NSMutableDictionary *addressDic = [NSMutableDictionary dictionary];
             if (internalAddr.length) {
@@ -500,11 +601,11 @@
     
     self.checkedAddress = nil;
     NSUInteger selectedIndex = 1;
-    self.checkedAddress = self.internalTextField.text;
+    self.checkedAddress = self.internalText;
  
             // 保存信息
             NSString *name = self.nameTextField.text;
-            NSString *internalAddr = self.internalTextField.text;
+            NSString *internalAddr = self.internalText;
 //            NSString *externalAddr = weakself.externalTextField.text;
             NSMutableDictionary *addressDic = [NSMutableDictionary dictionary];
             if (internalAddr.length) {
@@ -553,4 +654,107 @@
         configure.retryTimeIntetval = retryTimeInterval;
     }];
 }
+
+- (IBAction)onChangePasswordClick:(id)sender {
+    UIApplication * app = [UIApplication sharedApplication];
+    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+    if(appDelegate.user.length==0)
+    {
+        [RAUtils message_alert:@"You must sign in first." title:@"Change Password" controller:self];
+        return;
+    }
+    
+    
+    ChangePasswordViewController * vc =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"ChangePasswordViewController"];
+    //    loginvc.delegate = self;
+    //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+    
+    
+    UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:vc] ;
+    
+
+    
+    
+    
+    //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+    
+    navi.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+    [self presentViewController:navi animated:YES completion:^{
+        
+        //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
+        
+        DebugLog(@"about present.........");
+        
+        //   self.btop = false;
+        //  <#code#>
+    }];
+}
+
+- (IBAction)onDeleteAccountClick:(id)sender {
+    
+    UIApplication * app = [UIApplication sharedApplication];
+    AppDelegate *appDelegate = (AppDelegate *)[app delegate];
+    if(appDelegate.user.length==0)
+    {
+        [RAUtils message_alert:@"You must sign in first." title:@"Delete Account" controller:self];
+        return;
+    }
+    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Delete Account" message:@"Are you sure you want to permanently delete your account?" preferredStyle:UIAlertControllerStyleAlert];
+        //增加确定按钮
+        [alertController addAction:[UIAlertAction actionWithTitle:@"Delete" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action){
+            //获取第1个输入框;
+            UITextField *titleTextField = alertController.textFields.firstObject;
+
+            if([appDelegate.password isEqualToString:titleTextField.text])
+            {
+                NSLog(@"%@", @"run process");
+                __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Delete Account" completion:^{
+                    [RANetwork request_delete_account:^(NSMutableDictionary *result) {
+                        NSMutableDictionary* return_json =result;
+                        
+                        [waitalert dismissViewControllerAnimated:YES completion:^{
+                            if([[return_json valueForKey:@"result"] intValue]==2)
+                            {
+                                //                    [self hideMenu];
+                                //                    [self switchToHome:nil];
+                                [appDelegate Logout];
+                                MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
+                                [main_vc checklogin :false];
+
+                                [RAUtils message_alert:@"Account deleted." title:nil controller:self];
+                            }
+                            else
+                            {
+                                [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Delete Account" controller:self] ;
+                            }
+                        }];
+                                        
+                                        
+                                        
+                                        
+                                        
+                                        
+                                        
+                                    
+                    }];
+                }];
+                
+                
+            }
+            else
+            {
+                [RAUtils message_alert:@"Wrong password." title:nil controller:self];
+            }
+            
+        }]];
+        //增加取消按钮;
+        [alertController addAction:[UIAlertAction actionWithTitle:@"Cancel" style:UIAlertActionStyleDefault handler:nil]];
+        //定义第一个输入框;
+        [alertController addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
+            textField.placeholder = @"Login Password";
+            textField.textContentType = UITextContentTypePassword;
+        }];
+        [self presentViewController:alertController animated:true completion:nil];
+}
+
 @end

+ 23 - 0
RedAnt ERP Mobile/HMLG Scan Order/SetupServerViewController.h

@@ -0,0 +1,23 @@
+//
+//  SetupServerViewController.h
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 4/1/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SetupServerViewController : UIViewController
+@property (weak, nonatomic) IBOutlet UIButton *btnSelectServer;
+@property (weak, nonatomic) IBOutlet UITextField *editPassword;
+@property (strong, nonatomic) NSArray* serverlist;
+@property bool showCancel;
+@property (weak, nonatomic) IBOutlet UIButton *btnCancel;
+@property (strong, nonatomic) NSDictionary* server;
+@property (nonatomic , copy) void (^returnValue)(void);
+@end
+
+NS_ASSUME_NONNULL_END

+ 270 - 0
RedAnt ERP Mobile/HMLG Scan Order/SetupServerViewController.m

@@ -0,0 +1,270 @@
+//
+//  SetupServerViewController.m
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 4/1/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import "SetupServerViewController.h"
+#import "RADataProvider.h"
+#import "ScanServerListViewController.h"
+#import "ZipArchive.h"
+@interface SetupServerViewController ()
+
+@end
+
+@implementation SetupServerViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+    if(self.showCancel)
+        self.btnCancel.hidden = false;
+    else
+        self.btnCancel.hidden = true;
+    [self loadServerList];
+}
+
+- (IBAction)onCancelClick:(id)sender {
+    [self.navigationController popViewControllerAnimated:true];
+}
+
+- (IBAction)onSaveClick:(id)sender {
+    
+    
+    if(self.editPassword.text.length==0)
+    {
+        [RAUtils message_alert:@"Password can't be empty" title:@"verify Server" controller:self];
+        return;
+    }
+    
+    __block UIAlertController * waitalert =[RAUtils waiting_alert:self title:@"Verify" completion:nil];
+    [RADataProvider request_validate_scan_server:self.server[@"url"] name:self.server[@"name"] password:self.editPassword.text completionHandler:^(NSMutableDictionary *result) {
+        
+        
+        NSMutableDictionary* return_json = result;
+        
+        [waitalert dismissViewControllerAnimated:YES completion:^{
+            if([[return_json valueForKey:@"result"] intValue]==2)
+            {
+
+                
+                NSUInteger selectedIndex = 1;
+             
+                        // 保存信息
+                        NSString *name = self.server[@"name"];
+                        NSString *internalAddr = self.server[@"url"];
+              int price_index = [self.server[@"price_type"] intValue];
+            //            NSString *externalAddr = weakself.externalTextField.text;
+                        NSMutableDictionary *addressDic = [NSMutableDictionary dictionary];
+                        if (internalAddr.length) {
+                            [addressDic setObject:internalAddr forKey:@"serverAddress"];
+                        }
+            //            if (externalAddr.length) {
+            //                [addressDic setObject:externalAddr forKey:@"externalAddress"];
+            //            }
+                        if (name.length) {
+                            [addressDic setObject:name forKey:@"name"];
+                        }
+                [addressDic setObject:@(price_index) forKey:@"price_index"];
+                        [addressDic setObject:@(selectedIndex) forKey:@"selectedIndex"];
+                NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+                [userDefaults setValue:addressDic forKey:@"ScanAddress"];
+                [userDefaults synchronize];
+                
+                        
+                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+                appDelegate.address = [addressDic objectForKey:@"serverAddress"];
+                [self updateTemplate];
+                if(self.returnValue)
+                    self.returnValue();
+                [self.navigationController popViewControllerAnimated:true];
+
+            }
+            else
+            {
+                [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Load Server List" controller:self] ;
+            }
+        }];
+           
+    }];
+    
+    
+    
+ 
+    
+}
+
+- (void)setUserDefaultsValue:(id)value forKey:(NSString *)key {
+    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+    [userDefaults setValue:value forKey:key];
+    [userDefaults synchronize];
+}
+-(void) updateTemplate
+{
+    
+//    if(self.internalTextField.text.length>0)
+    {
+        AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+        NSString *documents = [paths objectAtIndex:0];
+        
+//        NSString* file_name=[appDelegate.downloadurl lastPathComponent];
+        
+        dispatch_async(dispatch_get_global_queue(0, 0), ^{
+            
+            NSData*  download_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:appDelegate.downloadurl]];
+            dispatch_async(dispatch_get_main_queue(), ^{
+                
+                
+                
+                if(download_data!=nil)
+                {
+                    NSString* file_name=[appDelegate.downloadurl lastPathComponent];
+                    NSString* path = [documents stringByAppendingPathComponent:file_name];
+                    [RAUtils saveData:download_data toPath:path];
+                    
+                    ZipArchive* zip = [[ZipArchive alloc] init];
+                    NSString* unZipTo=[documents stringByAppendingPathComponent:@"download"];
+//                    NSFileManager* fileManager=[NSFileManager defaultManager];
+//                    [fileManager removeItemAtPath:unZipTo error:nil];
+//                    NSString *unZipTo = [temp stringByAppendingPathComponent:unziplocation];
+                    //
+                    //    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+                    //    NSString *documentPath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
+                    //NSString* zipFile = [documentPath stringByAppendingString:@"/images.zip"] ;
+                    // NSString* unZipTo = img_cache;//[documentPath stringByAppendingString:@"/images"] ;
+                    
+                    DebugLog(@"path: %@",unZipTo);
+                    if( [zip UnzipOpenFile:path Password:nil] ){
+                        BOOL result = [zip UnzipFileTo:unZipTo overWrite:YES];
+                        if( NO==result )
+                        {
+                            //            int aaa=0;
+                            //解压失败
+                          
+                            [zip UnzipCloseFile];
+                            //文件损坏,删除文件重试
+                            
+                            
+                            NSFileManager* fileManager=[NSFileManager defaultManager];
+                            //debug
+                //            BOOL blDele= [fileManager removeItemAtPath:zipFile error:nil];
+                            [fileManager removeItemAtPath:path error:nil];
+                            [fileManager removeItemAtPath:unZipTo error:nil];
+                            
+                            [RAUtils message_alert:@"Can not unzip template file, please try download again." title:@"Warrning" controller:self];
+                            
+                            
+                            
+                            
+                        }
+                        else
+                        {
+                            [zip UnzipCloseFile];
+                            
+                            
+                            NSFileManager *fileManager = [NSFileManager defaultManager];
+                            [fileManager removeItemAtPath:path error:nil];
+                            [RAUtils message_alert:@"Update templete file successful." title:@"Message" controller:self];
+                            
+
+                            NSMutableDictionary *templateDic = [NSMutableDictionary dictionary];
+                            NSString* datetime= [RAUtils current_date_time];
+                            templateDic[@"updatetime"]= datetime;
+                            [self setUserDefaultsValue:templateDic forKey:@"ScanTemplate"];
+//                            [self loadTemplate];
+                            
+                            
+                        }
+                        //[zip UnzipCloseFile];
+                    }
+                    else
+                    {
+                        //打开文件失败,通常是文件路径有问题或密码错误。
+                        [RAUtils message_alert:@"Can not unzip template file, please contact the Administrator." title:@"Warrning" controller:self];
+                        
+                //        NSFileManager *fileManager = [NSFileManager defaultManager];
+                //        [fileManager removeItemAtPath:zipFile error:nil];
+                    }
+                    
+                    
+//                    [iSalesDB cache_img:downloadimg_data filename:file_name saveTo:img_url];
+//
+//                    UIImage * img =[UIImage imageWithData:downloadimg_data];
+//                    cell.imageView.image=img;
+                }
+                else
+                    [RAUtils message_alert:@"Can not update template file, you can update manually in the setting." title:@"Warrning" controller:self];
+//                    cell.imageView.image=[UIImage imageNamed:@"notfound_s"];
+                
+            });
+            
+        });
+        
+        
+//        NSData* downloadimg_data = [NSData dataWithContentsOfURL:[NSURL URLWithString:appDelegate.downloadurl]];
+//        [RADataProvider downloadFileOffset:0 Param:nil from:appDelegate.downloadurl method:@"post" toPath:[documents stringByAppendingPathComponent:file_name] progressHandler:nil completionHandler:^(NSMutableDictionary *result) {
+//            int i=0;    ;
+//        }];
+    }
+
+}
+- (IBAction)onSelectServer:(id)sender {
+    
+    ScanServerListViewController * servervc =[[UIStoryboard storyboardWithName:@"SO" bundle:nil] instantiateViewControllerWithIdentifier:@"ScanServerListViewController"];
+    servervc.serverlist = self.serverlist;
+    servervc.returnValue = ^(int index) {
+        self.server = self.serverlist[index];
+        [self.btnSelectServer setTitle:self.server[@"name"] forState:UIControlStateNormal];
+    };
+    [self.navigationController pushViewController:servervc animated:true];
+    
+    
+}
+- (IBAction)onreloadList:(id)sender {
+    [self loadServerList];
+}
+
+-(void) loadServerList
+{
+    __block UIAlertController * waitalert =[RAUtils waiting_alert:self title:@"Loading Server List" completion:^{
+        [RADataProvider request_scan_server:^(NSMutableDictionary *result) {
+            
+            NSMutableDictionary* return_json = result;
+            
+            [waitalert dismissViewControllerAnimated:YES completion:^{
+                if([[return_json valueForKey:@"result"] intValue]==2)
+                {
+
+                    
+                    self.serverlist = return_json[@"hostList"];
+                        
+                    if(self.serverlist.count>0)
+                    {
+                        
+                    }
+
+                }
+                else
+                {
+                    [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Load Server List" controller:self] ;
+                }
+            }];
+               
+        }];
+    }];
+  
+}
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 21 - 0
RedAnt ERP Mobile/HMLG Scan Order/SignUpViewController.h

@@ -0,0 +1,21 @@
+//
+//  SignUpViewController.h
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 4/7/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import <UIKit/UIKit.h>
+
+NS_ASSUME_NONNULL_BEGIN
+
+@interface SignUpViewController : UIViewController
+@property (weak, nonatomic) IBOutlet UITextField *editUser;
+@property (weak, nonatomic) IBOutlet UITextField *editEmail;
+@property (weak, nonatomic) IBOutlet UITextField *editpwd;
+@property (weak, nonatomic) IBOutlet UITextField *editcpwd;
+
+@end
+
+NS_ASSUME_NONNULL_END

+ 84 - 0
RedAnt ERP Mobile/HMLG Scan Order/SignUpViewController.m

@@ -0,0 +1,84 @@
+//
+//  SignUpViewController.m
+//  HMLG Scan Order
+//
+//  Created by Rui Zhang on 4/7/22.
+//  Copyright © 2022 United Software Applications, Inc. All rights reserved.
+//
+
+#import "SignUpViewController.h"
+#import "RAUtils.h"
+#import "RADataProvider.h"
+@interface SignUpViewController ()
+
+@end
+
+@implementation SignUpViewController
+
+- (void)viewDidLoad {
+    [super viewDidLoad];
+    // Do any additional setup after loading the view.
+}
+- (IBAction)onSignUpClick:(id)sender {
+    
+    NSString* user = self.editUser.text;
+    NSString* email = self.editEmail.text;
+    NSString* pwd = self.editpwd.text;
+    NSString* cpwd = self.editcpwd.text;
+    
+    if(![RAUtils validateEmail:email])
+    {
+        [RAUtils message_alert:@"Email invalidate" title:@"Warrning" controller:self];
+        return;
+    }
+    if(![RAUtils checkPassword:pwd])
+    {
+        [RAUtils message_alert:@"Password must be 8-16 characters and contain numbers and letters." title:@"Warrning" controller:self];
+        return;
+    }
+    if(![pwd isEqualToString:cpwd])
+    {
+        [RAUtils message_alert:@"Password does not equal" title:@"Warrning" controller:self];
+        return;
+    }
+    __block UIAlertController * waitalert =[RAUtils waiting_alert:self title:@"Sign Up" completion:nil];
+    
+    dispatch_async(dispatch_get_main_queue(), ^{
+        [RADataProvider request_sign_up:user email:email password:pwd completionHandler:^(NSMutableDictionary *result) {
+            [waitalert dismissViewControllerAnimated:true completion:^{
+                NSMutableDictionary* return_json = result;
+                if([[return_json valueForKey:@"result"] intValue]==2)
+                {
+
+                    
+                    [RAUtils message_alert:@"Sign Up Successful" title:@"Sign Up" controller:self action_handler:^(UIAlertAction * _Nonnull action) {
+                        [self dismissViewControllerAnimated:true completion:nil];
+                    } completion:nil];
+
+                }
+                else
+                {
+                    [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Sign Up" controller:self] ;
+                }
+
+            }];
+        }];
+    });
+    
+
+}
+- (IBAction)onCloseClick:(id)sender {
+    [self dismissViewControllerAnimated:true completion:nil];
+}
+
+/*
+#pragma mark - Navigation
+
+// In a storyboard-based application, you will often want to do a little preparation before navigation
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
+    // Get the new view controller using [segue destinationViewController].
+    // Pass the selected object to the new view controller.
+}
+*/
+
+@end

+ 228 - 212
RedAnt ERP Mobile/HMLG Scan Order/config.h

@@ -15,7 +15,7 @@
 #define RA_NOTIFICATION
 
 # ifdef DEBUG
-//#define test_server
+#define test_server
 # endif
 
 #define exception_switch 1
@@ -56,7 +56,7 @@
 #define LOCAL_URL_CUSTOMER_INFO_EDITOR @"customer_info_template"
 #define LOCAL_URL_CUSTOMER_INFO_EDIT @"customer_info_template_edit"
 
-#define URL_SCAN_UPLOAD @"offlineorder_upload.php"
+
 #define URL_SCAN_DOWNLOAD @"download/offlineorder/offlineOrderUsers.zip"
 
 
@@ -66,275 +66,291 @@
 
 
 
+#define BASE_URL @"http://192.168.0.133:8088/wm_postgresql/"
 
 //------------------- chen server-----------------------
-#define  URL_BACK_ORDER_PREVIEW  @"http://12.196.120.217/isales/cartDeliveryBackOrderReview.htm"
-#define  URL_MOVE_TO_BACK_ORDER @"http://12.196.120.217/isales/moveToBackOrder.htm"
-#define URL_PRIVACY @"https://uwa.united-us.net/site/isales_uwa/privacyPolicy.htm"
-
-#define  URL_UPDATE_AUTH  @"http://12.196.120.217/isales/login.htm"
-#define  URL_LOGOUT  @"http://12.196.120.217/isales/loginOut.htm"
-#define  URL_RETRIEVE_PASS  @"http://12.196.120.217/isales/forgotPassword.htm"
-
-#define  URL_REQUEST_CATMENU  @"http://12.196.120.217/isales/menu.htm"
-#define  URL_LOAD_HOME  @"http://12.196.120.217/isales/homePage.htm"
-#define  URL_CATEGORY @"http://12.196.120.217/isales/distinctCategory.htm"
-#define  URL_SEARCH  @"http://12.196.120.217/isales/search.htm"
-#define  URL_ITEM_SEARCH  @"http://12.196.120.217/isales/itemSearch.htm"
-#define  URL_CATEGORY_LOADMORE  @"http://12.196.120.217/isales/categoryMore.htm"
-#define  URL_CUSTOMER_ADV_SEARCH @"http://12.196.120.217/isales/getContactAdvance.htm"
-
-
-#define  URL_ORDER_LIST  @"http://12.196.120.217/isales/orderList.htm"
-#define  URL_ORDER_DETAIL  @"http://12.196.120.217/isales/orderDetail.htm"
-#define URL_COMMIT_ORDER @"http://12.196.120.217/isales/createOrder.htm"
-#define URL_COPY_ORDER @"http://12.196.120.217/isales/copyOrder.htm"
-#define URL_SIGN_ORDER @"http://12.196.120.217/isales/updateOrderSign.htm"
-#define URL_SAVE_ORDER @"http://12.196.120.217/isales/saveOrder.htm"
-#define URL_UPDATE_ORDERCUSTOMER @"http://12.196.120.217/isales/updateOrderCustomerInfo.htm"
-#define  URL_NEW_ORDER  @"http://12.196.120.217/isales/createNewOrder.htm"
-#define  URL_OPEN_ORDER  @"http://12.196.120.217/isales/openOrder.htm"
-#define  URL_RELEASE_ORDER  @"http://12.196.120.217/isales/closeOrder.htm"
-#define  URL_DELETE_ORDER  @"http://12.196.120.217/isales/deleteOrder.htm"
-#define  URL_CANCEL_ORDER  @"http://12.196.120.217/isales/cancelOrder.htm"
-
-
-#define  URL_CART_SET_PRICE  @"http://12.196.120.217/isales/setPrice.htm"
-#define  URL_CART_ITEM_NOTES  @"http://12.196.120.217/isales/setItemNotes.htm"
-#define  URL_CART_GENERAL_NOTES  @"http://12.196.120.217/isales/updateGeneralNote.htm"
-
-#define  URL_CART_INCRESEMENT  @"http://12.196.120.217/isales/increment.htm"
-#define  URL_CART  @"http://12.196.120.217/isales/cartDtail.htm"
-#define  URL_CARTDELIVERY  @"http://12.196.120.217/isales/cartDelivery.htm"
-#define  URL_ADD_TO_CART  @"http://12.196.120.217/isales/addToCart.htm"
-#define  URL_CART_REMOVE  @"http://12.196.120.217/isales/deleteToCart.htm"
-#define  URL_CART_CHECK  @"http://12.196.120.217/isales/checkCartItem.htm"
-#define  URL_CART2WISH  @"http://12.196.120.217/isales/cartRemoveToWishlist.htm"
-#define  URL_WISH2CART  @"http://12.196.120.217/isales/wishlistRemoveToCart.htm"
-
-
-
-
-#define  URL_CATEGORYADDALL  @"http://12.196.120.217/isales/categoryAddAllTo.htm"
-#define  URL_SEARCHADDALL  @"http://12.196.120.217/isales/searchAddAllTo.htm"
-#define  URL_ITEMSEARCHADDALL @"http://12.196.120.217/isales/itemSearchAddAllTo.htm"
-
-
-#define  URL_ITEM_DETAIL  @"http://12.196.120.217/isales/modelDetail.htm"
-
-#define  URL_ADD_TO_WATCHLIST  @"http://12.196.120.217/isales/addToWishList.htm"
-#define  URL_WATCHLIST  @"http://12.196.120.217/isales/wishList.htm"
-#define  URL_WATCHLIST_REMOVE  @"http://12.196.120.217/isales/deleteToWishList.htm"
-
-
-
-#define  URL_ADD_TO_PORTFOLIO @"http://12.196.120.217/isales/addToPortfolio.htm"
-#define  URL_PORTFOLIO_REMOVE  @"http://12.196.120.217/isales/deleteToPortfolio.htm"
-#define  URL_PORTFOLIOLIST_REMOVE  @"http://12.196.120.217/isales/deleteTearSheetPdf.htm"
-#define  URL_PORTFOLIO  @"http://12.196.120.217/isales/portfolios.htm"
-#define  URL_PORTFOLIO_SET_PRICE  @"http://12.196.120.217/isales/setTearSheetPrice.htm"
-#define  URL_DM_PARAMS @"http://12.196.120.217/isales/selectTearSheetParam.htm"
-#define  URL_REQUEST_DM @"http://12.196.120.217/isales/getTearSheetPdf.htm"
-#define  URL_SAVE_DM_DIRECT @"http://12.196.120.217/isales/getTearSheetPdf.htm"
-#define  URL_SAVE_DM @"http://12.196.120.217/isales/saveTearSheetPdf.htm"
-#define  URL_DM_LIST @"http://12.196.120.217/isales/tearSheetPdfList.htm"
-//#define  URL_DM_SET_QTY @"http://12.196.120.217/isales/setTearSheetAvailableQty.htm"
-#define  URL_REQUEST_MODEL_QTY @"http://12.196.120.217/isales/getTearSheetAvailableQty.htm"
-
-#define  URL_CONTACT_LIST  @"http://12.196.120.217/isales/getAllContact.htm"
-#define  URL_SHIPTO_LIST  @"http://12.196.120.217/isales/getShipToContact.htm"
-
-#define  URL_ADDRESS_EDOTOR  @"http://12.196.120.217/isales/getAddAddress.htm"
-#define  URL_ADDRESS_SAVE  @"http://12.196.120.217/isales/saveAddress.htm"
-
 
-#define  URL_CREDITCARD_EDOTOR  @"http://12.196.120.217/isales/creditCard.htm"
-#define  URL_CREDITCARD_SAVE  @"http://12.196.120.217/isales/saveAddress.htm"
 
+#else
+#define BASE_URL @"https://erp.homelegance.com/"
+//
+//
+////------------------- NPD server-----------------------
+//#define  URL_DELETE_ACCOUNT  @""
+//#define  URL_UPDATE_AUTH  @"https://central.united-us.com/usai_demo/shopping/isales/login.htm"
+//#define  URL_LOGOUT  @"https://central.united-us.com/usai_demo/shopping/isales/loginOut.htm"
+//#define  URL_RETRIEVE_PASS  @"https://central.united-us.com/usai_demo/shopping/isales/forgotPassword.htm"
+//
+//#define  URL_REQUEST_CATMENU  @"https://central.united-us.com/usai_demo/shopping/isales/menu.htm"
+//#define  URL_LOAD_HOME  @"https://central.united-us.com/usai_demo/shopping/isales/homePage.htm"
+//#define  URL_CATEGORY @"https://central.united-us.com/usai_demo/shopping/isales/distinctCategory.htm"
+//#define  URL_SEARCH  @"https://central.united-us.com/usai_demo/shopping/isales/search.htm"
+//#define  URL_ITEM_SEARCH  @"https://central.united-us.com/usai_demo/shopping/isales/itemSearch.htm"
+//#define  URL_CATEGORY_LOADMORE  @"https://central.united-us.com/usai_demo/shopping/isales/categoryMore.htm"
+//
+//
+//#define  URL_ORDER_LIST  @"https://central.united-us.com/usai_demo/shopping/isales/orderList.htm"
+//#define  URL_ORDER_DETAIL  @"https://central.united-us.com/usai_demo/shopping/isales/orderDetail.htm"
+//#define URL_COMMIT_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/createOrder.htm"
+//#define URL_SAVE_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/saveOrder.htm"
+//#define URL_UPDATE_ORDERCUSTOMER @"https://central.united-us.com/usai_demo/shopping/isales/updateOrderCustomerInfo.htm"
+//#define  URL_NEW_ORDER  @"https://central.united-us.com/usai_demo/shopping/isales/createNewOrder.htm"
+//#define  URL_OPEN_ORDER  @"https://central.united-us.com/usai_demo/shopping/isales/openOrder.htm"
+//#define  URL_RELEASE_ORDER  @"https://central.united-us.com/usai_demo/shopping/isales/closeOrder.htm"
+//#define  URL_DELETE_ORDER  @"https://central.united-us.com/usai_demo/shopping/isales/deleteOrder.htm"
+//#define  URL_CANCEL_ORDER  @"https://central.united-us.com/usai_demo/shopping/isales/cancelOrder.htm"
+//
+//
+//#define  URL_CART_SET_PRICE  @"https://central.united-us.com/usai_demo/shopping/isales/setPrice.htm"
+//#define  URL_CART_INCRESEMENT  @"https://central.united-us.com/usai_demo/shopping/isales/increment.htm"
+//#define  URL_CART  @"https://central.united-us.com/usai_demo/shopping/isales/cartDtail.htm"
+//#define  URL_CARTDELIVERY  @"https://central.united-us.com/usai_demo/shopping/isales/cartDelivery.htm"
+//#define  URL_ADD_TO_CART  @"https://central.united-us.com/usai_demo/shopping/isales/addToCart.htm"
+//#define  URL_CART_REMOVE  @"https://central.united-us.com/usai_demo/shopping/isales/deleteToCart.htm"
+//#define  URL_CART_CHECK  @"https://central.united-us.com/usai_demo/shopping/isales/checkCartItem.htm"
+//
+//#define  URL_CART2WISH  @"https://central.united-us.com/usai_demo/shopping/isales/cartRemoveToWishlist.htm"
+//#define  URL_WISH2CART  @"https://central.united-us.com/usai_demo/shopping/isales/wishlistRemoveToCart.htm"
+//
+//#define  URL_ITEM_DETAIL  @"https://central.united-us.com/usai_demo/shopping/isales/modelDetail.htm"
+//
+//#define  URL_ADD_TO_WATCHLIST  @"https://central.united-us.com/usai_demo/shopping/isales/addToWishList.htm"
+//#define  URL_WATCHLIST  @"https://central.united-us.com/usai_demo/shopping/isales/wishList.htm"
+//#define  URL_WATCHLIST_REMOVE  @"https://central.united-us.com/usai_demo/shopping/isales/deleteToWishList.htm"
+//
+//
+//
+//#define  URL_ADD_TO_PORTFOLIO @"https://central.united-us.com/usai_demo/shopping/isales/addToPortfolio.htm"
+//#define  URL_PORTFOLIO_REMOVE  @"https://central.united-us.com/usai_demo/shopping/isales/deleteToPortfolio.htm"
+//#define  URL_PORTFOLIO  @"https://central.united-us.com/usai_demo/shopping/isales/portfolios.htm"
+//#define  URL_PORTFOLIO_SET_PRICE  @"https://central.united-us.com/usai_demo/shopping/isales/setTearSheetPrice.htm"
+//#define  URL_DM_PARAMS @"https://central.united-us.com/usai_demo/shopping/isales/selectTearSheetParam.htm"
+//#define  URL_REQUEST_DM @"https://central.united-us.com/usai_demo/shopping/isales/getTearSheetPdf.htm"
+//#define  URL_SAVE_DM_DIRECT @"https://central.united-us.com/usai_demo/shopping/isales/getTearSheetPdf.htm"
+//#define  URL_SAVE_DM @"https://central.united-us.com/usai_demo/shopping/isales/saveTearSheetPdf.htm"
+//#define  URL_DM_LIST @"https://central.united-us.com/usai_demo/shopping/isales/tearSheetPdfList.htm"
+////#define  URL_DM_SET_QTY @"https://central.united-us.com/usai_demo/shopping/isales/setTearSheetAvailableQty.htm"
+//#define  URL_REQUEST_MODEL_QTY @"https://central.united-us.com/usai_demo/shopping/isales/getTearSheetAvailableQty.htm"
+//
+//
+//#define  URL_CONTACT_LIST  @"https://central.united-us.com/usai_demo/shopping/isales/getAllContact.htm"
+//#define  URL_SHIPTO_LIST  @"https://central.united-us.com/usai_demo/shopping/isales/getShipToContact.htm"
+//
+//#define  URL_ADDRESS_EDOTOR  @"https://central.united-us.com/usai_demo/shopping/isales/getAddAddress.htm"
+//#define  URL_ADDRESS_SAVE  @"https://central.united-us.com/usai_demo/shopping/isales/saveAddress.htm"
+//
+//
+//#define  URL_CREDITCARD_EDOTOR  @"https://central.united-us.com/usai_demo/shopping/isales/creditCard.htm"
+//#define  URL_CREDITCARD_SAVE  @"https://central.united-us.com/usai_demo/shopping/isales/saveAddress.htm"
+//
+//
+//
+//#define  URL_CUSTOMER_INFO  @"https://central.united-us.com/usai_demo/shopping/isales/getCustomerInfoByContact.htm"
+//#define  URL_NEW_CUSTOMER  @"https://central.united-us.com/usai_demo/shopping/isales/getAddCustomer.htm"
+//#define  URL_CUSTOMER_SAVE  @"https://central.united-us.com/usai_demo/shopping/isales/saveCustomer.htm"
+//#define  URL_UPDATE_CUSTOMER_BCARD  @"https://central.united-us.com/usai_demo/shopping/isales/updateCustomerBusiCard.htm"
+//#define  URL_CUSTOMER_ADV_SEARCH @"https://central.united-us.com/usai_demo/shopping/isales/getContactAdvance.htm"
+//
+//
+//
+//
+//
+//#define  URL_ERR_LOG  @"https://central.united-us.com/usai_demo/shopping/isales/er_log.htm"
+//
+//#define  URL_UPLOAD_IMG  @"https://central.united-us.com/usai_demo/shopping/isales/uploadImg.htm"
+//
+//#define URL_COPY_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/copyOrder.htm"
+//#define URL_SIGN_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/updateOrderSign.htm"
+//#define  URL_CUSTOMER_UPDATE  @"https://central.united-us.com/usai_demo/shopping/isales/updateCustomer.htm"
+//#define  URL_CART_GENERAL_NOTES  @"https://central.united-us.com/usai_demo/shopping/isales/updateGeneralNote.htm"
+//#define  URL_CART_ITEM_NOTES  @"https://central.united-us.com/usai_demo/shopping/isales/setItemNotes.htm"
+//#define  URL_EDIT_CUSTOMER  @"https://central.united-us.com/usai_demo/shopping/isales/getUpdateCustomerInfoByContact.htm"
+//#define  URL_CUSTOMER_PENDINGORDER  @"https://central.united-us.com/usai_demo/shopping/isales/hasPendingOrderByContact.htm"
+//#define  URL_PORTFOLIOLIST_REMOVE  @"https://central.united-us.com/usai_demo/shopping/isales/deleteTearSheetPdf.htm"
+//#define  URL_NPD_POLICY   @"https://central.united-us.com/usai_demo/shopping/isales/generalPolicy.htm"
+//
+//#define URL_PRIVACY @"https://uwa.united-us.net/site/isales_uwa/privacyPolicy.htm"
+//
+//
+//#define  URL_CHECK_OFFLINE  @"https://central.united-us.com/demo/shopping/offline/initDatas.htm"
+//
+//#define  URL_DOWNLOAD_OFFLINE  @"https://central.united-us.com/demo/shopping/offline/downloadDatas.htm"
+//
+//#define  URL_FINISH_DOWNLOAD_OFFLINE  @"https://central.united-us.com/demo/shopping/offline/confirmVersion.htm"
+//#define  URL_UPLOAD_OFFLINE  @"https://central.united-us.com/demo/shopping/offline/uploadOfflineData.htm"
+//
+//#define  URL_CATEGORYADDALL  @"https://central.united-us.com/usai_demo/shopping/isales/categoryAddAllTo.htm"
+//#define  URL_SEARCHADDALL  @"https://central.united-us.com/usai_demo/shopping/isales/searchAddAllTo.htm"
+//#define  URL_ITEMSEARCHADDALL @"https://central.united-us.com/usai_demo/shopping/isales/itemSearchAddAllTo.htm"
+//
+//#define URL_SET_PRICE_TYPE @"https://central.united-us.com/usai_demo/shopping/isales/setSeePriceType.htm"
+//
+//#define URL_GET_CIVEN_PRICE @"https://central.united-us.com/usai_demo/shopping/isales/getSeeGivenPrice.htm"
+//
+//#define URL_SET_GIVEN_PRICE @"https://central.united-us.com/usai_demo/shopping/isales/setSeeGivenPrice.htm"
+//
+//#define URL_SET_MERGE_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/mergeOrder.htm"
+//
+//#define URL_REQUEST_LOGIN @"https://central.united-us.com/usai_demo/shopping/isales/requestLogin.htm"
+//
+//#define URL_EMAIL_CART @"https://central.united-us.com/usai_demo/shopping/isales/sendCartEmail.htm"
+//
+//#define URL_NOTIFY_ME @"https://central.united-us.com/usai_demo/shopping/isales/notifyMeEmail.htm"
+//
+//#define URL_EMAIL_WISHLIST @"https://central.united-us.com/usai_demo/shopping/isales/sendWishListEmail.htm"
+//
+//#define URL_BLOG @"https://central.united-us.com/demo/shopping/blog"
+//
+//#define  URL_MOVE_TO_BACK_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/moveToBackOrder.htm"
+//
+//#define  URL_BACK_ORDER_PREVIEW  @"https://central.united-us.com/usai_demo/shopping/isales/cartDeliveryBackOrderReview.htm"
 
+#endif
 
-#define  URL_CUSTOMER_INFO  @"http://12.196.120.217/isales/getCustomerInfoByContact.htm"
-#define  URL_CUSTOMER_PENDINGORDER  @"http://12.196.120.217/isales/hasPendingOrderByContact.htm"
-#define  URL_NEW_CUSTOMER  @"http://12.196.120.217/isales/getAddCustomer.htm"
-#define  URL_EDIT_CUSTOMER  @"http://12.196.120.217/isales/getUpdateCustomerInfoByContact.htm"
-#define  URL_CUSTOMER_SAVE  @"http://12.196.120.217/isales/saveCustomer.htm"
-#define  URL_CUSTOMER_UPDATE  @"http://12.196.120.217/isales/updateCustomer.htm"
-#define  URL_UPDATE_CUSTOMER_BCARD  @"http://12.196.120.217/isales/updateCustomerBusiCard.htm"
-
-
-
-
-
-
-#define  URL_ERR_LOG  @"http://12.196.120.217/isales/er_log.htm"
-
-#define  URL_UPLOAD_IMG  @"http://12.196.120.217/isales/uploadImg.htm"
-
-
-#define  URL_NPD_POLICY  @"http://12.196.120.217/isales/generalPolicy.htm"
-
-
-#define  URL_CHECK_OFFLINE  @"http://12.196.120.217/offline/initDatas.htm"
-#define  URL_UPLOAD_OFFLINE  @"http://12.196.120.217/offline/uploadOfflineData.htm"
-
-
-#define  URL_DOWNLOAD_OFFLINE  @"http://12.196.120.217/offline/downloadDatas.htm"
-#define  URL_FINISH_DOWNLOAD_OFFLINE  @"http://12.196.120.217/offline/confirmVersion.htm"
-
-
-#define  URL_GET_RESULT  @"http://12.196.120.217/offline/getResultBySerial.htm"
-
-#define URL_SET_PRICE_TYPE @"http://12.196.120.217/isales/setSeePriceType.htm"
-
-#define URL_GET_CIVEN_PRICE @"http://12.196.120.217/isales/getSeeGivenPrice.htm"
-
-#define URL_SET_GIVEN_PRICE @"http://12.196.120.217/isales/setSeeGivenPrice.htm"
+#define URL_SERVER_LIST BASE_URL@"offlineorder_isales.php"
+#define URL_SERVER_CHECK @"offlineorder_isales.php"
+#define URL_SIGN_UP @"offlineorder_isales.php"
+#define  URL_RETRIEVE_PASS  @"offlineorder_isales.php"
+#define  URL_UPDATE_AUTH  @"offlineorder_isales.php"
+#define  URL_SEARCH  BASE_URL@"offlineorder_isales.php"
+#define URL_DELETE_ACCOUNT @"offlineorder_isales.php"
+#define URL_PRIVACY @"https://uwa.united-us.net/site/isales_uwa/privacyPolicy.htm"
+#define URL_CHANGE_PASSWORD @"offlineorder_isales.php"
+#define URL_SCAN_UPLOAD @"offlineorder_isales.php"
 
-#define URL_SET_MERGE_ORDER @"http://12.196.120.217/isales/mergeOrder.htm"
 
-#define URL_REQUEST_LOGIN @"http://12.196.120.217/isales/requestLogin.htm"
+#define  URL_BACK_ORDER_PREVIEW  @""
+#define  URL_MOVE_TO_BACK_ORDER @""
 
-#define URL_EMAIL_CART @"http://12.196.120.217/isales/sendCartEmail.htm"
+#define  URL_LOGOUT  @"http://12.196.120.217/isales/loginOut.htm"
 
-#define URL_NOTIFY_ME @"http://12.196.120.217/isales/notifyMeEmail.htm"
+#define  URL_REQUEST_CATMENU  @""
+#define  URL_LOAD_HOME  @""
+#define  URL_CATEGORY @""
 
-#define URL_EMAIL_WISHLIST @"http://12.196.120.217/isales/sendWishListEmail.htm"
+#define  URL_ITEM_SEARCH  @""
+#define  URL_CATEGORY_LOADMORE  @""
+#define  URL_CUSTOMER_ADV_SEARCH @""
 
-#define URL_BLOG @"http://12.196.120.217/blog"
 
-#else
+#define  URL_ORDER_LIST  @""
+#define  URL_ORDER_DETAIL  @""
+#define URL_COMMIT_ORDER @""
+#define URL_COPY_ORDER @""
+#define URL_SIGN_ORDER @""
+#define URL_SAVE_ORDER @""
+#define URL_UPDATE_ORDERCUSTOMER @""
+#define  URL_NEW_ORDER  @""
+#define  URL_OPEN_ORDER  @""
+#define  URL_RELEASE_ORDER  @""
+#define  URL_DELETE_ORDER  @""
+#define  URL_CANCEL_ORDER  @""
 
 
-//------------------- NPD server-----------------------
-#define  URL_UPDATE_AUTH  @"https://central.united-us.com/usai_demo/shopping/isales/login.htm"
-#define  URL_LOGOUT  @"https://central.united-us.com/usai_demo/shopping/isales/loginOut.htm"
-#define  URL_RETRIEVE_PASS  @"https://central.united-us.com/usai_demo/shopping/isales/forgotPassword.htm"
+#define  URL_CART_SET_PRICE  @""
+#define  URL_CART_ITEM_NOTES  @""
+#define  URL_CART_GENERAL_NOTES  @""
 
-#define  URL_REQUEST_CATMENU  @"https://central.united-us.com/usai_demo/shopping/isales/menu.htm"
-#define  URL_LOAD_HOME  @"https://central.united-us.com/usai_demo/shopping/isales/homePage.htm"
-#define  URL_CATEGORY @"https://central.united-us.com/usai_demo/shopping/isales/distinctCategory.htm"
-#define  URL_SEARCH  @"https://central.united-us.com/usai_demo/shopping/isales/search.htm"
-#define  URL_ITEM_SEARCH  @"https://central.united-us.com/usai_demo/shopping/isales/itemSearch.htm"
-#define  URL_CATEGORY_LOADMORE  @"https://central.united-us.com/usai_demo/shopping/isales/categoryMore.htm"
+#define  URL_CART_INCRESEMENT  @""
+#define  URL_CART  @""
+#define  URL_CARTDELIVERY  @""
+#define  URL_ADD_TO_CART  @""
+#define  URL_CART_REMOVE  @""
+#define  URL_CART_CHECK  @""
+#define  URL_CART2WISH  @""
+#define  URL_WISH2CART  @""
 
 
-#define  URL_ORDER_LIST  @"https://central.united-us.com/usai_demo/shopping/isales/orderList.htm"
-#define  URL_ORDER_DETAIL  @"https://central.united-us.com/usai_demo/shopping/isales/orderDetail.htm"
-#define URL_COMMIT_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/createOrder.htm"
-#define URL_SAVE_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/saveOrder.htm"
-#define URL_UPDATE_ORDERCUSTOMER @"https://central.united-us.com/usai_demo/shopping/isales/updateOrderCustomerInfo.htm"
-#define  URL_NEW_ORDER  @"https://central.united-us.com/usai_demo/shopping/isales/createNewOrder.htm"
-#define  URL_OPEN_ORDER  @"https://central.united-us.com/usai_demo/shopping/isales/openOrder.htm"
-#define  URL_RELEASE_ORDER  @"https://central.united-us.com/usai_demo/shopping/isales/closeOrder.htm"
-#define  URL_DELETE_ORDER  @"https://central.united-us.com/usai_demo/shopping/isales/deleteOrder.htm"
-#define  URL_CANCEL_ORDER  @"https://central.united-us.com/usai_demo/shopping/isales/cancelOrder.htm"
 
 
-#define  URL_CART_SET_PRICE  @"https://central.united-us.com/usai_demo/shopping/isales/setPrice.htm"
-#define  URL_CART_INCRESEMENT  @"https://central.united-us.com/usai_demo/shopping/isales/increment.htm"
-#define  URL_CART  @"https://central.united-us.com/usai_demo/shopping/isales/cartDtail.htm"
-#define  URL_CARTDELIVERY  @"https://central.united-us.com/usai_demo/shopping/isales/cartDelivery.htm"
-#define  URL_ADD_TO_CART  @"https://central.united-us.com/usai_demo/shopping/isales/addToCart.htm"
-#define  URL_CART_REMOVE  @"https://central.united-us.com/usai_demo/shopping/isales/deleteToCart.htm"
-#define  URL_CART_CHECK  @"https://central.united-us.com/usai_demo/shopping/isales/checkCartItem.htm"
+#define  URL_CATEGORYADDALL  @""
+#define  URL_SEARCHADDALL  @""
+#define  URL_ITEMSEARCHADDALL @""
 
-#define  URL_CART2WISH  @"https://central.united-us.com/usai_demo/shopping/isales/cartRemoveToWishlist.htm"
-#define  URL_WISH2CART  @"https://central.united-us.com/usai_demo/shopping/isales/wishlistRemoveToCart.htm"
 
-#define  URL_ITEM_DETAIL  @"https://central.united-us.com/usai_demo/shopping/isales/modelDetail.htm"
+#define  URL_ITEM_DETAIL  @""
 
-#define  URL_ADD_TO_WATCHLIST  @"https://central.united-us.com/usai_demo/shopping/isales/addToWishList.htm"
-#define  URL_WATCHLIST  @"https://central.united-us.com/usai_demo/shopping/isales/wishList.htm"
-#define  URL_WATCHLIST_REMOVE  @"https://central.united-us.com/usai_demo/shopping/isales/deleteToWishList.htm"
+#define  URL_ADD_TO_WATCHLIST  @""
+#define  URL_WATCHLIST  @""
+#define  URL_WATCHLIST_REMOVE  @""
 
 
 
-#define  URL_ADD_TO_PORTFOLIO @"https://central.united-us.com/usai_demo/shopping/isales/addToPortfolio.htm"
-#define  URL_PORTFOLIO_REMOVE  @"https://central.united-us.com/usai_demo/shopping/isales/deleteToPortfolio.htm"
-#define  URL_PORTFOLIO  @"https://central.united-us.com/usai_demo/shopping/isales/portfolios.htm"
-#define  URL_PORTFOLIO_SET_PRICE  @"https://central.united-us.com/usai_demo/shopping/isales/setTearSheetPrice.htm"
-#define  URL_DM_PARAMS @"https://central.united-us.com/usai_demo/shopping/isales/selectTearSheetParam.htm"
-#define  URL_REQUEST_DM @"https://central.united-us.com/usai_demo/shopping/isales/getTearSheetPdf.htm"
-#define  URL_SAVE_DM_DIRECT @"https://central.united-us.com/usai_demo/shopping/isales/getTearSheetPdf.htm"
-#define  URL_SAVE_DM @"https://central.united-us.com/usai_demo/shopping/isales/saveTearSheetPdf.htm"
-#define  URL_DM_LIST @"https://central.united-us.com/usai_demo/shopping/isales/tearSheetPdfList.htm"
-//#define  URL_DM_SET_QTY @"https://central.united-us.com/usai_demo/shopping/isales/setTearSheetAvailableQty.htm"
-#define  URL_REQUEST_MODEL_QTY @"https://central.united-us.com/usai_demo/shopping/isales/getTearSheetAvailableQty.htm"
+#define  URL_ADD_TO_PORTFOLIO @""
+#define  URL_PORTFOLIO_REMOVE  @""
+#define  URL_PORTFOLIOLIST_REMOVE  @""
+#define  URL_PORTFOLIO  @""
+#define  URL_PORTFOLIO_SET_PRICE  @""
+#define  URL_DM_PARAMS @""
+#define  URL_REQUEST_DM @""
+#define  URL_SAVE_DM_DIRECT @""
+#define  URL_SAVE_DM @""
+#define  URL_DM_LIST @""
+//#define  URL_DM_SET_QTY @"http://12.196.120.217/isales/setTearSheetAvailableQty.htm"
+#define  URL_REQUEST_MODEL_QTY @""
 
+#define  URL_CONTACT_LIST  @""
+#define  URL_SHIPTO_LIST  @""
 
-#define  URL_CONTACT_LIST  @"https://central.united-us.com/usai_demo/shopping/isales/getAllContact.htm"
-#define  URL_SHIPTO_LIST  @"https://central.united-us.com/usai_demo/shopping/isales/getShipToContact.htm"
+#define  URL_ADDRESS_EDOTOR  @""
+#define  URL_ADDRESS_SAVE  @""
 
-#define  URL_ADDRESS_EDOTOR  @"https://central.united-us.com/usai_demo/shopping/isales/getAddAddress.htm"
-#define  URL_ADDRESS_SAVE  @"https://central.united-us.com/usai_demo/shopping/isales/saveAddress.htm"
 
+#define  URL_CREDITCARD_EDOTOR  @""
+#define  URL_CREDITCARD_SAVE  @""
 
-#define  URL_CREDITCARD_EDOTOR  @"https://central.united-us.com/usai_demo/shopping/isales/creditCard.htm"
-#define  URL_CREDITCARD_SAVE  @"https://central.united-us.com/usai_demo/shopping/isales/saveAddress.htm"
 
 
+#define  URL_CUSTOMER_INFO  @""
+#define  URL_CUSTOMER_PENDINGORDER  @""
+#define  URL_NEW_CUSTOMER  @""
+#define  URL_EDIT_CUSTOMER  @""
+#define  URL_CUSTOMER_SAVE  @""
+#define  URL_CUSTOMER_UPDATE  @""
+#define  URL_UPDATE_CUSTOMER_BCARD  @""
 
-#define  URL_CUSTOMER_INFO  @"https://central.united-us.com/usai_demo/shopping/isales/getCustomerInfoByContact.htm"
-#define  URL_NEW_CUSTOMER  @"https://central.united-us.com/usai_demo/shopping/isales/getAddCustomer.htm"
-#define  URL_CUSTOMER_SAVE  @"https://central.united-us.com/usai_demo/shopping/isales/saveCustomer.htm"
-#define  URL_UPDATE_CUSTOMER_BCARD  @"https://central.united-us.com/usai_demo/shopping/isales/updateCustomerBusiCard.htm"
-#define  URL_CUSTOMER_ADV_SEARCH @"https://central.united-us.com/usai_demo/shopping/isales/getContactAdvance.htm"
 
 
 
 
+#define  URL_ERR_LOG  @""
 
-#define  URL_ERR_LOG  @"https://central.united-us.com/usai_demo/shopping/isales/er_log.htm"
+#define  URL_UPLOAD_IMG  @""
 
-#define  URL_UPLOAD_IMG  @"https://central.united-us.com/usai_demo/shopping/isales/uploadImg.htm"
 
-#define URL_COPY_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/copyOrder.htm"
-#define URL_SIGN_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/updateOrderSign.htm"
-#define  URL_CUSTOMER_UPDATE  @"https://central.united-us.com/usai_demo/shopping/isales/updateCustomer.htm"
-#define  URL_CART_GENERAL_NOTES  @"https://central.united-us.com/usai_demo/shopping/isales/updateGeneralNote.htm"
-#define  URL_CART_ITEM_NOTES  @"https://central.united-us.com/usai_demo/shopping/isales/setItemNotes.htm"
-#define  URL_EDIT_CUSTOMER  @"https://central.united-us.com/usai_demo/shopping/isales/getUpdateCustomerInfoByContact.htm"
-#define  URL_CUSTOMER_PENDINGORDER  @"https://central.united-us.com/usai_demo/shopping/isales/hasPendingOrderByContact.htm"
-#define  URL_PORTFOLIOLIST_REMOVE  @"https://central.united-us.com/usai_demo/shopping/isales/deleteTearSheetPdf.htm"
-#define  URL_NPD_POLICY   @"https://central.united-us.com/usai_demo/shopping/isales/generalPolicy.htm"
+#define  URL_NPD_POLICY  @""
 
-#define URL_PRIVACY @"https://uwa.united-us.net/site/isales_uwa/privacyPolicy.htm"
 
+#define  URL_CHECK_OFFLINE  @""
+#define  URL_UPLOAD_OFFLINE  @""
 
-#define  URL_CHECK_OFFLINE  @"https://central.united-us.com/demo/shopping/offline/initDatas.htm"
 
-#define  URL_DOWNLOAD_OFFLINE  @"https://central.united-us.com/demo/shopping/offline/downloadDatas.htm"
+#define  URL_DOWNLOAD_OFFLINE  @""
+#define  URL_FINISH_DOWNLOAD_OFFLINE  @""
 
-#define  URL_FINISH_DOWNLOAD_OFFLINE  @"https://central.united-us.com/demo/shopping/offline/confirmVersion.htm"
-#define  URL_UPLOAD_OFFLINE  @"https://central.united-us.com/demo/shopping/offline/uploadOfflineData.htm"
 
-#define  URL_CATEGORYADDALL  @"https://central.united-us.com/usai_demo/shopping/isales/categoryAddAllTo.htm"
-#define  URL_SEARCHADDALL  @"https://central.united-us.com/usai_demo/shopping/isales/searchAddAllTo.htm"
-#define  URL_ITEMSEARCHADDALL @"https://central.united-us.com/usai_demo/shopping/isales/itemSearchAddAllTo.htm"
+#define  URL_GET_RESULT  @""
 
-#define URL_SET_PRICE_TYPE @"https://central.united-us.com/usai_demo/shopping/isales/setSeePriceType.htm"
+#define URL_SET_PRICE_TYPE @""
 
-#define URL_GET_CIVEN_PRICE @"https://central.united-us.com/usai_demo/shopping/isales/getSeeGivenPrice.htm"
+#define URL_GET_CIVEN_PRICE @""
 
-#define URL_SET_GIVEN_PRICE @"https://central.united-us.com/usai_demo/shopping/isales/setSeeGivenPrice.htm"
+#define URL_SET_GIVEN_PRICE @""
 
-#define URL_SET_MERGE_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/mergeOrder.htm"
+#define URL_SET_MERGE_ORDER @""
 
-#define URL_REQUEST_LOGIN @"https://central.united-us.com/usai_demo/shopping/isales/requestLogin.htm"
+#define URL_REQUEST_LOGIN @""
 
-#define URL_EMAIL_CART @"https://central.united-us.com/usai_demo/shopping/isales/sendCartEmail.htm"
+#define URL_EMAIL_CART @""
 
-#define URL_NOTIFY_ME @"https://central.united-us.com/usai_demo/shopping/isales/notifyMeEmail.htm"
+#define URL_NOTIFY_ME @""
 
-#define URL_EMAIL_WISHLIST @"https://central.united-us.com/usai_demo/shopping/isales/sendWishListEmail.htm"
+#define URL_EMAIL_WISHLIST @""
 
-#define URL_BLOG @"https://central.united-us.com/demo/shopping/blog"
+#define URL_BLOG @""
 
-#define  URL_MOVE_TO_BACK_ORDER @"https://central.united-us.com/usai_demo/shopping/isales/moveToBackOrder.htm"
 
-#define  URL_BACK_ORDER_PREVIEW  @"https://central.united-us.com/usai_demo/shopping/isales/cartDeliveryBackOrderReview.htm"
 
-#endif
 
 #endif
 /*

+ 2 - 2
RedAnt ERP Mobile/HMLG Scan Order/default_appearance.json

@@ -282,8 +282,8 @@
             "labelcolor": "0x000000"
         },
         "MainLogo": {
-            "x": 49.0,
-            "y": 28.0,
+            "x": 15,
+            "y": 28,
             "width": 110.0,
             "height": 13.0
         },

+ 2 - 1
RedAnt ERP Mobile/common/AppDelegateBase.h

@@ -193,7 +193,7 @@ typedef enum {
 
 - (void)checkLogin:(BOOL)reloadCurVC;
 
-- (void)updateScanButton:(BOOL)enable;
+//- (void)updateScanButton:(BOOL)enable;
 
 @property (strong, nonatomic) NSString* uploadurl;
 @property (strong, nonatomic) NSString* address;
@@ -201,4 +201,5 @@ typedef enum {
 @property (strong, nonatomic)  RAUploadManager *uploadManager;
 @property (nonatomic,assign) BOOL compressFile;
 
+
 @end

+ 40 - 24
RedAnt ERP Mobile/common/AppDelegateBase.m

@@ -160,29 +160,30 @@
 }
 -(void) set_main_button_panel
 {
-    dispatch_async(dispatch_get_main_queue(), ^{
-        if(self.main_vc==nil)
-            return;
-        MainViewController * main_vc= (MainViewController*)self.main_vc;
-        if(self.user_type==USER_ROLE_CUSTOMER)
-        {
-            main_vc.customer_bp.hidden=false;
-            main_vc.employee_bp.hidden = true;
-        }
-        else
-        {
-            main_vc.customer_bp.hidden=true;
-            main_vc.employee_bp.hidden = false;
-        }
-    });
-}
-#ifdef SCANNER_ORDER
-- (void)updateScanButton:(BOOL)enable
-{
-    MainViewController * mainvc=(MainViewController * )self.main_vc;
-    mainvc.btnScan.enabled = enable;
+    return;
+//    dispatch_async(dispatch_get_main_queue(), ^{
+//        if(self.main_vc==nil)
+//            return;
+//        MainViewController * main_vc= (MainViewController*)self.main_vc;
+//        if(self.user_type==USER_ROLE_CUSTOMER)
+//        {
+//            main_vc.customer_bp.hidden=false;
+//            main_vc.employee_bp.hidden = true;
+//        }
+//        else
+//        {
+//            main_vc.customer_bp.hidden=true;
+//            main_vc.employee_bp.hidden = false;
+//        }
+//    });
 }
-#endif
+//#ifdef SCANNER_ORDER
+//- (void)updateScanButton:(BOOL)enable
+//{
+//    MainViewController * mainvc=(MainViewController * )self.main_vc;
+//    mainvc.btnScan.enabled = enable;
+//}
+//#endif
 -(void) update_count_mark
 {
     
@@ -372,7 +373,7 @@
 #endif
     
     
-    [self updateScanButton:false];
+//    [self updateScanButton:false];
     
 }
 -(void) switchToPreviousVC
@@ -1126,6 +1127,19 @@ void UncaughtExceptionHandler(NSException *exception) {
     
     
 }
+-(RAUploadManager *)uploadManager
+{
+    [RAUploadManager configureUploadManager:^(RAUPloadManagerConfigure *configure) {
+       
+        configure.autoRemoveFinish = YES;
+    }];
+    
+    if (!_uploadManager) {
+        _uploadManager=[RAUploadManager sharedManager];
+    }
+    return _uploadManager;
+}
+
 -(void)applicationDidReceiveMemoryWarning:(UIApplication *)application
 {
     DebugLog(@"======================================");
@@ -1135,6 +1149,7 @@ void UncaughtExceptionHandler(NSException *exception) {
 - (void)applicationWillTerminate:(UIApplication *)application
 {
     // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
+    [self saveUploadTasks];
 }
 -(void) Logout
 {
@@ -3666,10 +3681,11 @@ void UncaughtExceptionHandler(NSException *exception) {
         {
             
             [self.uploadManager stopAllTasks];
-            [self.uploadManager saveTasks];
+            
 
             
         }
+        [self.uploadManager saveTasks];
         return;
     }
 

+ 115 - 1
RedAnt ERP Mobile/common/ERP_Mobile_Cart.storyboard

@@ -246,8 +246,122 @@ Stock</string>
                                                     <outlet property="stepper" destination="Icr-T0-BzH" id="u9D-9n-nC1"/>
                                                 </connections>
                                             </tableViewCell>
+                                            <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" restorationIdentifier="ScanCartItemCell" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="ScanCartItemCell" rowHeight="120" id="fca-Fb-rTa" customClass="ScanCartItemCell">
+                                                <rect key="frame" x="0.0" y="190.5" width="768" height="120"/>
+                                                <autoresizingMask key="autoresizingMask"/>
+                                                <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="fca-Fb-rTa" id="efk-9P-2wE">
+                                                    <rect key="frame" x="0.0" y="0.0" width="768" height="120"/>
+                                                    <autoresizingMask key="autoresizingMask"/>
+                                                    <subviews>
+                                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="name aaaaaaaaaaaaa aaaaaaaaaa BBBBB  CCCCC" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XMk-Dj-kBK" userLabel="name and description">
+                                                            <rect key="frame" x="15" y="37" width="294" height="47"/>
+                                                            <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="16"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" text="9999" borderStyle="roundedRect" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Ebf-Mu-7C8" userLabel="qty">
+                                                            <rect key="frame" x="449" y="41.5" width="60" height="32"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="60" id="a5J-gG-uph"/>
+                                                                <constraint firstAttribute="height" constant="32" id="cu4-ts-EDj"/>
+                                                            </constraints>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="14"/>
+                                                            <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
+                                                            <connections>
+                                                                <outlet property="delegate" destination="fca-Fb-rTa" id="bHz-2L-JeU"/>
+                                                            </connections>
+                                                        </textField>
+                                                        <stepper opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" value="1" maximumValue="99999" translatesAutoresizingMaskIntoConstraints="NO" id="V3E-hA-Dpr">
+                                                            <rect key="frame" x="524" y="41.5" width="94" height="32"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="32" id="BM9-FK-uOM"/>
+                                                                <constraint firstAttribute="width" constant="94" id="bzi-VK-ZnS"/>
+                                                            </constraints>
+                                                            <connections>
+                                                                <action selector="setpperChanged:" destination="fca-Fb-rTa" eventType="valueChanged" id="PBw-8g-IaY"/>
+                                                            </connections>
+                                                        </stepper>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="12345678.99" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AMU-gk-9Zx" userLabel="unit price">
+                                                            <rect key="frame" x="324" y="47" width="110" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="110" id="JT3-Id-W3x"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sold in QTY of:9999" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="PK4-TS-WwU">
+                                                            <rect key="frame" x="588" y="11" width="160" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="21" id="9Bk-jh-lRa"/>
+                                                                <constraint firstAttribute="width" constant="160" id="nj0-ub-luv"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="123456789.00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="e5O-in-MD6" userLabel="subtotal price">
+                                                            <rect key="frame" x="633" y="47" width="115" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="width" constant="115" id="k1v-RX-amw"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JNY-pM-90G">
+                                                            <rect key="frame" x="15" y="91" width="738" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="21" id="vMH-cC-f7Q"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                            <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                        <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zOI-gh-hMy">
+                                                            <rect key="frame" x="15" y="11" width="44.5" height="21"/>
+                                                            <constraints>
+                                                                <constraint firstAttribute="height" constant="21" id="tOj-pN-ei5"/>
+                                                            </constraints>
+                                                            <fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
+                                                            <nil key="textColor"/>
+                                                            <nil key="highlightedColor"/>
+                                                        </label>
+                                                    </subviews>
+                                                    <constraints>
+                                                        <constraint firstItem="AMU-gk-9Zx" firstAttribute="leading" secondItem="XMk-Dj-kBK" secondAttribute="trailing" constant="15" id="852-B9-roM"/>
+                                                        <constraint firstItem="V3E-hA-Dpr" firstAttribute="leading" secondItem="Ebf-Mu-7C8" secondAttribute="trailing" constant="15" id="EYz-1t-LBc"/>
+                                                        <constraint firstItem="JNY-pM-90G" firstAttribute="top" secondItem="XMk-Dj-kBK" secondAttribute="bottom" constant="7" id="H1G-di-Lpl"/>
+                                                        <constraint firstItem="zOI-gh-hMy" firstAttribute="leading" secondItem="efk-9P-2wE" secondAttribute="leading" constant="15" id="KKS-Rd-yJb"/>
+                                                        <constraint firstItem="e5O-in-MD6" firstAttribute="top" secondItem="PK4-TS-WwU" secondAttribute="bottom" constant="15" id="Rqe-2K-t0m"/>
+                                                        <constraint firstAttribute="trailing" secondItem="JNY-pM-90G" secondAttribute="trailing" constant="15" id="S2G-je-TUL"/>
+                                                        <constraint firstItem="e5O-in-MD6" firstAttribute="trailing" secondItem="PK4-TS-WwU" secondAttribute="trailing" id="TRL-X4-acE"/>
+                                                        <constraint firstItem="e5O-in-MD6" firstAttribute="leading" secondItem="V3E-hA-Dpr" secondAttribute="trailing" constant="15" id="UBK-ZD-dMe"/>
+                                                        <constraint firstItem="XMk-Dj-kBK" firstAttribute="leading" secondItem="zOI-gh-hMy" secondAttribute="leading" id="WSe-Cf-s6N"/>
+                                                        <constraint firstAttribute="trailing" secondItem="e5O-in-MD6" secondAttribute="trailing" constant="20" id="YOm-vb-xse"/>
+                                                        <constraint firstItem="PK4-TS-WwU" firstAttribute="top" secondItem="zOI-gh-hMy" secondAttribute="top" id="Zxy-Qd-DxD"/>
+                                                        <constraint firstItem="Ebf-Mu-7C8" firstAttribute="leading" secondItem="AMU-gk-9Zx" secondAttribute="trailing" constant="15" id="Zzm-kA-ei6"/>
+                                                        <constraint firstItem="e5O-in-MD6" firstAttribute="centerY" secondItem="AMU-gk-9Zx" secondAttribute="centerY" id="hET-ct-Ip6"/>
+                                                        <constraint firstItem="XMk-Dj-kBK" firstAttribute="top" secondItem="zOI-gh-hMy" secondAttribute="bottom" constant="5" id="lYh-ND-XaW"/>
+                                                        <constraint firstItem="JNY-pM-90G" firstAttribute="leading" secondItem="efk-9P-2wE" secondAttribute="leading" constant="15" id="phe-j0-b8U"/>
+                                                        <constraint firstItem="zOI-gh-hMy" firstAttribute="top" secondItem="efk-9P-2wE" secondAttribute="top" constant="11" id="puk-1s-Kig"/>
+                                                        <constraint firstAttribute="bottom" secondItem="JNY-pM-90G" secondAttribute="bottom" constant="8" id="tnp-OB-KgE"/>
+                                                        <constraint firstItem="Ebf-Mu-7C8" firstAttribute="centerY" secondItem="AMU-gk-9Zx" secondAttribute="centerY" id="vjL-rw-29U"/>
+                                                        <constraint firstItem="V3E-hA-Dpr" firstAttribute="centerY" secondItem="AMU-gk-9Zx" secondAttribute="centerY" id="wdF-PM-YPV"/>
+                                                    </constraints>
+                                                </tableViewCellContentView>
+                                                <connections>
+                                                    <outlet property="editQTY" destination="Ebf-Mu-7C8" id="xsP-ic-YjR"/>
+                                                    <outlet property="labelDescription" destination="XMk-Dj-kBK" id="xhs-Vl-QxA"/>
+                                                    <outlet property="labelModel" destination="zOI-gh-hMy" id="2p0-Qx-DZP"/>
+                                                    <outlet property="labelMpack" destination="PK4-TS-WwU" id="Wf6-E3-L5T"/>
+                                                    <outlet property="labelNotes" destination="JNY-pM-90G" id="wUc-b1-yy7"/>
+                                                    <outlet property="labelSubtotal" destination="e5O-in-MD6" id="biw-u9-LbD"/>
+                                                    <outlet property="labelUnitPrice" destination="AMU-gk-9Zx" id="730-6M-Vbq"/>
+                                                    <outlet property="setpperQTY" destination="V3E-hA-Dpr" id="Ecs-N6-zy9"/>
+                                                </connections>
+                                            </tableViewCell>
                                             <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" indentationWidth="10" reuseIdentifier="section_header_cell" rowHeight="50" id="XyA-7C-sJn">
-                                                <rect key="frame" x="0.0" y="190.5" width="768" height="50"/>
+                                                <rect key="frame" x="0.0" y="310.5" width="768" height="50"/>
                                                 <autoresizingMask key="autoresizingMask"/>
                                                 <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="XyA-7C-sJn" translatesAutoresizingMaskIntoConstraints="NO" id="Ugp-AX-JtS">
                                                     <rect key="frame" x="0.0" y="0.0" width="768" height="50"/>

+ 5 - 5
RedAnt ERP Mobile/common/ERP_Mobile_Search.storyboard

@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19162" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES">
     <device id="ipad9_7" orientation="portrait" layout="fullscreen" appearance="light"/>
     <dependencies>
         <deployment identifier="iOS"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19144"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -132,7 +132,7 @@
                                         </connections>
                                     </collectionViewCell>
                                     <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="CategoryCellNPD" id="YRD-3R-JTD" customClass="CategoryCellNPD">
-                                        <rect key="frame" x="588" y="95" width="180" height="251"/>
+                                        <rect key="frame" x="588" y="94.5" width="180" height="251"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMinY="YES"/>
                                         <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
                                             <rect key="frame" x="0.0" y="0.0" width="180" height="251"/>
@@ -642,7 +642,7 @@
                                         </connections>
                                     </collectionViewCell>
                                     <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="CategoryCellNPD" id="oKQ-UZ-bSj" customClass="CategoryCellNPD">
-                                        <rect key="frame" x="588" y="95" width="180" height="251"/>
+                                        <rect key="frame" x="588" y="94.5" width="180" height="251"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMinY="YES"/>
                                         <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
                                             <rect key="frame" x="0.0" y="0.0" width="180" height="251"/>
@@ -1375,7 +1375,7 @@
                                 </collectionViewFlowLayout>
                                 <cells>
                                     <collectionViewCell opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" reuseIdentifier="CategoryCellNPD" id="JSt-6l-I6L" customClass="CategoryCellNPD">
-                                        <rect key="frame" x="0.0" y="95" width="180" height="251"/>
+                                        <rect key="frame" x="0.0" y="94.5" width="180" height="251"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMinY="YES"/>
                                         <view key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center">
                                             <rect key="frame" x="0.0" y="0.0" width="180" height="251"/>

+ 178 - 176
RedAnt ERP Mobile/common/Functions/MainViewController.m

@@ -1346,7 +1346,9 @@
     UIApplication * app = [UIApplication sharedApplication];
     AppDelegate *appDelegate = (AppDelegate *)[app delegate];
  //   MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
-    if(appDelegate.bLogin==false&& !RASingleton.sharedInstance.enable_OfflineOrder)
+    
+    
+    if(appDelegate.bLogin==false)
     {
         
         LoginViewController * loginvc =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"LoginViewController"];
@@ -2666,145 +2668,145 @@
     }
 }
 
--(void) newoloorder
-{
-    NSString* order_code = [[NSUUID new] UUIDString];
-                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
-                                appDelegate.order_code = order_code;
-    
-//    NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:URL_SO_CART ofType:@"json" ]];
-    NSMutableDictionary* cartTemplate=[OLDataProvider loadScanTemplate:@"scan_cart.json"];
-    RASingleton.sharedInstance.scan_cart=cartTemplate;//[[RAConvertor data2dict:json] mutableCopy];
-    appDelegate.user_type = USER_ROLE_EMPLOYEE;
-    appDelegate.can_set_cart_price = true;
-    appDelegate.can_see_price = true;
-    
-//    __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Create Order" completion:^{
-//        [RANetwork request_create_order:^(NSMutableDictionary *result) {
-//                NSMutableDictionary* return_json =result;
-//
-//                [waitalert dismissViewControllerAnimated:YES completion:^{
-//                    if([[return_json valueForKey:@"result"] intValue]==2)
-//                    {
-//                        int result=[[return_json valueForKey:@"result"] intValue];
-//                        if(result==2)
-//                        {
-//                            //successed.
-//
-//                            NSString* order_code = [return_json valueForKey:@"orderCode"];
-//                            AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
-//                            appDelegate.order_code = order_code;
-//                            appDelegate.order_status = [[return_json valueForKey:@"orderStatus"] intValue];
-//
-//
-//        #ifdef RA_NOTIFICATION
-//                            [ActiveViewController Notify:@"CartViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
-//        #else
-//                            MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
-//                            [main_vc reloadCart:true immediately:false];
-//        #endif
-//
-////                            [self ReloadData];
-//
-//
-//                            //     [self performSelector:@selector(loadpage) withObject:nil afterDelay:1];
-//                            //    [self loadpage];
-//
-//
-//                            //                    if(self.shopCartBlock!=nil)
-//                            //                    {
-//                            //                        UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
-//                            //
-//                            //
-//                            //                        CGRect iv_rect = CGRectMake(self.btnaddCart.center.x-50, self.btnaddCart.center.y-50, 100, 100);
-//                            //                        UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
-//                            //                        iv.image = img;
-//                            //                        //                        [self.contentView addSubview:iv];
-//                            //                        self.shopCartBlock(iv);
-//                            //
-//                            //                    }
-//
-//                        }
-//                    }
-//                    else
-//                    {
-//                        [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Create Order" controller:self] ;
-//                    }
-//                }];
-//        //        [waitalert dismissViewControllerAnimated:YES completion:nil];
-//
-//
-//
-//
-//
-//
-//
-//
-//            }];
-//
-//    }];
-        
-//    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
-//
-//        NSDictionary* return_json = [RANetwork new_Order];
-//
-//        dispatch_async(dispatch_get_main_queue(), ^{
-//            [waitalert dismissViewControllerAnimated:YES completion:nil];
-//
-//
-//            if([[return_json valueForKey:@"result"] intValue]==2)
-//            {
-//                int result=[[return_json valueForKey:@"result"] intValue];
-//                if(result==2)
-//                {
-//                    //successed.
-//
-//                    NSString* order_code = [return_json valueForKey:@"orderCode"];
-//                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
-//                    appDelegate.order_code = order_code;
-//                    appDelegate.order_status = [[return_json valueForKey:@"orderStatus"] intValue];
-//
-//
-//#ifdef RA_NOTIFICATION
-//                    [ActiveViewController Notify:@"CartViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
-//#else
-//                    MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
-//                    [main_vc reloadCart:true immediately:false];
-//#endif
-//
-//                    [self ReloadData];
-//
-//
-//                    //     [self performSelector:@selector(loadpage) withObject:nil afterDelay:1];
-//                    //    [self loadpage];
-//
-//
-//                    //                    if(self.shopCartBlock!=nil)
-//                    //                    {
-//                    //                        UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
-//                    //
-//                    //
-//                    //                        CGRect iv_rect = CGRectMake(self.btnaddCart.center.x-50, self.btnaddCart.center.y-50, 100, 100);
-//                    //                        UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
-//                    //                        iv.image = img;
-//                    //                        //                        [self.contentView addSubview:iv];
-//                    //                        self.shopCartBlock(iv);
-//                    //
-//                    //                    }
-//
-//                }
-//            }
-//            else
-//            {
-//                [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Create Order" controller:self] ;
-//            }
-//
-//
-//
-//
-//        });
-//    });
-}
+//-(void) newoloorder
+//{
+//    NSString* order_code = [[NSUUID new] UUIDString];
+//                                AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//                                appDelegate.order_code = order_code;
+//
+////    NSData* json =[NSData dataWithContentsOfFile:[[NSBundle mainBundle]  pathForResource:URL_SO_CART ofType:@"json" ]];
+//    NSMutableDictionary* cartTemplate=[OLDataProvider loadScanTemplate:@"scan_cart.json"];
+//    RASingleton.sharedInstance.scan_cart=cartTemplate;//[[RAConvertor data2dict:json] mutableCopy];
+//    appDelegate.user_type = USER_ROLE_EMPLOYEE;
+//    appDelegate.can_set_cart_price = true;
+//    appDelegate.can_see_price = true;
+//
+////    __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Create Order" completion:^{
+////        [RANetwork request_create_order:^(NSMutableDictionary *result) {
+////                NSMutableDictionary* return_json =result;
+////
+////                [waitalert dismissViewControllerAnimated:YES completion:^{
+////                    if([[return_json valueForKey:@"result"] intValue]==2)
+////                    {
+////                        int result=[[return_json valueForKey:@"result"] intValue];
+////                        if(result==2)
+////                        {
+////                            //successed.
+////
+////                            NSString* order_code = [return_json valueForKey:@"orderCode"];
+////                            AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+////                            appDelegate.order_code = order_code;
+////                            appDelegate.order_status = [[return_json valueForKey:@"orderStatus"] intValue];
+////
+////
+////        #ifdef RA_NOTIFICATION
+////                            [ActiveViewController Notify:@"CartViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+////        #else
+////                            MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
+////                            [main_vc reloadCart:true immediately:false];
+////        #endif
+////
+//////                            [self ReloadData];
+////
+////
+////                            //     [self performSelector:@selector(loadpage) withObject:nil afterDelay:1];
+////                            //    [self loadpage];
+////
+////
+////                            //                    if(self.shopCartBlock!=nil)
+////                            //                    {
+////                            //                        UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
+////                            //
+////                            //
+////                            //                        CGRect iv_rect = CGRectMake(self.btnaddCart.center.x-50, self.btnaddCart.center.y-50, 100, 100);
+////                            //                        UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
+////                            //                        iv.image = img;
+////                            //                        //                        [self.contentView addSubview:iv];
+////                            //                        self.shopCartBlock(iv);
+////                            //
+////                            //                    }
+////
+////                        }
+////                    }
+////                    else
+////                    {
+////                        [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Create Order" controller:self] ;
+////                    }
+////                }];
+////        //        [waitalert dismissViewControllerAnimated:YES completion:nil];
+////
+////
+////
+////
+////
+////
+////
+////
+////            }];
+////
+////    }];
+//
+////    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
+////
+////        NSDictionary* return_json = [RANetwork new_Order];
+////
+////        dispatch_async(dispatch_get_main_queue(), ^{
+////            [waitalert dismissViewControllerAnimated:YES completion:nil];
+////
+////
+////            if([[return_json valueForKey:@"result"] intValue]==2)
+////            {
+////                int result=[[return_json valueForKey:@"result"] intValue];
+////                if(result==2)
+////                {
+////                    //successed.
+////
+////                    NSString* order_code = [return_json valueForKey:@"orderCode"];
+////                    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+////                    appDelegate.order_code = order_code;
+////                    appDelegate.order_status = [[return_json valueForKey:@"orderStatus"] intValue];
+////
+////
+////#ifdef RA_NOTIFICATION
+////                    [ActiveViewController Notify:@"CartViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+////#else
+////                    MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
+////                    [main_vc reloadCart:true immediately:false];
+////#endif
+////
+////                    [self ReloadData];
+////
+////
+////                    //     [self performSelector:@selector(loadpage) withObject:nil afterDelay:1];
+////                    //    [self loadpage];
+////
+////
+////                    //                    if(self.shopCartBlock!=nil)
+////                    //                    {
+////                    //                        UIImage* img=[self photoStackView:self.photoStack photoForIndex:0];
+////                    //
+////                    //
+////                    //                        CGRect iv_rect = CGRectMake(self.btnaddCart.center.x-50, self.btnaddCart.center.y-50, 100, 100);
+////                    //                        UIImageView* iv = [[UIImageView alloc] initWithFrame:iv_rect];
+////                    //                        iv.image = img;
+////                    //                        //                        [self.contentView addSubview:iv];
+////                    //                        self.shopCartBlock(iv);
+////                    //
+////                    //                    }
+////
+////                }
+////            }
+////            else
+////            {
+////                [RAUtils message_alert:[return_json valueForKey:@"err_msg"] title:@"Create Order" controller:self] ;
+////            }
+////
+////
+////
+////
+////        });
+////    });
+//}
 #endif
 #pragma mark - Table view delegate
 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
@@ -2827,43 +2829,43 @@
         
         
     }
-#ifdef SCANNER_ORDER
-    else if([title isEqualToString:@"Scanner Order"])
-    {
-        
-        OLOSettingViewController * offlineVC =[ [UIStoryboard storyboardWithName:@"OLM" bundle:nil] instantiateViewControllerWithIdentifier:@"OLOSettingViewController"];
-        offlineVC.returnValue=^(int type){
-            if(type == OOC_CREATE_ORDER){
-                [self CreateOfflineOrder];
-            }
-        };
-        //    loginvc.delegate = self;
-        //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
- //       appDelegate.active_controller = gunVC;
-//        gunVC.onDismissVC = ^(){
-//            appDelegate.active_controller = active_vc;
+//#ifdef SCANNER_ORDER
+//    else if([title isEqualToString:@"Scanner Order"])
+//    {
+//
+//        OLOSettingViewController * offlineVC =[ [UIStoryboard storyboardWithName:@"OLM" bundle:nil] instantiateViewControllerWithIdentifier:@"OLOSettingViewController"];
+//        offlineVC.returnValue=^(int type){
+//            if(type == OOC_CREATE_ORDER){
+//                [self CreateOfflineOrder];
+//            }
 //        };
-        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:offlineVC] ;
-        
-        
-        
-        
-        
-        //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
-        
-        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
-        [self presentViewController:navi animated:YES completion:^{
-            
-            //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
-            
-            DebugLog(@"about present.........");
-            
-            //   self.btop = false;
-            //  <#code#>
-        }];
-        
-    }
-#endif
+//        //    loginvc.delegate = self;
+//        //    loginvc.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+// //       appDelegate.active_controller = gunVC;
+////        gunVC.onDismissVC = ^(){
+////            appDelegate.active_controller = active_vc;
+////        };
+//        UINavigationController* navi = [[UINavigationController alloc] initWithRootViewController:offlineVC] ;
+//
+//
+//
+//
+//
+//        //    [self hackModalSheetSize:CGSizeMake(450, 200) ofVC:navi];
+//
+//        navi.modalPresentationStyle = UIModalTransitionStyleCrossDissolve;//有三种状态,自己看看是哪种
+//        [self presentViewController:navi animated:YES completion:^{
+//
+//            //        navi.view.superview.bounds = CGRectMake(0, 0, 480, 320);
+//
+//            DebugLog(@"about present.........");
+//
+//            //   self.btop = false;
+//            //  <#code#>
+//        }];
+//
+//    }
+//#endif
     else if([title isEqualToString:@"Scanner Setting"])
     {
         

+ 3 - 3
RedAnt ERP Mobile/common/Functions/OLO/OLOSettingViewController.m

@@ -53,16 +53,16 @@
     
     
     
-    
+#ifdef SCANNER_ORDER
 
-    if(RASingleton.sharedInstance.enable_OfflineOrder)
     {
         self.switch_enable.on=true;
     }
-    else
+#else
     {
         self.switch_enable.on=false;
     }
+#endif
     // Do any additional setup after loading the view.
 }
 //- (IBAction)onEnableOLOChanged:(id)sender {

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 483 - 444
RedAnt ERP Mobile/common/Functions/OLO/ScanOrderListViewController.m


A diferenza do arquivo foi suprimida porque é demasiado grande
+ 21 - 12
RedAnt ERP Mobile/common/Functions/camscan/ScannerViewController.m


+ 1 - 0
RedAnt ERP Mobile/common/Functions/cart/CartViewController.h

@@ -22,6 +22,7 @@
 @property (strong,nonatomic) NSMutableArray* content_arr;
 @property (strong,nonatomic) NSDictionary* freejson;
 
+@property (weak, nonatomic) IBOutlet UIButton *btnPrice;
 @property (strong,nonatomic) NSString* orderid;
 @property (strong, nonatomic) IBOutlet UIButton *btnselect;
 @property (strong, nonatomic) IBOutlet UIButton *btndelete;

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 858 - 149
RedAnt ERP Mobile/common/Functions/cart/CartViewController.m


+ 12 - 10
RedAnt ERP Mobile/common/Functions/category/CategoryViewController.m

@@ -43,6 +43,8 @@
 #define END_SELECT_PORTFOLIO 5
 
 
+#define PAGE_ITEM 30
+
 @interface CategoryViewController ()
 
 @property (nonatomic,assign) BOOL addAll;
@@ -786,7 +788,7 @@
     if (self.addAll) {
         AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
         
-        [RANetwork request_addall_category:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:self.offset limit:20 alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip orderCode:appDelegate.order_code  addTo:@"cart" completionHandler:^(NSMutableDictionary *result) {
+        [RANetwork request_addall_category:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:self.offset limit:PAGE_ITEM alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip orderCode:appDelegate.order_code  addTo:@"cart" completionHandler:^(NSMutableDictionary *result) {
             
             NSDictionary* return_json = result;
             
@@ -1106,7 +1108,7 @@
     __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Add Models To Portfolio" completion:^{
                     if (self.addAll) {
             //            AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
-                        [RANetwork request_addall_category:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:self.offset limit:20 alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip orderCode:nil  addTo:@"portfolio" completionHandler:^(NSMutableDictionary *result) {
+                        [RANetwork request_addall_category:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:self.offset limit:PAGE_ITEM alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip orderCode:nil  addTo:@"portfolio" completionHandler:^(NSMutableDictionary *result) {
                             
                             NSDictionary* return_json = result;
                             [waitalert dismissViewControllerAnimated:YES completion:^{
@@ -1337,7 +1339,7 @@
     __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Add Models To Wish List" completion:^{
         if (self.addAll) {
                 
-                [RANetwork request_addall_category:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:self.offset limit:20 alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip orderCode:nil  addTo:@"wishlist" completionHandler:^(NSMutableDictionary *result) {
+                [RANetwork request_addall_category:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:self.offset limit:PAGE_ITEM alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip orderCode:nil  addTo:@"wishlist" completionHandler:^(NSMutableDictionary *result) {
                     NSDictionary* return_json = result;
                     [waitalert dismissViewControllerAnimated:YES completion:^{
                         self.addWishBtn.enabled =true;
@@ -1558,7 +1560,7 @@
 
         self.isrefreshing=true;
         
-        [RANetwork request_categorylist:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:self.offset limit:30 alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip completionHandler:^(NSMutableDictionary *result) {
+        [RANetwork request_categorylist:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:self.offset limit:PAGE_ITEM alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip completionHandler:^(NSMutableDictionary *result) {
             NSMutableDictionary* category_more = result;
             
             [self.mum stopAnimating];
@@ -1587,7 +1589,7 @@
                 [self.category_data setObject:items_json forKey:@"items"];
                 self.offset+=count;
                 
-                if(count<30)
+                if(count<PAGE_ITEM)
                 {
                     self.loadall=true;
                     
@@ -1721,7 +1723,7 @@
             
             //        self.collectionview.userInteractionEnabled = false;
             
-            [RANetwork request_categorylist:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:0 limit:30 alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip completionHandler:^(NSMutableDictionary *result) {
+            [RANetwork request_categorylist:self.categoryid customid:0 price_template:0 sort:0 filter:nil keyword:nil offset:0 limit:PAGE_ITEM alert:self.p_alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller modelname:self.modelname modeldescrip:self.modeldescrip completionHandler:^(NSMutableDictionary *result) {
                 NSMutableDictionary* category_data = result;
                 [self.mum stopAnimating];
                 self.isrefreshing=false;
@@ -2962,8 +2964,8 @@
         //        DebugLog(@"frame.size.height %f",frame.size.height);
         //        DebugLog(@"self.collectionview.contentSize.height %f",self.collectionview.contentSize.height);
         
-        if ((contentOffsetPoint.y >= (self.collectionview.contentSize.height - frame.size.height)) || (self.collectionview.contentSize.height < frame.size.height&& [self.category_data[@"count"] intValue]>=30))
-            
+//        if ((contentOffsetPoint.y >= (self.collectionview.contentSize.height - frame.size.height)) || (self.collectionview.contentSize.height < frame.size.height&& [self.category_data[@"count"] intValue]>=30))
+            if (contentOffsetPoint.y >= (self.collectionview.contentSize.height - frame.size.height) && self.collectionview.contentSize.height > frame.size.height)
         {
             
             
@@ -2984,8 +2986,8 @@
         //        DebugLog(@"frame.size.height %f",frame.size.height);
         //        DebugLog(@"self.collectionview.contentSize.height %f",self.collectionview.contentSize.height);
         
-        if (contentOffsetPoint.x >= (self.collectionview.contentSize.width - frame.size.width) || (self.collectionview.contentSize.width < frame.size.width && [self.category_data[@"count"] intValue]>=30))
-            
+//        if (contentOffsetPoint.x >= (self.collectionview.contentSize.width - frame.size.width) || (self.collectionview.contentSize.width < frame.size.width && [self.category_data[@"count"] intValue]>=30))
+            if (contentOffsetPoint.x >= (self.collectionview.contentSize.width - frame.size.width) && self.collectionview.contentSize.width > frame.size.width)
         {
             if(self.isrefreshing)
                 return;

+ 6 - 0
RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.h

@@ -157,4 +157,10 @@ typedef void(^resultHandler)(NSMutableDictionary *result);
 +(void) deleteScanOrder:(NSString*) order_code;
 +(NSMutableDictionary*) loadScanTemplate:(NSString*)file;
 +(NSString*) scanTemplatePath:(NSString*)file;
+//+(NSString*) getScanTempPath;
++(void) createScanTempFolder;
+//+(NSString*) getScanOrderPath;
++(NSString*) getUserPath;
++(NSString*) getScanPath;
++(void) moveScanTemp2Order;
 @end

+ 132 - 12
RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.m

@@ -1915,12 +1915,14 @@ NSString* gprice = [self get_portfolio_price :params[@"contact_id"] item_id:item
 +(void) save2submitScanOrder
 {
     
-        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
-        NSString *documents = [paths objectAtIndex:0];
+//        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+//        NSString *documents = [paths objectAtIndex:0];
         AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
             
+    
+    NSString *userdir = [OLDataProvider getUserPath];
     NSMutableDictionary* orderlist = nil;
-        NSString *orderlistPath = [documents stringByAppendingPathComponent:@"orderlist.json"];
+        NSString *orderlistPath = [userdir stringByAppendingPathComponent:@"orderlist.json"];
     
     
             if (![[NSFileManager defaultManager] fileExistsAtPath:orderlistPath]) {
@@ -1977,6 +1979,120 @@ NSString* gprice = [self get_portfolio_price :params[@"contact_id"] item_id:item
 #endif
     
 }
++(void) createScanTempFolder
+{
+    NSString* scanFilePath = [self getScanTempPath];
+    BOOL bdir=YES;
+    NSFileManager* fileManager = [NSFileManager defaultManager];
+    if(!  [fileManager fileExistsAtPath:scanFilePath isDirectory:&bdir])
+    {
+        
+        NSError *error = nil;
+        bool bsuccess=[fileManager createDirectoryAtPath:scanFilePath withIntermediateDirectories:YES attributes:nil error:&error];
+        
+        if(!bsuccess)
+            DebugLog(@"Create cache folder failed");
+        
+        //        if(bsuccess)
+        //        {
+        //            sqlite3 *db = [self get_db];
+        //
+        //            [self execSql:[NSString stringWithFormat:@"insert into img_cache(name) values('%@')",name] db:db];
+        //            [iSalesDB close_db:db];
+        //        }
+    }
+}
++(NSString*) getScanOrderPath
+{
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+    NSString *documents = [paths objectAtIndex:0];
+    
+    NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"];
+    
+    NSString* servername = addressDic[@"name"];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    NSString* user = appDelegate.user;
+    NSString* orderpath = [documents stringByAppendingPathComponent:servername];
+    orderpath = [orderpath stringByAppendingPathComponent:user];
+    orderpath = [orderpath stringByAppendingPathComponent:appDelegate.order_code];
+    BOOL bdir=YES;
+    NSFileManager* fileManager = [NSFileManager defaultManager];
+    if(!  [fileManager fileExistsAtPath:orderpath isDirectory:&bdir])
+    {
+        
+        NSError *error = nil;
+        bool bsuccess=[fileManager createDirectoryAtPath:orderpath withIntermediateDirectories:YES attributes:nil error:&error];
+        
+        if(!bsuccess)
+            DebugLog(@"Create cache folder failed");
+        
+        //        if(bsuccess)
+        //        {
+        //            sqlite3 *db = [self get_db];
+        //
+        //            [self execSql:[NSString stringWithFormat:@"insert into img_cache(name) values('%@')",name] db:db];
+        //            [iSalesDB close_db:db];
+        //        }
+    }
+    return orderpath;
+}
++(NSString*) getScanTempPath
+{
+    
+    if(RASingleton.sharedInstance.scan_temp_code == nil)
+        RASingleton.sharedInstance.scan_temp_code = [self createScanTempCode];
+    return [NSTemporaryDirectory() stringByAppendingPathComponent:RASingleton.sharedInstance.scan_temp_code];
+}
++(void) moveScanTemp2Order
+{
+    NSString *orderdir = [OLDataProvider getScanOrderPath];
+            NSError *error = nil;
+    NSString* tempdir = [OLDataProvider getScanTempPath];
+    
+    NSArray* arr_files=[RAUtils allFilesAtPath:tempdir];
+    for(int i=0;i<arr_files.count;i++)
+    {
+        NSString* file=arr_files[i];
+        
+        
+    }
+    [ [NSFileManager defaultManager] moveItemAtPath:[tempdir stringByAppendingPathComponent:@"cart.json"] toPath:[orderdir stringByAppendingPathComponent:@"cart.json"] error:&error];
+    
+
+}
+
++(NSString*) getUserPath
+{
+    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+    NSString *documents = [paths objectAtIndex:0];
+    
+    NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"];
+    
+    NSString* servername = addressDic[@"name"];
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    NSString* user = appDelegate.user;
+    NSString* userpath = [documents stringByAppendingPathComponent:servername];
+    userpath = [userpath stringByAppendingPathComponent:user];
+    return userpath;
+}
++(NSString*) getScanPath
+{
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.order_code!=nil)
+    {
+        return [self getScanOrderPath];
+    }
+    else
+    {
+        [self createScanTempFolder];
+        return [self getScanTempPath];
+    }
+}
+
++(NSString*) createScanTempCode
+{
+    return [[NSUUID new] UUIDString];
+}
 
 +(NSString*) scanTemplatePath:(NSString*)file
 {
@@ -1998,10 +2114,12 @@ NSString* gprice = [self get_portfolio_price :params[@"contact_id"] item_id:item
 +(void) deleteScanOrder:(NSString*) order_code
 {
     
+    NSString *userdir = [OLDataProvider getUserPath];
+    
     if(order_code.length==0)
         return;
-        NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
-        NSString *documents = [paths objectAtIndex:0];
+//        orderdirNSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+//        NSString *documents = [paths objectAtIndex:0];
         AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
             
     
@@ -2012,15 +2130,17 @@ NSString* gprice = [self get_portfolio_price :params[@"contact_id"] item_id:item
         appDelegate.customerInfo = nil;
         RASingleton.sharedInstance.scan_cart = nil;
         appDelegate.contact_id = nil;
-        [appDelegate updateScanButton:false];
+//        [appDelegate updateScanButton:false];
 
         [appDelegate update_count_mark];
     }
     //删除订单目录
-    [[NSFileManager defaultManager] removeItemAtPath:[documents stringByAppendingPathComponent:order_code] error:nil];
+    [[NSFileManager defaultManager] removeItemAtPath:[userdir stringByAppendingPathComponent:order_code] error:nil];
     //维护订单列表
     NSMutableDictionary* orderlist = nil;
-        NSString *orderlistPath = [documents stringByAppendingPathComponent:@"orderlist.json"];
+    
+
+        NSString *orderlistPath = [userdir stringByAppendingPathComponent:@"orderlist.json"];
     
     
             if (![[NSFileManager defaultManager] fileExistsAtPath:orderlistPath]) {
@@ -2084,12 +2204,12 @@ NSString* gprice = [self get_portfolio_price :params[@"contact_id"] item_id:item
 {
     if(cart==nil)
         return;
-    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
-    NSString *documents = [paths objectAtIndex:0];
-    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+//    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+//    NSString *documents = [paths objectAtIndex:0];
+//    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
         
         
-    NSString *orderdir = [documents stringByAppendingPathComponent:appDelegate.order_code];
+    NSString *orderdir = [self getScanPath];
     
     NSString *cartpath = [orderdir stringByAppendingPathComponent:@"cart.json"];
     

+ 32 - 20
RedAnt ERP Mobile/common/Functions/order/CreateOrderViewController.m

@@ -638,7 +638,7 @@
             __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Release Order" completion:^{
                 
 #ifdef SCANNER_ORDER
-      if(RASingleton.sharedInstance.enable_OfflineOrder)
+//      if(RASingleton.sharedInstance.enable_OfflineOrder)
       {
           [waitalert dismissViewControllerAnimated:YES completion:^{
               [OLDataProvider deleteScanOrder:appDelegate.order_code];
@@ -848,18 +848,18 @@
         upparams[@"shipping"] = nil;
     
     
+#ifdef SCANNER_ORDER
     
-    
-    if(RASingleton.sharedInstance.enable_OfflineOrder)
+//    if(RASingleton.sharedInstance.enable_OfflineOrder)
     {
         
         NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
-        NSString *documents = [paths objectAtIndex:0];
+//        NSString *documents = [paths objectAtIndex:0];
         AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
             
             
-        NSString *orderdir = [documents stringByAppendingPathComponent:appDelegate.order_code];
-        
+        NSString *orderdir = [OLDataProvider getScanPath];
+        NSString* userdir = [OLDataProvider getUserPath];
         NSString *orderPath = [orderdir stringByAppendingPathComponent:@"order.json"];
         
         
@@ -879,7 +879,7 @@
         
         NSString *cartpath = [orderdir stringByAppendingPathComponent:@"cart.json"];
         
-        
+        RASingleton.sharedInstance.scan_cart[@"price_type"] = @(RASingleton.sharedInstance.price_type);
         
         [RAUtils dicttofile:cartpath dict:RASingleton.sharedInstance.scan_cart];
         
@@ -887,7 +887,9 @@
         
         
         NSMutableDictionary* orderlist = nil;
-            NSString *orderlistPath = [documents stringByAppendingPathComponent:@"orderlist.json"];
+        
+        
+            NSString *orderlistPath = [userdir stringByAppendingPathComponent:@"orderlist.json"];
         
         
                 if (![[NSFileManager defaultManager] fileExistsAtPath:orderlistPath]) {
@@ -910,7 +912,7 @@
         
         NSMutableDictionary* orderitem = [NSMutableDictionary new];
         orderitem[@"create_by"] = appDelegate.user;
-        orderitem[@"price"] = upparams[@"total_price"];
+        orderitem[@"price"] = upparams[@"totalPrice"];
         orderitem[@"customer_name"] = upparams[@"customer_contact"];
         orderitem[@"purchase_time"] = [RAUtils current_date_time];
         orderitem[@"order_status"] = @"Saved Order";
@@ -947,7 +949,7 @@
 #endif
         return;
     }
-    
+#endif
     
     
     
@@ -2377,10 +2379,11 @@
         
      
         NSDictionary* params = @{
-                                
-                                 @"password" : @"usai2010",
-                               
-                                 @"md5":md5
+            @"site_name":[RADataProvider getSiteName],
+            @"user":Appdelegate.user,
+            @"_method":@"uploadOfflineOrder",
+            @"password" : Appdelegate.password,
+            @"md5":md5
                                  };
         task[@"params"]=params;
         
@@ -2693,9 +2696,9 @@
     
     
     
-
+#ifdef SCANNER_ORDER
     
-    if(RASingleton.sharedInstance.enable_OfflineOrder)
+//    if(RASingleton.sharedInstance.enable_OfflineOrder)
     {
         
         
@@ -2705,7 +2708,7 @@
         AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
             
             
-        NSString *orderdir = [documents stringByAppendingPathComponent:appDelegate.order_code];
+        NSString *orderdir = [OLDataProvider getScanPath];
         
         
 //
@@ -2797,7 +2800,7 @@
         
         NSString *cartpath = [orderdir stringByAppendingPathComponent:@"cart.json"];
         
-        
+        RASingleton.sharedInstance.scan_cart[@"price_type"] = @(RASingleton.sharedInstance.price_type);
         
         [RAUtils dicttofile:cartpath dict:RASingleton.sharedInstance.scan_cart];
         
@@ -2830,7 +2833,9 @@
             r = [zip addFileToZip:file newname:[file lastPathComponent]];
         }
         
-        NSString * filepath= [appDelegate.order_code stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.zip",appDelegate.order_code]];
+        NSString * filepath=[[RADataProvider getSiteName] stringByAppendingPathComponent:appDelegate.user];
+        filepath=[filepath stringByAppendingPathComponent:appDelegate.order_code];
+        filepath=[filepath stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.zip",appDelegate.order_code]];
             if( ![zip CloseZipFile2] )
             {
                 zippath = @"";
@@ -2845,7 +2850,14 @@
         [OLDataProvider save2submitScanOrder];
         
         [appDelegate closeOrder];
+        RASingleton.sharedInstance.scan_cart = nil;
         
+        #ifdef RA_NOTIFICATION
+                            [ActiveViewController Notify:@"CartViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+        #else
+                            MainViewController* main_vc=(MainViewController*)appDelegate.main_vc;
+                            [main_vc reloadCart:true immediately:false];
+        #endif
         
 //
 
@@ -2863,7 +2875,7 @@
         return;
     }
     
-    
+#endif
     
     [upparams setValue:@"false" forKey:@"isHold"];
     __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Order Submission" completion:^{

+ 13 - 10
RedAnt ERP Mobile/common/Functions/search+itemsearch/ItemSearchViewController.m

@@ -28,6 +28,9 @@
 #define  LABEL_MARGIN 5
 #define END_SELECT_PORTFOLIO 5
 
+
+#define PAGE_ITEM 30
+
 @interface ItemSearchViewController ()
 
 @property (nonatomic,assign) BOOL addAll;
@@ -562,7 +565,7 @@
         
         self.isrefreshing=true;
         
-        [RANetwork request_itemsearch:self.offset limit:30 covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller completionHandler:^(NSMutableDictionary *result) {
+        [RANetwork request_itemsearch:self.offset limit:PAGE_ITEM covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller completionHandler:^(NSMutableDictionary *result) {
             NSDictionary* category_more=result;
             [self.mum stopAnimating];
             self.isrefreshing=false;
@@ -589,7 +592,7 @@
                 [self.category_data setObject:items_json forKey:@"items"];
                 self.offset+=count;
                 
-                if(count<30)
+                if(count<PAGE_ITEM)
                 {
                     self.loadall=true;
                     
@@ -751,7 +754,7 @@
          self.mum.hidden = false;
          [self.mum startAnimating];
          
-         [RANetwork request_itemsearch:0 limit:30 covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller completionHandler:^(NSMutableDictionary *result) {
+         [RANetwork request_itemsearch:0 limit:PAGE_ITEM covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller completionHandler:^(NSMutableDictionary *result) {
              NSDictionary* category_data=result;
            [self.mum stopAnimating];
            self.isrefreshing=false;
@@ -1305,7 +1308,7 @@
             if (self.addAll) {
                 AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
                 
-                [RANetwork request_addall_itemsearch:self.offset limit:20 covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller orderCode:appDelegate.order_code addTo:@"cart" completionHandler:^(NSMutableDictionary *result) {
+                [RANetwork request_addall_itemsearch:self.offset limit:PAGE_ITEM covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller orderCode:appDelegate.order_code addTo:@"cart" completionHandler:^(NSMutableDictionary *result) {
                             NSDictionary* return_json =result;
                     [waitalert dismissViewControllerAnimated:YES completion:^{
                         self.addCartBtn.enabled = true;
@@ -1619,7 +1622,7 @@
     
     __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Add Models To Portfolio" completion:^{
                     if (self.addAll) {
-                        [RANetwork request_addall_itemsearch:self.offset limit:20 covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller orderCode:nil addTo:@"portfolio" completionHandler:^(NSMutableDictionary *result) {
+                        [RANetwork request_addall_itemsearch:self.offset limit:PAGE_ITEM covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller orderCode:nil addTo:@"portfolio" completionHandler:^(NSMutableDictionary *result) {
                             NSDictionary* return_json = result;
                             [waitalert dismissViewControllerAnimated:YES completion:^{
                                 self.addPortfolioBtn.enabled =true;
@@ -1839,7 +1842,7 @@
     __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Add Models To Wish List" completion:^{
         if (self.addAll) {
             
-                        [RANetwork request_addall_itemsearch:self.offset limit:20 covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller orderCode:nil addTo:@"wishlist" completionHandler:^(NSMutableDictionary *result) {
+                        [RANetwork request_addall_itemsearch:self.offset limit:PAGE_ITEM covertype:self.covertype ctgid:self.ctgid modelname:self.modelname modeldescrip:self.modeldescrip alert:self.alert qty:self.p_QTY available:self.p_available price:self.p_price bestseller:self.p_bestseller orderCode:nil addTo:@"wishlist" completionHandler:^(NSMutableDictionary *result) {
                             NSDictionary* return_json = result;
                             [waitalert dismissViewControllerAnimated:YES completion:^{
                                 self.addWishBtn.enabled =true;
@@ -2698,8 +2701,8 @@
         DebugLog(@"frame.size.height %f",frame.size.height);
         DebugLog(@"self.collectionview.contentSize.height %f",self.collectionview.contentSize.height);
         
-        if ((contentOffsetPoint.y >= (self.collectionview.contentSize.height - frame.size.height)) || (self.collectionview.contentSize.height < frame.size.height&& [self.category_data[@"count"] intValue]>=30))
-            
+//        if ((contentOffsetPoint.y >= (self.collectionview.contentSize.height - frame.size.height)) || (self.collectionview.contentSize.height < frame.size.height&& [self.category_data[@"count"] intValue]>=PAGE_ITEM))
+        if (contentOffsetPoint.y >= (self.collectionview.contentSize.height - frame.size.height) && self.collectionview.contentSize.height > frame.size.height)
         {
             if(self.isrefreshing)
                 return;
@@ -2718,8 +2721,8 @@
         DebugLog(@"frame.size.height %f",frame.size.height);
         DebugLog(@"self.collectionview.contentSize.height %f",self.collectionview.contentSize.height);
         
-        if (contentOffsetPoint.x >= (self.collectionview.contentSize.width - frame.size.width) || (self.collectionview.contentSize.width < frame.size.width && [self.category_data[@"count"] intValue]>=30))
-            
+//        if (contentOffsetPoint.x >= (self.collectionview.contentSize.width - frame.size.width) || (self.collectionview.contentSize.width < frame.size.width && [self.category_data[@"count"] intValue]>=PAGE_ITEM))
+            if (contentOffsetPoint.x >= (self.collectionview.contentSize.width - frame.size.width) && self.collectionview.contentSize.width > frame.size.width)
         {
             if(self.isrefreshing)
                 return;

+ 16 - 13
RedAnt ERP Mobile/common/Functions/search+itemsearch/SearchViewController.m

@@ -25,6 +25,8 @@
 #define  LABEL_MARGIN 5
 #define END_SELECT_PORTFOLIO 5
 
+#define PAGE_ITEM 30
+
 @interface SearchViewController ()
 
 @property (nonatomic,assign) BOOL addAll;
@@ -935,7 +937,7 @@
     __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Add Models To Cart" completion:^{
         if (self.addAll)
         {
-            [RANetwork request_addall_search:self.offset limit:20 keywords:self.keywords matchfull:self.loadmore_matchfull orderCode:appDelegate.order_code addTo:@"cart" completionHandler:^(NSMutableDictionary *result) {
+            [RANetwork request_addall_search:self.offset limit:PAGE_ITEM keywords:self.keywords matchfull:self.loadmore_matchfull orderCode:appDelegate.order_code addTo:@"cart" completionHandler:^(NSMutableDictionary *result) {
                 {
                     
                     NSDictionary* return_json=result;
@@ -1229,7 +1231,7 @@
     
     __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Add Models To Portfolio" completion:^{
         if (self.addAll) {
-            [RANetwork request_addall_search:self.offset limit:20 keywords:self.keywords matchfull:self.loadmore_matchfull orderCode:nil addTo:@"portfolio" completionHandler:^(NSMutableDictionary *result) {
+            [RANetwork request_addall_search:self.offset limit:PAGE_ITEM keywords:self.keywords matchfull:self.loadmore_matchfull orderCode:nil addTo:@"portfolio" completionHandler:^(NSMutableDictionary *result) {
                 NSMutableDictionary* return_json = result;
                 [waitalert dismissViewControllerAnimated:YES completion:^{
                     self.addPortfolioBtn.enabled =true;
@@ -1461,7 +1463,7 @@
     __block UIAlertController * waitalert = [RAUtils waiting_alert:self title:@"Add Models To Wish List" completion:^{
         if (self.addAll) {
             
-            [RANetwork request_addall_search:self.offset limit:20 keywords:self.keywords matchfull:self.loadmore_matchfull orderCode:nil addTo:@"wishlist" completionHandler:^(NSMutableDictionary *result) {
+            [RANetwork request_addall_search:self.offset limit:PAGE_ITEM keywords:self.keywords matchfull:self.loadmore_matchfull orderCode:nil addTo:@"wishlist" completionHandler:^(NSMutableDictionary *result) {
                 NSDictionary* return_json =result;
                 //            [waitalert dismissViewControllerAnimated:YES completion:nil];
                 [waitalert dismissViewControllerAnimated:YES completion:^{
@@ -1675,7 +1677,7 @@
         
         self.isrefreshing=true;
         
-        [RANetwork request_search:self.offset limit:30 keywords:self.keywords matchfull:self.loadmore_matchfull completionHandler:^(NSMutableDictionary *result) {
+        [RANetwork request_search:self.offset limit:PAGE_ITEM keywords:self.keywords matchfull:self.loadmore_matchfull completionHandler:^(NSMutableDictionary *result) {
             NSMutableDictionary* category_more=result;
             
             [self.mum stopAnimating];
@@ -1703,7 +1705,7 @@
                 [items_json setValue: [NSString stringWithFormat:@"%ld",newcount] forKey:@"count"];
                 [self.category_data setObject:items_json forKey:@"items"];
                 self.offset+=count;
-                if(count<30)
+                if(count<PAGE_ITEM)
                 {
                     self.loadall=true;
                     
@@ -1844,6 +1846,7 @@
     if (self.dataOperationQueue.operationCount > 1) {
         return;
     }
+
     dispatch_async(dispatch_get_main_queue(), ^{
         if(self.isrefreshing)
             return;
@@ -1861,7 +1864,7 @@
         self.mum.hidden = false;
         [self.mum startAnimating];
         self.loadmore_matchfull = self.switch_matchfull.isOn;
-        [RANetwork request_search:0 limit:30 keywords:self.keywords
+        [RANetwork request_search:0 limit:PAGE_ITEM keywords:self.keywords
                         matchfull:self.loadmore_matchfull completionHandler:^(NSMutableDictionary *result) {
             NSMutableDictionary* category_data=result;
             
@@ -2660,8 +2663,8 @@
         DebugLog(@"frame.size.height %f",frame.size.height);
         DebugLog(@"self.collectionview.contentSize.height %f",self.collectionview.contentSize.height);
         
-        if ((contentOffsetPoint.y >= (self.collectionview.contentSize.height - frame.size.height)) || (self.collectionview.contentSize.height < frame.size.height && [self.category_data[@"count"] intValue]>=30))
-            
+//        if ((contentOffsetPoint.y >= (self.collectionview.contentSize.height - frame.size.height)) || (self.collectionview.contentSize.height < frame.size.height && [self.category_data[@"count"] intValue]>=30))
+        if (contentOffsetPoint.y >= (self.collectionview.contentSize.height - frame.size.height) && self.collectionview.contentSize.height > frame.size.height)
         {
             if(self.isrefreshing)
                 return;
@@ -2676,12 +2679,12 @@
     {
         
         
-        DebugLog(@"contentOffsetPoint %f",contentOffsetPoint.y);
-        DebugLog(@"frame.size.height %f",frame.size.height);
-        DebugLog(@"self.collectionview.contentSize.height %f",self.collectionview.contentSize.height);
+        DebugLog(@"contentOffsetPoint %f",contentOffsetPoint.x);
+        DebugLog(@"frame.size.width %f",frame.size.width);
+        DebugLog(@"self.collectionview.contentSize.width %f",self.collectionview.contentSize.width);
         
-        if (contentOffsetPoint.x >= (self.collectionview.contentSize.width - frame.size.width) || (self.collectionview.contentSize.width < frame.size.width && [self.category_data[@"count"] intValue]>=30))
-            
+//        if (contentOffsetPoint.x >= (self.collectionview.contentSize.width - frame.size.width) || (self.collectionview.contentSize.width < frame.size.width && [self.category_data[@"count"] intValue]>=PAGE_ITEM))
+        if (contentOffsetPoint.x >= (self.collectionview.contentSize.width - frame.size.width) && self.collectionview.contentSize.width > frame.size.width)
         {
             if(self.isrefreshing)
                 return;

+ 4 - 0
RedAnt ERP Mobile/common/Functions/sidemenu/LoginViewController.h

@@ -9,6 +9,10 @@
 #import <UIKit/UIKit.h>
 #import "RANetwork.h"
 #import "AESCrypt.h"
+
+#ifdef SCANNER_ORDER
+#import "SignUpViewController.h"
+#endif
 //#import "MyAutocompleteView.h"
 @class LoginViewController;
 @protocol LoginViewControllerDelegate <NSObject>

+ 22 - 0
RedAnt ERP Mobile/common/Functions/sidemenu/LoginViewController.m

@@ -334,6 +334,13 @@
                         }
                         [defaults synchronize];
                         
+#ifdef SCANNER_ORDER
+                        
+                    
+        [ActiveViewController Notify:@"ScanOrderListViewController" Message:RA_NOTIFICATION_RELOAD_DATA];
+                    
+#endif
+                        
                         [self dismissViewControllerAnimated:YES completion:^{
                             
                             NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
@@ -772,6 +779,21 @@
     nav.modalPresentationStyle = UIModalPresentationFormSheet;
     
     [self presentViewController:nav animated:YES completion:nil];
+    return;
+#endif
+    
+#ifdef SCANNER_ORDER
+    SignUpViewController * vc =[[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"SignUpViewController"];
+
+    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
+    nav.modalPresentationStyle = UIModalPresentationFormSheet;
+    
+    
+    
+    
+    nav.modalPresentationStyle = UIModalPresentationFormSheet;//有三种状态,自己看看是哪种
+    [self presentViewController:nav animated:YES completion:nil];
+    return;
 #endif
     
 }

+ 5 - 1
RedAnt ERP Mobile/common/RASingleton.h

@@ -39,8 +39,12 @@ typedef enum {
 @property (nonatomic,assign) BOOL currentOrderIsMerged;///<当前打开的订单是否为Purchas Order
 @property (nonatomic,strong) NSDictionary *customerInfo;///<登录账号信息
 ///
-@property bool enable_OfflineOrder; // 离线订单开关
+//@property bool enable_OfflineOrder; // 离线订单开关
 @property (nonatomic,strong) NSMutableDictionary *scan_cart;///<购物车
+@property (nonatomic,strong) NSMutableArray *scan_list;///<购物车
+@property (nonatomic,strong) NSString *scan_temp_code;///<扫码订单创建前的零时单号
+//@property int price_index; //qr code 里的价格位置
+@property int price_type; //当前设置的价格类型
 ///
 ///
 ///

+ 8 - 0
RedAnt ERP Mobile/common/data_provider/RADataProvider.h

@@ -16,6 +16,14 @@ NS_ASSUME_NONNULL_BEGIN
 +(void)request_editor:(NSString*) request_url params:(NSMutableDictionary*)params completionHandler:(resultHandler)result;
 +(void)request_commoneditor_partialrefresh: (NSMutableDictionary*)params url:(NSString*)url completionHandler:(resultHandler)result;
 +(void)SaveEditor:(NSMutableDictionary*)params completionHandler:(resultHandler)result;
+
+
++(void)request_scansearch:(long ) offset limit :(long)limit keywords :(NSString*) keywords completionHandler:(resultHandler)result;
++(void)request_scan_server:(resultHandler)result;
++(void)request_sign_up:user email:(NSString*)email password:(NSString*) pwd completionHandler:(resultHandler)result;
++(void)request_validate_scan_server:(NSString*)url name:(NSString*)name password:(NSString*)password completionHandler:(resultHandler)result;
++(NSString*)getSiteName;
++(void)request_change_password:(NSString*) pwd completionHandler:(resultHandler)result;
 @end
 
 NS_ASSUME_NONNULL_END

+ 145 - 0
RedAnt ERP Mobile/common/data_provider/RADataProvider.m

@@ -10,6 +10,151 @@
 
 @implementation RADataProvider
 
++(void) request_scan_server :(resultHandler)result
+{
+    
+    NSMutableDictionary* param = [NSMutableDictionary new];
+    param[@"_method"]=@"hostList";
+    [self request_interface:URL_SERVER_LIST parameters:param err_record_url:nil completionHandler:result retry:0];
+}
+
++(void)request_validate_scan_server:(NSString*)url name:(NSString*)name password:(NSString*)password completionHandler:(resultHandler)result
+{
+    NSMutableDictionary* param = [NSMutableDictionary new];
+    param[@"_method"]=@"hostCheck";
+    param[@"password"]=password;
+    param[@"site_name"]=name;
+//    param[@"url"]=url;
+    
+    NSString* check_url = [NSString stringWithFormat:@"%@%@",url,URL_SERVER_CHECK];
+    [self request_interface:check_url parameters:param err_record_url:nil completionHandler:result retry:0];
+}
++(NSString*)getSiteName
+{
+    NSDictionary *addressDic = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanAddress"];;
+    if (addressDic) {
+        NSString* ia=addressDic[@"internalAddress"];
+        NSString* ea=addressDic[@"externalAddress"];
+        NSString* sa=addressDic[@"serverAddress"];
+        if(sa.length==0)
+        {
+            if(ea.length>0)
+                sa=ea;
+            else if(ia.length>0)
+            sa=ia;
+        }
+       
+       return [addressDic objectForKey:@"name"];
+    }
+    return @"";
+}
++(void)request_change_password:(NSString*) pwd completionHandler:(resultHandler)result
+{
+    
+
+    
+    AppDelegate *appDelegate = nil;
+    
+    appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
+    NSMutableDictionary* param = [NSMutableDictionary new];
+    param[@"_method"]=@"changePasswordOfflineOrderUser";
+    param[@"opsw"]=appDelegate.password;
+    param[@"npsw"]=pwd;
+    param[@"user"]=appDelegate.user;
+    param[@"site_name"]=[self getSiteName];
+//    param[@"url"]=url;
+    
+    
+    NSString* url = [appDelegate.address stringByAppendingPathComponent:URL_CHANGE_PASSWORD];
+    [self request_interface:url parameters:param err_record_url:nil completionHandler:result retry:0];
+}
++(void)request_sign_up:user email:(NSString*)email password:(NSString*) pwd completionHandler:(resultHandler)result
+{
+    
+
+    
+    AppDelegate *appDelegate = nil;
+    
+    appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
+    NSMutableDictionary* param = [NSMutableDictionary new];
+    param[@"_method"]=@"registerOfflineOrderUser";
+    param[@"password"]=pwd;
+    param[@"email"]=email;
+    param[@"user"]=user;
+    param[@"site_name"]=[self getSiteName];
+//    param[@"url"]=url;
+    
+    
+    NSString* url = [appDelegate.address stringByAppendingPathComponent:URL_SIGN_UP];
+    [self request_interface:url parameters:param err_record_url:nil completionHandler:result retry:0];
+}
++(void)request_change_password:user oldpassword:(NSString*)opwd newpassword:(NSString*) npwd completionHandler:(resultHandler)result
+{
+    
+
+    
+    AppDelegate *appDelegate = nil;
+    
+    appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
+    NSMutableDictionary* param = [NSMutableDictionary new];
+    param[@"_method"]=@"changePasswordOfflineOrderUser";
+    param[@"opsw"]=opwd;
+    param[@"password"]=opwd;
+    param[@"npsw"]=npwd;
+    param[@"user"]=user;
+    param[@"site_name"]=[self getSiteName];
+//    param[@"url"]=url;
+    
+    
+    NSString* url = [appDelegate.address stringByAppendingPathComponent:URL_SIGN_UP];
+    [self request_interface:url parameters:param err_record_url:nil completionHandler:result retry:0];
+}
+
++(void)request_scansearch:(long ) offset limit :(long)limit keywords :(NSString*) keywords completionHandler:(resultHandler)result
+{
+    
+    
+    
+    
+    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
+    AppDelegate *appDelegate = nil;
+    
+    appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
+//    if(appDelegate.user!=nil)
+//        [params setValue:appDelegate.user forKey:@"user"];
+//    if(appDelegate.contact_id!=nil)
+//        [params setValue:appDelegate.contact_id forKey:@"contactId"];
+//    if(appDelegate.password!=nil)
+//        [params setValue:appDelegate.password forKey:@"password"];
+//    if(appDelegate.order_code!=nil)
+//        [params setValue:appDelegate.order_code forKey:@"orderCode"];
+    //    [params setValue:[NSString stringWithFormat:@"%d",price_template]  forKey:@"price_template"];
+    //    [params setValue:[NSString stringWithFormat:@"%d",customid]  forKey:@"custom_id"];
+    //    [params setValue:[NSString stringWithFormat:@"%@",category]  forKey:@"category"];
+    //    [params setValue:[NSString stringWithFormat:@"%d",sort_by]  forKey:@"sort_by"];
+    //    [params setValue:filter forKey:@"filter"];
+    [params setValue:keywords forKey:@"keyword"];
+    [params setValue:@"search" forKey:@"_method"];
+    params[@"site_name"]=[self getSiteName];
+    [params setValue:[NSString stringWithFormat:@"%ld",limit]  forKey:@"limit"];
+    [params setValue:[NSString stringWithFormat:@"%ld",offset]  forKey:@"offset"];
+ 
+
+    [self request_interface:URL_SEARCH parameters:params err_record_url:nil completionHandler:result retry:0];
+    //    if(appDelegate.offline_mode)
+    //    {
+    //        return [OLDataProvider offline_search:params];
+    //    }
+    //    if(![self IsNetworkAvailable])
+    //        return [RAUtils error_json:RESULT_NET_NOTAVAILABLE err_msg:nil];
+    //
+    //    NSData* json=[self get_json:URL_SEARCH parameters:params];
+    //    if(json==nil)
+    //        return nil;
+    //    NSError *error=nil;
+    //    NSDictionary *jsobj = [NSJSONSerialization JSONObjectWithData:json options:NSJSONReadingMutableLeaves error:&error];
+    //    return jsobj;
+}
 +(void)request_editor:(NSString*) request_url params:(NSMutableDictionary*)params completionHandler:(resultHandler)result
 {
     //    NSMutableDictionary* params = [[NSMutableDictionary alloc] init];

+ 52 - 20
RedAnt ERP Mobile/common/data_provider/RANetwork.m

@@ -15,6 +15,7 @@
 #import "RAConvertor.h"
 #import "ActiveViewController.h"
 #import "ZipArchive.h"
+#import "RADataProvider.h"
 
 NSString *const kScreenName = @"kScreenName";
 NSString *const kAction = @"kAction";
@@ -5339,7 +5340,17 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
         return;
         
     }
-    [self request_interface:URL_UPDATE_AUTH parameters:params err_record_url:nil completionHandler:^(NSMutableDictionary *chresult) {
+    
+    NSString* url;
+#ifdef SCANNER_ORDER
+    params[@"site_name"]=[RADataProvider getSiteName];
+    params[@"_method"]=@"login";
+    url = [appDelegate.address stringByAppendingPathComponent:URL_UPDATE_AUTH];
+    
+#else
+    url = URL_UPDATE_AUTH;
+#endif
+    [self request_interface:url parameters:params err_record_url:nil completionHandler:^(NSMutableDictionary *chresult) {
         int ret = [self parse_logininfo:chresult user:user password:password] ;
         
         
@@ -5430,9 +5441,10 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
         //        app.applicationIconBadgeNumber = ibadge;//[strbadge intValue];
         
         //  BOOL bigger = [appDelegate.build compare:required_ver] ;
-        
+#ifndef SCANNER_ORDER
         if([appDelegate.build intValue]<[required_ver intValue])
             return RESULT_VER_LOW;
+#endif
         //        appDelegate.sessionid = [objheader valueForKey:@"sessionid"];
         appDelegate.user = user;
         appDelegate.password = password;
@@ -6976,7 +6988,7 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
 #ifdef SCANNER_ORDER
  
     
-    if(RASingleton.sharedInstance.enable_OfflineOrder)
+//    if(RASingleton.sharedInstance.enable_OfflineOrder)
     {
 //        appDelegate.cart_count = [[RASingleton.sharedInstance.scan_cart valueForKey:@"cart_count"] intValue];
 //
@@ -7126,10 +7138,17 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
         return;
     }
     
-    [self request_interface:URL_DELETE_ACCOUNT parameters:params err_record_url:nil completionHandler:^(NSMutableDictionary *resulti) {
-     
-        result(resulti);
-    } retry:0];
+#ifdef SCANNER_ORDER
+    params[@"site_name"]=[RADataProvider getSiteName];
+    params[@"_method"]=@"cancelOfflineOrderUser";
+    
+    NSString* url = [appDelegate.address stringByAppendingPathComponent:URL_DELETE_ACCOUNT];
+    [self request_interface:url parameters:params err_record_url:nil completionHandler:result retry:0];
+#else
+    [self request_interface:URL_DELETE_ACCOUNT parameters:params err_record_url:nil completionHandler:result retry:0];
+#endif
+    
+   
 }
 
 +(void) request_create_order:(resultHandler)result
@@ -7368,8 +7387,8 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
     
     appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
     
-    
-    if(RASingleton.sharedInstance.enable_OfflineOrder)
+#ifdef SCANNER_ORDER
+//    if(RASingleton.sharedInstance.enable_OfflineOrder)
     {
         appDelegate.cart_count = [[RASingleton.sharedInstance.scan_cart valueForKey:@"cart_count"] intValue];
         
@@ -7378,7 +7397,7 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
         result(RASingleton.sharedInstance.scan_cart);
         return;
     }
-    
+#endif
     
     if(appDelegate.user!=nil)
         [params setValue:appDelegate.user forKey:@"user"];
@@ -8935,7 +8954,8 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
     NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
     AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
     
-    if(RASingleton.sharedInstance.enable_OfflineOrder)
+#ifdef SCANNER_ORDER
+//    if(RASingleton.sharedInstance.enable_OfflineOrder)
     {
 //        appDelegate.cart_count = [[RASingleton.sharedInstance.scan_cart valueForKey:@"cart_count"] intValue];
 //
@@ -8958,7 +8978,7 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
         result(RASingleton.sharedInstance.scan_cart);
         return;
     }
-    
+#endif
     
     if(appDelegate.user!=nil)
         [params setValue:appDelegate.user forKey:@"user"];
@@ -9015,8 +9035,8 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
 {
     NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
     AppDelegate *appDelegate = nil;
-    
-    if(RASingleton.sharedInstance.enable_OfflineOrder)
+#ifdef SCANNER_ORDER
+//    if(RASingleton.sharedInstance.enable_OfflineOrder)
     {
 //        appDelegate.cart_count = [[RASingleton.sharedInstance.scan_cart valueForKey:@"cart_count"] intValue];
 //
@@ -9027,6 +9047,7 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
         result(RASingleton.sharedInstance.scan_cart);
         return;
     }
+#endif
     appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
     if(appDelegate.user!=nil)
         [params setValue:appDelegate.user forKey:@"user"];
@@ -9089,8 +9110,8 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
     
     appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
     
-    
-    if(RASingleton.sharedInstance.enable_OfflineOrder)
+#ifdef SCANNER_ORDER
+//    if(RASingleton.sharedInstance.enable_OfflineOrder)
     {
 //        appDelegate.cart_count = [[RASingleton.sharedInstance.scan_cart valueForKey:@"cart_count"] intValue];
 //
@@ -9113,7 +9134,7 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
         result(RASingleton.sharedInstance.scan_cart);
         return;
     }
-    
+#endif
     if(appDelegate.user!=nil)
         [params setValue:appDelegate.user forKey:@"user"];
     if(appDelegate.contact_id!=nil)
@@ -10315,8 +10336,9 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
     
     appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
     
-    
-    if(RASingleton.sharedInstance.enable_OfflineOrder)
+#ifdef SCANNER_ORDER
+    return;
+//    if(RASingleton.sharedInstance.enable_OfflineOrder)
     {
 //        appDelegate.cart_count = [[RASingleton.sharedInstance.scan_cart valueForKey:@"cart_count"] intValue];
 //
@@ -10343,7 +10365,7 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
         result(RASingleton.sharedInstance.scan_cart);
         return;
     }
-    
+#endif
     if(appDelegate.user!=nil)
         [params setValue:appDelegate.user forKey:@"user"];
     if(appDelegate.contact_id!=nil)
@@ -10590,6 +10612,7 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
     [params setValue:user  forKey:@"username"];
     [params setValue:email  forKey:@"email"];
     
+    
     [params setObject:ScreenCodeLoginView forKey:kScreenName];
     
     if(appDelegate.offline_mode)
@@ -10604,7 +10627,16 @@ NSString *const ScreenCodeOfflineSync = @"Offline Sync Screen";
         return;
         
     }
+#ifdef SCANNER_ORDER
+    params[@"site_name"]=[RADataProvider getSiteName];
+    params[@"_method"]=@"forgotPasswordOfflineOrderUser";
+    params[@"user"]=user;
+    NSString* url = [appDelegate.address stringByAppendingPathComponent:URL_RETRIEVE_PASS];
+    [self request_interface:url parameters:params err_record_url:nil completionHandler:result retry:0];
+#else
     [self request_interface:URL_RETRIEVE_PASS parameters:params err_record_url:nil completionHandler:result retry:0];
+#endif
+    
     //
     //
     //    if(![self IsNetworkAvailable])

+ 53 - 0
RedAnt ERP Mobile/iSales-CONTRAST.xcodeproj/project.pbxproj

@@ -64,6 +64,12 @@
 		3C7E5A8E237BDB0C006D0105 /* PortfolioListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C7E5A8C237BDB0C006D0105 /* PortfolioListViewController.m */; };
 		3C872A232797F1C800BE1FC8 /* OLOSettingViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C872A202797F1C800BE1FC8 /* OLOSettingViewController.m */; };
 		3C872A242797F1C800BE1FC8 /* scan_cart.json in Resources */ = {isa = PBXBuildFile; fileRef = 3C872A212797F1C800BE1FC8 /* scan_cart.json */; };
+		3C88559727E1D233005DC3FA /* RANetworkTaskDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C88558F27E1D233005DC3FA /* RANetworkTaskDelegate.m */; };
+		3C88559827E1D233005DC3FA /* RAUploadOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C88559027E1D233005DC3FA /* RAUploadOperation.m */; };
+		3C88559927E1D233005DC3FA /* RAUploadListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C88559227E1D233005DC3FA /* RAUploadListViewController.m */; };
+		3C88559A27E1D233005DC3FA /* RAUploadManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C88559527E1D233005DC3FA /* RAUploadManager.m */; };
+		3C88559E27E1D29D005DC3FA /* UIView+Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C88559C27E1D29D005DC3FA /* UIView+Toast.m */; };
+		3C8855A127E1D2FA005DC3FA /* UploadCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C8855A027E1D2FA005DC3FA /* UploadCell.m */; };
 		3CDDB25C273A564200681F78 /* DefaultTableHeaderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CDDB25A273A564200681F78 /* DefaultTableHeaderView.m */; };
 		3CDDB262273A59DF00681F78 /* TouchImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CDDB260273A59DF00681F78 /* TouchImageView.m */; };
 		3CDDB265273A59EF00681F78 /* RTLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CDDB264273A59EF00681F78 /* RTLabel.m */; };
@@ -403,6 +409,18 @@
 		3C872A202797F1C800BE1FC8 /* OLOSettingViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = OLOSettingViewController.m; path = common/Functions/OLO/OLOSettingViewController.m; sourceTree = SOURCE_ROOT; };
 		3C872A212797F1C800BE1FC8 /* scan_cart.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = scan_cart.json; path = common/Functions/OLO/scan_cart.json; sourceTree = SOURCE_ROOT; };
 		3C872A222797F1C800BE1FC8 /* OLOSettingViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = OLOSettingViewController.h; path = common/Functions/OLO/OLOSettingViewController.h; sourceTree = SOURCE_ROOT; };
+		3C88558F27E1D233005DC3FA /* RANetworkTaskDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RANetworkTaskDelegate.m; sourceTree = "<group>"; };
+		3C88559027E1D233005DC3FA /* RAUploadOperation.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadOperation.m; sourceTree = "<group>"; };
+		3C88559127E1D233005DC3FA /* RAUploadManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadManager.h; sourceTree = "<group>"; };
+		3C88559227E1D233005DC3FA /* RAUploadListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadListViewController.m; sourceTree = "<group>"; };
+		3C88559327E1D233005DC3FA /* RANetworkTaskDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RANetworkTaskDelegate.h; sourceTree = "<group>"; };
+		3C88559427E1D233005DC3FA /* RAUploadOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadOperation.h; sourceTree = "<group>"; };
+		3C88559527E1D233005DC3FA /* RAUploadManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = RAUploadManager.m; sourceTree = "<group>"; };
+		3C88559627E1D233005DC3FA /* RAUploadListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RAUploadListViewController.h; sourceTree = "<group>"; };
+		3C88559C27E1D29D005DC3FA /* UIView+Toast.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIView+Toast.m"; path = "../../common/customUI/UIView+Toast.m"; sourceTree = "<group>"; };
+		3C88559D27E1D29D005DC3FA /* UIView+Toast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIView+Toast.h"; path = "../../common/customUI/UIView+Toast.h"; sourceTree = "<group>"; };
+		3C88559F27E1D2FA005DC3FA /* UploadCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UploadCell.h; path = "iSales-USAI/UploadCell.h"; sourceTree = SOURCE_ROOT; };
+		3C8855A027E1D2FA005DC3FA /* UploadCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UploadCell.m; path = "iSales-USAI/UploadCell.m"; sourceTree = SOURCE_ROOT; };
 		3CDDB25A273A564200681F78 /* DefaultTableHeaderView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = DefaultTableHeaderView.m; path = ../../common/customUI/commoneditor/DefaultTableHeaderView.m; sourceTree = "<group>"; };
 		3CDDB25B273A564200681F78 /* DefaultTableHeaderView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = DefaultTableHeaderView.h; path = ../../common/customUI/commoneditor/DefaultTableHeaderView.h; sourceTree = "<group>"; };
 		3CDDB25F273A597B00681F78 /* const.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = const.h; path = common/const.h; sourceTree = SOURCE_ROOT; };
@@ -962,6 +980,33 @@
 			name = "Scaner Order";
 			sourceTree = "<group>";
 		};
+		3C88558E27E1D233005DC3FA /* upload */ = {
+			isa = PBXGroup;
+			children = (
+				3C88558F27E1D233005DC3FA /* RANetworkTaskDelegate.m */,
+				3C88559027E1D233005DC3FA /* RAUploadOperation.m */,
+				3C88559127E1D233005DC3FA /* RAUploadManager.h */,
+				3C88559227E1D233005DC3FA /* RAUploadListViewController.m */,
+				3C88559327E1D233005DC3FA /* RANetworkTaskDelegate.h */,
+				3C88559427E1D233005DC3FA /* RAUploadOperation.h */,
+				3C88559527E1D233005DC3FA /* RAUploadManager.m */,
+				3C88559627E1D233005DC3FA /* RAUploadListViewController.h */,
+			);
+			name = upload;
+			path = ../../common/upload;
+			sourceTree = "<group>";
+		};
+		3C88559B27E1D293005DC3FA /* olo */ = {
+			isa = PBXGroup;
+			children = (
+				3C88559F27E1D2FA005DC3FA /* UploadCell.h */,
+				3C8855A027E1D2FA005DC3FA /* UploadCell.m */,
+				3C88559D27E1D29D005DC3FA /* UIView+Toast.h */,
+				3C88559C27E1D29D005DC3FA /* UIView+Toast.m */,
+			);
+			name = olo;
+			sourceTree = "<group>";
+		};
 		4254CCDB1FB1AB6600C8B4B6 /* Order Editor */ = {
 			isa = PBXGroup;
 			children = (
@@ -1345,6 +1390,8 @@
 		713F76AF1929F4A7006A7305 /* iSales-CONTRAST */ = {
 			isa = PBXGroup;
 			children = (
+				3C88559B27E1D293005DC3FA /* olo */,
+				3C88558E27E1D233005DC3FA /* upload */,
 				3C872A1F2797F1AD00BE1FC8 /* Scaner Order */,
 				71DF74311C5757C800F2789C /* CommonUI */,
 				71DF742C1C57567800F2789C /* CONTRAST */,
@@ -2169,6 +2216,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				3C88559E27E1D29D005DC3FA /* UIView+Toast.m in Sources */,
 				7141DD531C57459B00F7DF59 /* qrspec.c in Sources */,
 				3C69618323C7156D0075172A /* WebViewController.m in Sources */,
 				71BF07081D2F3D2800981938 /* SyncControlPanelViewController.m in Sources */,
@@ -2249,6 +2297,7 @@
 				712AFEDF1DBA050200254965 /* TextDrawable.m in Sources */,
 				7162A5611C58724700AB630E /* CustomerInfoViewController.m in Sources */,
 				428980471E249339005F1BD8 /* JKLockController.m in Sources */,
+				3C88559827E1D233005DC3FA /* RAUploadOperation.m in Sources */,
 				7162A5731C58728D00AB630E /* DetailTopicCell.m in Sources */,
 				71BBA2421CEAEF0700C91DED /* unzip.c in Sources */,
 				7162A5AC1C58735900AB630E /* PortfolioViewController.m in Sources */,
@@ -2280,6 +2329,8 @@
 				3C51497F273E07D600F78617 /* EnumSelectAndSortCell.m in Sources */,
 				71D30A2D1CFC0EF8006F9477 /* DefaultImageButton.m in Sources */,
 				7162A5841C5872EF00AB630E /* HomeTableViewCellTopic.m in Sources */,
+				3C88559A27E1D233005DC3FA /* RAUploadManager.m in Sources */,
+				3C88559927E1D233005DC3FA /* RAUploadListViewController.m in Sources */,
 				7162A59F1C58733400AB630E /* OrderListViewController.m in Sources */,
 				4254CCDE1FB1AC2B00C8B4B6 /* RAOrderEditorViewController.m in Sources */,
 				712AFEE21DBA077F00254965 /* pdfCreator.m in Sources */,
@@ -2362,8 +2413,10 @@
 				7162A5C51C5873BB00AB630E /* SearchViewController.m in Sources */,
 				7162A5191C58704600AB630E /* EditModelPriceViewController.m in Sources */,
 				3C514969273D0B1E00F78617 /* RADataProvider.m in Sources */,
+				3C88559727E1D233005DC3FA /* RANetworkTaskDelegate.m in Sources */,
 				7162A5721C58728D00AB630E /* DetailKVCell.m in Sources */,
 				7141DD501C57459B00F7DF59 /* QRCodeGenerator.m in Sources */,
+				3C8855A127E1D2FA005DC3FA /* UploadCell.m in Sources */,
 				715671331E10A0EF006324A0 /* RectDrawable.m in Sources */,
 				4289802B1E2492D2005F1BD8 /* CategoryPriceCell.m in Sources */,
 				7162A5DA1C5876E300AB630E /* AboutViewController.m in Sources */,

+ 1 - 1
RedAnt ERP Mobile/iSales-CONTRAST.xcodeproj/xcuserdata/ruizhang.xcuserdatad/xcschemes/xcschememanagement.plist

@@ -7,7 +7,7 @@
 		<key>iSales-CONTRAST.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
-			<integer>4</integer>
+			<integer>6</integer>
 		</dict>
 		<key>iSales-USAI.xcscheme_^#shared#^_</key>
 		<dict>

+ 2 - 2
RedAnt ERP Mobile/iSales-CONTRAST/config.h

@@ -186,7 +186,7 @@
 #define URL_EMAIL_WISHLIST @"http://192.168.0.133:80/pjHmlg/isales/sendWishListEmail.htm"
 
 #define URL_BLOG @"http://12.196.120.217/blog"
-
+#define  URL_DELETE_ACCOUNT @""
 #else
 
 
@@ -245,7 +245,7 @@
 #define  URL_DM_LIST @"https://redant.contrast-inc.com/isales/tearSheetPdfList.htm"
 //#define  URL_DM_SET_QTY @"https://redant.contrast-inc.com/isales/setTearSheetAvailableQty.htm"
 #define  URL_REQUEST_MODEL_QTY @"https://redant.contrast-inc.com/isales/getTearSheetAvailableQty.htm"
-
+#define  URL_DELETE_ACCOUNT @""
 
 #define  URL_CONTACT_LIST  @"https://redant.contrast-inc.com/isales/getAllContact.htm"
 #define  URL_SHIPTO_LIST  @"https://redant.contrast-inc.com/isales/getShipToContact.htm"

+ 4 - 4
RedAnt ERP Mobile/iSales-NPD.xcodeproj/project.pbxproj

@@ -2574,7 +2574,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				CURRENT_PROJECT_VERSION = 200515;
+				CURRENT_PROJECT_VERSION = 220316;
 				DEVELOPMENT_TEAM = HXWLAA5YN5;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -2591,7 +2591,7 @@
 					"$(PROJECT_DIR)/ScanApiSDK-10.2.227-2/lib",
 					"$(PROJECT_DIR)/GoogleAnalytics/GoogleAnalytics/Libraries",
 				);
-				MARKETING_VERSION = 1.97;
+				MARKETING_VERSION = 1.98;
 				OTHER_LDFLAGS = (
 					"$(inherited)",
 					"-ObjC",
@@ -2618,7 +2618,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				CURRENT_PROJECT_VERSION = 200515;
+				CURRENT_PROJECT_VERSION = 220316;
 				DEVELOPMENT_TEAM = HXWLAA5YN5;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -2635,7 +2635,7 @@
 					"$(PROJECT_DIR)/ScanApiSDK-10.2.227-2/lib",
 					"$(PROJECT_DIR)/GoogleAnalytics/GoogleAnalytics/Libraries",
 				);
-				MARKETING_VERSION = 1.97;
+				MARKETING_VERSION = 1.98;
 				OTHER_LDFLAGS = (
 					"$(inherited)",
 					"-ObjC",

+ 100 - 100
RedAnt ERP Mobile/iSales-NPD/Base.lproj/Main.storyboard

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="19529" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="jsC-F8-zYF">
-    <device id="ipad9_7" orientation="portrait" layout="fullscreen" appearance="light"/>
+    <device id="ipad7_9" orientation="portrait" layout="fullscreen" appearance="light"/>
     <dependencies>
         <deployment version="4352" identifier="iOS"/>
         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="19519"/>
@@ -13,19 +13,19 @@
             <objects>
                 <viewController storyboardIdentifier="MainViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="BYZ-38-t0r" customClass="MainViewController" sceneMemberID="viewController">
                     <view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
-                        <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <containerView contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Knj-5z-t35">
-                                <rect key="frame" x="0.0" y="100" width="768" height="924"/>
+                                <rect key="frame" x="0.0" y="100" width="744" height="1033"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                             </containerView>
                             <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="NhN-BH-vsu" userLabel="headerView">
-                                <rect key="frame" x="0.0" y="0.0" width="768" height="100"/>
+                                <rect key="frame" x="0.0" y="0.0" width="744" height="100"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                 <subviews>
                                     <view clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hTL-PV-pUp" customClass="MainHeaderViewColorPanel">
-                                        <rect key="frame" x="160" y="20" width="467" height="72"/>
+                                        <rect key="frame" x="160" y="20" width="443" height="72"/>
                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                                         <subviews>
                                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="xhl-jK-vdP" userLabel="category button">
@@ -114,7 +114,7 @@
                                         <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
                                     </view>
                                     <view hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Udz-7n-3ZO" customClass="MainHeaderViewColorPanel">
-                                        <rect key="frame" x="160" y="20" width="467" height="72"/>
+                                        <rect key="frame" x="160" y="20" width="443" height="72"/>
                                         <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                                         <subviews>
                                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="dB4-yd-OKw" userLabel="category button">
@@ -212,7 +212,7 @@
                                         <nil key="highlightedColor"/>
                                     </label>
                                     <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0eT-W5-bga" userLabel="sign_in">
-                                        <rect key="frame" x="628" y="20" width="140" height="30"/>
+                                        <rect key="frame" x="604" y="20" width="140" height="30"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                         <state key="normal" title="Sign in">
                                             <color key="titleColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -229,7 +229,7 @@
                                         <nil key="highlightedColor"/>
                                     </label>
                                     <button hidden="YES" opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="top" buttonType="system" lineBreakMode="wordWrap" translatesAutoresizingMaskIntoConstraints="NO" id="A7D-bo-1PR" userLabel="contact">
-                                        <rect key="frame" x="628" y="50" width="140" height="50"/>
+                                        <rect key="frame" x="604" y="50" width="140" height="50"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                         <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                         <state key="normal">
@@ -260,11 +260,11 @@
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </view>
                             <imageView userInteractionEnabled="NO" alpha="0.0" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tzq-zw-ENK">
-                                <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                                <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                             </imageView>
                             <button hidden="YES" opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DGA-Jz-ciO">
-                                <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                                <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <state key="normal">
                                     <color key="titleColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
@@ -274,21 +274,21 @@
                                 </connections>
                             </button>
                             <view hidden="YES" contentMode="scaleToFill" fixedFrame="YES" restorationIdentifier="menuView" translatesAutoresizingMaskIntoConstraints="NO" id="Qz1-qV-4fT" userLabel="sidemenuView">
-                                <rect key="frame" x="-300" y="0.0" width="364" height="1024"/>
+                                <rect key="frame" x="-300" y="0.0" width="364" height="1133"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
                                 <subviews>
                                     <view alpha="0.80000000000000004" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dR0-Te-FbY" userLabel="backgroundView">
-                                        <rect key="frame" x="0.0" y="0.0" width="290" height="1024"/>
+                                        <rect key="frame" x="0.0" y="0.0" width="290" height="1133"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
                                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     </view>
                                     <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Wtv-1e-MtM" userLabel="rightsideColorbar">
-                                        <rect key="frame" x="290" y="0.0" width="10" height="1024"/>
+                                        <rect key="frame" x="290" y="0.0" width="10" height="1133"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" heightSizable="YES"/>
                                         <color key="backgroundColor" red="0.79277843236923218" green="0.79277843236923218" blue="0.79277843236923218" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                     </view>
                                     <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="grouped" separatorStyle="default" rowHeight="44" sectionHeaderHeight="10" sectionFooterHeight="10" translatesAutoresizingMaskIntoConstraints="NO" id="h0d-S7-vmO">
-                                        <rect key="frame" x="0.0" y="150" width="290" height="800"/>
+                                        <rect key="frame" x="0.0" y="150" width="290" height="900"/>
                                         <autoresizingMask key="autoresizingMask" heightSizable="YES" flexibleMaxY="YES"/>
                                         <color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
                                         <color key="separatorColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -374,7 +374,7 @@
                                         <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
                                     </view>
                                     <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Ver:1.0" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MTI-0q-XWj" userLabel="ver">
-                                        <rect key="frame" x="25" y="980" width="250" height="21"/>
+                                        <rect key="frame" x="25" y="1089" width="250" height="21"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
                                         <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                         <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -424,22 +424,22 @@
             <objects>
                 <viewController storyboardIdentifier="WatchListViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="dSV-Dg-id4" customClass="WatchListViewController" sceneMemberID="viewController">
                     <view key="view" opaque="NO" clipsSubviews="YES" contentMode="center" id="l8z-x6-eMf">
-                        <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="120" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="Bod-ih-aFz">
-                                <rect key="frame" x="0.0" y="20" width="768" height="960"/>
+                                <rect key="frame" x="0.0" y="24" width="744" height="1045"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="WatchListItemCell" rowHeight="120" id="Hjj-gq-Qs5" customClass="ModelItemCell">
-                                        <rect key="frame" x="0.0" y="44.5" width="768" height="120"/>
+                                        <rect key="frame" x="0.0" y="44.5" width="744" height="120"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Hjj-gq-Qs5" id="bKF-1X-6DE">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="120"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="744" height="120"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label hidden="YES" opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="1234567890.00" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MZM-06-tL3" userLabel="item price">
-                                                    <rect key="frame" x="554" y="49.5" width="160" height="21"/>
+                                                    <rect key="frame" x="530" y="49.5" width="160" height="21"/>
                                                     <constraints>
                                                         <constraint firstAttribute="width" constant="160" id="Fhy-Ln-lVa"/>
                                                         <constraint firstAttribute="height" constant="21" id="ckn-TY-IX1"/>
@@ -461,7 +461,7 @@
                                                     </connections>
                                                 </button>
                                                 <label hidden="YES" opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Portfolio price ($)" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="vzl-HZ-1my">
-                                                    <rect key="frame" x="554" y="20.5" width="160" height="21"/>
+                                                    <rect key="frame" x="530" y="20.5" width="160" height="21"/>
                                                     <constraints>
                                                         <constraint firstAttribute="height" constant="21" id="Bce-vf-6p9"/>
                                                         <constraint firstAttribute="width" constant="160" id="GkL-38-phk"/>
@@ -470,14 +470,14 @@
                                                     <nil key="highlightedColor"/>
                                                 </label>
                                                 <imageView hidden="YES" userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="check_1_24" translatesAutoresizingMaskIntoConstraints="NO" id="pUy-h6-w0Y">
-                                                    <rect key="frame" x="729" y="48" width="24" height="24"/>
+                                                    <rect key="frame" x="705" y="48" width="24" height="24"/>
                                                     <constraints>
                                                         <constraint firstAttribute="width" constant="24" id="Mhk-Yc-rbi"/>
                                                         <constraint firstAttribute="height" constant="24" id="WHk-5U-u9V"/>
                                                     </constraints>
                                                 </imageView>
                                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="QTY:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="lbZ-RY-0aG">
-                                                    <rect key="frame" x="554" y="49.5" width="160" height="21"/>
+                                                    <rect key="frame" x="530" y="49.5" width="160" height="21"/>
                                                     <constraints>
                                                         <constraint firstAttribute="height" constant="21" id="S81-Ar-Fk2"/>
                                                         <constraint firstAttribute="width" constant="160" id="Su9-Od-CTZ"/>
@@ -487,7 +487,7 @@
                                                     <nil key="highlightedColor"/>
                                                 </label>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="name aaaaaaaaaaaaa aaaaaaaaaa BBBBB  CCCCC" lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="H2E-H1-CLA" userLabel="description">
-                                                    <rect key="frame" x="130" y="10" width="409" height="100"/>
+                                                    <rect key="frame" x="130" y="10" width="385" height="100"/>
                                                     <fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="22"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
@@ -524,17 +524,17 @@
                                 </connections>
                             </tableView>
                             <label hidden="YES" opaque="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Cannot get data from server.
Tap to try again." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="VoW-od-XKq">
-                                <rect key="frame" x="263.5" y="489.5" width="241.5" height="45.5"/>
+                                <rect key="frame" x="251.5" y="544" width="241.5" height="45.5"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="19"/>
                                 <color key="textColor" red="0.33333333333333331" green="0.33333333333333331" blue="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" animating="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="P7H-gM-8cZ">
-                                <rect key="frame" x="365.5" y="493.5" width="37" height="37"/>
+                                <rect key="frame" x="353.5" y="548" width="37" height="37"/>
                                 <color key="color" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </activityIndicatorView>
                             <toolbar opaque="NO" clearsContextBeforeDrawing="NO" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="TEJ-4m-gTF">
-                                <rect key="frame" x="0.0" y="980" width="768" height="44"/>
+                                <rect key="frame" x="0.0" y="1069" width="744" height="44"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="44" id="bKb-j5-iBR"/>
@@ -610,7 +610,7 @@
             <objects>
                 <navigationController storyboardIdentifier="iSalesNavigationController" definesPresentationContext="YES" useStoryboardIdentifierAsRestorationIdentifier="YES" id="jsC-F8-zYF" customClass="iSalesNavigationController" sceneMemberID="viewController">
                     <navigationBar key="navigationBar" contentMode="scaleToFill" id="gCJ-vt-f01">
-                        <rect key="frame" x="0.0" y="20" width="768" height="50"/>
+                        <rect key="frame" x="0.0" y="24" width="744" height="50"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </navigationBar>
                     <connections>
@@ -630,7 +630,7 @@
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="User" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="e4L-J6-NNX">
-                                <rect key="frame" x="60" y="123" width="360" height="30"/>
+                                <rect key="frame" x="60" y="127" width="360" height="30"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="30" id="y7F-m4-eUT"/>
@@ -642,13 +642,13 @@
                                 </connections>
                             </textField>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="oCu-XS-jr9">
-                                <rect key="frame" x="60" y="162" width="360" height="34"/>
+                                <rect key="frame" x="60" y="166" width="360" height="34"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <textInputTraits key="textInputTraits" secureTextEntry="YES"/>
                             </textField>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="B5F-AY-BkK">
-                                <rect key="frame" x="60" y="220" width="360" height="22"/>
+                                <rect key="frame" x="60" y="224" width="360" height="22"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="22" id="CFK-iY-Os2"/>
                                 </constraints>
@@ -660,7 +660,7 @@
                                 </state>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="20z-6W-PvH">
-                                <rect key="frame" x="296" y="220" width="124" height="22"/>
+                                <rect key="frame" x="296" y="224" width="124" height="22"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="22" id="LG5-Yp-tPQ"/>
                                 </constraints>
@@ -672,7 +672,7 @@
                                 </state>
                             </button>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Sign in" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2AI-yS-Vfe">
-                                <rect key="frame" x="60" y="87" width="59" height="26"/>
+                                <rect key="frame" x="60" y="91" width="59" height="26"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="26" id="wGm-YM-Mtp"/>
                                 </constraints>
@@ -681,7 +681,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="right" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="pO9-Lj-YQb">
-                                <rect key="frame" x="294" y="85.5" width="126" height="30"/>
+                                <rect key="frame" x="294" y="89.5" width="126" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="30" id="zLX-yr-Dvk"/>
                                 </constraints>
@@ -694,7 +694,7 @@
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="CZM-O3-JlR" customClass="DefaultImageButton">
-                                <rect key="frame" x="358" y="270" width="102" height="30"/>
+                                <rect key="frame" x="358" y="250" width="102" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="102" id="ANs-ln-cLS"/>
                                     <constraint firstAttribute="height" constant="30" id="P45-ke-sKG"/>
@@ -714,7 +714,7 @@
                                 </connections>
                             </button>
                             <tableView hidden="YES" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="3dj-qP-iVc">
-                                <rect key="frame" x="60" y="153" width="360" height="109"/>
+                                <rect key="frame" x="60" y="157" width="360" height="85"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="LoginListCell" textLabel="AxX-hS-Jtg" style="IBUITableViewCellStyleDefault" id="kAP-gb-Gce">
@@ -741,7 +741,7 @@
                                 </connections>
                             </tableView>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="FqB-9p-WZO">
-                                <rect key="frame" x="228" y="270" width="100" height="30"/>
+                                <rect key="frame" x="228" y="250" width="100" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="100" id="rVB-KF-ePd"/>
                                     <constraint firstAttribute="height" constant="30" id="y7g-Tz-bPx"/>
@@ -813,36 +813,36 @@
             <objects>
                 <viewController storyboardIdentifier="HomeViewController" automaticallyAdjustsScrollViewInsets="NO" useStoryboardIdentifierAsRestorationIdentifier="YES" id="qnc-8g-ecq" customClass="HomeViewController" sceneMemberID="viewController">
                     <view key="view" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" id="uyL-pB-aij">
-                        <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <view hidden="YES" contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hF1-Cm-X4t" userLabel="home category menu">
-                                <rect key="frame" x="-256" y="0.0" width="256" height="1024"/>
+                                <rect key="frame" x="-280" y="0.0" width="256" height="1133"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" heightSizable="YES" flexibleMaxY="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </view>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="none" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" translatesAutoresizingMaskIntoConstraints="NO" id="nqT-Hf-Ep7" userLabel="home content table">
-                                <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                                <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES" flexibleMaxY="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="HomeTableViewCellSlide" id="c21-Hy-QJU" customClass="HomeTableViewCellSlide">
-                                        <rect key="frame" x="0.0" y="44.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="44.5" width="744" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="c21-Hy-QJU" id="2Mt-ve-YI4">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="744" height="44"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                         </tableViewCellContentView>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" restorationIdentifier="HomeTableViewCellBanner" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="HomeTableViewCellBanner" rowHeight="317" id="rvl-UX-dny" customClass="HomeTableViewCellBanner">
-                                        <rect key="frame" x="0.0" y="88.5" width="768" height="317"/>
+                                        <rect key="frame" x="0.0" y="88.5" width="744" height="317"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="rvl-UX-dny" id="ULg-i3-NWf">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="317"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="744" height="317"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3Rk-k3-zwC">
-                                                    <rect key="frame" x="9" y="-13" width="770" height="308"/>
+                                                    <rect key="frame" x="9" y="-13" width="746" height="308"/>
                                                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                 </imageView>
                                             </subviews>
@@ -852,27 +852,27 @@
                                         </connections>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" restorationIdentifier="HomeTableViewCellButtonBanner" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="HomeTableViewCellButtonBanner" rowHeight="317" id="Put-35-LxJ" customClass="HomeTableViewCellButtonBanner">
-                                        <rect key="frame" x="0.0" y="405.5" width="768" height="317"/>
+                                        <rect key="frame" x="0.0" y="405.5" width="744" height="317"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Put-35-LxJ" id="Lai-zl-Z6Z">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="317"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="744" height="317"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                         </tableViewCellContentView>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" restorationIdentifier="HomeTableViewCellTopic" selectionStyle="default" indentationWidth="10" reuseIdentifier="HomeTableViewCellTopic" rowHeight="310" id="Pbg-ua-PLt" customClass="HomeTableViewCellTopic">
-                                        <rect key="frame" x="0.0" y="722.5" width="768" height="310"/>
+                                        <rect key="frame" x="0.0" y="722.5" width="744" height="310"/>
                                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Pbg-ua-PLt" id="dGe-fL-Pfl">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="310"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="744" height="310"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <view contentMode="scaleToFill" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="AJc-gj-4ib">
-                                                    <rect key="frame" x="-5" y="11" width="768" height="15"/>
+                                                    <rect key="frame" x="-5" y="11" width="744" height="15"/>
                                                     <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                                                     <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                 </view>
                                                 <collectionView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" minimumZoomScale="0.0" maximumZoomScale="0.0" dataMode="prototypes" translatesAutoresizingMaskIntoConstraints="NO" id="YZB-OJ-1Vt">
-                                                    <rect key="frame" x="-5" y="16" width="768" height="268"/>
+                                                    <rect key="frame" x="-5" y="16" width="744" height="268"/>
                                                     <autoresizingMask key="autoresizingMask" widthSizable="YES"/>
                                                     <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                                     <collectionViewFlowLayout key="collectionViewLayout" scrollDirection="horizontal" minimumLineSpacing="10" minimumInteritemSpacing="10" id="saz-yz-bIb">
@@ -936,12 +936,12 @@
                                 </connections>
                             </tableView>
                             <activityIndicatorView opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" hidesWhenStopped="YES" animating="YES" style="whiteLarge" translatesAutoresizingMaskIntoConstraints="NO" id="Fnh-SM-ihl">
-                                <rect key="frame" x="366" y="493" width="37" height="37"/>
+                                <rect key="frame" x="354" y="547" width="37" height="37"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
                                 <color key="color" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </activityIndicatorView>
                             <label hidden="YES" opaque="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Cannot get data from server.
Tap to try again." textAlignment="center" lineBreakMode="tailTruncation" numberOfLines="2" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="95F-9e-vAS">
-                                <rect key="frame" x="245" y="476" width="277" height="73"/>
+                                <rect key="frame" x="233" y="531" width="277" height="73"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxX="YES" flexibleMinY="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="19"/>
                                 <color key="textColor" red="0.33333333333333331" green="0.33333333333333331" blue="0.33333333333333331" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -968,14 +968,14 @@
             <objects>
                 <viewController storyboardIdentifier="ScannerViewController" title="ScannerViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="EIb-H4-v4U" customClass="ScannerViewController" sceneMemberID="viewController">
                     <view key="view" contentMode="scaleToFill" id="NHM-5E-iC6">
-                        <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="G66-bZ-5AK" customClass="ScannerControllerView">
-                                <rect key="frame" x="0.0" y="20" width="768" height="1004"/>
+                                <rect key="frame" x="0.0" y="24" width="744" height="1089"/>
                                 <subviews>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="wordWrap" translatesAutoresizingMaskIntoConstraints="NO" id="dHM-WV-ZSO" userLabel="Button scan">
-                                        <rect key="frame" x="613" y="683.5" width="108" height="108"/>
+                                        <rect key="frame" x="589" y="726" width="108" height="108"/>
                                         <color key="backgroundColor" red="1" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                         <constraints>
                                             <constraint firstAttribute="width" constant="108" id="cxB-uv-UGA"/>
@@ -996,14 +996,14 @@
                                         </connections>
                                     </button>
                                     <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="pick_bg" translatesAutoresizingMaskIntoConstraints="NO" id="nxQ-Fb-gF5">
-                                        <rect key="frame" x="134" y="352" width="500" height="300"/>
+                                        <rect key="frame" x="122" y="394.5" width="500" height="300"/>
                                         <constraints>
                                             <constraint firstAttribute="width" constant="500" id="1g6-UG-b63"/>
                                             <constraint firstAttribute="height" constant="300" id="Ep8-fT-FON"/>
                                         </constraints>
                                     </imageView>
                                     <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Zfm-0K-VDC">
-                                        <rect key="frame" x="134" y="712" width="500" height="51"/>
+                                        <rect key="frame" x="122" y="754.5" width="500" height="51"/>
                                         <constraints>
                                             <constraint firstAttribute="height" constant="51" id="b8K-xQ-vVg"/>
                                         </constraints>
@@ -1014,7 +1014,7 @@
                                         </connections>
                                     </button>
                                     <button hidden="YES" opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="5z7-HK-0WT">
-                                        <rect key="frame" x="294" y="262.5" width="180" height="34.5"/>
+                                        <rect key="frame" x="282" y="305" width="180" height="34.5"/>
                                         <state key="normal" title="Button"/>
                                         <buttonConfiguration key="configuration" style="plain" title="Type: Model Name">
                                             <fontDescription key="titleFontDescription" type="system" weight="heavy" pointSize="17"/>
@@ -1065,21 +1065,21 @@
             <objects>
                 <tableViewController storyboardIdentifier="CacheViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="SCh-P5-b9w" customClass="CacheViewController" sceneMemberID="viewController">
                     <tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="static" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="22" sectionFooterHeight="22" id="ESr-hp-wy1">
-                        <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                         <sections>
                             <tableViewSection id="Dxk-o0-QTQ">
                                 <cells>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="QWz-EJ-Yzy">
-                                        <rect key="frame" x="0.0" y="44.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="44.5" width="744" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="QWz-EJ-Yzy" id="E1L-su-dvV">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="744" height="44"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="PJV-YE-GvQ">
-                                                    <rect key="frame" x="704" y="6" width="51" height="31"/>
+                                                    <rect key="frame" x="680" y="6" width="51" height="31"/>
                                                     <connections>
                                                         <action selector="cacheSwitchChanged:" destination="SCh-P5-b9w" eventType="valueChanged" id="Qx0-8P-8Gq"/>
                                                     </connections>
@@ -1105,10 +1105,10 @@
                                         </tableViewCellContentView>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="TID-OY-afi">
-                                        <rect key="frame" x="0.0" y="88.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="88.5" width="744" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="TID-OY-afi" id="yuC-0D-Ebs">
-                                            <rect key="frame" x="0.0" y="0.0" width="768" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="744" height="44"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Diskspace" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pVO-Tx-wMs">
@@ -1121,7 +1121,7 @@
                                                     <nil key="highlightedColor"/>
                                                 </label>
                                                 <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Label" textAlignment="right" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="el1-Tc-PkB">
-                                                    <rect key="frame" x="498" y="11" width="255" height="21"/>
+                                                    <rect key="frame" x="474" y="11" width="255" height="21"/>
                                                     <constraints>
                                                         <constraint firstAttribute="width" constant="255" id="eVQ-NU-rQp"/>
                                                         <constraint firstAttribute="height" constant="21" id="g09-MR-GgQ"/>
@@ -1153,10 +1153,10 @@
                                         </tableViewCellContentView>
                                     </tableViewCell>
                                     <tableViewCell contentMode="scaleToFill" selectionStyle="blue" accessoryType="disclosureIndicator" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" id="Pol-lE-P45">
-                                        <rect key="frame" x="0.0" y="132.5" width="768" height="44"/>
+                                        <rect key="frame" x="0.0" y="132.5" width="744" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="Pol-lE-P45" id="FAm-1c-nX0">
-                                            <rect key="frame" x="0.0" y="0.0" width="739.5" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="715.5" height="44"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Clean Cache" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="AHm-p1-51h">
@@ -1200,7 +1200,7 @@
             <objects>
                 <navigationController storyboardIdentifier="PopupNavi" definesPresentationContext="YES" useStoryboardIdentifierAsRestorationIdentifier="YES" id="O4f-Xf-sca" customClass="PopupNavigationController" sceneMemberID="viewController">
                     <navigationBar key="navigationBar" contentMode="scaleToFill" id="jDv-A4-an8">
-                        <rect key="frame" x="0.0" y="20" width="768" height="50"/>
+                        <rect key="frame" x="0.0" y="24" width="744" height="50"/>
                         <autoresizingMask key="autoresizingMask"/>
                     </navigationBar>
                 </navigationController>
@@ -1213,7 +1213,7 @@
             <objects>
                 <viewController storyboardIdentifier="FunctionTestViewController" title="Black Box" useStoryboardIdentifierAsRestorationIdentifier="YES" id="kPm-vh-Xir" customClass="FunctionTestViewController" sceneMemberID="viewController">
                     <view key="view" contentMode="scaleToFill" id="c5B-Gi-I5E">
-                        <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="f2s-mC-wXH">
@@ -1264,15 +1264,15 @@
             <objects>
                 <viewController storyboardIdentifier="ImageUploadViewController" title="Upload Photo" useStoryboardIdentifierAsRestorationIdentifier="YES" id="yoP-dB-tvg" customClass="ImageUploadViewController" sceneMemberID="viewController">
                     <view key="view" contentMode="scaleToFill" id="Jl1-Pm-bf5">
-                        <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <imageView userInteractionEnabled="NO" contentMode="scaleAspectFit" horizontalHuggingPriority="251" verticalHuggingPriority="251" insetsLayoutMarginsFromSafeArea="NO" translatesAutoresizingMaskIntoConstraints="NO" id="5ri-5V-GiE">
-                                <rect key="frame" x="84" y="140" width="600" height="724"/>
+                                <rect key="frame" x="84" y="144" width="576" height="809"/>
                                 <color key="backgroundColor" red="0.79277843236923218" green="0.79277843236923218" blue="0.79277843236923218" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                             </imageView>
                             <button opaque="NO" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Na7-Cn-iPo">
-                                <rect key="frame" x="82" y="900" width="48" height="48"/>
+                                <rect key="frame" x="82" y="989" width="48" height="48"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="48" id="U6r-4X-yDY"/>
                                     <constraint firstAttribute="width" constant="48" id="n8g-R9-DsX"/>
@@ -1283,7 +1283,7 @@
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="t9M-g5-jQa">
-                                <rect key="frame" x="173" y="900" width="48" height="48"/>
+                                <rect key="frame" x="173" y="989" width="48" height="48"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="48" id="acz-Es-WzN"/>
                                     <constraint firstAttribute="width" constant="48" id="bc7-FB-hAx"/>
@@ -1294,7 +1294,7 @@
                                 </connections>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="8fL-NB-sPV">
-                                <rect key="frame" x="635" y="900" width="48" height="48"/>
+                                <rect key="frame" x="611" y="989" width="48" height="48"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="48" id="78F-O0-z56"/>
                                     <constraint firstAttribute="height" constant="48" id="AaV-ZZ-MJT"/>
@@ -1305,7 +1305,7 @@
                                 </connections>
                             </button>
                             <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" insetsLayoutMarginsFromSafeArea="NO" progressViewStyle="bar" translatesAutoresizingMaskIntoConstraints="NO" id="N7c-8k-EE4">
-                                <rect key="frame" x="84" y="879" width="600" height="4"/>
+                                <rect key="frame" x="84" y="968" width="576" height="4"/>
                                 <color key="backgroundColor" red="0.081770886230000006" green="0.40781933069999998" blue="0.094417002809999998" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="3" id="1Yh-dZ-FJ4"/>
@@ -1351,19 +1351,19 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="User" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="qk3-tB-bW0">
-                                <rect key="frame" x="60" y="164" width="360" height="34"/>
+                                <rect key="frame" x="60" y="168" width="360" height="34"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <textInputTraits key="textInputTraits"/>
                             </textField>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Email" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="bZG-Uc-zBh">
-                                <rect key="frame" x="60" y="213" width="360" height="34"/>
+                                <rect key="frame" x="60" y="217" width="360" height="34"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <textInputTraits key="textInputTraits" keyboardType="emailAddress"/>
                             </textField>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Fill Username and email address, then click Retrieve button.Reset password email will be sent to your email address shortly." lineBreakMode="wordWrap" numberOfLines="0" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hyd-5M-IPx">
-                                <rect key="frame" x="60" y="80" width="360" height="74"/>
+                                <rect key="frame" x="60" y="84" width="360" height="74"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="74" id="ywg-QF-UYx"/>
                                 </constraints>
@@ -1372,7 +1372,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NtX-di-oxp" customClass="DefaultImageButton">
-                                <rect key="frame" x="358" y="270" width="102" height="30"/>
+                                <rect key="frame" x="358" y="250" width="102" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="102" id="gCp-Ua-0Pb"/>
                                     <constraint firstAttribute="height" constant="30" id="kBg-ZD-rin"/>
@@ -1428,25 +1428,25 @@
             <objects>
                 <viewController storyboardIdentifier="ScannerSettingViewController" useStoryboardIdentifierAsRestorationIdentifier="YES" id="Vzz-Pc-fRk" customClass="ScannerSettingViewController" sceneMemberID="viewController">
                     <view key="view" contentMode="scaleToFill" id="bSK-wT-Xlu">
-                        <rect key="frame" x="0.0" y="0.0" width="768" height="1024"/>
+                        <rect key="frame" x="0.0" y="0.0" width="744" height="1133"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="VyB-jG-KP0">
-                                <rect key="frame" x="15" y="132" width="738" height="180"/>
+                                <rect key="frame" x="15" y="136" width="714" height="180"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="180" id="2cR-CK-9h6"/>
                                 </constraints>
                                 <prototypes>
                                     <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="device_cell" textLabel="HwF-54-hzr" style="IBUITableViewCellStyleDefault" id="nP5-gn-0Jl">
-                                        <rect key="frame" x="0.0" y="44.5" width="738" height="44"/>
+                                        <rect key="frame" x="0.0" y="44.5" width="714" height="44"/>
                                         <autoresizingMask key="autoresizingMask"/>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="nP5-gn-0Jl" id="MCy-CI-ivv">
-                                            <rect key="frame" x="0.0" y="0.0" width="738" height="44"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="714" height="44"/>
                                             <autoresizingMask key="autoresizingMask"/>
                                             <subviews>
                                                 <label opaque="NO" multipleTouchEnabled="YES" contentMode="left" text="Title" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" id="HwF-54-hzr">
-                                                    <rect key="frame" x="16" y="0.0" width="706" height="44"/>
+                                                    <rect key="frame" x="16" y="0.0" width="682" height="44"/>
                                                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                                     <color key="textColor" red="0.0" green="0.0" blue="0.0" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -1462,13 +1462,13 @@
                                 </connections>
                             </tableView>
                             <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="OJ7-LV-Bht">
-                                <rect key="frame" x="163" y="40" width="51" height="31"/>
+                                <rect key="frame" x="163" y="44" width="51" height="31"/>
                                 <connections>
                                     <action selector="onSwitchChanged:" destination="Vzz-Pc-fRk" eventType="valueChanged" id="gnp-Sn-kzz"/>
                                 </connections>
                             </switch>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Enable scanner" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZiN-wp-62B">
-                                <rect key="frame" x="15" y="45" width="140" height="21"/>
+                                <rect key="frame" x="15" y="49" width="140" height="21"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="140" id="N1G-pB-rq5"/>
                                     <constraint firstAttribute="height" constant="21" id="b2y-i9-FAs"/>
@@ -1478,25 +1478,25 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <activityIndicatorView hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" hidesWhenStopped="YES" style="gray" translatesAutoresizingMaskIntoConstraints="NO" id="LCZ-qf-CXh">
-                                <rect key="frame" x="220" y="45.5" width="20" height="20"/>
+                                <rect key="frame" x="220" y="49.5" width="20" height="20"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="20" id="Mtf-Nd-fgo"/>
                                     <constraint firstAttribute="height" constant="20" id="e6k-Ig-ObT"/>
                                 </constraints>
                             </activityIndicatorView>
                             <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" showsHorizontalScrollIndicator="NO" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="JYl-x5-cTc">
-                                <rect key="frame" x="15" y="398.5" width="738" height="560.5"/>
+                                <rect key="frame" x="15" y="402.5" width="714" height="645.5"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="16"/>
                                 <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                             </textView>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Scan result should display here" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="fWr-gY-E10">
-                                <rect key="frame" x="163" y="327" width="590" height="34"/>
+                                <rect key="frame" x="163" y="331" width="566" height="34"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                 <textInputTraits key="textInputTraits"/>
                             </textField>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Off" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bOR-xy-Td3">
-                                <rect key="frame" x="248" y="45" width="505" height="21"/>
+                                <rect key="frame" x="248" y="49" width="481" height="21"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="21" id="Egj-ta-wwE"/>
                                 </constraints>
@@ -1505,7 +1505,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Test Scanner" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ECq-fH-MLi">
-                                <rect key="frame" x="15" y="333.5" width="140" height="21"/>
+                                <rect key="frame" x="15" y="337.5" width="140" height="21"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="140" id="5He-AN-tMo"/>
                                     <constraint firstAttribute="height" constant="21" id="P8f-wS-lXd"/>
@@ -1515,7 +1515,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="right" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="iby-OM-AKk">
-                                <rect key="frame" x="674" y="974" width="74" height="30"/>
+                                <rect key="frame" x="650" y="1063" width="74" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="74" id="CsX-ar-pk3"/>
                                     <constraint firstAttribute="height" constant="30" id="sDj-r5-vnF"/>
@@ -1526,7 +1526,7 @@
                                 </connections>
                             </button>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Enable on launch" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="MT9-hb-STe">
-                                <rect key="frame" x="15" y="91" width="140" height="21"/>
+                                <rect key="frame" x="15" y="95" width="140" height="21"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="21" id="2KN-V5-vPB"/>
                                     <constraint firstAttribute="width" constant="140" id="9ES-CD-8Az"/>
@@ -1536,13 +1536,13 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <switch opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" translatesAutoresizingMaskIntoConstraints="NO" id="LjS-4t-q6l">
-                                <rect key="frame" x="163" y="86" width="51" height="31"/>
+                                <rect key="frame" x="163" y="90" width="51" height="31"/>
                                 <connections>
                                     <action selector="onChangeAutolaunch:" destination="Vzz-Pc-fRk" eventType="valueChanged" id="lNd-bl-eYL"/>
                                 </connections>
                             </switch>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Log" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mDb-R3-eZv">
-                                <rect key="frame" x="15" y="369.5" width="140" height="21"/>
+                                <rect key="frame" x="15" y="373.5" width="140" height="21"/>
                                 <constraints>
                                     <constraint firstAttribute="height" constant="21" id="2mG-Th-8Cu"/>
                                     <constraint firstAttribute="width" constant="140" id="JKa-Fa-yML"/>
@@ -1609,7 +1609,7 @@
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3aO-EE-nul" customClass="DefaultImageButton">
-                                <rect key="frame" x="358" y="270" width="102" height="30"/>
+                                <rect key="frame" x="358" y="250" width="102" height="30"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="102" id="Lrd-BO-vRu"/>
                                     <constraint firstAttribute="height" constant="30" id="pkH-Zw-uEn"/>
@@ -1629,7 +1629,7 @@
                                 </connections>
                             </button>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="44" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="PEc-Rn-eBz">
-                                <rect key="frame" x="20" y="40" width="440" height="222"/>
+                                <rect key="frame" x="20" y="44" width="440" height="198"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
                                     <tableViewCell clipsSubviews="YES" contentMode="scaleToFill" selectionStyle="blue" hidesAccessoryWhenEditing="NO" indentationLevel="1" indentationWidth="0.0" reuseIdentifier="LoginListCell" textLabel="NOt-hZ-Ysa" style="IBUITableViewCellStyleDefault" id="FV6-lD-g7T">
@@ -1810,7 +1810,7 @@ Email: redantsupport@united-us.net</string>
         </scene>
     </scenes>
     <resources>
-        <image name="about" width="72" height="72"/>
+        <image name="about" width="96" height="96"/>
         <image name="album" width="48" height="48"/>
         <image name="btn_cancel" width="102" height="30"/>
         <image name="btn_retrieve" width="102" height="30"/>
@@ -1820,7 +1820,7 @@ Email: redantsupport@united-us.net</string>
         <image name="category" width="96" height="96"/>
         <image name="check_1_24" width="24" height="24"/>
         <image name="checkbox" width="16" height="16"/>
-        <image name="close" width="40" height="40"/>
+        <image name="close" width="32" height="32"/>
         <image name="contact" width="72" height="72"/>
         <image name="menu_open" width="36" height="36"/>
         <image name="npd_logo" width="110" height="13"/>

+ 37 - 39
RedAnt ERP Mobile/iSales-NPD/Base.lproj/OLM.storyboard

@@ -301,7 +301,7 @@
                                                     <rect key="frame" x="10" y="32" width="21" height="21"/>
                                                     <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                                                     <state key="normal" image="button:hrK-DY-RbO:image"/>
-                                                    <state key="selected" image="98A4F9B9-AA28-4FCB-B3A5-2A5F7BB3CC0D"/>
+                                                    <state key="selected" image="05B5B60E-FDE8-4B10-A481-0D2903452EF1"/>
                                                     <connections>
                                                         <action selector="checkButtonClick:" destination="XXr-fU-67o" eventType="touchUpInside" id="KeU-ld-H4J"/>
                                                     </connections>
@@ -816,7 +816,7 @@
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Name" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="i1w-0J-KZf">
+                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" enabled="NO" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Name" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="i1w-0J-KZf">
                                 <rect key="frame" x="30" y="129" width="708" height="34"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                 <textInputTraits key="textInputTraits"/>
@@ -824,20 +824,6 @@
                                     <action selector="onNameChange:" destination="4E6-80-nis" eventType="editingChanged" id="1TU-hO-0mF"/>
                                 </connections>
                             </textField>
-                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Server" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="pwr-RB-oXC">
-                                <rect key="frame" x="30" y="173" width="50" height="20.5"/>
-                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                <nil key="textColor"/>
-                                <nil key="highlightedColor"/>
-                            </label>
-                            <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="natural" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="NdB-xa-R2E">
-                                <rect key="frame" x="30" y="204" width="708" height="34"/>
-                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                <textInputTraits key="textInputTraits"/>
-                                <connections>
-                                    <action selector="onServerChange:" destination="4E6-80-nis" eventType="editingChanged" id="Wto-AN-933"/>
-                                </connections>
-                            </textField>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Server Setting" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="R0K-zW-L9z">
                                 <rect key="frame" x="30" y="56" width="124" height="22"/>
                                 <fontDescription key="fontDescription" type="boldSystem" pointSize="18"/>
@@ -845,22 +831,21 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="3vw-sE-OsA">
-                                <rect key="frame" x="681.5" y="51.5" width="56.5" height="31"/>
+                                <rect key="frame" x="692" y="51.5" width="46" height="31"/>
                                 <state key="normal" title="Button"/>
-                                <buttonConfiguration key="configuration" style="plain" title="Scan"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Set"/>
                                 <connections>
                                     <action selector="onScanClick:" destination="4E6-80-nis" eventType="touchUpInside" id="8Z9-lm-Z9I"/>
-                                    <action selector="onSetServer:" destination="lfk-1f-lmJ" eventType="touchUpInside" id="jgE-II-8kA"/>
                                 </connections>
                             </button>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Local Data " textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yuq-p9-cMU">
-                                <rect key="frame" x="30" y="274" width="94" height="21"/>
+                                <rect key="frame" x="30" y="199" width="94" height="21"/>
                                 <fontDescription key="fontDescription" type="boldSystem" pointSize="18"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="TJI-TK-yrX">
-                                <rect key="frame" x="668" y="310" width="70" height="31"/>
+                                <rect key="frame" x="668" y="235" width="70" height="31"/>
                                 <state key="normal" title="Button"/>
                                 <buttonConfiguration key="configuration" style="plain" title="update"/>
                                 <connections>
@@ -877,7 +862,7 @@
                                 </connections>
                             </button>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Local data has not been initialized" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Obj-1G-kcW">
-                                <rect key="frame" x="30" y="315" width="257" height="21"/>
+                                <rect key="frame" x="30" y="240" width="257" height="21"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
@@ -895,19 +880,19 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Upload Setting" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zhm-2h-vLW">
-                                <rect key="frame" x="30" y="372" width="128.5" height="21"/>
+                                <rect key="frame" x="30" y="297" width="128.5" height="21"/>
                                 <fontDescription key="fontDescription" type="boldSystem" pointSize="18"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Max Retry Count" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ao6-r1-uXr">
-                                <rect key="frame" x="30" y="413" width="127.5" height="20.5"/>
+                                <rect key="frame" x="30" y="338" width="127.5" height="20.5"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="Rj3-QR-Agk">
-                                <rect key="frame" x="688" y="406.5" width="50" height="34"/>
+                                <rect key="frame" x="688" y="331.5" width="50" height="34"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="50" id="vR6-EP-Mmm"/>
                                 </constraints>
@@ -918,13 +903,13 @@
                                 </connections>
                             </textField>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Retry Wait TimeInterval" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="bt3-RG-tEN">
-                                <rect key="frame" x="30" y="453.5" width="177" height="20.5"/>
+                                <rect key="frame" x="30" y="378.5" width="177" height="20.5"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" textAlignment="center" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="yzC-7l-hc0">
-                                <rect key="frame" x="688" y="447" width="50" height="34"/>
+                                <rect key="frame" x="688" y="372" width="50" height="34"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="50" id="XIG-Hs-C1i"/>
                                 </constraints>
@@ -951,17 +936,33 @@
                                 </connections>
                             </button>
                             <switch hidden="YES" opaque="NO" contentMode="scaleToFill" horizontalHuggingPriority="750" verticalHuggingPriority="750" contentHorizontalAlignment="center" contentVerticalAlignment="center" on="YES" translatesAutoresizingMaskIntoConstraints="NO" id="tKv-XG-Ugr">
-                                <rect key="frame" x="689" y="489" width="51" height="31"/>
+                                <rect key="frame" x="689" y="414" width="51" height="31"/>
                                 <connections>
                                     <action selector="onAutoUpload:" destination="4E6-80-nis" eventType="valueChanged" id="9a0-gt-v8G"/>
                                 </connections>
                             </switch>
                             <label hidden="YES" opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Auto Start Upload" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Vel-ZT-H2H">
-                                <rect key="frame" x="30" y="494" width="136" height="20.5"/>
+                                <rect key="frame" x="30" y="419" width="136" height="20.5"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Hrq-La-ta7">
+                                <rect key="frame" x="314" y="849" width="140" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Change Password"/>
+                                <connections>
+                                    <action selector="onChangePasswordClick:" destination="4E6-80-nis" eventType="touchUpInside" id="guG-pO-bDk"/>
+                                </connections>
+                            </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="SRC-EL-dQp">
+                                <rect key="frame" x="322.5" y="890" width="123" height="31"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Delete Account"/>
+                                <connections>
+                                    <action selector="onDeleteAccountClick:" destination="4E6-80-nis" eventType="touchUpInside" id="2Ft-3g-0MI"/>
+                                </connections>
+                            </button>
                         </subviews>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                         <constraints>
@@ -974,33 +975,31 @@
                             <constraint firstItem="TQb-CN-2tn" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="8a7-Qp-xjJ"/>
                             <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="yuq-p9-cMU" secondAttribute="trailing" constant="20" symbolic="YES" id="AOj-cR-SdM"/>
                             <constraint firstItem="Obj-1G-kcW" firstAttribute="leading" secondItem="yuq-p9-cMU" secondAttribute="leading" id="Bn2-8S-64c"/>
-                            <constraint firstItem="yuq-p9-cMU" firstAttribute="top" secondItem="NdB-xa-R2E" secondAttribute="bottom" constant="36" id="CWm-Af-Ta8"/>
                             <constraint firstItem="TJI-TK-yrX" firstAttribute="centerY" secondItem="Obj-1G-kcW" secondAttribute="centerY" id="EXA-Sq-gml"/>
                             <constraint firstItem="pjl-GE-L5s" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="FVr-34-x7y"/>
                             <constraint firstItem="R0K-zW-L9z" firstAttribute="top" secondItem="auC-0B-URb" secondAttribute="bottom" constant="36" id="HFw-4H-pIJ"/>
                             <constraint firstItem="Vel-ZT-H2H" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="HQS-3n-bCN"/>
                             <constraint firstItem="TJI-TK-yrX" firstAttribute="trailing" secondItem="3vw-sE-OsA" secondAttribute="trailing" id="HRD-fh-HR7"/>
                             <constraint firstItem="OM7-ch-z2g" firstAttribute="centerY" secondItem="BqX-sY-rTI" secondAttribute="centerY" id="HUv-gz-KVD"/>
-                            <constraint firstItem="NdB-xa-R2E" firstAttribute="top" secondItem="pwr-RB-oXC" secondAttribute="bottom" constant="10.5" id="I0R-za-PKc"/>
                             <constraint firstItem="3vw-sE-OsA" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="R0K-zW-L9z" secondAttribute="trailing" constant="8" symbolic="YES" id="M1R-Ft-RMd"/>
                             <constraint firstItem="ao6-r1-uXr" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="Mdq-Ji-FxD"/>
                             <constraint firstItem="TJI-TK-yrX" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="Obj-1G-kcW" secondAttribute="trailing" constant="8" symbolic="YES" id="P60-Yg-CB1"/>
                             <constraint firstItem="zhm-2h-vLW" firstAttribute="top" secondItem="Obj-1G-kcW" secondAttribute="bottom" constant="36" id="QCw-tU-FSW"/>
                             <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="I4e-nd-eUd" secondAttribute="trailing" constant="20" symbolic="YES" id="Quu-V1-6oq"/>
                             <constraint firstItem="I4e-nd-eUd" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="TFg-oq-D04"/>
-                            <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="pwr-RB-oXC" secondAttribute="trailing" constant="20" symbolic="YES" id="Tn7-KK-Kj4"/>
                             <constraint firstItem="Obj-1G-kcW" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="U5C-06-qZ9"/>
-                            <constraint firstItem="pwr-RB-oXC" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="WWa-H5-tKM"/>
+                            <constraint firstItem="BqX-sY-rTI" firstAttribute="top" secondItem="SRC-EL-dQp" secondAttribute="bottom" constant="36" id="UZd-w1-DlX"/>
                             <constraint firstItem="yuq-p9-cMU" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="X1e-lJ-bkm"/>
                             <constraint firstItem="ao6-r1-uXr" firstAttribute="top" secondItem="zhm-2h-vLW" secondAttribute="bottom" constant="20" id="YLl-pj-Cd7"/>
                             <constraint firstItem="i1w-0J-KZf" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="ZUW-IV-Lwd"/>
                             <constraint firstItem="Rj3-QR-Agk" firstAttribute="centerY" secondItem="ao6-r1-uXr" secondAttribute="centerY" id="ZyE-8y-M9t"/>
-                            <constraint firstItem="NdB-xa-R2E" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="bYj-aX-acO"/>
+                            <constraint firstItem="Hrq-La-ta7" firstAttribute="centerX" secondItem="7d3-Km-gpZ" secondAttribute="centerX" id="b52-iN-T1G"/>
                             <constraint firstItem="5EI-0x-Aa2" firstAttribute="top" secondItem="pjl-GE-L5s" secondAttribute="bottom" constant="321" id="buo-Y2-8Dj"/>
                             <constraint firstItem="tKv-XG-Ugr" firstAttribute="centerY" secondItem="Vel-ZT-H2H" secondAttribute="centerY" id="d4b-Fa-8gv"/>
                             <constraint firstItem="nFJ-HW-wWn" firstAttribute="trailing" secondItem="3vw-sE-OsA" secondAttribute="trailing" id="ddH-L0-dQH"/>
+                            <constraint firstItem="SRC-EL-dQp" firstAttribute="centerX" secondItem="7d3-Km-gpZ" secondAttribute="centerX" id="fOb-y7-QHB"/>
+                            <constraint firstItem="yuq-p9-cMU" firstAttribute="top" secondItem="i1w-0J-KZf" secondAttribute="bottom" constant="36" id="fQF-nn-k42"/>
                             <constraint firstItem="TQb-CN-2tn" firstAttribute="leading" secondItem="yuq-p9-cMU" secondAttribute="leading" id="g0N-k3-cqN"/>
-                            <constraint firstItem="NdB-xa-R2E" firstAttribute="trailing" secondItem="i1w-0J-KZf" secondAttribute="trailing" id="gmy-7k-yGH"/>
                             <constraint firstItem="pjl-GE-L5s" firstAttribute="leading" secondItem="TQb-CN-2tn" secondAttribute="leading" id="hcZ-c0-Ctj"/>
                             <constraint firstItem="3vw-sE-OsA" firstAttribute="centerY" secondItem="R0K-zW-L9z" secondAttribute="centerY" id="jDM-CV-sia"/>
                             <constraint firstItem="yzC-7l-hc0" firstAttribute="trailing" secondItem="tKv-XG-Ugr" secondAttribute="trailing" id="jlR-Rk-9k1"/>
@@ -1013,7 +1012,7 @@
                             <constraint firstItem="OM7-ch-z2g" firstAttribute="leading" secondItem="BqX-sY-rTI" secondAttribute="trailing" constant="48" id="qFU-BW-R9Y"/>
                             <constraint firstItem="i1w-0J-KZf" firstAttribute="top" secondItem="I4e-nd-eUd" secondAttribute="bottom" constant="10" id="qfP-6Q-JBd"/>
                             <constraint firstAttribute="trailingMargin" secondItem="3vw-sE-OsA" secondAttribute="trailing" constant="10" id="rDV-kc-ko1"/>
-                            <constraint firstItem="pwr-RB-oXC" firstAttribute="top" secondItem="i1w-0J-KZf" secondAttribute="bottom" constant="10" id="rp3-LR-ylX"/>
+                            <constraint firstItem="SRC-EL-dQp" firstAttribute="top" secondItem="Hrq-La-ta7" secondAttribute="bottom" constant="10" id="raN-Nz-TAV"/>
                             <constraint firstItem="Vel-ZT-H2H" firstAttribute="top" secondItem="bt3-RG-tEN" secondAttribute="bottom" constant="20" id="vwp-Tm-MLJ"/>
                             <constraint firstItem="5EI-0x-Aa2" firstAttribute="top" secondItem="OM7-ch-z2g" secondAttribute="bottom" constant="36" id="wob-ev-E1S"/>
                             <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="TQb-CN-2tn" secondAttribute="trailing" constant="20" symbolic="YES" id="x3D-8R-lg2"/>
@@ -1023,7 +1022,6 @@
                     </view>
                     <connections>
                         <outlet property="autoSwitch" destination="tKv-XG-Ugr" id="2ty-AC-KoQ"/>
-                        <outlet property="internalTextField" destination="NdB-xa-R2E" id="h4q-n3-3zf"/>
                         <outlet property="labelUpdate" destination="Obj-1G-kcW" id="hgR-GJ-jxc"/>
                         <outlet property="nameTextField" destination="i1w-0J-KZf" id="Wp0-8i-mDx"/>
                         <outlet property="retryCountBox" destination="Rj3-QR-Agk" id="DLa-KS-G1a"/>
@@ -1092,7 +1090,7 @@
         </scene>
     </scenes>
     <resources>
-        <image name="98A4F9B9-AA28-4FCB-B3A5-2A5F7BB3CC0D" width="24" height="24">
+        <image name="05B5B60E-FDE8-4B10-A481-0D2903452EF1" width="24" height="24">
             <mutableData key="keyedArchiveRepresentation">
 YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8QD05T
 S2V5ZWRBcmNoaXZlctEICVRyb290gAGuCwwZGh8UJCkqMTQ3PUBVJG51bGzWDQ4PEBESExQVFhcYVk5T
@@ -1277,7 +1275,7 @@ QwAAAAAAAAAAAAAAAAAAE5M
 </mutableData>
         </image>
         <image name="checkbox" width="16" height="16"/>
-        <image name="close" width="32" height="32"/>
+        <image name="close" width="40" height="40"/>
         <systemColor name="systemBackgroundColor">
             <color white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
         </systemColor>

+ 4 - 1
RedAnt ERP Mobile/iSales-NPD/config.h

@@ -204,7 +204,10 @@
 #define  URL_ITEM_SEARCH  @"https://www.newpacificdirect.com/isales/itemSearch.htm"
 #define  URL_CATEGORY_LOADMORE  @"https://www.newpacificdirect.com/isales/categoryMore.htm"
 
-
+#define URL_SERVER_LIST @""
+#define URL_SERVER_CHECK @""
+#define URL_CHANGE_PASSWORD @""
+#define URL_SIGN_UP @""
 #define  URL_ORDER_LIST  @"https://www.newpacificdirect.com/isales/orderList.htm"
 #define  URL_ORDER_DETAIL  @"https://www.newpacificdirect.com/isales/orderDetail.htm"
 #define URL_COMMIT_ORDER @"https://www.newpacificdirect.com/isales/createOrder.htm"

Algúns arquivos non se mostraron porque demasiados arquivos cambiaron neste cambio