Skip to content

Commit c1c121b

Browse files
committed
Chưa cập nhật đơn bằng procedure
1 parent c5dfd1c commit c1c121b

File tree

7 files changed

+104
-70
lines changed

7 files changed

+104
-70
lines changed
-343 Bytes
Binary file not shown.
-7 Bytes
Binary file not shown.
-814 Bytes
Binary file not shown.

procedure_trigger.sql

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,35 @@ BEGIN
4646
commit;
4747
END;
4848

49+
CREATE OR REPLACE Procedure admin.delete_order(
50+
ma_dh IN admin.DONHANG.MADH%TYPE)
51+
IS
52+
CURSOR c_ctdh
53+
IS
54+
SELECT MACTDH
55+
FROM admin.CHITIETDONHANG
56+
WHERE MADH = ma_dh;
57+
58+
ma_ct_dh admin.CHITIETDONHANG.MACTDH%TYPE;
59+
BEGIN
60+
-- tim chi tiet don hang cua don hang dang xoa
61+
OPEN c_ctdh;
62+
LOOP
63+
FETCH c_ctdh INTO ma_ct_dh;
64+
EXIT WHEN c_ctdh%NOTFOUND;
65+
66+
-- xoa chi tiet don hang
67+
BEGIN admin.delete_order_detail(ma_ct_dh); END;
68+
69+
END LOOP;
70+
71+
CLOSE c_ctdh;
72+
73+
-- Xoa don hang
74+
DELETE FROM admin.DONHANG WHERE MADH = ma_dh;
75+
commit;
76+
END;
77+
4978
CREATE OR REPLACE Procedure admin.update_table(
5079
ma_ban IN admin.BAN.MABAN%TYPE,
5180
sl_khach IN admin.BAN.SOLUONGKHACH%TYPE,
@@ -70,6 +99,25 @@ BEGIN
7099
commit;
71100
END;
72101

102+
CREATE OR REPLACE Procedure admin.update_order_detail(
103+
ma_ct_dh IN admin.CHITIETDONHANG.MACTDH%TYPE,
104+
so_luong IN admin.CHITIETDONHANG.SOLUONG%TYPE)
105+
AS
106+
BEGIN
107+
-- CAp nhat trang thai ban
108+
UPDATE admin.CHITIETDONHANG SET SOLUONG = so_luong WHERE MACTDH = ma_ct_dh;
109+
commit;
110+
END;
111+
112+
CREATE OR REPLACE Procedure admin.delete_order_detail(
113+
ma_ct_dh IN admin.CHITIETDONHANG.MACTDH%TYPE)
114+
AS
115+
BEGIN
116+
-- xoa ct don hang
117+
DELETE FROM admin.CHITIETDONHANG WHERE MACTDH = ma_ct_dh;
118+
commit;
119+
END;
120+
73121
-- Trigger cap nhat so luong ton cua san pham khi them ct don hang
74122
CREATE OR REPLACE TRIGGER admin.orders_details_after_insert
75123
AFTER INSERT
@@ -113,6 +161,31 @@ BEGIN
113161

114162
END;
115163

164+
-- Trigger cap nhat so luong ton cua sp, cap nhat tong tien don hang khi xoa ct don hang
165+
CREATE OR REPLACE TRIGGER admin.orders_details_after_delete
166+
AFTER DELETE
167+
ON admin.CHITIETDONHANG
168+
FOR EACH ROW
169+
170+
DECLARE
171+
sl_ton admin.SANPHAM.SLTON%TYPE;
172+
gia_sp admin.SANPHAM.GIASP%TYPE;
173+
tong_gia_tri_dh admin.DONHANG.TONGGIATRIDH%TYPE;
174+
tong_gia_tri_ctdh admin.DONHANG.TONGGIATRIDH%TYPE;
175+
BEGIN
176+
--
177+
178+
SELECT SLTON, GIASP INTO sl_ton,gia_sp FROM admin.SANPHAM WHERE MASP = :old.MASP;
179+
-- Cap nhat slton
180+
UPDATE admin.SANPHAM SET SLTON = sl_ton + :old.SOLUONG WHERE MASP = :old.MASP;
181+
182+
-- Cap nhat tong tien don hang
183+
SELECT TONGGIATRIDH INTO tong_gia_tri_dh FROM admin.DONHANG WHERE MADH = :old.MADH;
184+
tong_gia_tri_ctdh := gia_sp * :old.SOLUONG;
185+
UPDATE admin.DONHANG SET TONGGIATRIDH = tong_gia_tri_dh - tong_gia_tri_ctdh WHERE MADH = :old.MADH;
186+
187+
END;
188+
116189
-- Trigger cap nhat trang thai ban khi tao don hang
117190
CREATE OR REPLACE TRIGGER admin.orders_after_insert
118191
AFTER INSERT
@@ -126,3 +199,17 @@ BEGIN
126199
UPDATE admin.BAN SET TRANGTHAIBAN = 1 WHERE MABAN = :new.MABAN;
127200

128201
END;
202+
203+
-- Trigger cap nhat trang thai ban khi xoa don hang
204+
CREATE OR REPLACE TRIGGER admin.orders_after_delete
205+
AFTER INSERT
206+
ON admin.DONHANG
207+
FOR EACH ROW
208+
209+
DECLARE
210+
211+
BEGIN
212+
--
213+
UPDATE admin.BAN SET TRANGTHAIBAN = 0 WHERE MABAN = :old.MABAN;
214+
215+
END;

src/oracle/model/CTDonHangDB.java

Lines changed: 12 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -101,16 +101,13 @@ public boolean updateCTDonHang(CTDonHangModel cTDonHang){
101101
try
102102
{
103103
orclConn.openConnection();
104-
stmt = orclConn.conn.createStatement();
105-
String sql = "UPDATE admin.CHITIETDONHANG SET MASP = ?, MADH = ?, SOLUONG = ? WHERE MACTDH = ?";
106-
PreparedStatement ps = orclConn.conn.prepareStatement(sql);
107-
ps.setInt(1, cTDonHang.getMaSP());
108-
ps.setInt(2, cTDonHang.getMaDH());
109-
ps.setInt(3, cTDonHang.getSoLuong());
110-
ps.setInt(4, cTDonHang.getMaCTDH());
111-
ps.executeUpdate();
112-
113-
stmt.close();
104+
// ma_ct_dh, ma_sp, ma_dh, so_luong
105+
String sql = "BEGIN update_order_detail(?, ?); END;";
106+
CallableStatement ps = orclConn.conn.prepareCall(sql);
107+
ps.setInt(1, cTDonHang.getMaCTDH());
108+
ps.setInt(2, cTDonHang.getSoLuong());
109+
ps.execute();
110+
// Lấy kết quả trả về
114111
orclConn.closeConnection();
115112

116113
} catch(SQLException ex)
@@ -126,13 +123,12 @@ public boolean deleteCTDonHang(int maCTDH){
126123
try
127124
{
128125
orclConn.openConnection();
129-
stmt = orclConn.conn.createStatement();
130-
String sql = "DELETE admin.CHITIETDONHANG WHERE MACTDH = ?";
131-
PreparedStatement ps = orclConn.conn.prepareStatement(sql);
126+
// ma_ct_dh, ma_sp, ma_dh, so_luong
127+
String sql = "BEGIN delete_order_detail(?); END;";
128+
CallableStatement ps = orclConn.conn.prepareCall(sql);
132129
ps.setInt(1, maCTDH);
133-
ps.executeUpdate();
134-
135-
stmt.close();
130+
ps.execute();
131+
// Lấy kết quả trả về
136132
orclConn.closeConnection();
137133

138134
} catch(SQLException ex)

src/oracle/model/DonHangDB.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,11 @@ public boolean updateDonHang(DonHangModel donHang){
133133
public boolean deleteDonHang(int maDH){
134134
try {
135135
orclConn.openConnection();
136-
String sql = "DELETE admin.DONHANG WHERE MADH = ?";
137-
PreparedStatement ps = orclConn.conn.prepareStatement(sql);
138-
ps.setInt(1, maDH);
139-
ps.executeUpdate();
136+
// maDH, tongGiaTri, soLuongKhach, maNV, moTaDH, maBan
137+
String sql = "BEGIN delete_order(?); END;";
138+
CallableStatement ps = orclConn.conn.prepareCall(sql);
139+
ps.setFloat(1, maDH);
140+
ps.execute();
140141
orclConn.closeConnection();
141142
return true;
142143

src/oracle/panel/OrderControlPanel.java

Lines changed: 0 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -440,22 +440,9 @@ private void btn_xoa_dhActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
440440
// Lay ma don hang dang duoc chon
441441
int maDH = Integer.parseInt(table_don_hang.getValueAt(table_don_hang.getSelectedRow(), 0).toString().trim());
442442
if (confirmAction("Bạn muốn xóa đơn hàng này ?")) {
443-
// Xoa chi tiet don hang
444-
ArrayList<CTDonHangModel> cTDonHangs = cTDonHangDB.getCTDonHangFromDonHangs(maDH);
445-
SanPhamModel sanPham = new SanPhamModel();
446-
for (CTDonHangModel cTDonHang : cTDonHangs) {
447-
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);
452-
}
453443
// Xoa don hang
454444
DonHangModel donHang = donHangDB.getDonHang(maDH);
455445
boolean result = donHangDB.deleteDonHang(maDH);
456-
457-
458-
459446
if (result){
460447
// Cap nhat trang thai ban
461448
BanModel bm = banDB.getBan(donHang.getMaBan());
@@ -496,11 +483,6 @@ private void btn_cap_nhat_spActionPerformed(java.awt.event.ActionEvent evt) {//G
496483
cTDonHang.setSoLuong(newSoLuong);
497484
// luu xuong db
498485
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);
504486

505487
// CAp nhat lai tong tien don hang
506488
DonHangModel currentDonHang = donHangDB.getDonHang(cTDonHang.getMaDH());
@@ -539,38 +521,6 @@ private void btn_xoa_spActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FI
539521
if (DB.confirmAction("Bạn muốn xóa sản phẩm này ?")) {
540522
// xoa ctdh
541523
boolean result = cTDonHangDB.deleteCTDonHang(maCTDH);
542-
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-
550-
// Kiem tra don hang con san pham khong
551-
ArrayList<CTDonHangModel> dsCTDH = cTDonHangDB.getCTDonHangFromDonHangs(cTDonHang.getMaDH());
552-
if (dsCTDH.size() == 0) {
553-
// khong con san pham
554-
// xoa don hang
555-
DonHangModel donHang = donHangDB.getDonHang(cTDonHang.getMaDH());
556-
donHangDB.deleteDonHang(donHang.getMaDH());
557-
// Cap nhat trang thai ban
558-
BanModel bm = banDB.getBan(donHang.getMaBan());
559-
bm.setTrangThaiBan(0);
560-
bm.setSoLuongKhach(0);
561-
banDB.updateBan(bm);
562-
}
563-
else{
564-
// cap nhat tong gia don hang
565-
// CAp nhat lai tong tien don hang
566-
DonHangModel currentDonHang = donHangDB.getDonHang(cTDonHang.getMaDH());
567-
float totalChange = currentDonHang.getTongGiaTriDH() - (cTDonHang.getSoLuong() * sanPham.getGiaSP());
568-
currentDonHang.setTongGiaTriDH(totalChange);
569-
result = donHangDB.updateDonHang(currentDonHang);
570-
}
571-
572-
573-
574524
if (result) {
575525
JOptionPane.showMessageDialog(null, "Xóa thành công");
576526
// load lai dsdonhang

0 commit comments

Comments
 (0)