001.
Imports
System.Data
002.
Imports
System.Data.OleDb
003.
Imports
System.Text
004.
Public
Class
Sale
005.
Dim
Conn
As
New
OleDbConnection
006.
Dim
da
As
New
OleDbDataAdapter
007.
Dim
ds
As
New
DataSet
008.
Dim
sb
As
New
StringBuilder
009.
Dim
Com
As
OleDbCommand
010.
Dim
dr
As
OleDbDataReader
011.
Dim
IsFind
As
Boolean
012.
Dim
LastSaleId
As
String
013.
Private
Sub
btnBrowseCustomer_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
btnBrowseCustomer.Click
014.
Dim
fAllCustomer
As
New
AllCustomer
015.
fAllCustomer.ShowDialog(
Me
)
016.
txtcustID.Text = rCustID
017.
txtFullName.Text = rFullName
018.
rCustID =
""
019.
rFullName =
""
020.
End
Sub
021.
022.
Private
Sub
btnBrowseProduct_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
btnBrowseProduct.Click
023.
Dim
fAllProduct
As
New
AllProduct
024.
fAllProduct.ShowDialog(
Me
)
025.
txtProductID.Text = rProductId
026.
txtProductName.Text = rProductName
027.
txtUnitPerPrice.Text =
CDec
(rUnitperPrice)
028.
txtUnitInStock.Text =
CInt
(rUnitInStock)
029.
rProductId =
""
030.
rProductName =
""
031.
rUnitperPrice = 0.0
032.
rUnitInStock = 0
033.
034.
035.
End
Sub
036.
037.
Private
Sub
Sale_Load(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
MyBase
.Load
038.
With
Conn
039.
If
.State = ConnectionState.Open
Then
.Close()
040.
.ConnectionString = strConn
041.
.Open()
042.
End
With
043.
044.
mskSaleDate.Text = Format(Today,
"dd/MM/yyyy"
)
045.
046.
047.
lsvSale.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize)
048.
lsvSale.Columns.Add(
"รหัสสินค้า"
, 70, HorizontalAlignment.Left)
049.
lsvSale.Columns.Add(
"ชื่อสินค้า"
, 170, HorizontalAlignment.Left)
050.
lsvSale.Columns.Add(
"ราคาต่อหน่วย"
, 80, HorizontalAlignment.Right)
051.
lsvSale.Columns.Add(
"จำนวนที่ขาย"
, 80, HorizontalAlignment.Right)
052.
lsvSale.Columns.Add(
"สินค้าคงเหลือ"
, 80, HorizontalAlignment.Right)
053.
lsvSale.Columns.Add(
"รวมเป็นเงิน"
, 90, HorizontalAlignment.Right)
054.
055.
lsvSale.View = View.Details
056.
lsvSale.GridLines =
True
057.
058.
059.
txtProductID.Text =
""
060.
txtProductName.Text =
""
061.
txtUnitPerPrice.Text =
""
062.
txtUnitSale.Text =
""
063.
End
Sub
064.
Sub
CalCheckStock()
065.
If
txtUnitSale.Text =
""
Then
066.
MessageBox.Show(
"กรุณาป้อนจำนวนสินค้าที่ขายก่อน"
,
"คำเตือน"
, MessageBoxButtons.OK, MessageBoxIcon.Information)
067.
txtUnitSale.Focus()
068.
txtUnitSale.SelectAll()
069.
Exit
Sub
070.
End
If
071.
If
CSng
(txtUnitInStock.Text) <
CSng
(txtUnitSale.Text)
Then
072.
MessageBox.Show(
"จำนวนสินค้าคงเหลือมีน้อยกว่าจำนวนสินค้าที่ต้องการซื้อ"
,
"คำเตือน"
, MessageBoxButtons.OK, MessageBoxIcon.Warning)
073.
txtUnitSale.Focus()
074.
txtUnitSale.SelectAll()
075.
Exit
Sub
076.
End
If
077.
End
Sub
078.
Sub
CalSale()
079.
Dim
i
As
Integer
080.
Dim
Amount
As
Single
= 0.0
081.
Dim
VAT
As
Single
= 0.0
082.
Dim
Sum
As
Single
= 0.0
083.
084.
For
i = 0
To
lsvSale.Items.Count - 1
085.
Amount = Amount +
CSng
(lsvSale.Items(i).SubItems(5).Text)
086.
VAT = Amount * 0.07
087.
Sum = Amount + VAT
088.
Next
089.
lblTotal.Text = Amount.ToString(
"#,##0.00"
)
090.
lblVAT.Text = VAT.ToString(
"#,##0.00"
)
091.
lblNetTotal.Text = Sum.ToString(
"#,##0.00"
)
092.
End
Sub
093.
Sub
ClearData()
094.
txtProductID.Clear()
095.
txtProductName.Clear()
096.
txtUnitPerPrice.Clear()
097.
txtUnitSale.Clear()
098.
txtUnitInStock.Clear()
099.
txtNewUnitInStock.Clear()
100.
txtTotal.Clear()
101.
End
Sub
102.
Sub
ClearAllData()
103.
ClearData()
104.
lsvSale.Items.Clear()
105.
txtCash.Clear()
106.
lblVAT.Text =
""
107.
lblChange.Text =
""
108.
lblTotal.Text =
""
109.
lblNetTotal.Text =
""
110.
End
Sub
111.
Private
Sub
CalculateProduct()
112.
Dim
i
As
Integer
= 0
113.
Dim
tmpUnitperPrice
As
Integer
= 0
114.
Dim
tmpUnitSale
As
Integer
= 0
115.
Dim
tmpAmount
As
Integer
= 0
116.
Dim
VAT
As
Single
117.
118.
Dim
tmpSum
As
Single
= 0
119.
Dim
tmpUnitInStock
As
Integer
= 0
120.
Dim
tmpNet
As
Single
= 0.0
121.
122.
For
i = 0
To
lsvSale.Items.Count - 1
123.
tmpUnitperPrice =
CInt
(lsvSale.Items(i).SubItems(2).Text)
124.
tmpUnitSale =
CInt
(lsvSale.Items(i).SubItems(3).Text)
125.
tmpAmount = tmpAmount + (tmpUnitperPrice * tmpUnitSale)
126.
VAT =
CSng
(tmpAmount * 0.07)
127.
tmpSum = tmpAmount + VAT
128.
129.
Next
130.
131.
lblTotal.Text = tmpAmount.ToString(
"#,##0.00"
)
132.
lblVAT.Text = VAT.ToString(
"#,##0.00"
)
133.
lblNetTotal.Text = tmpSum.ToString(
"#,##0.00"
)
134.
End
Sub
135.
136.
Sub
RemoveSale()
137.
Dim
i
As
Integer
138.
Dim
Amount
As
Single
= 0.0
139.
Dim
VAT
As
Single
= 0.0
140.
Dim
Sum
As
Single
= 0.0
141.
142.
For
i = 0
To
lsvSale.SelectedItems.Count - 1
143.
Dim
lvi
As
ListViewItem
144.
lvi = lsvSale.SelectedItems(i)
145.
lsvSale.Items.Remove(lvi)
146.
CalSale()
147.
Next
148.
End
Sub
149.
Sub
AddSale()
150.
If
(txtProductId.Text =
""
)
Or
(txtProductName.Text =
""
)
Or
(txtUnitperPrice.Text =
""
)
Or
(txtUnitSale.Text =
""
)
Then
151.
txtProductId.Focus()
152.
Exit
Sub
153.
End
If
154.
155.
Dim
i
As
Integer
= 0
156.
157.
158.
159.
Dim
TotalSale
As
Single
= 0.0
160.
Dim
lvi
As
ListViewItem
161.
Dim
Stock
As
Integer
162.
TotalSale =
CSng
(
CInt
(txtUnitSale.Text) *
CInt
(txtUnitperPrice.Text))
163.
Stock =
CInt
(txtUnitInStock.Text) -
CInt
(txtUnitSale.Text)
164.
165.
Dim
SaleData()
As
String
166.
SaleData =
New
String
() { _
167.
txtProductId.Text, _
168.
txtProductName.Text, _
169.
txtUnitperPrice.Text, _
170.
txtUnitSale.Text, _
171.
Stock, _
172.
TotalSale.ToString(
"#,##0"
)}
173.
174.
lvi =
New
ListViewItem(SaleData)
175.
lsvSale.Items.Add(lvi)
176.
CalSale()
177.
ClearData()
178.
txtProductId.Focus()
179.
End
Sub
180.
181.
Private
Sub
btnAdd_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
btnAdd.Click
182.
If
txtUnitSale.Text =
""
Then
183.
MessageBox.Show(
"กรุณาป้อนจำนวนสินค้าที่ขายก่อน"
,
"คำเตือน"
, MessageBoxButtons.OK, MessageBoxIcon.Information)
184.
txtUnitSale.Focus()
185.
txtUnitSale.SelectAll()
186.
Exit
Sub
187.
End
If
188.
If
CInt
(txtUnitInStock.Text) <
CInt
(txtUnitSale.Text)
Then
189.
MessageBox.Show(
"จำนวนสินค้าคงเหลือมีน้อยกว่าจำนวนสินค้าที่ต้องการซื้อ"
,
"คำเตือน"
, MessageBoxButtons.OK, MessageBoxIcon.Warning)
190.
txtUnitSale.Focus()
191.
txtUnitSale.SelectAll()
192.
Exit
Sub
193.
Else
194.
AddSale()
195.
End
If
196.
End
Sub
197.
198.
Private
Sub
txtUnitSale_KeyDown(
ByVal
sender
As
Object
,
ByVal
e
As
System.Windows.Forms.KeyEventArgs)
Handles
txtUnitSale.KeyDown
199.
If
e.KeyCode = Keys.Enter
Then
200.
CalCheckStock()
201.
202.
txtNewUnitInStock.Text =
CInt
(txtUnitInStock.Text) -
CInt
(txtUnitSale.Text)
203.
204.
205.
206.
207.
txtTotal.Text =
CInt
(txtUnitSale.Text) *
CDec
(txtUnitPerPrice.Text)
208.
209.
End
If
210.
End
Sub
211.
212.
Private
Sub
txtUnitSale_KeyPress(
ByVal
sender
As
Object
,
ByVal
e
As
System.Windows.Forms.KeyPressEventArgs)
Handles
txtUnitSale.KeyPress
213.
If
e.KeyChar <
"0"
Or
e.KeyChar >
"9"
Then
214.
e.Handled =
True
215.
End
If
216.
End
Sub
217.
218.
Private
Sub
txtCash_KeyPress(
ByVal
sender
As
Object
,
ByVal
e
As
System.Windows.Forms.KeyPressEventArgs)
Handles
txtCash.KeyPress
219.
If
e.KeyChar <
"0"
Or
e.KeyChar >
"9"
Then
220.
e.Handled =
True
221.
End
If
222.
End
Sub
223.
Private
Sub
AutoGenerateSaleId()
224.
Dim
sql
As
String
=
""
225.
Dim
tmpTransID
As
Integer
= 0
226.
sql =
"SELECT TOP 1 SaleID FROM Sale ORDER BY SaleID DESC"
227.
Try
228.
Com =
New
OleDbCommand
229.
230.
With
Com
231.
.CommandType = CommandType.Text
232.
.CommandText = sql
233.
.Connection = Conn
234.
dr = .ExecuteReader()
235.
dr.Read()
236.
tmpTransID =
CInt
(
CStr
((dr.Item(
"SaleID"
))))
237.
tmpTransID = tmpTransID + 1
238.
LastSaleId = tmpTransID.ToString(
"0000000"
)
239.
lblSaleID.Text = LastSaleId
240.
End
With
241.
Catch
242.
243.
LastSaleId =
"0000001"
244.
lblSaleID.Text = LastSaleId
245.
246.
End
Try
247.
dr.Close()
248.
End
Sub
249.
250.
Private
Sub
tsAdd_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
tsAdd.Click
251.
AutoGenerateSaleId()
252.
End
Sub
253.
254.
Private
Sub
btncal_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
btncal.Click
255.
If
txtCash.Text =
""
Then
256.
257.
txtCash.Focus()
258.
txtCash.SelectAll()
259.
Exit
Sub
260.
End
If
261.
If
CDec
(txtCash.Text) <
CDec
(lblNetTotal.Text)
Then
262.
MessageBox.Show(
"จำนวนเงินที่ได้รับจากลูกค้าน้อยกว่าค่าสินค้า"
,
"คำเตือน"
, MessageBoxButtons.OK, MessageBoxIcon.Warning)
263.
txtCash.Focus()
264.
265.
Exit
Sub
266.
End
If
267.
lblChange.Text =
CStr
(
CDec
(txtCash.Text) -
CDec
(lblNetTotal.Text))
268.
End
Sub
269.
270.
Private
Sub
tsSave_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
tsSave.Click
271.
If
txtcustID.Text =
""
Or
txtFullName.Text =
""
Then
272.
MessageBox.Show(
"กรุณาป้อนข้อมูลให้ครบก่อน"
)
273.
Exit
Sub
274.
End
If
275.
276.
277.
If
MessageBox.Show(
"คุณต้องการบันทึกข้อมูลใช่หรือไม่???"
,
"คำยืนยัน"
, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes
Then
278.
279.
280.
If
lsvSale.Items.Count = 0
Then
281.
MessageBox.Show(
"กรุณาป้อนรายการขายสินค้า!!!"
,
"ผลการตรวจสอบ"
, MessageBoxButtons.OK, MessageBoxIcon.Information)
282.
txtProductID.Focus()
283.
Exit
Sub
284.
End
If
285.
286.
Try
287.
288.
289.
AutoGenerateSaleId()
290.
291.
292.
293.
Dim
sql
As
String
=
""
294.
295.
sql =
" INSERT INTO Sale(SaleID,CustID,SaleDate,NetTotal)"
296.
sql &=
" VALUES ('"
& LastSaleId &
"',"
297.
sql &=
"'"
&
CStr
(txtcustID.Text) &
"',"
298.
sql &=
"'"
&
CDate
(mskSaleDate.Text) &
"',"
299.
sql &=
"'"
&
CDec
(lblNetTotal.Text) &
"')"
300.
301.
Com =
New
OleDbCommand
302.
With
Com
303.
.CommandType = CommandType.Text
304.
.CommandText = sql
305.
.Connection = Conn
306.
.ExecuteNonQuery()
307.
End
With
308.
309.
310.
311.
312.
313.
Dim
i
As
Integer
= 0
314.
Dim
tmpID
As
String
=
""
315.
Dim
tmpUnitperPrice
As
Integer
= 0
316.
Dim
tmpUnitSale
As
Integer
= 0
317.
Dim
tmpAmount
As
Integer
= 0
318.
Dim
tmpUnitInStock
As
Integer
= 0
319.
Dim
tmpProductId
As
String
=
""
320.
Dim
tmpProductName
As
String
=
""
321.
Dim
tmpSum
As
Single
= 0
322.
Dim
tmpNet
As
Single
= 0.0
323.
Dim
tmpTotal
As
Single
= 0.0
324.
Dim
tmpStock
As
Integer
325.
326.
327.
328.
For
i = 0
To
lsvSale.Items.Count - 1
329.
sql =
" INSERT INTO SaleDetail (SaleID,ProductID,UnitSale,Total)"
330.
sql &=
" VALUES ('"
& LastSaleId &
"',"
331.
332.
tmpProductId =
CStr
(lsvSale.Items(i).SubItems(0).Text)
333.
tmpProductName =
CStr
(lsvSale.Items(i).SubItems(1).Text)
334.
tmpUnitperPrice =
CInt
(lsvSale.Items(i).SubItems(2).Text)
335.
tmpUnitSale =
CInt
(lsvSale.Items(i).SubItems(3).Text)
336.
tmpUnitInStock =
CInt
(lsvSale.Items(i).SubItems(4).Text)
337.
338.
tmpTotal =
CDec
(lsvSale.Items(i).SubItems(5).Text)
339.
340.
tmpStock = tmpUnitInStock - tmpUnitSale
341.
342.
343.
344.
sql &=
"'"
& tmpProductId &
"',"
345.
sql &=
"'"
& tmpUnitSale &
"',"
346.
sql &=
"'"
& tmpTotal &
"')"
347.
Com =
New
OleDbCommand
348.
With
Com
349.
.CommandType = CommandType.Text
350.
.CommandText = sql
351.
.Connection = Conn
352.
.ExecuteNonQuery()
353.
End
With
354.
355.
356.
sql =
" UPDATE Product SET UnitInStock ='"
& tmpStock &
"'"
357.
sql &=
" WHERE (ProductId ='"
& tmpProductId &
"')"
358.
359.
360.
With
Com
361.
.CommandType = CommandType.Text
362.
.CommandText = sql
363.
.Connection = Conn
364.
.ExecuteNonQuery()
365.
End
With
366.
Next
367.
368.
369.
370.
371.
Catch
ex
As
Exception
372.
MessageBox.Show(ex.Message)
373.
374.
End
Try
375.
376.
MessageBox.Show(
"บันทึกข้อมูลเรียบร้อยแล้ว"
,
"ผลการทำงาน"
, MessageBoxButtons.OK, MessageBoxIcon.Information)
377.
If
MessageBox.Show(
"คุณต้องการพิมพ์ใบเสร็จหรือไม่ ???"
,
"คำยืนยัน"
, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes
Then
378.
Dim
frepReceipt
As
New
ReceiptReport
379.
rep_SaleID = LastSaleId
380.
frmReceiptReport.Show()
381.
End
If
382.
ClearData()
383.
ClearAllData()
384.
Else
385.
MessageBox.Show(
"ยกเลิกการบันทึกข้อมูล"
,
"ผลการทำงาน"
, MessageBoxButtons.OK, MessageBoxIcon.Information)
386.
387.
End
If
388.
End
Sub
389.
390.
Private
Sub
btnclear_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
btnclear.Click
391.
ClearAllData()
392.
End
Sub
393.
394.
Private
Sub
tsClear_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
tsClear.Click
395.
ClearData()
396.
End
Sub
397.
Private
Sub
tsClose_Click(
ByVal
sender
As
System.
Object
,
ByVal
e
As
System.EventArgs)
Handles
tsClose.Click
398.
If
MessageBox.Show(
"คุณต้องการออกจากระบบใช้หรือไม่???"
,
"คำยืนยัน"
, MessageBoxButtons.YesNo, MessageBoxIcon.Question) = Windows.Forms.DialogResult.Yes
Then
399.
Me
.Close()
400.
End
If
401.
End
Sub
402.
End
Class