Professional Documents
Culture Documents
-- Kho
IF(@Type = 'MAKHO')
BEGIN
IF EXISTS(SELECT * FROM dbo.Kho WHERE dbo.Kho.MAKHO = @Code)
RETURN 1; -- Mã kho tồn tại ở phân mảnh hiện tại
ELSE IF EXISTS(SELECT * FROM LINK1.QLVT_DATHANG.dbo.Kho AS KHO WHERE
KHO.MAKHO = @Code)
RETURN 2; -- Mã Kho tồn tại ở phân mảnh khác
END
IF(@Type = 'TENKHO')
BEGIN
IF EXISTS(SELECT * FROM dbo.Kho WHERE dbo.Kho.TENKHO = @Code)
RETURN 1; -- Tên kho tồn tại ở phân mảnh hiện tại
ELSE IF EXISTS(SELECT * FROM LINK1.QLVT_DATHANG.dbo.Kho AS KHO WHERE
KHO.TENKHO = @Code)
RETURN 2; -- Tên Kho tồn tại ở phân mảnh khác
END
-- Đặt hàng
IF(@Type = 'MasoDDH')
BEGIN
IF EXISTS(SELECT * FROM dbo.DatHang WHERE dbo.DatHang.MasoDDH = @Code)
RETURN 1; -- Mã DDH tồn tại ở phân mảnh hiện tại
ELSE IF EXISTS(SELECT * FROM LINK1.QLVT_DATHANG.dbo.DatHang AS DH WHERE
DH.MasoDDH = @Code)
RETURN 2; -- Mã DDH tồn tại ở phân mảnh khác
END
-- Phiếu Xuất
IF(@Type = 'MAPX')
BEGIN
IF EXISTS(SELECT * FROM dbo.PhieuXuat WHERE dbo.PhieuXuat.MAPX = @Code)
RETURN 1; -- Mã PX tồn tại ở phân mảnh hiện tại
ELSE IF EXISTS(SELECT * FROM LINK1.QLVT_DATHANG.dbo.PhieuXuat AS PX
WHERE PX.MAPX = @Code)
RETURN 2; -- Mã PX tồn tại ở phân mảnh khác
END
-- Phiếu Nhập
IF(@Type = 'MAPN')
BEGIN
IF EXISTS(SELECT * FROM dbo.PhieuNhap WHERE dbo.PhieuNhap.MAPN = @Code)
RETURN 1; -- Mã PN tồn tại ở phân mảnh hiện tại
ELSE IF EXISTS(SELECT * FROM LINK1.QLVT_DATHANG.dbo.PhieuNhap AS PN
WHERE PN.MAPN = @Code)
RETURN 2; -- Mã PN tồn tại ở phân mảnh khác
END
BEGIN TRAN
IF EXISTS(SELECT * FROM LINK1.QLVT_DATHANG.dbo.NhanVien WHERE MANV =
@MANV)
BEGIN
UPDATE LINK1.QLVT_DATHANG.dbo.NhanVien
SET TrangThaiXoa = 0
WHERE MANV = @MANV;
UPDATE dbo.NhanVien
SET TrangThaiXoa = 1
WHERE MANV = @MANV;
END
ELSE
BEGIN
INSERT INTO LINK1.QLVT_DATHANG.dbo.NhanVien (MANV, HO, TEN,
DIACHI, NGAYSINH, LUONG, MACN, TrangThaiXoa)
SELECT MANV, HO, TEN, NV.DIACHI, NGAYSINH, LUONG, MACN = @MACN,
TRANGTHAIXOA
FROM dbo.NhanVien as NV
WHERE MANV = @MANV;
UPDATE dbo.NhanVien
SET TrangThaiXoa = 1
WHERE MANV = @MANV;
END
COMMIT TRAN;
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0)
BEGIN
ROLLBACK TRAN;
END;
THROW;
END CATCH
// ĐĂNG NHẬP
CREATE PROC [dbo].[SP_DANGNHAP]
@TENLOGIN NVARCHAR (50)
AS
DECLARE @TENUSER NVARCHAR(50)
SELECT @TENUSER=NAME FROM sys.sysusers WHERE sid = SUSER_SID(@TENLOGIN)
// GET THÔNG TIN NHÂN VIÊN (HỖ TRỢ FORM REPORT CỦA CÂU 5)
CREATE PROC [dbo].[SP_ThongTinNhanVien]
@MANV INT
AS
BEGIN
SELECT MANV, HO + ' ' + TEN AS HOTEN, NGAYSINH, DIACHI, LUONG, MACN
FROM dbo.NhanVien
WHERE MANV = @MANV
END
AS
EXEC SP_DROPUSER @USRNAME
EXEC SP_DROPLOGIN @LGNAME
IF(@TYPE = 'EXPORT')
BEGIN
IF EXISTS(SELECT MAVT FROM dbo.CTPX WHERE dbo.CTPX.MAVT = @MAVT)
BEGIN
UPDATE dbo.Vattu SET SOLUONGTON = SOLUONGTON - @SOLUONG
WHERE MAVT= @MAVT
RETURN 1
END
ELSE
RETURN 0
END
END
// REPORT
// HOẠT ĐỘNG CỦA NHÂN VIÊN
CREATE PROC [dbo].[SP_RP_HoatDongCuaNhanVien]
@MANV INT, @FROM DATE, @TO DATE, @LOAI CHAR
AS
BEGIN
IF (@LOAI = 'N')
BEGIN
SELECT FORMAT(PN.NGAY,'MMMM yyyy') AS THANGNAM, -- Group theo mẫu
PN.NGAY, PN.MAPN AS MAPHIEU, N'Không có' AS HOTENKH,
TENVT, TENKHO, CTPN.SOLUONG, CTPN.DONGIA, THANHTIEN = SOLUONG * DONGIA
FROM (SELECT MAPN, NGAY, TENKHO = (SELECT TENKHO FROM KHO WHERE
KHO.MAKHO = PNP.MAKHO) FROM dbo.PhieuNhap as PNP WHERE MANV = @MANV AND NGAY
BETWEEN @FROM AND @TO) PN,
CTPN,
(SELECT TENVT, MAVT FROM Vattu) VT
WHERE VT.MAVT = CTPN.MAVT AND CTPN.MAPN = PN.MAPN
END
ELSE
BEGIN
SELECT FORMAT(PX.NGAY,'MMMM yyyy') AS THANGNAM, -- Group theo mẫu
PX.NGAY, PX.MAPX AS MAPHIEU, PX.HOTENKH, TENVT,
TENKHO, CTPX.SOLUONG, CTPX.DONGIA, THANHTIEN = SOLUONG * DONGIA
FROM (SELECT MAPX, NGAY, HOTENKH, TENKHO = (SELECT TENKHO FROM
KHO WHERE KHO.MAKHO = PXT.MAKHO) FROM dbo.PhieuXuat as PXT WHERE MANV = @MANV AND
NGAY BETWEEN @FROM AND @TO) PX,
CTPX,
(SELECT TENVT, MAVT FROM Vattu) VT
WHERE VT.MAVT = CTPX.MAVT AND CTPX.MAPX = PX.MAPX
END
END
SELECT PX.NGAY,
XUAT = SUM(CTPX.SOLUONG * CTPX.DONGIA),
TYLEXUAT = (SUM(CTPX.SOLUONG * CTPX.DONGIA) / (SELECT
SUM(SOLUONG*DONGIA) FROM CTPX INNER JOIN PhieuXuat ON CTPX.MAPX=PhieuXuat.MAPX
WHERE NGAY BETWEEN @NGAYBD AND @NGAYKT)) INTO #PhieuXuatTemp
FROM PhieuXuat AS PX
INNER JOIN (SELECT * FROM CTPX) AS CTPX
ON PX.MAPX = CTPX.MAPX
WHERE NGAY BETWEEN @NGAYBD AND @NGAYKT
GROUP BY PX.NGAY
SELECT
ISNULL(PN.NGAY, PX.NGAY) AS NGAY, --
ISNULL(PN.NHAP, 0) AS NHAP,
ISNULL(PN.TYLENHAP, 0) AS TYLENHAP,
ISNULL(PX.XUAT, 0) AS XUAT,
ISNULL(PX.TYLEXUAT, 0) AS TYLEXUAT
FROM #PhieuNhapTemp AS PN
FULL JOIN #PhieuXuatTemp AS PX
ON PN.NGAY = PX.NGAY
ORDER BY NGAY
END