No Description
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.

業績獎金計算表.vb 34KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. Option Strict Off
  2. Imports Microsoft.Office.Interop.Excel.XlUnderlineStyle
  3. Imports Microsoft.Office.Interop.Excel.Constants
  4. Imports Microsoft.Office.Interop.Excel.XlBordersIndex
  5. Imports Microsoft.Office.Interop.Excel.XlLineStyle
  6. Imports Microsoft.Office.Interop.Excel.XlBorderWeight
  7. Imports Microsoft.Office.Interop.Excel.XlThemeFont
  8. Imports Microsoft.Office.Interop.Excel.XlThemeColor
  9. Imports Microsoft.Office.Interop.Excel.XlWindowState
  10. Public Class 業績獎金計算表
  11. ReadOnly ds, ds1 As New DataSet
  12. Private Sub SET_客戶交易明細表()
  13. 交易明細_dgv.DataSource = Nothing : ds.Clear()
  14. 交易明細_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  15. 交易明細_dgv.ColumnHeadersHeight = 40 : 交易明細_dgv.AllowUserToAddRows = False
  16. SQL_客戶交易明細表_清單()
  17. da.Fill(ds) : 交易明細_dgv.DataSource = ds.Tables(0) : conn.Close()
  18. 交易明細_dgv.Columns(0).Visible = False : 交易明細_dgv.Columns(2).Visible = False : 交易明細_dgv.Columns(4).Visible = False : 交易明細_dgv.Columns(5).Visible = False
  19. 交易明細_dgv.Columns(13).Visible = False : 交易明細_dgv.Columns(18).Visible = False : 交易明細_dgv.Columns(19).Visible = False
  20. 交易明細_dgv.Columns(6).FillWeight = 300 : 交易明細_dgv.Columns(12).FillWeight = 150
  21. For I As Integer = 0 To 20 : 交易明細_dgv.Columns(I).ReadOnly = True : Next
  22. 交易明細_dgv.Columns(7).DefaultCellStyle.Format = "#,##0" : 交易明細_dgv.Columns(8).DefaultCellStyle.Format = "#,##0"
  23. 交易明細_dgv.Columns(9).DefaultCellStyle.Format = "#,##0.00" : 交易明細_dgv.Columns(10).DefaultCellStyle.Format = "#,##0.0"
  24. 交易明細_dgv.Columns(11).DefaultCellStyle.Format = "#,##0"
  25. 交易明細_dgv.Columns(7).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  26. 交易明細_dgv.Columns(8).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  27. 交易明細_dgv.Columns(9).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  28. 交易明細_dgv.Columns(10).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  29. 交易明細_dgv.Columns(11).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  30. SET_獎金計算()
  31. End Sub
  32. Private Sub SET_獎金計算()
  33. 獎金計算_dgv.DataSource = Nothing : ds1.Clear()
  34. 獎金計算_dgv.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.EnableResizing
  35. 獎金計算_dgv.ColumnHeadersHeight = 40 : 獎金計算_dgv.AllowUserToAddRows = False
  36. SQL_獎金計算_清單()
  37. da.Fill(ds1) : 獎金計算_dgv.DataSource = ds1.Tables(0) : conn.Close()
  38. For I As Integer = 2 To 27
  39. 獎金計算_dgv.Columns(I).DefaultCellStyle.Format = "#,##0"
  40. 獎金計算_dgv.Columns(I).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  41. Next
  42. For I As Integer = 0 To 28 : 獎金計算_dgv.Columns(I).ReadOnly = True : Next
  43. 獎金計算_dgv.Columns(0).FillWeight = 75 : 獎金計算_dgv.Columns(1).FillWeight = 60
  44. 獎金計算_dgv.Columns(28).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
  45. For no As Integer = 1 To 26
  46. Dim TextBoxS As TextBox = CType(Me.Controls.Find("TextBox" + no.ToString(), True)(0), TextBox) : TextBoxS.Text = "0"
  47. Next
  48. For I As Integer = 0 To 獎金計算_dgv.Rows.Count - 1
  49. 獎金計算_dgv("一般產品業績", I).Value = 0 : 獎金計算_dgv("美療排程", I).Value = 0 : 獎金計算_dgv("美療操作", I).Value = 0
  50. 獎金計算_dgv("排程業績", I).Value = 0 : 獎金計算_dgv("操作業績", I).Value = 0 : 獎金計算_dgv("手術排程", I).Value = 0
  51. 獎金計算_dgv("手術操作", I).Value = 0 : 獎金計算_dgv("植髮/電波業績", I).Value = 0 : 獎金計算_dgv("預購療程", I).Value = 0
  52. 獎金計算_dgv("償還業績", I).Value = 0 : 獎金計算_dgv("一般產品", I).Value = 0 : 獎金計算_dgv("美療", I).Value = 0
  53. 獎金計算_dgv("雷射/治療", I).Value = 0 : 獎金計算_dgv("手術", I).Value = 0 : 獎金計算_dgv("植髮/電波", I).Value = 0
  54. For ii As Integer = 0 To 交易明細_dgv.Rows.Count - 1
  55. '------一般產品,人工皮-------------------------------------------------------------------------------------------
  56. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("產品銷售", ii).Value.ToString, 4, 5) And
  57. (交易明細_dgv("類別", ii).Value.ToString = "一般產品" Or 交易明細_dgv("類別", ii).Value.ToString = "人工皮") Then
  58. 獎金計算_dgv("一般產品業績", I).Value = 獎金計算_dgv("一般產品業績", I).Value + 交易明細_dgv("業績", ii).Value
  59. End If
  60. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("產品銷售", ii).Value.ToString, 4, 5) And
  61. (交易明細_dgv("類別", ii).Value.ToString = "一般產品" Or 交易明細_dgv("類別", ii).Value.ToString = "人工皮") Then
  62. 獎金計算_dgv("一般產品", I).Value = 獎金計算_dgv("一般產品", I).Value + 交易明細_dgv("業績", ii).Value
  63. End If
  64. '------美療排程-------------------------------------------------------------------------------------------
  65. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("排程人員", ii).Value.ToString, 4, 5) And
  66. 交易明細_dgv("類別", ii).Value.ToString = "美療" And 交易明細_dgv("備註", ii).Value.ToString <> "預購療程" Then
  67. 獎金計算_dgv("美療排程", I).Value = 獎金計算_dgv("美療排程", I).Value + 交易明細_dgv("業績", ii).Value
  68. End If
  69. '------美療操作-------------------------------------------------------------------------------------------
  70. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("操作人員", ii).Value.ToString, 4, 5) And
  71. 交易明細_dgv("類別", ii).Value.ToString = "美療" And 交易明細_dgv("備註", ii).Value.ToString <> "預購療程" Then
  72. 獎金計算_dgv("美療操作", I).Value = 獎金計算_dgv("美療操作", I).Value + 交易明細_dgv("業績", ii).Value
  73. End If
  74. '------美療-------------------------------------------------------------------------------------------
  75. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("排程人員", ii).Value.ToString, 4, 5) And
  76. 交易明細_dgv("類別", ii).Value.ToString = "美療" And (交易明細_dgv("備註", ii).Value.ToString = "預購療程" Or
  77. 交易明細_dgv("備註", ii).Value.ToString = ".") Then
  78. 獎金計算_dgv("美療", I).Value = 獎金計算_dgv("美療", I).Value + 交易明細_dgv("業績", ii).Value
  79. End If
  80. '------雷射、治療排程-------------------------------------------------------------------------------------------
  81. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("排程人員", ii).Value.ToString, 4, 5) And
  82. (交易明細_dgv("類別", ii).Value.ToString = "雷射" Or 交易明細_dgv("類別", ii).Value.ToString = "治療") And
  83. 交易明細_dgv("備註", ii).Value.ToString <> "預購療程" Then
  84. 獎金計算_dgv("排程業績", I).Value = 獎金計算_dgv("排程業績", I).Value + 交易明細_dgv("業績", ii).Value
  85. End If
  86. '------雷射、治療操作-------------------------------------------------------------------------------------------
  87. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("操作人員", ii).Value.ToString, 4, 5) And
  88. (交易明細_dgv("類別", ii).Value.ToString = "雷射" Or 交易明細_dgv("類別", ii).Value.ToString = "治療") And
  89. 交易明細_dgv("備註", ii).Value.ToString <> "預購療程" Then
  90. 獎金計算_dgv("操作業績", I).Value = 獎金計算_dgv("操作業績", I).Value + 交易明細_dgv("業績", ii).Value
  91. End If
  92. '------雷射、治療-------------------------------------------------------------------------------------------
  93. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("排程人員", ii).Value.ToString, 4, 5) And
  94. (交易明細_dgv("類別", ii).Value.ToString = "雷射" Or 交易明細_dgv("類別", ii).Value.ToString = "治療") And
  95. (交易明細_dgv("備註", ii).Value.ToString = "預購療程" Or 交易明細_dgv("備註", ii).Value.ToString = ".") Then
  96. 獎金計算_dgv("雷射/治療", I).Value = 獎金計算_dgv("雷射/治療", I).Value + 交易明細_dgv("業績", ii).Value
  97. End If
  98. '------手術排程-------------------------------------------------------------------------------------------
  99. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("排程人員", ii).Value.ToString, 4, 5) And
  100. 交易明細_dgv("類別", ii).Value.ToString = "手術" And 交易明細_dgv("備註", ii).Value.ToString <> "預購療程" Then
  101. 獎金計算_dgv("手術排程", I).Value = 獎金計算_dgv("手術排程", I).Value + 交易明細_dgv("業績", ii).Value
  102. End If
  103. '------手術操作-------------------------------------------------------------------------------------------
  104. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("操作人員", ii).Value.ToString, 4, 5) And
  105. 交易明細_dgv("類別", ii).Value.ToString = "手術" And 交易明細_dgv("備註", ii).Value.ToString <> "預購療程" Then
  106. 獎金計算_dgv("手術操作", I).Value = 獎金計算_dgv("手術操作", I).Value + 交易明細_dgv("業績", ii).Value
  107. End If
  108. '------手術-------------------------------------------------------------------------------------------
  109. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("排程人員", ii).Value.ToString, 4, 5) And
  110. 交易明細_dgv("類別", ii).Value.ToString = "手術" And
  111. (交易明細_dgv("備註", ii).Value.ToString = "預購療程" Or 交易明細_dgv("備註", ii).Value.ToString = ".") Then
  112. 獎金計算_dgv("手術", I).Value = 獎金計算_dgv("手術", I).Value + 交易明細_dgv("業績", ii).Value
  113. End If
  114. '------植髮/電波-------------------------------------------------------------------------------------------
  115. If (獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("排程人員", ii).Value.ToString, 4, 5) Or
  116. 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("操作人員", ii).Value.ToString, 4, 5)) And
  117. (交易明細_dgv("類別", ii).Value.ToString = "植髮" Or 交易明細_dgv("類別", ii).Value.ToString = "電波") And
  118. 交易明細_dgv("備註", ii).Value.ToString <> "預購療程" Then
  119. 獎金計算_dgv("植髮/電波業績", I).Value = 獎金計算_dgv("植髮/電波業績", I).Value + 交易明細_dgv("業績", ii).Value
  120. End If
  121. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("排程人員", ii).Value.ToString, 4, 5) And
  122. (交易明細_dgv("類別", ii).Value.ToString = "植髮" Or 交易明細_dgv("類別", ii).Value.ToString = "電波") And
  123. (交易明細_dgv("備註", ii).Value.ToString = "預購療程" Or 交易明細_dgv("備註", ii).Value.ToString = ".") Then
  124. 獎金計算_dgv("植髮/電波", I).Value = 獎金計算_dgv("植髮/電波", I).Value + 交易明細_dgv("業績", ii).Value
  125. End If
  126. '------預購療程-------------------------------------------------------------------------------------------
  127. If 獎金計算_dgv("人員", I).Value.ToString = Strings.Mid(交易明細_dgv("排程人員", ii).Value.ToString, 4, 5) And
  128. 交易明細_dgv("備註", ii).Value.ToString = "預購療程" Then
  129. 獎金計算_dgv("預購療程", I).Value = 獎金計算_dgv("預購療程", I).Value + 交易明細_dgv("業績", ii).Value
  130. End If
  131. Next
  132. '------一般產品,人工皮-------------------------------------------------------------------------------------------
  133. If 獎金計算_dgv("時薪", I).Value.ToString = "時薪" Then
  134. If 獎金計算_dgv("一般產品業績", I).Value < 產品_時薪_nud.Value Then
  135. 獎金計算_dgv("一般產品獎金", I).Value = 獎金計算_dgv("一般產品業績", I).Value / 100 * 業績_未達標1_nud.Value
  136. Else
  137. 獎金計算_dgv("一般產品獎金", I).Value = 獎金計算_dgv("一般產品業績", I).Value / 100 * 業績_達標1_nud.Value
  138. End If
  139. Else
  140. If 獎金計算_dgv("一般產品業績", I).Value < 產品_月薪_nud.Value Then
  141. 獎金計算_dgv("一般產品獎金", I).Value = 獎金計算_dgv("一般產品業績", I).Value / 100 * 業績_未達標1_nud.Value
  142. Else
  143. 獎金計算_dgv("一般產品獎金", I).Value = 獎金計算_dgv("一般產品業績", I).Value / 100 * 業績_達標1_nud.Value
  144. End If
  145. End If
  146. '------美療操作-------------------------------------------------------------------------------------------
  147. 獎金計算_dgv("美療獎金", I).Value = (獎金計算_dgv("美療排程", I).Value / 100 * 美療獎金_nud.Value) + (獎金計算_dgv("美療操作", I).Value / 100 * 美療獎金_nud.Value)
  148. '------雷射、治療排程-------------------------------------------------------------------------------------------
  149. If 獎金計算_dgv("排程業績", I).Value < 排程業績_nud.Value Then
  150. 獎金計算_dgv("排程獎金", I).Value = 獎金計算_dgv("排程業績", I).Value / 100 * 業績_未達標2_nud.Value
  151. Else
  152. 獎金計算_dgv("排程獎金", I).Value = 獎金計算_dgv("排程業績", I).Value / 100 * 業績_達標2_nud.Value
  153. End If
  154. '------雷射、治療操作-------------------------------------------------------------------------------------------
  155. 獎金計算_dgv("操作獎金", I).Value = 獎金計算_dgv("操作業績", I).Value / 100 * 操作獎金_nud.Value
  156. '------手術排程-------------------------------------------------------------------------------------------
  157. 獎金計算_dgv("手術排程獎金", I).Value = 獎金計算_dgv("手術排程", I).Value / 100 * 手術排程_nud.Value
  158. '------手術操作-------------------------------------------------------------------------------------------
  159. 獎金計算_dgv("手術操作獎金", I).Value = 獎金計算_dgv("手術操作", I).Value / 100 * 手術操作_nud.Value
  160. '------植髮-------------------------------------------------------------------------------------------
  161. 獎金計算_dgv("植髮/電波獎金", I).Value = 獎金計算_dgv("植髮/電波業績", I).Value / 100 * 植髮獎金_nud.Value
  162. '------預購療程-------------------------------------------------------------------------------------------
  163. If 獎金計算_dgv("預購療程", I).Value < 預售_nud.Value Then
  164. 獎金計算_dgv("預購獎金", I).Value = 0
  165. Else
  166. 獎金計算_dgv("預購獎金", I).Value = 獎金計算_dgv("預購療程", I).Value / 100 * 預售獎金_nud.Value
  167. End If
  168. '------彙總-------------------------------------------------------------------------------------------
  169. 獎金計算_dgv("總獎金", I).Value = 獎金計算_dgv("預購獎金", I).Value + 獎金計算_dgv("植髮/電波獎金", I).Value + 獎金計算_dgv("手術操作獎金", I).Value +
  170. 獎金計算_dgv("手術排程獎金", I).Value + 獎金計算_dgv("操作獎金", I).Value + 獎金計算_dgv("排程獎金", I).Value +
  171. 獎金計算_dgv("美療獎金", I).Value + 獎金計算_dgv("一般產品獎金", I).Value
  172. 獎金計算_dgv("實收業績", I).Value = 獎金計算_dgv("植髮/電波", I).Value + 獎金計算_dgv("手術", I).Value + 獎金計算_dgv("雷射/治療", I).Value +
  173. 獎金計算_dgv("美療", I).Value + 獎金計算_dgv("一般產品", I).Value
  174. 獎金計算_dgv("償還業績", I).Value = (獎金計算_dgv("一般產品業績", I).Value + 獎金計算_dgv("美療排程", I).Value + 獎金計算_dgv("排程業績", I).Value +
  175. 獎金計算_dgv("手術排程", I).Value + 獎金計算_dgv("植髮/電波業績", I).Value + 獎金計算_dgv("預購療程", I).Value -
  176. 獎金計算_dgv("實收業績", I).Value)
  177. 獎金計算_dgv("總業績", I).Value = 獎金計算_dgv("償還業績", I).Value + 獎金計算_dgv("實收業績", I).Value
  178. If 獎金計算_dgv("總業績", I).Value = 0 Then
  179. 獎金計算_dgv("獎金比", I).Value = "0 %"
  180. Else
  181. 獎金計算_dgv("獎金比", I).Value = Math.Round(獎金計算_dgv("總獎金", I).Value / 獎金計算_dgv("總業績", I).Value * 100, 2) & " %"
  182. End If
  183. TextBox1.Text = Val(TextBox1.Text) + 獎金計算_dgv("一般產品業績", I).Value : TextBox2.Text = Val(TextBox2.Text) + 獎金計算_dgv("美療排程", I).Value
  184. TextBox3.Text = Val(TextBox3.Text) + 獎金計算_dgv("美療操作", I).Value : TextBox4.Text = Val(TextBox4.Text) + 獎金計算_dgv("排程業績", I).Value
  185. TextBox5.Text = Val(TextBox5.Text) + 獎金計算_dgv("操作業績", I).Value : TextBox6.Text = Val(TextBox6.Text) + 獎金計算_dgv("手術排程", I).Value
  186. TextBox7.Text = Val(TextBox7.Text) + 獎金計算_dgv("手術操作", I).Value : TextBox8.Text = Val(TextBox8.Text) + 獎金計算_dgv("植髮/電波業績", I).Value
  187. TextBox9.Text = Val(TextBox9.Text) + 獎金計算_dgv("預購療程", I).Value : TextBox10.Text = Val(TextBox10.Text) + 獎金計算_dgv("一般產品獎金", I).Value
  188. TextBox11.Text = Val(TextBox11.Text) + 獎金計算_dgv("美療獎金", I).Value : TextBox12.Text = Val(TextBox12.Text) + 獎金計算_dgv("排程獎金", I).Value
  189. TextBox13.Text = Val(TextBox13.Text) + 獎金計算_dgv("操作獎金", I).Value : TextBox14.Text = Val(TextBox14.Text) + 獎金計算_dgv("手術排程獎金", I).Value
  190. TextBox15.Text = Val(TextBox15.Text) + 獎金計算_dgv("手術操作獎金", I).Value : TextBox16.Text = Val(TextBox16.Text) + 獎金計算_dgv("植髮/電波獎金", I).Value
  191. TextBox17.Text = Val(TextBox17.Text) + 獎金計算_dgv("預購獎金", I).Value : TextBox18.Text = Val(TextBox18.Text) + 獎金計算_dgv("總獎金", I).Value
  192. TextBox19.Text = Val(TextBox19.Text) + 獎金計算_dgv("一般產品", I).Value : TextBox20.Text = Val(TextBox20.Text) + 獎金計算_dgv("美療", I).Value
  193. TextBox21.Text = Val(TextBox21.Text) + 獎金計算_dgv("雷射/治療", I).Value : TextBox22.Text = Val(TextBox22.Text) + 獎金計算_dgv("手術", I).Value
  194. TextBox23.Text = Val(TextBox23.Text) + 獎金計算_dgv("植髮/電波", I).Value : TextBox24.Text = Val(TextBox24.Text) + 獎金計算_dgv("實收業績", I).Value
  195. TextBox25.Text = Val(TextBox25.Text) + 獎金計算_dgv("償還業績", I).Value : TextBox26.Text = Val(TextBox26.Text) + 獎金計算_dgv("總業績", I).Value
  196. Next
  197. For no As Integer = 1 To 26
  198. Dim TextBoxS As TextBox = CType(Me.Controls.Find("TextBox" + no.ToString(), True)(0), TextBox) : TextBoxS.Text = Strings.Format(Val(TextBoxS.Text), "#,##0")
  199. Next
  200. 獎金計算_dgv.Columns(2).DefaultCellStyle.BackColor = Color.LightGreen : 獎金計算_dgv.Columns(3).DefaultCellStyle.BackColor = Color.LightGreen
  201. 獎金計算_dgv.Columns(4).DefaultCellStyle.BackColor = Color.LightGreen : 獎金計算_dgv.Columns(5).DefaultCellStyle.BackColor = Color.LightGreen
  202. 獎金計算_dgv.Columns(6).DefaultCellStyle.BackColor = Color.LightGreen : 獎金計算_dgv.Columns(7).DefaultCellStyle.BackColor = Color.LightGreen
  203. 獎金計算_dgv.Columns(8).DefaultCellStyle.BackColor = Color.LightGreen : 獎金計算_dgv.Columns(9).DefaultCellStyle.BackColor = Color.LightGreen
  204. 獎金計算_dgv.Columns(10).DefaultCellStyle.BackColor = Color.LightGreen
  205. 獎金計算_dgv.Columns(11).DefaultCellStyle.BackColor = Color.LightBlue : 獎金計算_dgv.Columns(12).DefaultCellStyle.BackColor = Color.LightBlue
  206. 獎金計算_dgv.Columns(13).DefaultCellStyle.BackColor = Color.LightBlue : 獎金計算_dgv.Columns(14).DefaultCellStyle.BackColor = Color.LightBlue
  207. 獎金計算_dgv.Columns(15).DefaultCellStyle.BackColor = Color.LightBlue : 獎金計算_dgv.Columns(16).DefaultCellStyle.BackColor = Color.LightBlue
  208. 獎金計算_dgv.Columns(17).DefaultCellStyle.BackColor = Color.LightBlue : 獎金計算_dgv.Columns(18).DefaultCellStyle.BackColor = Color.LightBlue
  209. 獎金計算_dgv.Columns(19).DefaultCellStyle.BackColor = Color.LightBlue
  210. 獎金計算_dgv.Columns(20).DefaultCellStyle.BackColor = Color.LightPink : 獎金計算_dgv.Columns(21).DefaultCellStyle.BackColor = Color.LightPink
  211. 獎金計算_dgv.Columns(22).DefaultCellStyle.BackColor = Color.LightPink : 獎金計算_dgv.Columns(23).DefaultCellStyle.BackColor = Color.LightPink
  212. 獎金計算_dgv.Columns(24).DefaultCellStyle.BackColor = Color.LightPink : 獎金計算_dgv.Columns(25).DefaultCellStyle.BackColor = Color.LightPink
  213. 獎金計算_dgv.Columns(26).DefaultCellStyle.BackColor = Color.OrangeRed
  214. End Sub
  215. Private Sub SET_使用者下拉清單載入()
  216. SQL_客戶交易明細表_月份() : 月份_cb.Items.Clear()
  217. While (dr.Read()) : 月份_cb.Items.Add(dr("月份")) : End While : conn.Close()
  218. End Sub
  219. Private Sub 業績獎金計算表_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  220. Me.MdiParent = GRAMS_SYS : Me.WindowState = 2 : Me.AutoScroll = True
  221. SET_使用者下拉清單載入() : 月份_cb.SelectedIndex = 月份_cb.Items.Count - 1
  222. SET_客戶交易明細表()
  223. End Sub
  224. Private Sub 交易明細_dgv_RowPostPaint(ByVal sender As Object, ByVal e As DataGridViewRowPostPaintEventArgs) Handles 交易明細_dgv.RowPostPaint
  225. Dim linePen As New Pen(Color.Blue, 2)
  226. If e.RowIndex = 交易明細_dgv.Rows.Count - 1 Then : Exit Sub : Else
  227. If 交易明細_dgv("銷售日期", e.RowIndex).Value.ToString <> 交易明細_dgv("銷售日期", e.RowIndex + 1).Value.ToString Then
  228. Dim startX As Integer = IIf(交易明細_dgv.RowHeadersVisible, 交易明細_dgv.RowHeadersWidth, 0) : Dim startY As Integer = e.RowBounds.Top + e.RowBounds.Height - 1
  229. Dim endX As Integer = startX + 交易明細_dgv.Columns.GetColumnsWidth(DataGridViewElementStates.Visible) - 交易明細_dgv.HorizontalScrollingOffset
  230. e.Graphics.DrawLine(linePen, startX, startY, endX, startY) : Exit Sub
  231. End If
  232. End If
  233. End Sub
  234. Private Sub 月份_cb_SelectedIndexChanged(sender As Object, e As EventArgs) Handles 月份_cb.SelectedIndexChanged
  235. SET_客戶交易明細表()
  236. End Sub
  237. Private Sub 存檔_bt_Click(sender As Object, e As EventArgs) Handles 存檔_bt.Click
  238. PA13 = 月份_cb.Text : PA12 = "0" : PA11 = "0" : PA10 = "0"
  239. For I As Integer = 0 To 獎金計算_dgv.Rows.Count - 1
  240. PA12 = Strings.Format(Val(PA12) + 獎金計算_dgv("實收業績", I).Value, "###0")
  241. PA11 = Strings.Format(Val(PA11) + 獎金計算_dgv("償還業績", I).Value, "###0")
  242. PA10 = Strings.Format(Val(PA10) + 獎金計算_dgv("總業績", I).Value, "###0")
  243. Next
  244. SQL_業機彙總判斷()
  245. If dr.Read() Then : SQL_業機彙總_修改() : Else : SQL_業機彙總_新增() : End If : conn.Close() : MsgBox("存檔完成")
  246. End Sub
  247. Dim RT As Integer = 0
  248. Private Sub 列印_bt_Click(sender As Object, e As EventArgs) Handles 列印_bt.Click
  249. Dim xlApp As Microsoft.Office.Interop.Excel.Application
  250. Dim xlBook As Microsoft.Office.Interop.Excel.Workbook
  251. Dim xlSheet As Microsoft.Office.Interop.Excel.Worksheet
  252. xlApp = CType(CreateObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)
  253. xlBook = xlApp.Workbooks.Add
  254. xlApp.DisplayAlerts = True
  255. xlBook.Activate()
  256. xlSheet = NewMethod(xlBook)
  257. xlSheet.Activate()
  258. xlApp.Visible = True
  259. xlApp.Application.WindowState = xlMaximized
  260. AA(xlApp, xlSheet) : RT = 0
  261. For I As Integer = 0 To 獎金計算_dgv.Rows.Count - 1
  262. If 獎金計算_dgv("人員", I).Value.ToString = "" Or 獎金計算_dgv("總獎金", I).Value = 0 Then : Else
  263. xlSheet.Cells(1 + RT, 2) = "獎金月份" : xlSheet.Cells(2 + RT, 2) = "姓名" : xlSheet.Cells(3 + RT, 2) = "個人應發獎金小計(不含預購獎金)"
  264. xlSheet.Cells(4 + RT, 2) = "預購獎金" : xlSheet.Cells(5 + RT, 2) = "其他" : xlSheet.Cells(6 + RT, 2) = "備註" : xlSheet.Cells(7 + RT, 2) = "總獎金"
  265. xlSheet.Cells(8 + RT, 2) = "公司留存"
  266. xlSheet.Cells(1 + RT, 3) = Strings.Left(月份_cb.Text, 3) & " 年 " & Strings.Right(月份_cb.Text, 2) & " 月"
  267. xlSheet.Cells(2 + RT, 3) = 獎金計算_dgv("人員", I).Value.ToString : xlSheet.Cells(3 + RT, 3) = 獎金計算_dgv("總獎金", I).Value - 獎金計算_dgv("預購獎金", I).Value
  268. xlSheet.Cells(4 + RT, 3) = 獎金計算_dgv("預購獎金", I).Value : xlSheet.Cells(5 + RT, 3) = "0" : xlSheet.Cells(6 + RT, 3) = ""
  269. xlSheet.Cells(7 + RT, 3) = 獎金計算_dgv("總獎金", I).Value
  270. xlSheet.Cells(1 + RT, 5) = "獎金月份" : xlSheet.Cells(2 + RT, 5) = "姓名" : xlSheet.Cells(3 + RT, 5) = "個人應發獎金小計(不含預購獎金)"
  271. xlSheet.Cells(4 + RT, 5) = "預購獎金" : xlSheet.Cells(5 + RT, 5) = "其他" : xlSheet.Cells(6 + RT, 5) = "備註" : xlSheet.Cells(7 + RT, 5) = "總獎金"
  272. xlSheet.Cells(8 + RT, 5) = "同仁留存"
  273. xlSheet.Cells(1 + RT, 6) = Strings.Left(月份_cb.Text, 3) & " 年 " & Strings.Right(月份_cb.Text, 2) & " 月"
  274. xlSheet.Cells(2 + RT, 6) = 獎金計算_dgv("人員", I).Value.ToString : xlSheet.Cells(3 + RT, 6) = 獎金計算_dgv("總獎金", I).Value - 獎金計算_dgv("預購獎金", I).Value
  275. xlSheet.Cells(4 + RT, 6) = 獎金計算_dgv("預購獎金", I).Value : xlSheet.Cells(5 + RT, 6) = "0" : xlSheet.Cells(6 + RT, 6) = ""
  276. xlSheet.Cells(7 + RT, 6) = 獎金計算_dgv("總獎金", I).Value
  277. BB(xlApp, xlSheet) : RT += 9
  278. End If
  279. Next
  280. xlSheet.PageSetup.PrintArea = ""
  281. xlApp.Cells.Select()
  282. xlSheet.Range("B1").Select()
  283. xlApp.Application.WindowState = xlMinimized
  284. MsgBox("列印完成")
  285. End Sub
  286. Private Shared Function NewMethod(xlBook As Microsoft.Office.Interop.Excel.Workbook) As Microsoft.Office.Interop.Excel.Worksheet
  287. Return CType(xlBook.Worksheets.Add, Microsoft.Office.Interop.Excel.Worksheet)
  288. End Function
  289. Private Sub AA(ByVal myExcel As Microsoft.Office.Interop.Excel.Application, ByVal xlSheet As Microsoft.Office.Interop.Excel.Worksheet)
  290. xlSheet.Cells.Select()
  291. With myExcel.Selection.Font
  292. .Name = "微軟正黑體" : .Size = 14 : .Strikethrough = False : .Superscript = False : .Subscript = False : .OutlineFont = False
  293. .Shadow = False : .Underline = xlUnderlineStyleNone : .ThemeColor = xlThemeColorLight1 : .TintAndShade = 0 : .ThemeFont = xlThemeFontNone
  294. End With
  295. xlSheet.Columns("A:A").Select : myExcel.Selection.ColumnWidth = 1 : xlSheet.Columns("D:D").Select : myExcel.Selection.ColumnWidth = 2
  296. xlSheet.Columns("G:G").Select : myExcel.Selection.ColumnWidth = 1 : xlSheet.Columns("B:C").Select : myExcel.Selection.ColumnWidth = 40
  297. xlSheet.Columns("E:F").Select : myExcel.Selection.ColumnWidth = 40
  298. xlSheet.Columns("C:C").Select : myExcel.Selection.Style = "Comma" : myExcel.Selection.NumberFormatLocal = "_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"
  299. xlSheet.Columns("F:F").Select : myExcel.Selection.Style = "Comma" : myExcel.Selection.NumberFormatLocal = "_-* #,##0_-;-* #,##0_-;_-* ""-""??_-;_-@_-"
  300. xlSheet.Columns("C:C").Select
  301. With myExcel.Selection
  302. .HorizontalAlignment = xlRight : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  303. .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False
  304. End With
  305. xlSheet.Columns("F:F").Select
  306. With myExcel.Selection
  307. .HorizontalAlignment = xlRight : .VerticalAlignment = xlCenter : .WrapText = False : .Orientation = 0 : .AddIndent = False : .IndentLevel = 0
  308. .ShrinkToFit = False : .ReadingOrder = xlContext : .MergeCells = False
  309. End With
  310. End Sub
  311. Private Sub BB(ByVal myExcel As Microsoft.Office.Interop.Excel.Application, ByVal xlSheet As Microsoft.Office.Interop.Excel.Worksheet)
  312. xlSheet.Rows(1 + RT & ":" & 7 + RT).Select : myExcel.Selection.RowHeight = 28
  313. xlSheet.Rows(8 + RT & ":" & 8 + RT).Select : myExcel.Selection.RowHeight = 60
  314. xlSheet.Rows(9 + RT & ":" & 9 + RT).Select : myExcel.Selection.RowHeight = 20
  315. xlSheet.Range("B" & 1 + RT & ":C" & 7 + RT).Select()
  316. myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  317. With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlMedium : End With
  318. With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlMedium : End With
  319. With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlMedium : End With
  320. With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlMedium : End With
  321. With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlThin : End With
  322. With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlThin : End With
  323. xlSheet.Range("E" & 1 + RT & ":F" & 7 + RT).Select()
  324. myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  325. With myExcel.Selection.Borders(xlEdgeLeft) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlMedium : End With
  326. With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlMedium : End With
  327. With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlMedium : End With
  328. With myExcel.Selection.Borders(xlEdgeRight) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlMedium : End With
  329. With myExcel.Selection.Borders(xlInsideVertical) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlThin : End With
  330. With myExcel.Selection.Borders(xlInsideHorizontal) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlThin : End With
  331. xlSheet.Range("B" & 8 + RT & ":C" & 8 + RT).Select()
  332. myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  333. myExcel.Selection.Borders(xlEdgeLeft).LineStyle = xlNone
  334. With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlMedium : End With
  335. With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  336. myExcel.Selection.Borders(xlEdgeRight).LineStyle = xlNone : myExcel.Selection.Borders(xlInsideVertical).LineStyle = xlNone
  337. myExcel.Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
  338. xlSheet.Range("E" & 8 + RT & ":F" & 8 + RT).Select()
  339. myExcel.Selection.Borders(xlDiagonalDown).LineStyle = xlNone : myExcel.Selection.Borders(xlDiagonalUp).LineStyle = xlNone
  340. myExcel.Selection.Borders(xlEdgeLeft).LineStyle = xlNone
  341. With myExcel.Selection.Borders(xlEdgeTop) : .LineStyle = xlContinuous : .ColorIndex = xlAutomatic : .TintAndShade = 0 : .Weight = xlMedium : End With
  342. With myExcel.Selection.Borders(xlEdgeBottom) : .LineStyle = xlContinuous : .ColorIndex = 0 : .TintAndShade = 0 : .Weight = xlThin : End With
  343. myExcel.Selection.Borders(xlEdgeRight).LineStyle = xlNone : myExcel.Selection.Borders(xlInsideVertical).LineStyle = xlNone
  344. myExcel.Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
  345. End Sub
  346. End Class