Quellcode durchsuchen

HMLG Scan Order 1.34

Add stock display function
Ray Zhang vor 3 Jahren
Ursprung
Commit
9750ca8dae
25 geänderte Dateien mit 629 neuen und 181 gelöschten Zeilen
  1. 4 4
      RA Image/RA Image.xcodeproj/project.pbxproj
  2. 4 4
      RedAnt ERP Mobile/HMLG Scan Order.xcodeproj/project.pbxproj
  3. 1 1
      RedAnt ERP Mobile/HMLG Scan Order.xcodeproj/xcuserdata/ruizhang.xcuserdatad/xcschemes/xcschememanagement.plist
  4. 211 120
      RedAnt ERP Mobile/HMLG Scan Order/SO.storyboard
  5. 1 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanHistoryViewController.h
  6. 28 1
      RedAnt ERP Mobile/HMLG Scan Order/ScanHistoryViewController.m
  7. 3 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanHomeViewController.m
  8. 1 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanListCell.h
  9. 1 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanModelListCell.h
  10. 2 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanOrderModelListViewController.h
  11. 26 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanOrderModelListViewController.m
  12. 1 0
      RedAnt ERP Mobile/HMLG Scan Order/ScanSearchViewController.h
  13. 38 1
      RedAnt ERP Mobile/HMLG Scan Order/ScanSearchViewController.m
  14. 2 0
      RedAnt ERP Mobile/HMLG Scan Order/ServerSettingViewController.h
  15. 40 0
      RedAnt ERP Mobile/HMLG Scan Order/ServerSettingViewController.m
  16. 4 1
      RedAnt ERP Mobile/HMLG Scan Order/config.h
  17. 1 1
      RedAnt ERP Mobile/common/Functions/camscan/ScannerViewController.m
  18. 2 0
      RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.h
  19. 16 0
      RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.m
  20. 5 0
      RedAnt ERP Mobile/common/Functions/offline/OfflineSettingViewController.m
  21. 4 2
      RedAnt ERP Mobile/common/data_provider/RADataProvider.h
  22. 190 1
      RedAnt ERP Mobile/common/data_provider/RADataProvider.m
  23. 1 1
      RedAnt ERP Mobile/iSales-CONTRAST.xcodeproj/xcuserdata/ruizhang.xcuserdatad/xcschemes/xcschememanagement.plist
  24. 42 44
      RedAnt ERP Mobile/iSales-NPD/Base.lproj/OLM.storyboard
  25. 1 0
      common/NetworkUtils.m

+ 4 - 4
RA Image/RA Image.xcodeproj/project.pbxproj

@@ -1008,12 +1008,12 @@
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				CURRENT_PROJECT_VERSION = 52472;
+				CURRENT_PROJECT_VERSION = 52795;
 				DEVELOPMENT_TEAM = HXWLAA5YN5;
 				INFOPLIST_FILE = "RA Image/Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
-				MARKETING_VERSION = 1.19;
+				MARKETING_VERSION = 1.20;
 				PRODUCT_BUNDLE_IDENTIFIER = "usai.redant.RA-Image";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
@@ -1025,12 +1025,12 @@
 			buildSettings = {
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				CURRENT_PROJECT_VERSION = 52472;
+				CURRENT_PROJECT_VERSION = 52795;
 				DEVELOPMENT_TEAM = HXWLAA5YN5;
 				INFOPLIST_FILE = "RA Image/Info.plist";
 				IPHONEOS_DEPLOYMENT_TARGET = 11.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
-				MARKETING_VERSION = 1.19;
+				MARKETING_VERSION = 1.20;
 				PRODUCT_BUNDLE_IDENTIFIER = "usai.redant.RA-Image";
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";

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

@@ -2520,7 +2520,7 @@
 				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO;
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				CURRENT_PROJECT_VERSION = 52652;
+				CURRENT_PROJECT_VERSION = 52654;
 				DEVELOPMENT_TEAM = HXWLAA5YN5;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -2537,7 +2537,7 @@
 					"$(PROJECT_DIR)/ScanApiSDK-10.2.227-2/lib",
 					"$(PROJECT_DIR)/GoogleAnalytics/GoogleAnalytics/Libraries",
 				);
