Skip to content

Commit e01ec81

Browse files
committed
Cập nhật số lượng tồn sản phẩm khi thao tác
- Không cho thêm vào giỏ hàng nếu số lượng nhập lớn hơn sltồn - Cập nhật số lượng tồn khi chỉnh sửa/xóa sản phẩm khỏi đơn hàng
1 parent 45d22a6 commit e01ec81

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+378
-176
lines changed

.gitignore

+25
Original file line numberDiff line numberDiff line change
@@ -1 +1,26 @@
11
/dist/
2+
/build/
3+
# Compiled class file
4+
*.class
5+
6+
# Log file
7+
*.log
8+
9+
# BlueJ files
10+
*.ctxt
11+
12+
# Mobile Tools for Java (J2ME)
13+
.mtj.tmp/
14+
15+
# Package Files #
16+
*.jar
17+
*.war
18+
*.nar
19+
*.ear
20+
*.zip
21+
*.tar.gz
22+
*.rar
23+
24+
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
25+
hs_err_pid*
26+
replay_pid*

build/classes/oracle/AuditView.class

0 Bytes
Binary file not shown.

build/classes/oracle/BackupDB.class

0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.

build/classes/oracle/Instance.class

0 Bytes
Binary file not shown.

build/classes/oracle/Main.class

0 Bytes
Binary file not shown.

build/classes/oracle/PGA.class

0 Bytes
Binary file not shown.

build/classes/oracle/Policy.class

0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.

build/classes/oracle/RestoreDB.class

0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.

build/classes/oracle/Session.class

0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.
0 Bytes
Binary file not shown.
Binary file not shown.

build/classes/oracle/datafile.class

0 Bytes
Binary file not shown.
-52 Bytes
Binary file not shown.
Binary file not shown.
Binary file not shown.
-144 Bytes
Binary file not shown.
-14 Bytes
Binary file not shown.
Binary file not shown.
-2 Bytes
Binary file not shown.
21 Bytes
Binary file not shown.
144 Bytes
Binary file not shown.
14 Bytes
Binary file not shown.
-2 Bytes
Binary file not shown.
Binary file not shown.
3.07 KB
Binary file not shown.

build/classes/oracle/form/CreateOrderForm.form

+234-159
Large diffs are not rendered by default.
635 Bytes
Binary file not shown.
172 Bytes
Binary file not shown.
609 Bytes
Binary file not shown.
Binary file not shown.

nbproject/private/private.properties

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,4 @@ do.jlink=false
55
javac.debug=true
66
javadoc.preview=true
77
jlink.strip=false
8-
user.properties.file=C:\\Users\\QTrun\\AppData\\Roaming\\NetBeans\\17\\build.properties
8+
user.properties.file=C:\\Users\\trilo\\AppData\\Roaming\\NetBeans\\16\\build.properties

nbproject/private/private.xml

+20-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,25 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<project-private xmlns="http://www.netbeans.org/ns/project-private/1">
3-
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="0"/>
3+
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="3">
4+
<file>
5+
<url>src/oracle/form/CreateOrderForm.java</url>
6+
<bookmark id="1">
7+
<name/>
8+
<line>548</line>
9+
<key/>
10+
</bookmark>
11+
<bookmark id="2">
12+
<name/>
13+
<line>612</line>
14+
<key/>
15+
</bookmark>
16+
<bookmark id="3">
17+
<name/>
18+
<line>696</line>
19+
<key/>
20+
</bookmark>
21+
</file>
22+
</editor-bookmarks>
423
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
524
<group>
625
<file>file:/D:/GitHub/Oracle_Demo_Java/src/oracle/MainForm.java</file>

src/oracle/form/CreateOrderForm.form

