Bläddra i källkod

재고 실사 - 엑셀업로드 개발중

marseyes 2 år sedan
förälder
incheckning
136d0663e4
1 ändrade filer med 62 tillägg och 12 borttagningar
  1. 62 12
      src/main/webapp/js/app/stockmng/ITP_STOCKMNG02010.js

+ 62 - 12
src/main/webapp/js/app/stockmng/ITP_STOCKMNG02010.js

@@ -691,7 +691,8 @@ let stockCddObj = {
691 691
 		cancel: function() {
692 692
 			listObj.grid.search();
693 693
 		},
694
-		uploadExcel: function() {
694
+		uploadExcel: function() {			
695
+			stockCddObj.clearData(); 
695 696
 			// 파일선택
696 697
 			$('#ITP_FORM_STOCKMNG02010_DETAIL_EXCEL_UPLOAD_SELECT_FILE').click();
697 698
 		}, 
@@ -712,11 +713,8 @@ let stockCddObj = {
712 713
 				processArray.push(processData);
713 714
 			});
714 715
 			
715
-			// $.each(processArray, function(key, value) {
716
-			// console.log(JSON.stringify(value));					
717
-			// });
718
-			
719 716
 			// 엑셀 목록을 서버에서 조회한다.
717
+			const itemMap = new Map();
720 718
 			const formId = '#ITP_FORM_STOCKMNG02010_DETAIL';
721 719
 			let param = $(formId).serializeObject();
722 720
 			param.whsId = $('#ITP_FORM_STOCKMNG02010_DETAIL_WHS_ID').val();
@@ -725,8 +723,52 @@ let stockCddObj = {
725 723
 			//console.log(JSON.stringify(param));
726 724
 			var callbackFn = function(result) {
727 725
 				// TODO 엑셀 데이터를 현재고수량 참고하여 ROW를 추가한다.
728
-				console.log('RESULT : ' + JSON.stringify(result));
729
-				// addRowCallback 참고
726
+				// console.log('RESULT : ' + JSON.stringify(result));
727
+				$.each(result.gridRows, function(key, value) {
728
+					itemMap.set(value.itemId.toString(), value);	
729
+				});
730
+				
731
+				var brandId = $('#ITP_FORM_STOCKMNG02010_DETAIL_BRAND_ID').val();
732
+				var brandNm = $('#ITP_FORM_STOCKMNG02010_SEARCH_BRAND_NM').val();
733
+				var whsId = $('#ITP_FORM_STOCKMNG02010_DETAIL_WHS_ID').val();
734
+				var whsNm = $('#ITP_FORM_STOCKMNG02010_DETAIL_WHS_ID option:selected').text();
735
+				var location = $('#ITP_FORM_STOCKMNG02010_DETAIL_LOCATION').val();
736
+				var locationNm = $('#ITP_FORM_STOCKMNG02010_DETAIL_LOCATION option:selected').text();
737
+				var normalYn = 'Y';
738
+				var errorMsg = '';
739
+								
740
+				$.each(processArray, function(key, value) {
741
+					// console.log(JSON.stringify(value));
742
+					// 품목번호 체크
743
+					var itemObject;
744
+					if (!itemMap.has(value.itemId)) {
745
+						normalYn = "N";
746
+						errorMsg = "품목번호 미존재";
747
+					} else {
748
+						itemObject = itemMap.get(value.itemId)
749
+					}
750
+					
751
+					// 행추가
752
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('addRow', {position: 'last'});
753
+					var rids = $(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('getDataIDs');
754
+					var last_row_id = rids[rids.length - 1];
755
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'viewCd', 'C');					
756
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'normalYn', normalYn); // 정상여부
757
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'errorMsg', errorMsg); 
758
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'brandId', brandId);
759
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'brandNm', brandNm);
760
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'whsId', whsId);
761
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'whsNm', whsNm);
762
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'location', location);
763
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'locationNm', locationNm);
764
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'itemId', value.itemId);
765
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'itemNm', itemObject ? itemObject.itemNm : '');
766
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'unit', itemObject ? itemObject.unit : '');
767
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'stckQty', itemObject ? itemObject.stckQty : '');
768
+					$(STOCKMNG02010_DETAIL_GRID_ID).jqGrid('setCell', last_row_id, 'cddQty', value.cddQty);										
769
+			 	});
770
+				$(STOCKMNG02010_DETAIL_GRID_EMPTY).hide();
771
+				
730 772
 			};
731 773
 			fn_ajax_call(STOCK_MNG_CDD_GRID_LIST, JSON.stringify(param), callbackFn, 'POST');
732 774
 						
@@ -792,18 +834,26 @@ let stockCddObj = {
792 834
 					itp_fn_modal_alert_ajax(ITP_MSG_LOCALE.message.grid.noData);
793 835
 					return;
794 836
 				}	
795
-				var dataCheck = true;			
837
+				var cddQtyCheck = true;			
838
+				var normalYnCheck = true;			
796 839
 				$.each(rowData, function(key, value) {
797 840
 					if (value.cddQty == '' || isNaN(value.cddQty)) {
798
-						dataCheck = false;
799
-					}					
841
+						cddQtyCheck = false;
842
+					}		
843
+					if (value.normalYn == 'N') {
844
+						normalYnCheck = false;
845
+					}			
800 846
 					gridInsertData.push(value);
801 847
 				});
802 848
 				// 데이터 체크
803
-				if(!dataCheck) {
849
+				if(!cddQtyCheck) {
804 850
 					itp_fn_modal_alert_ajax('실사수량을 입력하세요.');
805 851
 					return;
806
-				}				
852
+				}			
853
+				if(!normalYnCheck) {
854
+					itp_fn_modal_alert_ajax('정상여부 값이 N인 데이터가 있습니다.\n품목번호를 확인하세요.');
855
+					return;
856
+				}	
807 857
 				let param = $(formId).serializeObject();
808 858
 				param.whsId = $('#ITP_FORM_STOCKMNG02010_DETAIL_WHS_ID').val();
809 859
 				param.location = $('#ITP_FORM_STOCKMNG02010_DETAIL_LOCATION').val();