LỰA CHỌN CSDL VÀ NGÔN NGỮ LẬP TRÌNH

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân tích thiết kế hệ thống thông tin quản lý tiền gửi tại ngân hàng luận văn ths công nghệ thông tin 1 01 10 (Trang 114)

chọn Hệ quản trị CSDL và ngôn ngữ lập trình mạnh, hiện đại có thể áp dụng đƣợc khi triển khai hệ thống thật trên diện rộng. Đó là hệ quản trị CSDL chuyên nghiệp Oracle và ngôn ngữ lập trình MS.Net (cụ thể là C#.Net trên nền DotNet Framework 1.1)

4.3.1 Giới thiệu về Hệ quản trị CSDL Oracle

Hệ quản trị CSDL Oracle là một trong những hệ quản trị CSDL mạnh nhất hiện nay. Đây là hệ quản trị CSDL đƣợc áp dụng cho các hệ thống lớn bậc nhất trên thế giới nhƣ các lĩnh vực dự báo, lĩnh vực truyền thông, lĩnh vực tài chính ngân hàng, bảo hiểm, …bởi vì tính tin cậy, bảo mật cao, hỗ trợ rất tốt trong môi trƣờng mạng, tốc độ xử lý nhanh và khả năng xử lý lƣu trữ cực lớn.

CSDL Oracle cùng với thể hiện của nó (oracle instance) liên quan mật thiết và tạo thành một thể thống nhất. Kiến trúc của CSDL oracle gồm: các file dữ liệu (data fỉles), file tham số (parameter files), file điều khiển (control files), file phục hồi (redo log files), file lƣu trữ (archive file).

Trong CSDL oracle hỗ trợ ngôn ngữ SQL (Structured Query Languege) và PL/SQL.

 SQL là ngôn ngữ phi thủ tục, nó sử dụng bộ tối ƣu để xác định cách lấy dữ

liệu nhanh nhất, tối ƣu nhất. Cú pháp chung của một câu lệnh SQL là: SELECT {*| {Danh sách các truờng}{Biểu thức}}

FROM <Danh sách các table> {HAVING <Biểu thức điều kiện>} {WHERE <Biểu thức điều kiện>} {GROUP BY <Biểu thức>}

{ORDER BY <biểu thức>}{ASC|<DESC}

 PL/SQL là ngôn ngữ mở rộng của SQL, nó có cấu trúc khối nhƣ sau:

FUNCTION name ---- declaration BEGIN ---statement {EXCEPTION ---handlers} END [name] PROCEDURE name ---- declaration BEGIN

---statement {EXCEPTION

---handlers} END [name]

4.3.2 Giới thiệu về ngôn ngữ lập trình MS.Net

MS.Net là môi trƣờng lập trình bậc cao phổ biến và tiện lợi nhất hiện nay. Nó cung cấp cung cấp cho ngƣời lập trình một tập hợp rất lớn các thƣ viện lớp để sử dụng đặc biệt nó hỗ trợ rất tốt trong môi trƣờng mạng, các ứng dụng đƣợc dựa trên nền .Net Framework.

Các thành phần chính của .Net framework:

Hình 25 Các thành phần chính của .Net Framework 4.4 CẤU TRÚC CHƢƠNG TRÌNH MÔ PHỎNG 4.4 CẤU TRÚC CHƢƠNG TRÌNH MÔ PHỎNG

Hệ thống

Vào hệ thống Đổi mật khẩu

Quản lý nhóm quyền Quản lý ngƣời dùng Sao lƣu dữ liệu Công việc cuối ngày Khách hàng

Quản lý khách hàng

Thiết lập quan hệ Khách hàng – Tài khoản Quản lý tham số

Danh mục tiền tệ Danh mục lãi suất Danh mục tỷ giá quy đổi Danh mục tham số sản phẩm Danh mục mã sản phẩm

Quản lý tiền gửi Không kỳ hạn, Tiền gửi thanh toán Tạo mới tài khoản

Nộp tiền mặt vào tài khoản Rút tiền mặt từ tài khoản Chuyển khoản

Đặt lệnh thanh toán định kỳ Đặt lệnh điều chuyển vốn tự động

4.5 MỘT SỐ MÀN HÌNH CỦA HỆ THỐNG MÔ PHỎNG.

Các màn hình về Quản trị hệ thống

+ Màn hình Login vào hệ thống

+ Màn hình giao diện chính của hệ thống

+ Màn hình quản trị ngƣời dùng

+ Màn hình chạy cuối ngày

Các màn hình về tham số, danh mục

+ Màn hình khai báo lãi suất

+ Màn hình quản lý tham số sản phẩm

Các màn hình nhập liệu

+Màn hình quản lý khách hàng

+ Màn hình nộp tiền mặt vào tài khoản

+ Màn hình rút tiền mặt từ tài khoản

+ Màn hình đặt một lệnh thanh toán định kỳ

Một số màn hình tra cứu và in báo cáo

+ Màn hình tra cứu chữ ký của khách hàng

+ Màn hình in thông báo tài khoản

+ Báo cáo thông báo tài khoản in ra từ chƣơng trình

HỆ THỐNG MÔ PHỎNG

---o0o---

CỘNG HOÀ XÃ HỘI CHỦ NGHĨA VIẸT NAM

Độc lập - Tự do - Hạnh phúc

---o0o---

Hµ Néi, ngµy th¸ng n¨m 2006

Th«ng B¸o SỐ dƯ Tµi Kho¶n

KÝnh göi : (¤ng/Bµ) BUI THANH HOAI

Phßng Giao dÞch I Së Giao dÞch Ng©n hµng TMCP DEMO xin tr©n träng th«ng b¸o tµi kho¶n cña Quý kh¸ch ngµy 15-09-2006

Tªn tµi kho¶n Lo¹i tiÒn tÖ Sè tµi kho¶n Số dư

HCC«ng ty BUI THANH HOAI VND 12010000000009 217709760

Mäi th¾c m¾c cña quý kh¸ch xin liªn hÖ: Sè ®iÖn tho¹i: (04) 9341344

Fax: (04) 9351292

+ Báo cáo lệnh nộp tiền mặt

+ Báo cáo thông báo lệnh thanh toán định kỳ

4.6 KẾT QUẢ ĐẠT ĐƢỢC CỦA HỆ THỐNG MÔ PHỎNG

Hệ thống mô phỏng đƣợc xây dựng ở trên bƣớc đầu đã giải quyết đƣợc những chức năng cơ bản của việc quản lý Tiền gửi, giúp cho việc quản lý một cách linh hoạt, thuận tiện, nhanh chóng và chính xác.

Xây dựng hệ thống mô phỏng cho hệ thống quản lý tiền gửi với các module nhƣ: quản lý khách hàng, quản lý tham số, quản lý hệ thống, các giao dịch mở tài khoản TGKKH, TGTT, thực hiện các giao dịch gửi tiền, rút tiền, chuyển khoản, đặt các lệnh điều chuyển tự động, các lệnh thanh toán định kỳ, module xử lý cuối ngày, tính lãi, … đƣợc xây dựng theo mô hình tập trung dữ liệu. Nhƣ vậy luận văn đã xây dựng đƣợc hệ thống mô phỏng cho các phân tích thiết kế đã nêu ở chƣơng trƣớc.

Chƣơng trình giao diện đƣợc viết bằng ngôn ngữ MS.Net, các Package trên CSDL Oracle cũng đã đạt đƣợc những kết quả nhất định về mặt kỹ thuật.

KẾT LUẬN

Hệ thống quản lý tiền gửi là một hệ thống lớn khá phức tạp. Sự phức tạp ở tính rộng lớn của dữ liệu vì dữ liệu đƣợc tập trung và đƣợc hạch toán chính xác theo thời gian, theo địa bàn và theo các sản phẩm dịch vụ đa dạng .

Nội dung của luận văn đã đạt đƣợc một số kết quả nhƣ sau:

- Luận văn đã nêu đƣợc các kiến thức về phân tích thiết kế có cấu trúc từ phƣơng

pháp phân tích PTTK hệ thống, các mô hình phân tích chức năng nghiệp vụ, mô hình quan hệ cho đến các phƣơng pháp, chiến lƣợc thiết kế, các kỹ thuật sử dụng trong thiết kế CSDL

- Bằng việc nghiên cứu nghiêm túc kết hợp với kinh nghiệm xây dựng hệ thống

thực tế, tác giả đã xây dựng đƣợc hệ thống thông tin quản lý tiền gửi với những đặc điểm nổi bật sau:

o Tất cả tài khoản đƣợc tập trung tại trung tâm, do đó dễ dàng đƣa ra các

dịch vụ nhƣ gửi một nơi, rút nhiều nơi, chuyển khoản, …

o Hệ thống đáp ứng đƣợc hầu hết các quy trình nghiệp vụ tiền gửi. Ngoài

ra, các quy trình nhƣ thanh toán lƣơng, điều chuyển vốn tự động, thanh toán định kỳ là những quy trình linh hoạt kết hợp với việc tham số hoá sản phẩm có thể đƣa ra đƣợc các dịch vụ mới rất mềm dẻo, dễ dàng và có sức thu hút đối với khách hàng.

o Mỗi một giao dịch viên đều đƣợc cấp một hạn mức nhất định, chỉ các giao dịch vƣợt quá hạn mức cho phép thì mới cần đến cấp có thẩm quyền cao hơn phê duyệt (không phải lúc nào cũng qua 2 bƣớc)

o Chữ ký của khác hàng cũng đƣợc tích hợp tập trung giúp cho việc tra cứu

chữ ký khách hàng ở những địa điểm khác nhau là dễ dàng.

Tóm lại, việc xây dựng hệ thống Quản lý tiền gửi đƣợc nghiên cứu và đƣa ra trong luận văn nhằm giải quyết một số những tồn tại thực tế của hệ thống quản lý tiền gửi của một số NHTM tại Việt Nam, có tính tổng thể, quy mô lớn, có tính hoàn thiện, đặc biệt đáng đƣợc xem xét áp dụng đối với một số NHTM chƣa có điều kiện thực hiện dự án Hiện đại hoá, hoặc đang thực hiện giai đoạn hoàn chỉnh hệ thống hiện thời. Đây không chỉ là việc hoàn thành thành công luận văn thạc sỹ mà còn giúp cho tác giả tập trung nghiên cứu và học tập ứng dụng vào thực tế công việc chuyên môn phục vụ cho cơ quan đồng thời đem lại lợi ích cho cơ quan thông qua nghiên cứu này.

Trong thời gian tới, tác giả sẽ tiếp tục nghiên cứu để có thể đƣa ra đƣợc hệ thống tốt hơn, linh hoạt hơn đáp ứng yêu cầu Ngân hàng hiện đại.

TÀI LIỆU THAM KHẢO Tiếng Việt

1. Merise, Phương pháp thiết kế HTTT tin học hoá phục vụ quản lý doanh nghiệp.

Nhà xuất bản Khoa học kỹ thuật, 1994

2. Phạm Hữu Khang, Phƣơng Lan, Kỹ thuật lập trình ứng dụng C#.Net toàn tập (3

tập), NXB Lao động – Xã hội

