NewStockingViewController.m 34 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941
  1. //
  2. // NewStockingViewController.m
  3. // IBOSSmini
  4. //
  5. // Created by apple on 2017/5/17.
  6. // Copyright © 2017年 elongtian. All rights reserved.
  7. //
  8. #import "NewStockingViewController.h"
  9. #import "StockingGoodsListViewController.h"
  10. #import "BaseIDAndNameViewController.h"
  11. #import "ResponsiblePersonViewController.h"
  12. #import "ScanViewController.h"
  13. #import "RegularExpression.h"
  14. #import "ResponsiblePersonModel.h"
  15. #import "BaseIDAndNameModel.h"
  16. @interface NewStockingViewController ()<UITextFieldDelegate,DKScanDelegate,StockProtocol,BaseIDAndNameProtocol,ResponsiblePersonProtocol>
  17. {
  18. UIView *contentView;
  19. UIScrollView *scroll;
  20. BOOL isHaveDot;
  21. BOOL keyboardShow;
  22. UIButton *_btnSave;
  23. }
  24. /**
  25. 查询数据对象
  26. */
  27. @property(nonatomic,strong) ASIDownManager *downManager;
  28. /**
  29. 保存对象
  30. */
  31. @property(nonatomic,strong) ASIDownManager *saveManager;
  32. /**
  33. 盘亏原因数据
  34. */
  35. @property(nonatomic,strong) NSMutableArray *infoReasons;
  36. /**
  37. 责任人数据
  38. */
  39. @property(nonatomic,strong) NSMutableArray *infoPersons;
  40. @end
  41. @implementation NewStockingViewController
  42. /**
  43. viewDidLoad函数
  44. */
  45. - (void)viewDidLoad {
  46. [super viewDidLoad];
  47. [self showTitle:@"新增库存盘点"];
  48. [self initUI];
  49. [self initNotification];
  50. [self loadInitResposeData] ;
  51. }
  52. /**
  53. didReceiveMemoryWarning函数
  54. */
  55. - (void)didReceiveMemoryWarning {
  56. [super didReceiveMemoryWarning];
  57. }
  58. /**
  59. 安全区视图发生变化
  60. */
  61. -(void)viewSafeAreaInsetsDidChange{
  62. self.view.backgroundColor = [UIColor whiteColor];
  63. UIImage *pic=[UIImage imageNamed:@"bt_datasave"];
  64. CGFloat h = (Screen_Width-40)*pic.size.height/pic.size.width;
  65. _btnSave.frame=CGRectMake(20, self.view.safeAreaLayoutGuide.layoutFrame.size.height - h - 5, Screen_Width-2*20, h);
  66. scroll.frame = CGRectMake(0, 0,self.view.safeAreaLayoutGuide.layoutFrame.size.width, self.view.safeAreaLayoutGuide.layoutFrame.size.height-h-5);
  67. [super viewSafeAreaInsetsDidChange];
  68. }
  69. /**
  70. viewWillDisappear函数
  71. */
  72. -(void)viewWillDisappear:(BOOL)animated
  73. {
  74. [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification
  75. object:nil];
  76. [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification
  77. object:nil];
  78. }
  79. /**
  80. viewDidAppear函数
  81. */
  82. -(void)viewDidAppear:(BOOL)animated{
  83. [super viewDidAppear:animated];
  84. [[NSNotificationCenter defaultCenter] addObserver:self
  85. selector:@selector(keyboardWillShow)
  86. name:UIKeyboardWillShowNotification
  87. object:nil];
  88. [[NSNotificationCenter defaultCenter] addObserver:self
  89. selector:@selector(keyboardWillHide)
  90. name:UIKeyboardWillHideNotification
  91. object:nil];
  92. }
  93. /**
  94. dealloc函数
  95. */
  96. -(void)dealloc{
  97. [[NSNotificationCenter defaultCenter]removeObserver:self name:@"UITextFieldTextDidChangeNotification" object:self.txtStockingQuantity];
  98. }
  99. #pragma mark - 属性
  100. /**
  101. 责任人数据源
  102. @return <#return value description#>
  103. */
  104. - (NSMutableArray *)infoPersons{
  105. if (_infoPersons==nil) {
  106. _infoPersons = [NSMutableArray new];
  107. }
  108. return _infoPersons;
  109. }
  110. /**
  111. 盘亏原因数据源
  112. @return <#return value description#>
  113. */
  114. - (NSMutableArray *)infoReasons{
  115. if (_infoReasons==nil) {
  116. _infoReasons = [NSMutableArray new];
  117. }
  118. return _infoReasons;
  119. }
  120. #pragma mark - 委托回调函数
  121. /**
  122. 责任人
  123. @param item <#item description#>
  124. */
  125. - (void)updateResponsiblePerson:(ResponsiblePersonModel *)item{
  126. self.sResponseiblePerson = item.staffID;
  127. [self.responseiblePerson setTitle:item.staffName forState:UIControlStateNormal];
  128. }
  129. /**
  130. 盘亏原因
  131. @param model <#model description#>
  132. @param value <#value description#>
  133. */
  134. - (void)baseIDAndNameDoneDatas:(BaseIDAndNameModel *)model BaseIDAndName:(baseIdAndName)value{
  135. self.sResponseibleReason = model.id;
  136. [self.responseibleReason setTitle:model.name forState:UIControlStateNormal];
  137. }
  138. /**
  139. 选取商品信息后回调
  140. @param model <#model description#>
  141. */
  142. - (void)stockTextDoneDatas:(StockingModel *)model{
  143. self.inventoryId = model.inventoryID;
  144. self.codeId = model.codeID;
  145. self.onlyCode.text = model.onlyCode;
  146. self.txtOnlyCode.text = model.onlyCode;
  147. self.warehouseName.text = model.warehouseName;
  148. self.specification.text = model.specification;
  149. self.gradeName.text = model.gradeName;
  150. self.colorNumber.text = model.colorNumber;
  151. self.positionNumber.text = model.positionNumber;
  152. [self.responseibleReason setTitle:@"请选择盘亏原因" forState:UIControlStateNormal];
  153. [self.responseiblePerson setTitle:@"请选择责任人" forState:UIControlStateNormal];
  154. self.sResponseiblePerson = @"";
  155. self.sResponseibleReason = @"";
  156. self.quantity.text = model.quantity;
  157. self.txtStockingQuantity.text = @"";
  158. self.canSaleQuantity.text = model.balanceQuantity;
  159. }
  160. /**
  161. 根据唯一编码查询商品信息
  162. @param code <#code description#>
  163. */
  164. -(void)reloadDataWithOnlyCode:(NSString *)code
  165. {
  166. self.txtOnlyCode.text = code;
  167. self.sCode = code;
  168. double delayInSeconds = 0.5;
  169. dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
  170. dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
  171. //刷新
  172. [self loadData];
  173. });
  174. }
  175. /**
  176. 文本框的长度限制 实现监听方法
  177. @return <#return value description#>
  178. */
  179. - (void)onFocusPeopleEditingChanged:(NSNotification *)sender
  180. {
  181. UITextField *textField = (UITextField *)sender.object;
  182. NSString *toBeString = textField.text;
  183. if ([textField isEqual:self.txtOnlyCode ]) {
  184. return;
  185. }
  186. NSString *lang = [[[UIApplication sharedApplication] textInputMode] primaryLanguage];// [[UITextInputMode currentInputMode] primaryLanguage];
  187. int kMaxLength=0;
  188. //费用
  189. if ([textField isEqual:self.txtStockingQuantity ]) {
  190. kMaxLength=17;
  191. if (toBeString!=nil && toBeString.length>0 && [toBeString floatValue]-9999999999.999999f>0.0000000001f) {
  192. textField.text =@"9999999999.999999";
  193. toBeString=@"9999999999.999999";
  194. }
  195. }
  196. if ([lang isEqualToString:@"zh-Hans"]) {
  197. UITextRange *selectedRange = [textField markedTextRange];
  198. UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
  199. if (!position) {
  200. if (toBeString.length > kMaxLength) {
  201. textField.text = [toBeString substringToIndex:kMaxLength];
  202. }
  203. }
  204. }else{
  205. if (toBeString.length > kMaxLength) {
  206. textField.text = [toBeString substringToIndex:kMaxLength];
  207. }
  208. }
  209. }
  210. /**
  211. 回车事件
  212. @param textField <#textField description#>
  213. @return <#return value description#>
  214. */
  215. -(BOOL)textFieldShouldReturn:(UITextField *)textField{
  216. if ([textField isEqual:self.txtOnlyCode] && textField.text!=nil
  217. && [textField.text length]>0) {
  218. self.sCode = textField.text;
  219. [self loadData];
  220. [self.txtOnlyCode resignFirstResponder];
  221. return NO;
  222. }
  223. return YES;
  224. }
  225. /**
  226. 限制用户输入小数点后位数的方法
  227. @param textField <#textField description#>
  228. @param range <#range description#>
  229. @param string <#string description#>
  230. @return <#return value description#>
  231. */
  232. -(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
  233. if ([textField isEqual:self.txtOnlyCode]){
  234. return YES;
  235. }
  236. if ([textField.text rangeOfString:@"."].location == NSNotFound) {
  237. isHaveDot = NO;
  238. }
  239. if ([string length] > 0) {
  240. unichar single = [string characterAtIndex:0];//当前输入的字符
  241. if ((single >= '0' && single <= '9') || single == '.') {//数据格式正确
  242. //首字母不能为0和小数点
  243. if([textField.text length] == 0){
  244. if(single == '.') {
  245. [self showAlertViewText:@"第一个数字不能为小数点"];
  246. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  247. return NO;
  248. }
  249. if (single == '0') {
  250. // [self showAlertViewText:@"第一个数字不能为0"];
  251. // [textField.text stringByReplacingCharactersInRange:range withString:@""];
  252. // return NO;
  253. }
  254. }
  255. if([textField.text length] == 1 && [[textField.text substringToIndex:1] isEqualToString: @"0"]){
  256. if(!(single == '.')) {
  257. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  258. return NO;
  259. }
  260. }
  261. //输入的字符是否是小数点
  262. if (single == '.') {
  263. if(!isHaveDot)//text中还没有小数点
  264. {
  265. isHaveDot = YES;
  266. return YES;
  267. }else{
  268. [self showAlertViewText:@"您已经输入过小数点了"];
  269. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  270. return NO;
  271. }
  272. }else{
  273. if (isHaveDot) {//存在小数点
  274. //判断小数点的位数
  275. NSRange ran = [textField.text rangeOfString:@"."];
  276. if (range.location - ran.location <= 6) {
  277. return YES;
  278. }else{
  279. //[self showAlertViewText:@"亲,您最多输入两位小数"];
  280. return NO;
  281. }
  282. }else{
  283. return YES;
  284. }
  285. }
  286. }else{//输入的数据格式不正确
  287. [self showAlertViewText:@"您输入的格式不正确"];
  288. [textField.text stringByReplacingCharactersInRange:range withString:@""];
  289. return NO;
  290. }
  291. }
  292. else
  293. {
  294. return YES;
  295. }
  296. }
  297. /**
  298. 成功回调函数
  299. @param sender <#sender description#>
  300. */
  301. - (void)onSaveSuccess:(ASIDownManager *)sender {
  302. // 服务器返回数据
  303. NSDictionary *dic = [sender.mWebStr JSONValue];
  304. [self Cancel];
  305. // 服务器返回数据是否正确
  306. if (dic && [dic isKindOfClass:[NSDictionary class]]) {
  307. // 服务器返回数据状态值
  308. int iStatus = [[dic objectForKey:@"Status"] intValue];
  309. // 服务器返回数据消息
  310. NSString *message=[dic objectForKey:@"Message"];
  311. // 服务器返回数据状态值正确
  312. if (iStatus == 0) {
  313. [self clearData];
  314. [self showAlertViewText:@"保存成功!"];
  315. // //关闭当前页面 刷新一览主界面
  316. // if ([self.stockdelegate respondsToSelector:@selector(refreshData)]) {
  317. // [self.stockdelegate performSelector:@selector(refreshData)];
  318. // }
  319. // [self.navigationController popViewControllerAnimated:YES];
  320. }
  321. // 服务器返回数据状态值异常
  322. else if(iStatus==ActionResultStatusAuthError
  323. ||iStatus==ActionResultStatusNoLogin
  324. ||iStatus==ActionResultStatusLogined ||iStatus == ActionResultStatusLoginedInvalid){
  325. [self showReLoginDialog:message];
  326. }
  327. else {
  328. [self showAlertViewText:message];
  329. }
  330. }
  331. }
  332. /**
  333. 盘亏原因,责任人数据成功回调
  334. @param sender <#sender description#>
  335. */
  336. - (void)onResposeSuccess:(ASIDownManager *)sender {
  337. // 服务器返回数据
  338. [self Cancel];
  339. NSDictionary *dic = [sender.mWebStr JSONValue];
  340. // 服务器返回数据是否正确
  341. if (dic && [dic isKindOfClass:[NSDictionary class]])
  342. {
  343. // 服务器返回数据状态值
  344. int iStatus = [[dic objectForKey:@"Status"] intValue];
  345. // 服务器返回数据消息
  346. NSString *message=[dic objectForKey:@"Message"];
  347. // 服务器返回数据状态值正确
  348. if (iStatus == 0)
  349. {
  350. NSDictionary *dicResult =[dic objectForKey:@"Result"];
  351. NSArray * reasonArr;
  352. NSArray * personArr;
  353. if(dicResult!=nil){
  354. // 盘亏原因
  355. reasonArr = [dicResult objectForKey:@"ShortageReason"];
  356. // 责任人
  357. personArr = [dicResult objectForKey:@"ResponsiblePerson"];
  358. }
  359. if(reasonArr != nil && reasonArr.count > 0)
  360. {
  361. for (int i = 0; i < reasonArr.count; i++) {
  362. NSDictionary *d = reasonArr[i];
  363. BaseIDAndNameModel *m = [[BaseIDAndNameModel alloc] init];
  364. m.id = [[d objectForKey:@"DictionaryID"] stringValue];
  365. m.name = [d objectForKey:@"DictionaryValue"];
  366. [self.infoReasons addObject:m];
  367. }
  368. }
  369. if(personArr != nil && personArr.count > 0)
  370. {
  371. for (int i = 0; i < personArr.count; i++) {
  372. NSDictionary *d = personArr[i];
  373. ResponsiblePersonModel *m = [[ResponsiblePersonModel alloc] init];
  374. m.staffID = [[d objectForKey:@"StaffID"] stringValue];
  375. m.staffCode = [d objectForKey:@"StaffCode"];
  376. m.staffName = [d objectForKey:@"StaffName"];
  377. [self.infoPersons addObject:m];
  378. }
  379. }
  380. }
  381. // 服务器返回数据状态值异常
  382. else if(iStatus==ActionResultStatusAuthError
  383. ||iStatus==ActionResultStatusNoLogin
  384. ||iStatus==ActionResultStatusLogined ||iStatus == ActionResultStatusLoginedInvalid){
  385. [self showReLoginDialog:message];
  386. }
  387. else{
  388. [self showAlertViewText:message];
  389. return;
  390. }
  391. }
  392. }
  393. /**
  394. 异常回调
  395. @param sender <#sender description#>
  396. */
  397. - (void)onFail:(ASIDownManager *)sender {
  398. [self Cancel];
  399. [self showAlertViewText:@"加载失败"];
  400. }
  401. #pragma mark - 私有函数
  402. /**
  403. 隐藏键盘
  404. */
  405. - (void)hideKey{
  406. [self.view endEditing:YES];
  407. }
  408. /**
  409. 隐藏进度条
  410. */
  411. - (void)Cancel {
  412. [self stopLoading];
  413. }
  414. /**
  415. 初始化ui
  416. */
  417. - (void)initUI{
  418. CGFloat heightRow = 40;
  419. CGFloat lblx = 20;
  420. CGFloat lblwidth = 80;
  421. CGFloat lblheight = 25;
  422. CGFloat valuex = 90;
  423. CGFloat valuey = 8;
  424. // CGFloat valuewidth = 120;
  425. CGFloat valueheight = 25;
  426. UIImage *pic=[UIImage imageNamed:@"bt_datasave"];
  427. CGFloat h = (Screen_Width-40)*pic.size.height/pic.size.width;
  428. scroll=[UIScrollView new];
  429. scroll.frame=CGRectMake(0, 0, Screen_Width, Screen_Height- h - 10 - rectStatusHeight-rectNavHeight);
  430. scroll.backgroundColor=[UIColor whiteColor];
  431. UITapGestureRecognizer* singleRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKey)];
  432. singleRecognizer.cancelsTouchesInView = NO;
  433. [scroll addGestureRecognizer:singleRecognizer];
  434. [self.view addSubview:scroll];
  435. contentView=[[UIView alloc]init];
  436. contentView.frame = scroll.frame;
  437. [scroll addSubview:contentView];
  438. //唯一编码==================
  439. UIView *vcode=[UIView new];
  440. vcode.frame=CGRectMake(0, 0, Screen_Width, 51);
  441. [contentView addSubview:vcode];
  442. UILabel *lblcode=[UILabel new];
  443. lblcode.frame=CGRectMake(lblx, 13, lblwidth, lblheight);
  444. lblcode.text=@"唯一编码:";
  445. lblcode.font= [UIFont systemFontOfSize:TextFontOfSize];
  446. [vcode addSubview:lblcode];
  447. self.txtOnlyCode=[UITextField new];
  448. self.txtOnlyCode.delegate=self;
  449. self.txtOnlyCode.placeholder=@"请输入或扫描唯一编码";
  450. self.txtOnlyCode.font= [UIFont systemFontOfSize:TextFontOfSize];
  451. self.txtOnlyCode.frame=CGRectMake(valuex, 13, Screen_Width - valuex - lblx, valueheight);
  452. [vcode addSubview:self.txtOnlyCode];
  453. //
  454. UIButton *btnClearCode=[UIButton buttonWithType:UIButtonTypeCustom];
  455. btnClearCode.frame=CGRectMake(Screen_Width-45, 13, 25, 25);
  456. [btnClearCode setBackgroundImage:[UIImage imageNamed:@"icon_scan"] forState:UIControlStateNormal];
  457. [btnClearCode addTarget:self action:@selector(scanClick) forControlEvents:UIControlEventTouchUpInside];
  458. [vcode addSubview:btnClearCode];
  459. UIView *vgray=[UIView new];
  460. vgray.frame=CGRectMake(0, CGRectGetMaxY(vcode.frame), Screen_Width, 5);
  461. vgray.backgroundColor=LineBackgroundColor;
  462. [contentView addSubview:vgray];
  463. //==================
  464. UIView *vonlycode=[UIView new];
  465. vonlycode.frame=CGRectMake(0, CGRectGetMaxY(vgray.frame), Screen_Width, heightRow);
  466. [contentView addSubview:vonlycode];
  467. UILabel *lblonlyCode = [UILabel new];
  468. lblonlyCode.frame=CGRectMake(lblx, valuey, lblwidth, valueheight);
  469. lblonlyCode.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  470. lblonlyCode.text=@"唯一编码:";
  471. [vonlycode addSubview:lblonlyCode];
  472. self.onlyCode = [UILabel new];
  473. self.onlyCode.frame=CGRectMake(valuex, valuey, Screen_Width - valuex - 10, valueheight);
  474. self.onlyCode.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  475. [vonlycode addSubview:self.onlyCode];
  476. //==================
  477. UIView *vgrade=[UIView new];
  478. vgrade.frame=CGRectMake(0, CGRectGetMaxY(vonlycode.frame), Screen_Width, heightRow);
  479. [contentView addSubview:vgrade];
  480. UILabel *lblgrade = [UILabel new];
  481. lblgrade.frame=CGRectMake(lblx, valuey, lblwidth, valueheight);
  482. lblgrade.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  483. lblgrade.text=@"商品等级:";
  484. [vgrade addSubview:lblgrade];
  485. self.gradeName = [UILabel new];
  486. self.gradeName.frame=CGRectMake(valuex, valuey, Screen_Width - valuex - lblx, valueheight);
  487. self.gradeName.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  488. [vgrade addSubview:self.gradeName];
  489. //==================
  490. UIView *vspecification=[UIView new];
  491. vspecification.frame=CGRectMake(0, CGRectGetMaxY(vgrade.frame), Screen_Width, heightRow);
  492. [contentView addSubview:vspecification];
  493. UILabel *lblspecification= [UILabel new];
  494. lblspecification.frame=CGRectMake(lblx, valuey, lblwidth, valueheight);
  495. lblspecification.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  496. lblspecification.text=@"规 格:";
  497. [vspecification addSubview:lblspecification];
  498. self.specification = [UILabel new];
  499. self.specification.frame=CGRectMake(valuex, valuey, Screen_Width - valuex - lblx, valueheight);
  500. self.specification.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  501. [vspecification addSubview:self.specification];
  502. //==================
  503. UIView *vcolorNumber=[UIView new];
  504. vcolorNumber.frame=CGRectMake(0, CGRectGetMaxY(vspecification.frame), Screen_Width, heightRow);
  505. [contentView addSubview:vcolorNumber];
  506. UILabel *lblcolorNumber= [UILabel new];
  507. lblcolorNumber.frame=CGRectMake(lblx, valuey, lblwidth, valueheight);
  508. lblcolorNumber.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  509. lblcolorNumber.text=@"色 号:";
  510. [vcolorNumber addSubview:lblcolorNumber];
  511. self.colorNumber = [UILabel new];
  512. self.colorNumber.frame=CGRectMake(valuex, valuey, Screen_Width - valuex - lblx, valueheight);
  513. self.colorNumber.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  514. [vcolorNumber addSubview:self.colorNumber];
  515. //==================
  516. UIView *vwareHouseName=[UIView new];
  517. vwareHouseName.frame=CGRectMake(0, CGRectGetMaxY(vcolorNumber.frame), Screen_Width, heightRow);
  518. [contentView addSubview:vwareHouseName];
  519. UILabel *lblwareHouseName= [UILabel new];
  520. lblwareHouseName.frame=CGRectMake(lblx, valuey, lblwidth, valueheight);
  521. lblwareHouseName.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  522. lblwareHouseName.text=@"库 区:";
  523. [vwareHouseName addSubview:lblwareHouseName];
  524. self.warehouseName = [UILabel new];
  525. self.warehouseName.frame=CGRectMake(valuex, valuey, Screen_Width - valuex - lblx, valueheight);
  526. self.warehouseName.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  527. [vwareHouseName addSubview:self.warehouseName];
  528. //==================
  529. UIView *vpositionNumber=[UIView new];
  530. vpositionNumber.frame=CGRectMake(0, CGRectGetMaxY(vwareHouseName.frame), Screen_Width, heightRow);
  531. [contentView addSubview:vpositionNumber];
  532. UILabel *lblpositionNumber= [UILabel new];
  533. lblpositionNumber.frame=CGRectMake(lblx, valuey, lblwidth, valueheight);
  534. lblpositionNumber.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  535. lblpositionNumber.text=@"仓 位 号:";
  536. [vpositionNumber addSubview:lblpositionNumber];
  537. self.positionNumber = [UILabel new];
  538. self.positionNumber.frame=CGRectMake(valuex, valuey, Screen_Width - valuex - lblx, valueheight);
  539. self.positionNumber.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  540. [vpositionNumber addSubview:self.positionNumber];
  541. //==================
  542. UIView *vquantity=[UIView new];
  543. vquantity.frame=CGRectMake(0, CGRectGetMaxY(vpositionNumber.frame), Screen_Width, heightRow);
  544. [contentView addSubview:vquantity];
  545. UILabel *lblquantity= [UILabel new];
  546. lblquantity.frame=CGRectMake(lblx, valuey, lblwidth, valueheight);
  547. lblquantity.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  548. lblquantity.text=@"库存数量:";
  549. [vquantity addSubview:lblquantity];
  550. self.quantity = [UILabel new];
  551. self.quantity.frame=CGRectMake(valuex, valuey, Screen_Width - valuex - lblx, valueheight);
  552. self.quantity.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  553. [vquantity addSubview:self.quantity];
  554. //==================
  555. UIView *vcanSaleQuantity=[UIView new];
  556. vcanSaleQuantity.frame=CGRectMake(0, CGRectGetMaxY(vquantity.frame), Screen_Width, heightRow);
  557. [contentView addSubview:vcanSaleQuantity];
  558. UILabel *lblcanSaleQuantity= [UILabel new];
  559. lblcanSaleQuantity.frame=CGRectMake(lblx, valuey, lblwidth, valueheight);
  560. lblcanSaleQuantity.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  561. lblcanSaleQuantity.text=@"可售数量:";
  562. [vcanSaleQuantity addSubview:lblcanSaleQuantity];
  563. self.canSaleQuantity = [UILabel new];
  564. self.canSaleQuantity.frame=CGRectMake(valuex, valuey, Screen_Width - valuex - lblx, valueheight);
  565. self.canSaleQuantity.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  566. [vcanSaleQuantity addSubview:self.canSaleQuantity];
  567. //==================
  568. UIView *vStockingQuantity=[UIView new];
  569. vStockingQuantity.frame=CGRectMake(0, CGRectGetMaxY(vcanSaleQuantity.frame), Screen_Width, heightRow);
  570. [contentView addSubview:vStockingQuantity];
  571. UILabel *lblStockingQuantity= [UILabel new];
  572. lblStockingQuantity.frame=CGRectMake(lblx, valuey, lblwidth, valueheight);
  573. lblStockingQuantity.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  574. lblStockingQuantity.text=@"盘点数量:";
  575. [vStockingQuantity addSubview:lblStockingQuantity];
  576. self.txtStockingQuantity = [UITextField new];
  577. self.txtStockingQuantity.frame=CGRectMake(valuex, valuey, Screen_Width - valuex-lblx, valueheight);
  578. self.txtStockingQuantity.keyboardType = UIKeyboardTypeNumberPad;
  579. self.txtStockingQuantity.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  580. self.txtStockingQuantity.placeholder = @"请输入盘点数量";
  581. self.txtStockingQuantity.delegate = self;
  582. [vStockingQuantity addSubview:self.txtStockingQuantity];
  583. //==================
  584. UIView *vresponseiblePerson=[UIView new];
  585. vresponseiblePerson.frame=CGRectMake(0, CGRectGetMaxY(vStockingQuantity.frame), Screen_Width, heightRow);
  586. [contentView addSubview:vresponseiblePerson];
  587. UILabel *lblresponseiblePerson= [UILabel new];
  588. lblresponseiblePerson.frame=CGRectMake(lblx, valuey, lblwidth, valueheight);
  589. lblresponseiblePerson.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  590. lblresponseiblePerson.text=@"责 任 人:";
  591. [vresponseiblePerson addSubview:lblresponseiblePerson];
  592. self.responseiblePerson = [UIButton new];
  593. self.responseiblePerson.frame=CGRectMake(valuex, valuey, Screen_Width - valuex-lblx, valueheight);
  594. self.responseiblePerson.titleLabel.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  595. [self.responseiblePerson setTitle:@"请选择责任人" forState:UIControlStateNormal];
  596. self.responseiblePerson.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
  597. self.responseiblePerson.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
  598. [self.responseiblePerson setTitleColor:ButtonTitleColor forState:UIControlStateNormal];
  599. [self.responseiblePerson addTarget:self action:@selector(showPerson) forControlEvents:UIControlEventTouchUpInside];
  600. [vresponseiblePerson addSubview:self.responseiblePerson];
  601. //==================
  602. UIView *vresponseibleReason=[UIView new];
  603. vresponseibleReason.frame=CGRectMake(0, CGRectGetMaxY(vresponseiblePerson.frame), Screen_Width, heightRow);
  604. [contentView addSubview:vresponseibleReason];
  605. UILabel *lblresponseibleReason= [UILabel new];
  606. lblresponseibleReason.frame=CGRectMake(lblx, valuey, lblwidth, valueheight);
  607. lblresponseibleReason.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  608. lblresponseibleReason.text=@"盘亏原因:";
  609. [vresponseibleReason addSubview:lblresponseibleReason];
  610. self.responseibleReason = [UIButton new];
  611. self.responseibleReason.frame=CGRectMake(valuex, valuey, Screen_Width - valuex-lblx, valueheight);
  612. self.responseibleReason.titleLabel.font = [UIFont systemFontOfSize:LabelAndTextFontOfSize];
  613. [self.responseibleReason setTitle:@"请选择盘亏原因" forState:UIControlStateNormal];
  614. self.responseibleReason.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
  615. self.responseibleReason.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
  616. [self.responseibleReason setTitleColor:ButtonTitleColor forState:UIControlStateNormal];
  617. [self.responseibleReason addTarget:self action:@selector(showReason) forControlEvents:UIControlEventTouchUpInside];
  618. [vresponseibleReason addSubview:self.responseibleReason];
  619. //保存
  620. _btnSave=[UIButton buttonWithType:UIButtonTypeCustom];
  621. _btnSave.frame=CGRectMake(lblx, Screen_Height - h - 5 - rectStatusHeight-rectNavHeight, Screen_Width-2*lblx, h);
  622. [_btnSave setBackgroundImage:pic forState:UIControlStateNormal];
  623. [_btnSave addTarget:self action:@selector(dataSave) forControlEvents:UIControlEventTouchUpInside];
  624. [self.view addSubview:_btnSave];
  625. contentView.frame=CGRectMake(0,0,self.view.frame.size.width,CGRectGetMaxY(vresponseibleReason.frame));
  626. scroll.contentSize=CGSizeMake(self.view.frame.size.width, CGRectGetMaxY(vresponseibleReason.frame)+20);
  627. }
  628. /**
  629. 扫描条码的界面跳转
  630. */
  631. -(void)scanClick{
  632. ScanViewController * rt = [[ScanViewController alloc]init];
  633. rt.rootVC = self;
  634. self.navigationController.visibleViewController.hidesBottomBarWhenPushed=YES;
  635. [self.navigationController pushViewController:rt animated:YES];
  636. }
  637. /**
  638. 保存数据
  639. */
  640. -(void)dataSave{
  641. [self.view endEditing:YES];
  642. if (![self check]) {
  643. return;
  644. }
  645. [self saveDataManager];
  646. }
  647. /**
  648. 保存前的校验
  649. @param BOOL <#BOOL description#>
  650. @return <#return value description#>
  651. */
  652. - (BOOL)check{
  653. if(self.txtOnlyCode.text == nil||[self.txtOnlyCode.text isEqualToString:@""]){
  654. [self showAlertViewText:@"请输入或扫描唯一编码"];
  655. return NO;
  656. }
  657. if(self.sCode == nil || [self.sCode isEqualToString:@""] )
  658. {
  659. [self showAlertViewText:@"请按回车加载数据!"];
  660. return NO;
  661. }
  662. // if([self.txtStockingQuantity.text doubleValue] == 0){
  663. // [self showAlertViewText:@"库存盘点数量大于0"];
  664. // return NO;
  665. //
  666. // }
  667. if(self.txtStockingQuantity == nil || [self.txtStockingQuantity.text isEqualToString:@""])
  668. {
  669. [self showAlertViewText:@"请输入盘点数量"];
  670. return NO;
  671. }
  672. if(self.txtStockingQuantity.text != nil||![self.txtStockingQuantity.text isEqualToString:@""]){
  673. RegularExpression *regularExpr = [[RegularExpression alloc]init];
  674. bool flg = [regularExpr AmountRegular:self.txtStockingQuantity.text];
  675. if(!flg){
  676. [self showAlertViewText:@"盘点数量格式不正确"];
  677. self.txtStockingQuantity.text = @"";
  678. return NO;
  679. }
  680. }
  681. if(self.sResponseiblePerson == nil||[self.sResponseiblePerson isEqualToString:@""])
  682. {
  683. [self showAlertViewText:@"请选择责任人"];
  684. return NO;
  685. }
  686. return YES;
  687. }
  688. /**
  689. 根据唯一编码加载数据
  690. */
  691. -(void)loadData{
  692. self.hidesBottomBarWhenPushed=YES;
  693. StockingGoodsListViewController *vc=[[StockingGoodsListViewController alloc] init];
  694. vc.onlyCode = self.sCode;
  695. vc.stockDelegate = self;
  696. [self.navigationController pushViewController:vc animated:YES];
  697. }
  698. /**
  699. 保存数据
  700. */
  701. -(void)saveDataManager{
  702. [self startLoading];
  703. self.saveManager = [[ASIDownManager alloc] init];
  704. self.saveManager.delegate = self;
  705. self.saveManager.OnImageDown = @selector(onSaveSuccess:);
  706. self.saveManager.OnImageFail = @selector(onFail:);
  707. NSString *urlStr = ServerURL;
  708. NSMutableDictionary *dict = [NSMutableDictionary dictionary];
  709. [dict setObject:@"SaveCheckDataIphone" forKey:@"Action"];
  710. [dict setObject:[NSString stringWithFormat:@"%@",kkAccountCode]forKey:@"AccountCode"];
  711. [dict setObject:kkUserCode forKey:@"UserCode"];
  712. [dict setObject:kkUserPwd forKey:@"UserPassword"];
  713. [dict setObject:kkSessionKey forKey:@"SessionKey"];
  714. if (kkLicenseCode !=nil) {
  715. [dict setObject:kkLicenseCode forKey:@"LicenseCode"];
  716. }
  717. //主界面
  718. NSMutableDictionary *dicHead = [[NSMutableDictionary alloc] init];
  719. NSMutableArray *arrHead=[[NSMutableArray alloc]init];
  720. [dicHead setObject:self.inventoryId forKeyedSubscript:@"InventoryID"];
  721. [dicHead setObject:self.quantity.text forKeyedSubscript:@"InventoryQuantity"];
  722. [dicHead setObject:self.txtStockingQuantity.text forKeyedSubscript:@"CheckQuantity"];
  723. [dicHead setObject:self.sResponseibleReason forKeyedSubscript:@"ShortageReason"];
  724. [dicHead setObject:self.sResponseiblePerson forKeyedSubscript:@"ResponsiblePerson"];
  725. [dicHead setObject:self.codeId forKeyedSubscript:@"CodeID"];
  726. [dicHead setObject:@"" forKeyedSubscript:@"Remarks"];
  727. [arrHead addObject:dicHead];
  728. [dict setObject:[Util objectToJson:arrHead] forKey:@"CheckDetailData"];
  729. [self.saveManager postHttpRequest:urlStr dic:dict path:nil fileName:nil];
  730. }
  731. /**
  732. 加载盘亏原因,责任人
  733. */
  734. -(void)loadInitResposeData{
  735. [self startLoading];
  736. NSString *urlStr = ServerURL;
  737. NSMutableDictionary *dict=[NSMutableDictionary new];
  738. [dict setObject:@"GetInventoyCheckInitDataIphone" forKey:@"Action"];
  739. [dict setObject:kkAccountCode forKey:@"AccountCode"];
  740. [dict setObject:kkUserCode forKey:@"UserCode"];
  741. [dict setObject:kkUserPwd forKey:@"UserPassword"];
  742. [dict setObject:kkSessionKey forKey:@"SessionKey"];
  743. self.downManager = [[ASIDownManager alloc] init];
  744. self.downManager.delegate = self;
  745. self.downManager.OnImageDown = @selector(onResposeSuccess:);
  746. self.downManager.OnImageFail = @selector(onFail:);
  747. [self.downManager postHttpRequest:urlStr dic:dict path:nil fileName:nil];
  748. }
  749. /**
  750. Notification
  751. */
  752. -(void)initNotification{
  753. [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onFocusPeopleEditingChanged:) name:@"UITextFieldTextDidChangeNotification" object:self.txtStockingQuantity ];
  754. }
  755. /**
  756. 责任人点击事件
  757. */
  758. - (void)showPerson{
  759. if(self.sCode==nil || [self.sCode isEqualToString:@""] )
  760. {
  761. return ;
  762. }
  763. self.hidesBottomBarWhenPushed=YES;
  764. ResponsiblePersonViewController *vc=[[ResponsiblePersonViewController alloc] init];
  765. vc.filterArr = self.infoPersons;
  766. vc.searchArr = self.infoPersons;
  767. vc.respDelegate = self;
  768. [self.navigationController pushViewController:vc animated:YES];
  769. }
  770. /**
  771. 盘亏原因点击事件
  772. */
  773. - (void)showReason{
  774. if(self.sCode==nil || [self.sCode isEqualToString:@""] )
  775. {
  776. return ;
  777. }
  778. self.hidesBottomBarWhenPushed=YES;
  779. BaseIDAndNameViewController *tc=[[BaseIDAndNameViewController alloc ]init];
  780. tc.bDelegate = self;
  781. tc.isPresentViewFlg = NO;
  782. tc.filterArr = self.infoReasons;
  783. tc.searchArr = self.infoReasons;
  784. tc.showDialogViewTag = baseIdAndNameStockingReason;
  785. [self.navigationController pushViewController:tc animated:YES];
  786. }
  787. /**
  788. 显示键盘
  789. */
  790. -(void)keyboardWillShow {
  791. if ([self.txtOnlyCode isFirstResponder]){
  792. return;
  793. }
  794. if(!keyboardShow){
  795. [UIView animateWithDuration:0.3f animations:^ {
  796. self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y-190, self.view.frame.size.width, self.view.frame.size.height);
  797. }];}
  798. keyboardShow=YES;
  799. }
  800. /**
  801. 隐藏键盘
  802. */
  803. -(void)keyboardWillHide {
  804. if ([self.txtOnlyCode isFirstResponder]){
  805. return;
  806. }
  807. self.view.backgroundColor = [UIColor colorWithWhite:0.96 alpha:1.0];
  808. if(keyboardShow){
  809. [UIView animateWithDuration:0.1f animations:^ {
  810. self.view.frame = CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y+190, self.view.frame.size.width, self.view.frame.size.height);
  811. }];}
  812. keyboardShow=NO;
  813. }
  814. /**
  815. 清空数据
  816. */
  817. - (void)clearData{
  818. self.inventoryId = @"";
  819. self.sCode = @"";
  820. self.codeId = @"";
  821. self.onlyCode.text = @"";
  822. self.txtOnlyCode.text = @"";
  823. self.warehouseName.text = @"";
  824. self.specification.text = @"";
  825. self.gradeName.text = @"";
  826. self.colorNumber.text = @"";
  827. self.positionNumber.text = @"";
  828. [self.responseibleReason setTitle:@"请选择盘亏原因" forState:UIControlStateNormal];
  829. [self.responseiblePerson setTitle:@"请选择责任人" forState:UIControlStateNormal];
  830. self.sResponseiblePerson = @"";
  831. self.sResponseibleReason = @"";
  832. self.quantity.text = @"";
  833. self.txtStockingQuantity.text = @"";
  834. self.canSaleQuantity.text = @"";
  835. }
  836. @end