-				MARKETING_VERSION = 1.33;
+				MARKETING_VERSION = 1.34;
 				OTHER_LDFLAGS = (
 					"$(inherited)",
 					"-ObjC",
@@ -2569,7 +2569,7 @@
 				CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = NO;
 				CODE_SIGN_IDENTITY = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
-				CURRENT_PROJECT_VERSION = 52652;
+				CURRENT_PROJECT_VERSION = 52654;
 				DEVELOPMENT_TEAM = HXWLAA5YN5;
 				FRAMEWORK_SEARCH_PATHS = (
 					"$(inherited)",
@@ -2586,7 +2586,7 @@
 					"$(PROJECT_DIR)/ScanApiSDK-10.2.227-2/lib",
 					"$(PROJECT_DIR)/GoogleAnalytics/GoogleAnalytics/Libraries",
 				);
-				MARKETING_VERSION = 1.33;
+				MARKETING_VERSION = 1.34;
 				OTHER_LDFLAGS = (
 					"$(inherited)",
 					"-ObjC",

+ 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>1</integer>
+			<integer>3</integer>
 		</dict>
 	</dict>
 </dict>

+ 211 - 120
RedAnt ERP Mobile/HMLG Scan Order/SO.storyboard

@@ -95,15 +95,15 @@
                                 <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
                             </textField>
                         </subviews>
-                        <viewLayoutGuide key="safeArea" id="vDu-zF-Fre"/>
+                        <viewLayoutGuide key="safeArea" id="j2n-WV-y9L"/>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
                             <constraint firstItem="gGe-DV-etn" firstAttribute="top" secondItem="G7K-ET-ViD" secondAttribute="bottom" constant="20" id="3GU-k4-ifh"/>
                             <constraint firstItem="zIY-Ho-SNj" firstAttribute="centerY" secondItem="gGe-DV-etn" secondAttribute="centerY" id="4LP-ex-cNh"/>
-                            <constraint firstItem="vDu-zF-Fre" firstAttribute="bottom" secondItem="mGr-dd-c4r" secondAttribute="bottom" constant="20" id="58c-Jv-wgG"/>
+                            <constraint firstItem="j2n-WV-y9L" firstAttribute="bottom" secondItem="mGr-dd-c4r" secondAttribute="bottom" constant="20" id="58c-Jv-wgG"/>
                             <constraint firstItem="jKb-jW-Rds" firstAttribute="centerY" secondItem="j28-du-bFd" secondAttribute="centerY" id="5Pu-Nk-VwB"/>
-                            <constraint firstItem="gGe-DV-etn" firstAttribute="leading" secondItem="vDu-zF-Fre" secondAttribute="leading" constant="20" id="6fi-Oz-HkC"/>
-                            <constraint firstItem="vDu-zF-Fre" firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="z2t-CO-48M" secondAttribute="trailing" constant="20" id="8jD-tF-gTK"/>
+                            <constraint firstItem="gGe-DV-etn" firstAttribute="leading" secondItem="j2n-WV-y9L" secondAttribute="leading" constant="20" id="6fi-Oz-HkC"/>
+                            <constraint firstItem="j2n-WV-y9L" firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="z2t-CO-48M" secondAttribute="trailing" constant="20" id="8jD-tF-gTK"/>
                             <constraint firstItem="cgR-Wk-NQr" firstAttribute="centerY" secondItem="mGr-dd-c4r" secondAttribute="centerY" id="9xE-KH-OIN"/>
                             <constraint firstItem="6Gl-5w-SXW" firstAttribute="leading" secondItem="gGe-DV-etn" secondAttribute="trailing" constant="20" id="GSW-ov-hBX"/>
                             <constraint firstItem="zIY-Ho-SNj" firstAttribute="leading" secondItem="j28-du-bFd" secondAttribute="leading" id="HmV-uz-Xuf"/>
@@ -111,17 +111,17 @@
                             <constraint firstItem="PRk-Ka-jS0" firstAttribute="leading" secondItem="G7K-ET-ViD" secondAttribute="trailing" constant="24" id="QLn-1y-I6u"/>
                             <constraint firstItem="j28-du-bFd" firstAttribute="top" secondItem="zIY-Ho-SNj" secondAttribute="bottom" constant="20" id="RVa-FV-loq"/>
                             <constraint firstItem="PRk-Ka-jS0" firstAttribute="bottom" secondItem="G7K-ET-ViD" secondAttribute="bottom" id="aRe-X1-y7i"/>
-                            <constraint firstItem="mGr-dd-c4r" firstAttribute="leading" secondItem="vDu-zF-Fre" secondAttribute="leading" constant="24" id="aUg-jz-E4l"/>
+                            <constraint firstItem="mGr-dd-c4r" firstAttribute="leading" secondItem="j2n-WV-y9L" secondAttribute="leading" constant="24" id="aUg-jz-E4l"/>
                             <constraint firstItem="gOI-tN-7Fh" firstAttribute="centerY" secondItem="j28-du-bFd" secondAttribute="centerY" id="cIa-HA-X5q"/>
-                            <constraint firstItem="G7K-ET-ViD" firstAttribute="leading" secondItem="vDu-zF-Fre" secondAttribute="leading" constant="24" id="fMj-BF-B9w"/>
-                            <constraint firstAttribute="trailing" secondItem="PRk-Ka-jS0" secondAttribute="trailing" constant="24" id="gn5-Dq-cBI"/>
-                            <constraint firstItem="vDu-zF-Fre" firstAttribute="trailing" secondItem="cgR-Wk-NQr" secondAttribute="trailing" constant="24" id="hQT-d0-UO8"/>
-                            <constraint firstItem="vDu-zF-Fre" firstAttribute="trailing" secondItem="jKb-jW-Rds" secondAttribute="trailing" constant="20" id="iSh-ii-5V7"/>
+                            <constraint firstItem="G7K-ET-ViD" firstAttribute="leading" secondItem="j2n-WV-y9L" secondAttribute="leading" constant="24" id="fMj-BF-B9w"/>
+                            <constraint firstItem="j2n-WV-y9L" firstAttribute="trailing" secondItem="PRk-Ka-jS0" secondAttribute="trailing" constant="24" id="gn5-Dq-cBI"/>
+                            <constraint firstItem="j2n-WV-y9L" firstAttribute="trailing" secondItem="cgR-Wk-NQr" secondAttribute="trailing" constant="24" id="hQT-d0-UO8"/>
+                            <constraint firstItem="j2n-WV-y9L" firstAttribute="trailing" secondItem="jKb-jW-Rds" secondAttribute="trailing" constant="20" id="iSh-ii-5V7"/>
                             <constraint firstItem="z2t-CO-48M" firstAttribute="leading" secondItem="zIY-Ho-SNj" secondAttribute="trailing" constant="20" id="jda-JG-ryM"/>
-                            <constraint firstItem="G7K-ET-ViD" firstAttribute="top" secondItem="vDu-zF-Fre" secondAttribute="top" id="kwA-bE-daq"/>
+                            <constraint firstItem="G7K-ET-ViD" firstAttribute="top" secondItem="j2n-WV-y9L" secondAttribute="top" id="kwA-bE-daq"/>
                             <constraint firstItem="jKb-jW-Rds" firstAttribute="leading" secondItem="gOI-tN-7Fh" secondAttribute="trailing" constant="15" id="sGw-T2-LQO"/>
                             <constraint firstItem="zIY-Ho-SNj" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="6Gl-5w-SXW" secondAttribute="trailing" constant="20" id="t5O-Yw-eva"/>
-                            <constraint firstItem="zIY-Ho-SNj" firstAttribute="leading" secondItem="5EZ-qb-Rvc" secondAttribute="leading" constant="240" id="u1d-JP-AUm"/>
+                            <constraint firstItem="zIY-Ho-SNj" firstAttribute="leading" secondItem="j2n-WV-y9L" secondAttribute="leading" constant="240" id="u1d-JP-AUm"/>
                             <constraint firstItem="6Gl-5w-SXW" firstAttribute="centerY" secondItem="gGe-DV-etn" secondAttribute="centerY" id="uD0-dH-GtW"/>
                             <constraint firstItem="gOI-tN-7Fh" firstAttribute="leading" secondItem="j28-du-bFd" secondAttribute="trailing" constant="15" id="wUj-99-2IP"/>
                             <constraint firstItem="z2t-CO-48M" firstAttribute="centerY" secondItem="zIY-Ho-SNj" secondAttribute="centerY" id="yMs-sK-Llu"/>
@@ -265,24 +265,24 @@
                                 </connections>
                             </button>
                         </subviews>
-                        <viewLayoutGuide key="safeArea" id="Ub5-6j-V9f"/>
+                        <viewLayoutGuide key="safeArea" id="Ecz-Mj-Fo1"/>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
-                            <constraint firstItem="Ub5-6j-V9f" firstAttribute="bottom" secondItem="mWZ-UV-2uq" secondAttribute="bottom" constant="11" id="0Bx-r1-tWP"/>
+                            <constraint firstItem="Ecz-Mj-Fo1" firstAttribute="bottom" secondItem="mWZ-UV-2uq" secondAttribute="bottom" constant="11" id="0Bx-r1-tWP"/>
                             <constraint firstItem="qvG-pb-38K" firstAttribute="centerY" secondItem="sCj-Br-UXR" secondAttribute="centerY" id="3MW-AO-xnD"/>
                             <constraint firstItem="grH-Ll-jqG" firstAttribute="leading" secondItem="sCj-Br-UXR" secondAttribute="trailing" constant="40" id="4LU-vF-cLU"/>
-                            <constraint firstItem="Ub5-6j-V9f" firstAttribute="bottom" secondItem="GSH-xU-ZC2" secondAttribute="bottom" constant="11" id="9RE-6A-fEs"/>
-                            <constraint firstItem="Ub5-6j-V9f" firstAttribute="trailing" secondItem="qvG-pb-38K" secondAttribute="trailing" constant="191" id="FFg-UJ-ykr"/>
-                            <constraint firstItem="sPq-7c-wJs" firstAttribute="leading" secondItem="Ub5-6j-V9f" secondAttribute="leading" constant="10" id="KSX-1U-dOP"/>
-                            <constraint firstItem="sCj-Br-UXR" firstAttribute="leading" secondItem="Ub5-6j-V9f" secondAttribute="leading" constant="26" id="NHY-bC-Z4F"/>
-                            <constraint firstItem="Ub5-6j-V9f" firstAttribute="trailing" secondItem="mWZ-UV-2uq" secondAttribute="trailing" constant="79" id="OQ1-mK-4Ok"/>
+                            <constraint firstItem="Ecz-Mj-Fo1" firstAttribute="bottom" secondItem="GSH-xU-ZC2" secondAttribute="bottom" constant="11" id="9RE-6A-fEs"/>
+                            <constraint firstItem="Ecz-Mj-Fo1" firstAttribute="trailing" secondItem="qvG-pb-38K" secondAttribute="trailing" constant="191" id="FFg-UJ-ykr"/>
+                            <constraint firstItem="sPq-7c-wJs" firstAttribute="leading" secondItem="Ecz-Mj-Fo1" secondAttribute="leading" constant="10" id="KSX-1U-dOP"/>
+                            <constraint firstItem="sCj-Br-UXR" firstAttribute="leading" secondItem="Ecz-Mj-Fo1" secondAttribute="leading" constant="26" id="NHY-bC-Z4F"/>
+                            <constraint firstItem="Ecz-Mj-Fo1" firstAttribute="trailing" secondItem="mWZ-UV-2uq" secondAttribute="trailing" constant="79" id="OQ1-mK-4Ok"/>
                             <constraint firstItem="sPq-7c-wJs" firstAttribute="top" secondItem="sCj-Br-UXR" secondAttribute="bottom" id="RaJ-QC-85Q"/>
                             <constraint firstItem="grH-Ll-jqG" firstAttribute="centerY" secondItem="sCj-Br-UXR" secondAttribute="centerY" id="SDu-WD-weN"/>
                             <constraint firstItem="qvG-pb-38K" firstAttribute="leading" secondItem="grH-Ll-jqG" secondAttribute="trailing" constant="40" id="Vqg-24-M3L"/>
-                            <constraint firstItem="GSH-xU-ZC2" firstAttribute="leading" secondItem="Ub5-6j-V9f" secondAttribute="leading" constant="79" id="d8f-BY-CMF"/>
-                            <constraint firstItem="Ub5-6j-V9f" firstAttribute="trailing" secondItem="sPq-7c-wJs" secondAttribute="trailing" constant="10" id="ipE-3u-z1U"/>
-                            <constraint firstItem="sCj-Br-UXR" firstAttribute="top" secondItem="Ub5-6j-V9f" secondAttribute="top" constant="10" id="plf-xG-nMu"/>
-                            <constraint firstItem="Ub5-6j-V9f" firstAttribute="bottom" secondItem="sPq-7c-wJs" secondAttribute="bottom" constant="50" id="vyK-ij-CMW"/>
+                            <constraint firstItem="GSH-xU-ZC2" firstAttribute="leading" secondItem="Ecz-Mj-Fo1" secondAttribute="leading" constant="79" id="d8f-BY-CMF"/>
+                            <constraint firstItem="Ecz-Mj-Fo1" firstAttribute="trailing" secondItem="sPq-7c-wJs" secondAttribute="trailing" constant="10" id="ipE-3u-z1U"/>
+                            <constraint firstItem="sCj-Br-UXR" firstAttribute="top" secondItem="Ecz-Mj-Fo1" secondAttribute="top" constant="10" id="plf-xG-nMu"/>
+                            <constraint firstItem="Ecz-Mj-Fo1" firstAttribute="bottom" secondItem="sPq-7c-wJs" secondAttribute="bottom" constant="50" id="vyK-ij-CMW"/>
                         </constraints>
                     </view>
                     <value key="contentSizeForViewInPopover" type="size" width="480" height="320"/>
@@ -388,7 +388,7 @@
                                 </connections>
                             </button>
                         </subviews>
-                        <viewLayoutGuide key="safeArea" id="KlS-KE-AcV"/>
+                        <viewLayoutGuide key="safeArea" id="jcg-Mc-NdC"/>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
                             <constraint firstItem="XyX-ZJ-w5O" firstAttribute="width" secondItem="j4k-ge-lGR" secondAttribute="width" id="23P-rg-3ir"/>
@@ -398,20 +398,20 @@
                             <constraint firstItem="Yd7-ed-ROM" firstAttribute="centerY" secondItem="c2l-a1-1N7" secondAttribute="centerY" id="M0h-dZ-Krs"/>
                             <constraint firstItem="C8q-nA-CQp" firstAttribute="leading" secondItem="rGb-d5-ylx" secondAttribute="trailing" constant="11" id="OoD-kO-8ua"/>
                             <constraint firstItem="C8q-nA-CQp" firstAttribute="centerY" secondItem="j4k-ge-lGR" secondAttribute="centerY" id="PAp-MT-OuU"/>
-                            <constraint firstItem="KlS-KE-AcV" firstAttribute="bottom" secondItem="c2l-a1-1N7" secondAttribute="bottom" constant="60" id="PUW-RR-bBg"/>
+                            <constraint firstItem="jcg-Mc-NdC" firstAttribute="bottom" secondItem="c2l-a1-1N7" secondAttribute="bottom" constant="60" id="PUW-RR-bBg"/>
                             <constraint firstItem="duu-Y5-mBR" firstAttribute="top" secondItem="WFI-Em-MeJ" secondAttribute="top" constant="45" id="UcA-sh-ZlQ"/>
                             <constraint firstItem="rGb-d5-ylx" firstAttribute="leading" secondItem="j4k-ge-lGR" secondAttribute="trailing" constant="11" id="WAO-6y-5ZS"/>
                             <constraint firstItem="TM5-qF-w8m" firstAttribute="centerY" secondItem="j4k-ge-lGR" secondAttribute="centerY" id="YkY-ry-pd0"/>
-                            <constraint firstItem="KlS-KE-AcV" firstAttribute="trailing" secondItem="Yd7-ed-ROM" secondAttribute="trailing" constant="90" id="ecW-xW-YfS"/>
-                            <constraint firstItem="c2l-a1-1N7" firstAttribute="leading" secondItem="KlS-KE-AcV" secondAttribute="leading" constant="90" id="epF-ls-BLB"/>
+                            <constraint firstItem="jcg-Mc-NdC" firstAttribute="trailing" secondItem="Yd7-ed-ROM" secondAttribute="trailing" constant="90" id="ecW-xW-YfS"/>
+                            <constraint firstItem="c2l-a1-1N7" firstAttribute="leading" secondItem="jcg-Mc-NdC" secondAttribute="leading" constant="90" id="epF-ls-BLB"/>
                             <constraint firstItem="rGb-d5-ylx" firstAttribute="centerY" secondItem="j4k-ge-lGR" secondAttribute="centerY" id="fYs-3Y-Ou9"/>
-                            <constraint firstItem="KlS-KE-AcV" firstAttribute="trailing" secondItem="TM5-qF-w8m" secondAttribute="trailing" constant="30" id="g90-gR-zbZ"/>
+                            <constraint firstItem="jcg-Mc-NdC" firstAttribute="trailing" secondItem="TM5-qF-w8m" secondAttribute="trailing" constant="30" id="g90-gR-zbZ"/>
                             <constraint firstItem="rGb-d5-ylx" firstAttribute="width" secondItem="j4k-ge-lGR" secondAttribute="width" id="inh-LO-vrm"/>
                             <constraint firstItem="C8q-nA-CQp" firstAttribute="width" secondItem="j4k-ge-lGR" secondAttribute="width" id="nA3-ez-FOO"/>
                             <constraint firstItem="XyX-ZJ-w5O" firstAttribute="centerY" secondItem="j4k-ge-lGR" secondAttribute="centerY" id="s2J-Ra-NlF"/>
-                            <constraint firstItem="j4k-ge-lGR" firstAttribute="leading" secondItem="KlS-KE-AcV" secondAttribute="leading" constant="30" id="wpy-Wq-lid"/>
+                            <constraint firstItem="j4k-ge-lGR" firstAttribute="leading" secondItem="jcg-Mc-NdC" secondAttribute="leading" constant="30" id="wpy-Wq-lid"/>
                             <constraint firstItem="TM5-qF-w8m" firstAttribute="leading" secondItem="XyX-ZJ-w5O" secondAttribute="trailing" priority="750" constant="11" id="ywr-th-P1g"/>
-                            <constraint firstItem="duu-Y5-mBR" firstAttribute="centerX" secondItem="WFI-Em-MeJ" secondAttribute="centerX" id="zZ0-pq-ceO"/>
+                            <constraint firstItem="duu-Y5-mBR" firstAttribute="centerX" secondItem="jcg-Mc-NdC" secondAttribute="centerX" id="zZ0-pq-ceO"/>
                         </constraints>
                     </view>
                     <value key="contentSizeForViewInPopover" type="size" width="480" height="320"/>
@@ -438,7 +438,7 @@
                         <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="780" height="1050"/>
+                                <rect key="frame" x="15" y="67" width="780" height="998"/>
                                 <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="166" id="YfV-Cl-5Tu" customClass="ScanListCell">
@@ -448,7 +448,7 @@
                                             <rect key="frame" x="0.0" y="0.0" width="780" height="166"/>
                                             <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="w8x-0O-3TJ" userLabel="item label">
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="253" verticalHuggingPriority="251" text="Model" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="w8x-0O-3TJ" 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"/>
@@ -689,6 +689,7 @@
                                                 <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qoy-vW-xRS">
                                                     <rect key="frame" x="656.5" y="3" width="108.5" height="41"/>
                                                     <constraints>
+                                                        <constraint firstAttribute="width" constant="108.5" id="WcD-3E-U81"/>
                                                         <constraint firstAttribute="height" constant="41" id="qRl-e7-gJa"/>
                                                     </constraints>
                                                     <state key="normal" title="Button"/>
@@ -697,8 +698,8 @@
                                                         <action selector="onAddToCart:" destination="YfV-Cl-5Tu" eventType="touchUpInside" id="Jm6-n3-clg"/>
                                                     </connections>
                                                 </button>
-                                                <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="qAW-4E-Lac" userLabel="item label">
-                                                    <rect key="frame" x="86.5" y="14.5" width="135" height="18"/>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="252" text="42.8 x 68.3 x 30.5H" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="qAW-4E-Lac" userLabel="item label">
+                                                    <rect key="frame" x="86.5" y="14.5" width="461.5" height="18"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                     <nil key="textColor"/>
                                                     <nil key="highlightedColor"/>
@@ -727,6 +728,12 @@ line 3</string>
                                                     <nil key="textColor"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" text="Stock:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1X6-wZ-4ID">
+                                                    <rect key="frame" x="578" y="13" width="48.5" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
                                             </subviews>
                                             <constraints>
                                                 <constraint firstAttribute="trailing" secondItem="qoy-vW-xRS" secondAttribute="trailing" constant="15" id="0N9-nj-8aK"/>
@@ -759,6 +766,7 @@ line 3</string>
                                                 <constraint firstItem="xLb-sH-DDc" firstAttribute="width" secondItem="7Cf-ao-6dF" secondAttribute="width" id="N92-Iw-1dK"/>
                                                 <constraint firstItem="826-Bv-Afw" firstAttribute="top" secondItem="7Cf-ao-6dF" secondAttribute="top" id="SMH-xM-Uii"/>
                                                 <constraint firstItem="Gl3-BN-9JK" firstAttribute="width" secondItem="7Cf-ao-6dF" secondAttribute="width" id="Sh5-s5-3HX"/>
+                                                <constraint firstItem="1X6-wZ-4ID" firstAttribute="centerY" secondItem="qAW-4E-Lac" secondAttribute="centerY" id="Tan-HD-4bf"/>
                                                 <constraint firstItem="e4y-a4-rZx" firstAttribute="height" secondItem="7Cf-ao-6dF" secondAttribute="height" id="UEL-6b-SF9"/>
                                                 <constraint firstItem="2me-vx-6M3" firstAttribute="width" secondItem="ybo-Ex-ZSL" secondAttribute="width" id="V5D-Hs-R9w"/>
                                                 <constraint firstItem="2me-vx-6M3" firstAttribute="leading" secondItem="w2F-g1-5dN" secondAttribute="trailing" id="VC4-m8-o3w"/>
@@ -797,11 +805,13 @@ line 3</string>
                                                 <constraint firstItem="w2F-g1-5dN" firstAttribute="centerY" secondItem="ybo-Ex-ZSL" secondAttribute="centerY" id="qyK-RA-Y2e"/>
                                                 <constraint firstItem="Snb-I4-W0D" firstAttribute="leading" secondItem="xLb-sH-DDc" secondAttribute="trailing" id="s1L-QR-DcJ"/>
                                                 <constraint firstItem="qAW-4E-Lac" firstAttribute="leading" secondItem="w8x-0O-3TJ" secondAttribute="trailing" constant="20" id="sro-cg-Ruk"/>
+                                                <constraint firstItem="qoy-vW-xRS" firstAttribute="leading" secondItem="1X6-wZ-4ID" secondAttribute="trailing" constant="30" id="tEH-XQ-bvL"/>
                                                 <constraint firstItem="Pat-j4-mh1" firstAttribute="height" secondItem="7Cf-ao-6dF" secondAttribute="height" id="tme-Ds-cUD"/>
                                                 <constraint firstItem="2me-vx-6M3" firstAttribute="centerY" secondItem="ybo-Ex-ZSL" secondAttribute="centerY" id="vhW-qI-JaW"/>
                                                 <constraint firstItem="JzP-1G-jcR" firstAttribute="leading" secondItem="fkA-kv-8ja" secondAttribute="trailing" id="wQb-My-Pz4"/>
                                                 <constraint firstItem="Gl3-BN-9JK" firstAttribute="height" secondItem="ybo-Ex-ZSL" secondAttribute="height" id="x0d-9d-JjT"/>
                                                 <constraint firstItem="bh0-td-ws6" firstAttribute="top" secondItem="ZgQ-DK-Xnp" secondAttribute="bottom" constant="8" id="xCs-Bc-QH0"/>
+                                                <constraint firstItem="1X6-wZ-4ID" firstAttribute="leading" secondItem="qAW-4E-Lac" secondAttribute="trailing" constant="30" id="yF5-kX-CKx"/>
                                             </constraints>
                                         </tableViewCellContentView>
                                         <connections>
@@ -820,6 +830,7 @@ line 3</string>
                                             <outlet property="labelPriceNCA" destination="fkA-kv-8ja" id="xAX-Ba-wYC"/>
                                             <outlet property="labelPriceNet" destination="e4y-a4-rZx" id="Prz-Ev-JeU"/>
                                             <outlet property="labelPriceSpecial" destination="JzP-1G-jcR" id="L5Y-kt-tMD"/>
+                                            <outlet property="labelStock" destination="1X6-wZ-4ID" id="LH0-U1-Xt1"/>
                                         </connections>
                                     </tableViewCell>
                                 </prototypes>
@@ -828,23 +839,43 @@ line 3</string>
                                     <outlet property="delegate" destination="15s-Fk-XvT" id="Jhs-s8-iXH"/>
                                 </connections>
                             </tableView>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="DoD-YM-ccb">
+                                <rect key="frame" x="464" y="16" width="146" height="35"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Sync Availability"/>
+                                <connections>
+                                    <action selector="onUpdateStock:" destination="p2v-UD-wPL" eventType="touchUpInside" id="dPW-aT-XeT"/>
+                                    <action selector="onUpdateStock:" destination="15s-Fk-XvT" eventType="touchUpInside" id="htz-4h-0Hb"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Last Update Unknown" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="i5z-Uy-CJa">
+                                <rect key="frame" x="626" y="23" width="169" height="21"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
                         </subviews>
-                        <viewLayoutGuide key="safeArea" id="wVu-7y-EsC"/>
+                        <viewLayoutGuide key="safeArea" id="yCO-Fp-1MS"/>
                         <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"/>
+                            <constraint firstItem="aHE-X4-VOt" firstAttribute="leading" secondItem="yCO-Fp-1MS" secondAttribute="leading" constant="15" id="Pp5-iB-lwc"/>
+                            <constraint firstItem="yCO-Fp-1MS" firstAttribute="trailing" secondItem="aHE-X4-VOt" secondAttribute="trailing" constant="15" id="aFz-Ah-AWz"/>
+                            <constraint firstItem="yCO-Fp-1MS" firstAttribute="bottom" secondItem="aHE-X4-VOt" secondAttribute="bottom" constant="15" id="c3n-4O-S2T"/>
+                            <constraint firstItem="DoD-YM-ccb" firstAttribute="top" secondItem="mJj-rg-l2T" secondAttribute="top" constant="16" id="geP-Xg-Xx5"/>
+                            <constraint firstItem="i5z-Uy-CJa" firstAttribute="centerY" secondItem="DoD-YM-ccb" secondAttribute="centerY" id="gvY-Zz-a4d"/>
+                            <constraint firstItem="aHE-X4-VOt" firstAttribute="top" secondItem="DoD-YM-ccb" secondAttribute="bottom" constant="16" id="rzB-U7-7cs"/>
+                            <constraint firstItem="i5z-Uy-CJa" firstAttribute="trailing" secondItem="aHE-X4-VOt" secondAttribute="trailing" id="tAL-iT-IRB"/>
+                            <constraint firstItem="i5z-Uy-CJa" firstAttribute="leading" secondItem="DoD-YM-ccb" secondAttribute="trailing" constant="16" id="vJ3-QB-Fl5"/>
                         </constraints>
                     </view>
                     <connections>
+                        <outlet property="labelStock" destination="i5z-Uy-CJa" id="jKT-dy-pWY"/>
                         <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"/>
+            <point key="canvasLocation" x="-2201.4814814814813" y="95.555555555555557"/>
         </scene>
         <!--Scan Order Model List View Controller-->
         <scene sceneID="yPs-Ny-frH">
@@ -854,8 +885,38 @@ line 3</string>
                         <rect key="frame" x="0.0" y="0.0" width="810" height="1080"/>
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="N1G-LR-2o5">
+                                <rect key="frame" x="661.5" y="1005.5" width="108.5" height="34.5"/>
+                                <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="522.5" y="1005.5" width="99" height="34.5"/>
+                                <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>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wgc-2E-fLG">
+                                <rect key="frame" x="464" y="16" width="146" height="35"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Sync Availability"/>
+                                <connections>
+                                    <action selector="onUpdateStock:" destination="p2v-UD-wPL" eventType="touchUpInside" id="w5p-7S-GOT"/>
+                                </connections>
+                            </button>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Last Update Unknown" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="XSY-X8-3ee">
+                                <rect key="frame" x="626" y="23" width="169" height="21"/>
+                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                <nil key="textColor"/>
+                                <nil key="highlightedColor"/>
+                            </label>
                             <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="40" width="780" height="945.5"/>
+                                <rect key="frame" x="15" y="67" width="780" height="918.5"/>
                                 <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="166" id="di6-XI-avZ" customClass="ScanModelListCell">
@@ -865,7 +926,7 @@ line 3</string>
                                             <rect key="frame" x="0.0" y="0.0" width="780" height="166"/>
                                             <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">
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" 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"/>
@@ -1012,8 +1073,8 @@ line 3</string>
                                                     <fontDescription key="fontDescription" type="system" pointSize="14"/>
                                                     <textInputTraits key="textInputTraits"/>
                                                 </textField>
-                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" 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="86.5" y="14.5" width="135" height="18"/>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="42.8 x 68.3 x 30.5H" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="2JG-Qa-LOy" userLabel="item label">
+                                                    <rect key="frame" x="86.5" y="14.5" width="366" height="18"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                     <nil key="textColor"/>
                                                     <nil key="highlightedColor"/>
@@ -1153,6 +1214,12 @@ line 3</string>
                                                     <nil key="textColor"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Stock:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="k8U-Ey-RSG">
+                                                    <rect key="frame" x="482.5" y="13" width="48.5" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
                                             </subviews>
                                             <constraints>
                                                 <constraint firstItem="dpT-CT-Ret" firstAttribute="height" secondItem="AK1-ap-AfF" secondAttribute="height" id="04f-dU-ROg"/>
@@ -1188,6 +1255,7 @@ line 3</string>
                                                 <constraint firstItem="IEa-T1-E8F" firstAttribute="height" secondItem="ygm-0i-NY3" secondAttribute="height" id="QS4-jg-FTy"/>
                                                 <constraint firstItem="IEa-T1-E8F" firstAttribute="centerY" secondItem="ygm-0i-NY3" secondAttribute="centerY" id="RNH-TB-mMa"/>
                                                 <constraint firstItem="bVe-RI-TAM" firstAttribute="width" secondItem="AK1-ap-AfF" secondAttribute="width" id="Rf4-wO-9zn"/>
+                                                <constraint firstItem="oVz-hr-vFh" firstAttribute="leading" secondItem="k8U-Ey-RSG" secondAttribute="trailing" constant="30" id="SDY-5j-jAi"/>
                                                 <constraint firstItem="Nnj-5b-sBF" firstAttribute="trailing" secondItem="DVA-Pi-NA3" secondAttribute="trailing" id="T6f-bO-s8P"/>
                                                 <constraint firstItem="9hH-Br-ZKJ" firstAttribute="centerY" secondItem="AK1-ap-AfF" secondAttribute="centerY" id="Uxm-ni-sbR"/>
                                                 <constraint firstItem="vwr-od-ENo" firstAttribute="height" secondItem="AK1-ap-AfF" secondAttribute="height" id="UyU-FH-Q06"/>
@@ -1200,6 +1268,7 @@ line 3</string>
                                                 <constraint firstItem="IEa-T1-E8F" firstAttribute="width" secondItem="ygm-0i-NY3" secondAttribute="width" id="YOx-Yp-ZNh"/>
                                                 <constraint firstItem="bVe-RI-TAM" firstAttribute="centerY" secondItem="AK1-ap-AfF" secondAttribute="centerY" id="Zav-cy-CJ2"/>
                                                 <constraint firstItem="1kO-eZ-rr3" firstAttribute="height" secondItem="AK1-ap-AfF" secondAttribute="height" id="aCz-0h-Qfg"/>
+                                                <constraint firstItem="k8U-Ey-RSG" firstAttribute="leading" secondItem="2JG-Qa-LOy" secondAttribute="trailing" constant="30" id="awj-pL-4yV"/>
                                                 <constraint firstItem="IEa-T1-E8F" firstAttribute="height" secondItem="AK1-ap-AfF" secondAttribute="height" id="axG-6D-yld"/>
                                                 <constraint firstItem="9hH-Br-ZKJ" firstAttribute="width" secondItem="AK1-ap-AfF" secondAttribute="width" id="cFb-2x-2cO"/>
                                                 <constraint firstItem="dpT-CT-Ret" firstAttribute="top" secondItem="DVA-Pi-NA3" secondAttribute="bottom" constant="8" id="cII-zH-9oV"/>
@@ -1220,6 +1289,7 @@ line 3</string>
                                                 <constraint firstItem="N3z-jY-g8U" firstAttribute="leading" secondItem="Mbc-CV-To1" secondAttribute="trailing" id="ldj-n7-udx"/>
                                                 <constraint firstItem="N3z-jY-g8U" firstAttribute="height" secondItem="ygm-0i-NY3" secondAttribute="height" id="lm9-hK-V9h"/>
                                                 <constraint firstItem="Z2Y-LD-RFG" firstAttribute="leading" secondItem="Ajw-zF-nXf" secondAttribute="leading" constant="16" id="mHY-qN-zBd"/>
+                                                <constraint firstItem="oVz-hr-vFh" firstAttribute="centerY" secondItem="k8U-Ey-RSG" secondAttribute="centerY" id="mw2-L2-Gko"/>
                                                 <constraint firstItem="4MP-XW-NEm" firstAttribute="height" secondItem="ygm-0i-NY3" secondAttribute="height" id="nus-Gg-DnE"/>
                                                 <constraint firstItem="pMY-tU-GDI" firstAttribute="width" secondItem="AK1-ap-AfF" secondAttribute="width" id="nvI-dk-FGN"/>
                                                 <constraint firstAttribute="trailing" secondItem="pMY-tU-GDI" secondAttribute="trailing" constant="16" id="nyY-7h-uqk"/>
@@ -1258,6 +1328,7 @@ line 3</string>
                                             <outlet property="labelPriceNCA" destination="IEa-T1-E8F" id="TZm-Xx-1VY"/>
                                             <outlet property="labelPriceNet" destination="NfL-2K-HAE" id="GNR-hm-VP6"/>
                                             <outlet property="labelPriceSpecial" destination="6jj-I8-3Vs" id="fDM-Ps-CfE"/>
+                                            <outlet property="labelStock" destination="k8U-Ey-RSG" id="QFV-eg-36Y"/>
                                             <outlet property="steper" destination="Nnj-5b-sBF" id="Lba-IX-lJj"/>
                                         </connections>
                                     </tableViewCell>
@@ -1267,39 +1338,29 @@ line 3</string>
                                     <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="661.5" y="1005.5" width="108.5" height="34.5"/>
-                                <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="522.5" y="1005.5" width="99" height="34.5"/>
-                                <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"/>
+                        <viewLayoutGuide key="safeArea" id="kJK-2I-SQO"/>
                         <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="kJK-2I-SQO" firstAttribute="trailing" secondItem="bW9-lh-e8E" secondAttribute="trailing" constant="15" id="9XJ-w6-Rom"/>
                             <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="bW9-lh-e8E" firstAttribute="top" secondItem="wgc-2E-fLG" secondAttribute="bottom" constant="16" id="Dzd-6G-XNl"/>
+                            <constraint firstItem="kJK-2I-SQO" 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"/>
+                            <constraint firstItem="bW9-lh-e8E" firstAttribute="leading" secondItem="kJK-2I-SQO" secondAttribute="leading" constant="15" id="NU7-9g-SxT"/>
+                            <constraint firstItem="XSY-X8-3ee" firstAttribute="trailing" secondItem="bW9-lh-e8E" secondAttribute="trailing" id="Ud8-aI-4EP"/>
+                            <constraint firstItem="kJK-2I-SQO" firstAttribute="bottom" secondItem="N1G-LR-2o5" secondAttribute="bottom" constant="40" id="ZGa-sj-pwl"/>
+                            <constraint firstItem="XSY-X8-3ee" firstAttribute="centerY" secondItem="wgc-2E-fLG" secondAttribute="centerY" id="ldh-Yn-10z"/>
+                            <constraint firstItem="wgc-2E-fLG" firstAttribute="top" secondItem="IpQ-Py-Irh" secondAttribute="top" constant="16" id="vCL-3M-6R2"/>
+                            <constraint firstItem="XSY-X8-3ee" firstAttribute="leading" secondItem="wgc-2E-fLG" secondAttribute="trailing" constant="16" id="xKM-41-YA3"/>
                         </constraints>
                     </view>
                     <value key="contentSizeForViewInPopover" type="size" width="480" height="320"/>
                     <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
                     <connections>
+                        <outlet property="btnUpdateStoc" destination="wgc-2E-fLG" id="P1G-S4-18m"/>
+                        <outlet property="labelStock" destination="XSY-X8-3ee" id="6vF-yn-yrd"/>
                         <outlet property="tableView" destination="bW9-lh-e8E" id="N4g-Py-fjm"/>
                     </connections>
                 </viewController>
@@ -2041,19 +2102,19 @@ Stock</string>
                                 </constraints>
                             </view>
                         </subviews>
-                        <viewLayoutGuide key="safeArea" id="ioz-jR-kgv"/>
+                        <viewLayoutGuide key="safeArea" id="Rgg-vQ-7HT"/>
                         <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="G78-MN-iaL" firstAttribute="leading" secondItem="Rgg-vQ-7HT" secondAttribute="leading" id="Csg-gU-nMR"/>
+                            <constraint firstItem="Rxh-S5-42X" firstAttribute="trailing" secondItem="Rgg-vQ-7HT" secondAttribute="trailing" id="CzP-Jh-hTJ"/>
+                            <constraint firstItem="G78-MN-iaL" firstAttribute="trailing" secondItem="Rgg-vQ-7HT" 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 firstItem="RmD-zr-fSi" firstAttribute="trailing" secondItem="Rgg-vQ-7HT" 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"/>
+                            <constraint firstItem="Rxh-S5-42X" firstAttribute="leading" secondItem="Rgg-vQ-7HT" secondAttribute="leading" id="uIx-NR-Elx"/>
+                            <constraint firstItem="RmD-zr-fSi" firstAttribute="leading" secondItem="Rgg-vQ-7HT" secondAttribute="leading" id="wYp-iY-BFK"/>
                         </constraints>
                     </view>
                     <connections>
@@ -2096,29 +2157,6 @@ Stock</string>
                         <rect key="frame" x="0.0" y="0.0" width="810" height="1080"/>
                         <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="20" width="810" height="44"/>
-                                <subviews>
-                                    <searchBar contentMode="redraw" searchBarStyle="minimal" placeholder="Enter keyword" translatesAutoresizingMaskIntoConstraints="NO" id="XiM-yi-Oqa">
-                                        <rect key="frame" x="555" 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="64" width="810" height="1016"/>
                                 <color key="backgroundColor" systemColor="systemBackgroundColor"/>
@@ -2129,7 +2167,7 @@ Stock</string>
                                         <tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="RBD-TT-DqV" translatesAutoresizingMaskIntoConstraints="NO" id="h6v-P5-Y6J">
                                             <rect key="frame" x="0.0" y="0.0" width="810" height="166"/>
                                             <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="ToU-Mo-Rx3" userLabel="item label">
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="252" verticalHuggingPriority="251" text="Model" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ToU-Mo-Rx3" 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"/>
@@ -2380,6 +2418,7 @@ line 3</string>
                                                     <rect key="frame" x="685.5" y="6.5" width="108.5" height="34"/>
                                                     <constraints>
                                                         <constraint firstAttribute="height" constant="34" id="THg-oZ-qqR"/>
+                                                        <constraint firstAttribute="width" constant="108.5" id="X0W-EQ-UiB"/>
                                                     </constraints>
                                                     <state key="normal" title="Button"/>
                                                     <buttonConfiguration key="configuration" style="plain" title="Add to cart"/>
@@ -2402,12 +2441,18 @@ line 3</string>
                                                         <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="CXZ-rU-fI4" userLabel="item label">
-                                                    <rect key="frame" x="76.5" y="14.5" width="135" height="18"/>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" verticalHuggingPriority="251" text="42.8 x 68.3 x 30.5H" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="CXZ-rU-fI4" userLabel="item label">
+                                                    <rect key="frame" x="76.5" y="14.5" width="500.5" height="18"/>
                                                     <fontDescription key="fontDescription" type="system" pointSize="15"/>
                                                     <nil key="textColor"/>
                                                     <nil key="highlightedColor"/>
                                                 </label>
+                                                <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Stock:" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="yG2-aU-fHH">
+                                                    <rect key="frame" x="607" y="13" width="48.5" height="21"/>
+                                                    <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                                    <nil key="textColor"/>
+                                                    <nil key="highlightedColor"/>
+                                                </label>
                                             </subviews>
                                             <constraints>
                                                 <constraint firstItem="rL8-9w-zqg" firstAttribute="leading" secondItem="ToU-Mo-Rx3" secondAttribute="leading" id="0Eg-8G-CwM"/>
@@ -2417,7 +2462,9 @@ line 3</string>
                                                 <constraint firstAttribute="bottom" secondItem="W0g-JU-H8J" secondAttribute="bottom" constant="8" id="3gf-R6-rDT"/>
                                                 <constraint firstItem="51Y-wy-2ET" firstAttribute="height" secondItem="rL8-9w-zqg" secondAttribute="height" id="47y-9B-Agq"/>
                                                 <constraint firstItem="dPf-p7-b3A" firstAttribute="top" secondItem="P0q-Yt-GXv" secondAttribute="top" id="56B-OM-0Va"/>
+                                                <constraint firstItem="LEh-OL-gzO" firstAttribute="leading" secondItem="yG2-aU-fHH" secondAttribute="trailing" constant="30" id="5Nb-dd-2lu"/>
                                                 <constraint firstItem="dPf-p7-b3A" firstAttribute="leading" secondItem="TEW-3R-q3j" secondAttribute="trailing" id="83R-5x-6dD"/>
+                                                <constraint firstItem="LEh-OL-gzO" firstAttribute="centerY" secondItem="yG2-aU-fHH" secondAttribute="centerY" id="8OT-bM-Vzv"/>
                                                 <constraint firstItem="MB0-nt-BnH" firstAttribute="leading" secondItem="6Or-u7-4VU" secondAttribute="trailing" id="8gj-lP-RRH"/>
                                                 <constraint firstItem="Ua7-Qu-TE2" firstAttribute="width" secondItem="P0q-Yt-GXv" secondAttribute="width" id="A9e-Ig-BKf"/>
                                                 <constraint firstItem="W0g-JU-H8J" firstAttribute="top" secondItem="P0q-Yt-GXv" secondAttribute="top" id="AgZ-NT-RlH"/>
@@ -2451,6 +2498,7 @@ line 3</string>
                                                 <constraint firstItem="51Y-wy-2ET" firstAttribute="width" secondItem="rL8-9w-zqg" secondAttribute="width" id="VY5-j0-3Gd"/>
                                                 <constraint firstItem="CZn-lW-zFb" firstAttribute="height" secondItem="rL8-9w-zqg" secondAttribute="height" id="Vrp-1L-mgj"/>
                                                 <constraint firstItem="56k-bL-ui2" firstAttribute="height" secondItem="rL8-9w-zqg" secondAttribute="height" id="VvH-Ts-8Ws"/>
+                                                <constraint firstItem="yG2-aU-fHH" firstAttribute="leading" secondItem="CXZ-rU-fI4" secondAttribute="trailing" constant="30" id="XOs-n1-ApE"/>
                                                 <constraint firstItem="MB0-nt-BnH" firstAttribute="centerY" secondItem="rL8-9w-zqg" secondAttribute="centerY" id="XsH-re-zVi"/>
                                                 <constraint firstItem="TEW-3R-q3j" firstAttribute="height" secondItem="P0q-Yt-GXv" secondAttribute="height" id="YqC-Dt-t0c"/>
                                                 <constraint firstItem="Raa-F8-Tim" firstAttribute="width" secondItem="rL8-9w-zqg" secondAttribute="width" id="YuQ-r3-y0u"/>
@@ -2507,6 +2555,7 @@ line 3</string>
                                             <outlet property="labelPriceNCA" destination="dvh-cr-GdM" id="jEe-lE-SjP"/>
                                             <outlet property="labelPriceNet" destination="Ua7-Qu-TE2" id="3aE-lD-fYf"/>
                                             <outlet property="labelPriceSpecial" destination="Fgw-LJ-KR5" id="x2v-ab-5WD"/>
+                                            <outlet property="labelStock" destination="yG2-aU-fHH" id="zrg-82-hkh"/>
                                         </connections>
                                     </tableViewCell>
                                 </prototypes>
@@ -2515,21 +2564,63 @@ line 3</string>
                                     <outlet property="delegate" destination="lUM-3R-fk4" id="5Hl-c5-5St"/>
                                 </connections>
                             </tableView>
+                            <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="6GX-om-hTb" userLabel="searchbar">
+                                <rect key="frame" x="0.0" y="20" width="810" height="44"/>
+                                <subviews>
+                                    <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="4ma-Om-aYp">
+                                        <rect key="frame" x="0.0" y="4.5" width="146" height="35"/>
+                                        <state key="normal" title="Button"/>
+                                        <buttonConfiguration key="configuration" style="plain" title="Sync Availability"/>
+                                        <connections>
+                                            <action selector="onUpdateStock:" destination="lUM-3R-fk4" eventType="touchUpInside" id="DME-yR-0QG"/>
+                                            <action selector="onUpdateStock:" destination="p2v-UD-wPL" eventType="touchUpInside" id="cns-jN-A3D"/>
+                                        </connections>
+                                    </button>
+                                    <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Last Update Unknown" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="k4X-6G-CnI">
+                                        <rect key="frame" x="176" y="11.5" width="169" height="21"/>
+                                        <fontDescription key="fontDescription" type="system" pointSize="17"/>
+                                        <nil key="textColor"/>
+                                        <nil key="highlightedColor"/>
+                                    </label>
+                                    <searchBar contentMode="redraw" searchBarStyle="minimal" placeholder="Enter keyword" translatesAutoresizingMaskIntoConstraints="NO" id="XiM-yi-Oqa">
+                                        <rect key="frame" x="555" 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>
+                                <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
+                                <constraints>
+                                    <constraint firstItem="k4X-6G-CnI" firstAttribute="leading" secondItem="4ma-Om-aYp" secondAttribute="trailing" constant="30" id="7N4-FO-rVO"/>
+                                    <constraint firstAttribute="height" constant="44" id="Jsa-vZ-v8r"/>
+                                    <constraint firstAttribute="trailing" secondItem="XiM-yi-Oqa" secondAttribute="trailing" constant="15" id="RcI-eJ-h3J"/>
+                                    <constraint firstItem="k4X-6G-CnI" firstAttribute="centerY" secondItem="4ma-Om-aYp" secondAttribute="centerY" id="STh-gi-m0K"/>
+                                    <constraint firstItem="XiM-yi-Oqa" firstAttribute="centerY" secondItem="6GX-om-hTb" secondAttribute="centerY" id="bHO-nA-5Hc"/>
+                                    <constraint firstItem="XiM-yi-Oqa" firstAttribute="centerY" secondItem="4ma-Om-aYp" secondAttribute="centerY" id="oCq-4i-OZP"/>
+                                </constraints>
+                            </view>
                         </subviews>
-                        <viewLayoutGuide key="safeArea" id="Ze6-Is-6dX"/>
+                        <viewLayoutGuide key="safeArea" id="Tvp-1a-lIR"/>
                         <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="Tvp-1a-lIR" firstAttribute="bottom" secondItem="Zxn-QV-WBs" secondAttribute="bottom" id="8Bl-lK-rgd"/>
+                            <constraint firstItem="4ma-Om-aYp" firstAttribute="leading" secondItem="Zxn-QV-WBs" secondAttribute="leading" id="T3Z-tw-rVJ"/>
+                            <constraint firstItem="6GX-om-hTb" firstAttribute="leading" secondItem="Tvp-1a-lIR" secondAttribute="leading" id="WAy-la-TKm"/>
+                            <constraint firstItem="Tvp-1a-lIR" firstAttribute="trailing" secondItem="Zxn-QV-WBs" secondAttribute="trailing" id="WF3-hF-mle"/>
+                            <constraint firstItem="Zxn-QV-WBs" firstAttribute="leading" secondItem="Tvp-1a-lIR" 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"/>
+                            <constraint firstItem="Tvp-1a-lIR" firstAttribute="trailing" secondItem="6GX-om-hTb" secondAttribute="trailing" id="ild-BP-4V2"/>
+                            <constraint firstItem="6GX-om-hTb" firstAttribute="top" secondItem="Tvp-1a-lIR" secondAttribute="top" id="nfF-ch-ag6"/>
                         </constraints>
                     </view>
                     <connections>
                         <outlet property="headerView" destination="6GX-om-hTb" id="Iqv-GJ-Dqy"/>
+                        <outlet property="labelStock" destination="k4X-6G-CnI" id="0mp-Kg-0Jg"/>
                         <outlet property="searchBar" destination="XiM-yi-Oqa" id="NvG-2e-RVh"/>
                         <outlet property="tableview" destination="Zxn-QV-WBs" id="D9e-aP-h09"/>
                     </connections>
@@ -2616,16 +2707,16 @@ line 3</string>
                                 </constraints>
                             </view>
                         </subviews>
-                        <viewLayoutGuide key="safeArea" id="XV0-bs-Lf0"/>
+                        <viewLayoutGuide key="safeArea" id="m60-Iy-Zef"/>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
-                            <constraint firstItem="c9q-te-KHg" firstAttribute="centerX" secondItem="uQc-Lh-Rs6" secondAttribute="centerX" id="5py-rA-UQR"/>
+                            <constraint firstItem="c9q-te-KHg" firstAttribute="centerX" secondItem="m60-Iy-Zef" secondAttribute="centerX" id="5py-rA-UQR"/>
                             <constraint firstItem="Fch-tn-bXo" firstAttribute="top" secondItem="uQc-Lh-Rs6" secondAttribute="top" id="SfD-fe-Ur7"/>
                             <constraint firstItem="c9q-te-KHg" firstAttribute="centerY" secondItem="uQc-Lh-Rs6" secondAttribute="centerY" priority="750" id="dWN-tt-I2P"/>
-                            <constraint firstItem="Fch-tn-bXo" firstAttribute="leading" secondItem="XV0-bs-Lf0" secondAttribute="leading" id="ecu-14-4j6"/>
-                            <constraint firstItem="XV0-bs-Lf0" firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="c9q-te-KHg" secondAttribute="bottom" constant="420" id="qJH-sf-KLA"/>
+                            <constraint firstItem="Fch-tn-bXo" firstAttribute="leading" secondItem="m60-Iy-Zef" secondAttribute="leading" id="ecu-14-4j6"/>
+                            <constraint firstItem="m60-Iy-Zef" firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="c9q-te-KHg" secondAttribute="bottom" constant="420" id="qJH-sf-KLA"/>
                             <constraint firstAttribute="bottom" secondItem="Fch-tn-bXo" secondAttribute="bottom" id="rSE-qk-tFf"/>
-                            <constraint firstAttribute="trailing" secondItem="Fch-tn-bXo" secondAttribute="trailing" id="xc6-v5-vy7"/>
+                            <constraint firstItem="m60-Iy-Zef" firstAttribute="trailing" secondItem="Fch-tn-bXo" secondAttribute="trailing" id="xc6-v5-vy7"/>
                         </constraints>
                     </view>
                     <connections>
@@ -2665,13 +2756,13 @@ line 3</string>
                                 </connections>
                             </tableView>
                         </subviews>
-                        <viewLayoutGuide key="safeArea" id="FIq-lf-MSt"/>
+                        <viewLayoutGuide key="safeArea" id="JPn-WP-YuD"/>
                         <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"/>
+                            <constraint firstItem="AOw-ME-gdy" firstAttribute="leading" secondItem="JPn-WP-YuD" secondAttribute="leading" id="Hv8-2s-lzO"/>
+                            <constraint firstItem="JPn-WP-YuD" firstAttribute="bottom" secondItem="AOw-ME-gdy" secondAttribute="bottom" id="f2E-4b-Ds8"/>
+                            <constraint firstItem="AOw-ME-gdy" firstAttribute="top" secondItem="JPn-WP-YuD" secondAttribute="top" id="pN1-dS-LZR"/>
+                            <constraint firstItem="JPn-WP-YuD" firstAttribute="trailing" secondItem="AOw-ME-gdy" secondAttribute="trailing" id="qsG-wx-8MN"/>
                         </constraints>
                     </view>
                 </viewController>
@@ -2706,13 +2797,13 @@ line 3</string>
                                 </connections>
                             </tableView>
                         </subviews>
-                        <viewLayoutGuide key="safeArea" id="1zl-lL-LWR"/>
+                        <viewLayoutGuide key="safeArea" id="QI8-Ar-oqS"/>
                         <color key="backgroundColor" systemColor="systemBackgroundColor"/>
                         <constraints>
-                            <constraint firstItem="P62-AP-fR0" firstAttribute="leading" secondItem="1zl-lL-LWR" secondAttribute="leading" id="0Wy-zY-psD"/>
-                            <constraint firstItem="1zl-lL-LWR" firstAttribute="trailing" secondItem="P62-AP-fR0" secondAttribute="trailing" id="R51-2a-S9F"/>
-                            <constraint firstItem="1zl-lL-LWR" firstAttribute="bottom" secondItem="P62-AP-fR0" secondAttribute="bottom" id="jcD-Db-jtl"/>
-                            <constraint firstItem="P62-AP-fR0" firstAttribute="top" secondItem="1zl-lL-LWR" secondAttribute="top" id="vX1-Ms-DjO"/>
+                            <constraint firstItem="P62-AP-fR0" firstAttribute="leading" secondItem="QI8-Ar-oqS" secondAttribute="leading" id="0Wy-zY-psD"/>
+                            <constraint firstItem="QI8-Ar-oqS" firstAttribute="trailing" secondItem="P62-AP-fR0" secondAttribute="trailing" id="R51-2a-S9F"/>
+                            <constraint firstItem="QI8-Ar-oqS" firstAttribute="bottom" secondItem="P62-AP-fR0" secondAttribute="bottom" id="jcD-Db-jtl"/>
+                            <constraint firstItem="P62-AP-fR0" firstAttribute="top" secondItem="QI8-Ar-oqS" secondAttribute="top" id="vX1-Ms-DjO"/>
                         </constraints>
                     </view>
                     <simulatedNavigationBarMetrics key="simulatedTopBarMetrics" prompted="NO"/>

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

@@ -12,6 +12,7 @@ NS_ASSUME_NONNULL_BEGIN
 
 @interface ScanHistoryViewController : ActiveViewController
 @property (weak, nonatomic) IBOutlet UITableView *tableview;
+@property (weak, nonatomic) IBOutlet UILabel *labelStock;
 
 @end
 

+ 28 - 1
RedAnt ERP Mobile/HMLG Scan Order/ScanHistoryViewController.m

@@ -9,6 +9,7 @@
 #import "ScanHistoryViewController.h"
 #import "ScanListCell.h"
 #import "RASingleton.h"
+#import "RADataProvider.h"
 
 @interface ScanHistoryViewController ()
 
@@ -19,8 +20,34 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     // Do any additional setup after loading the view.
+    
+//    [self refreshStock];
+}
+- (IBAction)onUpdateStock:(id)sender {
+    [RADataProvider updateStock:self];
 }
 
+
+- (void)viewWillAppear:(BOOL)animated
+{
+    [super viewWillAppear:animated];
+    self.labelStock.text = [RADataProvider queryStockUpdateTime];
+}
+
+
+-(void) refreshStock
+{
+    
+    
+//    NSDictionary *addressDic1 = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanStock"];
+//    if (addressDic1) {
+//        NSString* updatetime=addressDic1[@"updatetime"];
+//        self.labelStock.text = updatetime;
+//    }
+//
+    self.labelStock.text = [RADataProvider queryStockUpdateTime];
+    [self.tableview reloadData];
+}
 /*
 #pragma mark - Navigation
 
@@ -53,7 +80,7 @@
     
     [cell setModelJson:arr[indexPath.row]];
    
-    
+    cell.labelStock.text = [RADataProvider queryStock:cell.labelModel.text];
     return cell;
 }
 

+ 3 - 0
RedAnt ERP Mobile/HMLG Scan Order/ScanHomeViewController.m

@@ -116,8 +116,11 @@
     [ActiveViewController Notify:@"ScanOrderListViewController" Message:@"ShowUnSubmit"];
     [mainvc switchToOrder];
 }
+
+
 -(void) loadNewsList
 {
+
     
     {
         [RADataProvider request_scan_news:^(NSMutableDictionary *result) {

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

@@ -23,6 +23,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (weak, nonatomic) IBOutlet UILabel *labelAvailable;
 @property (weak, nonatomic) IBOutlet UILabel *labelPriceNet;
 
+@property (weak, nonatomic) IBOutlet UILabel *labelStock;
 
 
 @property (weak, nonatomic) IBOutlet UILabel *labelPrice0;

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

@@ -26,6 +26,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (weak, nonatomic) IBOutlet UILabel *labelPriceNet;
 @property (weak, nonatomic) IBOutlet UILabel *labelPriceSpecial;
 @property (weak, nonatomic) IBOutlet UIStepper *steper;
+@property (weak, nonatomic) IBOutlet UILabel *labelStock;
 
 //@property int pre_val;
 @property (weak, nonatomic) IBOutlet UILabel *labelPrice0;

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

@@ -17,6 +17,8 @@ NS_ASSUME_NONNULL_BEGIN
 @property (strong, nonatomic) UITextField* lastedit;
 @property bool edit_check;
 @property int pre_val;
+@property (weak, nonatomic) IBOutlet UILabel *labelStock;
+@property (weak, nonatomic) IBOutlet UIButton *btnUpdateStoc;
 @end
 
 NS_ASSUME_NONNULL_END

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

@@ -23,8 +23,32 @@
 - (void)viewDidLoad {
     [super viewDidLoad];
     self.edit_check = true;
+    
+//    [self refreshStock];
     // Do any additional setup after loading the view.
 }
+- (void)viewWillAppear:(BOOL)animated
+{
+    [super viewWillAppear:animated];
+    self.labelStock.text = [RADataProvider queryStockUpdateTime];
+}
+- (IBAction)onUpdateStock:(id)sender {
+    [RADataProvider updateStock:self];
+}
+
+-(void) refreshStock
+{
+    
+    
+//    NSDictionary *addressDic1 = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanStock"];
+//    if (addressDic1) {
+//        NSString* updatetime=addressDic1[@"updatetime"];
+//        self.labelStock.text = updatetime;
+//    }
+    self.labelStock.text = [RADataProvider queryStockUpdateTime];
+    
+    [self.tableView reloadData];
+}
 - (IBAction)stepChange:(id)sender {
     
     UIStepper * stepper = (UIStepper *) sender;
@@ -271,6 +295,8 @@
     [cell setModelJson:arr[indexPath.row]];
     cell.editQTY.delegate = self;
     
+    cell.labelStock.text = [RADataProvider queryStock:cell.labelModel.text];
+    
     return cell;
 }
 

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

@@ -17,6 +17,7 @@ NS_ASSUME_NONNULL_BEGIN
 @property (strong,nonatomic) NSString* keywords;
 @property (weak, nonatomic) IBOutlet UIView *headerView;
 @property (strong,nonatomic) NSString* load_more_hint;
+@property (weak, nonatomic) IBOutlet UILabel *labelStock;
 
 
 @property long offset;

+ 38 - 1
RedAnt ERP Mobile/HMLG Scan Order/ScanSearchViewController.m

@@ -37,6 +37,30 @@
     }
     return _dataOperationQueue;
 }
+- (IBAction)onUpdateStock:(id)sender {
+    [RADataProvider updateStock:self];
+}
+
+- (void)viewWillAppear:(BOOL)animated
+{
+    [super viewWillAppear:animated];
+    self.labelStock.text = [RADataProvider queryStockUpdateTime];
+}
+
+-(void) refreshStock
+{
+    
+    
+//    NSDictionary *addressDic1 = [[NSUserDefaults standardUserDefaults] valueForKey:@"ScanStock"];
+//    if (addressDic1) {
+//        NSString* updatetime=addressDic1[@"updatetime"];
+//        self.labelStock.text = updatetime;
+//    }
+    self.labelStock.text = [RADataProvider queryStockUpdateTime];
+    
+    [self.tableview reloadData];
+}
+
 #ifndef RA_NOTIFICATION
 -(void) reload_container_getdata:(bool)update_data
 {
@@ -105,6 +129,8 @@
     
     
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(clear) name:@"Clear" object:nil];
+    
+//    [self refreshStock];
 }
 -(void)clear
 {
@@ -226,7 +252,7 @@
     
     [cell setModelJson:arr[indexPath.row]];
    
-    
+        cell.labelStock.text = [RADataProvider queryStock:cell.labelModel.text];
     return cell;
     }
 }
@@ -472,8 +498,19 @@
     
     self.keywords=searchBar.text;
     self.offset = 0;
+    
+    
+    
+    if(self.modellist.count>0)
+    {
+        NSIndexPath *indexPathOne = [NSIndexPath indexPathForRow:0 inSection:0];
+        [self.tableview scrollToRowAtIndexPath:indexPathOne atScrollPosition:UITableViewScrollPositionTop animated:YES];
+    }
+    
     [self.modellist removeAllObjects];
+    
     [self.tableview reloadData];
+    
     //  [self.content_data removeAllObjects];
     [self reload];
     

+ 2 - 0
RedAnt ERP Mobile/HMLG Scan Order/ServerSettingViewController.h

@@ -25,5 +25,7 @@ static NSString *kScanAddress = @"ScanAddress";
 @property (weak, nonatomic) IBOutlet UILabel *labelUpdate;
 @property (weak, nonatomic) IBOutlet UILabel *labelPriceGroup;
 @property (weak, nonatomic) IBOutlet UIButton *btnSetPriceGroup;
+@property (weak, nonatomic) IBOutlet UIButton *btnSync;
+@property (weak, nonatomic) IBOutlet UILabel *labelStock;
 
 @end

+ 40 - 0
RedAnt ERP Mobile/HMLG Scan Order/ServerSettingViewController.m

@@ -111,6 +111,13 @@
         self.btnSetPriceGroup.hidden =true;
     else
         self.btnSetPriceGroup.hidden =false;
+    
+    
+    
+    
+        self.labelStock.text = [RADataProvider queryStockUpdateTime];
+
+
 }
 - (void)viewDidLoad {
     [super viewDidLoad];
@@ -210,6 +217,15 @@
         NSString* updatetime=addressDic[@"updatetime"];
         self.labelUpdate.text = updatetime;
     }
+//    NSDictionary *addressDic1 = [self userDefaultsValue:@"ScanStock"];
+//    if (addressDic1) {
+//        NSString* updatetime=addressDic1[@"updatetime"];
+//        self.labelStock.text = updatetime;
+//    }
+//
+    
+    self.labelStock.text = [RADataProvider queryStockUpdateTime];
+    
 }
 
 #pragma mark - Button Click
@@ -262,8 +278,21 @@
 
 
 }
+- (IBAction)onSyncStock:(id)sender {
+    if(self.internalText.length>0)
+    {
+        [RADataProvider updateStock:self];
+    }
+    else
+    {
+        [RAUtils message_alert:@"Please setup the server first." title:@"Warrning" controller:self];
+    }
+}
+
+
 - (IBAction)onUpdateClick:(id)sender {
     
+  
     if(self.internalText.length>0)
     {
         
@@ -730,6 +759,17 @@
             [self setUserDefaultsValue:addressDic forKey:kScanAddress];
     AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
     appDelegate.address = [addressDic objectForKey:@"serverAddress"];
+    
+//
+//    NSMutableDictionary *templateDic = [NSMutableDictionary dictionary];
+//    NSString* datetime= [RAUtils current_date_time];
+//    templateDic[@"updatetime"]= datetime;
+//
+//
+//    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+//    [userDefaults setValue:templateDic forKey:@"ScanStock"];
+    
+    
 }
 
 - (IBAction)onAutoUpload:(id)sender {

+ 4 - 1
RedAnt ERP Mobile/HMLG Scan Order/config.h

@@ -10,7 +10,7 @@
 #define RedAnt_ERP_Mobile_config_h
 #define BUILD_HMLG_SCAN_ORDER
 #define BACKORDER_PROCESS // 允许backorder process
-#define JSON_TIMEOUT 30 //接口超时
+#define JSON_TIMEOUT 60 //接口超时
 
 #define GLES_SILENCE_DEPRECATION //关闭glkview警告
 
@@ -213,6 +213,9 @@
 
 #define URL_SERVER_LIST BASE_URL@"offlineorder_isales.php"
 #define URL_SCAN_NEWS @"offlineorder_isales.php"
+
+
+#define URL_SCAN_STOCK @"offlineorder_isales.php"
 #define URL_SERVER_CHECK @"offlineorder_isales.php"
 #define URL_SIGN_UP @"offlineorder_isales.php"
 #define URL_CHECK_STOCK @"offlineorder_isales.php"

+ 1 - 1
RedAnt ERP Mobile/common/Functions/camscan/ScannerViewController.m

@@ -243,7 +243,7 @@
     {
 //        self.scan_val = @"[[\"1111\",\"name0\",\"description\",\"10.1 X 20.2 X 30.3\",\"2\",\"12.34\",\"VIET\",\"VCSF\",\"May\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\"],[\"2222\",\"name1\",\"description\",\"10.1 X 20.2 X 30.3\",\"2\",\"12.34\",\"VIET\",\"VCSF\",\"May\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\",\"123.45\",\"234.56\"]]";
         
-        self.scan_val =@"[\"normal\",\"normal+\",\"special\",\"special+\"]";// @"[\"1002A70BK\"]";// 
+        self.scan_val =@"[\"1689-96*5\",\"normal+\",\"special\",\"special+\"]";// @"[\"1002A70BK\"]";// 
         [self addtocart];
     }
 

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

@@ -165,7 +165,9 @@ typedef void(^resultHandler)(NSMutableDictionary *result);
 //+(void) createScanTempFolder;
 //+(NSString*) getScanOrderPath;
 +(NSString*) getUserPath;
++(NSString*) getServerPath;
 +(NSString*) getScanPath;
+
 //+(void) moveScanTemp2Order;
 +(void) realguestLogin;
 +(NSString*) getScanOrderPath;

+ 16 - 0
RedAnt ERP Mobile/common/Functions/offline/OLDataProvider.m

@@ -2311,6 +2311,22 @@
 //    userpath = [userpath stringByAppendingPathComponent:user];
 //    return userpath;
 //}
+
++(NSString*) getServerPath
+{
+    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* user = RASingleton.sharedInstance.user;
+    NSString* serverpath = [documents stringByAppendingPathComponent:servername];
+//    userpath = [userpath stringByAppendingPathComponent:user];
+    return serverpath;
+}
 +(NSString*) getUserPath
 {
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

+ 5 - 0
RedAnt ERP Mobile/common/Functions/offline/OfflineSettingViewController.m

@@ -178,7 +178,12 @@
     
     
 }
+
+
+
 - (IBAction)OnCheckUpdate:(id)sender {
+    
+    
     UIApplication * app = [UIApplication sharedApplication];
     AppDelegate *appDelegate = (AppDelegate *)[app delegate];
     

+ 4 - 2
RedAnt ERP Mobile/common/data_provider/RADataProvider.h

@@ -22,6 +22,7 @@ NS_ASSUME_NONNULL_BEGIN
 +(void)request_scansearch:(long ) offset limit :(long)limit keywords :(NSString*) keywords completionHandler:(resultHandler)result;
 +(void)request_scan_server:(resultHandler)result;
 +(void)request_scan_news:(resultHandler)result;
++(void) request_scan_stock:(resultHandler)result;
 +(void)request_scan_stock:(NSMutableDictionary*)param completionHandler:(resultHandler)result;
 +(void)request_autocomplete:(NSMutableDictionary*)param completionHandler:(resultHandler)result;
 //+(void)request_scan_cid:(NSMutableDictionary*)param completionHandler:(resultHandler)result;
@@ -34,10 +35,11 @@ NS_ASSUME_NONNULL_BEGIN
 +(void)load_scan_models;
 +(NSArray*)request_scan_model_by_names:(NSString*)names;
 +(void) updateTemplate:(UIViewController*) vc;
++(void) updateStock:(UIViewController*) vc;
 //+(void)encrypt_scan_models;
 +(bool) scanRtime;
-
-
++(NSString*) queryStock:(NSString*)modelname;
++(NSString*) queryStockUpdateTime;
 +(void)default_price_group;
 +(NSDictionary*)get_price_group:(NSString*) groupname;
 +(NSMutableDictionary*)all_price_group;

+ 190 - 1
RedAnt ERP Mobile/common/data_provider/RADataProvider.m

@@ -130,6 +130,182 @@ NSDate * ddate =[dateFormatter dateFromString:@"2023-1-21"];
 //#endif
     return sec<0;
 }
+
++(NSString*) queryStockUpdateTime
+{
+    
+    NSString* serverpath = [OLDataProvider getServerPath];
+   
+//    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+//    NSString *documents = [paths objectAtIndex:0];
+    NSString* path = [serverpath stringByAppendingPathComponent:@"stock.json"];
+    
+    
+    
+    NSFileManager *fileManager = [NSFileManager defaultManager];
+   
+    NSError* error;
+    NSDictionary *fileAttributes =[fileManager attributesOfItemAtPath:path error:&error];
+     
+
+    if (fileAttributes != nil) {
+           
+           NSDate *creationDate;
+           
+       //NSString *NSFileCreationDate
+
+    //文件创建日期
+        creationDate = [fileAttributes objectForKey:NSFileCreationDate];
+
+        
+        
+        NSDateFormatter * df = [[NSDateFormatter alloc] init ];
+        [df setDateFormat:@"MM/dd/yyyy HH:mm:ss"];
+        NSString * na = [df stringFromDate:creationDate];
+        return na;
+
+     }
+    else {
+        return @"Last Update Unknown";
+       }
+    
+    
+}
++(NSString*) queryStock:(NSString*)modelname
+{
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    NSString* user =appDelegate.user;
+    if(user.length==0||[user.lowercaseString isEqualToString:@"guest"])
+        return @"Stock:0";
+    
+    NSString* serverpath = [OLDataProvider getServerPath];
+   
+//    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+//    NSString *documents = [paths objectAtIndex:0];
+    NSString* path = [serverpath stringByAppendingPathComponent:@"stock.json"];
+    
+    NSDictionary* map=[RAUtils dictfromfile:path];
+    
+    int stock = [map[modelname] intValue];
+    if(stock<0)
+        stock=0;
+    
+    return [NSString stringWithFormat:@"Stock: %d",stock];
+    
+    
+    
+}
++(void) updateStock:(UIViewController*) vc
+{
+    
+    AppDelegate *appDelegate = (AppDelegate*)[[UIApplication sharedApplication] delegate];
+    
+    
+    NSString* user =appDelegate.user;
+    
+
+    if(user.length==0||[user.lowercaseString isEqualToString:@"guest"])
+    {
+        [RAUtils message_alert:@"Can not update inventory, you must login first." title:@"Warrning" controller:vc];
+        return;
+    }
+    
+    bool haserp = [self getSiteHasERP];
+    if(!haserp)
+    {
+        [RAUtils message_alert:@"Can not update inventory, current site dosen't have ERP." title:@"Warrning" controller:vc];
+        return;
+    }
+    
+//    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
+//    NSString *documents = [paths objectAtIndex:0];
+    NSString* serverpath = [OLDataProvider getServerPath];
+    [RAUtils deletefiles:[serverpath stringByAppendingPathComponent:@"stock.json"]];
+    
+    
+    UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Inventory update" message:@"Inventory update will take 60s or longer" preferredStyle:UIAlertControllerStyleAlert];
+
+    UIAlertAction *action_1 = [UIAlertAction actionWithTitle:@"Yes, proceed" style:UIAlertActionStyleDestructive handler:^(UIAlertAction * _Nonnull action) {
+    
+        
+        
+        
+        __block UIAlertController * waitalert = [RAUtils waiting_alert:vc title:@"Update stock" completion:^{
+            
+            
+            
+            [RADataProvider request_scan_stock:^(NSMutableDictionary *result) {
+                
+                NSMutableDictionary* return_json = result;
+                
+                [waitalert dismissViewControllerAnimated:false completion:^{
+                    
+                    if([[return_json valueForKey:@"result"] intValue]==2)
+                    {
+//                        NSString* file_name=[appDelegate.downloadurl lastPathComponent];
+                        NSString* path = [serverpath stringByAppendingPathComponent:@"stock.json"];
+                        
+                        [RAUtils dicttofile:path dict:result];
+                        
+                        
+//                        NSMutableDictionary *templateDic = [NSMutableDictionary dictionary];
+//                        NSString* datetime= [RAUtils current_date_time];
+//                        templateDic[@"updatetime"]= datetime;
+//                        
+//                        
+//                        NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
+//                        [userDefaults setValue:templateDic forKey:@"ScanStock"];
+//                        [userDefaults synchronize];
+                        
+                        
+                        if([vc respondsToSelector:@selector(refreshStock)])
+                        {
+                            [vc performSelector:@selector(refreshStock) withObject:nil afterDelay:0];
+                        }
+          
+                    }
+                    else
+                        [RAUtils message_alert:@"Can not update inventory, you can try again later." title:@"Warrning" controller:vc];
+                    
+                    
+                    [ActiveViewController Notify:@"ScanSearchViewController" Message:@"Clear"];
+                    [ActiveViewController Notify:@"ServerSettingViewController" Message:RA_NOTIFICATION_REFRESH_UI];
+                    
+                    
+                }];
+
+                
+                   
+            }];
+            
+            
+
+            
+            
+        }];
+        
+    }];
+     UIAlertAction *action_2 = [UIAlertAction actionWithTitle:@"No" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {
+         //create new;
+
+    
+
+     }];
+    
+     [alertController addAction:action_1];
+     [alertController addAction:action_2];
+
+
+
+     [vc presentViewController:alertController animated:YES completion:nil];
+    
+    
+   
+    
+    
+    ;
+
+}
 +(void) updateTemplate:(UIViewController*) vc
 {
     
@@ -473,7 +649,20 @@ NSDate * ddate =[dateFormatter dateFromString:@"2023-1-21"];
 //    }
 //    NSLog(@"valueArray:%@",valueArray);
 }
-
++(void) request_scan_stock:(resultHandler)result
+{
+    
+    NSMutableDictionary* param = [NSMutableDictionary new];
+    param[@"_method"]=@"offlineModelCheckStock";
+    AppDelegate *appDelegate = nil;
+    
+    appDelegate=(AppDelegate*)[[UIApplication sharedApplication] delegate];
+    if(appDelegate.address==nil)
+        return;
+    NSString* url = [appDelegate.address stringByAppendingPathComponent:URL_SCAN_NEWS];
+    param[@"site_name"]=[RADataProvider getSiteName];
+    [self request_interface:url parameters:param err_record_url:nil completionHandler:result retry:0];
+}
 +(void) request_scan_news:(resultHandler)result
 {
     

+ 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>2</integer>
 		</dict>
 		<key>iSales-USAI.xcscheme_^#shared#^_</key>
 		<dict>

+ 42 - 44
RedAnt ERP Mobile/iSales-NPD/Base.lproj/OLM.storyboard

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21225" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES">
+<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="21507" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" colorMatched="YES">
     <device id="ipad9_7" orientation="portrait" layout="fullscreen" appearance="light"/>
     <dependencies>
-        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21207"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="21505"/>
         <capability name="Safe area layout guides" minToolsVersion="9.0"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
@@ -76,7 +76,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <button hidden="YES" opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Kdt-hI-Mna">
-                                <rect key="frame" x="663" y="244" width="85" height="30"/>
+                                <rect key="frame" x="661" y="244" width="86" height="30"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                 <state key="normal" title="Submit local"/>
                             </button>
@@ -95,12 +95,12 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <button hidden="YES" opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Vzg-50-bc2">
-                                <rect key="frame" x="666" y="196" width="82" height="30"/>
+                                <rect key="frame" x="664" y="196" width="83" height="30"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                 <state key="normal" title="Clear cache"/>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="jns-5C-X4w">
-                                <rect key="frame" x="616" y="147" width="132" height="30"/>
+                                <rect key="frame" x="614" y="147" width="133" height="30"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                 <state key="normal" title="Sync"/>
                                 <connections>
@@ -112,7 +112,7 @@
                                 <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                             </switch>
                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="cIN-uF-BHa">
-                                <rect key="frame" x="666" y="294" width="82" height="30"/>
+                                <rect key="frame" x="664" y="294" width="83" height="30"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                 <state key="normal" title="Unlock"/>
                                 <connections>
@@ -168,7 +168,7 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" textAlignment="justified" translatesAutoresizingMaskIntoConstraints="NO" id="VRj-M1-sDm">
-                                <rect key="frame" x="5" y="0.0" width="758" height="984"/>
+                                <rect key="frame" x="3" y="-2" width="759" height="985"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                                 <string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
@@ -176,7 +176,7 @@
                                 <textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
                             </textView>
                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="yLy-4Y-3J0">
-                                <rect key="frame" x="0.0" y="989" width="768" height="30"/>
+                                <rect key="frame" x="-2" y="987" width="769" height="30"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" widthSizable="YES" flexibleMaxX="YES" flexibleMinY="YES"/>
                                 <state key="normal" title="Close">
                                     <color key="titleColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
@@ -216,11 +216,11 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="qll-0O-PAI">
-                                <rect key="frame" x="20" y="93" width="728" height="2"/>
+                                <rect key="frame" x="18" y="93" width="729" height="2"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                             </progressView>
                             <progressView opaque="NO" contentMode="scaleToFill" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="jJD-lt-Uuj">
-                                <rect key="frame" x="20" y="132" width="728" height="2"/>
+                                <rect key="frame" x="18" y="132" width="729" height="2"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                             </progressView>
                             <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" fixedFrame="YES" text="Overall progress" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6P9-Se-W27">
@@ -231,14 +231,14 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <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="sEa-AW-QiJ">
-                                <rect key="frame" x="219" y="20" width="330" height="24"/>
+                                <rect key="frame" x="219" y="20" width="329" height="24"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="20"/>
                                 <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" fixedFrame="YES" contentHorizontalAlignment="right" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0lX-Gd-bGG">
-                                <rect key="frame" x="639" y="974" width="109" height="30"/>
+                                <rect key="frame" x="639" y="972" width="108" height="30"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
                                 <state key="normal" title="Send log"/>
                                 <connections>
@@ -246,7 +246,7 @@
                                 </connections>
                             </button>
                             <textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" fixedFrame="YES" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="e3H-tp-xCS">
-                                <rect key="frame" x="20" y="151" width="728" height="815"/>
+                                <rect key="frame" x="18" y="149" width="729" height="816"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="14"/>
@@ -278,7 +278,7 @@
                         <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                         <subviews>
                             <tableView clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" alwaysBounceVertical="YES" dataMode="prototypes" style="plain" separatorStyle="default" rowHeight="68" sectionHeaderHeight="28" sectionFooterHeight="28" translatesAutoresizingMaskIntoConstraints="NO" id="lRS-dn-XTu">
-                                <rect key="frame" x="0.0" y="0.0" width="768" height="934"/>
+                                <rect key="frame" x="-2" y="-1" width="768" height="933"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <prototypes>
@@ -300,7 +300,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="BF2E3A5D-6D1A-445C-A728-2FB46082F510"/>
+                                                    <state key="selected" image="4D9BDF16-516E-45D5-BD53-324B3B5C6B8E"/>
                                                     <connections>
                                                         <action selector="checkButtonClick:" destination="XXr-fU-67o" eventType="touchUpInside" id="KeU-ld-H4J"/>
                                                     </connections>
@@ -335,7 +335,7 @@
                                 </connections>
                             </tableView>
                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="NKA-5N-u0m">
-                                <rect key="frame" x="612" y="974" width="156" height="30"/>
+                                <rect key="frame" x="612" y="974" width="154" height="29"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMinY="YES"/>
                                 <state key="normal" image="btn_ok"/>
                                 <connections>
@@ -367,7 +367,7 @@
                         <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMaxY="YES"/>
                         <subviews>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="User" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="OGq-ht-S8t">
-                                <rect key="frame" x="60" y="103" width="360" height="30"/>
+                                <rect key="frame" x="58" y="103" width="361" height="30"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
@@ -377,7 +377,7 @@
                                 </connections>
                             </textField>
                             <textField opaque="NO" clipsSubviews="YES" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="left" contentVerticalAlignment="center" borderStyle="roundedRect" placeholder="Password" minimumFontSize="17" translatesAutoresizingMaskIntoConstraints="NO" id="l8b-7U-g6s">
-                                <rect key="frame" x="60" y="142" width="360" height="30"/>
+                                <rect key="frame" x="58" y="142" width="361" height="30"/>
                                 <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
                                 <color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
@@ -411,7 +411,7 @@
                                 <nil key="highlightedColor"/>
                             </label>
                             <button hidden="YES" opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="right" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="snZ-xL-t2m">
-                                <rect key="frame" x="248" y="65" width="172" height="30"/>
+                                <rect key="frame" x="247" y="65" width="172" height="30"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                 <state key="normal" title="Retrieve password">
                                     <color key="titleColor" red="0.59999999999999998" green="0.40000000000000002" blue="0.20000000000000001" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
@@ -419,7 +419,7 @@
                                 </state>
                             </button>
                             <button opaque="NO" contentMode="scaleToFill" fixedFrame="YES" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="06f-pS-V71">
-                                <rect key="frame" x="358" y="267" width="102" height="36"/>
+                                <rect key="frame" x="358" y="267" width="100" height="36"/>
                                 <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="20"/>
                                 <state key="normal" title="Unlock">
@@ -890,37 +890,26 @@
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label hidden="YES" 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="461" width="128.5" height="21"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Live Inventory" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="zhm-2h-vLW">
+                                <rect key="frame" x="30" y="396" width="121" height="22"/>
                                 <fontDescription key="fontDescription" type="boldSystem" pointSize="18"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <label hidden="YES" 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="502" width="127.5" height="20.5"/>
+                            <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Unknown" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ao6-r1-uXr">
+                                <rect key="frame" x="30" y="438" width="71.5" height="21"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
-                            <textField hidden="YES" 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="495.5" width="50" height="34"/>
-                                <constraints>
-                                    <constraint firstAttribute="width" constant="50" id="vR6-EP-Mmm"/>
-                                </constraints>
-                                <fontDescription key="fontDescription" type="system" pointSize="17"/>
-                                <textInputTraits key="textInputTraits" keyboardType="numberPad"/>
-                                <connections>
-                                    <action selector="onRetryChange:" destination="4E6-80-nis" eventType="editingChanged" id="tsc-b4-Uot"/>
-                                </connections>
-                            </textField>
                             <label hidden="YES" 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="542.5" width="177" height="20.5"/>
+                                <rect key="frame" x="30" y="479" width="177" height="20.5"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
                             </label>
                             <textField hidden="YES" 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="536" width="50" height="34"/>
+                                <rect key="frame" x="688" y="472.5" width="50" height="34"/>
                                 <constraints>
                                     <constraint firstAttribute="width" constant="50" id="XIG-Hs-C1i"/>
                                 </constraints>
@@ -947,13 +936,13 @@
                                 </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="578" width="51" height="31"/>
+                                <rect key="frame" x="689" y="514.5" 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="583" width="136" height="20.5"/>
+                                <rect key="frame" x="30" y="519.5" width="136" height="20.5"/>
                                 <fontDescription key="fontDescription" type="system" pointSize="17"/>
                                 <nil key="textColor"/>
                                 <nil key="highlightedColor"/>
@@ -982,6 +971,14 @@
                                     <action selector="onSetPriceGroup:" destination="4E6-80-nis" eventType="touchUpInside" id="nMX-8I-sl9"/>
                                 </connections>
                             </button>
+                            <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="system" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Thl-1o-t2R">
+                                <rect key="frame" x="676" y="431" width="62" height="35"/>
+                                <state key="normal" title="Button"/>
+                                <buttonConfiguration key="configuration" style="plain" title="Sync"/>
+                                <connections>
+                                    <action selector="onSyncStock:" destination="4E6-80-nis" eventType="touchUpInside" id="j6o-75-JJJ"/>
+                                </connections>
+                            </button>
                         </subviews>
                         <color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
                         <constraints>
@@ -1005,9 +1002,9 @@
                             <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="200" id="QCw-tU-FSW"/>
                             <constraint firstItem="Xvn-bA-km7" firstAttribute="top" secondItem="Obj-1G-kcW" secondAttribute="bottom" constant="36" id="QTy-BO-nXN"/>
                             <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="I4e-nd-eUd" secondAttribute="trailing" constant="20" symbolic="YES" id="Quu-V1-6oq"/>
+                            <constraint firstItem="Thl-1o-t2R" firstAttribute="centerY" secondItem="ao6-r1-uXr" secondAttribute="centerY" id="SW9-ph-XOP"/>
                             <constraint firstItem="I4e-nd-eUd" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="TFg-oq-D04"/>
                             <constraint firstItem="Obj-1G-kcW" firstAttribute="leading" secondItem="R0K-zW-L9z" secondAttribute="leading" id="U5C-06-qZ9"/>
                             <constraint firstItem="BqX-sY-rTI" firstAttribute="top" secondItem="SRC-EL-dQp" secondAttribute="bottom" constant="36" id="UZd-w1-DlX"/>
@@ -1016,10 +1013,10 @@
                             <constraint firstItem="bSV-E3-6Kl" firstAttribute="top" secondItem="Xvn-bA-km7" secondAttribute="bottom" constant="20" id="Xnd-6C-RgU"/>
                             <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="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="Thl-1o-t2R" firstAttribute="trailing" secondItem="veN-AT-j6e" secondAttribute="trailing" id="dFo-jW-Qya"/>
                             <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"/>
@@ -1028,7 +1025,6 @@
                             <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"/>
                             <constraint firstItem="yzC-7l-hc0" firstAttribute="centerY" secondItem="bt3-RG-tEN" secondAttribute="centerY" id="kBD-OQ-oop"/>
-                            <constraint firstItem="Rj3-QR-Agk" firstAttribute="trailing" secondItem="tKv-XG-Ugr" secondAttribute="trailing" id="kbY-QM-OPq"/>
                             <constraint firstItem="bt3-RG-tEN" firstAttribute="top" secondItem="ao6-r1-uXr" secondAttribute="bottom" constant="20" id="mPR-xw-2aK"/>
                             <constraint firstItem="Obj-1G-kcW" firstAttribute="top" secondItem="yuq-p9-cMU" secondAttribute="bottom" constant="20" id="mz2-QM-vNd"/>
                             <constraint firstItem="3vw-sE-OsA" firstAttribute="trailing" secondItem="i1w-0J-KZf" secondAttribute="trailing" id="neN-ot-wfg"/>
@@ -1038,6 +1034,7 @@
                             <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="SRC-EL-dQp" firstAttribute="top" secondItem="Hrq-La-ta7" secondAttribute="bottom" constant="10" id="raN-Nz-TAV"/>
+                            <constraint firstItem="zhm-2h-vLW" firstAttribute="top" secondItem="bSV-E3-6Kl" secondAttribute="bottom" constant="36" id="unc-R7-Kw8"/>
                             <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"/>
@@ -1049,10 +1046,11 @@
                         <outlet property="autoSwitch" destination="tKv-XG-Ugr" id="2ty-AC-KoQ"/>
                         <outlet property="btnSetPriceGroup" destination="veN-AT-j6e" id="s5f-zt-AVT"/>
                         <outlet property="btnSetServer" destination="3vw-sE-OsA" id="yRg-7s-xXh"/>
+                        <outlet property="btnSync" destination="Thl-1o-t2R" id="V5C-cE-d8y"/>
                         <outlet property="labelPriceGroup" destination="bSV-E3-6Kl" id="dgq-9V-UhN"/>
+                        <outlet property="labelStock" destination="ao6-r1-uXr" id="jsJ-F5-Qqw"/>
                         <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"/>
                         <outlet property="retryTimeIntervalBox" destination="yzC-7l-hc0" id="dQ0-hZ-fEm"/>
                     </connections>
                 </viewController>
@@ -1118,7 +1116,7 @@
         </scene>
     </scenes>
     <resources>
-        <image name="BF2E3A5D-6D1A-445C-A728-2FB46082F510" width="24" height="24">
+        <image name="4D9BDF16-516E-45D5-BD53-324B3B5C6B8E" width="24" height="24">
             <mutableData key="keyedArchiveRepresentation">
 YnBsaXN0MDDUAQIDBAUGBwpYJHZlcnNpb25ZJGFyY2hpdmVyVCR0b3BYJG9iamVjdHMSAAGGoF8QD05T
 S2V5ZWRBcmNoaXZlctEICVRyb290gAGuCwwZGh8UJCkqMTQ3PUBVJG51bGzWDQ4PEBESExQVFhcYVk5T

+ 1 - 0
common/NetworkUtils.m

@@ -765,6 +765,7 @@ repeat:
         NSURLSessionDataTask *dataTask =[urlSession dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
             
                         NSData *responseData =data;
+            NSLog(@"request_interface response");
             DebugLog(@"request_interface result length:%ld", data.length);
                         NSHTTPURLResponse* urlResponse =(NSHTTPURLResponse*)response;
                         if (responseData==nil) {