1.버전 3.0.7

2.기존 올리브영만 보급형 적용 -> 모든 보급형 모델 적용
3. 보급형 단독 / 보급형+구성품 / 보급형 +일반 모델 포장 적용
This commit is contained in:
hyelinjung 2026-02-09 10:48:08 +09:00
parent d510ba1d50
commit ef6602d000
2 changed files with 716 additions and 926 deletions

File diff suppressed because it is too large Load Diff

View File

@ -8,7 +8,7 @@ Imports Newtonsoft.Json.Linq
Public Class mainForm Public Class mainForm
Public projectName As String = "OrderPackingProcessor Ver." Public projectName As String = "OrderPackingProcessor Ver."
Public projectVer As String = "3.0.4" Public projectVer As String = "3.0.7"
Private apiItemOutURL As String = "item-outflows/page" Private apiItemOutURL As String = "item-outflows/page"
@ -155,6 +155,7 @@ Public Class mainForm
''스캔 바코드 문자 길이 ''스캔 바코드 문자 길이
Private Const oldProdCodeLength As Int16 = 12 '12자리 제품시리얼번호 Private Const oldProdCodeLength As Int16 = 12 '12자리 제품시리얼번호
Private Const newProdCodeLength As Int16 = 16 '16자리 제품시리얼번호 Private Const newProdCodeLength As Int16 = 16 '16자리 제품시리얼번호
Private Const lowProdCodeLength As Int16 = 13 '보급형모델 88코드
Private Const comCodeLength As Int16 = 8 Private Const comCodeLength As Int16 = 8
Private Const stateLength As Int16 = 14 Private Const stateLength As Int16 = 14
Private Const serialCount As Int16 = 3 Private Const serialCount As Int16 = 3
@ -168,7 +169,8 @@ Public Class mainForm
Private ScanArray(,) As String Private ScanArray(,) As String
Private scanCode() As String Private scanCode() As String
Private setFace, setEye As String Private setFace As String = "0"
Private setEye As String = "0"
''리스트 텍스트박스 위치 ''리스트 텍스트박스 위치
Const prodInfoStartCol As Int16 = 5 Const prodInfoStartCol As Int16 = 5
@ -245,9 +247,10 @@ Public Class mainForm
End Enum End Enum
Private defaultData(defaultList.refer) As String Private defaultData(defaultList.refer) As String
''올리브영 88코드 ''보급형 88코드
Private olivYoungList As New Dictionary(Of String, String) From {{"P001-OY001A", "8809595041540"}, {"P001-OY001B", "8809595041533"}} Private lowProdList As New Dictionary(Of String, String) ''key:88 vlaue: itemcode
''보급형 기기 포함
Private lowProdContain As Boolean = False
'' 세트코드 '' 세트코드
Private setCodeUse As Boolean = False ''세트 코드 번호를 사용했냐 안했냐 구분 Private setCodeUse As Boolean = False ''세트 코드 번호를 사용했냐 안했냐 구분
Private Const setCodeSort As String = "PK" Private Const setCodeSort As String = "PK"
@ -295,6 +298,7 @@ Public Class mainForm
varDataSetting() varDataSetting()
dgvRefresh() dgvRefresh()
fullLoad(sender, e) fullLoad(sender, e)
loadLowProdBarcode()
If rdbMode2.Checked = True Then If rdbMode2.Checked = True Then
loadConfig(saveList.lastCount) loadConfig(saveList.lastCount)
End If End If
@ -311,7 +315,18 @@ Public Class mainForm
Me.Size = New Size(1920, 1080) Me.Size = New Size(1920, 1080)
'Me.WindowState = FormWindowState.Maximized 'Me.WindowState = FormWindowState.Maximized
End Sub End Sub
Private Sub loadLowProdBarcode() '' 보급형 88 코드 가지고 오기
Dim queryFlag = 0
Dim cmd = "SELECT 88_Code,itemCode FROM " & applyPlistDB & " WHERE 88_Code IS NOT NULL"
If DBQueryReader(cmd) Then
For i = 0 To sqlDataQuery.Length - 1
If i Mod 2 = 1 Then
lowProdList.Add(sqlDataQuery(queryFlag - 1), sqlDataQuery(queryFlag))
End If
queryFlag += 1
Next
End If
End Sub
Private Sub countView() Private Sub countView()
If loadLocalFile() Then If loadLocalFile() Then
countOut() countOut()
@ -763,7 +778,7 @@ Public Class mainForm
Return False Return False
Case "CHECKERROR" Case "CHECKERROR"
errorOut("등록오류") errorOut("등록오류")
errorGen("올리브영 상품이 아닙니다. 올리브영 사용 여부를 확인해 주십시오.") errorGen("보급형 상품이 아닙니다. 보급형 사용 여부를 해제해 주십시오.")
Return False Return False
Case Else Case Else
errorOut("동작불량") errorOut("동작불량")
@ -923,7 +938,7 @@ Public Class mainForm
End If End If
If packingRun() Then If packingRun() Then
If playCode.Length < stateLength Or playCode.Length = newProdCodeLength Or (oybtn.Checked And playCode.Length = 13) 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 = True Then
saveStart() saveStart()
@ -1540,10 +1555,12 @@ Public Class mainForm
Return False Return False
Case "CHECKERROR" Case "CHECKERROR"
errorOut("등록오류") errorOut("등록오류")
errorGen("올리브영 상품이 아닙니다. 올리브영 사용 여부를 확인해 주십시오.") errorGen("보급형 상품이 아닙니다. 보급형 사용을 해제해 주십시오.")
Return False
Case "UNCHECKERROR" Case "UNCHECKERROR"
errorOut("등록오류") errorOut("등록오류")
errorGen("올리브영 사용 여부를 확인해 주십시오.") errorGen("보급형 상품입니다. 보급형 사용 여부를 확인해 주십시오.")
Return False
Case Else Case Else
errorOut("등록오류") errorOut("등록오류")
errorGen("잘못된 접근입니다. 관리자에게 문의하여 주십시오.") errorGen("잘못된 접근입니다. 관리자에게 문의하여 주십시오.")
@ -1854,7 +1871,7 @@ Public Class mainForm
End Function End Function
Private Function serialDupCheck() As Boolean Private Function serialDupCheck() As Boolean
If oybtn.Checked Then If oybtn.Checked And playCode.Length = lowProdCodeLength Then
Return False Return False
End If End If
For i = 0 To prodArray.GetLength(1) - 1 For i = 0 To prodArray.GetLength(1) - 1
@ -1870,7 +1887,7 @@ Public Class mainForm
Private Function serialPackCompare() As Boolean Private Function serialPackCompare() As Boolean
Dim commandStr As String Dim commandStr As String
If oybtn.Checked Then If oybtn.Checked And playCode.Length = lowProdCodeLength Then
Return True Return True
End If End If
@ -2060,14 +2077,9 @@ Public Class mainForm
Private Function shotComparison() As Boolean Private Function shotComparison() As Boolean
Dim runCount As Int32 = 0 Dim runCount As Int32 = 0
setFace = 0
setEye = 0
Dim faceCShot As Int32 = 0 Dim faceCShot As Int32 = 0
Dim eyeCshot As Int32 = 0 Dim eyeCshot As Int32 = 0
If oybtn.Checked And setInfo(setInfoList.topSerial) = Nothing Then If setInfo(setInfoList.topSerial) <> "NULL" And setInfo(setInfoList.midSerial) <> "NULL" And setInfo(setInfoList.botSerial) <> "NULL" Then
setFace = "0"
setEye = "0"
ElseIf setInfo(setInfoList.topSerial) <> "NULL" And setInfo(setInfoList.midSerial) <> "NULL" And setInfo(setInfoList.botSerial) <> "NULL" Then
setFace = setInfo(setInfoList.midshot) setFace = setInfo(setInfoList.midshot)
setEye = setInfo(setInfoList.botshot) setEye = setInfo(setInfoList.botshot)
Else Else
@ -2890,7 +2902,7 @@ Public Class mainForm
strData = File.ReadAllText(fileName, Encoding.UTF8) strData = File.ReadAllText(fileName, Encoding.UTF8)
If strData = vbCrLf Or strData = Nothing Or strData = "" Then If strData = vbCrLf Or strData = Nothing Or strData = "" Then
strData = startForm & vbCrLf & saveData & vbCrLf strData = StartForm & vbCrLf & saveData & vbCrLf
Else Else
If UBound(Split(strData, saveDate)) > 0 Then If UBound(Split(strData, saveDate)) > 0 Then
@ -2902,7 +2914,7 @@ Public Class mainForm
End If End If
Else Else
strData = startForm & vbCrLf & saveData & vbCrLf strData = StartForm & vbCrLf & saveData & vbCrLf
End If End If
File.WriteAllText(fileName, strData, Encoding.UTF8) File.WriteAllText(fileName, strData, Encoding.UTF8)
@ -3454,10 +3466,6 @@ Public Class mainForm
'End Function 'End Function
Private Function dbPackNumCompare(choiceNum As String) As Boolean Private Function dbPackNumCompare(choiceNum As String) As Boolean
If oybtn.Checked Then
Return False
End If
DBCmd = "SELECT COUNT(PackingCode) FROM " & applySalesDB & " WHERE PackingCode = '" & choiceNum & "'" DBCmd = "SELECT COUNT(PackingCode) FROM " & applySalesDB & " WHERE PackingCode = '" & choiceNum & "'"
If Val(DBQueryScalar(DBCmd)) > 0 Then If Val(DBQueryScalar(DBCmd)) > 0 Then
@ -3552,7 +3560,7 @@ 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 Or oybtn.Checked Then If choiceData.Length = oldProdCodeLength Or choiceData.Length = newProdCodeLength Then
Return choiceData Return choiceData
Else Else
Return orderCode Return orderCode
@ -3681,7 +3689,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
If Not olivYoungList.Any(Function(v) v.Value = playCode) Then If Not (oybtn.Checked And playCode.Length = lowProdCodeLength) Then
prodArray(itemCode.serialNum, i) = prodArray(itemCode.serialNum, i) & "/" & playCode prodArray(itemCode.serialNum, i) = prodArray(itemCode.serialNum, i) & "/" & playCode
End If End If
End If End If
@ -3748,16 +3756,14 @@ Public Class mainForm
End If End If
Else Else
If orderSwitch = True Then If orderSwitch = True Then
If olivYoungList.Any(Function(key) key.Value = playCode) Then If lowProdList.ContainsKey(playCode) Then
If oybtn.Checked Then If oybtn.Checked Then
Return "PRODSCAN" Return "PRODSCAN"
Else Else
Return "UNCHECKERROR" Return "UNCHECKERROR"
End If End If
Else ElseIf oybtn.Checked And lowProdContain = False Then
If oybtn.Checked Then Return "CHECKERROR"
Return "CHECKERROR"
End If
End If End If
If playCode.Length = oldProdCodeLength Or playCode.Length = newProdCodeLength Then If playCode.Length = oldProdCodeLength Or playCode.Length = newProdCodeLength Then
@ -3782,15 +3788,17 @@ Public Class mainForm
End Function End Function
Private Function searchData() As Boolean Private Function searchData() As Boolean
If oybtn.Checked And playCode.Length = lowProdCodeLength Then
For i = 0 To setInfoList.prodCode
setInfo(i) = "NULL"
Next
Return True
End If
Const serialShot As Int16 = 3 '' 시리얼 번호와 enum 차이 / 시리얼 번호 null 수에 null 집어 넣기 위해 사용 Const serialShot As Int16 = 3 '' 시리얼 번호와 enum 차이 / 시리얼 번호 null 수에 null 집어 넣기 위해 사용
For i = 0 To setInfoList.prodCode For i = 0 To setInfoList.prodCode
setInfo(i) = Nothing setInfo(i) = Nothing
Next Next
If oybtn.Checked Then
setInfoOut()
Return True
End If
If serialSearch() Then If serialSearch() Then
@ -3993,7 +4001,7 @@ Public Class mainForm
Private Function prodCodeSearch() As Boolean Private Function prodCodeSearch() As Boolean
Try Try
If Not oybtn.Checked Then If Not (oybtn.Checked And playCode.Length = lowProdCodeLength) Then
If modelNum = Nothing Or typeNum = Nothing Then If modelNum = Nothing Or typeNum = Nothing Then
errorOut("등록오류") errorOut("등록오류")
errorGen("해당 시리얼 번호의 모델과 타입을 알 수 없습니다.") errorGen("해당 시리얼 번호의 모델과 타입을 알 수 없습니다.")
@ -4009,10 +4017,8 @@ 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
If oybtn.Checked Then If oybtn.Checked And playCode.Length = lowProdCodeLength Then
Dim itemCode = olivYoungList.FirstOrDefault(Function(key) key.Value = playCode) DBCmd = "SELECT ItemCode,ProdCode,FaceShot,EyeShot FROM " & applyPlistDB & " WHERE 88_Code = '" & playCode & "'"
codeColor = itemCode.Key
DBCmd = "SELECT ItemCode,ProdCode,FaceShot,EyeShot FROM " & applyPlistDB & " WHERE itemCode ='" & codeColor & "'"
Else Else
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 & "'"
End If End If
@ -4096,6 +4102,7 @@ Public Class mainForm
Try Try
Dim dataCount As Int16 = 0 Dim dataCount As Int16 = 0
Dim codeExist As Boolean = False Dim codeExist As Boolean = False
lowProdContain = False
ReDim prodArray(itemCode.id, 0) ReDim prodArray(itemCode.id, 0)
ReDim apiData(apiDataList.address) ReDim apiData(apiDataList.address)
@ -4162,11 +4169,13 @@ Public Class mainForm
prodArray(itemCode.code, dataCount) = jQuery.SelectToken(apiCommand(parsingCode.code)).ToString prodArray(itemCode.code, dataCount) = jQuery.SelectToken(apiCommand(parsingCode.code)).ToString
prodArray(itemCode.name, dataCount) = jQuery.SelectToken(apiCommand(parsingCode.name)).ToString prodArray(itemCode.name, dataCount) = jQuery.SelectToken(apiCommand(parsingCode.name)).ToString
Else Else
errorOut("등록오류") errorOut("등록오류")
errorGen("등록 데이터 중 제품이 등록되어 있지 않는 항목이 존재합니다.") errorGen("등록 데이터 중 제품이 등록되어 있지 않는 항목이 존재합니다.")
Return False Return False
End If End If
If lowProdList.ContainsValue(prodArray(itemCode.code, dataCount)) And lowProdContain = False Then
lowProdContain = True
End If
prodArray(itemCode.chkCount, dataCount) = 0 prodArray(itemCode.chkCount, dataCount) = 0
prodArray(itemCode.serialNum, dataCount) = Nothing prodArray(itemCode.serialNum, dataCount) = Nothing
@ -4185,6 +4194,7 @@ Public Class mainForm
End If End If
Next Next
If codeExist = True Then If codeExist = True Then
errorOut("등록오류") errorOut("등록오류")
errorGen("등록된 코드 번호가 존재하지 않습니다. 번호를 확인하여 주십시오.") errorGen("등록된 코드 번호가 존재하지 않습니다. 번호를 확인하여 주십시오.")