Brak opisu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

財務_收支單申請_GCM.vb 34KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453
  1. Option Strict Off
  2. Public Class 財務_收支單申請_GCM
  3. ReadOnly ds As New DataSet : ReadOnly ds1 As New DataSet
  4. Private DTP As String
  5. Private DTP1 As String
  6. Private WWEE As String
  7. Private 新流水1 As String
  8. Private 新項次 As String
  9. Private ReadOnly 新流水2 As String
  10. Dim NUM1, NUM2 As Integer : Dim 匯率1 As Double
  11. Private Sub Set_清單1()
  12. 收支單_dgv.DataSource = Nothing : ds1.Clear()
  13. 收支單_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  14. 收支單_dgv.ColumnHeadersHeight = 25
  15. 收支單_dgv.AllowUserToAddRows = False
  16. ConnOpen()
  17. If 未核准的收支單_rb.Checked = True And 作廢的收支單_rb.Checked = False And 已核准的收支單_rb.Checked = False Then
  18. WWEE = "WHERE (審核人 LIKE '') "
  19. ElseIf 未核准的收支單_rb.Checked = False And 作廢的收支單_rb.Checked = True And 已核准的收支單_rb.Checked = False Then
  20. WWEE = "WHERE (審核人 LIKE '作廢%') "
  21. ElseIf 未核准的收支單_rb.Checked = False And 作廢的收支單_rb.Checked = False And 已核准的收支單_rb.Checked = True Then
  22. WWEE = "WHERE (審核人 NOT LIKE '作廢%') AND (審核人 NOT LIKE '') "
  23. End If
  24. SQL1 = "SELECT 支付單號 AS 收支單號, 申請日期, 審核日期, 申請人 FROM 財務控制表 " & WWEE & " ORDER BY 申請日期 DESC"
  25. CmdSet_For_DGV() : da.Fill(ds1) : 收支單_dgv.DataSource = ds1.Tables(0) : conn.Close()
  26. 收支單_dgv.Columns(0).FillWeight = 160 : 收支單_dgv.Columns(1).FillWeight = 100 : 收支單_dgv.Columns(2).FillWeight = 100 : 收支單_dgv.Columns(3).Visible = False
  27. End Sub
  28. Private Sub Set_費用清單()
  29. 明細表_dgv.DataSource = Nothing : ds.Clear()
  30. 明細表_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  31. 明細表_dgv.ColumnHeadersHeight = 25
  32. 明細表_dgv.AllowUserToAddRows = False
  33. 明細表_dgv.RowTemplate.Height = 35
  34. ConnOpen()
  35. SQL1 = "SELECT 財務流水帳.支付單號, 財務流水帳.項次, 會計科目.會計科目, 財務流水帳.明細 AS 用途,
  36. 財務流水帳.零用金, 財務流水帳.支票數 AS 支票, Cast(財務流水帳.收入 AS money) AS 收入,
  37. Cast(財務流水帳.支出 AS money) AS 支出, 財務流水帳.備註 AS 票期, 財務流水帳.匯率,
  38. 財務流水帳.銀行 AS 幣別, 財務流水帳.類別, 財務流水帳.流水號, 財務流水帳.含稅
  39. FROM 財務流水帳 INNER JOIN
  40. 會計科目 ON 財務流水帳.類別 = 會計科目.編號
  41. WHERE (財務流水帳.支付單號 LIKE '" & 收支單號_tb.Text & "')
  42. ORDER BY 財務流水帳.項次"
  43. CmdSet_For_DGV() : da.Fill(ds) : 明細表_dgv.DataSource = ds.Tables(0) : conn.Close()
  44. 明細表_dgv.Columns(0).Visible = False : 明細表_dgv.Columns(1).FillWeight = 80 : 明細表_dgv.Columns(2).FillWeight = 250 : 明細表_dgv.Columns(3).FillWeight = 400
  45. 明細表_dgv.Columns(4).Visible = False : 明細表_dgv.Columns(5).FillWeight = 120 : 明細表_dgv.Columns(6).FillWeight = 165 : 明細表_dgv.Columns(7).FillWeight = 165
  46. 明細表_dgv.Columns(8).FillWeight = 150 : 明細表_dgv.Columns(9).FillWeight = 130 : 明細表_dgv.Columns(10).FillWeight = 140 : 明細表_dgv.Columns(11).Visible = False
  47. 明細表_dgv.Columns(12).Visible = False : 明細表_dgv.Columns(13).FillWeight = 80
  48. 明細表_dgv.Columns(1).ReadOnly = True : 明細表_dgv.Columns(2).ReadOnly = True : 明細表_dgv.Columns(9).ReadOnly = True : 明細表_dgv.Columns(10).ReadOnly = True
  49. 明細表_dgv.Columns(4).DefaultCellStyle.Format = "#,##0.00" : 明細表_dgv.Columns(5).DefaultCellStyle.Format = "#,##0.00" : 明細表_dgv.Columns(6).DefaultCellStyle.Format = "#,##0.00"
  50. 明細表_dgv.Columns(7).DefaultCellStyle.Format = "#,##0.00" : 明細表_dgv.Columns(8).DefaultCellStyle.Format = "#,##0.00"
  51. 明細表_dgv.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 明細表_dgv.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
  52. 明細表_dgv.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 明細表_dgv.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
  53. 明細表_dgv.Columns(6).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 明細表_dgv.Columns(6).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
  54. 明細表_dgv.Columns(7).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight : 明細表_dgv.Columns(7).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleRight
  55. 明細表_dgv.Columns(9).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter : 明細表_dgv.Columns(9).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
  56. 明細表_dgv.Columns(10).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter : 明細表_dgv.Columns(10).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
  57. 明細表_dgv.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter : 明細表_dgv.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
  58. 明細表_dgv.EditMode = DataGridViewEditMode.EditOnEnter
  59. 收入_tb.Text = "0.00" : 支出_tb.Text = "0.00" : 合計_tb.Text = "0.00" : 零用金_tb.Text = "0" : 支票_tb.Text = "0.00"
  60. For i As Integer = 0 To 明細表_dgv.Rows.Count - 1
  61. 收入_tb.Text = Val(收入_tb.Text) + Val(明細表_dgv.Rows(i).Cells("收入").Value) * 明細表_dgv.Rows(i).Cells("匯率").Value
  62. 支出_tb.Text = Val(支出_tb.Text) + Val(明細表_dgv.Rows(i).Cells("支出").Value) * 明細表_dgv.Rows(i).Cells("匯率").Value
  63. 零用金_tb.Text = Val(零用金_tb.Text) + 明細表_dgv.Rows(i).Cells("零用金").Value * 明細表_dgv.Rows(i).Cells("匯率").Value
  64. 支票_tb.Text = Val(支票_tb.Text) + 明細表_dgv.Rows(i).Cells("支票").Value * 明細表_dgv.Rows(i).Cells("匯率").Value
  65. Next i
  66. 合計_tb.Text = Val(零用金_tb.Text) + Val(收入_tb.Text) - Val(支出_tb.Text)
  67. If Val(合計_tb.Text) > 0 Then : 合計_tb.ForeColor = Color.Blue : Else : 合計_tb.ForeColor = Color.Red : End If
  68. 收入_tb.Text = Format(Val(收入_tb.Text), "#,##0.00") : 支出_tb.Text = Format(Val(支出_tb.Text), "#,##0.00") : 合計_tb.Text = Format(Val(合計_tb.Text), "#,##0.00")
  69. 零用金_tb.Text = Format(Val(零用金_tb.Text), "#,##0.00") : 支票_tb.Text = Format(Val(支票_tb.Text), "#,##0.00")
  70. End Sub
  71. Private Sub ComboBox1下拉表單資料載入()
  72. conn.Close()
  73. ConnOpen()
  74. SQL1 = "SELECT 會計科目, 編號 FROM 會計科目 WHERE (LEFT(編號, 7) LIKE N'" & 科目2_號_cb.Text & "') AND (停用 = 0) AND (統制科目 = 0) AND (顯示 = 1) ORDER BY 編號"
  75. CmdSet_For_dr() : 科目3_名_cb.Items.Clear() : 科目3_號_cb.Items.Clear()
  76. While (dr.Read()) : 科目3_名_cb.Items.Add(dr("會計科目")) : 科目3_號_cb.Items.Add(dr("編號")) : End While : conn.Close()
  77. If 科目3_名_cb.Items.Count <> 0 Then : 科目3_名_cb.SelectedIndex = 0 : End If
  78. End Sub
  79. Private Sub ComboBox2下拉表單資料載入()
  80. conn.Close()
  81. ConnOpen()
  82. SQL1 = "SELECT 第一階, LEFT(編號, 4) AS 編號 FROM 會計科目 WHERE (停用 = 0) AND (顯示 = 1) GROUP BY 第一階, LEFT(編號, 4) ORDER BY 編號"
  83. CmdSet_For_dr() : 科目1_名_cb.Items.Clear() : 科目1_號_cb.Items.Clear() : 科目1_名_cb.Text = "" : 科目1_號_cb.Text = ""
  84. While (dr.Read()) : 科目1_名_cb.Items.Add(dr("第一階")) : 科目1_號_cb.Items.Add(dr("編號")) : End While : conn.Close()
  85. End Sub
  86. Private Sub ComboBox3下拉表單資料載入()
  87. conn.Close()
  88. ConnOpen()
  89. SQL1 = "SELECT LEFT(編號, 7) AS 編號, 第二階, 層級 FROM 會計科目 WHERE (LEFT(編號, 4) LIKE N'" & 科目1_號_cb.Text & "') AND (層級 NOT LIKE '3') AND (停用 = 0) AND (顯示 = 1)
  90. GROUP BY LEFT(編號, 7), 第二階, 層級 ORDER BY 編號"
  91. CmdSet_For_dr() : 科目2_名_cb.Items.Clear() : 科目2_號_cb.Items.Clear() : 科目2_名_cb.Text = "" : 科目2_號_cb.Text = ""
  92. While (dr.Read()) : 科目2_名_cb.Items.Add(dr("第二階")) : 科目2_號_cb.Items.Add(dr("編號")) : End While : conn.Close()
  93. End Sub
  94. Private Sub 匯率()
  95. ConnOpen()
  96. SQL1 = "SELECT 中心匯率, 美金匯率, 印尼匯率 FROM 歷史匯率表
  97. WHERE (年 LIKE '" & Strings.Left(Format(日期_dtp.Value, "yyyyMMdd"), 4) & "%') AND (月 LIKE '" & Strings.Mid(Format(日期_dtp.Value, "yyyyMMdd"), 5, 2) & "%')"
  98. cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
  99. If dr.Read() Then
  100. 人民幣匯率_tb.Text = dr("中心匯率").ToString : 美金匯率_tb.Text = dr("美金匯率").ToString : 印尼匯率_tb.Text = dr("印尼匯率").ToString : conn.Close() : dr.Close()
  101. Else
  102. conn.Close() : dr.Close() : 匯率修改.Close() : 匯率修改.Show() : 匯率修改.BringToFront()
  103. End If
  104. End Sub
  105. Private Sub 營運成本支付申請_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  106. Me.MdiParent = GCM_ERP_SYS : Me.WindowState = 2 : Me.AutoScroll = True
  107. 未核准的收支單_rb.Checked = True : DateTimePicker2.Visible = False : 複製單據開單ToolStripMenuItem.Enabled = False : 科目3_號_cb.Visible = False
  108. 收支單_dgv.Visible = True : 視窗1_pl.Visible = False : Set_清單1() : ComboBox2下拉表單資料載入()
  109. 匯率()
  110. End Sub
  111. Private Sub 明細表_dgv_CellContentCl(sender As Object, e As DataGridViewCellEventArgs) Handles 明細表_dgv.CellEndEdit
  112. 收入_tb.Text = "0" : 支出_tb.Text = "0" : 合計_tb.Text = "0" : 零用金_tb.Text = "0" : 支票_tb.Text = "0"
  113. For i As Integer = 0 To 明細表_dgv.Rows.Count - 1
  114. 收入_tb.Text = Val(收入_tb.Text) + 明細表_dgv.Rows(i).Cells("收入").Value * 明細表_dgv.Rows(i).Cells("匯率").Value
  115. 支出_tb.Text = Val(支出_tb.Text) + 明細表_dgv.Rows(i).Cells("支出").Value * 明細表_dgv.Rows(i).Cells("匯率").Value
  116. 零用金_tb.Text = Val(零用金_tb.Text) + 明細表_dgv.Rows(i).Cells("零用金").Value * 明細表_dgv.Rows(i).Cells("匯率").Value
  117. 支票_tb.Text = Val(支票_tb.Text) + 明細表_dgv.Rows(i).Cells("支票").Value * 明細表_dgv.Rows(i).Cells("匯率").Value
  118. Next i
  119. 合計_tb.Text = Val(零用金_tb.Text) + Val(收入_tb.Text) - Val(支出_tb.Text)
  120. If Val(合計_tb.Text) > 0 Then : 合計_tb.ForeColor = Color.Blue : Else : 合計_tb.ForeColor = Color.Red : End If
  121. 收入_tb.Text = Format(Val(收入_tb.Text), "#,##0") : 支出_tb.Text = Format(Val(支出_tb.Text), "#,##0") : 合計_tb.Text = Format(Val(合計_tb.Text), "#,##0")
  122. 零用金_tb.Text = Format(Val(零用金_tb.Text), "#,##0") : 支票_tb.Text = Format(Val(支票_tb.Text), "#,##0")
  123. Dim EU As String
  124. EU = 明細表_dgv("票期", e.RowIndex).Value.ToString
  125. If EU = "" Then
  126. Else
  127. DateTimePicker2.Text = EU
  128. 明細表_dgv.Rows(e.RowIndex).Cells("票期").Value = Format(DateTimePicker2.Value, "yyyy/MM/dd")
  129. End If
  130. End Sub
  131. Private Sub 營運收支單_dgv_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles 收支單_dgv.CellClick
  132. If e.RowIndex = -1 Then : Else
  133. 收支單號_tb.Text = 收支單_dgv(0, e.RowIndex).Value.ToString : 日期_dtp.Value = 收支單_dgv(1, e.RowIndex).Value.ToString : Set_費用清單()
  134. 申請人_tb.Text = 收支單_dgv(3, e.RowIndex).Value.ToString
  135. End If
  136. End Sub
  137. Private Sub 明細表_dgv_CellClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles 明細表_dgv.CellClick
  138. If e.RowIndex = -1 Then : Else
  139. If 明細表_dgv.SelectedCells.Count = 1 Then
  140. If 明細表_dgv.SelectedCells(0).ColumnIndex = 4 Then
  141. 窗口表頭_lb.Text = "零用金-編輯指定" : 窗口說明1_lb.Text = "零用金" : NUM2 = 明細表_dgv.SelectedCells(0).RowIndex
  142. If 視窗1_pl.Visible = False Then : 視窗1_pl.Visible = True : 視窗1_pl.BringToFront() : Else : 視窗1_pl.Visible = False : End If
  143. ElseIf 明細表_dgv.SelectedCells(0).ColumnIndex = 5 Then
  144. 窗口表頭_lb.Text = "支票-編輯指定" : 窗口說明1_lb.Text = "支票" : NUM2 = 明細表_dgv.SelectedCells(0).RowIndex
  145. If 視窗1_pl.Visible = False Then : 視窗1_pl.Visible = True : 視窗1_pl.BringToFront() : Else : 視窗1_pl.Visible = False : End If
  146. End If
  147. End If
  148. 項次_tb.Text = 明細表_dgv(1, e.RowIndex).Value.ToString : 幣別_cb.Text = 明細表_dgv("幣別", e.RowIndex).Value.ToString
  149. 科目1_號_cb.Text = Strings.Left(明細表_dgv("類別", e.RowIndex).Value.ToString, 4) : 科目2_號_cb.Text = Strings.Left(明細表_dgv("類別", e.RowIndex).Value.ToString, 7)
  150. 科目3_號_cb.Text = 明細表_dgv("類別", e.RowIndex).Value.ToString
  151. End If
  152. End Sub
  153. Private Sub ComboBox5_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 科目1_名_cb.TextChanged
  154. 科目1_號_cb.SelectedIndex = 科目1_名_cb.SelectedIndex : 關鍵字查詢會計科目_tb.Text = "" : ComboBox3下拉表單資料載入() : ComboBox1下拉表單資料載入()
  155. End Sub
  156. Private Sub ComboBox2_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 科目1_號_cb.TextChanged
  157. 科目1_名_cb.SelectedIndex = 科目1_號_cb.SelectedIndex : ComboBox3下拉表單資料載入() : ComboBox1下拉表單資料載入()
  158. End Sub
  159. Private Sub ComboBox3_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 科目2_名_cb.TextChanged
  160. 科目2_號_cb.SelectedIndex = 科目2_名_cb.SelectedIndex : ComboBox1下拉表單資料載入()
  161. End Sub
  162. Private Sub ComboBox4_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 科目2_號_cb.TextChanged
  163. 科目2_名_cb.SelectedIndex = 科目2_號_cb.SelectedIndex : ComboBox1下拉表單資料載入()
  164. End Sub
  165. Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 科目3_名_cb.SelectedIndexChanged
  166. 科目3_號_cb.SelectedIndex = 科目3_名_cb.SelectedIndex
  167. End Sub
  168. Private Sub ComboBox6_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 科目3_號_cb.SelectedIndexChanged
  169. 科目3_名_cb.SelectedIndex = 科目3_號_cb.SelectedIndex
  170. End Sub
  171. Private Sub 關鍵字查詢會計科目_tb_TextChanged(sender As Object, e As EventArgs) Handles 關鍵字查詢會計科目_tb.TextChanged
  172. conn.Close()
  173. ConnOpen()
  174. SQL1 = "SELECT 會計科目, 編號 FROM 會計科目 WHERE (會計科目 LIKE N'%" & 關鍵字查詢會計科目_tb.Text & "%') AND (停用 = 0) AND (統制科目 = 0) ORDER BY 編號"
  175. CmdSet_For_dr() : 科目3_名_cb.Items.Clear() : 科目3_號_cb.Items.Clear()
  176. While (dr.Read()) : 科目3_名_cb.Items.Add(dr("會計科目")) : 科目3_號_cb.Items.Add(dr("編號")) : End While : conn.Close()
  177. If 科目3_名_cb.Items.Count <> 0 Then : 科目3_名_cb.SelectedIndex = 0 : End If
  178. End Sub
  179. Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  180. If Label62.Visible = True Then : Label62.Visible = False : Else : Label62.Visible = True : End If
  181. End Sub
  182. Private Sub Set_切換格式()
  183. 明細表_dgv.DataSource = Nothing : ds.Clear() : 收支單號_tb.Text = "" : 申請人_tb.Text = "" : 項次_tb.Text = "" : 收入_tb.Text = "" : 支出_tb.Text = "" : 合計_tb.Text = ""
  184. 零用金_tb.Text = "" : 支票_tb.Text = "" : ComboBox1下拉表單資料載入() : Set_清單1()
  185. End Sub
  186. Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles 未核准的收支單_rb.Click
  187. 未核准的收支單_rb.Checked = True : 作廢的收支單_rb.Checked = False : 已核准的收支單_rb.Checked = False
  188. 申請完成ToolStripMenuItem.Enabled = True : 複製單據開單ToolStripMenuItem.Enabled = False
  189. 開立零用金支付單ToolStripMenuItem.Enabled = True : 申請_bt.Enabled = True : 新增一筆資料ToolStripMenuItem.Enabled = True
  190. 刪除支付單中選中的資料ToolStripMenuItem.Enabled = True : 刪除選中的零用金支付單ToolStripMenuItem.Enabled = True : Set_切換格式()
  191. End Sub
  192. Private Sub RadioButton2_CheckedChanged(sender As Object, e As EventArgs) Handles 作廢的收支單_rb.Click
  193. 未核准的收支單_rb.Checked = False : 作廢的收支單_rb.Checked = True : 已核准的收支單_rb.Checked = False
  194. 申請完成ToolStripMenuItem.Enabled = False : 複製單據開單ToolStripMenuItem.Enabled = False
  195. 開立零用金支付單ToolStripMenuItem.Enabled = False : 申請_bt.Enabled = False : 新增一筆資料ToolStripMenuItem.Enabled = False
  196. 刪除支付單中選中的資料ToolStripMenuItem.Enabled = False : 刪除選中的零用金支付單ToolStripMenuItem.Enabled = False : Set_切換格式()
  197. End Sub
  198. Private Sub RadioButton3_CheckedChanged(sender As Object, e As EventArgs) Handles 已核准的收支單_rb.Click
  199. If CC(28) = False Then
  200. 未核准的收支單_rb.Checked = False : 作廢的收支單_rb.Checked = False : 已核准的收支單_rb.Checked = True
  201. 申請完成ToolStripMenuItem.Enabled = False : 複製單據開單ToolStripMenuItem.Enabled = True
  202. 開立零用金支付單ToolStripMenuItem.Enabled = False : 申請_bt.Enabled = False : 新增一筆資料ToolStripMenuItem.Enabled = False
  203. 刪除支付單中選中的資料ToolStripMenuItem.Enabled = False : 刪除選中的零用金支付單ToolStripMenuItem.Enabled = False : Set_切換格式()
  204. Else
  205. 未核准的收支單_rb.Checked = False : 作廢的收支單_rb.Checked = False : 已核准的收支單_rb.Checked = True
  206. 申請完成ToolStripMenuItem.Enabled = True : 複製單據開單ToolStripMenuItem.Enabled = True
  207. 開立零用金支付單ToolStripMenuItem.Enabled = True : 申請_bt.Enabled = True : 新增一筆資料ToolStripMenuItem.Enabled = True
  208. 刪除支付單中選中的資料ToolStripMenuItem.Enabled = True : 刪除選中的零用金支付單ToolStripMenuItem.Enabled = True : Set_切換格式()
  209. End If
  210. End Sub
  211. Private Sub 存檔()
  212. For i As Integer = 0 To 明細表_dgv.Rows.Count - 1
  213. ConnOpen()
  214. SQL1 = "UPDATE 財務流水帳 SET 明細 = N'" & 明細表_dgv.Rows(i).Cells("用途").Value & "', 支出 = N'" & 明細表_dgv.Rows(i).Cells("支出").Value &
  215. "', 備註 = N'" & 明細表_dgv.Rows(i).Cells("票期").Value & "' , 類別 = N'" & 明細表_dgv.Rows(i).Cells("類別").Value &
  216. "', 收入 = N'" & 明細表_dgv.Rows(i).Cells("收入").Value & "', 零用金 = N'" & 明細表_dgv.Rows(i).Cells("零用金").Value &
  217. "', 支票數 = N'" & 明細表_dgv.Rows(i).Cells("支票").Value & "', 匯率 = N'" & 明細表_dgv.Rows(i).Cells("匯率").Value &
  218. "', 含稅 = N'" & 明細表_dgv.Rows(i).Cells("含稅").Value & "'
  219. WHERE (支付單號 LIKE '" & 收支單號_tb.Text & "' AND 項次 LIKE '" & 明細表_dgv.Rows(i).Cells("項次").Value & "')"
  220. cmd.CommandText = SQL1 : cmd.ExecuteNonQuery() : conn.Close()
  221. Next
  222. End Sub
  223. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles 申請_bt.Click
  224. Timer1.Enabled = False : Label62.Visible = False
  225. 開立零用金支付單ToolStripMenuItem.Enabled = True : 未核准的收支單_rb.Enabled = True : 作廢的收支單_rb.Enabled = True
  226. 收支單_dgv.Enabled = True : 已核准的收支單_rb.Enabled = True : 存檔() : Set_清單1() : MsgBox("申請完成,請通知主管審核。")
  227. End Sub
  228. Private Sub Set_日期格式轉換()
  229. If 補單_ch.Checked = False Then
  230. DTP = Format(Today(), "yyyy/MM/dd") : DTP1 = Format(Today(), "yyyyMMdd")
  231. Else
  232. DTP1 = Format(日期_dtp.Value, "yyyyMMdd") : DTP = Format(日期_dtp.Value, "yyyy/MM/dd")
  233. End If
  234. End Sub
  235. Private Sub Set_流水號()
  236. conn.Close() : dr.Close()
  237. Dim NUM1 As Integer
  238. For NUM1 = 0 To 99
  239. Dim d As String : Dim f As String : Dim g As Integer = 1
  240. If Month(Now) < 10 Then : d = "0" & CStr(Month(Now))
  241. Else : d = CStr(Month(Now))
  242. End If
  243. If Now.Day() < 10 Then : f = "0" & CStr(Now.Day())
  244. Else : f = CStr(Now.Day())
  245. End If
  246. If NUM1 < 10 Then : 新流水1 = "B" & Microsoft.VisualBasic.Right(CStr(Year(Now)), 2) & d & f & "0" & NUM1
  247. Else : 新流水1 = "B" & Microsoft.VisualBasic.Right(CStr(Year(Now)), 2) & d & f & NUM1
  248. End If
  249. ConnOpen()
  250. SQL1 = "SELECT 流水號 FROM 財務流水帳 WHERE (流水號 ='" & 新流水1 & "')"
  251. cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
  252. If dr.Read() Then : conn.Close() : Else : conn.Close() : NUM1 = 99 : End If
  253. Next
  254. End Sub
  255. Private Sub 開立零用金支付單()
  256. Dim NUM1 As Integer : Timer1.Enabled = True
  257. Set_日期格式轉換()
  258. For i As Integer = 1 To 999
  259. NUM1 = 0 + i
  260. If NUM1 < 10 Then : 收支單號_tb.Text = "OE-" & DTP1 & "-00" & NUM1
  261. ElseIf NUM1 > 9 And NUM1 < 100 Then : 收支單號_tb.Text = "OE-" & DTP1 & "-0" & NUM1
  262. ElseIf NUM1 > 99 Then : 收支單號_tb.Text = "OE-" & DTP1 & "-" & NUM1
  263. End If
  264. conn.Close()
  265. ConnOpen()
  266. SQL1 = "SELECT TOP (1) 支付單號 FROM 財務控制表 WHERE ( 支付單號 LIKE '" & 收支單號_tb.Text & "')"
  267. cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
  268. If dr.Read() Then : Else : i = 999 : conn.Close() : End If : conn.Close()
  269. Next
  270. ConnOpen()
  271. SQL1 = "INSERT INTO 財務控制表 (支付單號, 申請人, 申請日期, 審核人, 審核日期, 會計, 作帳日期, 出納, 出納日期, 備註, 公司編號) " &
  272. "VALUES (N'" & 收支單號_tb.Text & "', N'" & gUserName & "', N'" & DTP & "', N'', N'', N'', N'', N'', N'', N'', N'工巧明')"
  273. CmdSet_For_dr()
  274. 申請人_tb.Text = gUserName
  275. End Sub
  276. Private Sub 複製歷史單據重新開立_bt_Click(sender As Object, e As EventArgs) Handles 複製歷史單據重新開立_bt.Click
  277. 開立零用金支付單() : 開立零用金支付單ToolStripMenuItem.Enabled = False : 未核准的收支單_rb.Enabled = False : 作廢的收支單_rb.Enabled = False
  278. 已核准的收支單_rb.Enabled = False
  279. 收支單_dgv.Enabled = False : 未核准的收支單_rb.Checked = True : 作廢的收支單_rb.Checked = False : 已核准的收支單_rb.Checked = False
  280. 申請完成ToolStripMenuItem.Enabled = True
  281. 複製單據開單ToolStripMenuItem.Enabled = False : 開立零用金支付單ToolStripMenuItem.Enabled = True : 申請_bt.Enabled = True : 新增一筆資料ToolStripMenuItem.Enabled = True
  282. 刪除支付單中選中的資料ToolStripMenuItem.Enabled = True : 刪除選中的零用金支付單ToolStripMenuItem.Enabled = True
  283. Set_清單1()
  284. For i As Integer = 0 To 明細表_dgv.Rows.Count - 1
  285. Set_流水號()
  286. ConnOpen()
  287. SQL1 = "INSERT INTO 財務流水帳 (流水號, 銀行, 日期, 類別, 收入, 支出, 明細, 人員, 支付單號, 項次, 會計, 出納, 現金, 備用金, 公帳, 支票,
  288. 出納日期, 零用金, 支票數, 匯率, 備註)
  289. VALUES (N'" & 新流水1 & "', N'" & 明細表_dgv.Rows(i).Cells("幣別").Value & "'', N'" & DTP & "', N'" & 明細表_dgv.Rows(i).Cells("類別").Value &
  290. "', N'" & 明細表_dgv.Rows(i).Cells("收入").Value & "', N'" & 明細表_dgv.Rows(i).Cells("支出").Value & "', N'" & 明細表_dgv.Rows(i).Cells("用途").Value &
  291. "', N'', N'" & gUserName & "', N'" & 收支單號_tb.Text & "', N'" & 明細表_dgv.Rows(i).Cells("項次").Value & "', N'1', N'0', N'0', N'0', N'0', N'0', N'" & DTP &
  292. "', N'" & 明細表_dgv.Rows(i).Cells("零用金").Value & "', N'" & 明細表_dgv.Rows(i).Cells("支票").Value & "', N'" & 明細表_dgv.Rows(i).Cells("匯率").Value &
  293. "', N'" & 明細表_dgv.Rows(i).Cells("票期").Value & "')"
  294. CmdSet_For_dr()
  295. Next
  296. Set_費用清單() : MsgBox("複製單據開立完成。")
  297. End Sub
  298. Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles 日期_dtp.ValueChanged
  299. 匯率()
  300. End Sub
  301. Private Sub 開立營運成本收支單_bt_Click(sender As Object, e As EventArgs) Handles 開立營運成本收支單_bt.Click
  302. 開立零用金支付單() : 開立零用金支付單ToolStripMenuItem.Enabled = False
  303. 未核准的收支單_rb.Enabled = False : 作廢的收支單_rb.Enabled = False
  304. 已核准的收支單_rb.Enabled = False : 收支單_dgv.Enabled = False
  305. 明細表_dgv.DataSource = Nothing : ds.Clear() : conn.Close()
  306. Set_清單1()
  307. End Sub
  308. Private Sub 刪除選中的營運成本收支單_bt_Click(sender As Object, e As EventArgs) Handles 刪除選中的營運成本收支單_bt.Click
  309. Dim aa As MsgBoxResult
  310. aa = MsgBox("確定要刪除該筆資料?", MsgBoxStyle.OkCancel)
  311. If aa = MsgBoxResult.Ok Then
  312. ConnOpen()
  313. SQL1 = "DELETE FROM 財務控制表 WHERE (支付單號 LIKE '" & 收支單號_tb.Text & "')"
  314. cmd.CommandText = SQL1 : cmd.Connection = conn : cmd.ExecuteNonQuery() : conn.Close()
  315. ConnOpen()
  316. SQL1 = "DELETE FROM 財務流水帳 WHERE (支付單號 LIKE '" & 收支單號_tb.Text & "')"
  317. cmd.CommandText = SQL1 : cmd.Connection = conn : cmd.ExecuteNonQuery() : conn.Close()
  318. 收支單號_tb.Text = "" : 申請人_tb.Text = "" : 項次_tb.Text = ""
  319. 明細表_dgv.DataSource = Nothing : ds.Clear()
  320. Set_清單1()
  321. End If
  322. End Sub
  323. Private Sub 收支單中新增一筆空白資料_bt_Click(sender As Object, e As EventArgs) Handles 收支單中新增一筆空白資料_bt.Click
  324. If 科目3_號_cb.Text = "" Or 幣別_cb.Text = "" Then
  325. MsgBox("沒有選擇會計科目或幣別。")
  326. Else
  327. If 收支單號_tb.Text = "" Then
  328. 開立零用金支付單()
  329. End If
  330. Set_日期格式轉換() : Set_流水號()
  331. 存檔()
  332. ConnOpen()
  333. SQL1 = "SELECT TOP(1) 項次 FROM 財務流水帳 WHERE 支付單號 LIKE '" & 收支單號_tb.Text & "' ORDER BY 項次 DESC"
  334. cmd.Connection = conn : cmd.CommandText = SQL1 : dr = cmd.ExecuteReader
  335. If dr.Read() Then : 新項次 = dr("項次") : Else : 新項次 = "00" : End If : conn.Close()
  336. NUM1 = Double.Parse(新項次) + 1
  337. If NUM1 < 10 Then : 新項次 = "0" & NUM1
  338. ElseIf NUM1 > 9 And NUM1 < 100 Then : 新項次 = NUM1
  339. End If
  340. ConnOpen()
  341. If 幣別_cb.Text = "台幣現金" Then : 匯率1 = 1
  342. ElseIf 幣別_cb.Text = "人民幣現金" Then : 匯率1 = 人民幣匯率_tb.Text
  343. ElseIf 幣別_cb.Text = "美金" Then : 匯率1 = 美金匯率_tb.Text
  344. ElseIf 幣別_cb.Text = "印尼盾" Then : 匯率1 = 印尼匯率_tb.Text
  345. End If
  346. SQL1 = "INSERT INTO 財務流水帳 (流水號, 銀行, 日期, 類別, 收入, 支出, 明細, 人員, 支付單號, 項次, 會計, 出納, 現金, 備用金, 公帳, 支票,
  347. 出納日期, 零用金, 支票數, 匯率, 備註) " &
  348. "VALUES (N'" & 新流水1 & "', N'" & 幣別_cb.Text & "', N'" & DTP & "', N'" & 科目3_號_cb.Text & "', N'0', N'0', N'', N'" & gUserName & "', N'" & 收支單號_tb.Text & "', N'" & 新項次 &
  349. "', N'0', N'0', N'0', N'0', N'0', N'0', N'" & DTP & "', N'0', N'0', N'" & 匯率1 & "', N'')"
  350. CmdSet_For_dr()
  351. Set_費用清單()
  352. End If
  353. End Sub
  354. Private Sub 刪除選中的一筆資料_bt_Click(sender As Object, e As EventArgs) Handles 刪除選中的一筆資料_bt.Click
  355. If 項次_tb.Text = "" Then
  356. MsgBox("未選擇需要刪除的資料。")
  357. Else
  358. 存檔()
  359. ConnOpen()
  360. SQL1 = "DELETE FROM 財務流水帳 WHERE (支付單號 LIKE '" & 收支單號_tb.Text & "' AND 項次 LIKE '" & 項次_tb.Text & "')"
  361. cmd.CommandText = SQL1 : cmd.Connection = conn : cmd.ExecuteNonQuery() : conn.Close()
  362. Set_費用清單()
  363. Dim NUM1 As Integer = 0
  364. For i As Integer = 0 To 明細表_dgv.Rows.Count - 1
  365. NUM1 += 1 : If NUM1 < 10 Then : 新項次 = "0" & NUM1 : ElseIf NUM1 > 9 And NUM1 < 100 Then : 新項次 = NUM1 : End If
  366. ConnOpen()
  367. SQL1 = "UPDATE 財務流水帳 SET 項次 = N'" & 新項次 & "' WHERE (支付單號 LIKE '" & 收支單號_tb.Text & "' AND 項次 LIKE '" & 明細表_dgv.Rows(i).Cells("項次").Value & "')"
  368. cmd.CommandText = SQL1 : cmd.ExecuteNonQuery()
  369. conn.Close()
  370. Next
  371. Set_費用清單()
  372. End If
  373. End Sub
  374. '----------------------滑鼠右鍵--------------------------------------------------------------------------------------------------------------------------------------------------------------------
  375. Private Sub 重新讀取ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 重新讀取ToolStripMenuItem.Click
  376. Set_清單1()
  377. End Sub
  378. Private Sub 開立零用金支付單ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 開立零用金支付單ToolStripMenuItem.Click
  379. 開立營運成本收支單_bt.PerformClick()
  380. End Sub
  381. Private Sub 刪除選中的零用金支付單ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 刪除選中的零用金支付單ToolStripMenuItem.Click
  382. 刪除選中的營運成本收支單_bt.PerformClick()
  383. End Sub
  384. Private Sub 刪除支付單中選中的資料ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 刪除支付單中選中的資料ToolStripMenuItem.Click
  385. 刪除選中的一筆資料_bt.PerformClick()
  386. End Sub
  387. Private Sub 新增一筆資料ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 新增一筆資料ToolStripMenuItem.Click
  388. 收支單中新增一筆空白資料_bt.PerformClick()
  389. End Sub
  390. Private Sub 申請完成ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 申請完成ToolStripMenuItem.Click
  391. 申請_bt.PerformClick()
  392. End Sub
  393. Private Sub 複製單據開單ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 複製單據開單ToolStripMenuItem.Click
  394. 複製歷史單據重新開立_bt.PerformClick()
  395. End Sub
  396. '----------------------自創視窗滑鼠拖曳功能---------------------------------------------------------------------------------------------------------
  397. Dim OldX, OldY As Long : Dim drag As Boolean
  398. Private Sub 收入_cb_CheckedChanged(sender As Object, e As EventArgs) Handles 收入_cb.Click
  399. If 收入_cb.Checked = True Then
  400. 收入_cb.Checked = True : 支出_cb.Checked = False
  401. Else
  402. 收入_cb.Checked = False : 支出_cb.Checked = True
  403. End If
  404. End Sub
  405. Private Sub 支出_cb_CheckedChanged(sender As Object, e As EventArgs) Handles 支出_cb.Click
  406. If 支出_cb.Checked = True Then
  407. 收入_cb.Checked = False : 支出_cb.Checked = True
  408. Else
  409. 收入_cb.Checked = True : 支出_cb.Checked = False
  410. End If
  411. End Sub
  412. Private Sub 確定_bt_Click(sender As Object, e As EventArgs) Handles 確定_bt.Click
  413. If 收入_cb.Checked = False And 支出_cb.Checked = False Then
  414. MsgBox("請先選擇這筆資料是收入還是支出!!!")
  415. Else
  416. If 收入_cb.Checked = True Then
  417. 明細表_dgv.Rows(NUM2).Cells("收入").Value = 指定_ndp.Value
  418. If 窗口說明1_lb.Text = "支票" Then
  419. 明細表_dgv.Rows(NUM2).Cells("支票").Value = 指定_ndp.Value
  420. ElseIf 窗口說明1_lb.Text = "零用金" Then
  421. 明細表_dgv.Rows(NUM2).Cells("零用金").Value = 指定_ndp.Value
  422. End If
  423. Else
  424. 明細表_dgv.Rows(NUM2).Cells("支出").Value = 指定_ndp.Value
  425. If 窗口說明1_lb.Text = "支票" Then
  426. 明細表_dgv.Rows(NUM2).Cells("支票").Value = 指定_ndp.Value
  427. ElseIf 窗口說明1_lb.Text = "零用金" Then
  428. 明細表_dgv.Rows(NUM2).Cells("零用金").Value = 指定_ndp.Value
  429. End If
  430. End If : 指定_ndp.Value = 0 : 收入_cb.Checked = False : 支出_cb.Checked = False : Cancel_bt.PerformClick()
  431. End If
  432. End Sub
  433. Private Sub Cancel_bt_Click(sender As Object, e As EventArgs) Handles Cancel_bt.Click
  434. If 視窗1_pl.Visible = False Then : 視窗1_pl.Visible = True : 視窗1_pl.BringToFront() : Else : 視窗1_pl.Visible = False : End If
  435. End Sub
  436. Private Sub 物料群組1_Panel_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗1_pl.MouseDown
  437. If e.Button = MouseButtons.Left Then : OldX = e.X : OldY = e.Y : drag = True : End If
  438. End Sub
  439. Private Sub 物料群組1_Panel_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗1_pl.MouseMove
  440. If drag Then : 視窗1_pl.Left = 視窗1_pl.Left + e.X - OldX : 視窗1_pl.Top = 視窗1_pl.Top + e.Y - OldY : End If
  441. End Sub
  442. Private Sub 物料群組1_Panel_MouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 視窗1_pl.MouseUp
  443. drag = False
  444. End Sub
  445. End Class