+6-5
Original file line numberDiff line numberDiff line change
@@ -210,11 +210,12 @@
210210
<Group type="103" groupAlignment="0" attributes="0">
211211
<Group type="102" attributes="0">
212212
<EmptySpace max="-2" attributes="0"/>
213-
<Group type="103" groupAlignment="0" attributes="0">
213+
<Group type="103" groupAlignment="0" max="-2" attributes="0">
214214
<Group type="102" attributes="0">
215-
<Component id="btn_add_to_cart" max="32767" attributes="0"/>
216-
<EmptySpace max="32767" attributes="0"/>
217-
<Component id="btn_add_donhang" min="-2" pref="344" max="-2" attributes="0"/>
215+
<EmptySpace min="-2" pref="220" max="-2" attributes="0"/>
216+
<Component id="btn_add_to_cart" min="-2" pref="326" max="-2" attributes="0"/>
217+
<EmptySpace type="unrelated" max="-2" attributes="0"/>
218+
<Component id="btn_add_donhang" max="32767" attributes="0"/>
218219
</Group>
219220
<Group type="102" attributes="0">
220221
<Component id="lbl_hinh_anh" min="-2" pref="200" max="-2" attributes="0"/>
@@ -262,7 +263,7 @@
262263
<Component id="jScrollPane2" pref="572" max="32767" attributes="0"/>
263264
<Group type="102" attributes="0">
264265
<Component id="lbl_hinh_anh" min="-2" pref="200" max="-2" attributes="0"/>
265-
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
266+
<EmptySpace min="0" pref="367" max="32767" attributes="0"/>
266267
</Group>
267268
</Group>
268269
<EmptySpace type="unrelated" max="-2" attributes="0"/>

src/oracle/form/CreateOrderForm.java

