Option Strict Off Imports System.IO Public Class 財務_收支單審核_GCM 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 '') " ElseIf 未核准的收支單_rb.Checked = False And 作廢的收支單_rb.Checked = True Then WWEE = "WHERE (審核人 LIKE '作廢%') " End If SQL1 = "SELECT 支付單號 AS 收支單號, 申請日期, 審核日期, 申請人 FROM 財務控制表 " & 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 財務流水帳.支付單號, 財務流水帳.項次, 會計科目.會計科目, 財務流水帳.明細 AS 用途, Cast(財務流水帳.零用金 AS money) AS 零用金, Cast(財務流水帳.支票數 AS money) AS 支票, Cast(財務流水帳.收入 AS money) AS 收入, Cast(財務流水帳.支出 AS money) AS 支出, 財務流水帳.備註 AS 票期, 財務流水帳.匯率, 財務流水帳.銀行 AS 幣別, 財務流水帳.類別, 財務流水帳.流水號, 財務流水帳.含稅 FROM 財務流水帳 INNER JOIN 會計科目 ON 財務流水帳.類別 = 會計科目.編號 WHERE (財務流水帳.支付單號 LIKE '" & 收支單號_tb.Text & "') ORDER BY 財務流水帳.項次" 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).FillWeight = 120 : 明細_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 '" & 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 財務控制表 WHERE 簽名編碼 LIKE '" & 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 '" & Strings.Left(Format(日期_dtp.Value, "yyyyMMdd"), 4) & "%') AND (月 LIKE '" & 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 營運費用支付審核_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 匯率() : 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 '" & 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 財務控制表 WHERE 簽名編碼 LIKE '" & 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 財務控制表 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 財務流水帳 SET 出納 = '1', 出納日期 = N'" & DTP & "' WHERE (支付單號 LIKE '" & 收支單號_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 財務流水帳 SET 備用金 = N'1' WHERE (支付單號 LIKE '" & 收支單號_tb.Text & "' AND 項次 LIKE '" & 明細_dgv.Rows(i).Cells("項次").Value & "')" CmdSet_For_dr() : conn.Close() ElseIf 明細_dgv.Rows(i).Cells("收入").Value <> 0 Then ConnOpen() SQL1 = "UPDATE 財務流水帳 SET 現金 = N'1' WHERE (支付單號 LIKE '" & 收支單號_tb.Text & "' AND 項次 LIKE '" & 明細_dgv.Rows(i).Cells("項次").Value & "')" CmdSet_For_dr() : conn.Close() ElseIf 明細_dgv.Rows(i).Cells("支出").Value <> 0 Then ConnOpen() SQL1 = "UPDATE 財務流水帳 SET 公帳 = N'1' WHERE (支付單號 LIKE '" & 收支單號_tb.Text & "' AND 項次 LIKE '" & 明細_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 財務控制表 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