accounting module in erp

Post on 23-Feb-2016

47 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Accounting Module In ERP. Students: Hoàng Phương Thảo Tạ Trung Kiên Nguyễn Tấn Trí Lưu Hằng My Nguyễn Văn Tiệp. Supervisor: Mr . Nguyễn Hồng Kỳ. Contents. Introduction . Project Management Plan. Requirement Specifications . Design Description . Implementation . - PowerPoint PPT Presentation

TRANSCRIPT

LOGO

Accounting Module In ERP

Supervisor: Mr. Nguyễn Hồng Kỳ

Students: Hoàng Phương Thảo Tạ Trung Kiên Nguyễn Tấn Trí Lưu Hằng My Nguyễn Văn Tiệp

Contents

Introduction

Project Management Plan

Requirement Specifications

Design Description

Implementation

Test Documentation

Demo & Q&A

Part 1: Introduction

Background

Literature Review

Our Proposal

Products

Background

The management of goods, statistics, accounting…in paper have many disadvantages

Having many popular software which are used to management business through by machine and database.

Development of ERP system In Vietnam, they still have many limitations.

=> We developed an accounting module in ERP

Literature review

Having high price

Incompatibility with the Vietnamese accounting system

Wasting time for training, human resources

Complexity of warranty and repair

Literature review

Design is untight and simple

General ledger system has not satisfied requirement of user

Security is low

Our proposal Developing accounting module for the service companies

that use ERP system Building on web-based with advanced technology Database is managed by SQL server platform Building on N-tier architecture

Part 2: Project Management Plan

The proposed system

Development Environment

Process

Project organization

Project Planning

The proposed system

User Functions System feature Boundaries

Development EnvironmentHardware

Operating system: Windows 7Personal computers for developing with the minimum

configuration: 3 Gb of RAM, 100Gb of hard disk, Core 2 Duo 2.0 Ghz

SoftwareVisual Studio 2010SQL Server 2008Web Server: IIS 7Framework: .NET Framework 4.0

Project’s process model

Waterfall model

Project organization

Project Management Plan Work breakdown structure Responsibility Assignment Matrix Risk management plan

Part 3: System Requirement Specifications

User Requirements

System Requirements

Non-functional requirements*

User requirements

UsersVouchersPortfolioGeneral AccountingReports

Users

User can add new fiscal year, fiscal period. User can add new one of portfolios, edit or delete it User can add new a voucher such as: “Phiếu kế toán, hóa đơn bán

hàng, phiếu nhập mua hàng…” edit, or delete them User can access general ledger as “bút toán khóa sổ”, “tính hàng tồn

kho”… User can see all another user activity by accessing diary. User can see all report in the AMIE system and print it if he/she

needs. …

Vouchers AMIE have some vouchers: Phiếu kế toán, hóa đơn bán hàng, phiếu

nhập mua hàng… To edit a voucher, user clicks on the “Chi Tiết” hyperlink in the left of

row which contains some voucher’s summary. If RecordToLedgerDate is not null, user click on the “Sửa” button to edit.

To delete a voucher or more voucher, user ticks on the check box in the left of row thich contains some voucher’s summary, and then click on the “Xóa” button to delete

To view list of voucher which has order by user want. You can use filler by filling some word on the top of column.

Portfolio Danh mục sổ kế toán Danh mục đối tác Danh mục tài khoản Danh mục hàng hóa Danh mục kho Danh mục mã giao dịch Danh mục tiền tệ Danh mục loại nguồn vốn Danh mục loại tài sản cố định …

General Accounting

General business operations of the accounting system. Add new fiscal year, fiscal period Posting balance Works was normally conducted at the beginning of fiscal

period, year or ending of fiscal period, year. Calculate total inventory in the end of fiscal period

Reports

Sổ nhật ký chung Bảng cân đối kế toán Báo cáo kết quả hoạt động kinh doanh Reports have printing function

System Requirement

Document requirements as use-cases Each use case include:

Use case diagram Actor Summary Goals Triggers Preconditions Post conditions

System Requirement

Each use case include: Main success scenarios Alternative scenarios Exceptions Relationship Business rules Description Screen Data field definitions

System Requirement

Screen: Before implementation: created using Balsamiq

Mockups software.

After implementation: screenshot from real system

System Requirement

After

Before

System Requirement

Data Fields Definition: Field name Description Read-only Mandatory Control type Data type Length

Non-functional requirements

Usability Reliability Availability Security Maintainability Performance

Non-functional requirements

Usability:

All most text, image text in front-end should be in Vietnamese The interface should be elegant, simple and out-standing Searching tool should be easy to use Check validation in all form and easy to see, understand. …

