올리브영 추가

This commit is contained in:
hyelinjung 2026-01-16 18:40:23 +09:00
parent d4ba4afe2e
commit 3299696539
4 changed files with 1085 additions and 761 deletions

File diff suppressed because it is too large Load Diff

View File

@ -196,7 +196,7 @@ Public Class mainForm
Private eventArray(,) As String Private eventArray(,) As String
Private autoUse As Integer Private autoUse As Integer
Private orderSwitch As Boolean = False Private orderSwitch As Boolean = False '' 아마도 ... 출하내용 리스트를 가져오는 작업을 완료했는지 여부
Private workSuccess As Boolean = False '' 작업 성공 여부(초기화 작업) Private workSuccess As Boolean = False '' 작업 성공 여부(초기화 작업)
Private programRunSwitch As Boolean = False Private programRunSwitch As Boolean = False
@ -491,13 +491,13 @@ Public Class mainForm
Return False Return False
End If End If
End Function End Function
'이미 포장건인지 확인
Private Function WorkNowState() As Integer Private Function WorkNowState() As Integer
If rdbAuto2.Checked = True Then If rdbAuto2.Checked = True Then
DBCmd = "SELECT COUNT(Number) FROM " & applySalesDB & " WHERE ConnectPack = '" & playCode & "' AND Weight > 0" DBCmd = "SELECT COUNT(Number) FROM " & applySalesDB & " WHERE ConnectPack = '" & playCode & "' AND Weight > 0"
Else Else
DBCmd = "SELECT COUNT(Number) FROM " & applySalesDB & " WHERE ConnectPack = '" & playCode & "'" DBCmd = "SELECT COUNT(Number) FROM " & applySalesDB & " WHERE ConnectPack = '" & playCode & "'" ''포장되야 하는 패키징 상품이 100개면 100개의
End If End If
Dim worknum As String = DBQueryScalar(DBCmd) Dim worknum As String = DBQueryScalar(DBCmd)
@ -555,13 +555,13 @@ Public Class mainForm
errorGen("ERP코드는 현재 사용할 수 없습니다.") errorGen("ERP코드는 현재 사용할 수 없습니다.")
Return False Return False
Case "MESORDER" Case "MESORDER" ''대량포장
MassValueReset() MassValueReset()
If ckbAPIuse.Checked = True Then If ckbAPIuse.Checked = True Then
If mesCodeCompare() Then If mesCodeCompare() Then ''해당 출하번호가 이미 배송 완료된지 확인
Return False Return False
End If End If
@ -570,7 +570,7 @@ Public Class mainForm
Return False Return False
End If End If
Else Else
If useAPIDirect() Then If useAPIDirect() Then ''패키징 상품 정보 & 주문자 정보 배열 초기화
Return False Return False
End If End If
End If End If
@ -595,7 +595,7 @@ Public Class mainForm
MassProdProcess() MassProdProcess()
If rdbMode2.Checked = True And rdbAuto2.Checked = True Then If rdbMode2.Checked = True And rdbAuto2.Checked = True Then '' 무게 측정인데 사용안함
If weightSelect() Then If weightSelect() Then
errorOut("무게확인불가") errorOut("무게확인불가")
@ -614,7 +614,7 @@ Public Class mainForm
successGen("읽기완료") successGen("읽기완료")
Return True Return True
Case "PRODSCAN" Case "PRODSCAN" '' 대량포장 물건 스캔
If rdbMode2.Checked = True And rdbAuto2.Checked = True Then If rdbMode2.Checked = True And rdbAuto2.Checked = True Then
@ -680,7 +680,7 @@ Public Class mainForm
Return False Return False
End If End If
Else Else ''대량포장
If StartSwitch = False Then If StartSwitch = False Then
@ -699,7 +699,7 @@ Public Class mainForm
Next Next
End If End If
If serialPackCompare() Then If serialPackCompare() Then ''해당 상품의 포장 유무 확인
If serialDupCheck() Then If serialDupCheck() Then
Return False Return False
@ -709,7 +709,7 @@ Public Class mainForm
Return False Return False
End If End If
If searchData() Then If searchData() Then ''해당 상품의 SN DB에서 가지고와서 화면에 표시
If shotComparison() Then If shotComparison() Then
Return False Return False
End If End If
@ -717,7 +717,7 @@ Public Class mainForm
Return False Return False
End If End If
For c = 0 To prodArray.GetLength(1) - 1 For c = 0 To prodArray.GetLength(1) - 1 '' 구성품은 스캔 안해도 PASS
If prodArray(itemCode.type, c) = 1 Then If prodArray(itemCode.type, c) = 1 Then
prodArray(itemCode.chkCount, c) = prodArray(itemCode.count, c) prodArray(itemCode.chkCount, c) = prodArray(itemCode.count, c)
End If End If
@ -810,7 +810,7 @@ Public Class mainForm
txbArrayList(i, txbNameList.targetCount).ForeColor = Color.Blue txbArrayList(i, txbNameList.targetCount).ForeColor = Color.Blue
End If End If
If prodArray(itemCode.serialNum, i) = Nothing Then If prodArray(itemCode.serialNum, i) = Nothing Then '' 검사한 정품번호 등록
prodArray(itemCode.serialNum, i) = playCode prodArray(itemCode.serialNum, i) = playCode
Else Else
prodArray(itemCode.serialNum, i) = prodArray(itemCode.serialNum, i) & "/" & playCode prodArray(itemCode.serialNum, i) = prodArray(itemCode.serialNum, i) & "/" & playCode
@ -863,7 +863,7 @@ Public Class mainForm
If MasPlayFunc() Then If MasPlayFunc() Then
If playCode.Length < stateLength Or playCode.Length = newProdCodeLength Then If playCode.Length < stateLength Or playCode.Length = newProdCodeLength Then
If nowFullCount = tgtFullCount Then If nowFullCount = tgtFullCount Then
If chbUseBarcode.Checked = True Then If chbUseBarcode.Checked = False Then ''true인데 false로 수정함
saveStart() saveStart()
End If End If
End If End If
@ -871,6 +871,7 @@ Public Class mainForm
End If End If
Else Else
'품목에 대해 작업을 한경우
If workSuccess = True Or programRunSwitch = False Then If workSuccess = True Or programRunSwitch = False Then
resetPlay() resetPlay()
programRunSwitch = True programRunSwitch = True
@ -914,9 +915,10 @@ Public Class mainForm
End If End If
If packingRun() Then If packingRun() 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 nowFullCount = tgtFullCount Then
If chbUseBarcode.Checked = True Then If chbUseBarcode.Checked = False Then ''true인데 false로 수정함
saveStart() saveStart()
End If End If
End If End If
@ -940,7 +942,7 @@ Public Class mainForm
End Sub End Sub
Private Sub saveStart() Private Sub saveStart()
If scanInfoReg() Then If scanInfoReg() Then '' 무게 ,송장 포함해서 db 저장
If rdbMode2.Checked = True And rdbNew.Checked = True Then If rdbMode2.Checked = True And rdbNew.Checked = True Then
WorkUpdate(WorkCount + 1) WorkUpdate(WorkCount + 1)
@ -988,10 +990,10 @@ Public Class mainForm
End Sub End Sub
Private Function useAPIDirect() As Boolean Private Function useAPIDirect() As Boolean
If stateCodeRun_API() Then If stateCodeRun_API() Then '' 품목에 대한 mes 관련 정보 배열 저장
mesShotSearch() mesShotSearch() '' 듀얼 소닉 계열의 품목의 shot 확인
If stateinfoRun_API() Then If stateinfoRun_API() Then ''수신자 정보 & 구매처 정보
Return False Return False
End If End If
End If End If
@ -1025,6 +1027,7 @@ Public Class mainForm
End Try End Try
End Function End Function
'mes에서 대량 포장 데이터 전부 가지고 오기
Private Function stateCodeRun_API() As Boolean Private Function stateCodeRun_API() As Boolean
Try Try
Const colCount As Int16 = 4 Const colCount As Int16 = 4
@ -1039,9 +1042,9 @@ Public Class mainForm
For col = 0 To colCount - 1 For col = 0 To colCount - 1
Select Case col Select Case col
Case directData.code Case directData.code
prodArray(itemCode.code, row) = pgDataQuery(dataSetCount) prodArray(itemCode.code, row) = pgDataQuery(dataSetCount) '' 패키징pk
Case directData.name Case directData.name
prodArray(itemCode.name, row) = pgDataQuery(dataSetCount) prodArray(itemCode.name, row) = pgDataQuery(dataSetCount) '' 패키징 상품 품목이 문자열 덩어리로 넘어온다
Case directData.count Case directData.count
prodArray(itemCode.count, row) = pgDataQuery(dataSetCount) prodArray(itemCode.count, row) = pgDataQuery(dataSetCount)
Case directData.id Case directData.id
@ -1264,9 +1267,9 @@ Public Class mainForm
Private Sub MassProdProcess() Private Sub MassProdProcess()
For i = 0 To prodArray.GetLength(1) - 1 For i = 0 To prodArray.GetLength(1) - 1
tgtFullCount += prodArray(itemCode.count, i) tgtFullCount += prodArray(itemCode.count, i) ''검사해야할 모든 수량 구함
If prodArray(itemCode.face, i) = "-1" And prodArray(itemCode.eye, i) = "-1" Then If prodArray(itemCode.face, i) = "-1" And prodArray(itemCode.eye, i) = "-1" Then ''기기가 아닌경우
prodArray(itemCode.chkCount, i) = prodArray(itemCode.count, i) prodArray(itemCode.chkCount, i) = prodArray(itemCode.count, i)
prodArray(itemCode.type, i) = 1 prodArray(itemCode.type, i) = 1
@ -1357,14 +1360,17 @@ Public Class mainForm
successGen("읽기완료") successGen("읽기완료")
Return True Return True
'일반포장
Case "MESORDER" Case "MESORDER"
If ckbAPIuse.Checked = True Then If ckbAPIuse.Checked = True Then
'이미 출하됐는지 확인
If mesCodeCompare() Then If mesCodeCompare() Then
Return False Return False
End If End If
If rdbMesDbAPI.Checked = True Then If rdbMesDbAPI.Checked = True Then
'api를 사용해 데이터 파싱
If useAPIRun() Then If useAPIRun() Then
Return False Return False
End If End If
@ -1386,6 +1392,7 @@ Public Class mainForm
End If End If
'출내품목 내역 리스트
If ListSetting() Then If ListSetting() Then
errorOut("등록오류") errorOut("등록오류")
errorGen("품목 리스트를 생성하는 과정에서 오류가 발생하였습니다.") errorGen("품목 리스트를 생성하는 과정에서 오류가 발생하였습니다.")
@ -1399,7 +1406,7 @@ Public Class mainForm
successGen("읽기완료") successGen("읽기완료")
Return True Return True
Case "PRODSCAN" Case "PRODSCAN" ''상품 스캔
If rdbMode2.Checked = True And rdbAuto2.Checked = True Then If rdbMode2.Checked = True And rdbAuto2.Checked = True Then
@ -1458,16 +1465,18 @@ Public Class mainForm
End If End If
Else Else
'정품시리얼번호 파싱해 이미 포장한 상품인지 확인(포장 pk는 구매 여러 기기 가장 sn 대표하기 때문에 포장 pk로 확인을 안해서 사용)
If serialPackCompare() Then If serialPackCompare() Then
If serialDupCheck() Then If serialDupCheck() Then
Return False Return False
End If End If
'정품시리얼 번호 파싱해서 품목코드 확인
If prodCodeSearch() Then If prodCodeSearch() Then
Return False Return False
End If End If
''해당 기기의 db 정보 로딩
If searchData() Then If searchData() Then
If shotComparison() Then If shotComparison() Then
Return False Return False
@ -1475,7 +1484,7 @@ Public Class mainForm
Else Else
Return False Return False
End If End If
''스캔한 기기의 같은 prod 정보를 모두 db에서 불러와서 순회로 맞는 품목제품 찾음
If stateScanCompare() Then If stateScanCompare() Then
successGen("처리완료") successGen("처리완료")
Return True Return True
@ -1490,17 +1499,17 @@ Public Class mainForm
Case "COMSCAN" Case "COMSCAN"
Dim comCode As String = comCodeSearch() Dim comCode As String = comCodeSearch() '' 컴포넌트 상품코드 확인
If comCode = "False" Then If comCode = "False" Then
Return False Return False
End If End If
If comCodeCompare() Then If comCodeCompare() Then '' 컴포넌트 prodcode setInfo배열저장
Return False Return False
End If End If
If stateComCompare(comCode) Then If stateComCompare(comCode) Then ''수량 + 카운트
successGen("처리완료") successGen("처리완료")
Return True Return True
Else Else
@ -1879,8 +1888,8 @@ Public Class mainForm
errorGen("존재하지 않는 모델 번호입니다.") errorGen("존재하지 않는 모델 번호입니다.")
Return False Return False
End If End If
'이미 포장으로 등록된 상품을 다시 포장하지 않게 확인하기 위해 검색할 컬럼명 확인
DBCmd = "SELECT SalesPackingSerialColNm FROM " & applyPlistDB & " WHERE ModelNum = " & modelNum & " AND TypeNum = " & typeNum & " GROUP BY ProdCode" DBCmd = "SELECT SalesPackingSerialColNm FROM " & applyPlistDB & " WHERE ModelNum = '" & modelNum & "' AND TypeNum = " & typeNum & " GROUP BY ProdCode"
If DBQueryReader(DBCmd) Then If DBQueryReader(DBCmd) Then
commandStr = sqlDataQuery(0) commandStr = sqlDataQuery(0)
Else Else
@ -1889,6 +1898,7 @@ Public Class mainForm
Return False Return False
End If End If
'이미 포장으로 등록된 상품을 다시 포장하지 않게 확인
DBCmd = "SELECT COUNT(" & commandStr & ") FROM " & applySalesDB & DBCmd = "SELECT COUNT(" & commandStr & ") FROM " & applySalesDB &
" WHERE " & commandStr & " LIKE '%" & playCode & "%'" & " WHERE " & commandStr & " LIKE '%" & playCode & "%'" &
" AND PackingCode NOT LIKE 'null_%'" " AND PackingCode NOT LIKE 'null_%'"
@ -2048,7 +2058,7 @@ Public Class mainForm
setFace = setInfo(setInfoList.midshot) setFace = setInfo(setInfoList.midshot)
setEye = setInfo(setInfoList.botshot) setEye = setInfo(setInfoList.botshot)
Else Else
If setInfo(setInfoList.topSerial) <> "NULL" Then If setInfo(setInfoList.topSerial) <> "NULL" Then '' 일체형
setFace = setInfo(setInfoList.topshot) setFace = setInfo(setInfoList.topshot)
setEye = "0" setEye = "0"
ElseIf setInfo(setInfoList.midSerial) <> "NULL" Then ElseIf setInfo(setInfoList.midSerial) <> "NULL" Then
@ -2066,6 +2076,7 @@ Public Class mainForm
faceCShot = setFace faceCShot = setFace
eyeCshot = setEye eyeCshot = setEye
'' 기기의 샷수를 확인해 해당하는 품목에 상품 코드 get
For i = 0 To ScanArray.GetLength(1) - 1 For i = 0 To ScanArray.GetLength(1) - 1
If ScanArray(scanList.faceshot, i) = faceCShot And ScanArray(scanList.eyeshot, i) = eyeCshot Then If ScanArray(scanList.faceshot, i) = faceCShot And ScanArray(scanList.eyeshot, i) = eyeCshot Then
runCount = runShotFunc(i, runCount) runCount = runShotFunc(i, runCount)
@ -2160,12 +2171,12 @@ Public Class mainForm
If rdbMode1.Checked = True Or (rdbMode2.Checked = True And rdbAuto1.Checked = True) Then If rdbMode1.Checked = True Or (rdbMode2.Checked = True And rdbAuto1.Checked = True) Then
packingCode = packingCode_Choice() packingCode = packingCode_Choice() ''디비에 저장될 pk 번호 정하기(정품번호 / 오더번호)
If packingCode = "False" Then If packingCode = "False" Then
Return False Return False
End If End If
''패킹코드 중복 확인
If dbPackNumCompare(packingCode) Then If dbPackNumCompare(packingCode) Then
Return False Return False
End If End If
@ -2174,20 +2185,20 @@ Public Class mainForm
txbPacking.Text = packingCode txbPacking.Text = packingCode
' 무게측정 ' 무게측정 -> 포장된 무게 return
If weightRun() = False Then If weightRun() = False Then
Return False Return False
End If End If
' 송장번호 지정
If invDataGet() = False Then If invDataGet() = False Then
Return False Return False
End If End If
Else Else
If weightSelect() Then If weightSelect() Then ''패키징 TOTAL 무게
Return True Return True
End If End If
End If End If
' 패킹 db & 오더 db 저장
If dbRegType(packingCode) Then If dbRegType(packingCode) Then
Return False Return False
End If End If
@ -2224,13 +2235,13 @@ Public Class mainForm
Private Function countSaveRun(packingCode As String) As Boolean Private Function countSaveRun(packingCode As String) As Boolean
If saveNowCount() Then '' 포장 수량 저장 If saveNowCount() Then '' 포장 수량 prod 별로 배열 저장
failDataReset(packingCode) failDataReset(packingCode)
Return False ''실패 Return False ''실패
End If End If
If rdbMode2.Checked = False Or rdbAuto2.Checked = False Then If rdbMode2.Checked = False Or rdbAuto2.Checked = False Then ''일반 포장 & 대량 포장
If ckbNEWDB.Checked = True Then If ckbNEWDB.Checked = True Then
If packingDBSave(packingCode) Then '' 패킹 데이터 수량 저장 If packingDBSave(packingCode) Then '' 패킹 데이터 수량 저장
@ -2243,19 +2254,19 @@ Public Class mainForm
Return False Return False
End If End If
Else Else
If packingDBSaveOld(packingCode) Then If packingDBSaveOld(packingCode) Then ''패킹 테이블에서 포장된 상품 수량 cnt 저장
failDataReset(packingCode) failDataReset(packingCode)
Return False Return False
End If End If
If packingDBSerialOld(packingCode) Then If packingDBSerialOld(packingCode) Then ''패킹 테이블에서 포장된 상품 시리얼 넘버 저장
failDataReset(packingCode) failDataReset(packingCode)
Return False Return False
End If End If
End If End If
End If End If
If saveDBReg() Then '' db 개수 저장 If saveDBReg() Then '' 카운트 테이블 저장
failDataReset(packingCode) failDataReset(packingCode)
Return False Return False
End If End If
@ -2469,11 +2480,11 @@ Public Class mainForm
End Function End Function
Private Function saveDBReg() As Boolean Private Function saveDBReg() As Boolean
If saveDBInsert() Then If saveDBInsert() Then '' 금일 수량 확인
Return True Return True
End If End If
saveDBCount() saveDBCount() '' 금일 수량 + 카운트
If saveDBUpdate() Then If saveDBUpdate() Then
Return True Return True
@ -2616,9 +2627,9 @@ Public Class mainForm
DBCmd = "SELECT PackingCount " & query_packing_count & " FROM " & applyCountDB & " WHERE DATETIME = '" & nowToday & "'" DBCmd = "SELECT PackingCount " & query_packing_count & " FROM " & applyCountDB & " WHERE DATETIME = '" & nowToday & "'"
countCommandFunc(countSaveList.normal) countCommandFunc(countSaveList.normal) '' 금일 수량 저장 컬럼 배열 저장
Else Else
If rdbAuto1.Checked = True Then If rdbAuto1.Checked = True Then '' 포장 금일 수량 기기+수량 컬럼명 확인
Dim query_packing_count As String = Nothing Dim query_packing_count As String = Nothing
For i = 1 To item_product_max_index For i = 1 To item_product_max_index
@ -2663,7 +2674,7 @@ Public Class mainForm
End If End If
End If End If
'' 수량 컬럼에 맞게 카운트 배열에 저장(packing pd1)
If DBQueryReader(DBCmd) Then If DBQueryReader(DBCmd) Then
For i = 0 To countCommand.Length - 1 For i = 0 To countCommand.Length - 1
If i <= item_product_max_index Then If i <= item_product_max_index Then
@ -2921,6 +2932,7 @@ Public Class mainForm
End If End If
End Function End Function
'포장하는 상품의 개수 배열에 저장
Private Function saveNowCount() As Boolean Private Function saveNowCount() As Boolean
clearNowCount() clearNowCount()
@ -2931,6 +2943,7 @@ Public Class mainForm
End If End If
Next Next
'' 이게 뭔지....
item_product_list(prodDB.packingCount).cnt += 1 item_product_list(prodDB.packingCount).cnt += 1
Return False Return False
@ -2963,7 +2976,7 @@ Public Class mainForm
If ckbWeight.Checked = True Then If ckbWeight.Checked = True Then
If rdbAuto2.Checked = False Then If rdbAuto2.Checked = False Then
If weightSelect() Then If weightSelect() Then '' 해당 주문의 모든 품목 무게
Return False Return False
End If End If
End If End If
@ -2978,13 +2991,14 @@ Public Class mainForm
weightOkNg = False weightOkNg = False
weightStart = True weightStart = True
If weightForm.ShowDialog() = DialogResult.OK Then 'If weightForm.ShowDialog() = DialogResult.OK Then ''임시 주석 26-01-14
' Return True
'Else
' errorOut("무게불일치")
' Return False
'End If
weightResult = 0
Return True Return True
Else
errorOut("무게불일치")
Return False
End If
Else Else
weightForm.ShowDialog() weightForm.ShowDialog()
If weightOkNg = True Then If weightOkNg = True Then
@ -3015,7 +3029,7 @@ Public Class mainForm
weightSum = 0 weightSum = 0
For i = 0 To prodArray.GetLength(1) - 1 For i = 0 To prodArray.GetLength(1) - 1
If prodArray(itemCode.type, i) = 0 Then If prodArray(itemCode.type, i) = 0 Then '' 패키징 품목중 기기
dbFrom = applyPlistDB dbFrom = applyPlistDB
Else Else
dbFrom = applyClistDB dbFrom = applyClistDB
@ -3054,8 +3068,8 @@ Public Class mainForm
Return True Return True
End If End If
Else Else
If dbPackNumReg(choiceNum) Then If dbPackNumReg(choiceNum) Then ''일반(pk , 무게 디비 저장)
If orderSave(choiceNum) Then If orderSave(choiceNum) Then ''order 테이블 저장 mes 송장 업데이트
Return False Return False
Else Else
failDataReset(choiceNum) failDataReset(choiceNum)
@ -3124,7 +3138,7 @@ Public Class mainForm
If loginForm.loginUse = True And ckbAPIuse.Checked = True Then If loginForm.loginUse = True And ckbAPIuse.Checked = True Then
apiData(apiDataList.regData) = Mid(apiData(apiDataList.regData), 1, InStr(apiData(apiDataList.regData), " ") - 1) apiData(apiDataList.regData) = Mid(apiData(apiDataList.regData), 1, InStr(apiData(apiDataList.regData), " ") - 1)
For i = 0 To prodArray.GetLength(1) - 1 For i = 0 To prodArray.GetLength(1) - 1 ''주문 정보는 행으로 저장됨
DBCmd = "INSERT INTO " & applyOrderDB & "(DATETIME,Order_Code,DATE,Account_Code,Account_Name,Orderer_Code,Orderer_Name,Receiver_Name,Phone_Number,ZipCode,Address,Shipment_Date,Item_Code,Item_Name,Item_Count,Apply_Face,Apply_Eye,Invoice_Number,Packing_Code,Serial_Number,release_state) VALUE(Now(),'" & orderCode & "','" & apiData(apiDataList.regData) & "','" & apiData(apiDataList.accountCode) & "','" & apiData(apiDataList.accountName) & "','" & apiData(apiDataList.ordererCode) & "','" & apiData(apiDataList.ordererName) & "','" & apiData(apiDataList.ordererName) & "','" & apiData(apiDataList.phone) & "','" & apiData(apiDataList.zip) & "','" & apiData(apiDataList.address) & "','" & nowToday & "','" & prodArray(itemCode.code, i) & "','" & prodArray(itemCode.name, i) & "','" & prodArray(itemCode.count, i) & "','" & prodArray(itemCode.face, i) & "','" & prodArray(itemCode.eye, i) & "'," & invParsing & ",'" & choiceNum & "','" & prodArray(itemCode.serialNum, i) & "','release')" DBCmd = "INSERT INTO " & applyOrderDB & "(DATETIME,Order_Code,DATE,Account_Code,Account_Name,Orderer_Code,Orderer_Name,Receiver_Name,Phone_Number,ZipCode,Address,Shipment_Date,Item_Code,Item_Name,Item_Count,Apply_Face,Apply_Eye,Invoice_Number,Packing_Code,Serial_Number,release_state) VALUE(Now(),'" & orderCode & "','" & apiData(apiDataList.regData) & "','" & apiData(apiDataList.accountCode) & "','" & apiData(apiDataList.accountName) & "','" & apiData(apiDataList.ordererCode) & "','" & apiData(apiDataList.ordererName) & "','" & apiData(apiDataList.ordererName) & "','" & apiData(apiDataList.phone) & "','" & apiData(apiDataList.zip) & "','" & apiData(apiDataList.address) & "','" & nowToday & "','" & prodArray(itemCode.code, i) & "','" & prodArray(itemCode.name, i) & "','" & prodArray(itemCode.count, i) & "','" & prodArray(itemCode.face, i) & "','" & prodArray(itemCode.eye, i) & "'," & invParsing & ",'" & choiceNum & "','" & prodArray(itemCode.serialNum, i) & "','release')"
If DBCommand(DBCmd) = False Then If DBCommand(DBCmd) = False Then
errorOut("등록오류") errorOut("등록오류")
@ -3137,9 +3151,10 @@ Public Class mainForm
' Return False 20241122 수정 ' Return False 20241122 수정
' End If ' End If
If mesDataReg() Then ''송장번호 mes 업데이트
Return False 'If mesDataReg() Then ''임시 주석처리 26-01-14
End If ' Return False
'End If
Else Else
If setCodeUse = True Then If setCodeUse = True Then
@ -3290,7 +3305,7 @@ Public Class mainForm
End If End If
End If End If
''해당 품목 송장번호 mes 업로드
apiResult = apiRequest_PUT(jsonData, prodArray(itemCode.id, i)) apiResult = apiRequest_PUT(jsonData, prodArray(itemCode.id, i))
If apiResult = "-1" Then If apiResult = "-1" Then
@ -3443,7 +3458,7 @@ Public Class mainForm
End Function End Function
Private Function dbPackNumReg(choiceNum As String) As Boolean Private Function dbPackNumReg(choiceNum As String) As Boolean
If rdbMode2.Checked = True Then If rdbMode2.Checked = True Then ''대량포장
DBCmd = "INSERT INTO " & applySalesDB & "(PackingCode,TargetWeight,ConnectPack) VALUE('" & choiceNum & "','" & weightSum & "','" & SaveOrderName & "')" DBCmd = "INSERT INTO " & applySalesDB & "(PackingCode,TargetWeight,ConnectPack) VALUE('" & choiceNum & "','" & weightSum & "','" & SaveOrderName & "')"
Else Else
DBCmd = "INSERT INTO " & applySalesDB & "(PackingCode,Weight) VALUE('" & choiceNum & "','" & weightResult & "')" DBCmd = "INSERT INTO " & applySalesDB & "(PackingCode,Weight) VALUE('" & choiceNum & "','" & weightResult & "')"
@ -3500,8 +3515,8 @@ Public Class mainForm
If codeData <> Nothing Then If codeData <> Nothing Then
Dim slashCount As Int16 = UBound(Split(codeData, "/")) Dim slashCount As Int16 = UBound(Split(codeData, "/"))
For n = 0 To slashCount For n = 0 To slashCount
If slashCount = 0 Then If slashCount = 0 Then ''일반 포장인 경우
selectData = codeData selectData = codeData ''바코드 넘버
Else Else
If InStr(codeData, "/") > 0 Then If InStr(codeData, "/") > 0 Then
selectData = Mid(codeData, 1, InStr(codeData, "/") - 1) selectData = Mid(codeData, 1, InStr(codeData, "/") - 1)
@ -3512,7 +3527,7 @@ Public Class mainForm
End If End If
If choiceData <> Nothing Then If choiceData <> Nothing Then
If choiceData > selectData Then If choiceData > selectData Then ''가장 작은 값을 대표 번호로 선택하기 위한
choiceData = selectData choiceData = selectData
End If End If
Else Else
@ -3525,10 +3540,10 @@ Public Class mainForm
If choiceData = Nothing Then If choiceData = Nothing Then
Return orderCode Return orderCode
Else Else
If choiceData.Length = oldProdCodeLength Or choiceData.Length = newProdCodeLength Then If choiceData.Length = oldProdCodeLength Or choiceData.Length = newProdCodeLength Then ''최종 선택된 번호가 정품번호일때
Return choiceData Return choiceData
Else Else
Return orderCode Return orderCode ''지금 포장에 기기가 존재하지 않을경우 ->출하번호
End If End If
End If End If
@ -3544,17 +3559,17 @@ Public Class mainForm
Const regType As Int16 = 1 Const regType As Int16 = 1
Try Try
For i = 0 To prodArray.GetLength(1) - 1 For i = 0 To prodArray.GetLength(1) - 1
If InStr(comCode, prodArray(itemCode.code, i)) > 0 Then If InStr(comCode, prodArray(itemCode.code, i)) > 0 Then '' 품목 코드가 맞는지 확인
If prodArray(itemCode.count, i) = prodArray(itemCode.chkCount, i) Then If prodArray(itemCode.count, i) = prodArray(itemCode.chkCount, i) Then
MsgBox("더이상 포장할 필요가 없는 제품입니다.", vbCritical) MsgBox("더이상 포장할 필요가 없는 제품입니다.", vbCritical)
Return False Return False
End If End If
prodArray(itemCode.chkCount, i) += 1 prodArray(itemCode.chkCount, i) += 1 '' 품목마다 지금까지 포장한 수량
tgtFullCount += 1 tgtFullCount += 1
txbArrayList(i, txbNameList.targetCount).Text = prodArray(itemCode.chkCount, i) txbArrayList(i, txbNameList.targetCount).Text = prodArray(itemCode.chkCount, i)
If prodArray(itemCode.count, i) = prodArray(itemCode.chkCount, i) Then If prodArray(itemCode.count, i) = prodArray(itemCode.chkCount, i) Then ''모든 수량 포장 완료
txbArrayList(i, txbNameList.name).BackColor = Color.Green txbArrayList(i, txbNameList.name).BackColor = Color.Green
txbArrayList(i, txbNameList.nowCount).BackColor = Color.Green txbArrayList(i, txbNameList.nowCount).BackColor = Color.Green
txbArrayList(i, txbNameList.targetCount).BackColor = Color.Green txbArrayList(i, txbNameList.targetCount).BackColor = Color.Green
@ -3566,7 +3581,7 @@ Public Class mainForm
txbArrayList(i, txbNameList.targetCount).ForeColor = Color.Blue txbArrayList(i, txbNameList.targetCount).ForeColor = Color.Blue
End If End If
prodArray(itemCode.serialNum, i) = playCode prodArray(itemCode.serialNum, i) = playCode '' 바코드 넘버 저장
prodArray(itemCode.type, i) = regType prodArray(itemCode.type, i) = regType
prodArray(itemCode.prodCode, i) = setInfo(setInfoList.prodCode) prodArray(itemCode.prodCode, i) = setInfo(setInfoList.prodCode)
@ -3620,7 +3635,7 @@ Public Class mainForm
Try Try
For i = 0 To prodArray.GetLength(1) - 1 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 에서 식으로 변경 If prodArray(itemCode.code, i) = scanCode(n) Then '' instr 에서 식으로 변경
If prodArray(itemCode.count, i) = prodArray(itemCode.chkCount, i) Then If prodArray(itemCode.count, i) = prodArray(itemCode.chkCount, i) Then
@ -3654,7 +3669,7 @@ Public Class mainForm
If prodArray(itemCode.serialNum, i) = Nothing Then If prodArray(itemCode.serialNum, i) = Nothing Then
prodArray(itemCode.serialNum, i) = playCode prodArray(itemCode.serialNum, i) = playCode
Else Else
prodArray(itemCode.serialNum, i) = prodArray(itemCode.serialNum, i) & "/" & playCode prodArray(itemCode.serialNum, i) = prodArray(itemCode.serialNum, i) & "/" & playCode ''대량포장인경우
End If End If
prodArray(itemCode.type, i) = regType prodArray(itemCode.type, i) = regType
@ -3700,6 +3715,7 @@ Public Class mainForm
Private Function codeParsing() As String Private Function codeParsing() As String
Try Try
'출하번호
If playCode.Length >= stateLength And playCode.Length <> newProdCodeLength Then If playCode.Length >= stateLength And playCode.Length <> newProdCodeLength Then
setCodeUse = False setCodeUse = False
@ -3718,10 +3734,11 @@ Public Class mainForm
End If End If
End If End If
Else Else
'정품번호
If orderSwitch = True Then If orderSwitch = True Then
If playCode.Length = oldProdCodeLength Or playCode.Length = newProdCodeLength Then If playCode.Length = oldProdCodeLength Or playCode.Length = newProdCodeLength Or playCode.Length = 13 Then
Return "PRODSCAN" Return "PRODSCAN"
ElseIf playCode.Length > comCodeLength Then ElseIf playCode.Length > comCodeLength Then ''컴포넌트
Return "COMSCAN" Return "COMSCAN"
Else Else
Return "LENGTHERROR" Return "LENGTHERROR"
@ -3747,12 +3764,13 @@ Public Class mainForm
setInfo(i) = Nothing setInfo(i) = Nothing
Next Next
''스캔한 정품번호가 가지고 있는(예_ 얼굴 카트리지 ) 모든 sn 저장 - setinfo
If serialSearch() Then If serialSearch() Then
For i = 0 To serialCount - 1 For i = 0 To serialCount - 1
If setInfo(i) <> "NULL" Then If setInfo(i) <> "NULL" Then
If shotSearch(i) Then If shotSearch(i) Then '' 현재 기기의 샷수 확인후 배열 저장 setinfo
If typeSearch(i) Then If typeSearch(i) Then ''기기의 모델 정보 배열 저장 setinfo
Return False Return False
End If End If
Else Else
@ -3762,6 +3780,7 @@ Public Class mainForm
setInfo(i + serialShot) = "NULL" setInfo(i + serialShot) = "NULL"
End If End If
Next Next
''해당 기기의 sn 정보 화면 세팅
setInfoOut() setInfoOut()
Return True Return True
@ -3797,7 +3816,7 @@ Public Class mainForm
Private Function typeSearch(type As Int16) As Boolean Private Function typeSearch(type As Int16) As Boolean
Const queryCount As Int16 = 3 Const queryCount As Int16 = 3
''분리형 set
If setInfo(setInfoList.topSerial) <> "NULL" And setInfo(setInfoList.midSerial) <> "NULL" And setInfo(setInfoList.botSerial) <> "NULL" Then If setInfo(setInfoList.topSerial) <> "NULL" And setInfo(setInfoList.midSerial) <> "NULL" And setInfo(setInfoList.botSerial) <> "NULL" Then
If type = setInfoList.topSerial Then If type = setInfoList.topSerial Then
DBCmd = "SELECT Model,Abroad,Agency FROM " & applyDivDB & " WHERE Product_SN = '" & setInfo(type) & "'" DBCmd = "SELECT Model,Abroad,Agency FROM " & applyDivDB & " WHERE Product_SN = '" & setInfo(type) & "'"
@ -3852,6 +3871,8 @@ Public Class mainForm
End If End If
If deviceTypeCode = "D" Then '분리형 디바이스 : PRO, LUX, ALPHA If deviceTypeCode = "D" Then '분리형 디바이스 : PRO, LUX, ALPHA
'분리형이면서 set인경우 -> 모든 타입의 카트리지 포함
If typeNum = typeList.prodSet Then If typeNum = typeList.prodSet Then
DBCmd = "SELECT FaceCart_SN,EyeCart_SN FROM " & applyProdDB & " WHERE Product_SN = '" & playCode & "'" DBCmd = "SELECT FaceCart_SN,EyeCart_SN FROM " & applyProdDB & " WHERE Product_SN = '" & playCode & "'"
If DBQueryReader(DBCmd) Then If DBQueryReader(DBCmd) Then
@ -3895,7 +3916,7 @@ Public Class mainForm
End Function End Function
Private Function shotSearch(type As Int16) As Boolean Private Function shotSearch(type As Int16) As Boolean
''분리형 set
If setInfo(setInfoList.topSerial) <> "NULL" And setInfo(setInfoList.midSerial) <> "NULL" And setInfo(setInfoList.botSerial) <> "NULL" Then If setInfo(setInfoList.topSerial) <> "NULL" And setInfo(setInfoList.midSerial) <> "NULL" And setInfo(setInfoList.botSerial) <> "NULL" Then
If type = setInfoList.topSerial Then If type = setInfoList.topSerial Then
DBCmd = "SELECT FW_VER FROM " & applyDivDB & " WHERE Product_SN = '" & setInfo(type) & "'" DBCmd = "SELECT FW_VER FROM " & applyDivDB & " WHERE Product_SN = '" & setInfo(type) & "'"
@ -3962,10 +3983,11 @@ Public Class mainForm
ElseIf playCode.Length = newProdCodeLength Then '16자리 제품시리얼번호 ElseIf playCode.Length = newProdCodeLength Then '16자리 제품시리얼번호
codeColor = Mid(playCode, 3, 1) codeColor = Mid(playCode, 3, 1)
End If End If
'포장할 기기가 주문한 품목이 맞는지 확인
DBCmd = "SELECT ItemCode,ProdCode,FaceShot,EyeShot FROM " & applyPlistDB & " WHERE ModelNum = '" & modelNum & "' AND TypeNum = '" & typeNum & "' AND ColorNum = '" & codeColor & "'" DBCmd = "SELECT ItemCode,ProdCode,FaceShot,EyeShot FROM " & applyPlistDB & " WHERE ModelNum = '" & modelNum & "' AND TypeNum = '" & typeNum & "' AND ColorNum = '" & codeColor & "'"
If DBQueryReader(DBCmd) Then If DBQueryReader(DBCmd) Then
Dim sqlCount As Integer = sqlDataQuery.Length Dim sqlCount As Integer = sqlDataQuery.Length
'배열 생성 (3,같은 품목의 개수) -> 배열 초기화 -> 4행, 품목개수열
ReDim ScanArray(scanList.eyeshot, (sqlCount / scanList.maxscan) - 1) ReDim ScanArray(scanList.eyeshot, (sqlCount / scanList.maxscan) - 1)
For i = 0 To (sqlCount / scanList.maxscan) - 1 For i = 0 To (sqlCount / scanList.maxscan) - 1
For cnt = 0 To scanList.eyeshot For cnt = 0 To scanList.eyeshot
@ -3988,6 +4010,7 @@ Public Class mainForm
End Function End Function
Private Function mesRunning() As Boolean Private Function mesRunning() As Boolean
'쿼리스트링에 사용할 날짜 파싱
If mesDateSet() Then If mesDateSet() Then
errorOut("등록오류") errorOut("등록오류")
errorGen("MES 형식과 맞지 않는 코드 번호 입니다.") errorGen("MES 형식과 맞지 않는 코드 번호 입니다.")
@ -4001,11 +4024,11 @@ Public Class mainForm
errorGen("등록된 데이터가 존재하지 않습니다.") errorGen("등록된 데이터가 존재하지 않습니다.")
Return False Return False
End If End If
'주문 내역 파싱
If mesParsing(apiResult) Then If mesParsing(apiResult) Then
Return False Return False
End If End If
'구매한 품목의 카트리지 타입 파싱
mesShotSearch() mesShotSearch()
Return True Return True
End Function End Function
@ -4066,33 +4089,43 @@ Public Class mainForm
Return True Return True
End If End If
'해당 날짜에 해당하는 모든 주문 정보
Dim jsArray = JArray.Parse(pData) Dim jsArray = JArray.Parse(pData)
For cnt = 0 To jsArray.Count - 1 For cnt = 0 To jsArray.Count - 1
'주문코드 주문자 정보
Dim orderInfo As String = jsArray(cnt)(apiCommand(parsingCode.orderDetail)).ToString Dim orderInfo As String = jsArray(cnt)(apiCommand(parsingCode.orderDetail)).ToString
'주문 취소 확인
If jsArray(cnt)(apiCommand(parsingCode.state)).ToString <> "canceled" Then If jsArray(cnt)(apiCommand(parsingCode.state)).ToString <> "canceled" Then
If orderInfo <> Nothing Then If orderInfo <> Nothing Then
jQuery = JObject.Parse(orderInfo) jQuery = JObject.Parse(orderInfo)
orderInfo = jQuery.SelectToken(apiCommand(parsingCode.orderSheet)).ToString orderInfo = jQuery.SelectToken(apiCommand(parsingCode.orderSheet)).ToString
jQuery = JObject.Parse(orderInfo) jQuery = JObject.Parse(orderInfo)
'주문번호(출하번호)
pData = jQuery.SelectToken(apiCommand(parsingCode.code)).ToString pData = jQuery.SelectToken(apiCommand(parsingCode.code)).ToString
If pData = playCode Then If pData = playCode Then
'하나의 출하에 여러개의 품목이 주문된 경우 json으로 오기때문에 배열을 늘려야함
ReDim Preserve prodArray(itemCode.id, dataCount) ReDim Preserve prodArray(itemCode.id, dataCount)
' json의 분류 id
prodArray(itemCode.id, dataCount) = jsArray(cnt)(apiCommand(parsingCode.id)).ToString prodArray(itemCode.id, dataCount) = jsArray(cnt)(apiCommand(parsingCode.id)).ToString
apiData(apiDataList.refer) = jsArray(cnt)(apiCommand(parsingCode.refer)).ToString apiData(apiDataList.refer) = jsArray(cnt)(apiCommand(parsingCode.refer)).ToString
'주문자 개인정보
apiData(apiDataList.ordererCode) = jQuery.SelectToken(apiCommand(parsingCode.ordererCode)).ToString apiData(apiDataList.ordererCode) = jQuery.SelectToken(apiCommand(parsingCode.ordererCode)).ToString
apiData(apiDataList.ordererName) = jQuery.SelectToken(apiCommand(parsingCode.ordererName)).ToString apiData(apiDataList.ordererName) = jQuery.SelectToken(apiCommand(parsingCode.ordererName)).ToString
apiData(apiDataList.phone) = jQuery.SelectToken(apiCommand(parsingCode.phone)).ToString apiData(apiDataList.phone) = jQuery.SelectToken(apiCommand(parsingCode.phone)).ToString
apiData(apiDataList.zip) = jQuery.SelectToken(apiCommand(parsingCode.zip)).ToString apiData(apiDataList.zip) = jQuery.SelectToken(apiCommand(parsingCode.zip)).ToString
apiData(apiDataList.address) = Replace(jQuery.SelectToken(apiCommand(parsingCode.address)).ToString, "'", "\'") apiData(apiDataList.address) = Replace(jQuery.SelectToken(apiCommand(parsingCode.address)).ToString, "'", "\'")
'해당 품목 구매 수량
prodArray(itemCode.count, dataCount) = jsArray(cnt)(apiCommand(parsingCode.itemcount)).ToString prodArray(itemCode.count, dataCount) = jsArray(cnt)(apiCommand(parsingCode.itemcount)).ToString
apiData(apiDataList.regData) = jsArray(cnt)(apiCommand(parsingCode.regDate)).ToString apiData(apiDataList.regData) = jsArray(cnt)(apiCommand(parsingCode.regDate)).ToString
'구매 파트너쉽 회사 정보
Dim parterInfo As String = jsArray(cnt)(apiCommand(parsingCode.accuount)).ToString Dim parterInfo As String = jsArray(cnt)(apiCommand(parsingCode.accuount)).ToString
If parterInfo <> Nothing Then If parterInfo <> Nothing Then
jQuery = JObject.Parse(parterInfo) jQuery = JObject.Parse(parterInfo)
apiData(apiDataList.accountCode) = jQuery.SelectToken(apiCommand(parsingCode.code)).ToString apiData(apiDataList.accountCode) = jQuery.SelectToken(apiCommand(parsingCode.code)).ToString
@ -4102,7 +4135,7 @@ Public Class mainForm
apiData(apiDataList.accountName) = String.Empty apiData(apiDataList.accountName) = String.Empty
End If End If
'구매 품목 정보
Dim itemInfo As String = jsArray(cnt)(apiCommand(parsingCode.item)).ToString Dim itemInfo As String = jsArray(cnt)(apiCommand(parsingCode.item)).ToString
If itemInfo <> Nothing Then If itemInfo <> Nothing Then
jQuery = JObject.Parse(itemInfo) jQuery = JObject.Parse(itemInfo)
@ -4118,7 +4151,9 @@ Public Class mainForm
prodArray(itemCode.chkCount, dataCount) = 0 prodArray(itemCode.chkCount, dataCount) = 0
prodArray(itemCode.serialNum, dataCount) = Nothing prodArray(itemCode.serialNum, dataCount) = Nothing
'출하코드에 존재하는 모든 품목의 총개수
nowFullCount += prodArray(itemCode.count, dataCount) nowFullCount += prodArray(itemCode.count, dataCount)
dataCount += 1 dataCount += 1
codeExist = False codeExist = False
@ -4150,19 +4185,20 @@ Public Class mainForm
Private SetPKCode As String = String.Empty Private SetPKCode As String = String.Empty
Private SetIdCode() As Integer Private SetIdCode() As Integer
Private Function PKCodeCheck() As Boolean Private Function PKCodeCheck() As Boolean
ReDim SetIdCode(prodArray.GetLength(1) - 1) ReDim SetIdCode(prodArray.GetLength(1) - 1)
For i = 0 To prodArray.GetLength(1) - 1 For i = 0 To prodArray.GetLength(1) - 1
If i = 0 Then If i = 0 Then
SetPKCode = prodArray(itemCode.code, i) SetPKCode = prodArray(itemCode.code, i) '' 패키징 pk
Else Else
If SetPKCode <> prodArray(itemCode.code, i) Then If SetPKCode <> prodArray(itemCode.code, i) Then
errorGen("서로 다른 세트 코드가 존재합니다. 확인하여 주십시오." & vbCrLf) errorGen("서로 다른 세트 코드가 존재합니다. 확인하여 주십시오." & vbCrLf)
Return True Return True
End If End If
End If End If
Dim temp = prodArray(itemCode.name, i)
SetIdCode(i) = prodArray(itemCode.id, i) SetIdCode(i) = prodArray(itemCode.id, i)
Next Next
@ -4178,14 +4214,14 @@ Public Class mainForm
txbRequest.ForeColor = Color.Black txbRequest.ForeColor = Color.Black
txbRequest.BackColor = SystemColors.Window txbRequest.BackColor = SystemColors.Window
RequestUpdate(prodArray.GetLength(1)) RequestUpdate(prodArray.GetLength(1)) '' 요청 수량
txbWork.ForeColor = Color.Black txbWork.ForeColor = Color.Black
txbWork.BackColor = SystemColors.Window txbWork.BackColor = SystemColors.Window
WorkUpdate(worknum) WorkUpdate(worknum) ''작업수량
txbLeftOver.ForeColor = Color.Black txbLeftOver.ForeColor = Color.Black
txbLeftOver.BackColor = SystemColors.Window txbLeftOver.BackColor = SystemColors.Window ''남은 수량
LeftOverUpdate(prodArray.GetLength(1) - worknum) LeftOverUpdate(prodArray.GetLength(1) - worknum)
End If End If
@ -4194,13 +4230,13 @@ Public Class mainForm
End Function End Function
''100 개의 패키징 상품이 들어온다고 해도 들어간 구성품은 모두 같으니 하나의 패키징 상품에 대한 정보만 배열에 저장
Private Function PKCodeSearch() As Boolean 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" 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"
If DBQueryReader(DBCmd) Then If DBQueryReader(DBCmd) Then
Dim dataCount As Integer = 0 Dim dataCount As Integer = 0
Dim rowNum As Integer = (sqlDataQuery.Length / 6) - 1 Dim rowNum As Integer = (sqlDataQuery.Length / 6) - 1 ''패키징 구성품 개수만큼
ReDim prodArray(itemCode.id, rowNum) ReDim prodArray(itemCode.id, rowNum)
For i = 0 To rowNum For i = 0 To rowNum
@ -4214,7 +4250,7 @@ Public Class mainForm
dataCount += 1 dataCount += 1
Next Next
nowFullCount += prodArray(itemCode.count, i) nowFullCount += prodArray(itemCode.count, i) ''하나의 패키징 내부에 들어간 모든 구성품의 개수의
Next Next
Return False Return False
@ -4227,17 +4263,40 @@ Public Class mainForm
Private Function ListSetting() As Boolean Private Function ListSetting() As Boolean
Try Try
If StartSwitch = True Then If StartSwitch = True Then
If rdbMode2.Checked = True And rdbNew.Checked = True Then If rdbMode2.Checked = True And rdbNew.Checked = True Then ''대량포장
nowFullCount = 0 nowFullCount = 0
If PKCodeCheck() Then If PKCodeCheck() Then '불러온 정보가 모두 같은 패키징인지 확인 & 워킹 수량 파악
Return True Return True
End If End If
If PKCodeSearch() Then If PKCodeSearch() Then '' 상품의 품목코드 확인 total sum
errorOut("등록오류") errorOut("등록오류")
Return True Return True
End If End If
Else 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 If setCodeParsing() = False Then
Return True Return True
End If End If
@ -4245,9 +4304,13 @@ Public Class mainForm
End If End If
Dim prodInfoCol As Integer = 0 Dim prodInfoCol As Integer = 0
'주문한 품목 개수
Dim rowDataCount As Int32 = prodArray.GetLength(1) - 1 Dim rowDataCount As Int32 = prodArray.GetLength(1) - 1
'(주문한 품목 개수,2) => ui 적용을 위함
ReDim txbArrayList(rowDataCount, txbNameList.targetCount) ReDim txbArrayList(rowDataCount, txbNameList.targetCount)
'이전 출하 내역 리스트가 화면에 존재할 클리어
stateTxbClear() stateTxbClear()
For row = 0 To rowDataCount For row = 0 To rowDataCount
@ -4261,15 +4324,18 @@ Public Class mainForm
prodInfoCol = prodInfoCol + prodInfoHeight + locplus prodInfoCol = prodInfoCol + prodInfoHeight + locplus
End If End If
End If End If
'ex) txbProdName 0 => 텍스트 박스 네이밍
txtBox.Name = txbNameSelect(col) & row txtBox.Name = txbNameSelect(col) & row
pnProdList.Controls.Add(txtBox) pnProdList.Controls.Add(txtBox)
txbArrayList(row, col) = txtBox txbArrayList(row, col) = txtBox
'리스트 화면에 붙힌 텍스트 박스 위치 설정
txtBox.Font = New Font("한컴 고딕", 28, FontStyle.Bold) txtBox.Font = New Font("한컴 고딕", 28, FontStyle.Bold)
txtBox.Size = New Size(prodInfoWidth(col), prodInfoHeight) txtBox.Size = New Size(prodInfoWidth(col), prodInfoHeight)
txtBox.Location = New Point(prodInfoRow(col), prodInfoCol) txtBox.Location = New Point(prodInfoRow(col), prodInfoCol)
'주문한 품목명 주문개수 입력
If col = txbNameList.name Or col = txbNameList.nowCount Then If col = txbNameList.name Or col = txbNameList.nowCount Then
txtBox.Text = prodArray(col + 1, row) txtBox.Text = prodArray(col + 1, row)
Else Else
@ -4438,6 +4504,7 @@ Public Class mainForm
Private Sub stateTxbClear() Private Sub stateTxbClear()
Const setControls As Int16 = 3 Const setControls As Int16 = 3
Dim clearRunSwitch As Boolean = False Dim clearRunSwitch As Boolean = False
'화면에 표시할 품목의 개수
Dim nowTxbCount As Int32 = pnProdList.Controls.Count / setControls Dim nowTxbCount As Int32 = pnProdList.Controls.Count / setControls
If nowTxbCount <> 0 Then If nowTxbCount <> 0 Then
@ -6161,6 +6228,8 @@ Public Class mainForm
End If End If
End Sub End Sub
Private Sub mainSetting() Private Sub mainSetting()
pnOption.Visible = False pnOption.Visible = False
pnMain.Location = New Point(0, 0) pnMain.Location = New Point(0, 0)