3. Vũ Duy Lợi, Mạng thông tin máy tính, 2002

4. Lê Văn Phùng, Bài giảng cơ sở dữ liệu, nhà xuất bản Lao động – Xã hội, 2004

5. Lê Văn Phùng, Phân tích và thiết kế hệ thống thông tin, kiến thức và thực hành.

Nhà xuất bản Lao động – Xã hội, 2004

6. Hoàng Xuân Quế, Tạp chí tin học Ngân hàng số 7/2005, Thách thức cạnh tranh

dịch vụ ngân hàng khi hội nhập

7. Roger.S.Pressman, Kỹ nghệ phần mềm (3 tập). Nhà xuất bản giáo dục, 1999

8. SilverLake, Tài liệu giới thiệu Hệ thống ngân hàng cốt lõi, SilverLake

Coporation, 2001

9. Vũ Đức Thi, Cơ sở dữ liệu, Kiến thức và thực hành, NXB Thống kê, 1997

10.Đinh Mạnh Tƣờng, Cấu trúc dữ liệu và thuật toán, 2000

11.Nguyễn Văn Vị, Phân tích thiết kế hệ thống thông tin hiện đại, NXB Thống kê,

2002

12.Ngô Trung Việt, Phân tích và thiết kế tin học Hệ thống quản lý kinh doanh nghiệp vụ. NXB Giao thông vận tải, 1995