+37-6
Original file line numberDiff line numberDiff line change
@@ -309,11 +309,12 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
309309
layout_productLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
310310
.addGroup(layout_productLayout.createSequentialGroup()
311311
.addContainerGap()
312-
.addGroup(layout_productLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
312+
.addGroup(layout_productLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
313313
.addGroup(layout_productLayout.createSequentialGroup()
314-
.addComponent(btn_add_to_cart, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
315-
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
316-
.addComponent(btn_add_donhang, javax.swing.GroupLayout.PREFERRED_SIZE, 344, javax.swing.GroupLayout.PREFERRED_SIZE))
314+
.addGap(220, 220, 220)
315+
.addComponent(btn_add_to_cart, javax.swing.GroupLayout.PREFERRED_SIZE, 326, javax.swing.GroupLayout.PREFERRED_SIZE)
316+
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
317+
.addComponent(btn_add_donhang, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
317318
.addGroup(layout_productLayout.createSequentialGroup()
318319
.addComponent(lbl_hinh_anh, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
319320
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
@@ -349,7 +350,7 @@ public void actionPerformed(java.awt.event.ActionEvent evt) {
349350
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 572, Short.MAX_VALUE)
350351
.addGroup(layout_productLayout.createSequentialGroup()
351352
.addComponent(lbl_hinh_anh, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE)
352-
.addGap(0, 0, Short.MAX_VALUE)))
353+
.addGap(0, 367, Short.MAX_VALUE)))
353354
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
354355
.addGroup(layout_productLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
355356
.addGroup(layout_productLayout.createSequentialGroup()
@@ -554,6 +555,8 @@ private void btn_add_to_cartActionPerformed(java.awt.event.ActionEvent evt) {//G
554555
JOptionPane.showMessageDialog(null, "Vui lòng chọn sản phẩm !");
555556
return;
556557
}
558+
559+
557560

558561
btn_add_donhang.setEnabled(true);
559562

@@ -566,12 +569,27 @@ private void btn_add_to_cartActionPerformed(java.awt.event.ActionEvent evt) {//G
566569
break;
567570
}
568571
}
572+
// kiem tra san pham con trong kho khong
573+
if (productModel.getSoLuongTon() <= 0 || productModel.getSoLuongTon() < (int) txt_quantity_order_product.getValue()) {
574+
JOptionPane.showMessageDialog(null, "Vượt quá số lượng sản phẩm còn lại !");
575+
return;
576+
}
577+
569578
// kiem tra sp duoc chon da co trong gio hang chua
570579
boolean flag = false;
571580
for (int i = 0; i < cartModels.size(); i++) {
572581
GioHangModel cartModel = cartModels.get(i);
573582
if (cartModel.getProductModel().getMaSP() == productModel.getMaSP()) {
583+
// DA co trong gio hang
584+
// kiem tra co vuot qua slton khong
574585
int newQuan = cartModel.getSoLuong()+ (int) txt_quantity_order_product.getValue();
586+
if (newQuan > productModel.getSoLuongTon()) {
587+
JOptionPane.showMessageDialog(null, "Vượt quá số lượng sản phẩm còn lại !");
588+
return;
589+
}
590+
591+
// Khong vuot, cap nhat sp trong gio
592+
575593
cartModels.get(i).setSoLuong(newQuan);
576594
flag = true;
577595
break;
@@ -653,6 +671,10 @@ private void btn_add_donhangActionPerformed(java.awt.event.ActionEvent evt) {//G
653671
CTDonHangModel cTDonHangModel = new CTDonHangModel(maCTDH, maSP, maDH, soLuong);
654672
// them chitietdonhang vao db
655673
complete = cTDonHangDB.addCTDonHang(cTDonHangModel);
674+
// Giam so luong ton san pham
675+
SanPhamModel sanPham = sanPhamDB.getSanPham(maSP);
676+
sanPham.setSoLuongTon(sanPham.getSoLuongTon() - soLuong);
677+
sanPhamDB.updateSanPham(sanPham);
656678
}
657679

658680
// Xoa du lieu
@@ -678,9 +700,18 @@ private void table_productMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FI
678700
int maSP = Integer.parseInt(table_product.getValueAt(table_product.getSelectedRow(), 0).toString().trim());
679701
String tenSP = table_product.getValueAt(table_product.getSelectedRow(), 1).toString();
680702
txt_product_name.setText(tenSP);
681-
btn_add_to_cart.setEnabled(true);
703+
682704
for (SanPhamModel productModel : productModels) {
683705
if (productModel.getMaSP() == maSP) {
706+
707+
// neu slton = 0 => an nut them vao gio hang
708+
if (productModel.getSoLuongTon() <= 0) {
709+
btn_add_to_cart.setEnabled(false);
710+
}
711+
else{
712+
btn_add_to_cart.setEnabled(true);
713+
}
714+
// hien thi anh sp
684715
loadAnhSP(productModel.getMaSP(), lbl_hinh_anh);
685716
break;
686717
}

src/oracle/model/SanPhamDB.java

+20
Original file line numberDiff line numberDiff line change
@@ -121,4 +121,24 @@ public SanPhamModel getSanPhamInArray(int maSP, ArrayList<SanPhamModel> arrayLis
121121
return null;
122122
}
123123

124+
public boolean updateSanPham(SanPhamModel sanPham){
125+
try {
126+
orclConn.openConnection();
127+
String sql = "UPDATE admin.SANPHAM SET TENSP = ?, MOTASP = ?, GIASP = ?, HINHANH = ?, SLTON = ? WHERE MASP = ?";
128+
PreparedStatement ps = orclConn.conn.prepareStatement(sql);
129+
ps.setString(1, sanPham.getTenSP());
130+
ps.setString(2, sanPham.getMoTaSP());
131+
ps.setFloat(3, sanPham.getGiaSP());
132+
ps.setBlob(4, sanPham.getHinhAnh());
133+
ps.setInt(5, sanPham.getSoLuongTon());
134+
ps.setInt(6, sanPham.getMaSP());
135+
ps.executeUpdate();
136+
orclConn.closeConnection();
137+
return true;
138+
139+
} catch ( SQLException exception) {
140+
JOptionPane.showMessageDialog(null, "Lỗi truy vấn " + exception.getMessage(), "Lỗi", JOptionPane.ERROR_MESSAGE);
141+
}
142+
return false;
143+
}
124144
}

src/oracle/model/SanPhamModel.java

+8
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ public class SanPhamModel {
1212
int maSP;
1313
String tenSP;
1414
String moTaSP;
15+
16+
public String getMoTaSP() {
17+
return moTaSP;
18+
}
19+
20+
public void setMoTaSP(String moTaSP) {
21+
this.moTaSP = moTaSP;
22+
}
1523
float giaSP;
1624
int soLuongTon;
1725
Blob hinhAnh;

src/oracle/panel/OrderControlPanel.java

+27-4
Original file line numberDiff line numberDiff line change
@@ -442,13 +442,20 @@ private void btn_xoa_dhActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
442442
if (confirmAction("Bạn muốn xóa đơn hàng này ?")) {
443443
// Xoa chi tiet don hang
444444
ArrayList<CTDonHangModel> cTDonHangs = cTDonHangDB.getCTDonHangFromDonHangs(maDH);
445+
SanPhamModel sanPham = new SanPhamModel();
445446
for (CTDonHangModel cTDonHang : cTDonHangs) {
446447
cTDonHangDB.deleteCTDonHang(cTDonHang.getMaCTDH());
448+
// Them lai slton cho san pham
449+
sanPham = sanPhamDB.getSanPham(cTDonHang.getMaSP());
450+
sanPham.setSoLuongTon(sanPham.getSoLuongTon() + cTDonHang.getSoLuong());
451+
sanPhamDB.updateSanPham(sanPham);
447452
}
448453
// Xoa don hang
449454
DonHangModel donHang = donHangDB.getDonHang(maDH);
450455
boolean result = donHangDB.deleteDonHang(maDH);
451456

457+
458+
452459
if (result){
453460
// Cap nhat trang thai ban
454461
BanModel bm = banDB.getBan(donHang.getMaBan());
@@ -478,10 +485,22 @@ private void btn_cap_nhat_spActionPerformed(java.awt.event.ActionEvent evt) {//G
478485
int newSoLuong = Integer.parseInt(txt_ct_don_hang_sl_sp.getValue().toString());
479486

480487
if (cTDonHang != null && DB.confirmAction("Bạn muốn cập nhật sản phẩm: " + sanPham.getTenSP() + " ?")) {
481-
// cap nhat so luong
488+
489+
// kiem tra so luong ton sp con du khong
490+
if ((newSoLuong - oldSoLuong) > sanPham.getSoLuongTon()) {
491+
JOptionPane.showMessageDialog(null, "Vượt quá số lượng sản phẩm còn lại !");
492+
return;
493+
}
494+
495+
// cap nhat so luong san pham trong don hang
482496
cTDonHang.setSoLuong(newSoLuong);
483497
// luu xuong db
484498
boolean result = cTDonHangDB.updateCTDonHang(cTDonHang);
499+
500+
// cap nhat lai so luong ton sp
501+
int newSLTon = sanPham.getSoLuongTon() - (newSoLuong - oldSoLuong);
502+
sanPham.setSoLuongTon(newSLTon);
503+
sanPhamDB.updateSanPham(sanPham);
485504

486505
// CAp nhat lai tong tien don hang
487506
DonHangModel currentDonHang = donHangDB.getDonHang(cTDonHang.getMaDH());
@@ -521,6 +540,13 @@ private void btn_xoa_spActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
521540
// xoa ctdh
522541
boolean result = cTDonHangDB.deleteCTDonHang(maCTDH);
523542

543+
// cap nhat lai so luong ton sp
544+
SanPhamModel sanPham = sanPhamDB.getSanPham(cTDonHang.getMaSP());
545+
int newSLTon = sanPham.getSoLuongTon() + cTDonHang.getSoLuong();
546+
sanPham.setSoLuongTon(newSLTon);
547+
sanPhamDB.updateSanPham(sanPham);
548+
549+
524550
// Kiem tra don hang con san pham khong
525551
ArrayList<CTDonHangModel> dsCTDH = cTDonHangDB.getCTDonHangFromDonHangs(cTDonHang.getMaDH());
526552
if (dsCTDH.size() == 0) {
@@ -538,9 +564,6 @@ private void btn_xoa_spActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
538564
// cap nhat tong gia don hang
539565
// CAp nhat lai tong tien don hang
540566
DonHangModel currentDonHang = donHangDB.getDonHang(cTDonHang.getMaDH());
541-
542-
543-
SanPhamModel sanPham = sanPhamDB.getSanPham(cTDonHang.getMaSP());
544567
float totalChange = currentDonHang.getTongGiaTriDH() - (cTDonHang.getSoLuong() * sanPham.getGiaSP());
545568
currentDonHang.setTongGiaTriDH(totalChange);
546569
result = donHangDB.updateDonHang(currentDonHang);

0 commit comments

Comments
 (0)