1] Optimum 모델 이후부터 신규 시리얼번호 부여 체계 적용

2] 버전 2.0.0 업데이트
This commit is contained in:
KwakJooYoung 2025-11-24 15:38:02 +09:00
parent b5a5820b1a
commit 630c16242a
2 changed files with 57 additions and 99 deletions

View File

@ -5,7 +5,7 @@ Imports Newtonsoft.Json.Linq
Public Class frm_Main Public Class frm_Main
Public programName As String = "PackingInvoiceMapper Ver. " Public programName As String = "PackingInvoiceMapper Ver. "
Private programVer As String = "1.3.0" Private programVer As String = "2.0.0"
Private apiItemOutURL As String = "item-outflows/page" Private apiItemOutURL As String = "item-outflows/page"
@ -25,7 +25,8 @@ Public Class frm_Main
'------------------------------------------------------------------ '------------------------------------------------------------------
Private Const stateLength As Int16 = 13 Private Const stateLength As Int16 = 13
Private Const packingLength As Int16 = 12 Private Const oldProdCodeLength As Int16 = 12 '12자리 제품시리얼번호
Private Const newProdCodeLength As Int16 = 16 '16자리 제품시리얼번호
Private DBCmd As String Private DBCmd As String
Private txbArrayList(,) As TextBox Private txbArrayList(,) As TextBox
@ -106,24 +107,11 @@ Public Class frm_Main
End Enum End Enum
Private firstState(firstStateList.MES) As String Private firstState(firstStateList.MES) As String
Private Enum modelList
PRO = 1
LUX
MAXIMUM
Alpha
Alto
Effect
MAXIMUM_ALPHA
'신규제품추가 : 제품 시리얼 번호 첫번째자리(모델번호) 동일하게 업데이트
End Enum
Private Const modelPosition As Int16 = 1
Private Enum typeList Private Enum typeList
prodSet_V1 prodSet
prodFace_V2 prodFace
prodEye prodEye
prodBody prodBody
'신규제품추가 : 제품 시리얼 번호 두번째자리(타입번호) 동일하게 업데이트
End Enum End Enum
Private Const typePosition As Int16 = 2 Private Const typePosition As Int16 = 2
@ -678,7 +666,7 @@ Public Class frm_Main
End If End If
Else Else
If codeData.Length = packingLength Then If codeData.Length = oldProdCodeLength Or codeData.Length = newProdCodeLength Then
MassPackReset() MassPackReset()
If stateSuccess = False Then If stateSuccess = False Then
@ -1130,7 +1118,7 @@ Public Class frm_Main
Private Function orderSearch(codeData As String) As Boolean Private Function orderSearch(codeData As String) As Boolean
If codeData.Length = packingLength Then If codeData.Length = oldProdCodeLength Or codeData.Length = newProdCodeLength Then
If packingCompare(codeData) Then If packingCompare(codeData) Then
Return False Return False
@ -1643,17 +1631,40 @@ Public Class frm_Main
End Function End Function
Private Function serialSearch(serialData As String) As Boolean Private Function serialSearch(serialData As String) As Boolean
Const infoNum As Int16 = 1 Dim modelNumber As String = Nothing
Dim modelNumber As String = Mid(serialData, modelPosition, infoNum) Dim typeNumber As String = Nothing
Dim typeNumber As String = Mid(serialData, typePosition, infoNum) Dim deviceTypeCode As String = Nothing
Dim sqlResult As String Dim sqlResult As String
If modelNumber = modelList.PRO Or modelNumber = modelList.LUX Or modelNumber = modelList.Alpha Then If serialData.Length = oldProdCodeLength Then '12자리 제품시리얼번호
If typeNumber = typeList.prodSet_V1 Then modelNumber = Mid(serialData, 1, 1)
typeNumber = Mid(serialData, 2, 1)
ElseIf serialData.Length = newProdCodeLength Then '16자리 제품시리얼번호
modelNumber = Mid(serialData, 1, 2)
typeNumber = Mid(serialData, 15, 1)
End If
DBCmd = "SELECT DeviceTypeCode, TDUseYn FROM " & ApplyModelInfoDB & " WHERE ModelCode = '" & modelNumber & "' LIMIT 1"
If DBQueryReader(DBCmd) Then
deviceTypeCode = sqlDataQuery(0)
If sqlDataQuery(1) = "Y" Then
TDUseCompare = True
Else
TDUseCompare = False
End If
Else
TDUseCompare = False
MsgBox("존재하지 않는 모델 번호입니다.", vbExclamation)
Return False
End If
If deviceTypeCode = "D" Then '분리형 디바이스 : PRO, LUX, ALPHA
If typeNumber = typeList.prodSet Then
DBCmd = "SELECT Ct_Max_ShotCnt from " & applyCartDB & " where Product_SN = (SELECT FaceCart_SN FROM " & applyProdDB & " WHERE Product_SN = '" & serialData & "') OR Product_SN = (SELECT EyeCart_SN FROM " & applyProdDB & " WHERE Product_SN = '" & serialData & "')" DBCmd = "SELECT Ct_Max_ShotCnt from " & applyCartDB & " where Product_SN = (SELECT FaceCart_SN FROM " & applyProdDB & " WHERE Product_SN = '" & serialData & "') OR Product_SN = (SELECT EyeCart_SN FROM " & applyProdDB & " WHERE Product_SN = '" & serialData & "')"
If DBQueryReader(DBCmd) Then If DBQueryReader(DBCmd) Then
chkItem(itemInfoList.face) = sqlDataQuery(typeList.prodFace_V2 - 1) chkItem(itemInfoList.face) = sqlDataQuery(0)
chkItem(itemInfoList.eye) = sqlDataQuery(typeList.prodEye - 1) chkItem(itemInfoList.eye) = sqlDataQuery(1)
Else Else
MsgBox("세트 제품의 샷 수를 알 수 없습니다.", vbExclamation) MsgBox("세트 제품의 샷 수를 알 수 없습니다.", vbExclamation)
Return False Return False
@ -1666,7 +1677,7 @@ Public Class frm_Main
Return False Return False
End If End If
If typeNumber = typeList.prodFace_V2 Or typeNumber = typeList.prodBody Then If typeNumber = typeList.prodFace Or typeNumber = typeList.prodBody Then
chkItem(itemInfoList.face) = sqlResult chkItem(itemInfoList.face) = sqlResult
chkItem(itemInfoList.eye) = "0" chkItem(itemInfoList.eye) = "0"
ElseIf typeNumber = typeList.prodEye Then ElseIf typeNumber = typeList.prodEye Then
@ -1679,26 +1690,14 @@ Public Class frm_Main
End If End If
Else Else
If modelNumber = modelList.MAXIMUM Then
TDUseCompare = True
Else
TDUseCompare = False
End If
sqlResult = singleCartShot(serialData) sqlResult = singleCartShot(serialData)
If sqlResult = "FAIL" Then If sqlResult = "FAIL" Then
Return False Return False
End If End If
' Effect_V3의 type number는 3으로 BODY 카트리지 번호와 같기에 처리 필요
If typeNumber = typeList.prodSet_V1 Or typeNumber = typeList.prodFace_V2 Or (modelNumber = modelList.Effect And typeNumber = typeList.prodBody) Then
chkItem(itemInfoList.face) = sqlResult chkItem(itemInfoList.face) = sqlResult
chkItem(itemInfoList.eye) = sqlResult chkItem(itemInfoList.eye) = sqlResult
Else
MsgBox("형식에 맞지 않은 바코드가 존재합니다.", vbCritical)
Return False
End If
End If End If
If prodListSet(modelNumber, typeNumber, serialData) Then If prodListSet(modelNumber, typeNumber, serialData) Then
@ -1738,69 +1737,22 @@ Public Class frm_Main
If resultCount = "False" Then If resultCount = "False" Then
MsgBox("샷 수에 따른 제품 코드를 검색하는 과정에서 오류가 발생하였습니다.", vbCritical) MsgBox("샷 수에 따른 제품 코드를 검색하는 과정에서 오류가 발생하였습니다.", vbCritical)
Return False Return False
End If ElseIf resultCount = "0" Then
MsgBox("샷 수에 해당하는 제품이 없습니다.", vbCritical)
If resultCount = "0" Then Return False
Select Case modelNumber
Case modelList.PRO
Select Case typeNumber
Case typeList.prodSet_V1
tempFaceShot = 6000
tempEyeShot = 60000
Case typeList.prodFace_V2
tempFaceShot = 6000
tempEyeShot = 0
Case typeList.prodEye
tempFaceShot = 0
tempEyeShot = 60000
Case typeList.prodBody
tempFaceShot = 30000
tempEyeShot = 0
End Select
Case modelList.LUX
Select Case typeNumber
Case typeList.prodSet_V1
tempFaceShot = 3000
tempEyeShot = 30000
Case typeList.prodFace_V2
tempFaceShot = 3000
tempEyeShot = 0
Case typeList.prodEye
tempFaceShot = 0
tempEyeShot = 30000
Case typeList.prodBody
tempFaceShot = 20000
tempEyeShot = 0
End Select
Case modelList.Alpha
Select Case typeNumber
Case typeList.prodSet_V1
tempFaceShot = 20000
tempEyeShot = 200000
Case typeList.prodFace_V2
tempFaceShot = 20000
tempEyeShot = 0
Case typeList.prodEye
tempFaceShot = 0
tempEyeShot = 200000
Case typeList.prodBody
tempFaceShot = 30000
tempEyeShot = 0
End Select
Case Else
tempFaceShot = 0
tempEyeShot = 0
End Select
Else Else
tempFaceShot = chkItem(itemInfoList.face) tempFaceShot = chkItem(itemInfoList.face)
tempEyeShot = chkItem(itemInfoList.eye) tempEyeShot = chkItem(itemInfoList.eye)
End If End If
Const rowCount As Int16 = 2 Const rowCount As Int16 = 2
Dim colorNumber As String = Mid(serialData, colorPosition, 1) Dim colorNumber As String = Nothing
If serialData.Length = oldProdCodeLength Then '12자리 제품시리얼번호
colorNumber = Mid(serialData, 11, 1)
ElseIf serialData.Length = newProdCodeLength Then '16자리 제품시리얼번호
colorNumber = Mid(serialData, 3, 1)
End If
DBCmd = "SELECT ItemCode,ItemName FROM " & applyPlistDB & " WHERE ModelNum = '" & modelNumber & "' AND TypeNum = '" & typeNumber & "' AND FaceShot = '" & tempFaceShot & "' AND EyeShot = '" & tempEyeShot & "' AND ColorNum = '" & colorNumber & "'" & " AND ItemName NOT LIKE '%체험%' LIMIT 1" DBCmd = "SELECT ItemCode,ItemName FROM " & applyPlistDB & " WHERE ModelNum = '" & modelNumber & "' AND TypeNum = '" & typeNumber & "' AND FaceShot = '" & tempFaceShot & "' AND EyeShot = '" & tempEyeShot & "' AND ColorNum = '" & colorNumber & "'" & " AND ItemName NOT LIKE '%체험%' LIMIT 1"
@ -1927,6 +1879,7 @@ Public Class frm_Main
,Effect_serial ,Effect_serial
,EffectV3_Serial ,EffectV3_Serial
,MAXIMUM_ALPHA_SN ,MAXIMUM_ALPHA_SN
,Optimum_Serial
FROM " & applySalesDB & " WHERE PackingCode = '" & codeData & "'" '신규제품추가 : 추가하는 품목의 시리얼번호 조회 컬럼 추가 FROM " & applySalesDB & " WHERE PackingCode = '" & codeData & "'" '신규제품추가 : 추가하는 품목의 시리얼번호 조회 컬럼 추가
If DBQueryReader(DBCmd) Then If DBQueryReader(DBCmd) Then
For i = 0 To pSerialList_max_index For i = 0 To pSerialList_max_index
@ -2659,7 +2612,7 @@ Public Class frm_Main
mapInvOk = True mapInvOk = True
Else Else
If codeData.Length = packingLength Then If codeData.Length = oldProdCodeLength Or codeData.Length = newProdCodeLength Then
packFullCount = 0 packFullCount = 0

