1. Trang chủ
  2. » Công Nghệ Thông Tin

xây dựng ứng dụng quản lí kế toán bằng c 2005 part3

130 294 0
Tài liệu được quét OCR, nội dung có thể không chính xác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Xây Dựng Ứng Dụng Quản Lí Kế Toán Bằng C 2005 Part3
Trường học University of Science and Technology of Hanoi
Chuyên ngành Accounting Application Development
Thể loại Thesis
Thành phố Hanoi
Định dạng
Số trang 130
Dung lượng 39,45 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

o * k Chương 6: Phần kế toán xuất - nhập - tổn ams Bằng cách thêm hai cột, cột thứ nhất ứng với trường hợp người sử dụng nhập số lượng sản phẩm bị hư hồng BadQtty, cột thứ hai là cột

Trang 1

268 Chương 6: Phần kế toán xuất - nhập - tén

WHERE I.ImportId = D.ImportId

AND ImportDate between @StartDate and @EndDate

GROUP BY StockId, ProductId UNION ALL

/{T6ng hop méu tin tt bang Exports va ExportDetails SELECT StockId, ProductId, 0, 0,

isnull(SUM(Quantity),0) As ExportQuantity

FROM Exports E , ExportDetails D

WHERE E ExportId = D.Exportid

AND ExportDate between @StartDate and @EndDate

GROUP BY StockId, ProductId

}

!1Tổng hợp mẩu tin vao bang MonthlyInventoryControl

INSERT INTO MonthlyInventoryControl

(StockId, ProductId, BeginQuantity, ImportQuantity,

ExportQuantity, EndQuantity) SELECT StockId, ProductId,

SUM (BeginQuantity) AS BeginQuantity, SUM(ImportQuantity) AS ImportQuantity,

SUM(ExportQuantity) AS ExportQuantity,

SUM(BeginQuantity) + SUM(ImportQuantity)

- SUM(ExportQuantity) AS EndQuantity FROM ExportAndImportQuantity

GROUP BY StockId, Productld;

CREATE PROC udsInventoryControl;3

+¡ Khai báo tham số

// Xa mau tin dang tôn tai trong bang MonthlyInventoryControl

DELETE FROM MonthlyInventoryControl

WHERE Product Id=@ProductId;

(1 Khai báo biểu thức bằng ExportAndimporiQuantiy

WITH ExportAndImportQuantity

AS

Trang 2

Chương 6: Phân kế toán xuất - nhập - tổn 269

(

//Téng hop méu tin tit bang CloseMonthInventoryControlDetails

SELECT StockId, ProductiId, EndQuantity As

BeginQuantity,

0 As ImportQuantity, 0 As ExportQuantity

FROM CloseMonthInventoryControlDetails

WHERE CloseMonth = @PreviousMonth

AND Product Id=@ProductId

UNION ALL

/{Téng hop méu tin tit bdng Imports va ImportDetails

SELECT StockId, ProductId, 0,

isnull(SUM(Quantity),0) As ImportQuantity, 0

FROM Imports I, ImportDetails D

WHERE I ImportId = D.ImportId

AND ProductId=@ProductId

AND ImportDate between @StartDate and @EndDate

GROUP BY StockId, ProductId

UNION ALL

/1Téng hop méu tin tit bang Exports va ExportDetails

SELECT StockId, ProductId, 0, 0,

isnull (SUM(Quantity),0) As ExportQuantity

FROM Exports E ; ExportDetallsD

WHERE E.Exbort1d = D.ExportTd

AND Product Id=@ProductId

AND ExportDate between @StartDate and @EndDate

GROUP BY StockId, ProductId

)

£ITổng hợp mẩu tin vao bang MonthlyInventoryControl

INSERT INTO MonthlyInventoryControl

(StockId, ProductId, BeginQuantity, ImportQuantity,

ExportQuantity, EndQuantity)

SELECT StockId, ProductId,

SUM (BeginQuantity) AS BeginQuantity,

SUM (ImportQuantity) AS ImportQuantity,

SUM(ExportQuantity) AS ExportQuantity,

SUM(BeginQuantity) + SUM(ImportQuantity)

- SUM(ExportQuantity) AS EndQuantity

FROM ExportAndimportQuantity

WHERE Product Id=@ProductId

GROUP BY StockId, ProductId;

GO

Chú ý: Khi thực hiện chức năng này, chương trình sẽ tự tổng hợp xuất nhập và tính tôn kho cho tất cả sản phẩm trong nhiều kho

Chẳng hạn, bạn chọn vào tùy chọn Selected Product réi tiép tue chon

tên sản phẩm và nhấn nut OK thi kết quả sẽ trình bày như hình 6-24

Trang 3

Chương 6: Phần kế toán xuất - nhập - tồn

Fe GeneralLedger Account Receivable Account Payable Inventory Controls Directories Close Month Rights Heb

Inventory Controls 7 Month 012007 Specie Marth @ Calcuste AP

Stat Date: [01/0cr 72007 =] End Date [3170c1/2007 = erence ok a

CaedalelClo CC AIPodeh (S SastedPodel Calculate

:hđng cho điện hoạ đ động

2h ding cho Gién thos! di dong

Hình 6-24: Tổng hợp dữ liệu xuất nhập uà tính tồn kho của một sản phẩm

Chú $: Đề tạo danh sách tháng và năm trên điều khiển ComboBox

dùng cho lựa chọn tháng và năm trong quá khứ, bạn khai báo phương thức InitiateMonth như ví dụ 6-41 và gọi trong biến cố Load của form

Trang 4

Chương 6: Phần kế toán xuất - nhập - tồn 271

4 CẬP NHẬT SỐ LƯỢNG THỰC

Số lượng sản phẩm trong kho có thể khác với số lượng trong sổ sách

kế toán”, nguyên nhân của sự khác biệt này là đo con số nhập và xuất thực

tế không đúng

Ngoài ra, chức năng này còn cho phép người sử dụng nhập số lượng sản phẩm bị hư hỏng vào cột BadProductInStock thuộc bảng ProductInStocks phục vụ cho mục đích quản lý

Chú ý: Đề tìm hiểu chức năng này, bạn bắt đầu trình đơn Inventory

Controls | Update Product In Stock để kích hoạt form có tên

frmUpdateStock.cs, các thủ tục lưu trong tap tin

Hinh 6-25: Giao dién frmUpdateStock.cs

Dữ liệu dùng để điều chỉnh số lượng hiện tại trong kho phải được tổng

hợp trong chức năng trên

4.2 Khai báo

Tương tự như chức năng trên, bạn có thể trình bày tình hình xuất

nhập và tôn kho của tháng hiện hành bằng cách gọi thủ tục nội tại có tên

udsProductStatus với cấu trúc như ví dụ 6-42 trong phương thức FillDataToGridView

CREATE PROC udsProductStatus

@StockId CHAR(5)

Trang 5

fA? 272 Chương 6: Phan ké todn xudt - nhap - tén

AS

SELECT S.StockId, StockName, I-ProductId,

ProductNameInVietnamese, BeginQuantity AS BeginQtty,

INNER JOIN Stocks S ON S.StockId = I.StockId

INNER JOIN Product InStocks PIS

ON I.StockId = PIS.StockId

AND PIS ProductId = I ProductId

WHERE S.StockId = case @StockId when ''

then S.StockId else @StockId end

Go

'Rhi gọi frmUpdateStock, tình hình xuất nhập va tồn kho trong tháng

hiện hành trình bày như hình 6-26

Trang 6

R o * k

Chương 6: Phần kế toán xuất - nhập - tổn ams

Bằng cách thêm hai cột, cột thứ nhất ứng với trường hợp người sử

dụng nhập số lượng sản phẩm bị hư hồng (BadQtty), cột thứ hai là cột UpdateQtty, bạn khai báo đoạn chương trình sau trong phương thức ApplyStyleForColumn

if (!dataGridView.Columns.Contains("Updategtty"))

dataGridView.Columns.Add("UpdateQtty", "Update");

Để điền số lượng từ cột EndQtty hay QttyInStock vào cột Update tùy

thuộc vào tùy chọn EndQtty To QttyInStock hay QttyInStock To EndQtty,

ban khai báo đoạn chương trình trong biến cố Click của nút

f1 Duyệt qua từng mẩu tin foreach (DataGridViewRow row in dataGridView Rows)

{

1} EndQtty To QttyInStock

if (rdoEndQttyToUpdateQtty.Checked) row.Cells["UpdateQtty"].Value = row.Cells["EndQtty"].Value;

else 1} QttyInStock To EndQtty

row.Cells["UpdateQtty"].Value = row.Cells["QttyInStock"] Value;

} }

catch (Exception ex)

{

ASUTHelper ShowMessageBox (

"btnFillUpdateQtty_Click", ex);

} }

