diff --git a/OrderPackingProcessor/mainForm.vb b/OrderPackingProcessor/mainForm.vb index b718f95..f11a6b9 100644 --- a/OrderPackingProcessor/mainForm.vb +++ b/OrderPackingProcessor/mainForm.vb @@ -471,7 +471,7 @@ Public Class mainForm Return "NONORDER" End If Else - If playCode.Length = oldProdCodeLength Or playCode.Length = newProdCodeLength Then + If playCode.Length = oldProdCodeLength Or playCode.Length = newProdCodeLength Or playCode.Length = 13 Then Return "PRODSCAN" ElseIf playCode.Length > comCodeLength Then Return "COMSCAN" @@ -705,7 +705,7 @@ Public Class mainForm Return False End If - If prodCodeSearch() Then + If prodCodeSearch() Then ''mes에서 불러온 정보와 비교하기 위해 스캔한 정보를 db에서 가지고 오기 Return False End If @@ -768,7 +768,7 @@ Public Class mainForm Try For i = 0 To prodArray.GetLength(1) - 1 - For n = 0 To scanCode.Length - 1 + For n = 0 To scanCode.Length - 1 '' 스캔한 기기와 조건이 같은 품목 상품 들 If prodArray(itemCode.code, i) = scanCode(n) Then '' instr 에서 식으로 변경 @@ -784,7 +784,7 @@ Public Class mainForm Return False End If - If WorkSwitch = True Then + If WorkSwitch = True Then '' 대량 포장에서 이미 포장이 끝나서 현재 새로운 포장에 들어간 경우 nowFullCount = nowFullCountBack + 1 WorkSwitch = False @@ -861,7 +861,7 @@ Public Class mainForm playCode = txbProdSN.Text '' 시리얼 코드 전역 변수 If MasPlayFunc() Then - If playCode.Length < stateLength Or playCode.Length = newProdCodeLength Then + If playCode.Length < stateLength Or playCode.Length = newProdCodeLength Or playCode.Length = 13 Then If nowFullCount = tgtFullCount Then If chbUseBarcode.Checked = False Then ''true인데 false로 수정함 saveStart() @@ -915,7 +915,7 @@ Public Class mainForm End If If packingRun() Then - If playCode.Length < stateLength Or playCode.Length = newProdCodeLength Or playCode.Length = 13 Then + If playCode.Length < stateLength Or playCode.Length = newProdCodeLength Then '포장할 모든 품목을 다 검사했을 때 If nowFullCount = tgtFullCount Then If chbUseBarcode.Checked = False Then ''true인데 false로 수정함 @@ -967,7 +967,7 @@ Public Class mainForm Next End If - If RequestCount = WorkCount Then + If RequestCount = WorkCount Then '' 모든 패키징 수량 예시 약 100개가 완료됐음 StartSwitch = True EndUpdate(DateTime.Now.TimeOfDay) Else @@ -1032,7 +1032,7 @@ Public Class mainForm Try Const colCount As Int16 = 4 - DBCmd = "select it.code,it.name,io.expected_out_count,io.id from order_details od join items it on it.id = od.item_id join order_sheets os on os.id = od.order_sheet_id join item_outflows io on io.order_detail_id = od.id where os.code = '" & playCode & "' and od.deleted_at is null and io.state = 'registered';" + DBCmd = "select COALESCE(it.code, '') as code,it.name,io.expected_out_count,io.id from order_details od join items it on it.id = od.item_id join order_sheets os on os.id = od.order_sheet_id join item_outflows io on io.order_detail_id = od.id where os.code = '" & playCode & "' and od.deleted_at is null and io.state = 'registered';" If pgDBQueryReader(DBCmd) Then Dim RowCount As Int16 = (pgDataQuery.Length / colCount) - 1 Dim dataSetCount As Int32 = 0 @@ -1042,7 +1042,7 @@ Public Class mainForm For col = 0 To colCount - 1 Select Case col Case directData.code - prodArray(itemCode.code, row) = pgDataQuery(dataSetCount) '' 패키징pk + prodArray(itemCode.code, Row) = pgDataQuery(dataSetCount) '' 패키징pk Case directData.name prodArray(itemCode.name, row) = pgDataQuery(dataSetCount) '' 패키징 상품 품목이 문자열 덩어리로 넘어온다 Case directData.count @@ -1848,6 +1848,9 @@ Public Class mainForm End Function Private Function serialDupCheck() As Boolean + If oybtn.Checked Then + Return False + End If For i = 0 To prodArray.GetLength(1) - 1 If InStr(prodArray(itemCode.serialNum, i), playCode) > 0 Then errorOut("데이터오류") @@ -1861,7 +1864,9 @@ Public Class mainForm Private Function serialPackCompare() As Boolean Dim commandStr As String - + If oybtn.Checked Then + Return True + End If If playCode.Length = oldProdCodeLength Then '12자리 제품시리얼번호 modelNum = Mid(playCode, 1, 1) typeNum = Mid(playCode, 2, 1) @@ -2171,14 +2176,16 @@ Public Class mainForm If rdbMode1.Checked = True Or (rdbMode2.Checked = True And rdbAuto1.Checked = True) Then - packingCode = packingCode_Choice() ''디비에 저장될 pk 번호 정하기(정품번호 / 오더번호) + packingCode = packingCode_Choice() ''포장 디비에 저장될 pk 번호 정하기(정품번호 / 오더번호) If packingCode = "False" Then Return False End If - ''패킹코드 중복 확인 - If dbPackNumCompare(packingCode) Then - Return False + If Not oybtn.Checked Then + ''패킹코드 중복 확인 + If dbPackNumCompare(packingCode) Then + Return False + End If End If If rdbMode1.Checked = True Then @@ -2253,7 +2260,7 @@ Public Class mainForm failDataReset(packingCode) Return False End If - Else + Else ''ckbNEWDB.Checked = True 에서 한번에 저장 할 수 있도록 한게 else 에 작성함 If packingDBSaveOld(packingCode) Then ''패킹 테이블에서 포장된 상품 수량 cnt 저장 failDataReset(packingCode) Return False @@ -2311,11 +2318,19 @@ Public Class mainForm End If Next - DBCmd = "UPDATE " & applySalesDB & + If Not oybtn.Checked Then + DBCmd = "UPDATE " & applySalesDB & " SET Set_Cnt = '" & item_product_list(prodDB.proset).cnt + item_product_list(prodDB.luxset).cnt & "'" & query_product_cnt & query_component_cnt & " WHERE PackingCode = '" & packingCode & "'" + Else + DBCmd = "UPDATE " & applySalesDB & + " SET Set_Cnt = '" & item_product_list(prodDB.proset).cnt + item_product_list(prodDB.luxset).cnt & "'" & + query_product_cnt & + query_component_cnt & + " WHERE PackingCode = '" & packingCode & "' order by number desc limit 1" + End If If DBCommand(DBCmd) = False Then errorOut("등록오류") @@ -2379,14 +2394,24 @@ Public Class mainForm For i = prodDB.proface To item_product_max_index query_product_serial = query_product_serial & ", " & item_product_list(i).sales_packing_serial_col_nm & " = '" & item_product_list(i).serial & "'" Next - - DBCmd = "UPDATE " & applySalesDB & + If Not oybtn.Checked Then + DBCmd = "UPDATE " & applySalesDB & " SET `Data` = NOW()" & ", Main_Product_SN = '" & setSerial & "'" & ", Main_FACE_SN = '" & faceSerial & "'" & ", Main_EYE_SN = '" & eyeSerial & "'" & query_product_serial & " WHERE PackingCode = '" & packingCode & "'" + Else + DBCmd = "UPDATE " & applySalesDB & + " SET `Data` = NOW()" & + ", Main_Product_SN = '" & setSerial & "'" & + ", Main_FACE_SN = '" & faceSerial & "'" & + ", Main_EYE_SN = '" & eyeSerial & "'" & + query_product_serial & + " WHERE PackingCode = '" & packingCode & "' order by number desc limit 1" + End If + If DBCommand(DBCmd) Then Return False @@ -3540,7 +3565,7 @@ Public Class mainForm If choiceData = Nothing Then Return orderCode Else - If choiceData.Length = oldProdCodeLength Or choiceData.Length = newProdCodeLength Then ''최종 선택된 번호가 정품번호일때 + If choiceData.Length = oldProdCodeLength Or choiceData.Length = newProdCodeLength Or choiceData.Length = 13 Then ''최종 선택된 번호가 정품번호일때 Return choiceData Else Return orderCode ''지금 포장에 기기가 존재하지 않을경우 ->출하번호 @@ -3736,7 +3761,7 @@ Public Class mainForm Else '정품번호 If orderSwitch = True Then - If playCode.Length = oldProdCodeLength Or playCode.Length = newProdCodeLength Or playCode.Length = 13 Then + If playCode.Length = oldProdCodeLength Or playCode.Length = newProdCodeLength Then Return "PRODSCAN" ElseIf playCode.Length > comCodeLength Then ''컴포넌트 Return "COMSCAN" @@ -3764,13 +3789,13 @@ Public Class mainForm setInfo(i) = Nothing Next - ''스캔한 정품번호가 가지고 있는(예_ 얼굴 카트리지 등 ) 모든 sn 저장 - setinfo + ''스캔한 정품번호가 가지고 있는(예_ 얼굴 카트리지 등 )-> 분리형일 경우 카트리지 sn도 재고 관리를 위해 필요하니 확인하는 함수 If serialSearch() Then For i = 0 To serialCount - 1 If setInfo(i) <> "NULL" Then - If shotSearch(i) Then '' 현재 기기의 샷수 확인후 배열 저장 setinfo - If typeSearch(i) Then ''기기의 모델 정보 배열 저장 setinfo + If shotSearch(i) Then '' sn가 있는 모든 기기의 현재 샷수를 화면에 나타내기 위해 db 서칭 후 배열 저장 + If typeSearch(i) Then ''기기의 모델,국가,수입등을 화면에 나타내기 위해 배열에 저장하고 대량 포장이니깐 모든 기기는 같아야하는 점을 이용해 이 후 들어오는 데이터가 서로 같은지 판단 Return False End If Else @@ -3824,7 +3849,7 @@ Public Class mainForm DBCmd = "SELECT Ct_Model,Ct_Abroad,Ct_Agency FROM " & applyCartDB & " WHERE Product_SN = '" & setInfo(type) & "'" End If Else - If TDUseCompare = True Then + If TDUseCompare = True Or oybtn.Checked Then DBCmd = "SELECT Ct_Model,Ct_Abroad,Ct_Agency FROM " & applyCartDB & " WHERE Product_SN = '" & setInfo(type) & "'" Else DBCmd = "SELECT Ct_Model,Ct_Abroad,Ct_Agency FROM " & applyNonTDDB & " WHERE Product_SN = '" & setInfo(type) & "'" @@ -3863,8 +3888,11 @@ Public Class mainForm Private Function serialSearch() As Boolean Dim deviceTypeCode As String = "" - - DBCmd = "SELECT DeviceTypeCode FROM " & ApplyModelInfoDB & " WHERE ModelCode = '" & modelNum & "' LIMIT 1" + If Not oybtn.Checked Then + DBCmd = "SELECT DeviceTypeCode FROM " & ApplyModelInfoDB & " WHERE ModelCode = '" & modelNum & "' LIMIT 1" + Else + DBCmd = "SELECT DeviceTypeCode FROM " & ApplyModelInfoDB & " WHERE ModelCode = 'A6' LIMIT 1" + End If If DBQueryReader(DBCmd) Then deviceTypeCode = sqlDataQuery(0) @@ -3925,7 +3953,7 @@ Public Class mainForm End If Else - If TDUseCompare = True Then + If TDUseCompare = True Or oybtn.Checked Then DBCmd = "SELECT Ct_Max_ShotCnt FROM " & applyCartDB & " WHERE Product_SN = '" & setInfo(type) & "'" Else DBCmd = "SELECT COUNT(Number) FROM " & applyNonTDDB & " WHERE Product_SN = '" & setInfo(type) & "'" @@ -3969,35 +3997,38 @@ Public Class mainForm Private Function prodCodeSearch() As Boolean Try + If Not oybtn.Checked Then + If modelNum = Nothing Or typeNum = Nothing Then + errorOut("등록오류") + errorGen("해당 시리얼 번호의 모델과 타입을 알 수 없습니다.") + Return True + End If - If modelNum = Nothing Or typeNum = Nothing Then - errorOut("등록오류") - errorGen("해당 시리얼 번호의 모델과 타입을 알 수 없습니다.") - Return True - End If - - Dim queryCount As Integer = 0 - Dim codeColor As String - If playCode.Length = oldProdCodeLength Then '12자리 제품시리얼번호 - codeColor = Mid(playCode, 11, 1) - ElseIf playCode.Length = newProdCodeLength Then '16자리 제품시리얼번호 - codeColor = Mid(playCode, 3, 1) - End If - '포장할 기기가 주문한 품목이 맞는지 확인 - DBCmd = "SELECT ItemCode,ProdCode,FaceShot,EyeShot FROM " & applyPlistDB & " WHERE ModelNum = '" & modelNum & "' AND TypeNum = '" & typeNum & "' AND ColorNum = '" & codeColor & "'" - If DBQueryReader(DBCmd) Then - Dim sqlCount As Integer = sqlDataQuery.Length - '배열 생성 (3,같은 품목의 개수) -> 배열 초기화 -> 4행, 품목개수열 - ReDim ScanArray(scanList.eyeshot, (sqlCount / scanList.maxscan) - 1) - For i = 0 To (sqlCount / scanList.maxscan) - 1 - For cnt = 0 To scanList.eyeshot - ScanArray(cnt, i) = sqlDataQuery(queryCount) - queryCount += 1 - Next - Next - Return False + Dim queryCount As Integer = 0 + Dim codeColor As String + If playCode.Length = oldProdCodeLength Then '12자리 제품시리얼번호 + codeColor = Mid(playCode, 11, 1) + ElseIf playCode.Length = newProdCodeLength Then '16자리 제품시리얼번호 + codeColor = Mid(playCode, 3, 1) + End If + '포장할 기기가 주문한 품목이 맞는지 확인 + DBCmd = "SELECT ItemCode,ProdCode,FaceShot,EyeShot FROM " & applyPlistDB & " WHERE ModelNum = '" & modelNum & "' AND TypeNum = '" & typeNum & "' AND ColorNum = '" & codeColor & "'" Else - errorOut("등록오류") + DBCmd = "SELECT ItemCode,ProdCode,FaceShot,EyeShot FROM " & applyPlistDB & " WHERE ItemCode = 'P001-OY001A';" + End If + If DBQueryReader(DBCmd) Then + Dim sqlCount As Integer = sqlDataQuery.Length + '배열 생성 (3,같은 품목의 개수) -> 배열 초기화 -> 4행, 품목개수열 + ReDim ScanArray(scanList.eyeshot, (sqlCount / scanList.maxscan) - 1) + For i = 0 To (sqlCount / scanList.maxscan) - 1 + For cnt = 0 To scanList.eyeshot + ScanArray(cnt, i) = sqlDataQuery(queryCount) + queryCount += 1 + Next + Next + Return False + Else + errorOut("등록오류") errorGen("해당 품목에 대한 데이터가 존재하지 않습니다. 바코드를 확인하여 주십시오.") Return True End If @@ -4050,16 +4081,19 @@ Public Class mainForm End Function Private Sub mesShotSearch() - For i = 0 To prodArray.GetLength(1) - 1 - DBCmd = "SELECT FaceShot,EyeShot FROM " & applyPlistDB & " WHERE ItemCode = '" & prodArray(itemCode.code, i) & "'" - If DBQueryReader(DBCmd) Then - prodArray(itemCode.face, i) = sqlDataQuery(0) - prodArray(itemCode.eye, i) = sqlDataQuery(1) - Else - prodArray(itemCode.face, i) = 0 - prodArray(itemCode.eye, i) = 0 - End If - Next + If Not oybtn.Checked Then + For i = 0 To prodArray.GetLength(1) - 1 + DBCmd = "SELECT FaceShot,EyeShot FROM " & applyPlistDB & " WHERE ItemCode = '" & prodArray(itemCode.code, i) & "'" + If DBQueryReader(DBCmd) Then + prodArray(itemCode.face, i) = sqlDataQuery(0) + prodArray(itemCode.eye, i) = sqlDataQuery(1) + Else + prodArray(itemCode.face, i) = 0 + prodArray(itemCode.eye, i) = 0 + End If + Next + End If + End Sub Private Function mesParsing(pData As String) As Boolean @@ -4188,22 +4222,22 @@ Public Class mainForm Private Function PKCodeCheck() As Boolean ReDim SetIdCode(prodArray.GetLength(1) - 1) - - For i = 0 To prodArray.GetLength(1) - 1 - If i = 0 Then - SetPKCode = prodArray(itemCode.code, i) '' 패키징 pk - Else - If SetPKCode <> prodArray(itemCode.code, i) Then - errorGen("서로 다른 세트 코드가 존재합니다. 확인하여 주십시오." & vbCrLf) - Return True + If Not oybtn.Checked Then + For i = 0 To prodArray.GetLength(1) - 1 + If i = 0 Then + SetPKCode = prodArray(itemCode.code, i) '' 패키징 pk + Else + If SetPKCode <> prodArray(itemCode.code, i) Then + errorGen("서로 다른 세트 코드가 존재합니다. 확인하여 주십시오." & vbCrLf) + Return True + End If End If - End If - Dim temp = prodArray(itemCode.name, i) - SetIdCode(i) = prodArray(itemCode.id, i) - Next - - gbProdList.Text = "■ 출고 조건 : " & SetPKCode + Dim temp = prodArray(itemCode.name, i) + SetIdCode(i) = prodArray(itemCode.id, i) + Next + gbProdList.Text = "■ 출고 조건 : " & SetPKCode + End If If RequestCount = 0 Then Dim worknum As Integer = WorkNowState() @@ -4232,7 +4266,13 @@ Public Class mainForm ''100 개의 패키징 상품이 들어온다고 해도 들어간 구성품은 모두 같으니 하나의 패키징 상품에 대한 정보만 배열에 저장 Private Function PKCodeSearch() As Boolean - DBCmd = "SELECT un.ItemCode,un.ItemName,pk.ProdCount,ifnull(pd.FaceShot,-1),ifnull(pd.EyeShot ,-1),un.ProdCode FROM " & applyPKCodeDB & " AS pk INNER JOIN (SELECT ItemCode,ProdCode,ItemName FROM " & applyPlistDB & " UNION SELECT ItemCode,ProdCode,ItemName FROM " & applyClistDB & ") AS un ON pk.ProdCode = un.ItemCode LEFT JOIN " & applyPlistDB & " AS pd ON pk.ProdCode = pd.ItemCode WHERE pk.PKCode = '" & SetPKCode & "' ORDER BY ifnull(pd.FaceShot,-1) desc" + Dim DBCmd As String + If oybtn.Checked Then + DBCmd = "SELECT itemCode, ItemName, 1 as prodCount, ifnull(faceShot, -1), ifnull(EyeShot, -1), ProdCode FROM " & applyPlistDB & "where itemCode = 'P001-OY001A';" + Else + DBCmd = "SELECT un.ItemCode,un.ItemName,pk.ProdCount,ifnull(pd.FaceShot,-1),ifnull(pd.EyeShot ,-1),un.ProdCode FROM " & applyPKCodeDB & " AS pk INNER JOIN (SELECT ItemCode,ProdCode,ItemName FROM " & applyPlistDB & " UNION SELECT ItemCode,ProdCode,ItemName FROM " & applyClistDB & ") AS un ON pk.ProdCode = un.ItemCode LEFT JOIN " & applyPlistDB & " AS pd ON pk.ProdCode = pd.ItemCode WHERE pk.PKCode = '" & SetPKCode & "' ORDER BY ifnull(pd.FaceShot,-1) desc" + End If + If DBQueryReader(DBCmd) Then Dim dataCount As Integer = 0 @@ -4273,30 +4313,8 @@ Public Class mainForm errorOut("등록오류") Return True End If + Else - If oybtn.Checked Then - If RequestCount = 0 Then - Dim worknum As Integer = WorkNowState() - - If worknum >= prodArray.GetLength(1) Then - errorGen("이미 작업 완료된 코드입니다. 확인 바랍니다." & vbCrLf) - Return True - End If - - txbRequest.ForeColor = Color.Black - txbRequest.BackColor = SystemColors.Window - RequestUpdate(prodArray.GetLength(1)) '' 요청 수량 - - txbWork.ForeColor = Color.Black - txbWork.BackColor = SystemColors.Window - WorkUpdate(worknum) ''작업수량 - - txbLeftOver.ForeColor = Color.Black - txbLeftOver.BackColor = SystemColors.Window ''남은 수량 - LeftOverUpdate(prodArray.GetLength(1) - worknum) - End If - End If - If setCodeParsing() = False Then Return True End If @@ -5943,11 +5961,12 @@ Public Class mainForm If InStr(txbPrintName.Text.ToLower, txblaBro.Text) > 0 Then - If brotherPrintPlay() Then - Return True - Else - Return False - End If + 'If brotherPrintPlay() Then + ' Return True + 'Else + ' Return False + 'End If + Return True ElseIf InStr(txbPrintName.Text.ToLower, txblaZeb.Text) > 0 Then @@ -5990,50 +6009,50 @@ Public Class mainForm End Try End Function - Private Function brotherPrintPlay() As Boolean - If txblabelAd.Text.Replace(" ", "") <> "" Then - If txbBarValue.Text.Replace(" ", "") <> "" Then - If txbtxtValue.Text.Replace(" ", "") <> "" Then + 'Private Function brotherPrintPlay() As Boolean + ' If txblabelAd.Text.Replace(" ", "") <> "" Then + ' If txbBarValue.Text.Replace(" ", "") <> "" Then + ' If txbtxtValue.Text.Replace(" ", "") <> "" Then - Dim doc As bpac.Document = New bpac.Document - doc.Open(txblabelAd.Text) - Dim usePrinter As Boolean = doc.SetPrinter(txbPrintName.Text, True) + ' Dim doc As bpac.Document = New bpac.Document + ' doc.Open(txblabelAd.Text) + ' Dim usePrinter As Boolean = doc.SetPrinter(txbPrintName.Text, True) - If usePrinter = False Then - errorOut("인쇄오류") - errorGen("프린터가 인쇄할 준비를 하지 못했습니다.") - Return False - End If + ' If usePrinter = False Then + ' errorOut("인쇄오류") + ' errorGen("프린터가 인쇄할 준비를 하지 못했습니다.") + ' Return False + ' End If - For i = 0 To printSerial.Length - 1 - doc.GetObject(txbBarValue.Text).Text = printSerial(i) - doc.GetObject(txbtxtValue.Text).Text = printSerial(i) + ' For i = 0 To printSerial.Length - 1 + ' doc.GetObject(txbBarValue.Text).Text = printSerial(i) + ' doc.GetObject(txbtxtValue.Text).Text = printSerial(i) - doc.StartPrint("", bpac.PrintOptionConstants.bpoDefault) - doc.PrintOut(1, bpac.PrintOptionConstants.bpoDefault) - doc.EndPrint() - Next + ' doc.StartPrint("", bpac.PrintOptionConstants.bpoDefault) + ' doc.PrintOut(1, bpac.PrintOptionConstants.bpoDefault) + ' doc.EndPrint() + ' Next - doc.Close() + ' doc.Close() - Return True - Else - errorOut("인쇄오류") - errorGen("라벨 텍스트를 담당하는 변수를 알 수 없습니다.") - Return False - End If - Else - errorOut("인쇄오류") - errorGen("라벨 바코드를 담당하는 변수를 알 수 없습니다.") - Return False - End If + ' Return True + ' Else + ' errorOut("인쇄오류") + ' errorGen("라벨 텍스트를 담당하는 변수를 알 수 없습니다.") + ' Return False + ' End If + ' Else + ' errorOut("인쇄오류") + ' errorGen("라벨 바코드를 담당하는 변수를 알 수 없습니다.") + ' Return False + ' End If - Else - errorOut("인쇄오류") - errorGen("인쇄할 라벨 파일을 알 수 없습니다. 라벨 파일을 확인하여 주십시오.") - Return False - End If - End Function + ' Else + ' errorOut("인쇄오류") + ' errorGen("인쇄할 라벨 파일을 알 수 없습니다. 라벨 파일을 확인하여 주십시오.") + ' Return False + ' End If + 'End Function Private Function zebraPrintCode(serialCode As String) As String Dim zplCode As String = String.Empty