Non-functional requirements

Reliability:

Not conflict with other software Log any actions of user in system. Mean Time Between Failures (MTBF): 1 month Mean Time To Repair (MTTR): immediately when admin

finds out problem. Average 1 day. Maximum Bugs or Defect Rate: 3 bugs / KLOC

Non-functional requirementsAvailability:

Systems have to run 24 hours 7 days Can be turned off when upgrading and must display an

alternative maintenance page in such occasions

Non-functional requirements

Security:

User have to login to system. Auto logout user when website not work about 30 minutes. User password must be invisible for the system administrator Log any actions of user in system.

Non-functional requirementsMaintainability:

Follow coding standard and naming conventions Loosely coupled design Logging functionality

Performance:

Frequently accessed data must be cached Reference data must be cached

Part 4: Software Design Description

Architectural design

Detailed design

Database design

Architectural design

Architectural design

Main components

Architectural design

Sub component diagram

Common component

Detailed design: Class DiagramPReceiptMng

«interface»

Attributes+ _receiptVoucherMngBal+ _transactionVouchers+ _writeLogOperations+ bDelete_OnClick(object sender, EventArgs e)+ HideExpandColumnRecursive(GridTableView tableView)+ Page_Load(object sender, EventArgs e)+ RadAjaxManager1_Requested(object sender, AjaxRequestEventArgs e)+ rgPurchaseReceipt_Init(object sender, EventArgs e)+ rgPurchaseReceipt_ItemCreated(object sender, GridItemEventArgs e)+ rgPurchaseReceipt_NeedDataSource(object sender, GridNeedDataSourceEventArgs e)+ rgPurchaseReceipt_PreRender(object sender, EventArgs e)

PReceiptVoucherMng BAL

Attributes+ _receiptVoucherMngDalOperations+ Deleted(TransactionVouchers tv, WriteLog wl)+ LoadSourceOfPurchaseReceiptGv()+ PReceiptVoucherMngBAL()

PReceiptVoucherMng DAL

Attributes+ ConnectionString+ _connOperations+ Deleted(TransactionVouchers tv, WriteLog wl)+ GetSourceOfPurchaseReceiptGridview()+ PReceiptVoucherMngDAL()

PEReceiptVoucher«interface»

Attributes+ _caching+ _loadTableInfoBal+ _pBal+ _transactionVoucher+ _writeLogOperations+ AccountNotGridIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ bAccept_Clicked(object sender, EventArgs e)+ bEdit_Clicked(object sender, EventArgs e)+ CbAccountItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbBookNo_IndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbBookNo_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ cbDiscountAccount_IndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ cbGoods_ItemIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ cbGoods_ItemRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ cbInventory_IndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ cbInventory_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ cbTaxAccount_IndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbTaxCodeIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbTaxCodeItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CheckCostValue()+ dpPaymentDate_DateChanged(object sender, SelectedDateChangedEventArgs e)+ HideExpandColumnRecursive(GridTableView tableView)+ OnItemDataBoundHandler(object sender, GridItemEventArgs e)+ Page_Load(object sender, EventArgs e)+ RadGrid_Init(object sender, System.EventArgs e)+ RadGrid_ItemDeleted(object source, GridCommandEventArgs e)+ RadGrid_ItemInserted(object source, GridCommandEventArgs e)+ RadGrid_ItemUpdated(object source, GridCommandEventArgs e)+ RadGrid_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)+ RadGrid_PreRender(object sender, EventArgs e)+ txtDiscountRate_TextChanged(object sender, EventArgs e)+ txtPrice_TextChanged(object sender, EventArgs e)+ txtPSupplier_IndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ txtPSupplier_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ txtQuantity_TextChanged(object sender, EventArgs e)

PEReceiptVoucher BAL

Attributes+ _pDalOperations+ CostCalculation(DataTable table, double rate)+ Insert(string tablename, DataTable GADtable, TransactionVouchers tv, WriteLog wl)+ LoadEmptyTable()+ LoadSupplierInfo(DataTable tb, int id)+ TotalCalculation(double GoodsPayment, double Taxpayment, double rate)

PEReceiptVoucher DAL

Attributes+ _adapter+ _conn+ _connStrOperations+ GetEmptyTable(int id)+ Insert(string tablename, DataTable GADtable, TransactionVouchers tv, WriteLog wl)+ PAReceiptVoucherDAL()

PAReceiptVoucher«interface»

