ShopCartModel.m 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. //
  2. // WorkFlowModel.m
  3. // IBOSS
  4. //
  5. // Created by iHope on 14-7-9.
  6. // Copyright (c) 2014年 elongtian. All rights reserved.
  7. //
  8. #import "ShopCartModel.h"
  9. #import "ShopCartItemModel.h"
  10. #import "OrderQuantity.h"
  11. #import "CartFrame.h"
  12. #import "SubmitOrderFrame.h"
  13. //#import "GoodsSearchItemModel.h"
  14. #import "SBJsonWriter.h"
  15. @interface ShopCartModel()
  16. {
  17. MBProgressHUD *HUD;
  18. UIView *view;
  19. }
  20. @property(strong) NSMutableArray *orignalArr;
  21. @property(nonatomic) ASIDownManager *mDownManager;
  22. @end
  23. @implementation ShopCartModel
  24. #pragma mark - 公共函数
  25. /**
  26. 初始化
  27. @return <#return value description#>
  28. */
  29. -(id)init
  30. {
  31. self =[super init];
  32. if(self){
  33. _workflowArr=[NSMutableArray new];
  34. _orderDetailArr=[NSMutableArray new];
  35. _orignalArr=[NSMutableArray new];
  36. isCheckAll=YES;
  37. }
  38. return self;
  39. }
  40. #pragma mark - 私有函数
  41. /**
  42. 解析购物车明细数组
  43. @param arr <#arr description#>
  44. */
  45. -(void)parseWorkFlowArr:(NSArray *)arr
  46. {
  47. if(arr!=nil)
  48. { [_workflowArr removeAllObjects];
  49. for(int i=0;i<arr.count;i++)
  50. {
  51. NSDictionary * dic=arr[i];
  52. ShopCartItemModel *infoMode=[ShopCartItemModel new];
  53. [infoMode parseDic:dic];
  54. CartFrame *cartFrame=[CartFrame new];
  55. [cartFrame setOrderCartModel:infoMode];
  56. [_workflowArr addObject:cartFrame];
  57. }
  58. _orignalArr =[NSMutableArray arrayWithArray:arr];
  59. }
  60. }
  61. /**
  62. 解析订单明细数组
  63. @param arr <#arr description#>
  64. */
  65. -(void)parseOrderDetailArr:(NSArray *)arr
  66. {
  67. if(arr!=nil)
  68. { [_orderDetailArr removeAllObjects];
  69. for(int i=0;i<arr.count;i++)
  70. {
  71. NSDictionary * dic=arr[i];
  72. ShopCartItemModel *infoMode=[ShopCartItemModel new];
  73. [infoMode parseDic:dic];
  74. [_orderDetailArr addObject:infoMode];
  75. }
  76. _orignalArr =[NSMutableArray arrayWithArray:arr];
  77. }
  78. }
  79. /**
  80. 计算产品的合计价格
  81. @return <#return value description#>
  82. */
  83. -(double)calculatePrice
  84. {
  85. double totalAmount=0.0f;
  86. for(int i=0;i<_workflowArr.count;i++)
  87. {
  88. CartFrame *frame=_workflowArr[i];
  89. if(frame.cartModel!=nil&&frame.cartModel.isChecked)
  90. {
  91. double num=[frame.cartModel.salesQuantity doubleValue];
  92. double price=[frame.cartModel.salesPrice doubleValue];
  93. totalAmount+=(num*price);
  94. }
  95. }
  96. return totalAmount;
  97. }
  98. //获得选中的集合
  99. -(NSArray *)checkedArr
  100. {
  101. NSMutableArray *tempArr=[NSMutableArray new];
  102. for(int i=0;i<_workflowArr.count;i++)
  103. {
  104. CartFrame *frame= [_workflowArr objectAtIndex:i] ;
  105. if(frame.cartModel.isChecked){
  106. SubmitOrderFrame *submitFrame=[SubmitOrderFrame new];
  107. [submitFrame setSubmitOrderModel:frame.cartModel];
  108. [tempArr addObject:submitFrame];
  109. }
  110. }
  111. return tempArr;
  112. }
  113. //获得选中的商品的JSON数据,用于获取商品售价
  114. -(NSString *)checkedSalePriceJSON
  115. {
  116. NSArray *arr= [self checkedArr];
  117. NSMutableArray *finalArr=[NSMutableArray new];
  118. for(SubmitOrderFrame *frame in arr){
  119. NSString *codeID= frame.cartModel.codeId;
  120. NSString *gradeID=frame.cartModel.gradeId;
  121. if(codeID&&gradeID){
  122. [finalArr addObject:@{@"CodeID": codeID,@"GradeID":gradeID}];
  123. }
  124. }
  125. SBJsonWriter *write = [[SBJsonWriter alloc] init];
  126. NSString *value = [write stringWithObject:finalArr];
  127. return value;
  128. }
  129. //获得选中的原始数据的集合
  130. -(NSArray *)checkedOriginalArr
  131. {
  132. NSArray *tempArr=[self checkedArr];
  133. NSMutableArray *finalArr=[NSMutableArray new];
  134. for(SubmitOrderFrame *frame in tempArr)
  135. {
  136. for(NSDictionary * dic in _orignalArr)
  137. {
  138. NSString *cartId=[NSString stringWithFormat:@"%@",[dic objectForKey:@"CartID"]];
  139. if([cartId intValue]==[frame.cartModel.cartId intValue])
  140. {
  141. [finalArr addObject:dic];
  142. }
  143. }
  144. }
  145. return finalArr;
  146. }
  147. //更新商品售价
  148. -(void) updateGoodsSalePrice:(NSArray *)priceArr
  149. {
  150. NSArray *checkArr=[self checkedArr];
  151. for(NSDictionary *dic in priceArr){
  152. NSString * orderprice=[dic objectForKey:@"OrderPrice"];
  153. NSString *codeId=[NSString stringWithFormat:@"%@",[dic objectForKey:@"CodeID"]];
  154. NSString *gradeId=[NSString stringWithFormat:@"%@",[dic objectForKey:@"GradeID"]];
  155. for(SubmitOrderFrame *frame in checkArr){
  156. if([[NSString stringWithFormat:@"%@",frame.cartModel.codeId] isEqualToString:codeId]&&[[NSString stringWithFormat:@"%@",frame.cartModel.gradeId] isEqualToString:gradeId]){
  157. if(orderprice!=nil)
  158. {
  159. frame.cartModel.salesPrice=[NSString stringWithFormat:@"%lf",[orderprice doubleValue]];
  160. }
  161. else{
  162. frame.cartModel.salesPrice=@"0";
  163. }
  164. }
  165. }
  166. }
  167. }
  168. //更新商品标价
  169. -(void)updateGoodsMarkedPrice :(NSArray *)priceArr;
  170. {
  171. NSArray *checkArr=[self checkedArr];
  172. for(NSDictionary *dic in priceArr){
  173. // 2017-7-26 关宏厚 start
  174. //渠道价格
  175. NSString * channelPrice = [dic objectForKey:@"ChannelPrice"];
  176. //策略价格
  177. NSString * basePrice = [dic objectForKey:@"BasePrice"];
  178. //基础标价
  179. NSString * standardPrice = [dic objectForKey:@"StandardPrice"];
  180. NSString *codeId = [NSString stringWithFormat:@"%@",[dic objectForKey:@"CodeID"]];
  181. NSString *gradeId = [NSString stringWithFormat:@"%@",[dic objectForKey:@"GradeID"]];
  182. for(SubmitOrderFrame *frame in checkArr){
  183. if([[NSString stringWithFormat:@"%@",frame.cartModel.codeId] isEqualToString:codeId]&&[[NSString stringWithFormat:@"%@",frame.cartModel.gradeId] isEqualToString:gradeId]){
  184. //标价取值顺序: 渠道价格->策略价格->基础标价->0
  185. if(channelPrice != nil)
  186. {
  187. frame.cartModel.markedPrice=[NSString stringWithFormat:@"%lf",[channelPrice doubleValue]];
  188. }
  189. else if(basePrice != nil){
  190. frame.cartModel.markedPrice=[NSString stringWithFormat:@"%lf",[basePrice doubleValue]];
  191. }
  192. else if(standardPrice != nil){
  193. frame.cartModel.markedPrice=[NSString stringWithFormat:@"%lf",[standardPrice doubleValue]];
  194. }
  195. else{
  196. frame.cartModel.markedPrice=@"0";
  197. }
  198. // 2017-7-26 关宏厚 end
  199. if(frame.cartModel.salesPrice == nil||[frame.cartModel.salesPrice isEqualToString:@"0"]||[frame.cartModel.salesPrice isEqualToString:@"(null)"]){
  200. frame.cartModel.salesPrice = [frame.cartModel.markedPrice copy];
  201. }
  202. }
  203. }
  204. }
  205. }
  206. //看是否全选
  207. -(BOOL)isCheckedAll
  208. {
  209. BOOL ischecked=YES;
  210. for(CartFrame *wf in _workflowArr) {
  211. if( wf.cartModel.isChecked==NO)
  212. {
  213. ischecked=NO;
  214. break;
  215. }
  216. }
  217. return ischecked;
  218. }
  219. //全选或者全不选
  220. -(BOOL)updateAllCellCheck
  221. {
  222. if(!isCheckAll){
  223. isCheckAll=YES;
  224. for(CartFrame *wf in _workflowArr) {
  225. wf.cartModel.isChecked =YES;
  226. }
  227. }
  228. else
  229. {
  230. isCheckAll=NO;
  231. for(CartFrame *wf in _workflowArr) {
  232. wf.cartModel.isChecked =NO;
  233. }
  234. }
  235. return NO;
  236. }
  237. //至少选择一个
  238. -(BOOL)isSelectAtLeastOne
  239. {
  240. BOOL s=NO;
  241. for(CartFrame *wf in _workflowArr) {
  242. if(wf.cartModel.isChecked)
  243. {
  244. s=YES;
  245. break;
  246. }
  247. }
  248. return s;
  249. }
  250. //检查选中的商品 价格和可售量的填写格式是否正确
  251. -(BOOL)checkFormat
  252. { BOOL end=YES;
  253. NSArray *arr=[self checkedArr];
  254. //1.数量数目不能为0
  255. for(int i=0;i<arr.count;i++)
  256. {
  257. SubmitOrderFrame *frame= [arr objectAtIndex:i] ;
  258. if([frame.cartModel.salesQuantity intValue]<=0)
  259. {
  260. end=NO;
  261. break;
  262. }
  263. }
  264. return end;
  265. }
  266. /**
  267. 更新选中的单元格
  268. @param checkDocId <#checkDocId description#>
  269. @return <#return value description#>
  270. */
  271. -(BOOL)updateCellChecked : (NSString *) checkDocId
  272. {
  273. ShopCartItemModel *curobj=nil;
  274. for(CartFrame *wf in _workflowArr){
  275. if([wf.cartModel.cartId intValue]==[checkDocId intValue] ) {
  276. wf.cartModel.isChecked = !wf.cartModel.isChecked;
  277. curobj=wf.cartModel;
  278. break;
  279. }
  280. }
  281. //更新全部是否选中
  282. BOOL ischeckedll=YES;
  283. for(CartFrame *wf in _workflowArr) {
  284. if( wf.cartModel.isChecked==NO)
  285. {
  286. ischeckedll=NO;
  287. break;
  288. }
  289. }
  290. isCheckAll=ischeckedll;
  291. if(curobj){
  292. return curobj.isChecked;
  293. }
  294. else{
  295. return NO;
  296. }
  297. }
  298. //更新文本信息,分为销售量和销售价格
  299. -(void)updateCellSaleText:(UITextField*)txtfield checkeId:(NSString *) checkDocId
  300. {
  301. if(!txtfield)return;
  302. for(CartFrame *wf in _workflowArr) {
  303. if([wf.cartModel.cartId intValue]==[checkDocId intValue] ) {
  304. if(txtfield.tag==1001) //价格
  305. {
  306. if(txtfield.text.length>0){
  307. wf.cartModel.salesPrice=txtfield.text;
  308. }
  309. else{
  310. wf.cartModel.salesPrice=@"0";
  311. txtfield.text=@"0";
  312. }
  313. }
  314. else if(txtfield.tag==1002)
  315. {
  316. if(txtfield.text.length>0){
  317. NSString *saleQuantity= txtfield.text;
  318. double acreage=wf.cartModel.acreage.doubleValue;
  319. OrderQuantity *quantity=[OrderQuantity new];
  320. NSInteger decimalPlaces= wf.cartModel.decimalPlaces;
  321. NSString *calculateQuantity= [quantity calculateOrderQuantity:wf.cartModel.circulateType decimalPlaces:[NSString stringWithFormat:@"%ld",(long)decimalPlaces] quantity:saleQuantity acreage:acreage];
  322. if ([calculateQuantity doubleValue] >MAXIMUM_QUANTITY) {
  323. calculateQuantity =[NSString stringWithFormat:@"%lf",MAXIMUM_QUANTITY];
  324. wf.cartModel.salesQuantity=calculateQuantity;
  325. txtfield.text=calculateQuantity;
  326. // [self showAlertViewText:@"已超出最大数量"];
  327. //return;
  328. }
  329. wf.cartModel.salesQuantity=calculateQuantity;
  330. txtfield.text=calculateQuantity;
  331. }
  332. else{
  333. wf.cartModel.salesQuantity=@"0";
  334. txtfield.text=@"0";
  335. }
  336. }
  337. else if(txtfield.tag==1003)
  338. {
  339. wf.cartModel.remarks=txtfield.text;
  340. }
  341. else if (txtfield.tag==1004){
  342. if(txtfield.text.length>0){
  343. wf.cartModel.markedPrice=txtfield.text;
  344. }
  345. else{
  346. wf.cartModel.markedPrice=@"0";
  347. txtfield.text=@"0";
  348. }
  349. }
  350. }
  351. }
  352. }
  353. -(void)showAlertViewText:(NSString *)text
  354. {
  355. UIAlertView*alert = [[UIAlertView alloc]initWithTitle:@"提示"
  356. message:text
  357. delegate:nil
  358. cancelButtonTitle:@"确定"
  359. otherButtonTitles:nil];
  360. [alert show];
  361. }
  362. @end