Option Strict Off Imports System.IO Public Class 財務_收支單審核_ICS ReadOnly ds As New DataSet : ReadOnly ds1 As New DataSet : ReadOnly ds2 As New DataSet Private ReadOnly QQW(11) As String Dim DTP As String : Dim WWEE As String : Private II As Integer : Dim 匯率1 As Double Private Sub Set_清單1() 收支單_dgv.DataSource = Nothing : ds1.Clear() 收支單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 收支單_dgv.ColumnHeadersHeight = 25 收支單_dgv.AllowUserToAddRows = False ConnOpen() If 未核准的收支單_rb.Checked = True And 作廢的收支單_rb.Checked = False Then WWEE = "WHERE (審核人 LIKE N'') " ElseIf 未核准的收支單_rb.Checked = False And 作廢的收支單_rb.Checked = True Then WWEE = "WHERE (審核人 LIKE N'作廢%') " End If SQL1 = "SELECT 支付單號 AS 收支單號, 申請日期, 審核日期, 申請人 FROM 財務控制表_ICS " & WWEE & " ORDER BY 支付單號 DESC" CmdSet_For_DGV() : da.Fill(ds1) : 收支單_dgv.DataSource = ds1.Tables(0) : conn.Close() 收支單_dgv.Columns(0).FillWeight = 160 : 收支單_dgv.Columns(1).FillWeight = 100 : 收支單_dgv.Columns(2).FillWeight = 100 : 收支單_dgv.Columns(3).Visible = False End Sub Private Sub Set_費用清單() 明細_dgv.DataSource = Nothing : ds.Clear() 明細_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 明細_dgv.ColumnHeadersHeight = 25 明細_dgv.AllowUserToAddRows = False 明細_dgv.RowTemplate.Height = 35 ConnOpen() SQL1 = "SELECT 財務流水帳_ICS.支付單號, 財務流水帳_ICS.項次, 會計科目.會計科目, 財務流水帳_ICS.明細 AS 用途, Cast(財務流水帳_ICS.零用金 AS money) AS 零用金, Cast(財務流水帳_ICS.支票數 AS money) AS 支票, Cast(財務流水帳_ICS.收入 AS money) AS 收入, Cast(財務流水帳_ICS.支出 AS money) AS 支出, 財務流水帳_ICS.備註 AS 票期, 財務流水帳_ICS.匯率, 財務流水帳_ICS.銀行 AS 幣別, 財務流水帳_ICS.類別, 財務流水帳_ICS.流水號, 財務流水帳_ICS.含稅 FROM 財務流水帳_ICS INNER JOIN 會計科目 ON 財務流水帳_ICS.類別 = 會計科目.編號 WHERE (財務流水帳_ICS.支付單號 LIKE N'" & 收支單號_tb.Text & "') ORDER BY 財務流水帳_ICS.項次" CmdSet_For_DGV() : da.Fill(ds) : 明細_dgv.DataSource = ds.Tables(0) : conn.Close() 明細_dgv.Columns(0).Visible = False : 明細_dgv.Columns(1).FillWeight = 80 : 明細_dgv.Columns(2).FillWeight = 250 : 明細_dgv.Columns(3).FillWeight = 400 明細_dgv.Columns(4).Visible = False : 明細_dgv.Columns(5).Visible = False : 明細_dgv.Columns(6).FillWeight = 165 : 明細_dgv.Columns(7).FillWeight = 165 明細_dgv.Columns(8).FillWeight = 150 : 明細_dgv.Columns(9).FillWeight = 130 : 明細_dgv.Columns(10).FillWeight = 140 : 明細_dgv.Columns(11).Visible = False 明細_dgv.Columns(12).Visible = False : 明細_dgv.Columns(13).FillWeight = 80 明細_dgv.Columns(1).ReadOnly = True : 明細_dgv.Columns(2).ReadOnly = True : 明細_dgv.Columns(9).ReadOnly = True : 明細_dgv.Columns(10).ReadOnly = True 明細_dgv.Columns(4).DefaultCellStyle.Format = "#,##0.00" : 明細_dgv.Columns(5).DefaultCellStyle.Format = "#,##0.00" : 明細_dgv.Columns(6).DefaultCellStyle.Format = "#,##0.00" 明細_dgv.Columns(7).DefaultCellStyle.Format = "#,##0.00" : 明細_dgv.Columns(8).DefaultCellStyle.Format = "#,##0.00" 明細_dgv.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 明細_dgv.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 明細_dgv.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 明細_dgv.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 明細_dgv.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 明細_dgv.Columns(6).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 明細_dgv.Columns(7).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 明細_dgv.Columns(7).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight 明細_dgv.Columns(9).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter : 明細_dgv.Columns(9).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter 明細_dgv.Columns(10).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter : 明細_dgv.Columns(10).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter 明細_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter : 明細_dgv.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter 明細_dgv.EditMode = DataGridViewEditMode.EditOnEnter 收入_tb.Text = "0" : 支出_tb.Text = "0" : 餘額_tb.Text = "0" : 零用金_tb.Text = "0" : 支票_tb.Text = "0" For i As Integer = 0 To 明細_dgv.Rows.Count - 1 收入_tb.Text = Val(收入_tb.Text) + 明細_dgv.Rows(i).Cells("收入").Value * 明細_dgv.Rows(i).Cells("匯率").Value 支出_tb.Text = Val(支出_tb.Text) + 明細_dgv.Rows(i).Cells("支出").Value * 明細_dgv.Rows(i).Cells("匯率").Value 零用金_tb.Text = Val(零用金_tb.Text) + 明細_dgv.Rows(i).Cells("零用金").Value * 明細_dgv.Rows(i).Cells("匯率").Value 支票_tb.Text = Val(支票_tb.Text) + 明細_dgv.Rows(i).Cells("支票").Value * 明細_dgv.Rows(i).Cells("匯率").Value Next i 餘額_tb.Text = Val(零用金_tb.Text) + Val(收入_tb.Text) - Val(支出_tb.Text) If Val(餘額_tb.Text) > 0 Then : 餘額_tb.ForeColor = Color.Blue : Else : 餘額_tb.ForeColor = Color.Red : End If 收入_tb.Text = Format(Val(收入_tb.Text), "#,##0.00") : 支出_tb.Text = Format(Val(支出_tb.Text), "#,##0.00") : 餘額_tb.Text = Format(Val(餘額_tb.Text), "#,##0.00") 零用金_tb.Text = Format(Val(零用金_tb.Text), "#,##0.00") : 支票_tb.Text = Format(Val(支票_tb.Text), "#,##0.00") End Sub Private Sub Set_清單() 簽名檔_dgv.DataSource = Nothing : ds2.Clear() 簽名檔_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing 簽名檔_dgv.ColumnHeadersHeight = 25 簽名檔_dgv.AllowUserToAddRows = False ConnOpen() SQL1 = "SELECT 圖片流水號 AS 圖檔編碼, 簽名檔人名 FROM GCM主管簽名檔管理 ORDER BY 圖片流水號 DESC" CmdSet_For_DGV() : da.Fill(ds2) : 簽名檔_dgv.DataSource = ds2.Tables(0) : conn.Close() 簽名檔_dgv.Columns(0).FillWeight = 173 : 簽名檔_dgv.Columns(1).Visible = False If 簽名檔_dgv.Rows.Count = 0 Then : Else TextBox14.Text = 簽名檔_dgv(0, 0).Value.ToString ConnOpen() SQL1 = "SELECT 簽名檔圖片 FROM GCM主管簽名檔管理 WHERE 圖片流水號 LIKE N'" & TextBox14.Text & "'" cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader While dr.Read() = True Dim unused As Byte() = New Byte(-1) {} Dim bytes As Byte() = DirectCast(dr.Item("簽名檔圖片"), Byte()) Dim oStream As New MemoryStream(bytes) PictureBox1.Image = Bitmap.FromStream(oStream) End While conn.Close() PictureBox1.SizeMode = 4 For QAZ = 0 To 999 QQW(0) = Strings.Right(簽名檔_dgv(0, 0).Value.ToString, 2) : QQW(1) = Strings.Right(Year(Today), 2) : QQW(2) = Strings.Left(Year(Today), 2) : QQW(3) = Month(Today) + 9 QQW(4) = Strings.Right(QQW(0), 1) : QQW(5) = Strings.Left(QQW(0), 1) : QQW(6) = Strings.Right(QQW(1), 1) : QQW(7) = Strings.Left(QQW(1), 1) : QQW(8) = Strings.Right(QQW(2), 1) QQW(9) = Strings.Left(QQW(2), 1) : QQW(10) = Strings.Right(QQW(3), 1) : QQW(11) = Strings.Left(QQW(3), 1) For RT = 4 To 11 Delay(3) Dim ran = New Random(DateTime.Now.Millisecond) : Dim NUM1 As Integer = ran.Next(1, 4096) For I = 0 To 4096 : If NUM1 > 9 Then : NUM1 -= 9 : ElseIf NUM1 < 9 Then : I = 4096 : End If : Next If NUM1 = 1 Then : II = RT : 轉換() : ElseIf NUM1 = 2 Then : II = RT : 轉換() : ElseIf NUM1 = 3 Then : ElseIf NUM1 = 4 Then : II = RT : 轉換() : ElseIf NUM1 = 5 Then ElseIf NUM1 = 6 Then : II = RT : 轉換() : ElseIf NUM1 = 7 Then : ElseIf NUM1 = 8 Then : II = RT : 轉換() : ElseIf NUM1 = 9 Then : II = RT : 轉換() : End If Next Dim ran1 = New Random(DateTime.Now.Millisecond) : Dim NUM2 As Integer = ran1.Next(1, 4096) For I = 0 To 4096 : If NUM2 > 99 Then : NUM2 -= 49 : ElseIf NUM2 < 99 Then : I = 4096 : End If : Next TextBox13.Text = QQW(11) & "2" & QQW(9) & "7" & QQW(7) & "0" & QQW(5) & QQW(4) & "1" & QQW(6) & "3" & QQW(8) & "9" & QQW(10) & NUM2 ConnOpen() SQL1 = "SELECT 簽名編碼 FROM 財務控制表_ICS WHERE 簽名編碼 LIKE N'" & TextBox13.Text & "'" cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader If dr.Read() = True Then : Else : QAZ = 999 : End If : conn.Close() Next End If End Sub Private Sub 轉換() If QQW(II) = "1" Then : QQW(II) = "A" : ElseIf QQW(II) = "2" Then : QQW(II) = "B" : ElseIf QQW(II) = "3" Then : QQW(II) = "C" : ElseIf QQW(II) = "4" Then : QQW(II) = "D" ElseIf QQW(II) = "5" Then : QQW(II) = "E" : ElseIf QQW(II) = "6" Then : QQW(II) = "F" : ElseIf QQW(II) = "7" Then : QQW(II) = "G" : ElseIf QQW(II) = "8" Then : QQW(II) = "H" ElseIf QQW(II) = "9" Then : QQW(II) = "I" : ElseIf QQW(II) = "0" Then : QQW(II) = "J" End If End Sub Public Sub Delay(ByRef Interval As Double) 'Interval单位为毫秒 Dim time As DateTime = DateTime.Now : Dim Span As Double = Interval * 1234 : While ((DateTime.Now.Ticks - time.Ticks) < Span) : Application.DoEvents() : End While End Sub Private Sub 匯率() ConnOpen() SQL1 = "SELECT 中心匯率, 美金匯率, 印尼匯率 FROM 歷史匯率表 WHERE (年 LIKE N'" & Strings.Left(Format(日期_dtp.Value, "yyyyMMdd"), 4) & "%') AND (月 LIKE N'" & Strings.Mid(Format(日期_dtp.Value, "yyyyMMdd"), 5, 2) & "%')" cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader If dr.Read() Then 人民幣匯率_tb.Text = dr("中心匯率").ToString : 美金匯率_tb.Text = dr("美金匯率").ToString : 印尼匯率_tb.Text = dr("印尼匯率").ToString : conn.Close() : dr.Close() Else conn.Close() : dr.Close() : 匯率修改.Close() : 匯率修改.Show() : 匯率修改.BringToFront() End If End Sub Private Sub 財務_收支單審核_ICS_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.MdiParent = GCM_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True 未核准的收支單_rb.Checked = True : 收支單_dgv.Visible = True : Panel1.SendToBack() 匯率() : Set_清單1() : Set_清單() End Sub Private Sub 收支單_dgv_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles 收支單_dgv.CellClick If e.RowIndex = -1 Then : Else 收支單號_tb.Text = 收支單_dgv(0, e.RowIndex).Value.ToString : 日期_dtp.Value = 收支單_dgv(1, e.RowIndex).Value.ToString : Set_費用清單() 申請人_tb.Text = 收支單_dgv(3, e.RowIndex).Value.ToString End If End Sub Private Sub 簽名檔_dgv_CellClick(ByVal sender As System.Object, ByVal e As DataGridViewCellEventArgs) Handles 簽名檔_dgv.CellClick If e.RowIndex = -1 Then : Else TextBox14.Text = 簽名檔_dgv(0, e.RowIndex).Value.ToString ConnOpen() SQL1 = "SELECT 簽名檔圖片 FROM GCM主管簽名檔管理 WHERE 圖片流水號 LIKE N'" & TextBox14.Text & "'" cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader While dr.Read() = True Dim unused As Byte() = New Byte(-1) {} Dim bytes As Byte() = DirectCast(dr.Item("簽名檔圖片"), Byte()) Dim oStream As New MemoryStream(bytes) PictureBox1.Image = Bitmap.FromStream(oStream) End While conn.Close() PictureBox1.SizeMode = 4 For QAZ = 0 To 999 QQW(0) = Strings.Right(簽名檔_dgv(0, e.RowIndex).Value.ToString, 2) : QQW(1) = Strings.Right(Year(Today), 2) : QQW(2) = Strings.Left(Year(Today), 2) : QQW(3) = Month(Today) + 9 QQW(4) = Strings.Right(QQW(0), 1) : QQW(5) = Strings.Left(QQW(0), 1) : QQW(6) = Strings.Right(QQW(1), 1) : QQW(7) = Strings.Left(QQW(1), 1) : QQW(8) = Strings.Right(QQW(2), 1) QQW(9) = Strings.Left(QQW(2), 1) : QQW(10) = Strings.Right(QQW(3), 1) : QQW(11) = Strings.Left(QQW(3), 1) For RT = 4 To 11 Delay(3) Dim ran = New Random(DateTime.Now.Millisecond) : Dim NUM1 As Integer = ran.Next(1, 4096) For I = 0 To 4096 : If NUM1 > 9 Then : NUM1 -= 9 : ElseIf NUM1 < 9 Then : I = 4096 : End If : Next If NUM1 = 1 Then : II = RT : 轉換() : ElseIf NUM1 = 2 Then : II = RT : 轉換() : ElseIf NUM1 = 3 Then : ElseIf NUM1 = 4 Then : II = RT : 轉換() : ElseIf NUM1 = 5 Then ElseIf NUM1 = 6 Then : II = RT : 轉換() : ElseIf NUM1 = 7 Then : ElseIf NUM1 = 8 Then : II = RT : 轉換() : ElseIf NUM1 = 9 Then : II = RT : 轉換() : End If Next Dim ran1 = New Random(DateTime.Now.Millisecond) : Dim NUM2 As Integer = ran1.Next(1, 4096) For I = 0 To 4096 : If NUM2 > 99 Then : NUM2 -= 49 : ElseIf NUM2 < 99 Then : I = 4096 : End If : Next TextBox13.Text = QQW(11) & "2" & QQW(9) & "7" & QQW(7) & "0" & QQW(5) & QQW(4) & "1" & QQW(6) & "3" & QQW(8) & "9" & QQW(10) & NUM2 ConnOpen() SQL1 = "SELECT 簽名編碼 FROM 財務控制表_ICS WHERE 簽名編碼 LIKE N'" & TextBox13.Text & "'" cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader If dr.Read() = True Then : Else : QAZ = 999 : End If : conn.Close() Next End If End Sub Private Sub Set_切換格式() 明細_dgv.DataSource = Nothing : ds.Clear() : 收支單號_tb.Text = "" : 申請人_tb.Text = "" : 收入_tb.Text = "" : 支出_tb.Text = "" : 餘額_tb.Text = "" 零用金_tb.Text = "" : 支票_tb.Text = "" : Set_清單1() End Sub Private Sub 未核准的收支單_rb_CheckedChanged(sender As Object, e As EventArgs) Handles 未核准的收支單_rb.Click 未核准的收支單_rb.Checked = True : 作廢的收支單_rb.Checked = False 明細_dgv.DataSource = Nothing : ds.Clear() : 收支單號_tb.Text = "" : 申請人_tb.Text = "" : 收入_tb.Text = "" : 支出_tb.Text = "" : 餘額_tb.Text = "" 審核通過_bt.Enabled = True : 單據作廢_bt.Enabled = True : 審核通過ToolStripMenuItem.Enabled = True : 單據作廢ToolStripMenuItem.Enabled = True : Set_切換格式() End Sub Private Sub 作廢的收支單_rb_CheckedChanged(sender As Object, e As EventArgs) Handles 作廢的收支單_rb.Click 未核准的收支單_rb.Checked = False : 作廢的收支單_rb.Checked = True 明細_dgv.DataSource = Nothing : ds.Clear() : 收支單號_tb.Text = "" : 申請人_tb.Text = "" : 收入_tb.Text = "" : 支出_tb.Text = "" : 餘額_tb.Text = "" 審核通過_bt.Enabled = False : 單據作廢_bt.Enabled = False : 審核通過ToolStripMenuItem.Enabled = False : 單據作廢ToolStripMenuItem.Enabled = False : Set_切換格式() End Sub Private Sub Set_日期格式轉換() DTP = Format(Today(), "yyyy/MM/dd") End Sub Private Sub 審核通過_bt_Click(sender As Object, e As EventArgs) Handles 審核通過_bt.Click If 收支單號_tb.Text = "" Then MsgBox("請選擇需要審核的單據。") Else If 補單_ch.Checked = False Then Set_日期格式轉換() Else DTP = Format(日期_dtp.Value, "yyyy/MM/dd") End If conn.Close() ConnOpen() SQL1 = "UPDATE 財務控制表_ICS SET 審核人 = N'" & gUserName & "', 審核日期 = N'" & DTP & "', 核准圖檔 = N'" & TextBox14.Text & "', 簽名編碼 = N'" & TextBox13.Text & "', 出納 = '" & gUserName & "', 出納日期 = N'" & DTP & "' WHERE (支付單號 = N'" & 收支單號_tb.Text & "')" CmdSet_For_dr() : conn.Close() ConnOpen() SQL1 = "UPDATE 財務流水帳_ICS SET 出納 = '1', 出納日期 = N'" & DTP & "' WHERE (支付單號 LIKE N'" & 收支單號_tb.Text & "')" CmdSet_For_dr() : conn.Close() For i As Integer = 0 To 明細_dgv.Rows.Count - 1 If 明細_dgv.Rows(i).Cells("零用金").Value <> 0 Then ConnOpen() SQL1 = "UPDATE 財務流水帳_ICS SET 備用金 = N'1' WHERE (支付單號 LIKE N'" & 收支單號_tb.Text & "' AND 項次 LIKE N'" & 明細_dgv.Rows(i).Cells("項次").Value & "')" CmdSet_For_dr() : conn.Close() ElseIf 明細_dgv.Rows(i).Cells("收入").Value <> 0 Then ConnOpen() SQL1 = "UPDATE 財務流水帳_ICS SET 現金 = N'1' WHERE (支付單號 LIKE N'" & 收支單號_tb.Text & "' AND 項次 LIKE N'" & 明細_dgv.Rows(i).Cells("項次").Value & "')" CmdSet_For_dr() : conn.Close() ElseIf 明細_dgv.Rows(i).Cells("支出").Value <> 0 Then ConnOpen() SQL1 = "UPDATE 財務流水帳_ICS SET 公帳 = N'1' WHERE (支付單號 LIKE N'" & 收支單號_tb.Text & "' AND 項次 LIKE N'" & 明細_dgv.Rows(i).Cells("項次").Value & "')" CmdSet_For_dr() : conn.Close() End If Next MsgBox("審核完畢。") 收支單號_tb.Text = "" : 申請人_tb.Text = "" 明細_dgv.DataSource = Nothing : ds.Clear() Set_清單1() : Set_清單() End If End Sub Private Sub 單據作廢_bt_Click(sender As Object, e As EventArgs) Handles 單據作廢_bt.Click If 收支單號_tb.Text = "" Then MsgBox("請選擇需要審核的單據。") Else PA = InputBox("請輸入作廢原因。") If PA = "" Then MsgBox("請輸入作廢原因,不可空白。") Else If 補單_ch.Checked = False Then Set_日期格式轉換() Else DTP = Format(日期_dtp.Value, "yyyy/MM/dd") End If conn.Close() ConnOpen() SQL1 = "UPDATE 財務控制表_ICS SET 審核人 = N'作廢-" & gUserName & "', 審核日期 = N'" & DTP & "', 備註 = N'" & PA & "' WHERE (支付單號 = N'" & 收支單號_tb.Text & "')" CmdSet_For_dr() conn.Close() MsgBox("審核完畢。") : PA = "" 收支單號_tb.Text = "" : 申請人_tb.Text = "" 明細_dgv.DataSource = Nothing : ds.Clear() Set_清單1() End If End If End Sub '----------------------滑鼠右鍵-------------------------------------------------------------------------------------------------------------------------------------------------------------------- Private Sub 重新讀取ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 重新讀取ToolStripMenuItem.Click Set_清單1() End Sub Private Sub 審核通過ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 審核通過ToolStripMenuItem.Click Me.審核通過_bt.PerformClick() End Sub Private Sub 單據作廢ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 單據作廢ToolStripMenuItem.Click Me.單據作廢_bt.PerformClick() End Sub End Class