Chang han, khi bạn nhấn nút Fill Update Qity với tùy chọn là ndQtty To UpdateQtty thì kết quả trình bầy như hình 6-27

Nếu bạn nhấn nút Eill Update Qtty với tùy chọn a QttyInStock To UpdateQtty thì kết quả trình bày như hình 6-28

Trang 7

Tiindch ding cho din thoi dé |

{Tish dco in tos rg |

Trang 8

Sau khi điều chỉnh số lượng trong cột Update, nếu bạn quyết định cập

nhật số lượng theo thực tế hay sổ sách trong kho thì nhấn nút Update Tùy

vào thy chon EndQtty To QttyInStock hay QttyInStock To EndQtty, ban gọi thủ tục nội tại udsProductStatus;2 nhữ ví dụ 6-44

CREATE PROC udsProductStatus;2

#1 Khai báo tham số

UPDATE Product InStocks

SET GoodProduct InStock = @Quantity,

ModifiedBy = CURRENT_USER,

ModifiedDate = GETDATE()

WHERE StockId = @StockId

AND Productid = @ProductId

WHERE StockId = @Stockid

AND ProductId = @ProductId

object {] parameterValue = null;

parameterName = new string[4]

{"@UpdateMode", "@StockId", "@ProductId",

Trang 9

276 Chương 6: Phần kế toán xuất - nhập - tồn

"aQuantity" };

parameterValue = new object [4];

11 Duyệt qua từng mẩu tin

foreach (DataGridViewRow row in

// Khai báo biến

string productId = Convert.ToString(

row.Cells["ProductId"] Value) ; string stockId = Convert ToString(

row.Cells["StockId"].Value);

double qtty = Convert ToDouble(obj};

/{ Khai bdo va khdi tao déi tugng ASDataProvider ASDataProvider dataProvider =

TỊ Khai báo gọt phương thúc ExecuteNonQuery

đataProvi đer ExecuteNonQuery (

parameterName, parameterValue);

} } }

catch (Exception ex}

ae

ASUTHelper ShowMessageBox (

"btnCalculate_ Click", ex);

Chú ý: Bạn cần cẩn thận khi thực hiện chức năng này, do nó làm ảnh

hưởng đến báo cáo tình hình xuất nhập và tên kho.

Trang 10

Chú ý: Đây là chức năng dùng để làm tham khảo, bạn có thể loại bỏ

hay thay đổi theo quy định nào đó nhằm bảo đảm thống nhất số lượng tồn của sản phẩm trên sổ sách so với số lượng tổn thực tế trong kho

Ban có thể tham khảo diễn giải chỉ tiết của các ghỉ chú được đánh dấu

theo thứ tự như sau:

{1): Xuất nhập tổn (nventory Controls) là chức năng quản lý số

lượng nhập sản phẩm từ nhà cung cấp và xuất sản phẩm cho

khách hàng

(2): Trên sổ sách kế toán, số lượng được tính toán đựa trên dữ liệu

nhập và xuất cùng với số lượng cuối kỳ Tuy nhiên, trong thực tế

số lượng tổn thực tế tổn trong kho có thể khác với số lượng tồn

trên sổ sách.

Trang 11

Vào thời gian cuối tháng, nhân viên kế toán cần tính toán

và làm báo cáo cuối kỳ về tổn quỹ, công nợ thu của khách hàng và