View File

@ -22,6 +22,9 @@
Private mainPKCodeDB As String = "jomtTesterDB.jomtPKCodeTbl" Private mainPKCodeDB As String = "jomtTesterDB.jomtPKCodeTbl"
Private Const mainModelInfoDB As String = "jomtTesterDB.jomtModelInfoTbl"
Private Const testModelInfoDB As String = "jomtTesterServerDB.jomtModelInfoTbl"
Public applyOrderDB As String = mainOrderDB Public applyOrderDB As String = mainOrderDB
Public applySalesDB As String = mainSalesDB Public applySalesDB As String = mainSalesDB
Public applyProdDB As String = mainProdDB Public applyProdDB As String = mainProdDB
@ -30,6 +33,7 @@
Public applyClistDB As String = mainClistDB Public applyClistDB As String = mainClistDB
Public applyPKCodeDB As String = mainPKCodeDB Public applyPKCodeDB As String = mainPKCodeDB
Public applyNonTDDB As String = MainNonTDDB Public applyNonTDDB As String = MainNonTDDB
Public ApplyModelInfoDB As String = mainModelInfoDB
Public Enum pSerialList Public Enum pSerialList
DivSet DivSet
@ -48,6 +52,7 @@
Effect Effect
EffectV3 EffectV3
MaximumAlpha MaximumAlpha
Optimum
'신규제품추가 : 추가하는 품목의 변수 추가 '신규제품추가 : 추가하는 품목의 변수 추가
End Enum End Enum
Public pSerialList_max_index As Integer = [Enum].GetNames(GetType(pSerialList)).Length - 1 Public pSerialList_max_index As Integer = [Enum].GetNames(GetType(pSerialList)).Length - 1