Tiếng Anh

13.Abraham Silberschatz, Henry F.Korth, S. Sudarshan: Database System

Concepts , McGraw-Hill, 2002

14.Christian Bauwens, Ellen Gravina: Training Oracle 8i, Oracle Corporation

15.David Kroenke, Richard Hatch, Management Information Systems, McCraw –

Hill, Watsonville 1994

16.Fred R.McFadden, Jefrsy A.Hoffer, Modern Database Management. Fourth

Edition, Benjamin/Cummings Publishing Company, Inc.RedWood City, California, 1994

17.Genetic Computer School, Trainee’s material, Analysis and Design of

Information Systems, 2003

18.Joseph C.Johnson, OCP-Oracle 9i performance tuning study guide (with CD-

19.Merle P.Martin, Analysis and Design of Business Information Systems, Second Edition. Pretince Hall, New Jersy 1995

20.Oracle9i: Program with PL/SQL student Guide. Volume 1,2,3, Oracle

coporation 2001

21.SBV, Information Technology Department of the Bank, VietNam Banking 2005

Trang Web

22.Các dịch vụ về tiền gửi của một số ngân hàng, Website:

http://www.bidv.com.vn, http://www.icb.com.vn, http://www.hsbc.com,

http://www.ocbc.com.sg, http://www.vietcombank.com.vn, …

23.Website hỗ trợ kỹ thuật của Oracle: http://metalink.oracle.com

PHỤ LỤC

Một số thủ tục mã nguồn của chƣơng trình: Thủ tục chạy cuối ngày (PL/SQL oracle) procedure Run_EOD(p_Date date) is

cursor c_DDMAST is

select * from ddmast; cursor c_DDMEMO is

select * from ddmemo; cursor c_DDAFTM is

select * from ddaftm; cursor c_DDSWEP is

select * from ddswep;

v_DDMAST c_DDMAST%rowtype; v_DDMEMO c_DDMEMO%rowtype; v_DDAFTM c_DDAFTM%rowtype; v_DDSWEP c_DDSWEP%rowtype; v_tmp number(15,2); v_tmpQuydoi number(15,9); v_id number; v_Sodu number(15,2); v_SoduCapnhat number(15,2); v_LoaiTien1 varchar2(4); v_Loaitien2 varchar2(4); v_Tylelai number(15,9); v_TienLai number(15,2); v_TongLaiCapnhat number(15,2); result varchar2(100); begin result := '0';

-- Cap nhat lai truong status trong ddtnew truoc khi insert vao DDmast

update ddtnew set status = 1;

-- Xu ly cac bang DDTNEW vao DDMAT

insertinto DDMAST (select * from ddtnew); --Cap nhat so du ngay truoc

update ddmast set SODUNGAYTRUOC = SODUHIENTAI;

open c_ddmemo; loop

fetch c_ddmemo into v_ddmemo; exitwhen c_ddmemo%notfound; update ddmast set

NGAYLDEPOSIT = v_ddmemo.NGAYLDEPOSIT, TIENLDEPOSIT = v_ddmemo.TIENLDEPOSIT, SODUHIENTAI = v_ddmemo.SODUHIENTAI, SODUNHOTHU = v_ddmemo.SODUNHOTHU

where TAIKHOAN = v_ddmemo.TAIKHOAN and LOAITK = v_ddmemo.LOAITK; endloop;

-- Xu ly cac lenh AFT

open c_ddaftm; loop

fetch c_ddaftm into v_ddaftm; exitwhen c_ddaftm%NotFound;

if (to_date(to_char(v_ddaftm.NGAYHETHL,'dd/mm/yyyy'),'dd/mm/yyyy') >= to_date(to_char(p_Date,'dd/mm/yyyy'),'dd/mm/yyyy'))

and (

(to_date(to_char(v_ddaftm.NGAYCHUYENDT,'dd/mm/yyyy'),'dd/mm/yyyy') = to_date(to_char(p_Date,'dd/mm/yyyy'),'dd/mm/yyyy'))

or (to_number(to_char(v_ddaftm.NGAYCHUYENDT,'dd')) = v_ddaftm.NGAYTRONGTHANG)

) then

-- thoa man dieu kien: lenh van con hieu luc + hom nay la ngay thuc hien lenh

-- kiem tra so du tai khoan co du de thuc hien khong.

select nvl(SODUHIENTAI,0) into v_tmp from ddmast where TAIKHOAN = v_ddaftm.TAIKHOANGHINO;

if v_tmp < nvl(v_ddaftm.SOTIENCHUYEN,0) then

--Khong du so du de chuyen. Cap nhat vao bang nhat ky chay batch

insertinto BATCHLOG(TAIKHOANNO,LOAITKNO,LOAITIENTKNO,UNGDUNG,STATUS,TAIK HOANCO,LOAITKCO,LOAITIENTKCO,SOIDGD,SOTIEN,NGAY) values (v_ddaftm.TAIKHOANGHINO,v_ddaftm.LOAITKGHINO,v_ddaftm.LOAITIENTKGHINO ,'AFT',0,v_ddaftm.TAIKHOANGHICO,

v_ddaftm.LOAITKGHICO,ddaftm.loaitientkghico,v_ddaftm.ID,v_ddaftm.SOTIENCHUYEN ,p_Date);

else

-- thuc hien lenh AFT khi du so du

if (v_ddaftm.LOAITIENTKGHINO = v_ddaftm.LOAITIENTKGHICO) then

-- Cung loai tien ko phai quy doi

update ddmast set SODUHIENTAI = nvl(SODUHIENTAI,0) - nvl(v_ddaftm.SOTIENCHUYEN,0)

where TAIKHOAN = v_ddaftm.TAIKHOANGHINO;

update ddmast set SODUHIENTAI = nvl(SODUHIENTAI,0) + nvl(v_ddaftm.SOTIENCHUYEN,0)

where TAIKHOAN = v_ddaftm.TAIKHOANGHICO;

update ddaftm set TONGSODACHUYEN = nvl(TONGSODACHUYEN,0) + nvl(v_ddaftm.SOTIENCHUYEN,0)

where ID = v_ddaftm.ID;

--Ghi vao nhat ky giao dich trong TM Tran

select seq_tmtran.nextvalinto v_id from dual; insertinto TMTRAN(MANGUOISUDUNG,STTGIAODICH,NGAYENTER,Chinhanhphucvu, Chinhanhgiutk,LOAIUNGDUNG,Sotiengoc,LOAITIENGOC,SOTIENGDTK,Loaitiengdtk,T AIKHOAN,id,noco) values

('HO',v_id,p_Date,'000',v_ddaftm.CHINHANHTKGHINO,v_ddaftm.LOAITKGHINO,v_ddaf tm.SOTIENCHUYEN,v_ddaftm.LOAITIENTKGHINO, v_ddaftm.SOTIENCHUYEN,v_ddaftm.LOAITIENTKGHINO,v_ddaftm.TAIKHOANGHIN O,v_id,'D'); insertinto TMTRAN(MANGUOISUDUNG,STTGIAODICH,NGAYENTER,Chinhanhphucvu, Chinhanhgiutk,LOAIUNGDUNG,Sotiengoc,LOAITIENGOC,SOTIENGDTK,Loaitiengdtk,T AIKHOAN,id,noco) values

('HO',v_id,p_Date,'000',v_ddaftm.CHINHANHTKGHICO,v_ddaftm.LOAITKGHICO,v_ddaf tm.SOTIENCHUYEN,v_ddaftm.LOAITIENTKGHICO, v_ddaftm.SOTIENCHUYEN,v_ddaftm.LOAITIENTKGHICO,v_ddaftm.TAIKHOANGHIC O,v_id,'C'); else

-- Khac loai tien, phai quy doi truoc khi chuyen

v_tmpQuydoi :=

to_number(pck_ssfxrt.getquydoi_tygiaban(v_ddaftm.LOAITIENTKGHINO,v_ddaftm.LOAI TIENTKGHICO));

update ddmast set SODUHIENTAI = nvl(SODUHIENTAI,0) - nvl(v_ddaftm.SOTIENCHUYEN,0)

where TAIKHOAN = v_ddaftm.TAIKHOANGHINO;

update ddmast set SODUHIENTAI = nvl(SODUHIENTAI,0) + nvl(v_ddaftm.SOTIENCHUYEN,0)*nvl(v_tmpQuydoi,1)

where TAIKHOAN = v_ddaftm.TAIKHOANGHICO;

update ddaftm set TONGSODACHUYEN = nvl(TONGSODACHUYEN,0) + nvl(v_ddaftm.SOTIENCHUYEN,0)

where ID = v_ddaftm.ID;

--Ghi nhat ky giao dich trong TMTRAN

select seq_tmtran.nextvalinto v_id from dual; insertinto TMTRAN(MANGUOISUDUNG,STTGIAODICH,NGAYENTER,Chinhanhphucvu, Chinhanhgiutk,LOAIUNGDUNG,Sotiengoc,LOAITIENGOC,SOTIENGDTK,Loaitiengdtk,T AIKHOAN,id,noco) values

('HO',v_id,p_Date,'000',v_ddaftm.CHINHANHTKGHINO,v_ddaftm.LOAITKGHINO,v_ddaf tm.SOTIENCHUYEN,v_ddaftm.LOAITIENTKGHINO, v_ddaftm.SOTIENCHUYEN,v_ddaftm.LOAITIENTKGHINO,v_ddaftm.TAIKHOANGHIN O,v_id,'D'); insertinto TMTRAN(MANGUOISUDUNG,STTGIAODICH,NGAYENTER,Chinhanhphucvu,

Chinhanhgiutk,LOAIUNGDUNG,Sotiengoc,LOAITIENGOC,SOTIENGDTK,Loaitiengdtk,T AIKHOAN,id,noco) values

('HO',v_id,p_Date,'000',v_ddaftm.CHINHANHTKGHICO,v_ddaftm.LOAITKGHICO,v_ddaf tm.SOTIENCHUYEN,v_ddaftm.LOAITIENTKGHINO,

nvl(v_ddaftm.SOTIENCHUYEN,0)*nvl(v_tmpQuydoi,1),v_ddaftm.LOAITIENTKGHICO,v _ddaftm.TAIKHOANGHICO,v_id,'C');

endif; endif;

endif; endloop;

-- Xu ly cac lenh SWEEP

open c_DDSWEP; loop

fetch c_DDSWEP into v_DDSWEP; exitwhen c_DDSWEP%NOTFOUND;

Select SODUHIENTAI,LOAITIEN into v_Sodu,v_Loaitien1 from DDMAST where

TAIKHOAN = v_ddswep.TAIKHOANPHU;

Select LOAITIEN into v_LoaiTien2 from DDMAST where TAIKHOAN = v_ddswep.TAIKHOANCHINH;

if(nvl(v_sodu,0) > v_ddswep.tran) then

if (v_LoaiTien1 = v_LoaiTien2) then -- cung 1 loai tien. Ko can quy doi

update ddmast set SODUHIENTAI = v_ddswep.tran where TAIKHOAN = v_ddswep.TAIKHOANPHU;

update ddmast set SODUHIENTAI = nvl(SODUHIENTAI,0) + nvl(v_Sodu,0) - nvl(v_ddswep.tran,0) - nvl(v_ddswep.PHIGDSWEEP,0)

where TAIKHOAN = v_ddswep.TAIKHOANCHINH; --Ghi vao nhat ky giao dich trong TM Tran

select seq_tmtran.nextvalinto v_id from dual; insertinto

TMTRAN(MANGUOISUDUNG,STTGIAODICH,NGAYENTER,Chinhanhphucvu,

Chinhanhgiutk,LOAIUNGDUNG,Sotiengoc,LOAITIENGOC,SOTIENGDTK,Loaitiengdtk,T AIKHOAN,id,noco) values

('HO',v_id,p_Date,'000','',v_ddswep.LOAITKPHU,nvl(v_Sodu,0) - nvl(v_ddswep.tran,0),v_LoaiTien1, nvl(v_Sodu,0) - nvl(v_ddswep.tran,0),v_LoaiTien1,v_ddswep.TAIKHOANPHU,v_id,'D'); insertinto TMTRAN(MANGUOISUDUNG,STTGIAODICH,NGAYENTER,Chinhanhphucvu, Chinhanhgiutk,LOAIUNGDUNG,Sotiengoc,LOAITIENGOC,SOTIENGDTK,Loaitiengdtk,T AIKHOAN,id,noco) values

('HO',v_id,p_Date,'000','',v_ddswep.LOAITKCHINH,nvl(v_Sodu,0) - nvl(v_ddswep.tran,0) - nvl(v_ddswep.PHIGDSWEEP,0),

v_LoaiTien2,nvl(v_Sodu,0) - nvl(v_ddswep.tran,0) - nvl(v_ddswep.PHIGDSWEEP,0),

v_LoaiTien2,v_ddswep.TAIKHOANCHINH,v_id,'C'); else

-- Khac loai tien phai quy doi

v_tmpQuydoi :=

to_number(pck_ssfxrt.getquydoi_tygiaban(v_LoaiTien1,v_LoaiTien2)); v_SoduCapnhat := nvl(v_Sodu,0) - nvl(v_ddswep.tran,0) - nvl(v_ddswep.PHIGDSWEEP,0);

v_SoduCapnhat := v_SoduCapnhat * nvl(v_tmpQuydoi,1);

update ddmast set SODUHIENTAI = v_ddswep.tran where TAIKHOAN = v_ddswep.TAIKHOANPHU; update ddmast set SODUHIENTAI = v_SoduCapnhat

where TAIKHOAN = v_ddswep.TAIKHOANCHINH; --Ghi nhat ky vao TMTran

select seq_tmtran.nextvalinto v_id from dual; insertinto

TMTRAN(MANGUOISUDUNG,STTGIAODICH,NGAYENTER,Chinhanhphucvu,

Chinhanhgiutk,LOAIUNGDUNG,Sotiengoc,LOAITIENGOC,SOTIENGDTK,Loaitiengdtk,T AIKHOAN,id,noco) values

('HO',v_id,p_Date,'000','',v_ddswep.LOAITKPHU,nvl(v_Sodu,0) - nvl(v_ddswep.tran,0),v_LoaiTien1,

nvl(v_ddswep.tran,0),v_LoaiTien1,v_ddswep.TAIKHOANPHU,v_id,'D'); insertinto TMTRAN(MANGUOISUDUNG,STTGIAODICH,NGAYENTER,Chinhanhphucvu, Chinhanhgiutk,LOAIUNGDUNG,Sotiengoc,LOAITIENGOC,SOTIENGDTK,Loaitiengdtk,T AIKHOAN,id,noco) values

('HO',v_id,p_Date,'000','',v_ddswep.LOAITKCHINH,nvl(v_Sodu,0) - nvl(v_ddswep.tran,0) - nvl(v_ddswep.PHIGDSWEEP,0), v_LoaiTien1,v_Soducapnhat,v_LoaiTien2,v_ddswep.TAIKHOANCHINH,v_id,'C'); endif; endif; endloop; -- Tinh lai open c_ddmast; loop

fetch c_ddmast into v_ddmast; exitwhen c_ddmast%notfound; --Lay ty le lai theo loai san pham

select TYLELAI into v_Tylelai from DDPAR2 where LOAISP = v_ddmast.LOAISP; if (nvl(v_Tylelai,0) = 0) then

-- Khong tim thay ty le lai tuong ung voi ma sp

insertinto

BATCHLOG(TAIKHOANNO,LOAITKNO,LOAITIENTKNO,UNGDUNG,STATUS,DIEN GIAI,NGAY)

values (v_ddmast.TAIKHOAN,v_ddmast.LOAITK,v_ddmast.LOAITIEN,'LAI',0, 'Khong tim thay lai suat (trong bang DDPAR2) tuong ung voi MASP:' ||

v_ddmast.LOAISP,p_Date); else

-- Thuc hien tinh lai va cap nhat vao lai du chi (tinh theo 30 ngay / thang )

v_Tienlai := v_Tylelai * v_ddmast.SODUHIENTAI/30;

update ddmast set LAICONGDON = nvl(LAICONGDON,0) + v_tienlai,LAIDNAMDGIO = nvl(LAIDNAMDGIO,0) + v_Tienlai, LAINGAYHIENTAI = v_Tienlai

where TAIKHOAN = v_ddmast.TAIKHOAN; endif;

if(to_char(p_Date,'dd') = '01') then

update ddmast set SODUHIENTAI = nvl(SODUHIENTAI,0) + nvl(LAICONGDON,0),LAICONGDON = 0

where TAIKHOAN = v_ddmast.TAIKHOAN; --Cap nhat vao TMTRAN

select seq_tmtran.nextvalinto v_id from dual;

select LAICONGDON into v_TongLaiCapnhat from ddmast where TAIKHOAN = v_ddmast.TAIKHOAN; insertinto TMTRAN(MANGUOISUDUNG,STTGIAODICH,NGAYENTER,Chinhanhphucvu, Chinhanhgiutk,LOAIUNGDUNG,Sotiengoc,LOAITIENGOC,SOTIENGDTK,Loaitiengdtk,T AIKHOAN,id,noco) values

('HO',v_id,p_Date,'000','',v_ddmast.LOAITK,nvl(v_TongLaiCapnhat,0),v_ddmast.LOAITIEN ,nvl(v_TongLaiCapnhat,0)

,v_ddmast.LOAITIEN,v_ddmast.TAIKHOAN,v_id,'C'); endif;

endloop;

-- Dong cac cursor

Close c_ddmast; close c_ddmemo; Close c_ddaftm; Close c_ddswep; -- Xoa du lieu

deletefrom ddtnew; deletefrom ddmemo; commit;

result :='1'; Exception

whenothersthen rollback;

raise_application_error(-20001,sqlerrm);

Một phần của tài liệu (LUẬN văn THẠC sĩ) phân tích thiết kế hệ thống thông tin quản lý tiền gửi tại ngân hàng luận văn ths công nghệ thông tin 1 01 10 (Trang 114)

Tải bản đầy đủ (PDF)

(141 trang)