Tài liệu Đề tài Xây dựng chương trình quản lý kho hàng trong hệ thông tin kế toán: LỜI NÓI ĐẦU
Trong 20 năm trở lại đây, một xu thế được thấy đặc biệt rõ nét ở các nước phát triển là số công việc liên quan đến tạo lập, xử lý thông tin ở dạng này hoặc dạng khác tăng lên nhanh chóng. Điều này khác hẳn so với những năm nửa đầu thế kỷ 20, khi công việc lao động chân tay chiếm vị trí chủ đạo.
Một trong những nguyên nhân chính của hiện tượng này là các ngành công nghiệp dịch vụ (như ngân hàng, khách sạn, du lịch, xuất bản...) tăng vọt. Đa số công việc thuộc lĩnh vực dịch vụ đều liên quan đến xử lý thông tin. Xử lý thông tin bằng máy được bắt đầu vào những năm 50, những thay đổi trong công nghệ xử lý thông tin diễn ra với nhịp độ rất nhanh kèm theo nhiều biến chuyển không dễ nhận thấy.
Để có thể thích ứng được với các biến chuyển trong đời sông kinh tế – xã hội, chúng ta cần nắm được thông tin. Đó là thông tin về những thay đổi có khả năng xẩy ra trong tương lai gần, là thông tin về các khả năng đương đầu có thể lựa chọn, thông tin về những người khác hành động như thế...
99 trang |
Chia sẻ: hunglv | Lượt xem: 965 | Lượt tải: 0
Bạn đang xem trước 20 trang mẫu tài liệu Đề tài Xây dựng chương trình quản lý kho hàng trong hệ thông tin kế toán, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
LỜI NÓI ĐẦU
Trong 20 năm trở lại đây, một xu thế được thấy đặc biệt rõ nét ở các nước phát triển là số công việc liên quan đến tạo lập, xử lý thông tin ở dạng này hoặc dạng khác tăng lên nhanh chóng. Điều này khác hẳn so với những năm nửa đầu thế kỷ 20, khi công việc lao động chân tay chiếm vị trí chủ đạo.
Một trong những nguyên nhân chính của hiện tượng này là các ngành công nghiệp dịch vụ (như ngân hàng, khách sạn, du lịch, xuất bản...) tăng vọt. Đa số công việc thuộc lĩnh vực dịch vụ đều liên quan đến xử lý thông tin. Xử lý thông tin bằng máy được bắt đầu vào những năm 50, những thay đổi trong công nghệ xử lý thông tin diễn ra với nhịp độ rất nhanh kèm theo nhiều biến chuyển không dễ nhận thấy.
Để có thể thích ứng được với các biến chuyển trong đời sông kinh tế – xã hội, chúng ta cần nắm được thông tin. Đó là thông tin về những thay đổi có khả năng xẩy ra trong tương lai gần, là thông tin về các khả năng đương đầu có thể lựa chọn, thông tin về những người khác hành động như thế nào trong các hoàn cảnh tương tự... Chính vì vậy, các tổ chức cần có trong tay một khối lượng lớn thông tin đủ mạnh để có thể nắm bắt được nhu cầu của khách hàng, nhìn thấy rõ xu thế cạnh tranh và môi trường kinh tế bên ngoài; đồng thời phải xử lý các thông tin này một cách nhanh nhất để có những quyết định kịp thời.
Như vậy, việc nắm bắt thông tin nhanh chóng, chính xác sẽ làm giảm bớt các yếu tố bất định cho cả tổ chức lẫn cá nhân. Thông tin đã trở thành một vấn đề sống còn đối với mọi lĩnh vực của đời sống kinh tế xã hội; đặc biệt là trong lĩnh vực quản lý kinh tế và nghiên cứu ứng dụng khoa học.
Qua quá trình thực tập tại Công ty TNHH dược , với sự giúp đỡ tận tình của thầy giáo hướng dẫn Đặng Quế Vinh, cùng với sự chỉ bảo của các anh chị đang làm việc tại công ty Fast em đã hoàn thành xong chuyên đề của mình với đề tài mang tên: Xây dựng chương trình quản lý kho hàng trong hệ thông tin kế toán.
Đề tài này được hình thành trên cơ sở nhu cầu cung cấp một cách đầy đủ, nhanh chóng, chính xác và thường xuyên có tính tác nghiệp cũng như tổng hợp những thông tin về tình hình số lượng cũng như chất lượng và hiện trạng của vật tư, hàng hoá trong kho và luân chuyển qua kho cho người lãnh đạo đơn vị để ra quyết định xuất nhập kho hữu hiệu nhất trong từng thời điểm nhất định.
Đề tài gồm các chương sau:
Chương I: Công ty Phần mềm tài chính kế toán Fast và bài toán quản lý kho hàng trong hệ thông tin kế toán. Chương này giới thiệu về công ty Fast nơi em thưc tập và nội dung bài toán "Xây dựng chương trình quản lý kho hàng trong hệ thông tin kế toán".
Chương II: Khảo sát thực tế. Chương này giới thiệu khái quát về vấn dề quản lý kho hàng đối với một doanh nghiệp, những thông tin đầu vào và đầu ra của bài toán.
Chương III: Phân tích và thiết kế hệ thống cho chương trình "Quản lý kho"
Em xin bày tỏ sự cám ơn sâu sắc của em tới Thầy giáo Đặng Quế Vinh đã tận tình hướng dẫn em hoàn thành chuyên đề này; cám ơn rất nhiều sự giúp đỡ từ phía các cán bộ, nhân viên Công ty Fast trong thời gian em thực tập tại đây.
Tuy nhiên, do thời gian có hạn và do vốn kiến thức của em còn hạn chế, thiếu kinh nghiệm thực tế nên chắc sẽ không tránh khỏi những thiếu sót. Vậy kính mong thầy giáo và tất cả những người quan tâm đến đề tài này thông cảm và bổ sung thiếu sót cho em.
Một lần nữa em xin chân thành cảm ơn !
CHƯƠNG I
CÔNG TY PHẦN MỀM TÀI CHÍNH KẾ TOÁN FAST
VÀ BÀI TOÁN QUẢN LÝ KHO HÀNG
Vài nét về lịch sử thành lập công ty
1. Quá trình thành lập công ty và lĩnh vực kinh doanh
Những năm đầu thập kỷ 90 này, chủ trương phát triển một nền kinh tế mở nhiều thành phần của Đảng và Nhà nước đã được toàn dân nhiệt liệt hưởng ứng và thực hiện. Nhiều doanh nghiệp của Nhà nước, tập thể và tư nhân đã ra đời và hoạt động trong nhiều lĩnh vực kinh tế xã hội khác nhau mang lại hiệu quả đáng kể cho nền kinh tế quốc dân.
Cũng trong thời gian này hoạt động công nghệ thông tin ở nước ta được quan tâm và phát triển mạnh mẽ theo tinh thần Nghị định 49CP của Chính phủ. Các cơ quan, đơn vị đều mở rộng việc áp dụng kỹ thuật tin học mới vào công tác quản lý không chỉ trong việc trang bị máy móc thiết bị hiện đại mà còn xây dựng và ứng dụng những phần mềm mới mạnh hơn, phù hợp hơn với yêu cầu của đơn vị, nhất là trong lĩnh vực hoạt động tài chính - kế toán. Đó chính là tiền đề cho ý tưởng thành lập Công ty cổ phần phần mềm tài chính kế toán Fast của các ông Nguyễn Thành Nam và Nguyễn Hồng Chương.
Thời gian chuẩn bị cho sự ra đời của Công ty Cổ phần Phần mềm Tài chính Kế toán được bắt đầu từ tháng 6 năm 1996 với sự đầu tư trí lực và tiền vốn của một nhóm cán bộ khoa học kỹ thuật tâm huyết với ngành tin học. Đến tháng 6 năm 1997 Công ty chính thức tuyên bố thành lập theo giấy phép số 3096/GP – UB do Uỷ ban nhân dân thành phố Hà Nội cấp ngày 11/6/1997 và giấy chứng nhận đăng ký kinh doanh số 056067 do Sở Kế hoạch và Đầu tư thành phố Hà Nội cấp ngày 18/6/1997.
Tên tiếng Việt của Công ty là: Công ty Cổ phần Phần mềm Tài chính Kế toán. Tên tiếng Anh của Công ty là: The Financial & Accounting Software Company, viết tắt là FAST.
Trụ sở công ty được đặt tại số 18 Đường Nguyễn Chí Thanh Quận Ba Đình Hà Nội.
Những ngày đầu Công ty Fast chỉ mới gồm 4 thành viên là các ông:
Phan Quốc Khánh: Giám đốc
Phan Đức Trung : Phó giám đốc
Phạm Văn Lộc : Trưởng phòng triển khai
Phạm Văn Nam : Bảo vệ
Là công ty cổ phần do các cổ đông góp vốn nên để đi vào hoạt động, Công ty đã bầu ra một hội đồng quản trị bao gồm các ông bà sau:
Bà Đinh Thị Hoa : Chủ tịch HĐQT
Ông Nguyễn Thành Nam: Phó chủ tịch HĐQT
Ông Phan Quốc Khánh: Phó chủ tịch HĐQT kiêm Giám đốc
Ônng Phan Đức Trung: Thành viên HĐQT
Ông Nguyễn Hồng Chương
Ông Nguyễn Khắc Thành
Ông Khúc Trung Kiên
Vốn điều lệ của công ty là 1.000.000.000đ chia thành 10.000 cổ phiếu, mỗi cổ phiếu trị giá 100.000đ.
Lĩnh vực kinh doanh chủ yếu của công ty được xác định từ ban đầu và được ghi trong giấy đăng ký kinh doanh là:
Sản xuất kinh doanh các phần mềm máy tính
Buôn bán hàng tư liệu tiêu dùng (thiết bị điện tử tin học, máy tính)
Dịch vụ thông tin khoa học và công nghệ
Dịch vụ tư vấn chuyển giao công nghệ.
2. Tổ chức và quy trình sản xuất kinh doanh của công ty Fast
2.1. Tổ chức của công ty Fast
Từ chỗ chỉ có 4 nhân viên ngày đầu thành lập, sau hơn 3 năm hoạt động Công ty đã có một độ ngũ nhân viên hơn 30 người với một chi nhánh ở TP Hồ Chí Minh.
Công ty Fast là một công ty cổ phần vì vậy lãnh đạo cao nhất của Công ty là Hội đồng quản trị, nơi đưa ra những quyết định quan trọng liên quan tới định hướng phát triển lâu dài của Công ty.
Bên dưới Hội đồng quản trị là Ban giám đốc Công ty – bộ phận trực tiếp điều hành hoạt động sản xuất kinh doanh hàng ngày theo kế hoạch của Công ty mà người đứng đầu là ông Phan Quốc Khánh - Giám đốc Công ty. Ban giám đốc Công ty là nơi đưa ra những quyết định kinh doanh cụ thể, trực tiếp.
Cơ cấu tổ chức của Công ty còn bao gồm các bộ phận như: nghiên cứu thị trường, sản xuất, kinh doanh, triển khai, kế toán, đào tạo, văn phòng và chi nhánh ở thành phố Hồ Chí Minh.
Bộ phận nghiên cứu thị trường có nhiệm vụ tìm kiếm thị trường, tìm kiếm khách hàng có nhu cầu về sản phẩm của Công ty mà ở đây chủ yéu là các sản phẩm phần mềm quản lý kế toán.
Bộ phận sản xuất có nhiệm vụ chủ yếu là viết các chương trình, các phần mềm theo những yêu cầu cụ thể của khách hàng; đồng thời phất triển phần mềm kế toán của riêng Công ty với mục đích để bán cho đông đảo những doanh nghiệp Việt Nam.
Bộ phận kinh doanh và triển khai có nhiệm vụ cài đặt, hướng dẫn khách hàng sử dụng những phần mềm của Công ty, bảo hành sản phẩm trong thời hạn thoả thuận, giải đáp những thắc mắc của khách hàng trong quá trình họ sử dụng và khai thác sản phẩm của Công ty.
Để phục vụ cho sự phát triẻn và mở rộng Công ty trong tương lai, Công ty Fast rất chú trọng tới việc đào tạo con người, với mục đích tạo dựng một đội ngũ nhân viên có đầy đủ khả năng, có thể đáp ứng được mọi đòi hỏi ngày càng khắt khe của khách hàng. Chính vì vậy, Công ty đã thành lập một bộ phận đào tạo (nội bộ) với mục đích bồi dưỡng liên tục về trình độ hiểu biết tin học cũng như nghiệp vụ kế toán cho mọi nhân viên trong Công ty.
Bộ phận Kế toán có chức năng nhiệm vụ là quản lý tài chính của Công ty, theo dõi thanh toán các hợp đồng, thanh toán các chi phí cho hoạt động sản xuất kinh doanh của Công ty, thực hiện chế độ hạch toán kế toán theo chế độ Nhà nước ban hành.
Bộ phận văn phòng có nhiệm vụ thực hiện công tác hành chính, quản trị và quan hệ của Công ty.
Chi nhánh của Công ty tại thành phố Hồ Chí Minh như một cánh tay nối dài và chịu mọi sự quản lý, chỉ đạo về hoạt động sản xuất kinh doanh của Công ty trên địa bàn các tỉnh, thành phố phía nam.
Xin được tóm tắt về cơ cấu tổ chức của Công ty Fast qua sơ đồ dưới đây:
Hội đồng quản trị
Ban giám đốc
Thị trường
Sản xuất
Kinh doanh
Triển khai
Kế toán
Đào tạo (nội bộ)
Văn phòng
Chi
nhánh tại Tp HCM
2.2. Quy trình hoạt động sản xuất kinh doanh
Công ty Fast là công ty cổ phần hoạt động kinh doanh với mục đích tìm kiếm lợi nhuận. Mặc dù sản phẩm của Công ty là các phần mềm tin học chủ yếu phục vụ cho các doanh nghiệp kinh doanh khác nhưng quy trình hoạt động sản xuất kinh doanh của Công ty cũng không có gì khác các doanh nghiệp này.
Trước tiên, Công ty phải nghiên cứu thị trường, tìm hiểu và xác định những yêu cầu của khách hàng trong lĩnh vực tài chính, kế toán của họ. Song song với việc này, Công ty tiến hành tiếp thị, giới thiệu cho khách hàng về chức năng hoạt động của Công ty, những khả năng mà Công ty có thể cung cấp, hỗ trợ cho khách hàng và những sản phẩm tin học của Công ty.
Khi đã có khách hàng, Công ty tiến hành sản xuất hàng hoá theo yêu cầu của khách. Ở đây, mảng công việc được đầu tư chính là viết các chương trình, các phần mềm tin học mà chủ yếu là các phần mềm kế toán và quản lý. Việc cung cấp tư liệu tiêu dùng (máy móc thiết bị) và các dịch vụ khác chỉ chiếm tỷ trọng nhỏ trong doanh số của Công ty .
Công ty Fast không chỉ viết các phần mềm theo yêu cầu của khách hàng mà còn luôn cố gắng thiết kế, xây dựng những phần mềm có thể phục vụ đông đảo các doanh nghiệp tại Việt Nam trên cơ sở đã nắm bắt được xu hướng và nhu cầu chung, trong đó, sản phẩm chính là chương trình kế toán Fast Accounting.
Với những sản phẩm riêng có này Công ty phải giới thiệu, quảng cáo, chào hàng rộng rãi tới các doanh nghiệp, các đơn vị để họ mua và sử dụng thường xuyên trong hoạt động tài chính kế toán của họ. Đây là một nhiệm vụ hết sức quan trọng và không thể thiếu được của Công ty Fast.
Tiếp theo việc bán hoặc cung cấp sản phẩm theo yêu cầu khách hàng là việc cài đặt hướng dẫn sử dụng các phần mềm này và bảo hành sản phẩm trong thời hạn thoả thuận. Điều này làm cho quan hệ giữa khách hàng và Công ty chặt chẽ hơn, tin cậy hơn; khách hàng sẽ làm việc lâu dài với Công ty.
Sau khi sản phẩm, hàng hoá đựợc bàn giao và nghiệm thu giữa hai bên việc thanh toán tiền hợp đồng mua bán hoặc cung cấp được bộ phận kế toán của Công ty thực hiện và quyết toán hợp đồng.
Quy trình hoạt động sản xuất kinh doanh của công ty Fast có thể được tóm tắt qua bảng sau:
Công việc, công đoạn
Bộ phận thực hiện
Nghiên cứu thị trường và tiếp thị
Thị trường (Marketing)
Sản xuất
Sản xuất (lập trình)
Bán hàng
Bán hàng
Triển khai và bảo hành
Triển khai
Thu tiền
Kế toán
II. Bài toán quản lý kho hàng trong hệ thông tin kế toán.
Fast là một công ty chuyên viết các phần mềm hỗ trợ các doanh nghiệp trong lĩnh vực quản lý tài chính kế toán. Phần mềm kế toán của Công ty đang được sử dụng rộng rãi trong nhiều doanh nghiệp hiện nay là phần mềm Fast Accounting. Đứng trước yêu cầu đòi hỏi ngày càng cao của khách hàng và sự thay đổi trong hệ thống kế toán Việt Nam, công ty Fast đã liên tục cho ra đời những phiên bản tiếp theo của phần mềm Fast Accounting.
Tuy nhiên, phần mềm Fast Acounting trước đây mới chỉ được viết trên ngôn ngữ lập trình Visual Foxpro. Để phục vụ cho những nhu cầu ngày càng đa dạng của khách hàng và cho mục tiêu phát triển lâu dài, Công ty Fast đang xây dựng phiên bản Fast Acounting mới trên cơ sở ngôn ngữ lập trình Visual Basic. Trong quá trình thực tập, với sự hướng dẫn của các anh chị trong Công ty em đã được giao công việc xây dựng bài toán quản lý kho hàng.
1. Giới thiệu về hệ thông tin kế toán
Hệ thống thông tin kế toán là hệ thống thông tin kinh doanh được sử dụng rộng rãi và rất lâu đời. Nó ghi chép và báo cáo các hoạt động kinh doanh và các hoạt động kinh tế khác. Hệ thống thông tin kế toán dựa vào việc lưu giữ sổ sách kế toán thông qua khái niệm bút toán kép tồn tại hàng trăm năm nay và các khái niệm kế toán khác hiện đại hơn như khái niệm trách nhiệm và khái niệm lợi tức. Hệ thống kế toán trên máy ghi chép và báo cáo các dòng vốn lưu chuyển qua doanh nghiệp dựa trên các số liệu phát sinh và đưa ra các bản báo cáo tài chính như bảng cân đối tài sản, báo cáo kết quả kinh doanh. Hệ thống này còn lập nên các dự đoán về tình hình tương lai như các báo cáo tài chính dự tính và dự toán ngân sách tài chính. Sau đó tình hình thực hiện tài chính thực tế được đem đối chiếu với các dự tính trên cơ sở các báo cáo kế toán phân tích khác nhau.
Hệ thông tin kế toán gồm có các phân hệ sau: Kế toán tổng hợp (sổ cái), Kế toán công nợ phải thu, Kế toán công nợ phải trả, Kế toán bán hàng, Kế toán mua hàng, Kế toán hàng tồn kho, Kế toán tiền lương, Kế toán tài sản cố định, Kế toán tập hợp chi phí và tính giá thành.
Các phân hệ nêu trên tuy là nằm trong hệ thông tin kế toán nhưng đều liên hệ chặt chẽ, trao đổi thông tin với các hệ thông tin quản lý khác trong doanh nghiệp. Phân hệ kế toán bán hàng liên kết với phân hệ quản lý đơn hàng trong hệ thông tin tiếp thị và kinh doanh; phân hệ kế toán hàng tồn kho liên kết với phân hệ quản lý hàng tồn kho trong hệ thông tin quản lý sản xuất; phân hệ kế toán tiền lương liên kết với hệ thông tin quản lý nhân sự,...
2. Bài toán quản lý kho hàng
Ứng dụng tin học vào công tác quản lý kế toán là nhằm mục đích hạn chế tối đa những sai sót, và tạo ra những sự giúp đỡ thuận tiện hơn đối với người làm công tác quản lý và kế toán. Quản lý kho hàng là một phần trong công tác quản lý, kế toán của một doanh nghiệp sản xuất kinh doanh. Chính vì vậy đã xuất hiện yêu cầu xây dựng Bài toán quản lý kho hàng. Thông qua khảo sát thực tế ở một số doanh nghiệp, ta có thể rút ra một số thông tin về bài toán như sau :
Đầu vào của bài toán: Bộ phận kế toán kho hàng nhận dữ liệu về nhập mua và xuất bán từ hai bộ phận mua hàng và bán hàng. Đối với các đơn vị sản xuất thì còn có thêm các phiếu xuất vật tư cho sản xuất. Các phiếu xuất sử dụng nội bộ, các phiếu điều chuyển kho và các điều chỉnh thừa thiếu khi kiểm kê cũng là các thông tin đầu vào của bài toán này.
Đầu ra của bài toán: Bộ phận kế toán kho hàng cần phải cung cấp các báo cáo về nhập, xuất, tồn kho, sổ chi tiết vật tư, các thẻ kho của từng vật tư ở từng kho, các báo cáo phân tích về mức độ luân chuyển của các mặt hàng, vật tư, báo cáo báo động về hàng thừa và hàng thiếu,...
Sự liên kết với các bộ phận khác: Bộ phận kế toán hàng tồn kho nhận số liệu từ các bộ phận mua và bán đồng thời chuyển số liệu sang bộ phận kế toán tổng hợp.
Từ các thông tin về đầu vào, đầu ra của bài toán quản lý kho cùng với mối liên hệ giữa bộ phận kế toán kho đối với các bộ phận khác trong doanh nghiệp ta có thể nêu ra những chức năng và mục đích của bài toán như sau:
2.1. Mục đích của đề tài
Xây dựng một chương trình cho phép thực hiện và quản lý một chu trình khép kín từ đầu đến kết thúc một quan hệ xuất nhập kho giữa một kho hàng của công ty với một khách hàng hay một kho hàng khác.
2.2. Chức năng của chương trình quản lý kho hàng
Theo dõi danh mục vật tư
Theo dõi tồn kho tức thời và tồn kho cuối kỳ
Tính giá vật tư tồn kho: giá trung bình, giá nhập trước, xuất trước hoặc giá đích danh
Theo dõi nhập, xuất và điều chuyển kho
Theo dõi mức tồn kho tối thiểu và tối đa
Theo dõi theo VNĐ và ngoại tệ.
2.3. Yêu cầu cập nhật chứng từ
Vào phiếu nhập vật tư, hàng hoá
Vào phiếu xuất và phiếu xuất điều chuyển vật tư, hàng hoá, công cụ lao động
In phiếu nhập, phiếu xuất trên máy
Liên kết số liệu với các phân hệ kế toán phải trả (nhập mua), kế toán phải thu (bán hàng) và giá thành (phân bổ tiêu hao nguyên vật liệu, công cụ lao động).
2.4. Báo cáo
Thẻ kho, sổ chi tiết hàng hoá, vật tư
Báo cáo nhập xuất tồn, Báo cáo tồn kho
Báo cáo vật tư, hàng hoá chậm luân chuyển
Báo cáo nhập, xuất (chi tiết và tổng hợp): theo ngày, theo nhà cung cấp, theo đơn vị sử dụng, theo dạng nhập xuất, theo vụ việc.
Ta có thể biểu diễn thông tin đầu vào và đầu ra của bài toán quản lý kho hàng thông qua sơ đồ sau :
III. Môi trưòng và công cụ
Ngôn ngữ
Chương trình được viết trên ngôn ngữ Visual Basic. Việc sử dụng Visual Basic for Windows đã áp dụng triệt để thành tựu của khoa học hiện đại nói chung và tin học hiện đại nói riêng, cụ thể là :
Visual Basic cho phép liên lạc giữa các phòng chức năng trở nên dễ dàng đáp ứng được nhu cầu thực tế về việc thực hiện giao dịch trực tiếp với khách hàng, đồng thời quản lý chặt chẽ các nhu cầu của các mặt hàng trên thị trưòng. Thông tin chuyển giao kịp thời, chính xác sẽ giúp cho cán bộ quản lí kho hàng và các cán bộ thuộc bộ phận bán hàng có những quyết định đúng đắn, và kiểm soát hàng hoá trong kho của mình được chính xác hơn do vậy sự thất thoát hàng hoá giảm và việc kinh doanh tiến triển tốt hơn.
Visual Basic là một hệ thống mở nên ta có thể sử dụng được nhiều cơ sở dữ liệu khác nhau như Foxpro (*.dbf), Microsoft Access (*.mdb), SQL server, Orcal, DBII,... do đó có thể phát triển chương trình cho việc sử dụng trên mạng diện rộng cho một Tổng Công Ty lớn hay một tập đoàn kinh tế ...
Visual Basic là ngôn ngữ bậc cao cung cấp cho người lập trình nhiều công cụ được sử dụng nhằm thiết kế chương trình sao cho có được một giao diện đẹp và thân thiện với người dùng.
Visual Basic là ngôn ngữ hướng đối tượng nên dễ lập trình, dễ bảo trì, dễ nâng cấp trong tương lai.
Các thuật ngữ được sử dụng trong ngôn ngữ Visual Basic:
Project: là sự liên kết của các Form, Module, Class, Aplicaltion, Custom contron để tạo thành chương trình.
Object: là các đối tượng mà ta có thể điều khiển chùng thông qua các thuộc tính của chúng. Ví dụ : Form, Data contron, Text box,...
Form: là màn hình giao diện mà người lập trình hoặc do Visaul Basic tạo ra trong khi thiết kế chương trình. MDIForm là form chính được tạo ra để làm nền chính cho chương trình mà qua đó ta điều khiển các Form con nhằm phục cho các mục đích cuả chương trình.Trên các Form nói chung chứa các đối tượng như Command button, Check button, Text box, Label...
Module: là tệp chứa các thủ tục xử lí .
Contron: là các đối tượng có thể điều khiển dùng trên Form nhằm lấy dữ liệu ví dụ Data contron..., hội thoại với người dùng Common dialog, Crytal repost...
Database: là một cơ sở dữ liệu thể hiện là một file. Ví dụ : (*.mdb) với Microsoft Access. Một Database có thể có nhiều bảng. Nói chung với một chương trình chỉ cần một Database để chứa dữ liệu. Khối lượng thông tin, dữ liệu có thể được chứa trong một Database là phụ thuộc vào tài nguyên của máy tính mà cụ thể là dung lượng bộ nhớ chứ không hạn chế số Table ( bảng ).
Table (bảng): là một phần của cơ sở dữ liệu nơi trực tiếp lưu trữ thông tin.
Cơ sở dữ liệu
Có ba loại dữ liệu chính mà Visual Basic có thể sử dụng được là:
Microsoft Access: là một hệ quản trị dữ liệu mà những tệp dữ liệu có thể được thao tác trực tiếp bởi Visual Basic. Đây là dạng dữ liệu chính của Visual Basic – Nó cung cấp rất nhiều khả năng và cho tốc độ truy nhập cao.
External Database. Những tệp dữ liệu loại này bao gồm những dạng dữ liệu như Btrieve, dBase III, dBase IV, Microsoft Foxpro Version 2.0 và 2.5 và Paradox. Ta có thể tạo hay thao tác tất cả các kiểu cơ sở dữ liệu trên bằng Visual Basic. Các tệp dạng ISAM của Visual Basic for MS-Dos không được hỗ trợ trực tiếp nhưng chúng có thể được chuyển thành dạng ASCII và sau đó chuyển lại thành dạng của Visual Basic.
External ODBC database: Loại này bao gồm các hệ quản trị cơ sở dữ liệu trên mạng client/server như Microsoft SQL server, DBII, Oracle... Trong trường hợp các tệp dữ liệu dạng ODBC, ta có thể gửi hoặc nhận những câu hỏi, câu trả lời thông qua việc gửi trực tiếp câu lệnh SQL tới Server.
Trong chương trình này, hệ cơ sở dữ liệu được xây dựng chủ yếu trong Microsoft Access vì đây là dạng dữ liệu được thao tác trực tiếp trên Visual Basic và có tốc độ truy nhập nhanh nhất.
Môi trường làm việc
Chương trình được thực hiện tốt trên các phiên bản Windows 9x, trong môi trường hệ điều hành mạng Novel Netware, Window NT,...
CHƯƠNG II
KHẢO SÁT THỰC TẾ
Qua khảo sát thực tế ở một số doanh nghiệp ta có thể tóm tắt lại quá trình lưu chuyển luồng thông tin trong doanh nghiệp như sau:
CỬA HÀNG
BANGIÁM ĐỐC
PHÒNG KẾ HOẠCH
PHÒNG KINH DOANH
Kho
PHÒNG TÀI VỤ
BANGIÁM ĐỐC
PHÒNG KẾ HOẠCH
PHÒNG KINH DOANH
Kho
PHÒNG TÀI VỤ
Luồng thông tin trong nhà máy
CỬA HÀNG
BANGIÁM ĐỐC
Kho
PHÒNG TÀI VỤ
PHÒNG KẾ HOẠCH
PHÒNG KINH DOANH
CƠ SỞ DỮ LIỆU
Luồng thông tin trong hệ thống tin học
I. Tóm tắt chức năng, nhiệm vụ, tổ chức và các quy trình nghiệp vụ của một công ty trong quản lý kho hàng
1. Chức năng, nhiệm vụ và tổ chức của công ty trong quản lý kho hàng
Mỗi một công ty có thể có nhiều địa điểm để cất trữ hàng hoá vật tư của mình. Các kho hàng này chịu sự quản lý trực tiếp từ trên công ty. Chức năng của các kho hàng là lưu giữ bảo quản các loại hàng hoá, vật tư của công ty, phân loại, sắp xếp hàng hoá vật tư theo chủng loại, thực hiện việc xuất nhập hàng hoá, vật tư theo các phiếu xuất nhập kho và phiếu lưu chuyển nội bộ, thực hiện việc thống kê, báo cáo về tình hình hàng tồn kho, tình hình xuất nhập hàng tại kho lên công ty kho.
Mối liên hệ giữa Ban giám đốc công ty và bộ phận quản lý kho có thể được mô tả theo sơ đồ dưới đây:
Công ty
Tổng kho
Kho 1
…
2. Mô tả thông tin và các quy trình nghiệp vụ
2.1. Mô tả thông tin
Tại mỗi kho hàng luôn có những thông tin đến và đi hết sức đa dạng về dạng, loại thông tin và cả về hình thức truyền tin. Sự đa dạng này phụ thuộc vào loại doạnh nghiệp, hình thức kinh doanh và vào cả loại hàng hoá, vật tư kinh doanh của doanh nghiệp.
Xét về các dạng thông tin ta thấy có thể là những file dữ liệu, cũng có thể là những văn bản báo cáo giấy tờ....
Xét về các loại thông tin đến và đi thì đó có thể là những văn bản, hoá đơn hay báo cáo...
Hình thức truyền tin có thể thông qua bưu điện, điện thoại, Fax, các đường truyền tin qua mạng hay con đường chuyển giao giấy tờ trong nội bộ công ty.
2.2. Các quy trình nghiệp vụ trong việc quản lý kho
Đối với mỗi kho hàng ta thấy những nghiệp vụ sau cần phải được thể hiện trong bài toán:
Nhận các hoá đơn bán hàng cho tất cả các đối tượng trong khu vực, vào sổ lưu.
Tính toán tiền thu, tiền thực thu, tiền nợ với từng khách hàng.
Theo dõi tình hình hàng hoá tồn của từng kho.
In ra các báo cáo hàng ngày, hàng tháng, hoặc bất kỳ (các mẫu báo cáo được xét đến ở phần sau).
II. Mô tả hệ thống thông tin điều hành và quản lý
1. Mục tiêu quản lý
Hệ thống thông tin điều hành và quản lý kho hàng được xây dựng với mục đích phục vụ và quản lý có hiệu quả quá trình điều hành công việc, xử lý, khai thác, trao đổi thông tin trong nội bộ công ty, giữa Ban giám đốc công ty với bộ phận quản lý kho và giữa các kho trong công ty ....
Các khâu xử lý bao gồm:
Tiếp nhận thông tin từ các bộ phận đưa vào bộ nhớ (hoá đơn, báo cáo, file dữ liệu....).
Xử lý công việc.
Theo dõi qúa trình bán hàng đối với từng khách hàng, quá trình thu tiền, theo dõi các khoản nợ, ....
Tổ chức lưu trữ thông tin
Cung cấp thông tin .
Khai thác thông tin (tìm kiếm, tra cứu....).
Tổng hợp thông tin, lập thống kê, báo cáo.
Trao đổi thông tin trong nội bộ.
2. Mô tả thông tin
Thông tin của hệ thống có thể chia làm 3 loại chính:
2.1. Thông tin danh mục
Các thông tin chung phục vụ việc quản lý, khai thác và theo dõi gọi là thông tin danh mục. Do nhu cầu phát triển và loại bỏ nên các danh mục này phải được thiết kế mở, có thể thay thế, sửa chữa, loại bỏ cũng như thêm vào.
Thông tin danh mục bao gồm:
Danh mục vật tư
Danh mục khách hàng
Danh mục các kho
Danh mục người sử dụng.
2.1.1. Danh mục các loại vật tư
Danh mục vật tư bao gồm tất cả các loại hàng hoá, vật tư có trong kho của công ty, gồm cả hàng hoá, vật tư công ty nhập vào cũng như xuất ra. Để phân biệt một cách chính xác giữa các loại hàng hoá, vật tư khác nhau, bên cạnh tên gọi mỗi một loại vật tư, hàng hoá sẽ được gán cho một mã gọi chung là mã vật tư.
MÃ VẬT TƯ
TÊN VẬT TƯ
01
02
03
A
B
C
2.1.2. Danh mục khách hàng
Danh mục khách hàng bao gồm tất cả các khách hàng có giao dịch với công ty, gồm cả khách hàng đến mua hàng hoá, vật tư của công ty cũng như đến bán hàng cho công ty. Để phân biệt một cách chính xác giữa các khách hàng khác nhau, bên cạnh tên gọi mỗi một khách hàng sẽ được gán cho một mã gọi chung là mã khách hàng. Ngoài ra mỗi khách hàng còn có những thông tin thêm như địa chỉ, số điện thoại.
MÃ KHÁCH HÀNG
TÊN KHÁCH HÀNG
TEL
ĐỊA CHỈ
AD-11001
AD-11002
AD-11003
AD-11006
AD-11008
Hanel shop
Hai yen
Dong an
Ha noi
ngmbv
8522246
8467345
8342790
8763459
8231678
91 Pho Hue
12 Ngo Quyen
23 Nguyen Du
167 Le Loi
98 Ly Nam De
2.1.3. Danh mục các kho
Danh mục kho bao gồm tất cả các kho hiện có của công ty. Để phân biệt một cách chính xác giữa các kho hàng khác nhau, bên cạnh tên gọi, mỗi một kho hàng sẽ được gán cho một mã gọi chung là mã kho. Ngoài ra mỗi kho hàng còn có thông tin thêm đó là địa chỉ hiện tại của kho.
MÃ KHO
TÊN KHO
ĐỊA CHỈ
HCM 01
HN 02
Daewoo-shop
Daewoo-Hanel
26/33 Van Don street, HCM city
98 Thanh Niên street, HN city
2.1.4. Danh mục người sử dụng
Danh mục người sử dụng bao gồm tất cả những người sử dụng hiện có đối với chương trình. Để phân biệt một cách chính xác giữa những người sử dụng chương trình khác nhau bên cạnh tên người sử dụng, mỗi một người sử dụng sẽ được gán cho một mã gọi chung là mã người sử dụng. Ngoài ra mỗi người sử dụng còn có thông tin thêm đó là mật khẩu và mức sử dụng. Mức sử dụng quy định cho mỗi người sử dụng chỉ được phép truy nhập, sử dụng chương trình tới một mức độ cho phép do người cấp quyền quy định. Mật khẩu giúp bảo đảm mỗi người sử dụng truy nhập chương trình đúng theo quyền của mình.
MÃ NGƯỜI SỬ DỤNG
TÊN NGƯỜI SỬ DỤNG
MỨC SỬ DỤNG
MẬT KHẨU
0001
0002
Thuc Anh
Phong Hai
1
2
***
***
2.2. Dữ liệu tác nghiệp.
Các nội dung thông tin cần quản lý như hoá đơn xuất kho, hoá đơn vận chuyển nội bộ, hợp đồng bán trả góp, phiếu bảo hành, tình trạng kho hàng,... được gọi chung là dữ liệu tác nghiệp.
Dữ liệu tác nghiệp là các nội dung thông tin cần đưa vào hệ thống trên cơ sở các nhu cầu về thông tin đầu ra và khả năng thu thập các dữ liệu đó.
Sau đây là mô tả đối với một số dữ liệu tác nghiệp: Hoá đơn xuất kho, hoá đơn nhập kho, hoá đơn vận chuyển nội bộ.
2.2.1. Hoá đơn xuất kho
Đơn vị : Mẫu số :03 – VT
QĐ số 1141 – TC/CĐKT
Ngày 1/1/1998 của Bộ Tài chính
PHIẾU XUẤT KHO
Ngày tháng năm
Số hiệu :
Số :
Nợ:
Có:
Họ tên người nhận hàng:
Xuất tại kho:
Lý do xuất kho:
STT
Tên, quy cách, sản phẩm
Mã SP
DVT
Số lượng
Đơn giá
Thành tiền
A
B
C
D
1
2
3
Cộng
Viết bằng chữ:
Xuất ngày tháng năm
Người nhận Thủ kho
2.2.2. Hoá đơn nhập kho
Đơn vị : Mẫu số :03 – VT
QĐ số 1141 – TC/CĐKT
Ngày 1/1/1998 của Bộ Tài chính
PHIẾU NHẬP KHO
Ngày tháng năm
Số hiệu :
Số :
Nợ:
Có:
Họ tên người giao hàng:
Nhập tại kho:
Diễn giải:
STT
Tên, quy cách, sản phẩm
Mã SP
DVT
Số lượng
Đơn giá
Thành tiền
A
B
C
D
1
2
3
Cộng
Viết bằng chữ:
Nhập ngày tháng năm
Người nhận Thủ kho
2.2.3. Hoá đơn vận chuyển nội bộ
Đơn vị : Mẫu số :03 – VT
QĐ số 1141 – TC/CĐKT
Ngày 1/1/1998 của Bộ Tài chính
PHIẾU LƯU CHUYỂN NỘI BỘ
Ngày tháng năm
Số hiệu :
Số :
Nợ:
Có:
Họ tên người giao hàng:
Xuất tại kho:
Nhập tại kho:
Diễn giải :
STT
Tên, quy cách, sản phẩm
Mã SP
DVT
Số lượng
A
B
C
D
1
Cộng
Ngày tháng năm
Người nhận Thủ kho
2.3. Thông tin kết xuất
Các báo cáo (Report) sau quá trình xử lý và tổng hợp thông tin được gọi là các thông tin kết xuất.
Thông tin kết xuất là kết quả của quá trình thu thập, xử lý các dữ liệu tác nghiệp. Thông tin kết xuất có thể hiểu là nhu cầu và đòi hỏi của các nhà quản lý đối với hệ thống.
2.3.1. Biểu báo tình hình xuất nhập kho
Công ty Fast BIỂU BÁO TÌNH HÌNH XUẤT NHẬP KHO
18 Nguyễn Chí Thanh Hà Nội Trong tháng : 01
Đơn vị tính : VND
Mã CT
Tên VT
Nhập
Xuất
Số Lượng
Đơn giá
Thành tiền
Số Lượng
Đơn giá
Thành tiền
01-01
Vinataba
10
6000
60000
01-01
555
20
13000
260000
01-02
Everest
10
6000
60000
01-02
Dulhill
50
10000
500000
01-01
Dulhill
40
12000
480000
01-01
555
15
20000
300000
01-01
Vinataba
10
7000
70000
Tổng nhập : 880000 Tổng xuất : 850000
Lợi tức : -30000
Ngày lập biểu : 29/02/2000
Người lập biểu
2.3.2. Biểu báo tình hình tồn kho
Công ty Fast
18 Nguyễn Chí Thanh Hà Nội
BIỂU BÁO TÌNH HÌNH HÀNG TỒN KHO
Mã kho
Tên kho
Tên vật tư
Số lượng
Đơn giá
Thành tiền
01
Kho1
Vinataba
10
6000
60000
01
Kho 1
555
20
13000
260000
01
Kho1
Everest
10
6000
60000
01
Kho1
Dulhill
50
10000
500000
02
Tổng kho
Dulhill
50
10000
500000
02
Tổng kho
555
20
13000
260000
02
Tổng kho
Vinataba
10
6000
60000
Ngày lập biểu : 29/02/2000
Người lập biểu
CHƯƠNG III
PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
Phân tích hệ thống
Phân tích hệ thống có cấu trúc là phương pháp tiếp cận hiện đại tới các giai đoạn phân tích và thiết kế của Chu trình phát triển hệ thống. Phương pháp này được chấp thuận để khắc phục những điểm yếu của nhiều cách tiếp cận truyền thống trước đây.
Mục đích của giai đoạn này là đưa ra phương pháp phân tích Lôgic về hệ thống hiện thời, từ đó rút ra các yêu cầu của nghiệp vụ quản lý kho hàng.
1. Sơ đồ luồng thông tin
Quá trình khảo sát về quản lý kho hàng trong một công ty đã tạo điều kiện thuận lợi để xây dựng sơ đồ trao đổi luồng thông tin tổng thể của quản lý kho hàng trong một công ty. Từ sơ đồ trao đổi thông tin này trở về sau trong quá trình phân tích thiết kế cơ sở dữ liệu, ta chỉ cần quan tâm đến các luồng thông tin chuyển đến và chuyển đi từ kho hàng. Sơ đồ này sẽ cho ta cái nhìn tổng quát về quá trình trao đổi thông tin nghiệp vụ giữa các qúa trình quản lý kho hàng của một công ty.
Sau đây sẽ là sơ đồ trao đổi thông tin nghiệp vụ quản lý kho
Từ các bộ phận
Kế toán vật tư
Lãnh đạo
Vật tư
Các bộ phận sản xuất
Bộ phân bán hàng
Chứng từ ban đầu
Phiếu nhập
Phiếu xuất
Báo cáo
Nhập
Xuất
Tồn
Sơ đồ luồng thông tin ICO
Quy trình trao đổi luồng thông tin nghiệp vụ quản lý kho được mô tả như sau:
Căn cứ vào tình hình xuất nhập hàng hoá, nguyên vật liệu của công ty các bộ phận sản xuất và bộ phận bán hàng sẽ ra quyết định xuất nhập vật tư, hàng hoá.
Khối lượng xuất nhập nguyên vật liệu được ghi trong các phiếu xuất nhập
Căn cứ vào khối lượng nguyên vật liệu xuất nhập sẽ tính toán lại lượng tồn trong các kho của công ty.
Xuất phát từ các phiếu xuất nhập kho và tình hình hàng hoá tồn kho sẽ tổng hợp thành những báo cáo gửi cho ban lãnh đạo công ty.
2. Sơ đồ luồng dữ liệu
Sơ đồ luồng dữ liệu DFD là một công cụ dùng để trợ giúp cho bốn hoạt động chính của nhà phân tích.
Phân tích DFD được dùng để giúp xác định yêu cầu của người sử dụng.
Thiết kế dùng để vạch kế hoạch và minh hoạ các phương án cho nhà phân tích và người dùng xem xét khi thiết kế hệ thống mới.
Liên kết - một trong những sức mạnh của DFD là tính đơn giản và dễ hiểu đối với nhà phân tích và người sử dụng.
Tài liệu: Việc dùng mô hình đồ thị như DFD trong đặc tả yêu cầu hình thức và thiết kế hệ thống là một nhân tố làm giản đơn hoá chính trong việc tạo ra và chấp nhận những tài liêu như vậy
Báo cáo
Quyết định
Ban lãnh đạo sản xuất kinh doanh
1.0
Xuất nhập NNVL, công cụ
2.0
Xuất nhập sản phẩm
3.0
Tính tồn
Lãnh đạo
Quyết định
3. Sơ đồ dòng dữ liệu phân rã mức 0 của hệ thông tin
4. Sơ đồ dòng dữ liệu phân rã mức 1 của hệ thông tin 5. Sơ đồ quan hệ giữa các thực thể
Có 3 kiểu quan hệ chính được sử dụng dưới các dạng đơn giản nhất của mô hình quan hệ. Đó là các loại ràng buộc một - một (1-1), một – nhiều (1-N), nhiều - nhiều (N-N).
Quá trình phân tích thiết kế dữ liệu đã dẫn đến việc hình thành một hệ thống các mối quan hệ giữa các tập tin với nhau. Hệ thống các mối quan hệ này có liên quan ràng buộc với nhau một cách chặt chẽ theo các nguyên tắc nhất định.
Dưới đây em xin trình bày hai sơ đồ quan hệ chính sau:
Sơ đồ quan hệ thực thể đối với phiếu Nhập kho:
DM_Kho
Ma_Kho *
Ten_Kho
Đia_chi
DM_Khach
Ma_Kh *
Ten_Kh
Đia_chi
DM_Vattu
Ma_vt *
Ten_vt
Soluong_min
Soluong_max
Dvi_tinh
Phieu_Nh
STT
Ma_ct *
Ngay
Ma_kh
Dien_giai
Ma_kho
TK_no
TK_co
Ct_Nhap
Ma_ct *
STT0 *
STT
Ma_vt
So_luong
Don_gia
Sơ đồ quan hệ thực thể đối với phiếu Xuất kho
DM_Kho
Ma_Kho *
Ten_Kho
Đia_chi
DM_Khach
Ma_Kh *
Ten_Kh
Đia_chi
DM_Vattu
Ma_vt *
Ten_vt
Soluong_min
Soluong_max
Dvi_tinh
Phieu_X
STT
Ma_ct *
Ngay
Ma_kh
Dien_giai
Ma_kho
TK_no
TK_co
Ct_Xuat
Ma_ct *
STT0 *
STT
Ma_vt
So_luong
Don_gia
II. Cấu trúc dữ liệu.
Tất cả các thực thể được lưu trữ trong file Hethong.mdb trong cùng thư mục chứa chương trình quản lý kho. Chúng ta có các thực thể sau:
Mật khẩu
Tên thực thể là MK, là nơi lưu trữ danh sách những người sử dụng chương trình với tên NSD, mức sử dụng, và mật khẩu của NSD.
THUỘC TÍNH
SỬ DỤNG
KIỂU
ĐỘ DÀI
GHI CHÚ
Ma
NSD
MK
MSD
ID
Autonumber
Char
Char
Longint
30
10
Trường khoá chính
Tên người sử dụng
Mật khẩu của NSD
Mức sử dụng
2. Danh mục kho
Tên thực thể là DmKho, là nơi lưu trữ danh mục các kho của công ty.
THUỘC TÍNH
SỬ DỤNG
KIỂU
ĐỘ DÀI
GHI CHÚ
MaKho
TenKho
DiaChi
ID
Char
Char
Char
5
30
30
Trường khoá chính
Tên vật tư
Địa chỉ
3. Danh mục vật tư
Tên thực thể là DMVT, là nơi lưu trữ danh mục các hàng hoá vật tư có trong kho của công ty.
THUỘC TÍNH
SỬ DỤNG
KIỂU
ĐỘ DÀI
GHI CHÚ
MaVT
TenVT
Dv_Tinh
Sl_min
Sl_max
ID
Char
Char
Char
Long_Integer Long_Integer
5
30
10
Trường khoá chính
Tên vật tư
Đơn vị tính
Số lưọng nhỏ nhất
Số lưọng lớn nhất
4. Danh nục khách
Tên thực thể là DMKH, là nơi lưu trữ danh mục các khách hàng có quan hệ xuất nhập hàng hoá, vật tư với công ty.
THUỘC TÍNH
SỬ DỤNG
KIỂU
ĐỘ DÀI
GHI CHÚ
MaKh
TenKh
Tel
DiaChi
ID
Char
Char
Char
Char
5
30
11
50
Trường khoá chính
Tên khách hàng
Điện thoại của khách
Địa chỉ của khách
5. Phiếu nhập (Master)
Tên thực thể là PhieuNh, là nơi lưu trữ danh mục các phiếu nhập kho đối với các kho của công ty.
THUỘC TÍNH
SỬ DỤNG
KIỂU
ĐỘ DÀI
GHI CHÚ
Ma_CT
Ngay
TK_NO
TK_CO
MA_KH
MA_KHO
DIEN_GIAI
ID
Char
Date
Char
Char
Char
Char
Char
5
5
5
5
5
30
Trường khoá chính
Ngày chứng từ
Tài khoản nợ
Tài khoản có
Mã khách giao hàng
Mã kho nhập
Ghi chú
6. Chi tiết nhập (Details)
Tên thực thể là CtNh, là nơi lưu trữ danh mục các dòng của phiếu nhập kho có mã là Ma_Ct.
THUỘC TÍNH
SỬ DỤNG
KIỂU
ĐỘ DÀI
GHI CHÚ
MA_CT
STT0
MA_VT
SO_LUONG
DON_GIA
ID
ID
Char
Number
Char
Number
Number
5
5
Mã chứng từ
Số thứ tự từng dòng
Mã vật tư
Số lượng
Đơn giá
1 many
Invoice(Master) Invoice(Details)
7. Phiếu lưu chuyển (Master).
Tên thực thể là PhieuLc, là nơi lưu trữ danh mục các phiếu nhập lưu chuyển của một kho đối với các kho khác của công ty.
THUỘC TÍNH
SỬ DỤNG
KIỂU
ĐỘ DÀI
GHI CHÚ
Ma_CT
Ngay
TK_NO
TK_CO
MA_KHO_N
MA_KHO_X
DIEN_GIAI
ID
Char
Date
Char
Char
Char
Char
Char
5
5
5
5
5
30
Trường khoá chính
Ngày chứng từ
Tài khoản nợ
Tài khoản có
Mã kho nhập
Mã kho xuất
Ghi chú
8. Chi tiết lưu chuyển (Details)
Tên thực thể là CtLc, là nơi lưu trữ danh mục các dòng của phiếu lưu chuyển có mã là Ma_Ct.
THUỘC TÍNH
SỬ DỤNG
KIỂU
ĐỘ DÀI
GHI CHÚ
MA_CT
STT
MA_VT
SO_LUONG
ID
ID
Char
Number
Char
Number
5
5
Mã chứng từ
Số thứ tự từng dòng
Mã vật tư
Số lượng
1 many
Local voicher (Master) Local voicher (Details)
9. Phiếu xuất (Master)
Tên thực thể là PhieuX, là nơi lưu trữ danh mục các phiếu xuất kho đối với các kho của công ty.
THUỘC TÍNH
SỬ DỤNG
KIỂU
ĐỘ DÀI
GHI CHÚ
Ma_CT
Ngay
TK_NO
TK_CO
MA_KH
MA_KHO
DIEN_GIAI
ID
Char
Date
Char
Char
Char
Char
Char
5
5
5
5
5
30
Trường khoá chính
Ngày chứng từ
Tài khoản nợ
Tài khoản có
Mã khách nhận hàng
Mã kho xuất
Ghi chú
10. Chi tiết xuất (Details)
Tên thực thể là CtXuat, là nơi lưu trữ danh mục các dòng của phiếu xuất kho có mã là Ma_Ct.
THUỘC TÍNH
SỬ DỤNG
KIỂU
ĐỘ DÀI
GHI CHÚ
MA_CT
STT0
MA_VT
SO_LUONG
DON_GIA
ID
ID
Char
Number
Char
Number
Number
5
5
Mã chứng từ
Số thứ tự từng dòng
Mã vật tư
Số lượng
Đơn giá
1 many
Invoice(Master) Invoice(Details)
11. Hàng tồn kho
Tên thực thể là TonKho, là nơi lưu trữ khối lượng hàng tồn kho đôí với từng mặt hàng và ở tựng kho.
THUỘC TÍNH
SỬ DỤNG
KIỂU
ĐỘ DÀI
GHI CHÚ
MaKho
MaVt
Ton_dq
ID
ID
Char
Char
Number
5
5
Mã kho
Mã vật tư
Lượng hàng tồn kho
III. Cấu trúc chương trình
Do cơ cấu tổ chức, thực tế công việc hiện nay của công ty nên sẽ chia toàn bộ hệ thống thành một số bài toán nhỏ nhưng vẫn cố gắng đảm bảo được tính nhất quán của cơ sở dữ liệu, tiện lợi cho việc hợp nhất thành một hệ thống hoàn chỉnh khi có điều kiện. Cấu trúc chương trình được thể hiện thông qua sơ đồ sau:
Quản lý kho hàng
Hệ thống danh mục
Giao dịch
Tìm kiếm và xử lý
Báo cáo
-DM Khách
-DM Kho
-DM Vật tư
-DM Chứng từ
-Phiếu nhập
-Phiếu xuất
-Phiếu lưu chuyển
-Tìm theo kho
-Tìm theo mã
-Tính hàng tồn
-Báo cáo tồn
-Báo cáo tổng hợp
-Thẻ kho
1. Phạm vi sủ dụng: Chương trình được sử dụng trong các kho hàng khu vực như: tổng kho, các kho con....
2. Dữ liệu vào: các hoá đơn xuất kho, phiếu bán hàng, phiếu vận chuyển nội bộ.
3. Thông tin kết xuất: Các báo cáo tình trạng xuất nhập của từng kho trong từng ngày, từng tháng, tình trạng kho hàng, bảng tổng hợp tình hình xuất nhập hàng gửi cho ban giám đốc công ty, các báo cáo trợ giúp quá trình phân tích kinh doanh.
4. Nhiệm vụ: Nhận các thông tin về sản phẩm có trong kho của mình (Transaction-Product file maintain).
Nhận các thông tin về kho (Transaction- Location Maintain).
Nhập vào máy các thông tin về hoá đơn bán hàng (Input/Output- Output voucher).
Nhập vào máy các hoá đơn vận chuyển nội bộ các mặt hàng chuyển từ kho khác đến, chuyển tới các kho khác (Input/Output .... Move local voucher).
Tổng kết tất cả các thông tin đưa vào bộ nhớ (Automatic).
Đưa ra các báo cáo theo mẫu, theo yêu cầu hỏi đáp (report).
CÔNG TY
Tổng kho
Kho 1
....
Kho 2
IV. Một số thuật toán trong chương trình
1. Thuật toán kiểm tra người sử dụng
false
True
True
False
Begin
-Nhập tên người sử dụng
-Nhập mật khẩu
Kiểm tra tên và MK
Hiện màn hình làm việc của chương trình
Có nhập lại không
Thoát khỏi chương trình
End
2. Thuật toán nhập phiếu nhập
True
false
True
false
Begin
Nhập ngày,mã chứng từ,Tk nợ có, diễn giải
Nhập mã kho
Kiểm tra mã kho trong bảng DM_kho
Hiện bảng DM_kho để chọn
Nhập mã khách
Lấy tên kho tương ứng điền vào hộp tên kho
Hiện bảng DM_kho để chọn
Lấy tên khách tương ứng điền vào hộp tên khách
Kiểm tra mã khách trong bảng DM_kh
false
True
false
True
Nhập mã vật tư
Kiểm tra mã vật tư trong bảng DM_vt
Hiện bảng DM_vt để chọn
Lấy tên vật tư tương ứng điền vào hộp tên vật tư
Nhập số lượng, đơn giá của vật tư
Tính tổng giá trị
Có nhập nữa không
Tính lại lượng tồn trong kho, lưu lại giá trị mới
Lưu phiếu nhập vào bảng phiếu nhập và bảng phiếu nhập chi tiết
Quay lại Menu chính
End
3.Thuật toán tính tồn cho phiếu xuất kho
False
True
True
False
BEGIN
Kiểm tra trong kho có mặt hàng đó không
Thông báo mặt hàng không có trong kho. Yêu cầu nhập lại
Kiểm tra trong kho mặt hàng đó có còn đủ gể xuất không
False
Thông báo mặt hàng không có đủ để xuất kho. Yêu cầu nhập lại
Cho xuất hàng trừ số lượng hành trong kho
END
Hàng tồn nhỏ hơn số lượng min
True
Thông báo lượng hàng trong kho nhỏ hơn số lượng min Yêu cầu nhập thêm
V. Xây dựng chương trình
1. Danh mục khách hàng
1.1. Chức năng
Phần này cho phép quản lý tất cả các khách hàng có quan hệ xuất nhập hàng hoá, vật tư đối với công ty. Nhân viên sử dụng chương trình nếu được quyền truy nhập vào chức năng này của chương trình sẽ đựợc phép thêm những khách hàng mới vào trong danh mục, sửa đổi thông tin về những khách hàng dã có sẵn trong danh mục khách hàng.
Do yêu cầu của công tác quản lý kho hàng, trong danh mục khách hàng chỉ lưu giữ những thông tin tối thiểu về mỗi khách hàng, đó là tên khách hàng, địa chỉ và số điện thoại của khách hàng.
Tất cả những khách hàng có tham gia vào một quy trình nghiệp vụ xuất hay nhập kho thì đều phải đưọc lưu giữ trong danh mục khách hàng. Khi xoá tên một khách hàng trong danh mục khách, tất cả những phiếu nhập xuất có tên khách hàng đó sẽ được chương trình tự động huỷ bỏ.
1.2. Giao diện Form danh mục khách hàng
Khi nhập một khách hàng mới cần phải nhập mã khách hàng. Mã này là duy nhất cho mỗi khách hàng nên chương trình phải kiểm tra sự trùng nhau giữa mã nhập vào và mã của những khách hàng đã có trong danh mục.
2. Danh mục vật tư
2.1. Chức năng
Phần này cho phép quản lý tất cả các vật tư, hàng hoá có trong mỗi kho của công ty. Nhân viên sử dụng chương trình nếu được quyền truy nhập vào chức năng này của chương trình sẽ đựợc phép thêm những tên hàng hoá, vật tư mới vào trong danh mục, sửa đổi thông tin về những vật tư, hàng hoá đã có sẵn trong danh mục vật tư.
Do yêu cầu của công tác quản lý kho hàng, trong danh mục vật tư chỉ lưu giữ những thông tin về hàng hoá, vật tư sau: tên vật tư, đơn vị tính, số lượng tối đa và số lượng tối thiểu vật tư đó được phép lưu giữ trong một kho hàng theo quy định của công ty. Những thông tin về từng loại vật tư được lưu giữ trong bảng DmVt trong file “Hethong.mdb”.
Tất cả những vật tư, hàng hoá xuất hiện trong một hoá đơn xuất hay nhập kho đều phải đưọc lưu giữ trong danh mục vật tư. Khi xoá tên một vật tư, tất cả những phiếu nhập, xuất có tên vật tư đó sẽ được chương trình tự động huỷ bỏ.
2.2. Giao diện Form danh mục vât tư
(xem ở trang sau)
Khi nhập một vật tư mới cần phải nhập mã vật tư. Mã này là duy nhất cho mỗi vật tư nên chương trình phải kiểm tra sự trùng nhau giữa mã nhập vào và mã của những vật tư đã có trong danh mục.
3. Màn hình phiếu Nhập kho
3.1. Chức năng
Phần này cho phép lưu giữ những phiếu nhập kho đối với tất cả các các kho của công ty. Nhân viên sử dụng chương trình khi vào màn hình nhập liệu, lựa chọn phiếu nhập kho sẽ được phép nhập thêm những phiếu nhập kho mới, xem lại những phiếu nhập kho đã nhập trước đó, xoá đi những phiếu nhập kho không còn cần phải lưu giữ. Để tạo điều kiện thuận lợi, nhanh chóng cho người sử dụng, trên màn hình nhập phiếu nhập có chức năng tìm kiếm phiếu nhập theo một số điều kiện cho trước như ngày nhập phiếu, mã phiếu...
Để tạo điều kiện thuận lợi, dễ dàng trong công việc, tạo cảm giác thân thiện đối với người sử dụng, màn hình nhập liệu Phiếu nhập kho được thiết kế gần giống với mẫu phiếu nhập kho theo quy định của bộ tài chính.
Thông tin về Phiếu nhập kho được lưu giữ trong hai bảng PhiêuNh và CtNh trong file “Hethong.mdb”. Tuy nhiên, để có được thông tin đầy đủ về một phiếu nhập kho, chương trình cần phải truy nhập vào các bảng DmVt, DmKh và DmKho. Quan hệ giữa các bảng được mô tả trong phần trước.
3.2. Giao diện Form Phiếu nhập kho
Khi nhập một phiếu nhập kho mới trước hết phải nhập mã chứng từ. Mã chứng từ là yếu tố giúp phân biệt giữa những Phiếu nhập kho với nhau, vì vậy không được phép có sự trùng nhau về mã chứng từ. Máy sẽ tự động kiểm tra, so sánh với những mã chứng từ đang lưu giữ, nếu có sự trùng lặp mã chứng từ thì sẽ thông báo và yêu cầu nhập lại mã chứng từ.
Đối với tên kho nhận hàng, tên khách giao hàng và vật tư, hàng hoá thì cần nhập mã số. Sau khi nhập mã số máy sẽ kiểm tra xem có mã đó trong danh mục tương ứng hay không. Nếu có mã đó thì sẽ cho hiện tên tương ứng, ngược lại nếu không tồn tại mã đó trong danh mục thì cho hiện danh mục với đầy đủ mã số và tên cho người nhập lựa chọn.
Với việc nhập vật tư hàng hóa, sau khi nhập xong một dòng máy sẽ tự động tính tổng giá trị khối lượng hàng đã nhập và tính lại lượng thuế giá trị gia tăng tương ứng.
Với công việc tìm kiếm những Phiếu nhập kho đã nhập trước đó, ta có thể dùng nút tua để tua lần lượt qua từng phiếu đến phiếu cần tìm hoặc nhấn nút tìm cho hiện Form tìm kiếm. Khi đã tìm được phiếu máy sẽ tự động hiển thị phiếu tìm được trên màn hình.
Khi lưu lại phiếu nhập kho chương trình sẽ ghi lại phần đầu phiếu vào bảng PhieuNh và ghi lại từng dòng trong phần bảng của phiếu cùng mã phiếu vào bảng CtNh. Sau đó chương trình sẽ thực hiện công việc tính lại hàng tồn kho.
Dưới đây là màn hình tìm kiếm:
4. Các báo cáo và phân tích tình hình xuất nhập tồn trong chương trình
Để phục vụ cho công tác quản lý kho hàng, đáp ứng yêu cầu nghiệp vụ quản lý kho, chương trình cho phép in ra những Phiếu nhập kho, Phiếu xuất kho và phiếu lưu chuyển nội bộ đang được lưu trữ trong máy.
Để phục vụ cho công tác báo cáo định kỳ về tình hình hàng hoá vật tư được lưu giữ trong kho, chương trình cho phép in ra những bảng báo cáo tình hình xuất nhập hàng hoá của các kho theo ngày, theo tháng hoặc theo năm.
Chương trình còn cho phép in ra bảng báo cáo tình hình hàng tồn kho tại các kho của công ty.
Như chúng ta đã biết, hàng hoá xuất kho với khối lượng lớn là một trong những yếu tố chứng tỏ loại hàng đó đang có nhu cầu lớn trên thị trường. Để trợ giúp cho việc phân tích kinh doanh của công ty, chương trình cho phép in ra bảng báo cáo tình hình xuất kho của hàng hoá xuất kho theo thứ tự khối lượng xuất kho.
Để phục vụ cho công tác tra cứu những thông tin về một loại hàng tồn kho được nhanh chóng thuận tiện, chương trình cho phép in ra báo cáo về tình trạng tồn kho (bao gồm khối lượng tồn kho và địa điểm kho đang cất giữ) của một loại hàng hoá, vật tư theo yêu cầu của người sử dụng.
Dưới đây là một số màn hình báo cáo của chương trình
Màn hình báo cáo tình hình hàng tồn kho
Màn hình báo cáo tình hình nhập xuất trong tháng
5. Màn hình chính của chương trình quản lý kho
Màn hình chính của chương trình quản lý kho được thiết kế với một hệ thống Menu, menu popup, các Toolbar và Taskbar giúp cho người sử dụng có cảm giác thoải mái, thuận tiện trong khi sử dụng.
6. Sơ đồ quan hệ thực thể
Cơ sở dữ liệu của chương trình như đã trình bày ở trên được xây dựng trên hệ quản trị cơ sở dữ liệu Access. Màn hình quan hệ giữa các thực thể của Access là một công cụ hết sức hữu ích và tiện lợi. Qua đây ta có thể có đựoc một cái nhìn đầy đủ, rõ ràng về mối quan hệ giữa các thực thể trong cơ sở dữ liệu với nhau.
KẾT LUẬN
Trong quản lý kinh doanh, tin học ngày càng đóng vai trò quan trọng. Nó đang trở thành một bộ phận cấu thành của hệ thống công cụ quản lý kinh tế, tài chính, có vai trò tích cực trong quản lý điều hành và kiểm soát các hoạt động kinh tế của Nhà nước cũng như các hoạt động kinh tế tài chính của doanh nghiệp.
Môi trường kinh tế mới kết hợp với sự đầu tư nước ngoài ngày càng mở rộng cùng với việc tự chủ trong hạch toán kinh doanh buộc các doanh nghiệp phải tổ chức tốt các hoạt động kinh doanh của mình, nắm bắt được tình hình kết quả kinh doanh của đơn vị để đảm bảo lợi nhuận thu được là cao nhất.
Việc sử dụng các chương trình tin học trong quản lý sẽ giúp các đơn vị giảm bớt được các nguồn chi phí, gián tiếp làm giảm giá thành sản phẩm, nâng cao được tính cạnh tranh của mình trên thị trường.
Chương trình Fast Acounting được thiết kế và xây dựng đã đáp ứng được mong muốn đó của các doanh nghiệp. Chính vì vậy Fast Acounting đã được đông đảo những doanh nghiệp đặc biệt là những doanh nghiệp vừa và nhỏ sử dụng trong hoạt động kinh doanh.
Xây dựng bài toán quản lý kho hàng trong hệ thông tin kế toán tuy chỉ là một phần của cả một bài toán kế toán quản lý doanh nghiệp nhưng em cũng đã cố gắng xây dựng chương trình nhằm đạt được mục đích, đem lại những thuận lợi cho người khai thác, sử dụng. Việc sử dụng chương trình không đòi hỏi người sử dụng phải có những hiểu biết sâu về tin học hay công nghệ thông tin. Hệ thống giao diện thực đơn, cửa sổ, hộp thoại, phím tắt của chương trình mang tính đơn giản, tiện dụng và thân thiện với người sử dụng.
Chương trình này được thiết kế theo hướng các nhà thiết kế có thể sửa đổi thêm bớt các thuộc tính chức năng của chương trình khi cần thiết. Nó cũng được thiết kế theo hướng mở để tạo thuận lợi hơn cho người sử dụng.
Tuy nhiên, chương trình còn tồn tại một số nhược điểm như tốc độ xử lý sẽ giảm nếu dữ liệu vào lớn, hình thức báo cáo in ra chưa được đẹp ...
Dẫu vậy, chương trình vẫn là một sản phẩm có một giá trị thực tiễn cao và thực sự đem lại nhiều tiện lợi cho người sử dụng.
PHỤ LỤC CHƯƠNG TRÌNH
I. Form DMKH
Dim kt As Boolean
Private Sub Command1_Click()
If Command1.Caption = "Nhập" Then
frame1.Enabled = True
Command2.Enabled = True
Command3.Enabled = False
Command1.Caption = "Lưu"
Command2.Caption = "Hoãn"
Text1.SetFocus
Else
Data1.Recordset.AddNew
Data1.Recordset.Fields(0).Value = Text1.Text
Data1.Recordset.Fields(1).Value = Text2.Text
Data1.Recordset.Fields(2).Value = Text3.Text
Data1.Recordset.Update
Data1.Refresh
frame1.Enabled = False
Command2.Enabled = True
Command3.Enabled = True
Command1.Caption = "Nhập"
Command2.Caption = "Xoá"
End If
End Sub
Private Sub Command2_Click()
If Command2.Caption = "Xoá" Then
dk = MsgBox("Bạn có chắc chắn xoá không ?", vbYesNo + vbQuestion, "Chú ý")
If dk = vbYes Then
Data1.Recordset.Delete
Data1.Refresh
If Data1.Recordset.BOF = False Then
Data1.Recordset.MoveFirst
Else
frame1.Enabled = True
Text1.Text = ""
Text2.Text = ""
frame1.Enabled = False
Command2.Enabled = False
End If
End If
Else
frame1.Enabled = False
Command1.Caption = "Nhập"
Command2.Caption = "Xoá"
Command3.Enabled = True
If Data1.Recordset.BOF = False Then
Data1.Recordset.MoveFirst
Else
frame1.Enabled = True
Text1.Text = ""
Text2.Text = ""
frame1.Enabled = False
Command2.Enabled = False
End If
End If
End Sub
Private Sub Command3_Click()
Unload Me
End Sub
Private Sub Data1_Reposition()
On Error GoTo loi
If kt = False Then Exit Sub
If Not IsNull(Data1.Recordset.Fields(0).Value) Then
Text1.Text = Data1.Recordset.Fields(0).Value
Else
Text1 = ""
End If
If Not IsNull(Data1.Recordset.Fields(1).Value) Then
Text2.Text = Data1.Recordset.Fields(1).Value
Else
Text2 = ""
End If
If Not IsNull(Data1.Recordset.Fields(2).Value) Then
Text3.Text = Data1.Recordset.Fields(2).Value
Else
Text3 = ""
End If
Exit Sub
loi:
If Err.Number = 3021 Then
Exit Sub
End If
End Sub
Private Sub Data1_Validate(Action As Integer, Save As Integer)
Select Case Action
Case vbDataActionMoveFirst
kt = True
Case vbDataActionMovePrevious
kt = True
Case vbDataActionMoveNext
kt = True
Case vbDataActionMoveLast
kt = True
Case vbDataActionAddNew
kt = False
Case vbDataActionUpdate
kt = True
Case vbDataActionDelete
kt = False
Case vbDataActionFind
kt = False
Case vbDataActionBookmark
Case vbDataActionClose
End Select
End Sub
Private Sub Form_Load()
Data1.DatabaseName = Loctext + "Hethong.mdb"
Data1.RecordSource = "dmkh"
Data1.Refresh
frame1.Enabled = False
If Data1.Recordset.BOF = True Then
Command2.Enabled = False
Else
Data1.Recordset.MoveFirst
End If
End Sub
Private Sub Form_Resize()
Me.Height = 3780
Me.Width = 4590
Me.Top = (Screen.Height - Me.Height) / 3
Me.Left = (Screen.Width - Me.Width) / 2
End Sub
Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text2.SetFocus
End If
End Sub
Private Sub Text2_GotFocus()
Text2.SelStart = 0
Text2.SelLength = Len(Text2.Text)
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text3.SetFocus
End If
End Sub
Private Sub Text3_GotFocus()
Text3.SelStart = 0
Text3.SelLength = Len(Text3.Text)
End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Command1.SetFocus
End If
End Sub
Form Nhập liệu :
Dim kt As Boolean
Dim dk As String
Dim dk1 As String
Dim nut1 As Byte
Dim i As Byte
'Dim DK As String
Private Sub Command1_Click()
If Command1.Caption = "Nhập" Then
xoa
MaskEdBox1.Text = Date
Text1.Text = Mid(MaskEdBox1.Text, 4, 2) & "-"
Text2.Text = ""
Text12.Text = ""
Text13.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text11.Text = ""
Text10.Text = ""
'Text3.Enabled = True
'Text4.Enabled = True
Frame1.Enabled = True
Frame2.Enabled = True
Frame3.Enabled = True
MaskEdBox1.SetFocus
nut1 = 1
Command1.Caption = "Nhập tiếp"
Command2.Enabled = False
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
i = 1
Else
If Len(Text5.Text) = 0 Then
MsgBox "Mã vật tư không thể trống", vbInformation, "Chú ý"
Text5.SetFocus
Exit Sub
End If
If Len(Text7.Text) = 0 Then
MsgBox "Số lượng không thể trống", vbInformation, "Chú ý"
Text7.SetFocus
Exit Sub
End If
If Len(Text8.Text) = 0 Then
MsgBox "Đơn giá không thể trống", vbInformation, "Chú ý"
Text8.SetFocus
Exit Sub
End If
Data1.Recordset.AddNew
Data1.Recordset.Fields(0).Value = Text1.Text
Data1.Recordset.Fields(1).Value = i
Data1.Recordset.Fields(2).Value = Text5.Text
Data1.Recordset.Fields(3).Value = Text6.Text
Data1.Recordset.Fields(4).Value = Text7.Text
Data1.Recordset.Fields(5).Value = Text8.Text
Data1.Recordset.Fields(6).Value = Val(Text7.Text) * Val(Text8.Text)
Data1.Recordset.Update
Data1.Refresh
Text5.SetFocus
i = i + 1
End If
End Sub
Private Sub Command2_Click()
Data5.DatabaseName = Loctext + "ht1.mdb"
Data5.RecordSource = "lpnk1"
Data5.Refresh
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Text3.Enabled = True
Text4.Enabled = True
Frame1.Enabled = True
Frame2.Enabled = True
Text3.SetFocus
nut1 = 2
End Sub
Public Sub xoa()
Data1.Refresh
If Not Data1.Recordset.BOF Then
Data1.Recordset.MoveFirst
Do While Not Data1.Recordset.EOF
Data1.Recordset.Delete
Data1.Recordset.MoveNext
Loop
End If
End Sub
Public Sub chuyen()
xoa
Set db = OpenDatabase(Loctext + "hethong.mdb")
If nut = 1 Then
db.Execute "insert into phu select mact,stt0,mavt,tenvt,soluong,dongia,tien from query1 where mact='" & Text1.Text & "'"
Else
db.Execute "insert into phu select mact,stt0,mavt,tenvt,soluong,dongia,tien from query2 where mact='" & Text1.Text & "'"
End If
db.Close
Dim tt1
tt1 = 0
Set db = OpenDatabase(Loctext + "hethong.mdb")
Set rs = db.OpenRecordset("phu")
rs.MoveFirst
Do While rs.EOF = False
tt1 = tt1 + rs.Fields("tien").Value
rs.MoveNext
Loop
rs.Close
db.Close
Text10.Text = Str(tt1)
Text11.Text = Str(tt1 / 10)
Data1.Refresh
DBGrid1.Refresh
End Sub
Private Sub Command3_Click()
If Len(Text5.Text) = 0 Then
MsgBox "Mã vật tư không thể trống", vbInformation, "Chú ý"
Text5.SetFocus
Exit Sub
End If
If Len(Text7.Text) = 0 Then
MsgBox "Số lượng không thể trống", vbInformation, "Chú ý"
Text7.SetFocus
Exit Sub
End If
If Len(Text8.Text) = 0 Then
MsgBox "Đơn giá không thể trống", vbInformation, "Chú ý"
Text8.SetFocus
Exit Sub
End If
Data1.Recordset.AddNew
Data1.Recordset.Fields(0).Value = Text1.Text
Data1.Recordset.Fields(1).Value = i
Data1.Recordset.Fields(2).Value = Text5.Text
Data1.Recordset.Fields(3).Value = Text6.Text
Data1.Recordset.Fields(4).Value = Text7.Text
Data1.Recordset.Fields(5).Value = Text8.Text
Data1.Recordset.Fields(6).Value = Val(Text7.Text) * Val(Text8.Text)
Data1.Recordset.Update
Data1.Refresh
If Len(Text1.Text) = 0 Then
MsgBox "Mã chứng từ không thể trống", vbInformation, "Thông Báo"
Text1.SetFocus
Exit Sub
End If
If Len(MaskEdBox1.Text) = 0 Then
MsgBox "Ngày nhập phiếu không thể trống", vbInformation, "Thông Báo"
MaskEdBox1.SetFocus
Exit Sub
End If
If Len(Text12.Text) = 0 Then
MsgBox "Mã kho hàng không thể trống", vbInformation, "Thông Báo"
Text12.SetFocus
Exit Sub
End If
Data2.Recordset.AddNew
Data2.Recordset.Fields(1).Value = Text1.Text
Data2.Recordset.Fields(2).Value = MaskEdBox1.Text
Data2.Recordset.Fields(3).Value = Text13.Text
Data2.Recordset.Fields(4).Value = Text12.Text
Data2.Recordset.Fields(5).Value = Text9.Text
Data2.Recordset.Fields(6).Value = Text3.Text
Data2.Recordset.Fields(7).Value = Text4.Text
Data2.Recordset.Update
Data2.Refresh
If nut = 1 Then
Set db = OpenDatabase(Loctext + "hethong.mdb")
db.Execute "Insert into ctx select mact,stt0,mavt,soluong,dongia,tien from phu"
Dim rs1 As Recordset
Set rs = db.OpenRecordset("phu")
rs.MoveFirst
Do While rs.EOF = False
Set rs1 = db.OpenRecordset("select * from tonkho where makho='" & Text12.Text & "' and mavt='" & rs.Fields(2).Value & "'")
rs1.Edit
rs1.Fields(2).Value = rs1.Fields(2).Value - rs.Fields(4).Value
rs1.Update
rs1.Close
rs.MoveNext
Loop
rs.Close
db.Close
Else
Set db = OpenDatabase(Loctext + "hethong.mdb")
db.Execute "Insert into ctnh select mact,stt0,mavt,soluong,dongia,tien from phu"
Set rs = db.OpenRecordset("phu")
rs.MoveFirst
Do While rs.EOF = False
Set rs1 = db.OpenRecordset("select * from tonkho where makho='" & Text1.Text & "' and mavt='" & rs.Fields(2).Value & "'")
If rs1.BOF = rs1.EOF And rs1.EOF = True Then
rs1.AddNew
rs1.Fields(0).Value = Text12.Text
rs1.Fields(1).Value = rs.Fields(2).Value
rs1.Fields(2).Value = rs.Fields(4).Value
rs1.Update
Else
rs1.Edit
rs1.Fields(2).Value = rs1.Fields(2).Value + rs.Fields(4).Value
rs1.Update
End If
rs1.Close
rs.MoveNext
Loop
rs.Close
db.Close
End If
Frame1.Enabled = False
Frame2.Enabled = False
Frame3.Enabled = False
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
Command1.Caption = "Nhập"
Data2.Recordset.MoveLast
chuyen
Command1.SetFocus
End Sub
Private Sub Command4_Click()
xoa
Command1.Enabled = True
Command1.Caption = "Nhập"
Command2.Enabled = True
If Data2.Recordset.BOF = False Then
Data2.Recordset.MoveLast
chuyen
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Else
Command5.Enabled = False
End If
Frame1.Enabled = False
Frame2.Enabled = False
Frame3.Enabled = False
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
End Sub
Private Sub Command5_Click()
dk = MsgBox("Bạn có chắc chắn xoá không ?", vbCritical + vbYesNo, "Chú ý")
If dk = vbYes Then
Data2.Recordset.Delete
Data2.Refresh
If Data2.Recordset.BOF Then
Command5.Enabled = False
End If
End If
End Sub
Private Sub Command6_Click()
Set db = OpenDatabase(Loctext + "hethong")
db.Execute "delete * from table1"
Set rs = db.OpenRecordset("table1")
rs.AddNew
rs.Fields(0).Value = Text1.Text
rs.Update
rs.Close
db.Close
If Label1.Caption = "Phiếu Xuất Kho" Then
CrystalReport1.DataFiles(0) = Loctext & "hethong.mdb"
CrystalReport1.ReportFileName = Loctext$ + "px.rpt"
Else
CrystalReport1.DataFiles(0) = Loctext & "hethong.mdb"
CrystalReport1.ReportFileName = Loctext$ + "pnh.rpt"
End If
On Error GoTo ErrorHandler
CrystalReport1.Action = 1
Screen.MousePointer = 0
Exit Sub
ErrorHandler:
MsgBox CrystalReport1.LastErrorString
Screen.MousePointer = 0
Exit Sub
End Sub
Private Sub Command7_Click()
dktk.Show 1
dk = "mact='" & ma & "'"
Data2.Recordset.FindFirst dk
Data2.Recordset.MoveNext
Data2.Recordset.MovePrevious
chuyen
End Sub
Private Sub Command8_Click()
Unload Me
End Sub
Private Sub Data2_Reposition()
'On Error GoTo loi
If kt = False Then Exit Sub
If Not IsNull(Data2.Recordset.Fields(1).Value) Then
Text1.Text = Data2.Recordset.Fields(1).Value
Else
Text1 = ""
End If
If Not IsNull(Data2.Recordset.Fields(2).Value) Then
MaskEdBox1.Text = Data2.Recordset.Fields(2).Value
Else
MaskEdBox1.Text = "__/__/____"
End If
If Not IsNull(Data2.Recordset.Fields(3).Value) Then
Text13.Text = Data2.Recordset.Fields(3).Value
Else
Text13 = ""
End If
Set db = OpenDatabase(Loctext + "hethong.mdb")
Set rs = db.OpenRecordset("select * from dmkh where makh='" & Text13.Text & "'")
Text2.Text = rs.Fields(1).Value
rs.Close
db.Close
If Not IsNull(Data2.Recordset.Fields(4).Value) Then
Text12.Text = Data2.Recordset.Fields(4).Value
Else
Text12 = ""
End If
If Not IsNull(Data2.Recordset.Fields(6).Value) Then
Text3.Text = Data2.Recordset.Fields(6).Value
Else
Text3 = ""
End If
If Not IsNull(Data2.Recordset.Fields(7).Value) Then
Text4.Text = Data2.Recordset.Fields(7).Value
Else
Text4 = ""
End If
If Not IsNull(Data2.Recordset.Fields(5).Value) Then
Text9.Text = Data2.Recordset.Fields(5).Value
Else
Text9 = ""
End If
chuyen
' DBGrid1.SetFocus
Exit Sub
loi:
If Err.Number = 3021 Then
Exit Sub
End If
End Sub
Private Sub Data2_Validate(Action As Integer, Save As Integer)
Select Case Action
Case vbDataActionMoveFirst
kt = True
Case vbDataActionMovePrevious
kt = True
Case vbDataActionMoveNext
kt = True
Case vbDataActionMoveLast
kt = True
Case vbDataActionAddNew
kt = False
Case vbDataActionUpdate
kt = False
Case vbDataActionDelete
kt = True
Case vbDataActionFind
kt = False
Case vbDataActionBookmark
Case vbDataActionClose
End Select
End Sub
Private Sub Form_Load()
Frame1.Enabled = False
Frame2.Enabled = False
Frame3.Enabled = False
Frame4.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
If nut = 1 Then
Label1.Caption = "Phiếu Xuất Kho"
Data1.DatabaseName = Loctext + "Hethong.mdb"
Data1.RecordSource = "phu"
Data1.Refresh
Data2.DatabaseName = Loctext + "Hethong.mdb"
Data2.RecordSource = "phieux"
Data2.Refresh
'Data3.DatabaseName = Loctext + "hethong.mdb"
'Data3.RecordSource = "ctx"
'Data3.Refresh
xoa
If Data2.Recordset.BOF = False Then
Data2.Recordset.MoveLast
chuyen
Else
Command5.Enabled = False
End If
Else
Label1.Caption = "Phiếu Nhập Kho"
Data1.DatabaseName = Loctext + "Hethong.mdb"
Data1.RecordSource = "phu"
Data1.Refresh
Data2.DatabaseName = Loctext + "Hethong.mdb"
Data2.RecordSource = "phieunh"
Data2.Refresh
xoa
If Data2.Recordset.BOF = False Then
Data2.Recordset.MoveLast
chuyen
Else
Command5.Enabled = False
End If
End If
End Sub
Private Sub Form_Resize()
Me.Width = 8100
Me.Height = 5145
Me.Top = 0
Me.Left = (Screen.Width - Me.Width) / 2
End Sub
Private Sub MaskEdBox1_GotFocus()
MaskEdBox1.SelStart = 0
MaskEdBox1.SelLength = Len(MaskEdBox1.Text)
End Sub
Private Sub MaskEdBox1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text1.SetFocus
End If
End Sub
Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text12.SetFocus
End If
End Sub
Private Sub Text12_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text12.Text)
End Sub
Private Sub Text12_KeyPress(KeyAscii As Integer)
KeyAscii = 0
tck.Show 1
Text12.Text = ma
Text13.SetFocus
End Sub
Private Sub Text13_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text13.Text)
End Sub
Private Sub Text13_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Text2.SetFocus
End Sub
Private Sub Text2_GotFocus()
Dim dk As String
If Len(Text2.Text) = 0 Then
ttt.Show 1
Text13.Text = ma
Text2.Text = ten
Text9.SetFocus
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Command1.SetFocus
End If
End Sub
Private Sub Text3_GotFocus()
Text3.SelStart = 0
Text3.SelLength = Len(Text3.Text)
End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text4.SetFocus
End If
End Sub
Private Sub Text4_GotFocus()
Text4.SelStart = 0
Text4.SelLength = Len(Text4.Text)
End Sub
Private Sub Text4_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text5.SetFocus
End If
End Sub
Private Sub Text5_GotFocus()
Text5.SelStart = 0
Text5.SelLength = Len(Text5.Text)
End Sub
Private Sub Text5_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Text6.SetFocus
End Sub
Private Sub Text6_GotFocus()
If Len(Text5.Text) = 0 Then
tt.Show 1
Text5.Text = ma
Text6.Text = ten
Text7.SetFocus
End If
End Sub
Private Sub Text6_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text17.SetFocus
End If
End Sub
Private Sub Text7_GotFocus()
Text7.SelStart = 0
Text7.SelLength = Len(Text7.Text)
End Sub
Private Sub Text7_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode 57) And KeyCode 13 And KeyCode 37 And KeyCode 39 And KeyCode 46 And KeyCode 8 Then
KeyCode = 0
End If
End Sub
Private Sub Text7_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text8.SetFocus
Else
If (KeyAscii 57) And KeyAscii 37 And KeyAscii 39 And KeyAscii 46 And KeyAscii 8 Then
KeyAscii = 0
End If
End If
End Sub
Private Sub Text8_GotFocus()
Text8.SelStart = 0
Text8.SelLength = Len(Text8.Text)
End Sub
Private Sub Text8_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode 57) And KeyCode 13 And KeyCode 37 And KeyCode 39 And KeyCode 46 And KeyCode 8 Then
KeyCode = 0
End If
End Sub
Private Sub Text8_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Command1.SetFocus
Else
If (KeyAscii 57) And KeyAscii 37 And KeyAscii 39 And KeyAscii 46 And KeyAscii 8 Then
KeyAscii = 0
End If
End If
End Sub
Private Sub Text9_GotFocus()
Text9.SelStart = 0
Text9.SelLength = Len(Text9.Text)
End Sub
Private Sub Text9_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text3.SetFocus
End If
End Sub
II. Form màn hình chính :
Dim kt As Boolean
Dim dk As String
Dim dk1 As String
Dim nut1 As Byte
Dim i As Byte
'Dim DK As String
Private Sub Command1_Click()
If Command1.Caption = "Nhập" Then
xoa
MaskEdBox1.Text = Date
Text1.Text = Mid(MaskEdBox1.Text, 4, 2) & "-"
Text2.Text = ""
Text12.Text = ""
Text13.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Text11.Text = ""
Text10.Text = ""
Frame1.Enabled = True
Frame2.Enabled = True
Frame3.Enabled = True
MaskEdBox1.SetFocus
nut1 = 1
Command1.Caption = "Nhập tiếp"
Command2.Enabled = False
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
'Data1.Recordset.AddNew
i = 1
Else
If Len(Text5.Text) = 0 Then
MsgBox "Mã vật tư không thể trống", vbInformation, "Chú ý"
Text5.SetFocus
Exit Sub
End If
If Len(Text7.Text) = 0 Then
MsgBox "Số lượng không thể trống", vbInformation, "Chú ý"
Text7.SetFocus
Exit Sub
End If
If Len(Text8.Text) = 0 Then
MsgBox "Đơn giá không thể trống", vbInformation, "Chú ý"
Text8.SetFocus
Exit Sub
End If
Data1.Recordset.AddNew
Data1.Recordset.Fields(0).Value = Text1.Text
Data1.Recordset.Fields(1).Value = i
Data1.Recordset.Fields(2).Value = Text5.Text
Data1.Recordset.Fields(3).Value = Text6.Text
Data1.Recordset.Fields(4).Value = Text7.Text
Data1.Recordset.Fields(5).Value = Text8.Text
Data1.Recordset.Fields(6).Value = Val(Text7.Text) * Val(Text8.Text)
Data1.Recordset.Update
Data1.Refresh
Text5.SetFocus
i = i + 1
End If
End Sub
Private Sub Command2_Click()
Data5.DatabaseName = Loctext + "ht1.mdb"
Data5.RecordSource = "lpnk1"
Data5.Refresh
Command1.Enabled = False
Command2.Enabled = False
Command3.Enabled = True
Command4.Enabled = True
Command5.Enabled = False
Command6.Enabled = False
Command7.Enabled = False
Command8.Enabled = False
Text3.Enabled = True
Text4.Enabled = True
Frame1.Enabled = True
Frame2.Enabled = True
Text3.SetFocus
nut1 = 2
End Sub
Public Sub xoa()
Data1.Refresh
If Not Data1.Recordset.BOF Then
Data1.Recordset.MoveFirst
Do While Not Data1.Recordset.EOF
Data1.Recordset.Delete
Data1.Recordset.MoveNext
Loop
End If
End Sub
Public Sub chuyen()
xoa
Set db = OpenDatabase(Loctext + "hethong.mdb")
If nut = 1 Then
db.Execute "insert into phu select mact,stt0,mavt,tenvt,soluong,dongia,tien from query1 where mact='" & Text1.Text & "'"
Else
db.Execute "insert into phu select mact,stt0,mavt,tenvt,soluong,dongia,tien from query2 where mact='" & Text1.Text & "'"
End If
'db.Execute "insert into phu select mact,stt0,mavt,tenvt,soluong,dongia,tien form query1"
db.Close
Dim tt1
tt1 = 0
' db.Close
Set db = OpenDatabase(Loctext + "hethong.mdb")
Set rs = db.OpenRecordset("phu")
rs.MoveFirst
Do While rs.EOF = False
tt1 = tt1 + rs.Fields("tien").Value
rs.MoveNext
Loop
rs.Close
db.Close
Text10.Text = Str(tt1)
Text11.Text = Str(tt1 / 10)
Data1.Refresh
DBGrid1.Refresh
End Sub
Private Sub Command3_Click()
If Len(Text5.Text) = 0 Then
MsgBox "Mã vật tư không thể trống", vbInformation, "Chú ý"
Text5.SetFocus
Exit Sub
End If
If Len(Text7.Text) = 0 Then
MsgBox "Số lượng không thể trống", vbInformation, "Chú ý"
Text7.SetFocus
Exit Sub
End If
If Len(Text8.Text) = 0 Then
MsgBox "Đơn giá không thể trống", vbInformation, "Chú ý"
Text8.SetFocus
Exit Sub
End If
Data1.Recordset.AddNew
Data1.Recordset.Fields(0).Value = Text1.Text
Data1.Recordset.Fields(1).Value = i
Data1.Recordset.Fields(2).Value = Text5.Text
Data1.Recordset.Fields(3).Value = Text6.Text
Data1.Recordset.Fields(4).Value = Text7.Text
Data1.Recordset.Fields(5).Value = Text8.Text
Data1.Recordset.Fields(6).Value = Val(Text7.Text) * Val(Text8.Text)
Data1.Recordset.Update
Data1.Refresh
If Len(Text1.Text) = 0 Then
MsgBox "Mã chứng từ không thể trống", vbInformation, "Thông Báo"
Text1.SetFocus
Exit Sub
End If
If Len(MaskEdBox1.Text) = 0 Then
MsgBox "Ngày nhập phiếu không thể trống", vbInformation, "Thông Báo"
MaskEdBox1.SetFocus
Exit Sub
End If
If Len(Text12.Text) = 0 Then
MsgBox "Mã kho hàng không thể trống", vbInformation, "Thông Báo"
Text12.SetFocus
Exit Sub
End If
Data2.Recordset.AddNew
Data2.Recordset.Fields(1).Value = Text1.Text
Data2.Recordset.Fields(2).Value = MaskEdBox1.Text
Data2.Recordset.Fields(3).Value = Text13.Text
Data2.Recordset.Fields(4).Value = Text12.Text
Data2.Recordset.Fields(5).Value = Text9.Text
Data2.Recordset.Fields(6).Value = Text3.Text
Data2.Recordset.Fields(7).Value = Text4.Text
Data2.Recordset.Update
Data2.Refresh
If nut = 1 Then
Set db = OpenDatabase(Loctext + "hethong.mdb")
db.Execute "Insert into ctx select mact,stt0,mavt,soluong,dongia,tien from phu"
Dim rs1 As Recordset
Set rs = db.OpenRecordset("phu")
rs.MoveFirst
Do While rs.EOF = False
Set rs1 = db.OpenRecordset("select * from tonkho where makho='" & Text12.Text & "' and mavt='" & rs.Fields(2).Value & "'")
rs1.Edit
rs1.Fields(2).Value = rs1.Fields(2).Value - rs.Fields(4).Value
rs1.Update
rs1.Close
rs.MoveNext
Loop
rs.Close
db.Close
Else
Set db = OpenDatabase(Loctext + "hethong.mdb")
db.Execute "Insert into ctnh select mact,stt0,mavt,soluong,dongia,tien from phu"
Set rs = db.OpenRecordset("phu")
rs.MoveFirst
Do While rs.EOF = False
Set rs1 = db.OpenRecordset("select * from tonkho where makho='" & Text1.Text & "' and mavt='" & rs.Fields(2).Value & "'")
If rs1.BOF = rs1.EOF And rs1.EOF = True Then
rs1.AddNew
rs1.Fields(0).Value = Text12.Text
rs1.Fields(1).Value = rs.Fields(2).Value
rs1.Fields(2).Value = rs.Fields(4).Value
rs1.Update
Else
rs1.Edit
rs1.Fields(2).Value = rs1.Fields(2).Value + rs.Fields(4).Value
rs1.Update
End If
rs1.Close
rs.MoveNext
Loop
rs.Close
db.Close
End If
Frame1.Enabled = False
Frame2.Enabled = False
Frame3.Enabled = False
Command1.Enabled = True
Command2.Enabled = True
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
Command1.Caption = "Nhập"
Data2.Recordset.MoveLast
chuyen
Command1.SetFocus
End Sub
Private Sub Command4_Click()
xoa
Command1.Enabled = True
Command1.Caption = "Nhập"
Command2.Enabled = True
If Data2.Recordset.BOF = False Then
Data2.Recordset.MoveLast
chuyen
Command3.Enabled = False
Command4.Enabled = False
Command5.Enabled = True
Else
Command5.Enabled = False
End If
Frame1.Enabled = False
Frame2.Enabled = False
Frame3.Enabled = False
Command6.Enabled = True
Command7.Enabled = True
Command8.Enabled = True
End Sub
Private Sub Command5_Click()
dk = MsgBox("Bạn có chắc chắn xoá không ?", vbCritical + vbYesNo, "Chú ý")
If dk = vbYes Then
Data2.Recordset.Delete
Data2.Refresh
If Data2.Recordset.BOF Then
Command5.Enabled = False
End If
End If
End Sub
Private Sub Command6_Click()
Set db = OpenDatabase(Loctext + "hethong")
db.Execute "delete * from table1"
Set rs = db.OpenRecordset("table1")
rs.AddNew
rs.Fields(0).Value = Text1.Text
rs.Update
rs.Close
'rs.Close
db.Close
If Label1.Caption = "Phiếu Xuất Kho" Then
CrystalReport1.DataFiles(0) = Loctext & "hethong.mdb"
CrystalReport1.ReportFileName = Loctext$ + "px.rpt"
Else
CrystalReport1.DataFiles(0) = Loctext & "hethong.mdb"
CrystalReport1.ReportFileName = Loctext$ + "pnh.rpt"
End If
On Error GoTo ErrorHandler
CrystalReport1.Action = 1
Screen.MousePointer = 0
Exit Sub
ErrorHandler:
MsgBox CrystalReport1.LastErrorString
Screen.MousePointer = 0
Exit Sub
End Sub
Private Sub Command7_Click()
dktk.Show 1
dk = "mact='" & ma & "'"
Data2.Recordset.FindFirst dk
Data2.Recordset.MoveNext
Data2.Recordset.MovePrevious
chuyen
End Sub
Private Sub Command8_Click()
Unload Me
End Sub
Private Sub Data2_Reposition()
'On Error GoTo loi
If kt = False Then Exit Sub
If Not IsNull(Data2.Recordset.Fields(1).Value) Then
Text1.Text = Data2.Recordset.Fields(1).Value
Else
Text1 = ""
End If
If Not IsNull(Data2.Recordset.Fields(2).Value) Then
MaskEdBox1.Text = Data2.Recordset.Fields(2).Value
Else
MaskEdBox1.Text = "__/__/____"
End If
If Not IsNull(Data2.Recordset.Fields(3).Value) Then
Text13.Text = Data2.Recordset.Fields(3).Value
Else
Text13 = ""
End If
Set db = OpenDatabase(Loctext + "hethong.mdb")
Set rs = db.OpenRecordset("select * from dmkh where makh='" & Text13.Text & "'")
Text2.Text = rs.Fields(1).Value
rs.Close
db.Close
If Not IsNull(Data2.Recordset.Fields(4).Value) Then
Text12.Text = Data2.Recordset.Fields(4).Value
Else
Text12 = ""
End If
If Not IsNull(Data2.Recordset.Fields(6).Value) Then
Text3.Text = Data2.Recordset.Fields(6).Value
Else
Text3 = ""
End If
If Not IsNull(Data2.Recordset.Fields(7).Value) Then
Text4.Text = Data2.Recordset.Fields(7).Value
Else
Text4 = ""
End If
If Not IsNull(Data2.Recordset.Fields(5).Value) Then
Text9.Text = Data2.Recordset.Fields(5).Value
Else
Text9 = ""
End If
chuyen
' DBGrid1.SetFocus
Exit Sub
loi:
If Err.Number = 3021 Then
Exit Sub
End If
End Sub
Private Sub Data2_Validate(Action As Integer, Save As Integer)
Select Case Action
Case vbDataActionMoveFirst
kt = True
Case vbDataActionMovePrevious
kt = True
Case vbDataActionMoveNext
kt = True
Case vbDataActionMoveLast
kt = True
Case vbDataActionAddNew
kt = False
Case vbDataActionUpdate
kt = False
Case vbDataActionDelete
kt = True
Case vbDataActionFind
kt = False
Case vbDataActionBookmark
Case vbDataActionClose
End Select
End Sub
Private Sub Form_Load()
Frame1.Enabled = False
Frame2.Enabled = False
Frame3.Enabled = False
Frame4.Enabled = False
Command3.Enabled = False
Command4.Enabled = False
If nut = 1 Then
Label1.Caption = "Phiếu Xuất Kho"
Data1.DatabaseName = Loctext + "Hethong.mdb"
Data1.RecordSource = "phu"
Data1.Refresh
Data2.DatabaseName = Loctext + "Hethong.mdb"
Data2.RecordSource = "phieux"
Data2.Refresh
'Data3.DatabaseName = Loctext + "hethong.mdb"
'Data3.RecordSource = "ctx"
'Data3.Refresh
xoa
If Data2.Recordset.BOF = False Then
Data2.Recordset.MoveLast
chuyen
Else
Command5.Enabled = False
End If
Else
Label1.Caption = "Phiếu Nhập Kho"
Data1.DatabaseName = Loctext + "Hethong.mdb"
Data1.RecordSource = "phu"
Data1.Refresh
Data2.DatabaseName = Loctext + "Hethong.mdb"
Data2.RecordSource = "phieunh"
Data2.Refresh
xoa
If Data2.Recordset.BOF = False Then
Data2.Recordset.MoveLast
chuyen
Else
Command5.Enabled = False
End If
End If
End Sub
Private Sub Form_Resize()
Me.Width = 8100
Me.Height = 5145
Me.Top = 0
Me.Left = (Screen.Width - Me.Width) / 2
End Sub
Private Sub MaskEdBox1_GotFocus()
MaskEdBox1.SelStart = 0
MaskEdBox1.SelLength = Len(MaskEdBox1.Text)
End Sub
Private Sub MaskEdBox1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text1.SetFocus
End If
End Sub
Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text12.SetFocus
End If
End Sub
Private Sub Text12_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text12.Text)
End Sub
Private Sub Text12_KeyPress(KeyAscii As Integer)
KeyAscii = 0
tck.Show 1
Text12.Text = ma
Text13.SetFocus
End Sub
Private Sub Text13_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text13.Text)
End Sub
Private Sub Text13_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Text2.SetFocus
End Sub
Private Sub Text2_GotFocus()
Dim dk As String
If Len(Text2.Text) = 0 Then
ttt.Show 1
Text13.Text = ma
Text2.Text = ten
Text9.SetFocus
End If
End Sub
Private Sub Text2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Command1.SetFocus
End If
End Sub
Private Sub Text3_GotFocus()
Text3.SelStart = 0
Text3.SelLength = Len(Text3.Text)
End Sub
Private Sub Text3_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text4.SetFocus
End If
End Sub
Private Sub Text4_GotFocus()
Text4.SelStart = 0
Text4.SelLength = Len(Text4.Text)
End Sub
Private Sub Text4_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text5.SetFocus
End If
End Sub
Private Sub Text5_GotFocus()
Text5.SelStart = 0
Text5.SelLength = Len(Text5.Text)
End Sub
Private Sub Text5_KeyPress(KeyAscii As Integer)
KeyAscii = 0
Text6.SetFocus
End Sub
Private Sub Text6_GotFocus()
If Len(Text5.Text) = 0 Then
tt.Show 1
Text5.Text = ma
Text6.Text = ten
Text7.SetFocus
End If
End Sub
Private Sub Text6_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text17.SetFocus
End If
End Sub
Private Sub Text7_GotFocus()
Text7.SelStart = 0
Text7.SelLength = Len(Text7.Text)
End Sub
Private Sub Text7_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode 57) And KeyCode 13 And KeyCode 37 And KeyCode 39 And KeyCode 46 And KeyCode 8 Then
KeyCode = 0
End If
End Sub
Private Sub Text7_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text8.SetFocus
Else
If (KeyAscii 57) And KeyAscii 37 And KeyAscii 39 And KeyAscii 46 And KeyAscii 8 Then
KeyAscii = 0
End If
End If
End Sub
Private Sub Text8_GotFocus()
Text8.SelStart = 0
Text8.SelLength = Len(Text8.Text)
End Sub
Private Sub Text8_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode 57) And KeyCode 13 And KeyCode 37 And KeyCode 39 And KeyCode 46 And KeyCode 8 Then
KeyCode = 0
End If
End Sub
Private Sub Text8_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Command1.SetFocus
Else
If (KeyAscii 57) And KeyAscii 37 And KeyAscii 39 And KeyAscii 46 And KeyAscii 8 Then
KeyAscii = 0
End If
End If
End Sub
Private Sub Text9_GotFocus()
Text9.SelStart = 0
Text9.SelLength = Len(Text9.Text)
End Sub
Private Sub Text9_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text3.SetFocus
End If
End Sub
Form DKTK (Tìm kiếm) :
Private Sub Combo1_Click()
Combo2.SetFocus
End Sub
Private Sub Combo1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Combo2.SetFocus
End If
End Sub
Private Sub Combo2_Click()
Text1.SetFocus
End Sub
Private Sub Combo2_GotFocus()
Combo2.AddItem ("=")
Combo2.AddItem (">")
Combo2.AddItem ("<")
End Sub
Private Sub Combo2_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Text1.SetFocus
End If
End Sub
Private Sub Command1_Click()
Dim da As Date
Select Case nut
Case 1:
If Combo1.Text = "Mã chứng từ" Then
Data1.DatabaseName = Loctext + "hethong.mdb"
Data1.RecordSource = "select ngay,mact from phieux where mact " & Combo2.Text & "'" & Text1.Text & "'"
Data1.Refresh
Else
da = Text1.Text
Data1.DatabaseName = Loctext + "hethong.mdb"
dk = "select ngay,mact from phieux where ngay " & Combo2.Text & " #" & da & "#"
Data1.RecordSource = dk
Data1.Refresh
End If
Case 2:
If Combo1.Text = "Mã chứng từ" Then
Data1.DatabaseName = Loctext + "hethong.mdb"
Data1.RecordSource = "select ngay,mact from phieunh where mact " & Combo2.Text & "'" & Text1.Text & "'"
Data1.Refresh
Else
da = Text1.Text
Data1.DatabaseName = Loctext + "hethong.mdb"
dk = "select ngay,mact from phieunh where ngay " & Combo2.Text & " #" & da & "#"
Data1.RecordSource = dk
Data1.Refresh
End If
Case 3:
If Combo1.Text = "Mã chứng từ" Then
Data1.DatabaseName = Loctext + "hethong.mdb"
Data1.RecordSource = "select ngay,mact from phieulc where mact " & Combo2.Text & "'" & Text1.Text & "'"
Data1.Refresh
Else
da = Text1.Text
Data1.DatabaseName = Loctext + "hethong.mdb"
dk = "select ngay,mact from phieulc where ngay " & Combo2.Text & " #" & da & "#"
Data1.RecordSource = dk
Data1.Refresh
End If
End Select
If Data1.Recordset.BOF = False Then
Command3.Enabled = True
Command1.Enabled = False
End If
End Sub
Private Sub Command2_Click()
Unload Me
End Sub
Private Sub Command3_Click()
ma = Data1.Recordset.Fields(1).Value
ten = Data1.Recordset.Fields(0).Value
Unload Me
End Sub
Private Sub DBGrid1_DblClick()
Command3_Click
End Sub
Private Sub Form_Load()
Combo1.AddItem ("Mã chứng từ")
Combo1.AddItem ("Ngày Nhập Phiếu")
Command3.Enabled = False
'Combo1.Text = ""
End Sub
Private Sub Form_Resize()
Me.Height = 3510
Me.Width = 5370
End Sub
Private Sub Text1_GotFocus()
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Command1.SetFocus
End If
End Sub
MỤC LỤC
LỜI NÓI ĐẦU 1
CHƯƠNG I: CÔNG TY PHẦN MỀM TÀI CHÍNH KẾ TOÁN FAST VÀ BÀI TOÁN QUẢN LÝ KHO HÀNG TRONG HỆ THÔNG TIN KẾ TOÁN 3
Vài nét về lịch sử thành lập công ty 3
Bài toán xây dựng phân hệ thông tin quản lý kho hàng trong hệ thông tin kế toán 9
Môi trường và công cụ........................................................................... 12
CHƯƠNG II : KHẢO SÁT THỰC TẾ 16
I. Tóm tắt chức năng, nhiệm vụ, tổ chức và các quy trình nghiệp vụ của một công ty trong quản lý kho hàng 17
II.Mô tả hệ thống thông tin điều hành và quản lý 19
CHƯƠNG III: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 30
Phân tích hệ thống 30
Cấu trúc dữ liệu 36
Cấu trúc chương trình 44
Một số thuật toán trong chương trình 46
Xây dựng chương trình 50
KẾT LUẬN 60
PHỤ LỤC 62
TÀI LIỆU THAM KHẢO
Kỹ thuật lập trình Access trên Windows - Phạm Văn Ất - NXB Khoa học
Kỹ thuật
2. Microsoft Access 97 Visual Basic for application từ A đến Z - Trần Thanh
Phong - NXB Thống kê
3. Bài giảng Cơ sở dữ liệu - Trần Công Uẩn
4. Giáo trình Hệ thống thông tin quản lý- Trương Văn Tú
5. 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
6. Visual Basic 6.0
7. Tạp chí PC World Việt Nam
Các file đính kèm theo tài liệu này:
- bc_quan_ly_kho_theo_vb_4993.doc