View File

@ -39,18 +39,18 @@ Module mySQLAddress
Private Const mainModelInfoDB As String = "jomtTesterDB.jomtModelInfoTbl" Private Const mainModelInfoDB As String = "jomtTesterDB.jomtModelInfoTbl"
Private Const testModelInfoDB As String = "jomtTesterServerDB.jomtModelInfoTbl" Private Const testModelInfoDB As String = "jomtTesterServerDB.jomtModelInfoTbl"
Public applyOrderDB As String = mainOrderDB Public applyOrderDB As String = testOrderDB
Public applySalesDB As String = mainSalesDB Public applySalesDB As String = testSalesDB
Public applyCountDB As String = mainCountDB Public applyCountDB As String = testCountDB
Public applyCartDB As String = mainCartDB Public applyCartDB As String = testCartDB
Public applyProdDB As String = mainProdDB Public applyProdDB As String = testProdDB
Public applyDivDB As String = mainDivDB Public applyDivDB As String = testDivDB
Public applyPlistDB As String = mainPlistDB Public applyPlistDB As String = testPlistDB
Public applyClistDB As String = mainClistDB Public applyClistDB As String = testClistDB
Public applyPackEvent As String = mainPackEvent Public applyPackEvent As String = testPackEvent
Public applyPKCodeDB As String = mainPKCodeDB Public applyPKCodeDB As String = mainPKCodeDB
Public applyNonTDDB As String = MainNonTDDB Public applyNonTDDB As String = TestNonTDDB
Public ApplyModelInfoDB As String = mainModelInfoDB Public ApplyModelInfoDB As String = testModelInfoDB
Public applyPackDB As String = testPackDB Public applyPackDB As String = testPackDB
Public applyHistoryDB As String = testHistoryDB Public applyHistoryDB As String = testHistoryDB
@ -225,19 +225,19 @@ Module mySQLAddress
Private DBCmd As String Private DBCmd As String
Public Function packingCountset(dbType As Int16, prodCode As Int16, ckCount As Int16, serial As String) Public Function packingCountset(dbType As Int16, prodCode As Int16, ckCount As Int16, serial As String)
If dbType = dbCode.prodDBcode Then If dbType = dbCode.prodDBcode Then ''기기인 경우
If prodCode >= 1 And prodCode <= item_product_max_index Then If prodCode >= 1 And prodCode <= item_product_max_index Then
item_product_list(prodCode).cnt += ckCount item_product_list(prodCode).cnt += ckCount
If item_product_list(prodCode).serial = Nothing Then If item_product_list(prodCode).serial = Nothing Then
item_product_list(prodCode).serial = serial item_product_list(prodCode).serial = serial
Else Else
item_product_list(prodCode).serial = item_product_list(prodCode).serial & "/" & serial item_product_list(prodCode).serial = item_product_list(prodCode).serial & "/" & serial ''prod가 같은 경우 예시)
End If End If
Else Else
MsgBox("잘못된 데이터가 개입되었습니다", vbCritical) MsgBox("잘못된 데이터가 개입되었습니다", vbCritical)
Return True Return True
End If End If
Else Else '' 구성품인 경우
If prodCode >= 0 And prodCode <= item_component_max_index Then If prodCode >= 0 And prodCode <= item_component_max_index Then
item_component_list(prodCode).cnt += ckCount item_component_list(prodCode).cnt += ckCount
Else Else
@ -253,7 +253,7 @@ Module mySQLAddress
ReDim countCommand(item_product_max_index + item_component_max_index + 1) ReDim countCommand(item_product_max_index + item_component_max_index + 1)
Select Case saveType Select Case saveType
Case countSaveList.normal Case countSaveList.normal ''포장 수량 컬럼에 저장할 컬럼명 배열 저장
countCommand(prodDB.packingCount) = "PackingCount" countCommand(prodDB.packingCount) = "PackingCount"
@ -267,7 +267,7 @@ Module mySQLAddress
End If End If
Next Next
Case countSaveList.autopack Case countSaveList.autopack '' 대량포장 금일 수량 countCommand()
countCommand(prodDB.packingCount) = "AutoPackCnt" countCommand(prodDB.packingCount) = "AutoPackCnt"
@ -324,15 +324,15 @@ Module mySQLAddress
item_data.item_type = "P" item_data.item_type = "P"
packing_count_data.item_type = "P" packing_count_data.item_type = "P"
For col = 0 To 5 For col = 0 To 5
If col = 0 Then If col = 0 Then '' 기기 품목 관련 정보(컬럼 ) 배열 저장
item_data.prod_code = sqlDataQuery(dataSetCount) item_data.prod_code = sqlDataQuery(dataSetCount)
packing_count_data.prod_code = sqlDataQuery(dataSetCount) packing_count_data.prod_code = sqlDataQuery(dataSetCount)
ElseIf col = 1 Then ElseIf col = 1 Then
item_data.sales_packing_cnt_col_nm = sqlDataQuery(dataSetCount) item_data.sales_packing_cnt_col_nm = sqlDataQuery(dataSetCount) ''포장 개수
ElseIf col = 2 Then ElseIf col = 2 Then
item_data.sales_packing_serial_col_nm = sqlDataQuery(dataSetCount) item_data.sales_packing_serial_col_nm = sqlDataQuery(dataSetCount) '' 포장 기기 시리얼 넘버
ElseIf col = 3 Then ElseIf col = 3 Then
packing_count_data.packing_cnt_col_nm = sqlDataQuery(dataSetCount) packing_count_data.packing_cnt_col_nm = sqlDataQuery(dataSetCount) '' 금일 포장
ElseIf col = 4 Then ElseIf col = 4 Then
packing_count_data.ap_packing_cnt_col_nm = sqlDataQuery(dataSetCount) packing_count_data.ap_packing_cnt_col_nm = sqlDataQuery(dataSetCount)
ElseIf col = 5 Then ElseIf col = 5 Then
@ -340,8 +340,8 @@ Module mySQLAddress
End If End If
dataSetCount += 1 dataSetCount += 1
Next Next
item_product_list(item_data.prod_code) = item_data item_product_list(item_data.prod_code) = item_data '' 배열의 인덱스를 품목 prod 코드로 설정하고 value값으로 포장object 저장
product_packing_cnt_list(packing_count_data.prod_code) = packing_count_data product_packing_cnt_list(packing_count_data.prod_code) = packing_count_data '' 배열의 인덱스를 품목 prod 코드로 설정하고 value값으로 수량object 저장
Next Next
End If End If

