Untitled

mail@pastecode.io avatarunknown
plain_text
2 months ago
1.6 kB
1
Indexable
Never
CREATE DEFINER=`root`@`localhost` PROCEDURE `place_order_customer`(
	IN p_OrderCustomerId INT,
	IN p_CustomerId INT,  
    IN p_SKU VARCHAR(10), 
    IN p_Quantity INT,
    IN p_Price DOUBLE,
    IN p_LastName VARCHAR(50), 
    IN p_FristName VARCHAR(50), 
    IN p_Phone VARCHAR(20), 
    IN p_Address VARCHAR(255)
)
BEGIN 
	DECLARE v_Inventory INT; 
	DECLARE v_OrderId INT; 
	DECLARE v_Status VARCHAR(50) DEFAULT 'Pending';

	START TRANSACTION; 
     
	SELECT Toy.InventoryNumber INTO v_Inventory
	FROM productwithprice Toy
	WHERE Toy.SKU = p_SKU;

-- Kiểm tra xem có đủ hàng trong kho không
	IF v_Inventory >= p_Quantity THEN
-- Trừ số lượng hàng đã bán khỏi số lượng hàng tồn kho
	  UPDATE Toy
	  SET InventoryNumber = InventoryNumber - p_Quantity
	  WHERE SKU = p_SKU;
	ELSE
		ROLLBACK;
	END IF;
    
	IF (p_OrderCustomerId IS NULL) THEN
-- Thêm đơn hàng vào bảng CustomerOrder
		INSERT INTO CustomerOrder (Status, OrderDate, FristName, LastName, Phone, Address, CustomerId)
		VALUES (v_Status,
			  NOW(),
			  p_FristName,
			  p_LastName,
			  p_Phone,
			  p_Address,
			  p_CustomerId);
-- Lấy ID của đơn hàng vừa được thêm vào
		SELECT LAST_INSERT_ID() INTO v_OrderId;
    ELSE
		SELECT p_OrderCustomerId INTO v_OrderId;
	END IF;
  
-- Thêm chi tiết đơn hàng vào bảng CustomerOrderDetail
  INSERT INTO CustomerOrderDetail (CustomerOrderId, SKU, Quantity, Price)
  VALUES (v_OrderId,
          p_SKU,
          p_Quantity,
          p_Price);
   SELECT v_OrderId as OrderId;
   commit;
END