Attributes+ _caching+ _loadTableInfoBal+ _pBal+ _transactionVoucher+ _writeLogOperations+ AccountNotGridIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ bAccept_Clicked(object sender, EventArgs e)+ CbAccountItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbBookNo_IndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbBookNo_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ cbDiscountAccount_IndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ cbGoods_ItemIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ cbGoods_ItemRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ cbInventory_IndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ cbInventory_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ cbTaxAccount_IndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbTaxCodeIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbTaxCodeItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CheckCostValue()+ dpPaymentDate_DateChanged(object sender, SelectedDateChangedEventArgs e)+ OnItemDataBoundHandler(object sender, GridItemEventArgs e)+ Page_Load(object sender, EventArgs e)+ RadGrid_Init(object sender, System.EventArgs e)+ RadGrid_ItemDeleted(object source, GridCommandEventArgs e)+ RadGrid_ItemInserted(object source, GridCommandEventArgs e)+ RadGrid_ItemUpdated(object source, GridCommandEventArgs e)+ RadGrid_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)+ RadGrid_PreRender(object sender, EventArgs e)+ txtDiscountRate_TextChanged(object sender, EventArgs e)+ txtPrice_TextChanged(object sender, EventArgs e)+ txtPSupplier_IndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ txtPSupplier_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ txtQuantity_TextChanged(object sender, EventArgs e)

PAReceiptVoucher BAL

Attributes+ _pDalOperations+ CostCalculation(DataTable table, double rate)+ LoadEmptyTable()+ LoadSupplierInfo(DataTable tb, int id)+ TotalCalculation(double GoodsPayment, double Taxpayment, double rate)

PAReceiptVoucher DAL

Attributes+ _adapter+ _conn+ _connStrOperations+ GetEmptyTable(int id)+ Insert(string tablename, DataTable GADtable, TransactionVouchers tv, WriteLog wl)+ PAReceiptVoucherDAL()

Detailed design: Class DiagramSSaleInvoiceMng

«interface»

Attributes+ _saleInvoiceBAL+ _tv+ _wlOperations+ bDelete_Click(object sender, EventArgs e)+ Page_Load(object sender, EventArgs e)+ RadAjaxManager1_AjaxRequest(object sender, AjaxRequestEventArgs e)+ RadGrid_ItemCreated(object sender, GridItemEventArgs e)+ SSaleInvoiceMng_Init(object sender, System.EventArgs e)+ SSaleInvoiceMng_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)+ SSaleInvoiceMng_PreRender(object sender, EventArgs e)

SSaleInvoiceMng BAL

Attributes+ _saleInvoiceDALOperations+ Delete(TransactionVouchers tv, WriteLog wl)+ LoadDataTable()

SSaleInvoiceMng DAL

Attributes+ _adapter+ _conn+ _connStr+ _dtOperations+ Delete(TransactionVouchers tv, WriteLog wl)+ LoadDataTable()+ SSaleInvoiceMngDAL()

SESaleInvoice«interface»

Attributes+ _caching+ _intResult+ _saleBAL+ _tableInfoBAL+ _tv+ _wlOperations+ bEdit_Click(object sender, EventArgs e)+ bSave_Click(object sender, EventArgs e)+ CalculateMoney(DataTable dt)+ CbAccountIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbAccountItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbBookNoIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbBookNo_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbDiscountAccountIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbDiscountAccountItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbGoodsIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbGoodsItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbInventoryIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbInventoryItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbPartnerIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbPartnerItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbTaxAccountIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbTaxAccountItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbTaxCodeIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbTaxCodeItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbVoucherIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbVoucher_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ DpPaymentChanged(object sender, EventArgs e)+ GetAccountName(int id)+ GetTranName(int id)+ OnItemDataBoundHandler(object sender, GridItemEventArgs e)+ Page_Load(object sender, EventArgs e)+ pClose_Click(object sender, EventArgs e)+ RadGrid_Init(object sender, System.EventArgs e)+ RadGrid_ItemDeleted(object source, GridCommandEventArgs e)+ RadGrid_ItemInserted(object source, GridCommandEventArgs e)+ RadGrid_ItemUpdated(object source, GridCommandEventArgs e)+ RadGrid_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)+ RadGrid_PreRender(object sender, EventArgs e)+ TxtDiscountChanged(object sender, EventArgs e)+ TxtQuantityChanged(object sender, EventArgs e)+ TxtSeDiscountAfterChanged(object sender, EventArgs e)

SESaleInvoice BAL

Attributes+ _saleDALOperations+ EmptyTable()+ GetCostOfGoodsSold(DateTime voucherDate, int id)+ GetSaleInvoice(int id)+ GetSaleInvoiceDetail(int id)+ GetTotalInventory(int id, int inventoryId, DateTime voucherDate)+ LoadListPrice(DateTime voucherDate, int id)+ Update(string tablename, DataTable GADtable, TransactionVouchers tv, WriteLog wl)

