Imports System.Security.Cryptography Imports System.Windows.Forms.AxHost Imports Newtonsoft.Json.Linq Public Class frm_Main Public programName As String = "DUALSONIC Mapping Or Search Program Ver. " Private programVer As String = "1.0.3" Private apiItemOutURL As String = "item-outflows/page" '--------------------------검색 및 패킹 등 기능 종류--------------- Private Enum funcList search mapstate mappack msstate mspack End Enum Private setPanel(funcList.mspack) As Panel '--------------------------로그인 관련----------------------------- Private loginState As Boolean = False '------------------------------------------------------------------ Private Const stateLength As Int16 = 13 Private Const packingLength As Int16 = 12 Private DBCmd As String Private txbArrayList(,) As TextBox '-------------------------패킹관련------------------------ Private mapStateOK As Boolean = True Private mapPackOk As Boolean = True Private mapInvOk As Boolean = True Private stateFullCount As Integer = 0 Private packFullCount As Integer = 0 Private TDUseCompare As Boolean = False Const invLimitCount As Int16 = 6 Const StoreLimitCount As Int16 = 10 Const StoreLimitMax As Int16 = 14 '-------------------------검색 관련------------------------- Private ModifySwitch As Boolean = False '' 수정 더블클릭 시 온오프 Private ModifyListSwitch As Boolean = False '' 수정 완료 시 리스트 새로고침 기능 온오프 Private DelFuncSwitch As Boolean = False Private Enum itemInfoList code name count face eye id_Serial '' 전표 : api id 코드, 맵핑 : 제품 시리얼 번호 pk_Type '' 전표 : pk 코드, 맵핑 : 물품 타입(완제품 혹은 구성품) type '' 정보 종합 시 물품 타입 저장 serial '' 정보 종합 시 제품 시리얼 번호 저장 nowcount End Enum Private chkItem(itemInfoList.pk_Type) As String Private Enum directData state code name count id End Enum Private ChkItemSet(,) As String '' 전표 데이터 Private packItemSet(,) As String '' 패킹 데이터 Private apiItemSet(,) As String '' api 등록용 데이터 백업 배열 Private btnArrayList(,) As Button Const btnCount As Int16 = 2 '' 수정 및 삭제 관련 Const indexDefault As Int16 = 16 Const indexRange As Int16 = 6 '' 패킹맵핑진행 - 텍스트 박스 및 버튼 위치 데이터 Const prodMapStartCol As Int16 = 3 Const prodMapHeight As Int16 = 39 Const maplocplus As Int16 = 5 ''출하내용확인 - 텍스트 박스 및 버튼 위치 데이터 Private prodInfoWidth(txbList.Remove), prodInfoRow(txbList.Remove) As Int16 Const locplus As Int16 = 10 ''출하내용확인 텍스트박스 간격 Const prodInfoHeight As Int16 = 49 '' 텍스트박스, 버튼 세로 사이즈 Const prodInfoStartCol As Int16 = 57 '' 텍스트박스 시작 부분 세로 위치 Private Enum firstStateList ERP MES End Enum Private firstState(firstStateList.MES) As String Private Enum modelList PRO = 1 LUX MAXIMUM Alpha Alto Effect End Enum Private Const modelPosition As Int16 = 1 Private Enum typeList prodSet_V1 prodFace_V2 prodEye prodBody End Enum Private Const typePosition As Int16 = 2 Private Const colorPosition As Int16 = 11 Private Enum txbList Name Count Face Eye Modify Remove End Enum Private txbSetName(txbList.Remove) As String Private Enum ProdList OrderCode BuyDate AccountCode '' mes 때문에 적용 혹시 모르니 나중에 사용할 수도 있음 AccountName OrdererCode OrdererName phone '' mes 때문에 적용 혹시 모르니 나중에 사용할 수도 있음 zip Address Refer End Enum Private ProdSelect(ProdList.Refer) As String '' mes 관련 Private mesDate As DateTime '' 바코드 관련 Public InputCnt As Long Public InputCntVal As Integer = 13 Private Enum parsingCode data row id itemcount regDate accuount code '' resultcode 등등 code 명령어 전부 name '' name 명령어 전부 orderDetail orderSheet ordererCode ordererName phone zip address item state End Enum Private apiCommand(parsingCode.state) As String ''세트코드 관련 Private setCodeUse As Boolean = False Private Enum defaultList regDate accCode accName chrCode warehouse ordCode ordName country recName phone zip address refer End Enum Private defaultData(defaultList.refer) As String Private Enum invList cj2 = 3 hanjin = 4 hanjin2 = 5 cj = 6 End Enum Private Sub frm_Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load DataSetting() formSetting() funcSetting() txbStateRead.Focus() End Sub Private Sub funcSetting() rdbState.Checked = True ckbBarcode.Checked = True End Sub Private Sub barTimer_Tick(sender As Object, e As EventArgs) Handles barTimer.Tick If InputCnt Then InputCnt -= 1 Else barTimer.Enabled = False If ckbBarcode.Checked Then btnSearch_Click(sender, e) Else txbStateRead.Focus() txbStateRead.Refresh() End If End If End Sub Private Sub txbStateRead_TextChanged(sender As Object, e As EventArgs) Handles txbStateRead.TextChanged, txbStateRead.Click If txbStateRead.Enabled = True Then Dim tmpStr As String txbStateRead.BackColor = Color.White If InputCnt = 0 And ckbBarcode.Checked = True Then If txbStateRead.Text <> String.Empty Then tmpStr = txbStateRead.Text If (Len(tmpStr) > 1) Then tmpStr = Mid(tmpStr, Len(tmpStr), 1) txbStateRead.Clear() txbStateRead.AppendText(tmpStr) End If SetInputCnt() End If End If End If End Sub Private Sub SetInputCnt() InputCnt = InputCntVal barTimer.Enabled = True End Sub Private Sub formSetting() Me.Text = programName & programVer Me.Size = New Drawing.Size(1920, 1060) End Sub Private Sub DataSetting() txbNameValue(funcList.search) prodInfoWidth(txbList.Modify) = "95" prodInfoWidth(txbList.Remove) = "95" prodInfoRow(txbList.Modify) = "1029" prodInfoRow(txbList.Remove) = "1131" txbSetName(txbList.Modify) = "btnModify" txbSetName(txbList.Remove) = "btnRemove" firstState(firstStateList.ERP) = "E040221" firstState(firstStateList.MES) = "ORD" setPanel(funcList.search) = pnProdInfo setPanel(funcList.mapstate) = pnMapStProd setPanel(funcList.mappack) = pnMapPkProd setPanel(funcList.msstate) = pnMsStProd setPanel(funcList.mspack) = pnMsPkProd apiCommand(parsingCode.data) = "data" apiCommand(parsingCode.row) = "rows" apiCommand(parsingCode.id) = "id" apiCommand(parsingCode.itemcount) = "expectedOutCount" apiCommand(parsingCode.regDate) = "createdAt" apiCommand(parsingCode.accuount) = "Partner" apiCommand(parsingCode.code) = "code" apiCommand(parsingCode.name) = "name" apiCommand(parsingCode.orderDetail) = "OrderDetail" apiCommand(parsingCode.orderSheet) = "OrderSheet" apiCommand(parsingCode.ordererCode) = "customerId" apiCommand(parsingCode.ordererName) = "receiverName" apiCommand(parsingCode.phone) = "receiverPhoneNumber" apiCommand(parsingCode.zip) = "receiverZipCode" apiCommand(parsingCode.address) = "receiverAddress" apiCommand(parsingCode.item) = "Item" apiCommand(parsingCode.state) = "state" End Sub Private Sub txbNameValue(valueType As Int16) '' order 데이터 - true / packing 데이터 - false For i = 0 To txbList.Eye txbSetName(i) = String.Empty prodInfoWidth(i) = 0 prodInfoRow(i) = 0 Next Select Case valueType Case funcList.search txbSetName(txbList.Name) = "txbProdName" txbSetName(txbList.Count) = "txbProdCount" txbSetName(txbList.Face) = "txbProdFace" txbSetName(txbList.Eye) = "txbProdEye" prodInfoWidth(txbList.Name) = "660" prodInfoWidth(txbList.Count) = "80" prodInfoWidth(txbList.Face) = "118" prodInfoWidth(txbList.Eye) = "131" prodInfoRow(txbList.Name) = "20" prodInfoRow(txbList.Count) = "685" prodInfoRow(txbList.Face) = "769" prodInfoRow(txbList.Eye) = "891" Case funcList.mapstate txbSetName(txbList.Name) = "txbMapName" txbSetName(txbList.Count) = "txbMapCount" txbSetName(txbList.Face) = "txbMapFace" txbSetName(txbList.Eye) = "txbMapEye" prodInfoWidth(txbList.Name) = "564" prodInfoWidth(txbList.Count) = "106" prodInfoWidth(txbList.Face) = "110" prodInfoWidth(txbList.Eye) = "110" prodInfoRow(txbList.Name) = "15" prodInfoRow(txbList.Count) = "585" prodInfoRow(txbList.Face) = "695" prodInfoRow(txbList.Eye) = "810" Case funcList.mappack txbSetName(txbList.Name) = "txbPackName" txbSetName(txbList.Count) = "txbPackCount" txbSetName(txbList.Face) = "txbPackFace" txbSetName(txbList.Eye) = "txbPackEye" prodInfoWidth(txbList.Name) = "564" prodInfoWidth(txbList.Count) = "106" prodInfoWidth(txbList.Face) = "110" prodInfoWidth(txbList.Eye) = "110" prodInfoRow(txbList.Name) = "15" prodInfoRow(txbList.Count) = "585" prodInfoRow(txbList.Face) = "695" prodInfoRow(txbList.Eye) = "810" Case funcList.msstate txbSetName(txbList.Name) = "txbMsStName" txbSetName(txbList.Count) = "txbMsStCount" txbSetName(txbList.Face) = "txbMsStFace" txbSetName(txbList.Eye) = "txbMsStEye" prodInfoWidth(txbList.Name) = "564" prodInfoWidth(txbList.Count) = "106" prodInfoWidth(txbList.Face) = "110" prodInfoWidth(txbList.Eye) = "110" prodInfoRow(txbList.Name) = "15" prodInfoRow(txbList.Count) = "585" prodInfoRow(txbList.Face) = "695" prodInfoRow(txbList.Eye) = "810" Case funcList.mspack txbSetName(txbList.Name) = "txbMsPkName" txbSetName(txbList.Count) = "txbMsPkCount" txbSetName(txbList.Face) = "txbMsPkFace" txbSetName(txbList.Eye) = "txbMsPkEye" prodInfoWidth(txbList.Name) = "564" prodInfoWidth(txbList.Count) = "106" prodInfoWidth(txbList.Face) = "110" prodInfoWidth(txbList.Eye) = "110" prodInfoRow(txbList.Name) = "15" prodInfoRow(txbList.Count) = "585" prodInfoRow(txbList.Face) = "695" prodInfoRow(txbList.Eye) = "810" End Select End Sub Private Sub NowTimer_Tick(sender As Object, e As EventArgs) Handles NowTimer.Tick lblTime.Text = Now End Sub Private Sub btnSearch_Click(sender As Object, e As EventArgs) Handles btnSearch.Click If btnSearch.Text = "등 록" Then If rdbMass.Checked = True Then If compareSaveEx() Then txbStateRead.BackColor = Color.Red Else txbStateRead.BackColor = Color.Green End If Else If compareSave() Then txbStateRead.BackColor = Color.Red Else txbStateRead.BackColor = Color.Green End If End If Else If txbStateRead.Text.Replace(" ", "") = "" Then MsgBox("검색란이 비워져 있습니다. 검색하고자 하는 전표번호를 입력하여 주십시오.", vbExclamation) Exit Sub End If If rdbState.Checked = True Then compareClear() If orderSearch(txbStateRead.Text) Then txbStateRead.BackColor = Color.Green Else txbStateRead.BackColor = Color.Red End If ElseIf rdbMap.Checked = True Then If mappingRunning(txbStateRead.Text) Then txbStateRead.BackColor = Color.Green Else txbStateRead.BackColor = Color.Red End If Else If MassPacking_Ex2(txbStateRead.Text) Then txbStateRead.BackColor = Color.Green Else txbStateRead.BackColor = Color.Red End If End If End If txbStateRead.Focus() End Sub '-------------------------------대량 포장---------------------------------- Private Sub MassTxbReset() gbMsInfo.BackColor = SystemColors.Control txbMsState.Text = "N/A" txbMsDate.Text = "N/A" txbMsOrder.Text = "N/A" txbMsAccount.Text = "N/A" txbMsRefer.Text = "N/A" gbMsPkInfo.BackColor = SystemColors.Control txbMsPacking.Text = "N/A" txbMsPkDate.Text = "N/A" 'txbMsInv.Text = String.Empty txbMsState.Refresh() txbMsDate.Refresh() txbMsOrder.Refresh() txbMsAccount.Refresh() txbMsRefer.Refresh() txbMsPacking.Refresh() txbMsPkDate.Refresh() 'txbMsInv.Refresh() End Sub Private Sub MassReset() StartFunc = True fullSuccess = False stateSuccess = False packSuccess = False invSuccess = False StateTxbClear(funcList.msstate) StateTxbClear(funcList.mspack) MassTxbReset() compareValueClean() End Sub Private Sub msPKTxbReset() gbMsPkInfo.BackColor = SystemColors.Control txbMsPacking.Text = "N/A" txbMsPkDate.Text = "N/A" txbMsPacking.Refresh() txbMsPkDate.Refresh() End Sub Private Sub StateReset() gbMsInfo.BackColor = SystemColors.Control txbMsState.Text = "N/A" txbMsDate.Text = "N/A" txbMsOrder.Text = "N/A" txbMsAccount.Text = "N/A" txbMsRefer.Text = "N/A" txbMsState.Refresh() txbMsDate.Refresh() txbMsOrder.Refresh() txbMsAccount.Refresh() txbMsRefer.Refresh() End Sub Private Sub PackReset() gbMsPkInfo.BackColor = SystemColors.Control txbMsPacking.Text = "N/A" txbMsPkDate.Text = "N/A" txbMsPacking.Refresh() txbMsPkDate.Refresh() End Sub Private StartFunc As Boolean = True Private invSuccess As Boolean = False Private packSuccess As Boolean = False Private stateSuccess As Boolean = False Private fullSuccess As Boolean = False Private RequestCount As Integer = 0 '' 요청수량 Private WorkCount As Integer = 0 '' 작업 수량 Private LeftOverCount As Integer = 0 '' 남은수량 Private StartTime As TimeSpan Private EndTime As TimeSpan Private UseTime As TimeSpan Private AverTime As TimeSpan Private SetPKCode As String = String.Empty Private SetIdCode() As Integer Private Sub MassResetEx() StateTxbClear(funcList.msstate) StateTxbClear(funcList.mspack) MassValueClear() MassTxbClear() End Sub Private Sub MassPackReset() StateTxbClear(funcList.mspack) ReDim packItemSet(0, 0) txbLabelCode.Text = String.Empty txbLabelCode.BackColor = Color.White End Sub Private Sub MassValueClear() stateSuccess = False packSuccess = False fullSuccess = False StartFunc = False invSuccess = False StartTime = TimeSpan.Zero EndTime = TimeSpan.Zero UseTime = TimeSpan.Zero AverTime = TimeSpan.Zero SetPKCode = String.Empty ReDim SetIdCode(0) End Sub Private Sub MassTxbClear() txbMsState.Text = String.Empty txbMsDate.Text = String.Empty txbMsOrder.Text = String.Empty txbMsAccount.Text = String.Empty txbMsRefer.Text = String.Empty txbMsPacking.Text = String.Empty txbMsPkDate.Text = String.Empty txbLabelCode.Text = String.Empty RequestCount = 0 txbRequest.Text = RequestCount txbRequest.ForeColor = Color.Black WorkCount = 0 txbWork.Text = WorkCount txbWork.ForeColor = Color.Black LeftOverCount = 0 txbLeftOver.Text = LeftOverCount txbLeftOver.ForeColor = Color.Black lbTimeStart.Text = StartTime.ToString("hh\:mm\:ss") lbTimeEnd.Text = EndTime.ToString("hh\:mm\:ss") lbTimeTotal.Text = UseTime.ToString("hh\:mm\:ss") lbTimeAver.Text = AverTime.ToString("hh\:mm\:ss") End Sub Private Function MassPacking_Ex2(codeData As String) As Boolean If StartFunc Then MassResetEx() End If If fullSuccess = True Then If codeData.Replace(" ", "") = "" Then MsgBox("라벨번호를 입력하지 않았습니다.", vbExclamation) Return False End If 'If IsNumeric(codeData) = False Then ' MsgBox("양식에 맞지 않는 입고번호입니다.", vbExclamation) ' Return False 'End If If codeData.Length < StoreLimitCount Or codeData.Length > StoreLimitMax Then MsgBox("양식에 맞지 않는 입고번호입니다.", vbExclamation) Return False End If Dim frontTxb As String = Mid(codeData, 1, 1) If frontTxb = "3" Or frontTxb = "402" Then '250310 대량 맵핑시 한진 택배 송장 번호와 동일하게 시작하여 수정 (4 -> 402) MsgBox("제품 시리얼 번호는 등록할 수 없습니다.", vbExclamation) Return False End If If SerialCheck(codeData) Then '' 중복 유무 확인 MsgBox("패킹 번호는 송장 번호로 사용할 수 없습니다.", vbExclamation) Return False End If txbLabelCode.Text = codeData txbLabelCode.BackColor = Color.ForestGreen WorkCount += 1 LeftOverCount -= 1 txbWork.Text = WorkCount txbWork.ForeColor = Color.Blue txbLeftOver.Text = LeftOverCount txbLeftOver.ForeColor = Color.Red If RequestCount = WorkCount Then invSuccess = True Else fullSuccess = False invSuccess = False packSuccess = False End If Else If codeData.Length = packingLength Then MassPackReset() If stateSuccess = False Then MsgBox("전표 데이터를 알 수 없습니다. 전표 데이터를 먼저 스캔하여 주십시오.", vbExclamation) Return False End If If packingCompare(codeData) Then '' 패킹 내역 존재 유무 Return False End If If mappingComapare(codeData) Then '' 맵핑 유무 확인 Return False End If If SerialCheck(codeData) Then '' 중복 유무 확인 Return False End If If packingSearch(codeData) Then Return False End If If comSearch(codeData) Then Return False End If If packDateSearch(codeData) Then Return False End If txbMsPacking.Text = codeData If massListSetting(pnMsPkProd, funcList.mspack, False) Then Return False End If gbMapPkInfo.BackColor = Color.ForestGreen packSuccess = True Else gbMsState.Text = "■ 출하지시서 정보" If Mid(codeData, 1, 7) = firstState(firstStateList.ERP) Or Mid(codeData, 1, 3) = firstState(firstStateList.MES) Then setCodeUse = False stateFullCount = 0 If ckbAPIUse.Checked = True Then If ExistApiCompare(codeData) Then Return False End If If ckbPostgre.Checked = True Then If useAPIDirect(codeData) Then Return False End If Else If mesRunning(codeData) Then Return False End If End If Else If ExistDataCompare(codeData) Then Return False End If If completeCompare(codeData) Then Return False End If If orderer_Search(codeData) Then Return False End If If Product_Search(codeData) Then Return False End If End If apiBackupData() If PKCodeCheck() Then Return False End If If PKCodeSearch() Then Return False End If If massListSetting(pnMsStProd, funcList.msstate, True) Then Return False End If txbMsState.Text = ProdSelect(ProdList.OrderCode) txbMsDate.Text = ProdSelect(ProdList.BuyDate) txbMsOrder.Text = ProdSelect(ProdList.OrdererName) txbMsAccount.Text = ProdSelect(ProdList.AccountName) txbMsRefer.Text = ProdSelect(ProdList.Refer) gbMapStInfo.BackColor = Color.ForestGreen StartTime = DateTime.Now.TimeOfDay lbTimeStart.Text = StartTime.ToString("hh\:mm\:ss") stateSuccess = True Else MsgBox("번호 양식에 맞지 않는 번호입니다. 확인하여 주십시오.", vbExclamation) Return False End If End If If packSuccess = True And stateSuccess = True Then If statePackmsCompare() Then Return False End If fullSuccess = True End If End If If fullSuccess = True And invSuccess = True Then If ckbAuto.Checked = True Then If compareSaveEx() Then Return False End If Else btnSearch.Text = "등 록" End If End If Return True End Function Private Function PKCodeSearch() As Boolean DBCmd = "SELECT un.ItemCode,un.ItemName,pk.ProdCount,pd.FaceShot,pd.EyeShot 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 & "'" If DBQueryReader(DBCmd) Then Dim dataCount As Integer = 0 Dim rowNum As Integer = (sqlDataQuery.Length / 5) - 1 ReDim ChkItemSet(itemInfoList.id_Serial, rowNum) For i = 0 To rowNum For n = 0 To itemInfoList.eye ChkItemSet(n, i) = sqlDataQuery(dataCount) dataCount += 1 Next Next Return False Else MsgBox("해당 세트 코드에 대한 데이터가 존재하지 않습니다.", vbCritical) Return True End If End Function Private Function PKCodeCheck() As Boolean ReDim SetIdCode(ChkItemSet.GetLength(1) - 1) For i = 0 To ChkItemSet.GetLength(1) - 1 If i = 0 Then SetPKCode = ChkItemSet(itemInfoList.code, i) Else If SetPKCode <> ChkItemSet(itemInfoList.code, i) Then MsgBox("서로 다른 세트 코드가 존재합니다. 확인하여 주십시오.", vbCritical) Return True End If End If SetIdCode(i) = ChkItemSet(itemInfoList.id_Serial, i) Next gbMsState.Text = "■ 출하지시서 정보 : " & SetPKCode RequestCount = ChkItemSet.GetLength(1) LeftOverCount = RequestCount txbRequest.Text = RequestCount txbWork.Text = WorkCount txbLeftOver.Text = LeftOverCount Return False End Function Private Function SerialCheck(codeData As String) As Boolean If stateSuccess = True Then For i = 0 To ChkItemSet.GetLength(1) - 1 If InStr(ChkItemSet(itemInfoList.id_Serial, i), codeData) > 0 Then MsgBox("중복값이 존재합니다.", vbExclamation) Return True End If Next End If Return False End Function Private Function compareSaveEx() As Boolean txbStateRead.Enabled = False txbStateRead.Text = "등록중" txbStateRead.BackColor = Color.Yellow Dim nowToday As String = Format(Now, "yyyy") & "-" & Format(Now, "MM") & "-" & Format(Now, "dd") If ckbAPIUse.Checked = True Then If rdbMass.Checked = True Then If apiMassSave() Then failForm() Return True End If 'If apiSerialSave() Then ' failForm() ' Return True 'End If Else apiSerialData() If mesDataReg() Then failForm() Return True End If If mesDBOrderReg(nowToday) Then failForm() Return True End If End If Else If rdbStateInv.Checked = True Then If dbSaveInv(nowToday) Then failForm() Return True End If Else If dbSave(nowToday) Then failForm() Return True End If End If End If txbStateRead.Text = "등록완료" StartFunc = True EndTime = DateTime.Now.TimeOfDay lbTimeEnd.Text = EndTime.ToString("hh\:mm\:ss") lbTimeEnd.Refresh() UseTime = EndTime - StartTime lbTimeTotal.Text = UseTime.ToString("hh\:mm\:ss") lbTimeTotal.Refresh() Dim AverResult As Integer = CInt(UseTime.TotalSeconds) AverResult = AverResult / RequestCount AverTime = TimeSpan.FromSeconds(AverResult) lbTimeAver.Text = AverTime.ToString("hh\:mm\:ss") lbTimeAver.Refresh() gbMapStInfo.BackColor = SystemColors.Control gbMapPkInfo.BackColor = SystemColors.Control btnSearch.Text = "검 색" txbInv.Enabled = False txbStateRead.Enabled = True txbStateRead.SelectionStart = txbStateRead.TextLength txbStateRead.ScrollToCaret() Return False End Function Private Function msProduct_Search(DataCode As String) As Boolean Dim QueryCount As Integer = 0 DBCmd = "SELECT Item_Code,Item_Name,Item_Count,Apply_Face,Apply_Eye FROM " & applyOrderDB & " WHERE Order_Code = '" & DataCode & "'" If DBQueryReader(DBCmd) Then Dim DataCount As Integer = sqlDataQuery.Length If rdbState.Checked = True Then ReDim ChkItemSet(itemInfoList.eye, (DataCount / (itemInfoList.eye + 1)) - 1) Else ReDim ChkItemSet(itemInfoList.nowcount, (DataCount / (itemInfoList.eye + 1)) - 1) End If For row = 0 To ChkItemSet.GetLength(1) - 1 For col = 0 To itemInfoList.eye ChkItemSet(col, row) = sqlDataQuery(QueryCount) QueryCount += 1 Next Next Return False Else Return True End If End Function Private Function massListSetting(pntype As Panel, valueType As Int16, type As Boolean) As Boolean '' 전표번호 : true / 패킹번호 : false Try Dim RowDataCount As Integer Dim txbCount As Int16 If type = True Then RowDataCount = ChkItemSet.GetLength(1) - 1 StateTxbClear(funcList.msstate) txbCount = txbList.Eye ReDim txbArrayList(RowDataCount, txbList.Eye) Else RowDataCount = packItemSet.GetLength(1) - 1 StateTxbClear(funcList.mspack) txbCount = txbList.Eye End If Dim prodMapCol As Integer = 0 For cnt = 0 To RowDataCount For i = 0 To txbCount Dim txtBox As TextBox = New TextBox If cnt = 0 Then prodMapCol = prodMapStartCol Else If i = txbList.Name Then prodMapCol = prodMapCol + prodMapHeight + maplocplus End If End If txtBox.Name = txbSetName(i) & cnt pntype.Controls.Add(txtBox) txtBox.Font = New Font("함초롱바탕", 18, FontStyle.Bold) txtBox.Size = New Drawing.Size(prodInfoWidth(i), prodMapHeight) txtBox.Location = New Point(prodInfoRow(i), prodMapCol) If type = True Then txtBox.Text = ChkItemSet(i + 1, cnt) txbArrayList(cnt, i) = txtBox If i = txbList.Count + 1 Then stateFullCount += ChkItemSet(itemInfoList.count, cnt) End If Else txtBox.Text = packItemSet(i + 1, cnt) If i = txbList.Count + 1 Then packFullCount += packItemSet(itemInfoList.count, cnt) End If End If txtBox.ReadOnly = True txtBox.BackColor = Color.White Next Next Return False Catch ex As Exception MsgBox("리스트를 생성하는 도중 오류가 발생하였습니다. :: " & ex.Message, vbCritical) Return True End Try End Function Private Function statePackmsCompare() As Boolean If ChkItemSet.GetLength(1) = packItemSet.GetLength(1) Then For pack = 0 To packItemSet.GetLength(1) - 1 Dim checkOk As Boolean = False For chkState = 0 To ChkItemSet.GetLength(1) - 1 Dim packCodeData As String Dim packCode As String = packItemSet(itemInfoList.code, pack) Dim codeNum As Int16 = UBound(Split(packItemSet(itemInfoList.code, pack), "/")) For i = 0 To codeNum If i = codeNum Then packCodeData = Mid(packCode, 1, packCode.Length) Else packCodeData = Mid(packCode, 1, InStr(packCode, "/") - 1) packCode = Mid(packCode, InStr(packCode, "/") + 1, packCode.Length) End If If packCodeData = ChkItemSet(itemInfoList.code, chkState) Then If ChkItemSet(itemInfoList.count, chkState) = packItemSet(itemInfoList.count, pack) Then If ChkItemSet(itemInfoList.face, chkState) = packItemSet(itemInfoList.face, pack) Then If ChkItemSet(itemInfoList.eye, chkState) = packItemSet(itemInfoList.eye, pack) Then If ChkItemSet(itemInfoList.id_Serial, chkState) = String.Empty Then ChkItemSet(itemInfoList.id_Serial, chkState) = packItemSet(itemInfoList.id_Serial, pack) Else ChkItemSet(itemInfoList.id_Serial, chkState) = ChkItemSet(itemInfoList.id_Serial, chkState) & "/" & packItemSet(itemInfoList.id_Serial, pack) End If checkOk = True Exit For End If End If End If End If Next If checkOk = True Then Exit For End If Next If checkOk = False Then For i = 0 To txbList.Eye txbArrayList(pack, i).BackColor = Color.Red Next gbMapPkInfo.BackColor = Color.Red MsgBox("맞지 않는 제품이 포장되어 있습니다. 확인하여 주십시오.", vbCritical) Return True End If Next Return False Else For i = 0 To packItemSet.GetLength(1) - 1 txbArrayList(i, txbList.Count).BackColor = Color.Red Next gbMapPkInfo.BackColor = Color.Red MsgBox("항목 개수가 맞지 않습니다.", vbCritical) Return True End If End Function '-------------------------------출하 검색---------------------------------- Private Function orderSearch(codeData As String) As Boolean If codeData.Length = packingLength Then If packingCompare(codeData) Then Return False End If Dim orderPackCode As String = orderPackingCompare(codeData) If orderPackCode = "FAIL" Then Return False End If If orderPackCode = "NOLINK" Then nolinkOutput() Else If orderer_Search(orderPackCode) Then Return False End If End If If packingSearch(codeData) Then Return False End If If comSearch(codeData) Then Return False End If If ListSetting(True) Then MsgBox("제품 리스트 생성 중 오류가 발생하였습니다.", vbCritical) Return False End If Else If Mid(codeData, 1, 7) = firstState(firstStateList.ERP) Or Mid(codeData, 1, 3) = firstState(firstStateList.MES) Then If ckbAPIUse.Checked = True Then If mesRunning(codeData) Then Return False End If Else If ExistDataCompare(codeData) Then Return False End If If orderer_Search(codeData) Then Return False End If If Product_Search(codeData) Then MsgBox("해당 전표코드의 제품 데이터가 존재하지 않습니다.", vbCritical) Return False End If End If If ListSetting(True) Then Return False End If Else MsgBox("전표번호 양식과 맞지 않습니다. 전표번호를 확인하여 주십시오.", vbExclamation) Return False End If End If txbChkState.Text = ProdSelect(ProdList.OrderCode) txbChkCode.Text = ProdSelect(ProdList.OrdererCode) txbChkOrderer.Text = ProdSelect(ProdList.OrdererName) txbChkAcc.Text = ProdSelect(ProdList.AccountName) txbChkDate.Text = ProdSelect(ProdList.BuyDate) txbChkRefer.Text = ProdSelect(ProdList.Refer) txbChkAD.Text = ProdSelect(ProdList.Address) Return True End Function Private Function mesRunning(codeData As String) As Boolean mesDate = Nothing If mesDateSet(codeData) Then MsgBox("MES 형식과 맞지 않는 코드 번호입니다.", vbExclamation) Return True End If Dim searchData As String = "createdAtFrom=" & mesDate & "&createdAtTo=" & mesDate.AddDays(1) & "" Dim apiResult As String = apiRequest_GET(apiItemOutURL, searchData) If apiResult = "-1" Then MsgBox("등록된 데이터가 존재하지 않습니다.", vbExclamation) Return True End If If mesParsing(apiResult, codeData) Then Return True End If mesShotSearch() ProdSelect(ProdList.OrderCode) = codeData Return False End Function Private Sub mesShotSearch() For i = 0 To ChkItemSet.GetLength(1) - 1 DBCmd = "SELECT FaceShot,EyeShot FROM " & applyPlistDB & " WHERE ItemCode = '" & ChkItemSet(itemInfoList.code, i) & "'" If DBQueryReader(DBCmd) Then ChkItemSet(itemInfoList.face, i) = sqlDataQuery(0) ChkItemSet(itemInfoList.eye, i) = sqlDataQuery(1) Else ChkItemSet(itemInfoList.face, i) = 0 ChkItemSet(itemInfoList.eye, i) = 0 End If Next End Sub Private Function mesParsing(pData As String, codeData As String) As Boolean Try Dim dataCount As Int16 = 0 Dim codeExist As Boolean = False If rdbState.Checked = True Then ReDim ChkItemSet(itemInfoList.id_Serial, 0) ElseIf rdbMap.Checked = True Then ReDim ChkItemSet(itemInfoList.serial, 0) Else ReDim ChkItemSet(itemInfoList.nowcount, 0) End If ReDim ProdSelect(ProdList.Refer) Dim jQuery As JObject = JObject.Parse(pData) pData = jQuery.SelectToken(apiCommand(parsingCode.code)).ToString If pData <> "SUCCESS" Then MsgBox("Data를 불러오는데 실패하였습니다.", vbCritical) Return True End If pData = jQuery.SelectToken(apiCommand(parsingCode.data)).ToString jQuery = JObject.Parse(pData) pData = jQuery.SelectToken(apiCommand(parsingCode.row)).ToString If pData = "[]" Then MsgBox("MES에 존재하지 않은 데이터입니다.", vbExclamation) 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 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 = codeData Then Dim NowState As String = jsArray(cnt)(apiCommand(parsingCode.state)).ToString If NowState <> "canceled" Then If rdbState.Checked = True Then ReDim Preserve ChkItemSet(itemInfoList.id_Serial, dataCount) ElseIf rdbMap.Checked = True Then ReDim Preserve ChkItemSet(itemInfoList.serial, dataCount) Else ReDim Preserve ChkItemSet(itemInfoList.nowcount, dataCount) End If ChkItemSet(itemInfoList.id_Serial, dataCount) = jsArray(cnt)(apiCommand(parsingCode.id)).ToString ProdSelect(ProdList.OrdererCode) = jQuery.SelectToken(apiCommand(parsingCode.ordererCode)).ToString ProdSelect(ProdList.OrdererName) = jQuery.SelectToken(apiCommand(parsingCode.ordererName)).ToString ProdSelect(ProdList.phone) = jQuery.SelectToken(apiCommand(parsingCode.phone)).ToString ProdSelect(ProdList.zip) = jQuery.SelectToken(apiCommand(parsingCode.zip)).ToString ProdSelect(ProdList.Address) = jQuery.SelectToken(apiCommand(parsingCode.address)).ToString ChkItemSet(itemInfoList.count, dataCount) = jsArray(cnt)(apiCommand(parsingCode.itemcount)).ToString ProdSelect(ProdList.BuyDate) = jsArray(cnt)(apiCommand(parsingCode.regDate)).ToString Dim parterInfo As String = jsArray(cnt)(apiCommand(parsingCode.accuount)).ToString If parterInfo <> Nothing Then jQuery = JObject.Parse(parterInfo) ProdSelect(ProdList.AccountCode) = jQuery.SelectToken(apiCommand(parsingCode.code)).ToString ProdSelect(ProdList.AccountName) = jQuery.SelectToken(apiCommand(parsingCode.name)).ToString Else ProdSelect(ProdList.AccountCode) = String.Empty ProdSelect(ProdList.AccountName) = String.Empty End If Dim itemInfo As String = jsArray(cnt)(apiCommand(parsingCode.item)).ToString If itemInfo <> Nothing Then jQuery = JObject.Parse(itemInfo) ChkItemSet(itemInfoList.code, dataCount) = jQuery.SelectToken(apiCommand(parsingCode.code)).ToString ChkItemSet(itemInfoList.name, dataCount) = jQuery.SelectToken(apiCommand(parsingCode.name)).ToString Else MsgBox("등록 데이터 중 제품이 등록되어 있지 않는 항목이 존재합니다.", vbExclamation) Return False End If dataCount += 1 codeExist = False End If Else If ChkItemSet(itemInfoList.code, 0) = "" Then codeExist = True End If End If End If Next If codeExist = True Then MsgBox("등록된 코드 번호가 존재하지 않습니다. 번호를 확인하여 주십시오.", vbExclamation) Return True Else Return False End If Catch ex As Exception MsgBox("MES 데이터를 처리하는 도중 오류가 발생하였습니다." & vbCrLf & ex.Message) Return True End Try End Function Private Function mesDateSet(codeData As String) As Boolean Const yearFront As Int16 = 20 Const dateLength As Int16 = 6 If UBound(Split(codeData, firstState(firstStateList.MES))) > 0 Then If UBound(Split(codeData, "-")) > 0 Then Dim useDate As String = Mid(codeData, InStr(codeData, firstState(firstStateList.MES)) + firstState(firstStateList.MES).Length, InStr(codeData, "-") - firstState(firstStateList.MES).Length - 1) If useDate.Length = dateLength Then useDate = yearFront & Mid(useDate, 1, 2) & "-" & Mid(useDate, 3, 2) & "-" & Mid(useDate, 5, 2) mesDate = Convert.ToDateTime(useDate) Return False End If End If End If Return True End Function Private Function comSearch(codeData As String) As Boolean If comSearchCount(codeData) Then If comSearchOut() Then Return False Else Return True End If Else Return True End If End Function Private Function comSearchOut() As Boolean Try Const rowCount As Int16 = 2 Dim itemCode As String = Nothing Dim itemName As String = Nothing For i = 0 To cCountData.Length - 1 itemCode = Nothing itemName = Nothing If cCountData(i) <> 0 Then DBCmd = "SELECT ItemCode,ItemName FROM " & applyClistDB & " WHERE ProdCode = '" & i & "'" If DBQueryReader(DBCmd) Then For cnt = 0 To sqlDataQuery.Length - 1 If cnt Mod rowCount = 0 Then If itemCode = Nothing Then itemCode = sqlDataQuery(cnt) Else itemCode = itemCode & "/" & sqlDataQuery(cnt) End If Else If itemName = Nothing Then itemName = sqlDataQuery(cnt) Else If itemName.Length > sqlDataQuery(cnt).ToString.Length Then itemName = sqlDataQuery(cnt) End If End If End If Next Const firstDataNum As Int16 = 0 If rdbState.Checked = True Then If ChkItemSet(0, 0) = Nothing Then ReDim ChkItemSet(itemInfoList.pk_Type, firstDataNum) ChkItemSet(itemInfoList.code, firstDataNum) = itemCode ChkItemSet(itemInfoList.name, firstDataNum) = itemName ChkItemSet(itemInfoList.count, firstDataNum) = cCountData(i) ChkItemSet(itemInfoList.face, firstDataNum) = 0 ChkItemSet(itemInfoList.eye, firstDataNum) = 0 ChkItemSet(itemInfoList.pk_Type, firstDataNum) = 1 Else Dim chkCount As Int16 = ChkItemSet.GetLength(1) ReDim Preserve ChkItemSet(itemInfoList.pk_Type, chkCount) ChkItemSet(itemInfoList.code, chkCount) = itemCode ChkItemSet(itemInfoList.name, chkCount) = itemName ChkItemSet(itemInfoList.count, chkCount) = cCountData(i) ChkItemSet(itemInfoList.face, chkCount) = 0 ChkItemSet(itemInfoList.eye, chkCount) = 0 ChkItemSet(itemInfoList.pk_Type, chkCount) = 1 End If Else If packItemSet(0, 0) = Nothing Then ReDim packItemSet(itemInfoList.pk_Type, firstDataNum) packItemSet(itemInfoList.code, firstDataNum) = itemCode packItemSet(itemInfoList.name, firstDataNum) = itemName packItemSet(itemInfoList.count, firstDataNum) = cCountData(i) packItemSet(itemInfoList.face, firstDataNum) = 0 packItemSet(itemInfoList.eye, firstDataNum) = 0 packItemSet(itemInfoList.pk_Type, firstDataNum) = 1 Else Dim chkCount As Int16 = packItemSet.GetLength(1) ReDim Preserve packItemSet(itemInfoList.pk_Type, chkCount) packItemSet(itemInfoList.code, chkCount) = itemCode packItemSet(itemInfoList.name, chkCount) = itemName packItemSet(itemInfoList.count, chkCount) = cCountData(i) packItemSet(itemInfoList.face, chkCount) = 0 packItemSet(itemInfoList.eye, chkCount) = 0 packItemSet(itemInfoList.pk_Type, chkCount) = 1 End If End If Else MsgBox("존재하지 않은 소모품 항목이 존재합니다.", vbExclamation) Return False End If End If Next Return True Catch ex As Exception MsgBox("소모품 항목을 불러오는 도중 오류가 발생하였습니다. :: " & ex.Message, vbCritical) Return False End Try End Function Private Function comSearchCount(codeData As String) As Boolean DBCmd = "SELECT Mask5Cnt,Mask10Cnt,HairBandCnt,GelCnt,MiniGelCnt,AmpleCnt,CreamCnt,UmbrellaCnt,FenCnt,ChargerCnt,CableCnt,TonerCnt,Case_PRO_Black,Case_PRO_Beige,Case_PRO_Red,Case_PRO_Pink,Case_MAX_Black,Case_MAX_Apr,Case_MAX_Mint,Case_MAX_Beige,SoothingGelCnt,Carton0_Cnt,Carton1_Cnt,Carton2_Cnt,Carton3_Cnt,Carton4_Cnt,Carton5_Cnt,Carton6_Cnt,Shopbag_Cnt,CosShopbag_Cnt,DustBagCnt,Case_MAX_Purple,Case_PRO_SnakeBlakc,KollagenCnt,KollagenSetCnt,Kollagen_PCnt,KollagenSet_PCnt,CleansingWaterCnt,TonerPadCnt,Case_MAX_SafBK_Cnt,Hologram_1Cnt,Hologram_3Cnt,Hologram_5Cnt,Case_MAX_SafPp_Cnt,Case_MAX_Yellow,Kollagen_Pe1Cnt,Kollagen_Pe3Cnt,Kollagen_Pe5Cnt,ATCircleCaseCnt,APSquareCaseCnt,Case_MAX_Peach,MasSoothingCnt,Case_MAX_SMintCnt,MeshPouchCnt,FirmingAmpCnt,HyaluronicAmpCnt,nightshotcnt,morningshotcnt,casemaxwoodicnt,Elicolltonercnt, Elicollampcnt,Elicollcreamcnt,Elihyaltonercnt,Elihyalampcnt,Elihyalcreamcnt,Dayshotcnt,Beautyshopbagcnt,Gummycnt,Stickjellycnt,Newyearbagcnt,Emsbeltcnt,Beltbagcnt,Dayshot2cnt,Elixircnt FROM " & applySalesDB & " WHERE PackingCode = '" & codeData & "'" If DBQueryReader(DBCmd) Then For i = 0 To cCountList.Elixircnt cCountData(i) = Val(sqlDataQuery(i)) Next Return True Else MsgBox("소모품 관련 데이터를 확인할 수 없습니다.", vbExclamation) Return False End If End Function Private Function packingSearch(codeData As String) As Boolean If serialPacking(codeData) Then If serialDivision() Then Return False Else Return True End If Else Return True End If End Function Private Function serialDivision() As Boolean Dim slashNum As Int16 For i = 0 To pSerialData.Length - 1 Dim restData As String = pSerialData(i) If restData <> "0" Then slashNum = UBound(Split(restData, ",")) For slash = 0 To slashNum Dim serialData As String If slash = slashNum Then serialData = restData Else serialData = Mid(restData, 1, InStr(restData, ",") - 1) '' 302308110335 restData = Mid(restData, InStr(restData, ",") + 1, restData.Length) End If For chk = 0 To itemInfoList.pk_Type chkItem(chk) = Nothing Next If serialSearch(serialData) = False Then Return False End If Next End If Next Return True End Function Private Function serialSearch(serialData As String) As Boolean Const infoNum As Int16 = 1 Dim modelNumber As String = Mid(serialData, modelPosition, infoNum) Dim typeNumber As String = Mid(serialData, typePosition, infoNum) Dim sqlResult As String If modelNumber = modelList.PRO Or modelNumber = modelList.LUX Or modelNumber = modelList.Alpha Then If typeNumber = typeList.prodSet_V1 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 & "')" If DBQueryReader(DBCmd) Then chkItem(itemInfoList.face) = sqlDataQuery(typeList.prodFace_V2 - 1) chkItem(itemInfoList.eye) = sqlDataQuery(typeList.prodEye - 1) Else MsgBox("세트 제품의 샷 수를 알 수 없습니다.", vbExclamation) Return False End If Else sqlResult = singleCartShot(serialData) If sqlResult = "FAIL" Then Return False End If If typeNumber = typeList.prodFace_V2 Or typeNumber = typeList.prodBody Then chkItem(itemInfoList.face) = sqlResult chkItem(itemInfoList.eye) = "0" ElseIf typeNumber = typeList.prodEye Then chkItem(itemInfoList.face) = "0" chkItem(itemInfoList.eye) = sqlResult Else MsgBox("형식에 맞지 않은 바코드가 존재합니다.", vbCritical) Return False End If End If Else If modelNumber = modelList.MAXIMUM Then TDUseCompare = True Else TDUseCompare = False End If sqlResult = singleCartShot(serialData) If sqlResult = "FAIL" Then Return False End If If typeNumber = typeList.prodSet_V1 Or typeNumber = typeList.prodFace_V2 Then chkItem(itemInfoList.face) = sqlResult chkItem(itemInfoList.eye) = sqlResult Else MsgBox("형식에 맞지 않은 바코드가 존재합니다.", vbCritical) Return False End If End If If prodListSet(modelNumber, typeNumber, serialData) Then Return True Else Return False End If End Function Private Function singleCartShot(serialData As String) As String If TDUseCompare = True Then DBCmd = "SELECT Ct_Max_ShotCnt FROM " & applyCartDB & " WHERE Product_SN = '" & serialData & "'" Dim sqlResult As String = DBQueryScalar(DBCmd) If sqlResult = "False" Then MsgBox("단일 제품의 샷 수를 알 수 없습니다.", vbExclamation) Return "FAIL" End If Return sqlResult Else Return "0" End If End Function Private Function prodListSet(modelNumber As String, typeNumber As String, serialData As String) As Boolean Try Dim tempFaceShot As String = Nothing Dim tempEyeShot As String = Nothing Dim successSwitch As Boolean = False DBCmd = "SELECT count(ItemCode) FROM " & applyPlistDB & " WHERE FaceShot = '" & chkItem(itemInfoList.face) & "' AND EyeShot = '" & chkItem(itemInfoList.eye) & "'" Dim resultCount As String = DBQueryScalar(DBCmd) If resultCount = "False" Then MsgBox("샷 수에 따른 제품 코드를 검색하는 과정에서 오류가 발생하였습니다.", vbCritical) Return False End If If resultCount = "0" Then 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 tempFaceShot = chkItem(itemInfoList.face) tempEyeShot = chkItem(itemInfoList.eye) End If Const rowCount As Int16 = 2 Dim colorNumber As String = Mid(serialData, colorPosition, 1) DBCmd = "SELECT ItemCode,ItemName FROM " & applyPlistDB & " WHERE ModelNum = '" & modelNumber & "' AND TypeNum = '" & typeNumber & "' AND FaceShot = '" & tempFaceShot & "' AND EyeShot = '" & tempEyeShot & "' AND ColorNum = '" & colorNumber & "'" If DBQueryReader(DBCmd) Then For i = 0 To sqlDataQuery.Length - 1 If i Mod rowCount = 0 Then If chkItem(itemInfoList.code) = Nothing Then chkItem(itemInfoList.code) = sqlDataQuery(i) Else chkItem(itemInfoList.code) = chkItem(itemInfoList.code) & "/" & sqlDataQuery(i) End If Else If chkItem(itemInfoList.name) = Nothing Then chkItem(itemInfoList.name) = sqlDataQuery(i) Else If chkItem(itemInfoList.name).Length > sqlDataQuery(i).ToString.Length Then chkItem(itemInfoList.name) = sqlDataQuery(i) End If End If End If Next chkItem(itemInfoList.id_Serial) = serialData chkItem(itemInfoList.pk_Type) = 0 Else MsgBox("등록되지 않은 제품이 존재합니다.", vbExclamation) Return False End If If rdbState.Checked = True Then If ChkItemSet(0, 0) = Nothing Then ReDim ChkItemSet(itemInfoList.pk_Type, 0) For i = 0 To itemInfoList.pk_Type If i = itemInfoList.count Then ChkItemSet(i, 0) += 1 Else ChkItemSet(i, 0) = chkItem(i) End If Next Else For i = 0 To ChkItemSet.GetLength(1) - 1 If ChkItemSet(itemInfoList.code, i) = chkItem(itemInfoList.code) And ChkItemSet(itemInfoList.face, i) = chkItem(itemInfoList.face) And ChkItemSet(itemInfoList.eye, i) = chkItem(itemInfoList.eye) Then ChkItemSet(itemInfoList.count, i) += 1 successSwitch = True Exit For End If Next If successSwitch = False Then Dim chkLength As Int16 = ChkItemSet.GetLength(1) ReDim Preserve ChkItemSet(itemInfoList.pk_Type, chkLength) For i = 0 To itemInfoList.pk_Type If i = itemInfoList.count Then ChkItemSet(i, chkLength) += 1 Else ChkItemSet(i, chkLength) = chkItem(i) End If Next End If End If Else If packItemSet(0, 0) = Nothing Then ReDim packItemSet(itemInfoList.pk_Type, 0) For i = 0 To itemInfoList.pk_Type If i = itemInfoList.count Then packItemSet(i, 0) += 1 Else packItemSet(i, 0) = chkItem(i) End If Next Else For i = 0 To packItemSet.GetLength(1) - 1 If packItemSet(itemInfoList.code, i) = chkItem(itemInfoList.code) And packItemSet(itemInfoList.face, i) = chkItem(itemInfoList.face) And packItemSet(itemInfoList.eye, i) = chkItem(itemInfoList.eye) Then packItemSet(itemInfoList.count, i) += 1 successSwitch = True Exit For End If Next If successSwitch = False Then Dim chkLength As Int16 = packItemSet.GetLength(1) ReDim Preserve packItemSet(itemInfoList.pk_Type, chkLength) For i = 0 To itemInfoList.pk_Type If i = itemInfoList.count Then packItemSet(i, chkLength) += 1 Else packItemSet(i, chkLength) = chkItem(i) End If Next End If End If End If Return True Catch ex As Exception MsgBox("제품 검색 도중 오류가 발생하였습니다. :: " & ex.Message) Return False End Try End Function Private Function serialPacking(codeData As String) As Boolean DBCmd = "SELECT Main_Product_SN,Pro_Face_Serial,Pro_Eye_Serial,Pro_Body_Serial,Lux_Face_Serial,Lux_Eye_Serial,Lux_Body_Serial,MAXIMUM_SN,Alpha_Set_Serial,Alpha_Face_Serial,Alpha_Eye_Serial,Alpha_Body_Serial,Alto_Serial,Effect_serial FROM " & applySalesDB & " WHERE PackingCode = '" & codeData & "'" If DBQueryReader(DBCmd) Then For i = 0 To pSerialData.Length - 1 pSerialData(i) = sqlDataQuery(i) Next Else MsgBox("패킹 시리얼 번호를 검색하는 도중 오류가 발생하였습니다.") Return False End If Return True End Function Private Function mappingComapare(codeData As String) As Boolean DBCmd = "SELECT COUNT(Order_Code) FROM " & applyOrderDB & " WHERE Packing_Code = '" & codeData & "'" Dim sqlResult As String = DBQueryScalar(DBCmd) If sqlResult = "False" Then MsgBox("해당 데이터를 데이터베이스로 확인할 수 없습니다.", vbCritical) Return True End If If Val(sqlResult) > 0 Then MsgBox("이미 고객과 연결된 제품입니다.", vbExclamation) Return True End If Return False End Function Private Function orderPackingCompare(codeData As String) As String Const sqlLength As Int16 = 1 Dim orderCode As String DBCmd = "SELECT Order_Code FROM " & applyOrderDB & " WHERE Packing_Code = '" & codeData & "' GROUP BY Order_Code" If DBQueryReader(DBCmd) Then If sqlDataQuery.Length = sqlLength Then orderCode = sqlDataQuery(sqlLength - 1) Return orderCode Else MsgBox("중복 맵핑된 고객이 존재합니다. 데이터를 확인하여 주십시오.", vbExclamation) Return "FAIL" End If Else Return "NOLINK" End If End Function Private Function packingCompare(codeData As String) As Boolean DBCmd = "SELECT COUNT(PackingCode) FROM " & applySalesDB & " WHERE PackingCode = '" & codeData & "'" Dim result As String = DBQueryScalar(DBCmd) If result = "False" Then MsgBox("패킹 데이터를 불러오는 도중 오류가 발생하였습니다.") Return True End If If result = 0 Then MsgBox("패킹 내역이 존재하지 않습니다.", vbExclamation) Return True Else Return False End If End Function Private Function packListSetting(pntype As Panel, valueType As Int16, type As Boolean) As Boolean '' 전표번호 : true / 패킹번호 : false Try Dim RowDataCount As Integer If type = True Then RowDataCount = ChkItemSet.GetLength(1) - 1 StateTxbClear(funcList.mapstate) Else RowDataCount = packItemSet.GetLength(1) - 1 StateTxbClear(funcList.mappack) ReDim txbArrayList(RowDataCount, txbList.Eye) End If Dim prodMapCol As Integer = 0 For cnt = 0 To RowDataCount For i = 0 To txbList.Eye Dim txtBox As TextBox = New TextBox If cnt = 0 Then prodMapCol = prodMapStartCol Else If i = txbList.Name Then prodMapCol = prodMapCol + prodMapHeight + maplocplus End If End If txtBox.Name = txbSetName(i) & cnt pntype.Controls.Add(txtBox) txtBox.Font = New Font("함초롱바탕", 18, FontStyle.Bold) txtBox.Size = New Drawing.Size(prodInfoWidth(i), prodMapHeight) txtBox.Location = New Point(prodInfoRow(i), prodMapCol) If type = True Then txtBox.Text = ChkItemSet(i + 1, cnt) If i = txbList.Count + 1 Then stateFullCount += ChkItemSet(itemInfoList.count, cnt) End If Else txtBox.Text = packItemSet(i + 1, cnt) txbArrayList(cnt, i) = txtBox If i = txbList.Count + 1 Then packFullCount += packItemSet(itemInfoList.count, cnt) End If End If txtBox.ReadOnly = True txtBox.BackColor = Color.White Next Next Return False Catch ex As Exception MsgBox("리스트를 생성하는 도중 오류가 발생하였습니다. :: " & ex.Message, vbCritical) Return True End Try End Function Private Function setCodeParsing() As Boolean Const colCount As Int16 = 5 Dim pkAddSwitch As Boolean = False Try For i = 0 To ChkItemSet.GetLength(1) - 1 If InStr(ChkItemSet(itemInfoList.code, i), "PK") > 0 Then Dim existSwitch As Boolean = False DBCmd = "SELECT un.ItemCode,un.ItemName,pk.ProdCount,pd.FaceShot,pd.EyeShot 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 = '" & ChkItemSet(itemInfoList.code, i) & "'" If DBQueryReader(DBCmd) Then Dim dataSetCount As Int16 = 0 Dim RowCount As Int16 = (sqlDataQuery.Length / colCount) - 1 Dim setCodeArray(itemInfoList.eye) For row = 0 To RowCount existSwitch = False For col = 0 To colCount - 1 setCodeArray(col) = sqlDataQuery(dataSetCount) If col = itemInfoList.count Then setCodeArray(itemInfoList.count) = setCodeArray(itemInfoList.count) * ChkItemSet(itemInfoList.count, i) End If dataSetCount += 1 Next For chk = 0 To ChkItemSet.GetLength(1) - 1 If ChkItemSet(itemInfoList.code, chk) = setCodeArray(itemInfoList.code) Then ChkItemSet(itemInfoList.count, chk) += setCodeArray(itemInfoList.count) If ChkItemSet(itemInfoList.pk_Type, chk) = String.Empty Then ChkItemSet(itemInfoList.pk_Type, chk) = ChkItemSet(itemInfoList.code, i) Else ChkItemSet(itemInfoList.pk_Type, chk) = ChkItemSet(itemInfoList.pk_Type, chk) & "/" & ChkItemSet(itemInfoList.code, i) End If If ChkItemSet(itemInfoList.id_Serial, i) <> String.Empty Then If ChkItemSet(itemInfoList.id_Serial, chk) = String.Empty Then ChkItemSet(itemInfoList.id_Serial, chk) = ChkItemSet(itemInfoList.id_Serial, i) Else ChkItemSet(itemInfoList.id_Serial, chk) = ChkItemSet(itemInfoList.id_Serial, chk) & "/" & ChkItemSet(itemInfoList.id_Serial, i) End If End If existSwitch = True Exit For End If Next If existSwitch = False Then Dim chkRowNum As Int16 = ChkItemSet.GetLength(1) If rdbMap.Checked = True Then ReDim Preserve ChkItemSet(itemInfoList.serial, chkRowNum) Else ReDim Preserve ChkItemSet(itemInfoList.nowcount, chkRowNum) End If For svd = 0 To itemInfoList.eye ChkItemSet(svd, chkRowNum) = setCodeArray(svd) Next ChkItemSet(itemInfoList.pk_Type, chkRowNum) = ChkItemSet(itemInfoList.code, i) If ChkItemSet(itemInfoList.id_Serial, i) <> String.Empty Then ChkItemSet(itemInfoList.id_Serial, chkRowNum) = ChkItemSet(itemInfoList.id_Serial, i) End If pkAddSwitch = True End If Next Else MsgBox("존재하지 않는 세트코드가 존재합니다. 데이터를 확인 후 없을 시 요청하여 주십시오.", vbCritical) Return False End If For del = 0 To itemInfoList.serial ChkItemSet(del, i) = String.Empty Next End If Next If pkAddSwitch = True Then pkAddSwitch = False Dim nowRow As Int16 = 0 For rc = 0 To ChkItemSet.GetLength(1) - 1 If ChkItemSet(itemInfoList.code, rc) <> String.Empty Then For cc = 0 To itemInfoList.serial ChkItemSet(cc, nowRow) = ChkItemSet(cc, rc) Next pkAddSwitch = True nowRow += 1 End If Next If pkAddSwitch = True Then setCodeUse = True If rdbMap.Checked = True Then ReDim Preserve ChkItemSet(itemInfoList.serial, nowRow - 1) Else ReDim Preserve ChkItemSet(itemInfoList.nowcount, nowRow - 1) End If End If End If Return False Catch ex As Exception MsgBox("세트 코드 관련 오류 발생!! :: " + ex.Message, vbCritical) Return True End Try End Function Private Sub apiBackupData() If ckbAPIUse.Checked = True Then ReDim apiItemSet(itemInfoList.serial, ChkItemSet.GetLength(1) - 1) For i = 0 To ChkItemSet.GetLength(1) - 1 For n = 0 To itemInfoList.serial apiItemSet(n, i) = ChkItemSet(n, i) Next Next End If End Sub Private Function ListSetting(type As Boolean) As Boolean Try StateTxbClear(funcList.search) txbNameValue(funcList.search) Dim prodInfoCol As Integer = 0 Dim RowDataCount As Integer = ChkItemSet.GetLength(1) - 1 ReDim txbArrayList(RowDataCount, txbList.Eye) ReDim btnArrayList(RowDataCount, btnCount - 1) For cnt = 0 To RowDataCount For i = 0 To txbList.Remove Dim txtBox As TextBox = New TextBox Dim btnBox As Button = New Button If cnt = 0 Then prodInfoCol = prodInfoStartCol Else If i = txbList.Name Then prodInfoCol = prodInfoCol + prodInfoHeight + locplus End If End If If i >= txbList.Name And i <= txbList.Eye Then txtBox.Name = txbSetName(i) & cnt pnProdInfo.Controls.Add(txtBox) txbArrayList(cnt, i) = txtBox txtBox.Font = New Font("함초롱바탕", 24, FontStyle.Bold) txtBox.Size = New Drawing.Size(prodInfoWidth(i), prodInfoHeight) txtBox.Location = New Point(prodInfoRow(i), prodInfoCol) txtBox.Text = ChkItemSet(i + 1, cnt) txtBox.ReadOnly = True txtBox.BackColor = Color.White Else If ModifyListSwitch = False Then btnBox.Name = txbSetName(i) & cnt If i = txbList.Modify Then btnBox.Text = "수정" AddHandler btnBox.Click, AddressOf ModifyClick Else btnBox.Text = "제거" AddHandler btnBox.Click, AddressOf DeleteClick End If pnProdInfo.Controls.Add(btnBox) btnArrayList(cnt, i - (txbList.Eye + 1)) = btnBox btnBox.Font = New Font("함초롱바탕", 18, FontStyle.Bold) btnBox.Size = New Drawing.Size(prodInfoWidth(i), prodInfoHeight) btnBox.Location = New Point(prodInfoRow(i), prodInfoCol - 3) btnBox.Enabled = False End If End If Next Next Return False Catch ex As Exception MsgBox("리스트를 생성하는 도중 오류가 발생하였습니다. :: " & ex.Message, vbCritical) Return True End Try End Function Private Function packDateSearch(DataCode As String) As Boolean DBCmd = "SELECT `Data` FROM " & applySalesDB & " WHERE PackingCode = '" & DataCode & "'" Dim sqlResult As String = DBQueryScalar(DBCmd) If sqlResult = "False" Then MsgBox("해당 데이터를 데이터베이스에서 찾을 수 없습니다.", vbCritical) Return True End If If rdbMap.Checked = True Then txbMapPkDate.Text = sqlResult Else txbMsPkDate.Text = sqlResult End If Return False End Function Private Function Product_Search(DataCode As String) As Boolean Dim QueryCount As Integer = 0 DBCmd = "SELECT Item_Code,Item_Name,Item_Count,Apply_Face,Apply_Eye FROM " & applyOrderDB & " WHERE Order_Code = '" & DataCode & "'" If DBQueryReader(DBCmd) Then Dim DataCount As Integer = sqlDataQuery.Length If rdbState.Checked = True Then ReDim ChkItemSet(itemInfoList.eye, (DataCount / (itemInfoList.eye + 1)) - 1) Else ReDim ChkItemSet(itemInfoList.serial, (DataCount / (itemInfoList.eye + 1)) - 1) End If For row = 0 To ChkItemSet.GetLength(1) - 1 For col = 0 To itemInfoList.eye ChkItemSet(col, row) = sqlDataQuery(QueryCount) QueryCount += 1 Next Next Return False Else Return True End If End Function Private Function orderer_Search(DataCode As String) As Boolean DBCmd = "SELECT distinct Order_Code,Date,Account_Code,Account_Name,Orderer_Code,Orderer_Name,Phone_Number,ZipCode,Address,Refer FROM " & applyOrderDB & " WHERE Order_Code = '" & DataCode & "'" If DBQueryReader(DBCmd) Then ProdSelect(ProdList.OrderCode) = sqlDataQuery(ProdList.OrderCode) ProdSelect(ProdList.BuyDate) = sqlDataQuery(ProdList.BuyDate) ProdSelect(ProdList.AccountCode) = sqlDataQuery(ProdList.AccountCode) ProdSelect(ProdList.AccountName) = sqlDataQuery(ProdList.AccountName) ProdSelect(ProdList.OrdererCode) = sqlDataQuery(ProdList.OrdererCode) ProdSelect(ProdList.OrdererName) = sqlDataQuery(ProdList.OrdererName) ProdSelect(ProdList.phone) = sqlDataQuery(ProdList.phone) ProdSelect(ProdList.zip) = sqlDataQuery(ProdList.zip) ProdSelect(ProdList.Address) = sqlDataQuery(ProdList.Address) ProdSelect(ProdList.Refer) = sqlDataQuery(ProdList.Refer) gb_map_state.BackColor = SystemColors.Control Return False Else nolinkOutput() MsgBox("해당 전표코드에 대한 데이터가 존재하지 않습니다.", vbCritical) Return True End If End Function Private Sub nolinkOutput() ProdSelect(ProdList.OrderCode) = "N/A" ProdSelect(ProdList.BuyDate) = "N/A" ProdSelect(ProdList.AccountCode) = "N/A" ProdSelect(ProdList.AccountName) = "N/A" ProdSelect(ProdList.OrdererCode) = "N/A" ProdSelect(ProdList.OrdererName) = "N/A" ProdSelect(ProdList.phone) = "N/A" ProdSelect(ProdList.zip) = "N/A" ProdSelect(ProdList.Address) = "N/A" ProdSelect(ProdList.Refer) = "N/A" gb_map_state.BackColor = Color.Red End Sub Private Function releaseDataCompare(DataCode As String) As Boolean If DBQueryScalar(DBCmd) = 0 Then MsgBox("데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오.", vbExclamation) Return True End If Return False End Function Private Function completeCompare(DataCode As String) As Boolean Dim dupSwitch As Boolean = False DBCmd = "SELECT Invoice_Number FROM " & applyOrderDB & " WHERE Order_Code = '" & DataCode & "'" If DBQueryReader(DBCmd) Then For i = 0 To sqlDataQuery.Length - 1 If sqlDataQuery(i) <> 0 Then dupSwitch = True End If Next End If If dupSwitch = True Then MsgBox("이미 송장 등록이 되어있는 제품이 존재합니다.", vbExclamation) Return True End If Return False End Function Private Function ExistApiCompare(DataCode As String) As Boolean DBCmd = "SELECT COUNT(Order_Code) FROM " & applyOrderDB & " WHERE Order_Code = '" & DataCode & "'" Dim dbResult As String = DBQueryScalar(DBCmd) If dbResult = "False" Then MsgBox("데이터를 찾는 도중 오류가 발생하였습니다.", vbCritical) Return True End If If dbResult > 0 Then MsgBox("해당 번호는 처리된 번호입니다.", vbExclamation) Return True End If Return False End Function Private Function ExistDataCompare(DataCode As String) As Boolean If rdbMap.Checked = True And rdbStateInv.Checked = True Then DBCmd = "SELECT COUNT(distinct Order_Code) FROM " & applyOrderDB & " WHERE Order_Code = '" & DataCode & "' AND release_state = 'release'" ElseIf rdbMap.Checked = True And rdbStatePack.Checked = True Then DBCmd = "SELECT COUNT(distinct Order_Code) FROM " & applyOrderDB & " WHERE Order_Code = '" & DataCode & "' AND release_state IS null" Else DBCmd = "SELECT COUNT(distinct Order_Code) FROM " & applyOrderDB & " WHERE Order_Code = '" & DataCode & "'" End If Dim dbResult As String = DBQueryScalar(DBCmd) If dbResult = "False" Then MsgBox("데이터를 찾는 도중 오류가 발생하였습니다.", vbCritical) Return True End If If dbResult = 0 Then DBCmd = "SELECT COUNT(Order_Code) FROM " & applyOrderDB & " WHERE Order_Code = '" & DataCode & "'" dbResult = DBQueryScalar(DBCmd) If dbResult = "False" Then MsgBox("데이터를 찾는 도중 오류가 발생하였습니다.", vbCritical) Return True End If If dbResult = 0 Then MsgBox("데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오.", vbExclamation) Return True Else MsgBox("이미 등록 완료된 데이터 입니다.", vbExclamation) Return True End If End If Return False End Function Private Function delOrder_Search(ordCode As String) As Boolean DBCmd = "SELECT COUNT(Order_Code) FROM " & applyOrderDB & " WHERE Order_Code = '" & ordCode & "'" Dim scResult As String = DBQueryScalar(DBCmd) If scResult = "0" Then Return True Else Return False End If End Function Private Sub lbProdRmv_DoubleClick(sender As Object, e As EventArgs) Handles lbProdRmv.DoubleClick If txbChkState.Text = "N/A" Then MsgBox("패킹 번호는 수정이 불가능 합니다.", vbExclamation) Exit Sub End If Const ctrlCount As Int16 = 6 Dim txbCount As Integer = (pnProdInfo.Controls.Count - ctrlCount) / ctrlCount DelFuncSwitch = Not DelFuncSwitch If DelFuncSwitch = True Then For i = txbCount - 1 To 0 Step -1 pnProdInfo.Controls(txbSetName(txbList.Remove) & i).Enabled = True Next Else For i = txbCount - 1 To 0 Step -1 pnProdInfo.Controls(txbSetName(txbList.Remove) & i).Enabled = False Next End If End Sub Private Sub lbProdMdf_DoubleClick(sender As Object, e As EventArgs) Handles lbProdMdf.DoubleClick If txbChkState.Text = "N/A" Then MsgBox("패킹 번호는 수정이 불가능 합니다.", vbExclamation) Exit Sub End If Const ctrlCount As Int16 = 6 Dim txbCount As Integer = (pnProdInfo.Controls.Count - ctrlCount) / ctrlCount ModifySwitch = Not ModifySwitch If ModifySwitch = True Then For i = txbCount - 1 To 0 Step -1 txbArrayList(i, txbList.Count).ReadOnly = False txbArrayList(i, txbList.Face).ReadOnly = False txbArrayList(i, txbList.Eye).ReadOnly = False pnProdInfo.Controls(txbSetName(txbList.Modify) & i).Enabled = True Next Else For i = txbCount - 1 To 0 Step -1 txbArrayList(i, txbList.Count).ReadOnly = True txbArrayList(i, txbList.Face).ReadOnly = True txbArrayList(i, txbList.Eye).ReadOnly = True pnProdInfo.Controls(txbSetName(txbList.Modify) & i).Enabled = False Next If ModifyListSwitch = True Then ListSetting(True) End If End If End Sub Private Sub DeleteClick(sender As Object, e As EventArgs) Dim btnIndex As Int16 = CType(sender, Button).TabIndex - indexDefault btnIndex = btnIndex / indexRange DBCmd = "SELECT Packing_Code FROM " & applyOrderDB & " WHERE Order_Code = '" & txbChkState.Text & "' AND Item_Code = '" & ChkItemSet(itemInfoList.code, btnIndex) & "'" Dim dbResult As String = DBQueryScalar(DBCmd) If dbResult.Replace(" ", "") = "" Or dbResult = String.Empty Then DBCmd = "UPDATE " & applyOrderDB & " SET Order_Code = 'null_" & txbChkState.Text & "' WHERE Order_Code = '" & txbChkState.Text & "' AND Item_Code = '" & ChkItemSet(itemInfoList.code, btnIndex) & "'" If DBCommand(DBCmd) Then If modifyResetList(txbChkState.Text) Then MsgBox("데이터 불러오기 실패, 관리자 문의", vbCritical) Exit Sub End If MsgBox("삭제 완료", vbInformation) Exit Sub End If MsgBox("삭제 실패", vbExclamation) Else MsgBox("이미 등록 완료된 데이터는 삭제할 수 없습니다.", vbExclamation) End If End Sub Private Function modifyResetList(codeData As String) As Boolean If delOrder_Search(codeData) Then StateTxbClear(funcList.search) Return False End If If orderer_Search(codeData) Then MsgBox("해당 전표코드의 고객 데이터가 존재하지 않습니다.", vbCritical) Return True End If If Product_Search(codeData) Then MsgBox("해당 전표코드의 제품 데이터가 존재하지 않습니다.", vbCritical) Return True End If If ListSetting(True) Then MsgBox("전표 데이터 리스트화 진행중 오류가 발생하였습니다.", vbCritical) Return True End If Return False End Function Private Sub ModifyClick(sender As Object, e As EventArgs) Dim btnIndex As Int16 = CType(sender, Button).TabIndex - indexDefault btnIndex = btnIndex / indexRange DBCmd = "UPDATE " & applyOrderDB & " SET Item_Count = '" & txbArrayList(btnIndex, txbList.Count).Text & "', Apply_Face = '" & txbArrayList(btnIndex, txbList.Face).Text & "', Apply_Eye = '" & txbArrayList(btnIndex, txbList.Eye).Text & "' WHERE Order_Code = '" & txbChkState.Text & "' AND Item_Code = '" & ChkItemSet(itemInfoList.code, btnIndex) & "'" If DBCommand(DBCmd) Then MsgBox("수정 완료", vbInformation) Exit Sub End If MsgBox("수정 실패", vbExclamation) Exit Sub End Sub '-------------------------------패킹 관련---------------------------------- Private Sub mappingReset() mapStateOK = False mapPackOk = False mapInvOk = False StateTxbClear(funcList.mapstate) StateTxbClear(funcList.mappack) topInfoClear() compareValueClean() ReDim ChkItemSet(0, 0) ReDim packItemSet(0, 0) setCodeUse = False txbInv.BackColor = SystemColors.Window txbInv.Text = String.Empty End Sub Private Sub topInfoClear() gbMapStInfo.BackColor = SystemColors.Control txbMapState.Text = "N/A" txbMapDate.Text = "N/A" txbMapOrder.Text = "N/A" txbMapAccount.Text = "N/A" txbMapRefer.Text = "N/A" gbMapPkInfo.BackColor = SystemColors.Control txbMapPacking.Text = "N/A" txbMapPkDate.Text = "N/A" txbMapState.Refresh() txbMapDate.Refresh() txbMapOrder.Refresh() txbMapAccount.Refresh() txbMapRefer.Refresh() txbMapPacking.Refresh() txbMapPkDate.Refresh() End Sub Private Function mappingRunning(codeData As String) As Boolean If mapStateOK = True And mapPackOk = True And mapInvOk = True Then mappingReset() End If If rdbStateInv.Checked = True Then mapPackOk = True End If If mapStateOK = True And mapPackOk = True Then txbInv.BackColor = Color.White txbInv.Text = codeData If txbInv.Text.Replace(" ", "") = "" Then txbInv.BackColor = Color.Red MsgBox("송장번호를 입력하지 않았습니다.", vbExclamation) Return False End If 'If IsNumeric(txbInv.Text) = False Then ' txbInv.BackColor = Color.Red ' MsgBox("양식에 맞지 않는 송장번호입니다.", vbExclamation) ' Return False 'End If If txbInv.Text.Length < invLimitCount Then txbInv.BackColor = Color.Red MsgBox("양식에 맞지 않는 송장번호입니다.", vbExclamation) Return False End If If txbInv.Text = txbMapState.Text Or txbInv.Text = txbMapPacking.Text Then txbInv.BackColor = Color.Red MsgBox("패킹 번호 혹은 전표 번호는 송장 번호로 사용할 수 없습니다.", vbExclamation) Return False End If Dim InvoiceNum As Int16 = Val(Mid(txbInv.Text, 1, 1)) If InvoiceNum <> invList.hanjin And InvoiceNum <> invList.cj And InvoiceNum <> invList.hanjin2 And InvoiceNum <> invList.cj2 Then txbInv.BackColor = Color.Red MsgBox("형식에 맞는 택배사가 존재하지 않습니다.", vbExclamation) Return False End If txbInv.BackColor = Color.ForestGreen mapInvOk = True Else If codeData.Length = packingLength Then packFullCount = 0 If rdbStateInv.Checked = True Then MsgBox("해당 기능은 제품 패킹 번호를 필요로 하지 않습니다.", vbExclamation) Return False Else If packingCompare(codeData) Then Return False End If If mappingComapare(codeData) Then Return False End If If packingSearch(codeData) Then Return False End If If comSearch(codeData) Then Return False End If If packDateSearch(codeData) Then Return False End If txbMapPacking.Text = codeData If packListSetting(pnMapPkProd, funcList.mappack, False) Then Return False End If gbMapPkInfo.BackColor = Color.ForestGreen mapPackOk = True End If Else If Mid(codeData, 1, 7) = firstState(firstStateList.ERP) Or Mid(codeData, 1, 3) = firstState(firstStateList.MES) Then setCodeUse = False stateFullCount = 0 If ckbAPIUse.Checked = True Then If ExistApiCompare(codeData) Then Return False End If If ckbPostgre.Checked = True Then If useAPIDirect(codeData) Then Return False End If Else If mesRunning(codeData) Then Return False End If End If Else If ExistDataCompare(codeData) Then Return False End If If completeCompare(codeData) Then Return False End If If orderer_Search(codeData) Then Return False End If If Product_Search(codeData) Then Return False End If End If apiBackupData() If setCodeParsing() Then Return False End If If packListSetting(pnMapStProd, funcList.mapstate, True) Then Return False End If Else MsgBox("해당 번호의 데이터를 찾을 수 없습니다. 번호를 확인하여 주십시오.", vbExclamation) Return False End If txbMapState.Text = ProdSelect(ProdList.OrderCode) txbMapDate.Text = ProdSelect(ProdList.BuyDate) txbMapOrder.Text = ProdSelect(ProdList.OrdererName) txbMapAccount.Text = ProdSelect(ProdList.AccountName) txbMapRefer.Text = ProdSelect(ProdList.Refer) gbMapStInfo.BackColor = Color.ForestGreen mapStateOK = True End If If mapStateOK = True And mapPackOk = True Then If statePackCompare() Then mapPackOk = False Return False End If txbInv.Enabled = True End If End If If mapStateOK = True And mapPackOk = True And mapInvOk = True Then If ckbAuto.Checked = True Then If compareSave() Then Return False End If Else btnSearch.Text = "등 록" End If End If Return True End Function Private Function useAPIDirect(CodeData As String) As Boolean If stateCodeRun_API(CodeData) Then mesShotSearch() If stateinfoRun_API(CodeData) Then Return False End If End If Return True End Function Private Function stateinfoRun_API(CodeData As String) As Boolean Try DBCmd = "select distinct on(os.receiver_phone_number) io.created_at,co.code,co.name,os.customer_id,os.receiver_name,os.receiver_phone_number,os.receiver_zip_code,os.receiver_address,io.description from order_details od join order_sheets os on os.id = od.order_sheet_id join item_outflows io on io.order_detail_id = od.id left outer join companies co on co.id = os.partner_id where os.code = '" & CodeData & "' and od.deleted_at is null;" If pgDBQueryReader(DBCmd) Then For i = 0 To pgDataQuery.Length - 1 ProdSelect(i + 1) = pgDataQuery(i) Next ProdSelect(ProdList.OrderCode) = CodeData If ProdSelect(ProdList.Refer) = "0" Then ProdSelect(ProdList.Refer) = String.Empty End If Return True Else MsgBox("고객 데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오.", vbCritical) Return False End If Catch ex As Exception MsgBox("Postgre 고객 데이터 불러오는 중 오류 발생 !! : " & ex.Message, vbCritical) Return False End Try End Function Private Function stateCodeRun_API(CodeData As String) As Boolean Try Const colCount As Int16 = 5 DBCmd = "select io.state,it.code,it.name,io.expected_out_count,io.id from order_details od join items it on it.id = od.item_id join order_sheets os on os.id = od.order_sheet_id join item_outflows io on io.order_detail_id = od.id where os.code = '" & CodeData & "' and od.deleted_at is null;" If pgDBQueryReader(DBCmd) Then Dim RowCount As Int16 = (pgDataQuery.Length / colCount) - 1 Dim dataSetCount As Int32 = 0 If rdbState.Checked = True Then ReDim ChkItemSet(itemInfoList.id_Serial, RowCount) Else ReDim ChkItemSet(itemInfoList.serial, RowCount) End If For row = 0 To RowCount For col = 0 To colCount - 1 Select Case col Case directData.state If pgDataQuery(dataSetCount) <> "registered" Then dataSetCount += 5 Exit For End If Case directData.code ChkItemSet(itemInfoList.code, row) = pgDataQuery(dataSetCount) Case directData.name ChkItemSet(itemInfoList.name, row) = pgDataQuery(dataSetCount) Case directData.count ChkItemSet(itemInfoList.count, row) = pgDataQuery(dataSetCount) Case directData.id ChkItemSet(itemInfoList.id_Serial, row) = pgDataQuery(dataSetCount) Case Else MsgBox("잘못된 경로 개입입니다. useAPIDirect !", vbCritical) Return False End Select dataSetCount += 1 Next ChkItemSet(itemInfoList.serial, row) = Nothing Next Return True Else MsgBox("데이터가 존재하지 않습니다. 데이터를 확인하여 주십시오.", vbCritical) Return False End If Catch ex As Exception MsgBox("Postgre 데이터 불러오는 중 오류 발생 !! : " & ex.Message, vbCritical) Return False End Try End Function Private Function compareSave() As Boolean txbStateRead.Enabled = False txbStateRead.Text = "등록중" txbStateRead.BackColor = Color.Yellow Dim nowToday As String = Format(Now, "yyyy") & "-" & Format(Now, "MM") & "-" & Format(Now, "dd") If ckbAPIUse.Checked = True Then apiSerialData() If mesDataReg() Then failForm() Return True End If If mesDBOrderReg(nowToday) Then failForm() Return True End If Else If rdbStateInv.Checked = True Then If dbSaveInv(nowToday) Then failForm() Return True End If Else If dbSave(nowToday) Then failForm() Return True End If End If End If txbStateRead.Text = "등록완료" StartFunc = True gbMapStInfo.BackColor = SystemColors.Control gbMapPkInfo.BackColor = SystemColors.Control btnSearch.Text = "검 색" txbInv.Enabled = False txbStateRead.Enabled = True txbStateRead.SelectionStart = txbStateRead.TextLength txbStateRead.ScrollToCaret() Return False End Function Private Sub failForm() txbStateRead.Text = "등록실패" gbMapStInfo.BackColor = SystemColors.Control gbMapPkInfo.BackColor = SystemColors.Control txbInv.BackColor = Color.Red btnSearch.Text = "검 색" txbInv.Enabled = False txbStateRead.Enabled = True txbStateRead.SelectionStart = txbStateRead.TextLength txbStateRead.ScrollToCaret() End Sub Private Function mesDBOrderReg(nowToday As String) As Boolean Dim buydateParsing As String = Mid(ProdSelect(ProdList.BuyDate), 1, InStr(ProdSelect(ProdList.BuyDate), " ") - 1) Dim serialParsing, accCode, accName, address As String If ProdSelect(ProdList.AccountCode) = Nothing Then accCode = "NULL" Else accCode = Chr(39) & ProdSelect(ProdList.AccountCode) & Chr(39) End If If ProdSelect(ProdList.AccountName) = Nothing Then accName = "NULL" Else accName = Chr(39) & ProdSelect(ProdList.AccountName) & Chr(39) End If If UBound(Split(ProdSelect(ProdList.Address), "'")) > 0 Then address = ProdSelect(ProdList.Address).Insert(InStr(ProdSelect(ProdList.Address), "'"), "'") End If For i = 0 To ChkItemSet.GetLength(1) - 1 If ChkItemSet(itemInfoList.serial, i) = Nothing Then serialParsing = "NULL" Else serialParsing = Chr(39) & ChkItemSet(itemInfoList.serial, i) & Chr(39) End If 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(),'" & txbMapState.Text & "','" & buydateParsing & "'," & accCode & "," & accName & ",'" & ProdSelect(ProdList.OrdererCode) & "','" & ProdSelect(ProdList.OrdererName) & "','" & ProdSelect(ProdList.OrdererName) & "','" & ProdSelect(ProdList.phone) & "','" & ProdSelect(ProdList.zip) & "','" & ProdSelect(ProdList.Address) & "','" & nowToday & "','" & ChkItemSet(itemInfoList.code, i) & "','" & ChkItemSet(itemInfoList.name, i) & "','" & ChkItemSet(itemInfoList.count, i) & "','" & ChkItemSet(itemInfoList.face, i) & "','" & ChkItemSet(itemInfoList.eye, i) & "','" & txbInv.Text & "','" & txbMapPacking.Text & "'," & serialParsing & ",'release')" If DBCommand(DBCmd) = False Then Return True End If Next Return False End Function Private Function mesDataReg() As Boolean Dim jsonData, apiResult As String If rdbMap.Checked = True Or rdbMass.Checked = True Then If setCodeUse = True Then For i = 0 To apiItemSet.GetLength(1) - 1 If rdbStateInv.Checked = True Then jsonData = "{""expectedOutCount"":" & apiItemSet(itemInfoList.count, i) & ",""invoiceNumber"":""" & txbInv.Text & """}" Else If apiItemSet(itemInfoList.type, i) = 0 Then jsonData = "{""expectedOutCount"":" & apiItemSet(itemInfoList.count, i) & ",""serialNumber"":""" & apiItemSet(itemInfoList.serial, i) & """,""invoiceNumber"":""" & txbInv.Text & """}" Else jsonData = "{""expectedOutCount"":" & apiItemSet(itemInfoList.count, i) & ",""invoiceNumber"":""" & txbInv.Text & """}" End If End If apiResult = apiRequest_PUT(jsonData, apiItemSet(itemInfoList.id_Serial, i)) If apiResult = "-1" Then MsgBox("MES에 해당 데이터가 존재하지 않습니다. 확인하여 주십시오.", vbExclamation) Return True End If Next Else For i = 0 To ChkItemSet.GetLength(1) - 1 If rdbStateInv.Checked = True Then jsonData = "{""expectedOutCount"":" & ChkItemSet(itemInfoList.count, i) & ",""invoiceNumber"":""" & txbInv.Text & """}" Else If ChkItemSet(itemInfoList.type, i) = 0 Then jsonData = "{""expectedOutCount"":" & ChkItemSet(itemInfoList.count, i) & ",""serialNumber"":""" & ChkItemSet(itemInfoList.serial, i) & """,""invoiceNumber"":""" & txbInv.Text & """}" Else jsonData = "{""expectedOutCount"":" & ChkItemSet(itemInfoList.count, i) & ",""invoiceNumber"":""" & txbInv.Text & """}" End If End If apiResult = apiRequest_PUT(jsonData, ChkItemSet(itemInfoList.id_Serial, i)) If apiResult = "-1" Then MsgBox("MES에 해당 데이터가 존재하지 않습니다. 확인하여 주십시오.", vbExclamation) Return True End If Next End If End If Return False End Function Private Function apiMassSave() As Boolean Dim jsonData As String = String.Empty Dim apiResult As String = String.Empty Dim SerialSet As String = String.Empty For i = 0 To ChkItemSet.GetLength(1) - 1 If ChkItemSet(itemInfoList.id_Serial, i) <> String.Empty And ChkItemSet(itemInfoList.id_Serial, i) <> "" Then SerialSet = ChkItemSet(itemInfoList.id_Serial, i) Exit For End If Next For i = RequestCount - 1 To 0 Step -1 Dim SaveSerial As String = String.Empty If i = 0 Then SaveSerial = Mid(SerialSet, 1, SerialSet.Length) Else SaveSerial = Mid(SerialSet, 1, InStr(SerialSet, "/") - 1) SerialSet = Mid(SerialSet, InStr(SerialSet, "/") + 1, SerialSet.Length) End If jsonData = "{""expectedOutCount"": 1,""serialNumber"":""" & SaveSerial & """,""invoiceNumber"":""" & txbLabelCode.Text & """}" apiResult = apiRequest_PUT(jsonData, SetIdCode(i)) If apiResult = "-1" Then MsgBox("MES에 해당 데이터가 존재하지 않습니다. 확인하여 주십시오.", vbExclamation) Return True End If Next Return False End Function Private Function apiSerialSave() As Boolean Dim jsonData, apiResult As String If rdbMap.Checked = True Then If setCodeUse = True Then For i = 0 To ChkItemSet.GetLength(1) - 1 If ChkItemSet(itemInfoList.serial, i) <> String.Empty Then Dim idSave As String = ChkItemSet(itemInfoList.id_Serial, i) Dim pkSave As String = ChkItemSet(itemInfoList.pk_Type, i) Dim serialSave As String = ChkItemSet(itemInfoList.serial, i) Dim runInt As Integer = UBound(Split(idSave, "/")) For n = 0 To runInt Dim nowid As String Dim nowSerial As String If n < runInt Then nowid = Mid(idSave, 1, InStr(idSave, "/") - 1) nowSerial = Mid(serialSave, 1, InStr(serialSave, "/") - 1) idSave = Mid(idSave, InStr(idSave, "/") + 1, idSave.Length) serialSave = Mid(serialSave, InStr(serialSave, "/") + 1, serialSave.Length) Else nowid = Mid(idSave, 1, idSave.Length) nowSerial = Mid(serialSave, 1, serialSave.Length) End If jsonData = "{""expectedOutCount"": 1,""serialNumber"":""" & nowSerial & """,""invoiceNumber"":""" & txbLabelCode.Text & """}" apiResult = apiRequest_PUT(jsonData, nowid) If apiResult = "-1" Then MsgBox("MES에 해당 데이터가 존재하지 않습니다. 확인하여 주십시오.", vbExclamation) Return True End If Next End If Next End If End If Return True End Function Private Sub apiSerialData() Dim serialArr(ChkItemSet.GetLength(1) - 1) As String For i = 0 To ChkItemSet.GetLength(1) - 1 serialArr(i) = ChkItemSet(itemInfoList.serial, i) '' SerialArr 배열에 ChkItemSet 시리얼 번호 저장 Next For api = 0 To apiItemSet.GetLength(1) - 1 For chk = 0 To ChkItemSet.GetLength(1) - 1 If apiItemSet(itemInfoList.code, api) = ChkItemSet(itemInfoList.code, chk) Then serialArr(chk) = apiItemReg(serialArr(chk), chk, api) Else If InStr(ChkItemSet(itemInfoList.pk_Type, chk), apiItemSet(itemInfoList.code, api)) > 0 Then If ChkItemSet(itemInfoList.type, chk) = 0 Then serialArr(chk) = apiItemReg(serialArr(chk), chk, api) End If End If End If Next Next End Sub Private Function apiItemReg(serStr As String, chkNum As Int16, apiNum As Int16) As String If ChkItemSet(itemInfoList.type, chkNum) = 0 Then Dim slashSet As Int16 = UBound(Split(ChkItemSet(itemInfoList.serial, chkNum), "/")) apiItemSet(itemInfoList.type, apiNum) = 0 For i = 0 To apiItemSet(itemInfoList.count, apiNum) - 1 If i = slashSet Then If apiItemSet(itemInfoList.serial, apiNum) = String.Empty Then apiItemSet(itemInfoList.serial, apiNum) = serStr Else apiItemSet(itemInfoList.serial, apiNum) = apiItemSet(itemInfoList.serial, apiNum) & "/" & serStr End If Else Dim serialData As String = Mid(serStr, 1, InStr(serStr, "/") - 1) serStr = Mid(serStr, InStr(serStr, "/") + 1, serStr.Length) If apiItemSet(itemInfoList.serial, apiNum) = String.Empty Then apiItemSet(itemInfoList.serial, apiNum) = serialData Else apiItemSet(itemInfoList.serial, apiNum) = apiItemSet(itemInfoList.serial, apiNum) & "/" & serialData End If End If Next Else apiItemSet(itemInfoList.type, apiNum) = 1 End If If serStr = String.Empty Then Return String.Empty End If Return serStr End Function Private Function dbSaveInv(nowToday As String) As Boolean For i = 0 To ChkItemSet.GetLength(1) - 1 DBCmd = "UPDATE " & applyOrderDB & " SET Shipment_Date = '" & nowToday & "', Invoice_Number = '" & txbInv.Text & "', release_state = 'release' WHERE Order_Code = '" & txbMapState.Text & "' AND Item_Code = '" & ChkItemSet(itemInfoList.code, i) & "'" If DBCommand(DBCmd) = False Then MsgBox("데이터베이스에 없는 제품이 포함되어 있습니다.", vbCritical) Return True End If Next Return False End Function Private Function dbSave(nowToday As String) As Boolean Dim packSerial As String If setCodeUse = True Then If setCodeInsert() Then For i = 0 To ChkItemSet.GetLength(1) - 1 DBCmd = "SELECT COUNT(Order_Code) FROM " & applyOrderDB & " WHERE Order_Code = '" & txbMapState.Text & "' AND Item_Code = '" & ChkItemSet(itemInfoList.code, i) & "'" Dim rowStr As String = DBQueryScalar(DBCmd) If rowStr = "False" Then MsgBox("세트 데이터를 저장하는 도중 오류가 발생하였습니다.", vbCritical) Return True End If If ChkItemSet(itemInfoList.serial, i) = Nothing Then packSerial = "NULL" Else packSerial = Chr(39) & ChkItemSet(itemInfoList.serial, i) & Chr(39) End If If rowStr = 0 Then DBCmd = "INSERT INTO " & applyOrderDB & "(DATETIME,Order_Code,DATE,Account_Code,Account_Name,Charge_Code,Warehouse,Orderer_Code,Orderer_Name,Country,Receiver_Name,Phone_Number,ZipCode,Address,Refer,Shipment_Date,Item_Code,Item_Name,Item_Count,Apply_Face,Apply_Eye,Invoice_Number,Packing_Code,Serial_Number,release_state) VALUE(Now(),'" & txbMapState.Text & "'," & defaultData(defaultList.regDate) & "," & defaultData(defaultList.accCode) & "," & defaultData(defaultList.accName) & "," & defaultData(defaultList.chrCode) & "," & defaultData(defaultList.warehouse) & "," & defaultData(defaultList.ordCode) & "," & defaultData(defaultList.ordName) & "," & defaultData(defaultList.country) & "," & defaultData(defaultList.recName) & "," & defaultData(defaultList.phone) & "," & defaultData(defaultList.zip) & "," & defaultData(defaultList.address) & "," & defaultData(defaultList.refer) & ",'" & nowToday & "','" & ChkItemSet(itemInfoList.code, i) & "','" & ChkItemSet(itemInfoList.name, i) & "','" & ChkItemSet(itemInfoList.count, i) & "','" & ChkItemSet(itemInfoList.face, i) & "','" & ChkItemSet(itemInfoList.eye, i) & "','" & txbInv.Text & "','" & txbMapPacking.Text & "'," & packSerial & ",'release')" Else DBCmd = "UPDATE " & applyOrderDB & " SET Shipment_Date = '" & nowToday & "', Item_Count = '" & ChkItemSet(itemInfoList.count, i) & "', Invoice_Number = '" & txbInv.Text & "', Packing_Code= '" & txbMapPacking.Text & "',Serial_Number= " & packSerial & ",release_state='release' WHERE Order_Code = '" & txbMapState.Text & "' AND Item_Code = '" & ChkItemSet(itemInfoList.code, i) & "'" End If If DBCommand(DBCmd) = False Then MsgBox("세트 코드에 대한 데이터를 저장하는 도중 오류가 발생하였습니다.", vbCritical) Return True End If Next If setCodeDelete() Then Return False Else Return True End If Else Return True End If Else For i = 0 To ChkItemSet.GetLength(1) - 1 If ChkItemSet(itemInfoList.serial, i) = Nothing Then packSerial = "NULL" Else packSerial = Chr(39) & ChkItemSet(itemInfoList.serial, i) & Chr(39) End If DBCmd = "UPDATE " & applyOrderDB & " SET Shipment_Date = '" & nowToday & "', Invoice_Number = '" & txbInv.Text & "', Packing_Code = '" & txbMapPacking.Text & "', Serial_Number = " & packSerial & ", release_state = 'release' WHERE Order_Code = '" & txbMapState.Text & "' AND Item_Code = '" & ChkItemSet(itemInfoList.code, i) & "'" If DBCommand(DBCmd) = False Then MsgBox("데이터베이스에 없는 제품이 포함되어 있습니다.", vbCritical) Return True End If Next End If Return False End Function Private Function setCodeDelete() As Boolean DBCmd = "DELETE FROM " & applyOrderDB & " WHERE Order_Code = '" & txbMapState.Text & "' AND Item_Code LIKE 'PK%'" If DBCommand(DBCmd) Then Return True Else MsgBox("세트 코드를 삭제하는 과정에서 오류가 발생하였습니다.", vbCritical) Return False End If End Function Private Function setCodeInsert() As Boolean For i = 0 To defaultList.refer defaultData(i) = String.Empty Next DBCmd = "SELECT DATE,Account_Code,Account_Name,Charge_Code,Warehouse,Orderer_Code,Orderer_Name,Country,Receiver_Name,Phone_Number,ZipCode,Address,Refer FROM " & applyOrderDB & " WHERE Order_Code = '" & txbMapState.Text & "' GROUP BY Order_Code" If DBQueryReader(DBCmd) Then For i = 0 To sqlDataQuery.Length - 1 If sqlDataQuery(i).ToString = "0" Then defaultData(i) = "NULL" Else defaultData(i) = Chr(39) & sqlDataQuery(i) & Chr(39) End If Next Return True Else MsgBox("구매 고객에 대한 데이터가 존재하지 않습니다.", vbCritical) Return False End If End Function Private Function statePackCompare() As Boolean If ChkItemSet.GetLength(1) = packItemSet.GetLength(1) Then If stateFullCount = packFullCount Then For pack = 0 To packItemSet.GetLength(1) - 1 Dim checkOk As Boolean = False For chkState = 0 To ChkItemSet.GetLength(1) - 1 Dim packCodeData As String Dim packCode As String = packItemSet(itemInfoList.code, pack) Dim codeNum As Int16 = UBound(Split(packItemSet(itemInfoList.code, pack), "/")) For i = 0 To codeNum If i = codeNum Then packCodeData = Mid(packCode, 1, packCode.Length) Else packCodeData = Mid(packCode, 1, InStr(packCode, "/") - 1) packCode = Mid(packCode, InStr(packCode, "/") + 1, packCode.Length) End If If packCodeData = ChkItemSet(itemInfoList.code, chkState) Then If ChkItemSet(itemInfoList.count, chkState) = packItemSet(itemInfoList.count, pack) Then If ChkItemSet(itemInfoList.face, chkState) = packItemSet(itemInfoList.face, pack) Then If ChkItemSet(itemInfoList.eye, chkState) = packItemSet(itemInfoList.eye, pack) Then ChkItemSet(itemInfoList.type, chkState) = packItemSet(itemInfoList.pk_Type, pack) ChkItemSet(itemInfoList.serial, chkState) = packItemSet(itemInfoList.id_Serial, pack) checkOk = True Exit For End If End If End If End If Next If checkOk = True Then Exit For End If Next If checkOk = False Then For i = 0 To txbList.Eye txbArrayList(pack, i).BackColor = Color.Red Next gbMapPkInfo.BackColor = Color.Red MsgBox("맞지 않는 제품이 포장되어 있습니다. 확인하여 주십시오.", vbCritical) Return True End If Next Return False Else For i = 0 To packItemSet.GetLength(1) - 1 txbArrayList(i, txbList.Count).BackColor = Color.Red Next gbMapPkInfo.BackColor = Color.Red MsgBox("전체 수량이 맞지 않습니다.", vbCritical) Return True End If Else For i = 0 To packItemSet.GetLength(1) - 1 txbArrayList(i, txbList.Count).BackColor = Color.Red Next gbMapPkInfo.BackColor = Color.Red MsgBox("항목 개수가 맞지 않습니다.", vbCritical) Return True End If End Function '---------------------------초기화------------------------------------------ Private Sub StateTxbClear(i As Int16) Dim FuncSwitch As Boolean = False Dim ctrlCount As Int16 = 0 Dim NowTxbCount As Integer = 0 txbNameValue(i) If i = funcList.search Then ctrlCount = txbList.Remove + 1 NowTxbCount = (setPanel(i).Controls.Count - ctrlCount) / ctrlCount Else ctrlCount = txbList.Eye + 1 NowTxbCount = setPanel(i).Controls.Count / ctrlCount End If If NowTxbCount <> 0 Then FuncSwitch = True Else FuncSwitch = False End If If FuncSwitch = True Then TxbClearFunc(i, setPanel(i), NowTxbCount) End If End Sub Private Sub TxbClearFunc(setType As Int16, setpanel As Panel, txbCount As Integer) For i = txbCount - 1 To 0 Step -1 If setType = funcList.search Then setpanel.Controls(txbSetName(txbList.Name) & i).Dispose() setpanel.Controls(txbSetName(txbList.Count) & i).Dispose() setpanel.Controls(txbSetName(txbList.Face) & i).Dispose() setpanel.Controls(txbSetName(txbList.Eye) & i).Dispose() setpanel.Controls(txbSetName(txbList.Modify) & i).Dispose() setpanel.Controls(txbSetName(txbList.Remove) & i).Dispose() Else setpanel.Controls(txbSetName(txbList.Name) & i).Dispose() setpanel.Controls(txbSetName(txbList.Count) & i).Dispose() setpanel.Controls(txbSetName(txbList.Face) & i).Dispose() setpanel.Controls(txbSetName(txbList.Eye) & i).Dispose() End If Next End Sub Private Sub compareClear() compareValueClean() compareTxbClean() compareTxbRefresh() End Sub Private Sub compareTxbRefresh() txbChkState.Refresh() txbChkCode.Refresh() txbChkOrderer.Refresh() txbChkAcc.Refresh() txbChkDate.Refresh() txbChkRefer.Refresh() txbChkAD.Refresh() End Sub Private Sub compareTxbClean() txbChkState.Text = Nothing txbChkCode.Text = Nothing txbChkOrderer.Text = Nothing txbChkAcc.Text = Nothing txbChkDate.Text = Nothing txbChkRefer.Text = Nothing txbChkAD.Text = Nothing End Sub Private Sub compareValueClean() If rdbState.Checked = True Then ReDim ChkItemSet(0, 0) ReDim packItemSet(0, 0) ReDim apiItemSet(0, 0) Else ReDim ChkItemSet(0, 0) ReDim packItemSet(0, 0) setCodeUse = False txbInv.BackColor = SystemColors.Window txbInv.Text = String.Empty End If stateFullCount = 0 packFullCount = 0 setCodeUse = False For i = 0 To ProdSelect.Length - 1 ProdSelect(i) = Nothing Next For i = 0 To pSerialData.Length - 1 pSerialData(i) = Nothing Next For i = 0 To chkItem.Length - 1 chkItem(i) = Nothing Next End Sub '-------------------api 로그인------------------------------ Private Sub btnLogin_Click(sender As Object, e As EventArgs) Handles btnLogin.Click If loginState = False Then If loginForm.ShowDialog = DialogResult.OK Then loginState = True ckbAPIUse.Checked = True ckbAPIUse.Enabled = True lbAPIUse.Text = "ON" btnLogin.Text = "LogOut" Else loginState = False End If Else loginState = False ckbAPIUse.Checked = False ckbAPIUse.Enabled = False lbAPIUse.Text = "OFF" btnLogin.Text = "Login" End If resetFunc() txbStateRead.Focus() End Sub '-----------------상단 버튼류 기능---------------------- Private Sub rdbState_CheckedChanged(sender As Object, e As EventArgs) Handles rdbState.CheckedChanged If rdbState.Checked = True Then pnOrderCheck.Visible = True pnOrderCheck.Location = New Point(2, 196) pnPacking.Visible = False gbMapOption.Visible = False pnMass.Visible = False gb_map_state.BackColor = SystemColors.Control rdbStatePack.Checked = False End If resetFunc() txbStateRead.Focus() End Sub Private Sub rdbMap_CheckedChanged(sender As Object, e As EventArgs) Handles rdbMap.CheckedChanged If rdbMap.Checked = True Then pnOrderCheck.Visible = False pnPacking.Visible = True pnPacking.Location = New Point(2, 196) pnMass.Visible = False gbMapOption.Visible = True rdbStatePack.Checked = True End If resetFunc() txbStateRead.Focus() End Sub Private Sub rdbMass_CheckedChanged(sender As Object, e As EventArgs) Handles rdbMass.CheckedChanged If rdbMass.Checked = True Then pnOrderCheck.Visible = False pnPacking.Visible = False pnMass.Location = New Point(2, 196) pnMass.Visible = True gbMapOption.Visible = False rdbStatePack.Checked = False End If ckbBarcode.Checked = False ckbBarcode.Checked = True MassReset() txbStateRead.Focus() End Sub Private Sub ckbBarcode_CheckedChanged(sender As Object, e As EventArgs) Handles ckbBarcode.CheckedChanged If ckbBarcode.Checked = True Then ckbAuto.Checked = True ckbAuto.Enabled = True Else ckbAuto.Checked = False ckbAuto.Enabled = False End If txbStateRead.Focus() End Sub Private Sub ckbAuto_CheckedChanged(sender As Object, e As EventArgs) Handles ckbAuto.CheckedChanged If ckbAuto.Checked = True Then btnSearch.Visible = False btnSearch.Location = New Point(1365, 90) pnBarcode.Location = New Point(245, 80) btnReset.Location = New Point(1365, 90) Else btnSearch.Visible = True btnSearch.Location = New Point(1365, 90) pnBarcode.Location = New Point(245, 80) btnReset.Location = New Point(1555, 90) End If 'If rdbMass.Checked = True Then ' If ckbAuto.Checked = True Then ' btnSearch.Visible = False ' btnSearch.Location = New Point(930, 90) ' pnBarcode.Location = New Point(0, 80) ' btnReset.Location = New Point(930, 90) ' Else ' btnSearch.Visible = True ' btnSearch.Location = New Point(930, 90) ' pnBarcode.Location = New Point(0, 80) ' btnReset.Location = New Point(1115, 90) ' End If 'Else 'End If txbStateRead.Focus() End Sub Private Sub rdbStateInv_CheckedChanged(sender As Object, e As EventArgs) Handles rdbStateInv.CheckedChanged If rdbStateInv.Checked = True Then gbMapPacking.Enabled = False ptbLogo.Location = New Point(954, 638) gbInvoice.Location = New Point(3, 622) End If resetFunc() txbStateRead.Focus() End Sub Private Sub rdbStatePack_CheckedChanged(sender As Object, e As EventArgs) Handles rdbStatePack.CheckedChanged If rdbStatePack.Checked = True Then gbMapPacking.Enabled = True ptbLogo.Location = New Point(3, 638) gbInvoice.Location = New Point(954, 622) End If resetFunc() txbStateRead.Focus() End Sub Private Sub resetFunc() txbStateRead.BackColor = SystemColors.Window txbStateRead.Text = String.Empty compareValueClean() compareClear() If rdbMass.Checked = True Then MassReset() Else mappingReset() End If For i = 0 To funcList.mappack StateTxbClear(i) Next txbStateRead.Focus() End Sub Private Sub btnReset_Click(sender As Object, e As EventArgs) Handles btnReset.Click resetFunc() txbStateRead.Focus() End Sub Private Sub txbChkState_GotFocus(sender As Object, e As EventArgs) Handles txbChkState.GotFocus, txbChkCode.GotFocus, txbChkOrderer.GotFocus, txbChkAcc.GotFocus, txbChkDate.GotFocus, txbChkRefer.GotFocus, txbChkAD.GotFocus, txbMapState.GotFocus, txbMapDate.GotFocus, txbMapOrder.GotFocus, txbMapAccount.GotFocus, txbMapRefer.GotFocus, txbMapPacking.GotFocus, txbMapPkDate.GotFocus, txbInv.GotFocus, txbMsState.GotFocus, txbMsDate.GotFocus, txbMsOrder.GotFocus, txbMsAccount.GotFocus, txbMsRefer.GotFocus, txbMsPacking.GotFocus, txbLabelCode.GotFocus, txbMsPkDate.GotFocus, txbRequest.GotFocus, txbWork.GotFocus, txbLeftOver.GotFocus txbStateRead.Focus() End Sub Private Sub ckbAPIUse_CheckedChanged(sender As Object, e As EventArgs) Handles ckbAPIUse.CheckedChanged txbStateRead.Focus() End Sub Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click End End Sub End Class