chỉ cho nhà cung cấp, tình hình xuất nhập tồn,

Để kết thúc kỳ (tháng hiện hành) thì kế toán, nhân viên kế

toán phải chuyển các số đư cuối kỳ của tháng hiện hành thành số

dư đầu kỳ của tháng kế tiếp

Chúng ta đã tìm hiểu chỉ tiết 3 chức năng tương ứng với 3

phần của ứng dụng đã trình bày trong những phần trước, để cho

phép người sử dụng thực hiện chức năng chuyển số dư cuối kỳ của

tháng hiện thành số dư đầu kỳ của tháng kế tiếp, bạn cung cấp

giao điện và khai báo cùng với thủ tục nội tại tương ứng

Các vấn dé chính sẽ được đề cập:

v Chuyển số dư cuối kỳ thành số dư đầu kỳ

Thay đổi giá trị dùng chung

*ˆ Cấu hình ứng dụng

1 CHUYỂN SỐ DƯ CUỐI KỲ THÀNH SỐ DƯ

ĐẦU KỲ

Trước khi cho phép người sử dụng thực thi chức năng chuyển số dư

cuối kỳ thành số dư đầu kỳ sang tháng kế tiếp, bạn cần trình bày tình hình tôn quỹ, xuất nhập tổn và công nợ đã tính trong các chức năng trước

Chú $: Để tìm hiểu chức năng này, bạn bắt đầu từ trình đơn Close Month

| Close Month dé kich hoat form có tên frmCloseMonth, thủ tục lưu trong tập tin AccountReceivableProcedures.sqi, AccountPayableProcedures.sql, TnventoryControlsProcedures.sql và CashBalanceProcedures.sql

Trang 12

280 Chương 7: Phần đóng sổ kế toán

Ngoài ra, thủ tục nội tại sử dụng để tổng hợp dữ liệu cuối kỳ trong

chức năng đều đã trình bày trong phần trước

Hình 7-1: Giao diện frmCloseMonth

1.2 Khai báo liệt kê dữ liệu

Bạn cần khai báo hai phương thức ApplyStyleForCB và

ResizeGridViewForCB để định dạng dữ liệu và điều chỉnh kích thước các

cột dữ liệu

Chẳng hạn, nếu chọn vào tùy chọn Cash Balance rồi nhấn nút

Refresh thì kết quả trình bày như hình 7-2

Tương tự như trên, bạn khai báo phương thức FillARToGridView để

gọi thủ tục nội tại có tên udsAecountReceivable;4 đã trình bày trong phần

kế toán công nợ phải thu

Bạn cần khai báo hai phương thức ApplyStyleForAR và

ResizeGridViewForAR để định dạng dữ liệu và điều chỉnh kích thước các

cột dữ liệu

Như đã giới thiệu trong phần kế toán công nợ phải thu, bạn cần khai

báo phương thức AddSumAmountForAR để tính công nợ phải thu của tất cả

khách hàng trên form thay vì trong thủ tục nội tại

Trang 13

~ Paoooomt08 | osroe/2007 ˆ_ 'PAp®0ni0 09/0a/207 n2

