NewStockingViewController.m 34 KB

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