Đề 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 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ế...

doc99 trang | Chia sẻ: hunglv | Lượt xem: 965 | Lượt tải: 0download
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:

  • docbc_quan_ly_kho_theo_vb_4993.doc
Tài liệu liên quan