SESaleInvoice DAL

Attributes+ _adapter+ _conn+ _connStr+ _dtOperations+ EmptyTable()+ GetCostOfGoodsSold(DateTime voucherDate, int id)+ GetSaleInvoice(int id)+ GetSaleInvoiceDetail(int id)+ GetTotalInventory(int id, int inventoryId, DateTime voucherDate)+ LoadListPrice(DateTime voucherDate, int id)+ SESaleInvoiceDAL()+ Update(string tablename, DataTable GADtable, TransactionVouchers tv, WriteLog wl)

SASaleInvoice«interface»

Attributes+ _caching+ _intResult+ _saleBAL+ _tableInfoBAL+ _tv+ _wlOperations+ bSave_Click(object sender, EventArgs e)+ CalculateMoney(DataTable dt)+ CbAccountIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbAccountItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbBookNoIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbBookNo_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbDiscountAccountIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbDiscountAccountItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbGoodsIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbGoodsItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbInventoryIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbInventoryItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbPartnerIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbPartnerItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbTaxAccountIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbTaxAccountItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbTaxCodeIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbTaxCodeItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ CbVoucherIndexChanged(object sender, RadComboBoxSelectedIndexChangedEventArgs e)+ CbVoucher_ItemsRequested(object sender, RadComboBoxItemsRequestedEventArgs e)+ DpPaymentChanged(object sender, EventArgs e)+ GetAccountName(int id)+ GetTranName(int id)+ OnItemDataBoundHandler(object sender, GridItemEventArgs e)+ Page_Load(object sender, EventArgs e)+ pClose_Click(object sender, EventArgs e)+ RadGrid_Init(object sender, System.EventArgs e)+ RadGrid_ItemDeleted(object source, GridCommandEventArgs e)+ RadGrid_ItemInserted(object source, GridCommandEventArgs e)+ RadGrid_ItemUpdated(object source, GridCommandEventArgs e)+ RadGrid_NeedDataSource(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)+ RadGrid_PreRender(object sender, EventArgs e)+ TxtDiscountChanged(object sender, EventArgs e)+ TxtQuantityChanged(object sender, EventArgs e)+ TxtSeDiscountAfterChanged(object sender, EventArgs e)

SASaleInvoice BAL

Attributes+ _saleDALOperations+ EmptyTable()+ GetCostOfGoodsSold(DateTime voucherDate, int id)+ GetTotalInventory(int id, int inventoryId, DateTime voucherDate)+ Insert(string tablename, DataTable GADtable, TransactionVouchers tv, WriteLog wl)+ LoadListPrice(DateTime voucherDate, int id)

SASaleInvoice DAL

Attributes+ _adapter+ _conn+ _connStr+ _dtOperations+ EmptyTable()+ GetCostOfGoodsSold(DateTime voucherDate, int id)+ GetTotalInventory(int id, int inventoryId, DateTime voucherDate)+ Insert(string tablename, DataTable GADtable, TransactionVouchers tv, WriteLog wl)+ LoadListPrice(DateTime voucherDate, int id)+ SASaleInvoiceDAL()

Detailed design: Sequence Diagram

Database design

Business tables Support tables: Temp table, virtual table… Every table has a primary key named Id which is of type: int not null

identity(1, 1) Max length and null ability strictly follow field definitions UpdateCount column has default data is 0 Every business table will have the trigger to save all the table

changing

Database design We have 6 common columns:

IsActive Recording status of record

RegistedDate Recording date in the first time record is added

RegisterID Recording UserID in the first time record is added

UpdateDate Recording date for the second time update or later

UpdateUserID Recording UserID for the second time update or later

UpdateCount Recording times for updating

Database design

Part 5:Implementation

Technologies

Tools

Coding convention

Code review

Unit test

Security considerations

Technologies

.NET Framework 4SQL Server 2008RadControls for ASP.NET AJAX jQuery

Tools

Visual Studio 2010ResharperSQL PromptTortoiseSVN…..

Coding conventions

Follow general .NET coding conventionse.g. Pascal Casing, Camel Casing…Create specific conventions for the project

Code Review

By technical leadPeer review

Unit Test

Mainly for business access tier & data access tierUsing NUnit

Not done:Create NUnit report

Security considerations

Client side and server side validationNo SQL injectionEncrypt sensitive data:

Password Cookies

Part 6: Testing

Include: Test plan Bug control Test report

Testing phase

Part 6: How to test

Part 6: Bug list template

Test Report

Part 7: Demo & Q&A

Demo - Q&A

LOGO

top related