[hananmahing [Teter mu hig Titan mus hig Trà ăn mua hàng

Tà tên ma hồng Train mua hàng

‘APTOOOOTOT ` 10/00/2007 | ThuIên bán hàg của khiến hàngM

¡ 888750000)

8283 5m 90857-50000)

73687 500.00,

| 71.857 mm, 62.057 500.00 (68.257 500.00

Ví dụ, bạn chọn vào tùy chọn Account Receivable thì tình hình công

nợ phải thu của khách hàng trình bày như hình 7-3

Bacco System Mananeest Conse [Gos er

Cray Trdch Nig HO Hon 8 Vi

(Công Trách Nise Hu Han Kodak | Céngiy Tdch Nin Duan ES

"Công Cổ phn Suzan Vietnam TieđenUCAUSA —

| Genaiy 8a aute ga UFCA [Clog chin Reoutinn

| Trang tm gio du Vein

ng y Tech Nin HD Han Hot Ge

[xao

Hình 7-3: Tình hình công nợ phải thu của khách hùng

2040800) +1000.000|

onsen)

Trang 14

282 Chương 7: Phần đóng sổ kế toán

Đối với trường hợp tình hình công nợ phải trả cho nhà cung cấp, bạn

khai báo phương thức FiIAPToGridView để gọi thủ tục nội tại có tên udsAccountPayable;4

Ngoài ra, bạn cũng khai báo hai phương thức ApplyStyleForAP và

ResizeGridViewForAP để định dạng dữ liệu và điều chỉnh kích thước các

cột dữ liệu

Tương tự như trong phần kế toán công nợ phải trả, bạn cần khai báo

phương thức AddSumAmountForAP để tính công nợ trả cho nhà cung cấp

trên form thay vì trong thủ tục nội tại

Chẳng hạn, bạn chọn vào tùy chọn Account Payable thi tinh hinh công nợ phải trả cho nhà cung cấp trình bày như hình 7-4

Hình 7-4: Tình hình công nợ phải trả cho nhà cung cấp

Bằng cách tương tự như trên, bạn khai báo phương thức PIICToGridView để gọi thủ tục nội tại có tên udsInventoryControl;4 để trình bày tình hình xuất nhập và tồn kho

Chú ý: Bạn cũng khai báo hai phương thức ApplyStyleForIC và

ResizeGridViewForIC để định dạng dữ liệu và điều chỉnh kích thước các cột

dữ liệu

Trang 15

Chương 7: Phần đóng sổ kế toán

Ví dụ, bạn chọn vào tùy chọn Inventory Controls thì tình hình xuất

nhập và tôn kho trình bày như hình 7-5

VỂ Account System 4anagemsentt Console - [Close Mohth]

Tú xách dùng cho điện hoạ đ động

Tí xách dùng cho điện thoa đ động

Í Tá xách dừng cho PC

ÍTú sách đờng choPC,

Rosy Logged ot (nto lets eth coped 9.2235 44)

Hình 7-5: Tinh hinh xuất nhập tôn

Để hoàn thiện chức năng vừa trình bày ở trên, bạn khai báo phương thức Preview để gọi phương thức FillCBToGridView, FIIARToGridView,

PiHAPToGridView và FillICToGridView như ví dụ 7-1

Trang 16

Sau đó, gọi phương thức Preview trong biến cố Click của nút

btnRefresh hay biến cố CheckedChanged của các diéu khién RadioButton

string previousMonth =

asCommon Get PreviousMonth ( ASParameters.currentMonth) ; String startDate = "01/"+

ASParameters.currentMonth;

+] Khai báo tính số ngày trong tháng int days = DateTime DaysInMonth ( DateTime Parse (startDate) Year, DateTime Parse (startDate) Month) ; string endDate = đays.ToString(} + "/

+ ASParameters.currentMonth;

/1 Khai báo mảng tham số 0à giá trị của tham số

string[] parameterName = null;

object [] parameterValue = null;

try {

+7 Khai báo uà khởi tạo đối tượng ASDetaProuider ASDataProvider dataProvider =

Trang 17

#1 Tình hình công nợ phải trả cho nhà cung cấp

case “Account Payable":

dataProvider CommandText =

“udsAccount Payable;2";

parameterName = new string[3] {

"@PreviousMonth", "@StartDate", "@EndDate" };

parameterValue = new object [3] {

previousMonth, startDate, endDate };

parameterName = new string(3) {

"@PreviousMonth", "@StartDate”, "@EndDate" };

parameterValue = new object [3] { previousMonth, startDate, endDate };

Trang 18

Chú ý: Phương thức trên gọi thủ tục nội tại tương ứng với chức năng

đã trình bày trong các phần trước để tổng hợp đữ liệu và tính số dư cuối kỳ

1.4 Đóng sổ

Khi thực hiện chức năng đóng sổ kế toán, số dư cuối kỳ của tháng hiện hành sẽ chuyển sang số dư đầu kỳ của tháng kế tiếp

Đối với trường hợp tồn quỹ, bạn lưu trong bang CloseMonthCashBalances

và CloseMonthCashBalanceDetails; công nợ phải thu của khách hàng thì

lưu vào bảng CloseAccountReceivable va CloseAccountReceivableDetails; công nợ phải trả cho nhà cung cấp thì lưu vào bảng CloseAccountPayable và

CloseAccountPayableDetails, xuất nhập tổn thì lưu trong bảng

CloseInventoryControl va CloseInventoryControlDetails

Để làm điều này, trước tiên bạn khai báo phương thức có tên

CloseMonth với cấu trúc như ví dụ 7-3

ASParameters.currentMonth;

£] Khai báo số ngày trong tháng

inE đays = DateTime DaysTnMonEh (

DateTime Parse (startDate) Year,

DateTime Parse(startDate) Month);

string endDate = days.ToString() +"/"+

ASParameters.currentMonth;

11 Khai báo mắng tham số uữ giá trị

string[] parameterName = null;

Trang 19

catch (Exception ex)

{ ASUTHelper ShowMessageBox (

"Close Month", ex);

CREATE PROC udsCloseMonth

/J Khai báo tham số

Trang 20

@PreviousMonth, @DeleteData

GO

Trong đó, thủ tục nội tại dùng để chuyển số dư tổn quỹ cuối kỳ là

udsCloseMonthForGL, có cấu trúc như ví dụ 7-5

CREATE PROC udsCloseMonthForGL

17 Khai báo tham số

@CurrentMonth CHAR (8),

@PreviousMonth CHAR (8),

@DeleteData BIT

AS

//Xéa méu tin dang ton tại

DELETE FROM CloseMonthCashBalances

WHERE CloseMonth = @CurrentMonth;

DELETE FROM CloseMonthCashBalanceDetails

WHERE CloseMonth = @CurrentMonth;

1/Tén quy déu ky

DECLARE @BeginAmount DECIMAL

SELECT @BeginAmount = EndingAmount

FROM CloseMonthCashBalances

WHERE CloseMonth = @PreviousMonth;

//Thém mau tin vao béng CloseMonthCashBalances

INSERT INTO CloseMonthCashBalances

{CloseMonth, BeginingAmount , ReceiptAmount,

PaymentAmount, EndingAmount)

SELECT TOP 1 @CurrentMonth, @BeginAmount,

ReceiptAmount, PaymentAmount, BalanceAmount

FROM MonthlyCashBalances

ORDER BY BalancelId DESC;

/{Thém mGu tin véo béng CloseMonthCash BalanceDetails

INSERT INTO CloseMonthCashBalanceDetails

(Balanceld, CloseMonth, Issueld,

IssueDate, PartnerId, ReceiptAmount,

PaymentAmount, BalanceAmount,

ĐescriptionTnVietnamese}

SELECT Balanceld, @CurrentMonth,

Trang 21

DELETE FROM Receipts;

DELETE FROM ReceiptBatchs;

DELETE FROM Payments;

DELETE FROM Payment Batchs;

END

Go

Ngoài ra, bạn khai báo thủ tục nội tại có tên udsCloseMonthForAR,

dùng để chuyển số dư công nợ cuối kỳ phải thu của khách hàng với cấu trúc

như ví dụ 7-6

CREATE PROC udsCloseMonthForAR

11 Khai bdo tham số

@CurrentMonth CHAR (8),

@PreviousMonth CHAR (8),

@DeleteData BIT

AS

/1/X6éa mau tin đang tôn tại

DELETE FROM CloseMonthAccountReceivable

WHERE CloseMonth = @CurrentMonth;

DELETE FROM CloseMonthAccountReceivableDetails

WHERE CloseMonth = @CurrentMonth;

/{Thém mau tin vao bang CloseMonthAccountReceivable

INSERT INTO CloseMonthAccount Receivable (CloseMonth,

BeginAmount, SalesAmount, ReceivedAmount, EndAmount )

SELECT @CurrentMonth, SUM(BeginAmount),

SUM(SalesAmount),

SUM(ReceivedAmount) , SUM(EndAmount )

FROM MonthlyAccountReceivable

/{Thém mau tin vao bang CloseMonthAccountReceivableDetails

INSERT INTO CloseMonthAccountReceivableDetails

(CustomerTđ, CloseMonth, BeginAmount, SalesAmount,

ReceivedAmount ) EndAmount }

SELECT CustomerId, @CurrentMonth, BeginAmount,

SalesAmount, ReceivedAmount , EndAmount

FROM MonthlyAccountReceivable

{/Xéa mdu tin dang tén tai

IF @DeleteData =1

Trang 22

BEGIN

DELETE FROM Receipts;

DELETE FROM SalesInvoiceBatchs;

DELETE FROM Salesinvoices;

DELETE FROM SalesinvoiceDetails;

END

GO

Tương tự như vậy, bạn khai báo thủ tục nội tại có tên

udsCloseMonthForAP dùng để chuyển số dư công nợ cuối kỳ phải trả cho

nhà cung cấp với cấu trúc như ví dụ 7-7

Ví dụ

CREATE PROC udsCloseMonthForAP

J1 Khai báo tham số

@CurrentMonth CHAR (8),

@PreviousMonth CHAR(8) ,

@DeleteData BIT

AS

/ {Xba mau tin dang tén tai

DELETE FROM CloseMonthAccount Payable

WHERE CloseMonth = @CurrentMonth;

DELETE FROM CloseMonthAccount PayakleDetails

WHERE CloseMonth = @CurrentMonth;

t1 Thêm nấu tin vao bdng CloseMonthAccountPayable

INSERT INTO CloseMonthAccount Payable (CloseMonth,

BeginAmount, PurchaseAmount, PaidAmount, EndAmount)

SELECT @CurrentMonth, SUM(BeginAmount),

SUM(PurchaseAmount),

SUM(PaidAmount), SUM(EndAmount )

FROM MonthlyAccount Payable

//Thém mu tin vao bang CloseMonthAccountPayableDetails

INSERT INTO CloseMonthAccount PayableDetails

(SupplierId, CloseMonth, BeginAmount, PurchaseAmount, PaidAmount , EndAmount }

SELECT Supplierld, @CurrentMonth, BeginAmount,

PurchaseAmount, PaidAmount, EndAmount

FROM MonthlyAccount Payable

41 Xóa mầu tin đang tôn tại

TF @DeleteData = 1

BEGIN

DELETE FROM Payments;

DELETE FROM PurchaseInvoiceBatchs;

DELETE FROM PurchaseTnvoices;

DELETE FROM PurchaseInvoiceDetails;

END GO

Trang 23

Sau cùng, bạn khai báo thủ tục nội tại có tên udsCloseMonthForIC

dùng để chuyển số dư cuối kỳ tổn kho với cấu trúc như ví dụ 7-8

CREATE PROC udsCloseMonthForic

4 Khai báo tham số

@CurrentMonth CHAR (8),

@PreviousMonth CHAR(8) ,

@DeleteData BIT

AS

(1! Xóa mẩu tin đang tôn tại

DELETE FROM CloseMonthTnvenEoryControl

WHERE CloseMonth = @CurrentMonth;

DELETE FROM CloseMonthInventoryControlDetails

WHERE CloseMonth = @CurrentMonth;

1{Thém mau tin vao bang CloseMonthInventoryControl

INSERT INTO CloseMonthInventoryControl (CloseMonth)

VALUES (@CurrentMonth) ;

{1Thêm mấu tin vao bang CloseMonthInventoryControlDetails

INSERT INTO CloseMonthInventoryControlDetails

(Productid, StockId, CloseMonth, BeginQuantity,

ImportQuantity, ExportQuantity, EndQuantity}

SELECT Productid, Stockid, @CurrentMonth,

BeginQuantity, ImportQuantity, ExportQuantity, EndQuantity

FROM MonthlyInventoryControl;

/1Xéa mdu tin đang tôn tại

IF @DeleteData = 1

BEGIN

DELETE FROM ImportBatchs;

DELETE FROM Imports;

DELETE FROM ImportDetails;

DELETE FROM Export Batchs;

DELETE FROM Exports;

DELETE FROM ExportDetails;

END

Go

Sau đó, khai bdo goi phuong thie CloseMonth trong bién cé Click cha

nut btnCloseMonth nhy vi du 7-9

private void btnCloseMonth_Click (object sender,

EventArgs e)

{

Trang 24

° 292 Chương 7: Phan déng sé ké toan

if (MessageBox Show("You are closing month, once you

click OK, all data will be transferred to history

database.", ASParameters.welcomeMessage,

MessageBoxButtons OKCancel, MessageBoxIcon.Warning,

MessageBoxDefaultButton Button2) == DialogResult.OK)

{

(1 Khai báo gọi phương thức CloseMonth

string resulE z CloseMonEh();

Chú ý: Trong mỗi thủ tục nội tại thành viên, bạn khai báo để xóa dữ

liệu của các bảng tương ứng từng trường hợp tham số @DeleteData có giá trị lal

Néu dang chay chuong trinh dé kiém tra, ban truyén gid tri cho tham

số này là 0 Tuy nhiên, khi chạy chương trình vào mục đích ứng dụng, bạn truyển giá trị cho tham số này là 1, sau khi đóng sổ thành công, đữ liệu dùng để lưu trữ nghiệp vụ phát sinh hằng ngày sẽ bị xóa

Để lưu trữ dữ liệu này sang cơ sở dữ liệu khác dùng cho mục đích tham

khảo, bạn có thể tạo cơ sở đữ liệu có tên ABC chẳng hạn, rồi khai báo phát

biéu INSERT thay vi DELETE

Tuy nhiên, để bảo đảm dữ liệu không bị mất khi thực hiện chức năng

đóng số, bạn cần khai báo transaction trong các thủ tục thành viên

udsCloseMonthForGL, udsCloseMonthForAR, udsCloseMonthForAP va

udsCloseMonthForlIC

Chẳng hạn, bạn có thể cài đặt transaction trong thủ tục nội tại

udsCloseMonthEorIC như ví dụ 7-10

i dat transaction trong udsCloseMouthF

CREATE PROC udsCloseMonthForIc

+Ị Khai báo tham số

@CurrentMonth CHAR (8) ,

@PreviousMonth CHAR(8) ,

@DeleteData BIT

Trang 25

tJ Xóa mẩu tin đang tôn tại

DELETE FROM CloseMonthInventoryControl

WHERE CloseMonth = @CurrentMonth;

DELETE FROM CloseMonthIinventoryControlDetails WHERE CloseMonth = @CurrentMonth;

//Thém mau tin vdo béng CloseMonthinventoryControl

INSERT INTO CloseMonthInventoryControl (CloseMonth}

VALUES (@CurrentMonth) ; -11Thém mẩu tin vao bang CloseMonthInventoryControlDetails

INSERT INTO CloseMonthInventoryControlDetails

(Productid, StockId, CloseMonth, BeginQuantity, ImportQuantity, ExportQuantity, EndQuantity)

SELECT Productid, StockId, @CurrentMonth, BeginQuantity,

ImportQuantity, ExportQuantity, EndQuantity

FROM MonthlyInventoryControl;

//Xéa méu tin đang tôn tại

IF 8DeleteData = 1

BEGIN

DELETE FROM ImportBatchs;

DELETE FROM Imports;

DELETE FROM ImportDetails;

DELETE FROM Export Batchs;

DELETE FROM Exports;

DELETE FROM Export Details;

END

TF ERROR_ NUMBER () >0

//Hily transaction ROLLBACK TRAN IC

CREATE PROC udsCloseMonthForIC

// Khai bdo tham sé

@CurrentMonth CHAR (8),

Trang 26

+JXóa mẩu tín đang tân tại

DELETE FROM CloseMonthInventoryControl

WHERE CloseMonth = @CurrentMonth;

DELETE FROM CloseMonthInventoryControlDetails WHEKE CloseMonth = @CurrentMonth;

//Théem mdu tin vao bang CloseMonthInventoryControl

INSERT INTO CloseMonthinventoryControl (CloseMonth)

VALUES (@CurrentMonth) ;

!ƒThêm mẫu tin uào bảng CloseMonthinuentoryControlDetails

INSERT INTO CloseMonthInventoryControlDetails

(ProductId, StockId, CloseMonth, BeginQuantity, ImportQuantity, ExportQuantity, EndQuantity)

SELECT ProductId, StockId, @CurrentMonth, BeginQuantity,

ImportQuantity, ExportQuantity, EndQuantity

FROM MonthiyInventoryControl;

/ {Xéa méu tin dang tén tại

IF @DeleteData = 1

BEGIN

DELETE FROM Import Batchs;

DELETE FROM Imports;

DELETE FROM TmportDetails;

DELETE FROM Export Ratchs;

DELETE FROM Exports;

DELETE FROM ExportDetails;

1 {Két thuc transaction

COMMIT TRAN IC

GO

Trang 27

2 THAY ĐỔI GIÁ TRỊ DÙNG CHUNG

Bạn có thể cho phép người sử dụng thay đổi giá trị cho các biến công

khai tĩnh được khai báo trong lớp ASParameters bằng cách lưu chúng trong bảng Parameters

Tương tự như các chức năng đã trình bày trong phần trước, để tìm

hiểu chức năng này, bạn có thể thiết kế form và khai báo thủ tục nội tại liên

quan

Chú ý: Để tìm hiểu chức năng này, bạn bắt đầu trình đơn Close

Month | Parameters để kích hoạt form có tên frmParameters, thủ tục lưu trong tập tin Paremeters.sql

2.1 Giao diện

Bạn có thể thiết kế frmParameters bao gồm các điều khiển với giao

diện tương tự như hình 7-6

Trang 28

BA? 296 Chương 7: Phần đóng sổ kế toán

object sender, EventArgs e)

- txtIntegerNumberFormat Text = ASParameters integerNumberFormat;

chkAutoCreateId.Checked =

ASParameters.autoCreateld;

chkShowToolTipOnDataGrid.Checked =

ASParameters.showToolTipOnDataGrid;

Chẳng hạn, khi thực thi chương trình, nếu người sử dụng chọn vào

trình đơn Close Month | Parameters thì frmParameters trình bày như hình 7-7

Hình 7-7: Cập nhật giá trị cho biến công khai tĩnh

Khi người sử dụng thay đổi và cập nhật, bạn khai báo đoạn chương

trình trong biến cố Click của nút btnUpdate như ví dụ 7-13.

Trang 29

Chương 7: Phần đóng số kế toán 397

private void btnUpdate_Click(

object sender, EventArgs e)

{

try {

#1 Khai báo mảng tham số

string[] parameterName = new string[ 71 {

"@CurrentMonth", "@WelcomeMessage", AutoCreateId", "@ShowToolTipOnDataGrid",

"@DateFormat", “@DoubleNumberFormat",

"@IntegerNumberFormat" };

i} Khai báo mảng giỏ trị của tham số

object [] parameterValue = new object [7] {

txtCurrentMonth.Text,

txtWelcomeMessage.Text,

chkAutoCreateld.Checked, chkShowToolTipOnDataGrid.Checked,

txtDateFormat Text,

txtDoubleNumberFormat.Text, txtIntegerNumberFormat.Text };

1} Khai bdo vd khdi tao déi tuong ASDataProvider ASDataProvider asDataProvider =

Trong đó, phương thức PutParameters dùng để cập nhật giá trị vừa

thay đổi trên các điểu khiển vào biến công khai tĩnh trong lớp

ASParameters

Trang 30

Ngoài ra, để cập nhật giá trị thay déi vao bang Parameters, ban khai

báo thủ tục nội tại có tên udsParameters;2 như ví dụ 7-15

CREATE PROC udsParameters;2

!J Khai báo tham số

/1 Méu tin dé tén tai thi thue thị phát biéu UPDATE

IF EXISTS (SELECT * FROM Parameters)

f1 Thêm mới mẩu tin

INSERT INTO Parameters (CurrentMonth,

WelcomeMessage, AutoCreateld,

Trang 31

Luu %: Dé doc gid tri ty bang Parameters va điển vào biến công khai

tĩnh trong lớp ASParameters, bạn khai báo phương thức GetParameters

với cấu trúc như ví dụ 7-16

internal static void Get Parameters ()

{

11 Khai báo uà khởi tạo đối tuong ASDataProvider

ASDataProvider asDataProvider = new

11 Khai bảo gọi phương thúc GetDotafiou

DataRow dataRow = asDataProvider.GetDataRow();

Sau đó khai báo gọi phương thức GetParameters trong biến cố CHck

của nút btaOKE thuộc £mLogin.

Trang 32

Phần tham số cấu hình ứng đụng như tên máy, tên cơ sở dữ liệu, thời

gian kết nối, cổng kết nối cơ sở dữ liệu và vị trí tập tin Report được khai báo

trong tap tin App.config

Trong ứng dụng, chúng ta khai báo hai phương thức Overload có tên GetConnectionString trong lớp ASConfig dé doc giá trị từ tập tin

App.config

Ngoài ra, ban cũng khai báo phương thức GetReportPath để đọc giá trị ứng với đường dẫn tập tin Report (.rdÌc trình bày trong phần kế tiếp)

Bạn có thể thiết kế form và sử dụng đối tugng DOM (Document

Object Model) để cập nhật giá trị như cách làm viée véi tap tin Xml

Tuy nhiên, người sử dụng cũng có thể thay đổi các giá trị này bằng

cách sử dụng tiện ích Notepad thay vì sử dụng form trong ứng dụng

4 KẾT LUẬN

Thông qua phần này, bạn đã tìm hiểu cách đóng sổ để chuyển các số

dư cuối kỳ của tháng hiện hành thành số dư đâu kỳ cho tháng kế tiếp

Bất kỳ ứng dựng nào cũng sử dụng các giá trị mặc định tương tự như

biến công khai tĩnh trong lớp ASParameters, bạn nên thiết kế form cho phép người sử dụng có thể thay đổi các giá trị này và lưu chúng trong cơ sở

đữ liệu

Trang 33

Báo cáo là thông tin đâu ra của ứng dụng, nó cho phép người

sử dụng kết xuất dữ liệu theo yêu câu quản lý Do cùng sử dụng

chung chức năng Print trong mỗi form của từng chức năng trong

ứng dụng, bạn có thể kích hoạt form có tên rmReports cùng với

việc truyền một số tham số như đã trình bày trong các phần trước

Bằng cách sử dụng trình điểu khiển ReportViewer va

Microsoft Report thay vì Crystal Report, bạn có thể trình bày báo

cáo với nhiều dạng khác nhau

Mỗi bảng dữ liệu đều cho phép người sử dụng in báo theo ba loại, loại

thứ nhất là mỗi trang ứng với một mẩu tin (Single Form), loại thứ hai là mỗi trang trình bày nhiễu mẩu tin (Sheet), loại thứ ba là báo cáo bao gồm

loại một và hai (Master/Details)

Chẳng hạn, khi bạn im báo cáo cho trường hợp hóa đơn bán hàng, mua hàng, nhập kho và xuất kho thì báo cáo dạng Single form sẽ bao gồm danh sách mẩu tin có quan hệ N

Ví dụ, khi người sử dụng in báo cáo hóa đơn bán hàng, đanh sách hóa

đơn chỉ tiết bán hàng sẽ trình bày kèm theo

Trang 34

302 Chương 8: Phan bdo cdo (Report)

Với ba loại như trên, chúng ta sẽ thiết kế Report đại diện cho mỗi loại,

các Report còn lại bạn có thể tham khảo chúng trong ứng dụng đính kèm

Chu §: Do hau hết dữ liệu đều được xuất ra bằng việc thực thi thủ tục

nội tại, khi thiết kế Report chúng ta cũng dựa trên các cột đữ liệu mà thủ tục

nội tại kết xuất

1.1 Tạo kết nối cơ sở dữ liệu

Dé tao Report, ban chon trinh don Project | Add New Item | Report

rồi đặt tên như hình 8-1

Templates:

Visual Studio installed templates : Class 244 Interface

[2] Windows Form #5082 Procedure Class For Version 8

{9 User Control ACustom Control

‘@iinherited User Control BA Web Custom Control

| J SQL Database (šj)DataSet

RJ XML Schema „2l! XSLT Fie

Aj Style Sheet 3) Text File

B cursor File Aga

gi Icon File i] Windows Service

8) JScript File SB] VBScript File

«Assembly Information File |) Application Configuration File

1} Settings File [SIMO Parent

“GB Debugger Visualizer 2 Class Diagram i

[fan empty Report file For creating a report using Microsoft reporting technology

Sau khi đặt tên Report, nhấn nút Add thì Report được thêm vào dự án,

cửa sổ tạo Data Sources xuất hiện như hình 8-2

Bằng cách chọn vào lién két Add New Data Source, bạn có thể tìm

thấy cửa sổ chọn loại kết nối cơ sở dữ liệu như hình 8-3.

Trang 35

Hinh 8-3: Logi kết nối cơ sở dữ liệu

Chú ý: Bạn có thể chọn loại kết nối cơ sở dữ liệu là Database hay

Web Service Tuy nhiên, trong trường hợp này chúng ta chỉ sử dụng loại kết

nối cơ sở dữ liệu là Database

Sau khi nhấn nút Next, nếu trước đó đã tạo chuỗi kết nối cơ sở dữ liệu

và lưu trong tập tin App.confñig thì chuỗi kết nối đó sẽ hiện ra như hình 8-4

Trong trường hợp bạn muốn tạo mới chuỗi kết nối thì chọn vào nút

New Connection, khi đó cửa sổ khai báo các thuộc tính kết nối cơ sở dữ liệu

xuất hiện như hình 8-5

Trang 36

PA? 304 Chương 8: Phần báo cáo (Report)

Hình 8-4: Sử dụng chuỗi kết nối cơ sở dữ liệu đã có

Hình 8-ð: Khai báo thuộc tính kết nối cơ sở dữ liệu.

Trang 37

Chú ý: Để kết nối cơ sở dữ liệu SQL Server 2005, bạn có thể sử dụng

một trong hai đặc quyền ứng với hai tùy chọn Use Windows Authentication hay SQL Server Authentication

Chọn Next, bạn có thể tìm thấy danh sách một số loại đối tượng cơ sở

dữ liệu?) Tables, View, Stored Procedures hay Functions xuất hiện như hình 8-6

Hình 8-6: Chọn loại đối tượng cơ sở đữ liệu

Bằng cách chọn 3 loại đối tượng cơ sở dữ liệu và đặt tên Data Source

là AccountSystemDataSet như hình trên rồi nhấn nút Finish, Data Souree được tạo ra trong dự án như hình 8-7

l3 [a]

AccountSystem (i Ea) Properties (9) (sal References

& Cj bin f#- 4 Icons

Trang 38

BX” 306 Chương 8: Phần báo cáo (Report)

ĐM 306 Chương 8: Phần báo cáo (Report)

Ngoài ra, bạn có thể tìm danh sách đối tượng cơ sở dữ liệu xuất hiện

trong cửa sổ Data a Sources n nhu “hình 8-8

Hinh 8-9: Cia sé ToolBox

Để trình bày dữ liệu trên Report, bạn có thể chọn các cột từ cửa sổ Data

Sources ứng với loại đối tượng cơ sở dữ liệu là thủ tục nội tại hay bảng.

Trang 39

Chương 8: Phần báo cáo (Report) 307

ContactTitle Address

Hinh 8-10: Cét di liéu trong thủ tục nội tại udsCustomers

Chọn từng cột rồi kéo và thả vào vùng Report với giao diện như hình 8-11

Customer

Customer Id =First(Fields!Customerld Value)

Customer Name =First(FieldsICompanyNameinVietnamese Value)

Contact Name =First(Fieids!ContactName Value)

Contact Title =First(Fields!ContactTitle Value) Address =First(Fields!Address Value) Tel =First(Fields!Telephone Value)

Fax =First(Fields!F axNumber Value) Email Address =First(Fields!EmailAddress Value) Max Debit Amt =Sum(FieldsIMaxDebitAmount Value)

Hình 8-11: Thiết kế Report trình bày mẩu tin của từng khách hàng Chú ý: Bạn có thể kiểm tra danh sách, thêm hay loại bỏ đối tượng cơ

sở dữ liệu trong Report bằng cách chọn vào trình đơn Report | Data

Sources, cửa sổ xuất hiện như hình 8-12

Trang 40

Choose data sources to use in the report,

Broject data sources: ˆ i

fAccountSystemDataSet_AccountNumbers >] _

Report deta sources: zi

AccountSystemDataSet_Customers

Hình 8-12: Đối tượng cơ sở đữ liệu trong Report

Khi thực thi chương trình, nếu người sử dụng đang xem thông tin chỉ

tiết của khách hàng và nhấn nút Print thì kết quả trình bày như hình 8-13

5H + Customer

Customer Id

Cuetomer Name _ Công ty Trách Nhiệm Hữu Han IBN Vietnam

Contact Name Mr Hall Contact Title Director Address 1 Nguyễn Huệ Tel 67697698 Fax 876978962 EmailAddress adminGIBN.com

Hình 8-13: Thông tin khách hàng

Ngày đăng: 01/03/2014, 00:00

HÌNH ẢNH LIÊN QUAN

Hình  6-24:  Tổng  hợp  dữ  liệu  xuất  nhập  uà  tính  tồn  kho  của  một  sản  phẩm - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 6-24: Tổng hợp dữ liệu xuất nhập uà tính tồn kho của một sản phẩm (Trang 3)
Hình  7-3:  Tình  hình  tồn  quỹ. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 7-3: Tình hình tồn quỹ (Trang 13)
Hình  7-5:  Tinh  hinh  xuất  nhập  tôn. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 7-5: Tinh hinh xuất nhập tôn (Trang 15)
Hình  8-4:  Sử  dụng  chuỗi  kết  nối  cơ  sở  dữ  liệu  đã  có. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 8-4: Sử dụng chuỗi kết nối cơ sở dữ liệu đã có (Trang 36)
Hình  8-11:  Thiết  kế  Report  trình  bày  mẩu  tin  của  từng  khách  hàng. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 8-11: Thiết kế Report trình bày mẩu tin của từng khách hàng (Trang 39)
Hình  8-12:  Đối  tượng  cơ  sở  đữ  liệu  trong  Report. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 8-12: Đối tượng cơ sở đữ liệu trong Report (Trang 40)
Hình  8-21:  Định  dạng  số. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 8-21: Định dạng số (Trang 44)
Hình  8-22:  Tình  hình  công  nợ  phải  thu  của  khách  hàng. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 8-22: Tình hình công nợ phải thu của khách hàng (Trang 45)
Hình  8-29:  Thiết  kế  phân  chỉ  tiết  hóa  đơn. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 8-29: Thiết kế phân chỉ tiết hóa đơn (Trang 48)
Hình  9-4:  Danh  sách  chức  năng  của  phần  AP - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 9-4: Danh sách chức năng của phần AP (Trang 60)
Hình  9-13:  Quyền  của  người  sử  dụng. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 9-13: Quyền của người sử dụng (Trang 69)
Hình  11-3:  Đặt  tên  chỉ  mục. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 11-3: Đặt tên chỉ mục (Trang 118)
Hình  11-4:  Chọn  hình  thúc  theo  dõi. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 11-4: Chọn hình thúc theo dõi (Trang 119)
Hình  11-11:  Danh  sách  đối  tượng  cơ  sở  dữ  liệu. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 11-11: Danh sách đối tượng cơ sở dữ liệu (Trang 122)
Hình  11-12:  Danh  sách  bảng  đữ  liệu  cần  tạo  quan  hệ. - xây dựng ứng dụng quản lí kế toán bằng c 2005 part3
nh 11-12: Danh sách bảng đữ liệu cần tạo quan hệ (Trang 123)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm