올리브영 추가

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

View File

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

View File

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