View File

@ -29,7 +29,7 @@ Public Class weightForm
ZeroTimer.Enabled = True ZeroTimer.Enabled = True
lbNowWeight.Text = Nothing lbNowWeight.Text = Nothing
lbWeightEX.Text = Nothing lbWeightEX.Text = Nothing
weightSum = mainForm.weightSum weightSum = mainForm.weightSum ''넘어온 기준값
lbNowWeight.Refresh() lbNowWeight.Refresh()
lbWeightEX.Refresh() lbWeightEX.Refresh()
@ -49,13 +49,13 @@ Public Class weightForm
Dim scaleData As String Dim scaleData As String
If mainForm.rdbWeightAuto.Checked = True Then If mainForm.rdbWeightAuto.Checked = True Then
If weightResult > 0 Then If weightResult > 0 Then ''저울위에 올라간 포장품이 있을 경우
statusTimer.Enabled = False statusTimer.Enabled = False
playTimer.Enabled = False playTimer.Enabled = False
lbNowWeight.Text = weightResult lbNowWeight.Text = weightResult ''지금 무게
If weight_compare() Then If weight_compare() Then ''무게 측정 범위 확인
lbWeight.BackColor = Color.Green lbWeight.BackColor = Color.Green
lbWeight.Text = "무게 일치" lbWeight.Text = "무게 일치"
delay(2000) delay(2000)
@ -389,6 +389,7 @@ Public Class weightForm
End Try End Try
End Sub End Sub
''포장 무게 포트 통신 receive -> 해당 포장 무게 합게 구함
Private Sub cmdSerialPort_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles cmdSerialPort.DataReceived Private Sub cmdSerialPort_DataReceived(sender As Object, e As IO.Ports.SerialDataReceivedEventArgs) Handles cmdSerialPort.DataReceived
Try Try
@ -402,7 +403,7 @@ Public Class weightForm
cmdSerialPort.Read(RecBuffer, 0, n) cmdSerialPort.Read(RecBuffer, 0, n)
For cnt = 0 To RecBuffer.Length - 1 For cnt = 0 To RecBuffer.Length - 1
dataSet = dataSet & Chr(RecBuffer(cnt)) dataSet = dataSet & Chr(RecBuffer(cnt)) ''리시브한 모든 바이트 조합
Next Next
Dim dataCount As Int32 = UBound(Split(dataSet, vbCr)) - 1 Dim dataCount As Int32 = UBound(Split(dataSet, vbCr)) - 1