Đề tài Xây dựng phân hệ kế toán tập hợp chi phí sản xuất và tính giá thành sản xuất tại công ty TNHH ống thép Hòa Phát

Tài liệu Đề tài Xây dựng phân hệ kế toán tập hợp chi phí sản xuất và tính giá thành sản xuất tại công ty TNHH ống thép Hòa Phát: Mục lục Lời nói đầu Thông tin chính xác, kịp thời là yếu tố then chốt đối với sự thành công của doanh nghiệp trong thời đại thông tin ngày nay, đặc biệt là những thông tin tài chính bởi vì chúng là cơ sở cho việc ra các quyết định về sản xuất và kinh doanh. Chất lượng của những thông tin này phụ thuộc vào chất lượng của hệ thống thông tin tạo ra nó, đó là hệ thống thông tin kế toán - trung tâm của hệ thống thông tin tài chính trong doanh nghiệp. Đây chính là lý do khiến cho việc tin học hóa hệ thống thông tin kế toán đang trở thành yêu cầu cấp thiết đối với các doanh nghiệp ở nước ta hiện nay, phần mềm kế toán ngày càng được sử dụng rộng rãi. Thực tế này cũng là một trong những vấn đề về ứng dụng tin học vào quản lý kinh tế mà các sinh viên chuyên ngành Tin học kinh tế cần quan tâm. Trong thời gian thực tập tại công ty cổ phần phần mềm kế toán ASC (Accounting Software Company), em đã cùng một số nhân viên của công ty này tiến hành nâng cấp phần mềm phần mềm kế toán tại công ty TNHH ...

doc119 trang | Chia sẻ: hunglv | Lượt xem: 1209 | 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 phân hệ kế toán tập hợp chi phí sản xuất và tính giá thành sản xuất tại công ty TNHH ống thép Hòa Phát, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
Mục lục Lời nói đầu Thông tin chính xác, kịp thời là yếu tố then chốt đối với sự thành công của doanh nghiệp trong thời đại thông tin ngày nay, đặc biệt là những thông tin tài chính bởi vì chúng là cơ sở cho việc ra các quyết định về sản xuất và kinh doanh. Chất lượng của những thông tin này phụ thuộc vào chất lượng của hệ thống thông tin tạo ra nó, đó là hệ thống thông tin kế toán - trung tâm của hệ thống thông tin tài chính trong doanh nghiệp. Đây chính là lý do khiến cho việc tin học hóa hệ thống thông tin kế toán đang trở thành yêu cầu cấp thiết đối với các doanh nghiệp ở nước ta hiện nay, phần mềm kế toán ngày càng được sử dụng rộng rãi. Thực tế này cũng là một trong những vấn đề về ứng dụng tin học vào quản lý kinh tế mà các sinh viên chuyên ngành Tin học kinh tế cần quan tâm. Trong thời gian thực tập tại công ty cổ phần phần mềm kế toán ASC (Accounting Software Company), em đã cùng một số nhân viên của công ty này tiến hành nâng cấp phần mềm phần mềm kế toán tại công ty TNHH ống thép Hòa Phát. Không nằm ngoài thực tế nêu trên, Hòa Phát cũng đang trong quá trình tin học hóa hoạt động quản lý nói chung và công tác kế toán nói riêng. Đây là một doanh nghiệp sản xuất điển hình và cũng như các doanh nghiệp sản xuất khác, công tác kế toán tập hợp chi phí sản xuất và tính giá thành sản phẩm luôn được coi là trọng tâm của công tác kế toán tại công ty Hòa Phát. Tuy nhiên phần mềm kế toán hiện tại chưa có chức năng này và phương pháp thủ công không mang lại hiệu quả mong muốn, yêu cầu tin học hóa công tác tính giá thành đang được đặt ra. Vì thế, em đã chọn đề tài cho chuyên đề thực tập tốt nghiệp của mình là “Xây dựng phân hệ kế toán tập hợp chi phí sản xuất và tính giá thành sản xuất tại công ty TNHH ống thép Hòa Phát”. Mục tiêu của đề tài này là khắc phục hiện trạng kém hiệu quả của công tác tính giá thành, tự động kết xuất các báo cáo về chi phí và giá thành một cách đầy đủ, chính xác và kịp thời, nhờ đó, đồng bộ hóa việc sử dụng phần mềm trong công tác kế toán tại công ty. Nội dung chính của chuyên đề thực tập này bao gồm ba chương: Chương I: Giới thiệu về công ty TNHH ống thép Hòa Phát và đề tài nghiên cứu. Chương II: Cơ sở lý luận của việc nghiên cứu đề tài, bao gồm: cơ sở tin học - đó là hệ thống thông tin quản lý và cơ sở kinh tế - đó là kế toán tập hợp chi phí sản xuất và tính giá thành sản phẩm. Chương III: Phân tích và thiết kế hệ thống thông tin tính giá thành tại công ty TNHH Hòa Phát. Do trình độ còn hạn chế nên bài viết của em không thể tránh khỏi sai sót, em rất mong nhận được ý kiến đóng góp của các thầy giáo, cô giáo và các bạn để đề tài này ngày một hoàn thiện hơn. Em rất cảm ơn thầy giáo Trương Văn Tú vì sự hướng dẫn của thầy. Em rất cảm ơn anh Phạm Trung - Giám đốc Công ty phần mềm kế toán ASC – và các anh chị khác trong công ty vì sự giúp đỡ của các anh chị trong quá trình em thực tập tại công ty. Em rất cảm ơn chị Nguyễn Thị Thảo Nguyên - Kế toán trưởng Công ty ống thép Hòa Phát - vì đã tạo điều kiện cho em hoàn thành đề tài này. Hà Nội, ngày 12 tháng 05 năm 2001 Tác giả Nguyễn Mạnh Tuân Chương i. Giới thiệu về công ty tnhh ống thép hòa phát và đề tài nghiên cứu i.Giới thiệu về công ty tnhh ống thép hòa phát Công ty TNHH ống thép Hòa Phát là một thành viên của Công ty Hoà Phát, bao gồm ống thép Hòa Phát, nội thất Hòa Phát, máy xây dựng Hòa Phát… Ngành nghề kinh doanh của Công ty ống thép Hòa Phát là sản xuất các loại sản phẩm thép ống. Văn phòng công ty đặt tại số 18 Hàng Chuối, các xưởng sản xuất và các kho đặt tại huyện Gia Lâm Phòng Kế toán – Tài chính Phòng có chức năng kiểm tra và hạch toán, xác định tình trạng tài chính hiện tại của Công ty và theo dõi mọi hoạt động sản xuất kinh doanh. Hạch toán chi tiết chi phí mua sắm, xác định kết quả sản xuất kinh doanh, thanh toán với người mua, đồng thời theo dõi các nguồn hình thành tài sản. Giải quyết các vấn đề về tiền lương, tiền thưởng, y tế và bảo hiểm xã hội của cán bộ công nhân viên trong Công ty Lập các báo cáo đầy đủ và kịp thời cho ban giám đốc Phòng Kỹ thuật Quản lý kỹ thuật và phát triển kỹ thuật sản phẩm từ các khâu thiết kế, công nghệ đến việc khảo sát nắm bắt các thông tin kỹ thuật mới nhằm mở rộng phương hướng phát triển về mặt kỹ thuật sản phẩm. Nhiệm vụ chính của phòng kỹ thuật: Quản lý về mặt kỹ thuật đối với tất cả các sản phẩm Thiết kế và tổ chức chỉ đạo kỹ thuật việc chế tạo các sản phẩm mới, cải tiến các sản phẩm hiện Nghiên cứu các công nghệ mới. Xây dựng các chỉ tiêu thông số kỹ thuật cho các sản phẩm và hướng dẫn thực hiện. Phụ trách công tác tiêu chuẩn hoá, công tác bảo quản các tài liệu kỹ thuật và công tác cung cấp các bản vẽ thiết kế cho sản xuất. Thẩm định, kiểm tra các thông số kỹ thuật của sản phẩm. Định kỳ tập hợp báo cáo với Giám đốc về tình hình thực hiện kế hoạch sản xuất hàng tháng. Giao kế hoạch sản xuất cho các phân xưởng. Phòng Hành chính Tổ chức quản lý công tác văn thư, tiếp đón khách, tổ chức các cuộc họp. Nhiệm vụ chính của phòng hành chính : Tiếp khách cho Giám đốc Đóng dấu, tiếp nhận công văn thư báo, bảo mật văn bản. Phân loại công văn trình Giám đốc, trực điện thoại, phục vụ hội họp. ii.giới thiệu đề tài nghiên cứu 1.Khái quát đề tài Đề tài là Xây dựng phân hệ kế toán tập hợp chi phí sản xuất và tính giá thành sản xuất tại Công ty TNHH ống thép Hòa Phát. Những nội dung chính bao gồm: Phân tích chi tiết hệ thống tính giá thành hiện tại ở Công ty Hòa Phát, xác định các vấn đề và nguyên nhân của chúng, từ đó đề ra các giải pháp tổng thể giải quyết các vấn đề. Trên cơ sở của việc phân tích chi tiết, thiết kế cơ sở dữ liệu cho hệ thống mới và tích hợp vào cơ sở dữ liệu của hệ thống thông tin kế toán hiện tại. Thiết kế các xử lý, các giao diện và lập trình. 2.Tính cấp thiết của đề tài Công ty TNHH ồng thép Hòa Phát là một doanh nghiệp sản xuất điển hình với nhiều công đoạn sản xuất, việc hạch toán chi phí sản xuất và tính giá thành sản phẩm có ý nghĩa rất quan trọng bởi vì nó cung cấp những thông tin phản ánh hiệu quả của công tác quản lý và chất lượng của quá trình sản xuất kinh doanh, tạo cơ sở cho việc lập kế hoạch sản xuất và kinh doanh, hoạch định các chiến lược dài hạn. Thực tế cho thấy, hạch toán giá thành là khâu phức tạp nhất trong toàn bộ công tác kế toán ở doanh nghiệp. Hạch toán giá thành liên quan đến hầu hết các yếu tố đầu vào và đầu ra của quá trình sản xuất kinh doanh. Đảm bảo việc hạch toán giá thành chính xác, kịp thời, phù hợp với đặc điểm hình thành và phát sinh chi phí ở doanh nghiệp là yêu cầu có tính xuyên suốt trong quá trình hạch toán ở doanh nghiệp. Hiện nay, phòng kế toán của Công ty đã được trang bị phần mềm kế toán tuy nhiên phần mềm này chưa có chức năng tính giá thành. Do đó, người chịu trách nhiệm phần kế toán sản xuất vẫn phải tập hợp chi phí sản xuất và tính giá thành sản phẩm theo phương pháp thủ công. Quy trình sản xuất gồm nhiều công đoạn, đối tượng tính giá thành nhiều và khá phức tạp , số lượng chứng từ lớn là những nguyên nhân khiến cho việc hạch toán giá thành theo phương pháp thủ công kém hiệu quả, thường chậm và thiếu chính xác, chưa đáp ứng được yêu cầu Chính vì thế, tin học hóa công tác hạch toán giá thành đang là yêu cầu cấp thiết thiết hiện nay tại Công ty. Chương II Cơ sở lý luận của việc nghiên cứu đề tài i.Hệ thống thông tin quản lý 1.Hệ thống thông tin quản lý Thông tin là sự phản ánh và biến phản ánh thành tri thức mới về đối tượng được phản ánh trong tri thức của chủ thể nhận phản ánh. Có thể mô tả thông tin theo hình dưới đây: Thông tin quản lý là thông tin mà có ít nhất một cán bộ quản lý cần hoặc có ý muốn dùng vào việc ra quyết định quản lý Hệ thống thông tin là một tập hợp những con người, các thiết bị phần cứng, phần mềm, dữ liệu… thực hiện hoạt động thu thập, lưu trữ, xử lý và phân phối thông tin trong một tập hợp các ràng buộc gọi là môi trường. Dưới đây là mô hình hệ thống thông tin: Hệ thống thông tin quản lý là hệ thống thông tin trợ giúp các hoạt động quản lý của tổ chức, các hoạt động này nằm ở mức điều khiển tác nghiệp, điều khiển quản lý hoặc lập kế hoạch chiến lược. Cùng một hệ thống thông tin có thể mô tả theo các mức khác nhau: mô hình logic, mô hình vật lý ngoài và mô hình vật lý trong. Mỗi mô hình là kết quả của một góc nhìn khác nhau, mô hình logic là kết quả của góc nhìn quản lý, mô hình vật lý ngoài là kết quả của góc nhìn sử dụng và mô hình vật lý trong là kết quả của góc nhìn kĩ thuật. Ba mô hình này có độ ổn định khác nhau, mô hình logic là ổn định nhất và mô hình vật lý trong là hay biến đổi nhất. Mô hình logic mô tả hệ thống làm gì: dữ liệu mà nó thu thập, xử lý mà nó phải thực hiện, các kho để chứa các kết quả hoặc dữ liệu để lấy ra cho các xử lý và những thông tin mà hệ thống sản sinh ra. Mô hình này trả lời câu hỏi Cái gì ? và Để làm gì ?. Nó không quan tâm tới phương tiện được sử dụng cũng như địa điểm và thời điểm mà dữ liệu được xử lý. Mô hình vật lý ngoài chú ý tới những khía cạnh nhìn thấy được của hệ thống như là các vật mang dữ liệu và vật mang kết quả cũng như hình thức của đầu vào và của đầu ra, phương tiện để thao tác với hệ thống, những dịch vụ, bộ phận, con người và vị trí công tác trong hoạt động xử lý, các thủ tục thủ công cũng như yếu tố về địa điểm thực hiện xử lý dữ liệu, loại màn hình hoặc bàn phím được sử dụng. Mô hình này cũng chú ý tới mặt thời gian của hệ thống, nghĩa là về những thời điểm mà các hoạt động xử lý dữ liệu khác nhau xảy ra. Nó trả lời câu hỏi Cái gi ? Ai ? ở đâu ? và Khi nào ? Mô hình vật lý trong liên quan tới những khía cạnh vật lý của hệ thống tuy nhiên không phải là cái nhìn của người sử dụng mà là của nhân viên kĩ thuật. Chẳng hạn, đó là những thông tin liên quan tới loại trang thiết bị được dùng để thực hiện hệ thống, dung lượng kho lưu trữ và tốc độ xử lý của thiết bị, tổ chức vật lý của dữ liệu trong kho chứa, cấu trúc của các chương trình và ngôn ngữ thể hiện. Nó trả lời câu hỏi Như thế nào ? Hình vẽ dưới đây minh họa một hệ thống thông tin theo ba mô hình trên: 2.Hiệu quả kinh tế của hệ thống thông tin quản lý Việc đánh giá hiệu quả kinh tế của hệ thống thông tin thực chất là việc nghiên cứu xác định lợi ích bằng tiền mà nó mang lại cho tổ chức bởi vì phần chi phí bằng tiền cho nó được xác định xác định dễ dàng. Lợi ích của hệ thống thông tin Giá trị của một thông tin bằng lợi ích thu được của việc thay đổi phương án quyết định do thông tin đó tạo ra. Giá trị của một hệ thống thông tin là sự thể hiện bằng tiền tập hợp những rủi ro mà tổ chức tránh được và những thuận lợi mà tổ chức có được nhờ hệ thống thông tin. Lợi ích tránh rủi ro là: PR = ồ(Ai. Pi . Ri) Với Ai: thiệt hại do rủi ro thứ i gây ra Pi: xác suất xảy ra các rủi ro thứ i Ri: tỷ lệ giảm bớt rủi ro thứ i nhờ có hệ thống thông tin Lợi ích tận dụng cơ hội: CR = ồ(Ci. Pi . Ri) Với Ci: Lợi ích khi tận dụng cơ hội thứ i Pi: Xác suất xảy ra cơ hội thứ i Ri: tỷ lệ tận dụng cơ hội của hệ thống Lợi ích hàng năm của hệ thống thông tin: PR + CR Chi phí cho hệ thống thông tin Chi phí cố định cho hệ thống thông tin bao gồm các khoản sau: 1) Chi phí phân tích và thiết kế Cpttk 2) Chi phí xây dựng (thực hiện) Cxd 3) Chi phí máy móc tin học Cmm 4) Chi phí cài đặt Ccđ 5) Chi trang bị phục vụ Ctbpv 6) Chi cố định khác Ccđk Chi phí cố định CPCĐ = Cpttk + Cxd + Cmm + Ccđ + Ctbpv + Ccđk Chi phí biến động là những khoản chi phí để khai thác hệ thống, bao gồm những khoản chi thường xuyên và đột xuất trong thời kì khai thác. Đây là chi phí theo thời gian nên sẽ được tính theo các kì, chủ yếu là năm. Đó là các khoản: 1) Chi phí thù lao nhân lực Ctl 2) Chi phí thông tin đầu vào, văn phòng phẩm Cđv 3) Chi phí tiền điện, truyền thông… Cđtt 4) Chi phí bảo trì, sửa chữa Cbtsc 5) Chi phí biến động khác Cbđk Chi phí biến động của năm thứ i sẽ là: CPBĐ(i) = Ctl(i) + Cđv(i) + Cđtt(i) + Cbtsc(i) + Cbđk(i) Đánh giá hiệu quả kinh tế của hệ thống thông tin Hiệu quả tuyệt đối và hiệu quả tương đối của hệ thống thông tin được tính giống như các loại đầu tư khác. Gọi n là số năm sử dụng hệ thống thông tin và chuyển hết giá trị tiền tệ theo thời gian về tương lai thì tổng chi phí sẽ là: TCP = CPCĐ. (1 + lãi suất)n + ồ CPBĐ(i).(1 + lãi suất)(n-i) Và tổng thu nhập sẽ là: TTN = ồ TN(i).(1 + lãi suất)(n-i) Cần phải xây dựng hệ thống thông tin sao cho TTN > TCP Phương pháp phân tích điểm cân bằng chi phí Phương pháp này so sánh chi phí của việc dùng hệ thống cũ với việc dùng hệ thống mới. Điểm cân bằng là điểm mà tại đó chi phí cho hệ thống mới bằng hệ thống cũ. Phương pháp phân tích tiền dư Phương pháp này xem xét mối liên hệ giữa chi phí tích luỹ và lợi ích tích luỹ. Hiệu của chúng gọi là tiền dư trong kì. Tiền dư = (Thu – Chi). (Hệ số) Nếu tổng tiền dư ước lượng được là dương thì việc đầu tư là thoả đáng. Phương pháp này còn cho phép lựa chọn phương án tối ưu trong các phương án đề xuất Phương pháp kinh nghiệm Phương pháp này dựa vào ý kiến của các chuyên gia hoặc những người có khả năng Phương pháp so sánh Phương pháp này đem so sánh hệ thống thông tin cần phải xem xét với một hệ thống thông tin tương tự hoặc một hệ thống trừu tượng được chọn làm mẫu. 3.Phương pháp phát triển một hệ thống thông tin quản lý Mục tiêu cuối cùng của những cố gắng phát triển một hệ thống thông tin là cung cấp cho các thành viên của tổ chức những công cụ quản lý tốt nhất. Phát triển một hệ thống thông tin bao gồm việc phân tích hệ thống đang tồn tại, thiết kế một hệ thống mới, thực hiện và tiến hành cài đặt nó. Phân tích một hệ thống bắt đầu từ việc thu thập dữ liệu và chỉnh đốn chúng để đưa ra được chẩn đoán về tình hình thực tế. Thiết kế là nhằm xác định các bộ phận của một hệ thống mới có khả năng cải thiện tình trạng hiện tại và xây dựng các mô hình logic, mô hình vật lý ngoài của hệ thống đó. Việc thực hiện hệ thống thông tin liên quan tới xây dựng mô hình vật lý trong của hệ thống mới và chuyển mô hình đó sang ngôn ngữ tin học. Cài đặt một hệ thống là tích hợp nó vào hoạt động của tổ chức. Câu hỏi đầu tiên đặt ra của việc phát triển một hệ thống thông tin mới là Cái gì bắt buộc một tổ chức phải tiến hành phát triển hệ thống thông tin ? Nguyên nhân dẫn tới việc phát triển một hệ thống thông tin Những vấn đề về quản lý Những yêu cầu mới của nhà quản lý Sự thay đổi của công nghệ Sự thay đổi sách lược chính trị Phương pháp phát triển một hệ thống thông tin quản lý Phương pháp được định nghĩa như một tập hợp các bước và các công cụ cho phép tiến hành một quá trình phát triển hệ thống chặt chẽ nhưng dễ quản lý hơn. Dưới đây là ba nguyên tắc chung của nhiều phương pháp hiện đại có cấu trúc để phát triển một hệ thống thông tin: Nguyên tắc 1: Sử dụng các mô hình. Nguyên tắc 2: Chuyển từ cái chung sang cái riêng. Nguyên tắc 3: Chuyển từ mô hình vật lý sang mô hình logic khi phân tích và từ mô hình logic sang mô hình vật lý khi thiết kế. Các công đoạn của phát triển hệ thống Có thể chia quá trình phát triển một hệ thống thông tin quản lý thành 7 giai đoạn, cuối mỗi giai đoạn luôn phải ra quyết định về việc tiếp tục hay chấm dứt sự phát triển hệ thống. Quyết định này được trợ giúp dựa vào nội dung báo cáo mà phân tích viên hoặc nhóm phân tích viên trình bày cho các nhà sử dụng. Phát triển hệ thống là một quá trình lặp. Tuỳ theo kết quả của một giai đoạn có thể, và đôi khi là cần thiết, phải quay về giai đoạn trước để tìm cách khắc phục những sai sót. Một số nhiệm vụ được thực hiện trong suốt quá trình, đó là việc lập kế hoạch cho giai đoạn tới, kiểm soát những nhiệm vụ đã hoàn thành, đánh giá hệ thống và lập tài liệu về hệ thống. Dưới đây là mô tả sơ lược 7 giai đoạn của việc phát triển một hệ thống thông tin. Giai đoạn 1. Đánh giá yêu cầu Đánh giá yêu cầu có mục đích cung cấp cho lãnh đạo của tổ chức hoặc hội đồng giám đốc những dữ liệu đích thực để ra quyết định về thời cơ, tính khả thi và hiệu quả của một dự án phát triển hệ thống. Giai đoạn này được thực hiện tương đối nhanh và không đòi hỏi chi phí lớn. Nó bao gồm các công đoạn sau: 1.Lập kế hoạch đánh giá yêu cầu 2.Làm rõ yêu cầu 3.Đánh giá khả năng thực thi 4.Chuẩn bị và trình bày báo cáo đánh giá yêu cầu Giai đoạn 2. Phân tích chi tiết Phân tích chi tiết được tiến hành sau khi có sự đánh giá thuận lợi về yêu cầu. Những mục đích chính của phân tích chi tiết là hiểu rõ các vấn đề của hệ thống đang nghiên cứu, xác định nguyên nhân đích thực của những vấn đề đó, xác định những đòi hỏi và những ràng buộc áp dụng đối với hệ thống và xác định mục tiêu mà hệ thống thông tin mới phải đạt được. Trên cơ sở nội dung báo cáo phân tích chi tiết sẽ quyết định tiếp tục tiến hành hay thôi phát triển một hệ thống mới. Để làm những việc đó, giai đoạn phân tích chi tiết bao gồm các công đoạn sau đây. 1.Lập kế hoạch phân tích chi tiết. 2.Nghiên cứu môi trường của hệ thống đang tồn tại 3.Nghiên cứu hệ thống thực tại 4.Đưa ra chẩn đoán và xác định các yếu tố giải pháp. 5.Đánh giá lại tính khả thi. 6.Thay đổi đề xuất của dự án 7.Chuẩn bị và trình bày báo cáo phân tích chi tiết Giai đoạn 3. Thiết kế logic Giai đoạn này nhằm xác định tất cả các thành phần logic của một hệ thống thông tin cho phép loại bỏ được các vấn đề của hệ thống thực tế và đạt được những mục tiêu đã được thiết lập ở giai đoạn trước. Mô hình logic của hệ thống mới sẽ bao hàm thông tin mà hệ thống mới sẽ sản sinh, nội dung của cơ sở dữ liệu (các tệp, các quan hệ giữa các tệp), các xử lý và hợp thức hóa sẽ phải thực hiện và các dữ liệu sẽ được nhập vào. Mô hình logic sẽ phải được những người sử dụng xem xét và chuẩn y. Thiết kế logic bao gồm những công đoạn sau: 1.Thiết kế cơ sở dữ liệu. 2.Thiết kế xử lý 3.Thiết kế các luồng dữ liệu vào 4.Chỉnh sửa tài liệu cho mức logic 5.Hợp thức hóa mô hình logic. Giai đoạn 4. Đề xuất các phương án của giải pháp Mô hình logic của hệ thống mới mô tả cái mà hệ thống này sẽ làm. Khi mô hình này được xác định và chuẩn y bởi người sử dụng, thì phân tích viên hoặc nhóm phân tích viên phải nghiêng về các phương tiện để thực hiện hệ thôngs này. Đó là việc xây dựng các phương án khác nhau để cụ thể hóa mô hình logic. Mỗi phương án là một phác họa của mô hình vật lý ngoài của hệ thống nhưng chưa phải là một mô tả chi tiết. Tất nhiên là người sử dụng sẽ thấy dễ dàng hơn khi lựa chọn được dựa trên những mô hình vật lý ngoài được xây dựng chi tiết nhưng chi phí cho việc tạo ra chúng là rất lớn. Để giúp những người sử dụng lựa chọn giải pháp vật lý thỏa mãn tốt hơn các mục tiêu đã định ra trước đây, nhóm phân tích viên phải đánh giá các chi phí và lợi ích (hữu hình và vô hình) của mỗi phương án và phải có những khuyến nghị cụ thể. Một báo cáo sẽ được trình lên những người sử dụng và một buổi trình bày sẽ được thực hiện. Những người sử dụng sẽ chọn lấy một phương án tỏ ra đáp ứng tốt nhất các yêu cầu của họ mà vẫn tôn trọng các ràng buộc của tổ chức. Sau đây là các công đoạn của giai đoạn đề xuất các phương án của giải pháp: 1.Xác định các ràng buộc tin học và ràng buộc tổ chức. 2.Xây dựng các phương án của giải pháp 3.Đánh giá các phương án của giải pháp 4.Chuẩn bị và trình bày báo cáo giai đoạn đề xuất các phương án giải pháp Giai đoạn 5. Thiết kế vật lý ngoài Giai đoạn này được tiến hành sau khi có một phương án giải pháp được lựa chọn. Thiết kế vật lý bao gồm hai tài liệu kết quả cần có: trước hết là tài liệu chứa tất cả các đặc trưng của hệ thống mới sẽ cần cho việc thực hiện kĩ thuật; tiếp đó là tài liệu dành cho người sử dụng mô tả phần thủ công và những giao diện với những phần tin học hóa. Những công đoạn chính của giai đoạn thiết kế vật lý ngoài là: 1.Lập kế hoạch thiết kế vật lý ngoài 2.Thiết kế chi tiết các giao diện (vào/ra). 3.Thiết kế cách thức tương tác với phần tin học hóa 4.Thiết kế các thủ tục thủ công. 5.Chuẩn bị và trình bày báo cáo về thiết kế vật lý ngoài. Giai đoạn 6. Triển khai kĩ thuật hệ thống Kết quả quan trọng nhất của giai đoạn thực hiện kĩ thuật là phần tin học hóa của hệ thống thông tin, có nghĩa là phần mềm. Những người chịu trách nhiệm về giai đoạn này phải cung cấp các tài liệu như các bản hướng dẫn sử dụng, các thao tác cũng như các tài liệu mô tả về hệ thống. Các công việc phải thực hiện trong giai đoạn này là như sau: 1.Lập kế hoạch thực hiện kĩ thuật 2.Thiết kế vật lý trong 3.Lập trình 4.Thử nghiệm hệ thống 5.Chuẩn bị tài liệu Giai đoạn 7. Cài đặt và khai thác Cài đặt hệ thống là pha trong đó việc chuyển từ hệ thống cũ sang hệ thống mới được thực hiện. Để việc chuyển đổi này được thực hiện với những va chạm ít nhất, cần phải lập kế hoạch một cách cẩn thận. Giai đoạn này bao gồm các công đoạn sau: 1.Lập kế hoạch cài đặt 2.Chuyển đổi 3.Khai thác và bảo trì 4. Đánh giá Kết quả của quá trình phân tích và thiết kế bao gồm hai phần lớn: hệ thống thông tin và tài liệu về hệ thống. Các kí pháp dùng trong phân tích và thiết kế Đối với sơ đồ luồng thông tin: Xử lý: Kho lưu trữ dữ liệu: Đối với sơ đồ luồng dữ liệu: ii.Kế toán tập hợp chi phí sản xuất và tính giá thành sản phẩm 1.Khái niệm chi phí sản xuất và giá thành sản phẩm Chi phí sản xuất là biểu hiện bằng tiền của toàn bộ hao phí về lao động sống và lao động vật hóa mà doanh nghiệp đã chi ra để tiến hành các hoạt động sản xuất kinh doanh trong một thời kì. Giá thành là chi phí sản xuất tính cho một khối lượng hoặc đơn vị sản phẩm do doanh nghiệp đã sản xuất hoàn thành. 2.Phân loại chi phí sản xuất Phân loại theo mối quan hệ trong sản xuất sản phẩm: Chi phí trực tiếp là những chi phí sản xuất quan hệ trực tiếp với việc sản xuất ra một loại sản phẩm, một công việc nhất định, những chi phí này kế toán có thể căn cứ vào số liệu từ chứng từ kế toán để ghi trực tiếp cho từng đối tượng tính giá thành Chi phí gián tiếp là những chi phí sản xuất có liên quan đến việc sản xuất nhiều loại sản phẩm, nhiều công việc, những chi phí này kế toán phải tiến hành phân bổ cho các đối tượng tính giá thành có liên quan theo một tiêu chuẩn thích hợp. Phân loại chi phí theo yếu tố chi phí: Yếu tố nguyên liệu và vật liệu Yếu tố nhiên liệu và động lực Yếu tố tiền lương và phụ cấp Yếu tố kinh phí công đoàn, bảo hiểm xã hội, bảo hiểm y tế Yếu tố khấu hao tài sản cố định Yếu tố dịch vụ mua ngoài Yếu tố chi phí khác bằng tiền Phân loại theo phạm vi phát sinh chi phí Các chi phí phát sinh trong sản xuất sản phẩm, bao gồm: Chi phí nguyên vật liệu trực tiếp Chi phí nhân công trực tiếp Chi phí sản xuất chung Các chi phí phát sinh ngoài bộ phận sản xuất, bao gồm: Chi phí bán hàng Chi phí quản lý 3.Phân loại giá thành Phân loại theo nguồn số liệu và thời điểm tính toán Giá thành kế hoạch: là giá thành sản phẩm được tính trên cơ sở chi phí sản xuất kế hoạch và sản lượng kế hoạch. Việc tính toán giá thành kế hoạch do bộ phận kế hoạch của doanh nghiệp thực hiện và được tính trước khi bắt đầu quá trình sản xuất, chế tạo sản phẩm. Giá thành kế hoạch của sản phẩm là mục tiêu phấn đấu của doanh nghiệp, là căn cứ để so sánh, phân tích, đánh giá tình hình thực hiện kế hoạch giá thành và kế hoạch hạ giá thành của doanh nghiệp. Giá thành định mức: là giá thành của sản phẩm được tính trên cơ sở các định mức chi phí hiện hành và chỉ tính cho đơn vị sản phẩm. Việc tính giá thành định mức cũng được thực hiện trước khi tiến hành quá trình sản xuất, chế tạo sản phẩm. Giá thành định mức là công cụ quản lý định mức của doanh nghiệp, là thước đo chính xác để xác định kết quả sử dụng tài sản, vật tư, lao động trong sản xuất, giúp cho đánh giá đúng đắn các giải pháp kinh tế kĩ thuật mà doanh nghiệp đã thực hiện trong quá trình hoạt động sản xuất nhằm nâng cao hiệu quả kinh doanh. Giá thành thực tế: là giá thành sản phẩm được tính trên cơ sở số liệu chi phí sản xuất thực tế đã phát sinh và tập hợp được trong kì và sản lượng thực tế sản phẩm đã sản xuất ra trong kì. Giá thành thực tế chỉ có thể tính toán được sau khi kết thúc quá trình sản xuất, chế tạo sản phẩm. Giá thành thực tế sản phẩm là chỉ tiêu kinh tế tổng hợp, phản ánh kết quả phấn đấu của doanh nghiệp trong việc sử dụng các giải pháp kinh tế kĩ thuật để thực hiện quá trình sản xuất sản phẩm, là cơ sở để xác định kết quả của hoạt động sản xuất kinh doanh của doanh nghiệp. Phân loại theo phạm vi tính toán Giá thành sản xuất: (còn gọi là giá thành công xưởng) bao gồm các chi phí sản xuất: chi phí nguyên vật liệu trực tiếp, chi phí nhân công trực tiếp và chi phí sản xuất chung tính cho những sản phẩm đã hoàn thành. Giá thành sản xuất của sản phẩm được sử dụng cho việc ghi sổ các sản phẩm đã hoàn thành nhập kho hoặc giao cho khách hàng. Giá thành sản xuất của sản phẩm cũng là căn cứ để tính giá vốn hàng bán và lãi gộp ở các doanh nghiệp sản xuất. Giá thành toàn bộ: bao gồm giá thành sản xuất cộng thêm chi phí bán hàng và chi phí quản lý doanh nghiệp tính cho sản phẩm đó. Giá thành toàn bộ của sản phẩm chỉ được tính khi sản phẩm đã được tiêu thụ. Giá thành toàn bộ của sản phẩm là căn cứ để xác định lãi trước thuế của doanh nghiệp. 4.Phương pháp tập hợp chi phí sản xuất Các tài khoản sử dụng Tài khoản 621: “Chi phí nguyên vật liệu trực tiếp”. Tài khoản này được sử dụng để tập hợp tất cả các khoản chi phí về nguyên liệu, nhiên liệu, vật liệu được sử dụng trực tiếp cho quá trình sản xuất sản phẩm. Tài khoản này phải được mở chi tiết theo từng đối tượng hạch toán chi phí hoặc đối tượng tính giá thành ( nếu được). Kết cấu của tài khoản 621 như sau: Bên nợ: Tập hợp chi phí nguyên vật liệu trực tiếp thực tế phát sinh Bên có: Giá trị nguyên vật liệu sử dụng không hết trả lại kho; kết chuyển chi phí nguyên vật liệu trực tiếp vao tài khoản tính giá thành. Tài khoản 621 không có số dư Tài khoản 622: “Chi phí nhân công trực tiếp”. Tài khoản này được sử dụng để tập hợp tất cả các khoản chi phí liên quan đến bộ phận lao động trực tiếp sản xuất sản phẩm (tiền lương, tiền công, các khoản phụ cấp, các khoản trích theo lương). Tài khoản này mở chi tiết theo từng đối tượng hạch toán chi phí hoặc đối tượng giá thành (nếu được). Bên nợ: Tập hợp chi phí nhân công trực tiếp thực tế phát sinh Bên có: Kết chuyển chi phí nhân công trực tiếp vào tài khoản tính giá thành. Tài khoản 622 không có số dư Tài khoản 627: “Chi phí sản xuất chung”. Tài khoản này được sử dụng để tập hợp tất cả các khoản chi phí quản lý, phục vụ sản xuất ở phân xưởng, bộ phận sản xuất kinh doanh và phân bổ các chi phí này vào các đối tượng hạch toán chi hoặc đối tượng tính giá thành. Tài khoản này phải mở chi tiết theo từng phân xưởng hoặc bộ phận sản xuất kinh doanh. Bên nợ: Tập hợp chi phí sản xuất chung thực tế phát sinh Bên có: Các khoản làm giảm chi phí sản xuất chung Kết chuyển chi phí sản xuất chung vào tài khoản tính giá thành Tài khoản 627 không có số dư. Tài khoản 154: “Chi phí sản xuất kinh doanh dở dang”. Tài khoản này được sử dụng để tổng hợp chi phí sản xuất và tính giá thành sản phẩm. Tài khoản 154 phải mở chi tiết cho từng đối tượng hạch toán chi phí sản xuất hoặc đối tượng tính giá thành (nếu được) Bên nợ: Tổng hợp chi phí sản xuất phát sinh Bên có: Các khoản làm giảm chi phí sản xuất Giá thành sản phẩm hoàn thành Dư nợ: Giá trị dở dang lúc đầu kì và cuối kì Tập hợp chi phí nguyên vật liệu trực tiếp Khi xuất nguyên vật liệu để trực tiếp sản xuất,chế tạo sản phẩm, ghi: Nợ TK 621 Có TK 152 Đối với vật liệu mua ngoài không nhập kho mà xuất ngay để trực tiếp sản xuất sản phẩm, ghi: Nợ TK 621 Nợ TK 1331: VAT được khấu trừ Có TK 111/112/331: Tổng giá thanh toán Nếu tự sản xuất và đưa vào sử dụng ngay, ghi: Nợ TK 621 Có TK 154 Đối với vật liệu dùng không hết trả lại kho, ghi: Nợ TK 152 Có TK 621 Cuối kì, kết chuyển chi phí nguyên vật liệu trực tiếp vào tài khoản tính giá thành, ghi: Nợ TK 154 Có TK 621 Sơ đồ hạch toán tập hợp chi phí nguyên vật liệu trực tiếp Tập hợp chi phí nhân công trực tiếp Tính ra tiền lương phải trả công nhân trực tiếp sản xuất, ghi: Nợ TK 622 Có TK 334 Trích kinh phí công đoàn, bảo hiểm xã hội, bảo hiểm y tế theo tỉ lệ quy định phần tính vào chi phí sản xuất là 19% của tiền lương, ghi: Nợ TK 622 Có TK 338 Khi trích trước lương nghỉ phép của công nhân trực tiếp sản xuất, ghi: Nợ TK 622 Có TK 335 Các khoản chi phí bằng tiền thanh toán cho lao động trực tiếp, ghi: Nợ TK 622 Có TK 111,141 Sơ đồ hạch toán tập hợp chi phí nhân công trực tiếp: Tập hợp chi phí sản xuất chung Chi phí về tiền lương của nhân viên phân xưởng, ghi: Nợ TK 627 Có TK 334 Trích kinh phí công đoàn, bảo hiểm xã hội, bảo hiểm y tế tương ứng, ghi: Nợ TK 627 Có TK 338 Chi phí về vật liệu sử dụng cho phân xưởng, ghi: Nợ TK 627 Có TK 152 Chi phí về công cụ dụng cụ, ghi: Nợ TK 627 Có TK 153 Chi phí về khấu hao tài sản cố định: Nợ TK 627 Có TK 214 Các chi phí khác: Nợ TK 627 Có TK 331,111,112,141,… Cuối kì, phân bổ chi phí sản xuất chung và kết chuyển vào tài khoản tính giá thành, ghi: Nợ TK 154 Có TK 627 Sơ đồ hạch toán tập hợp chi phí sản xuất chung: Tổng hợp chi phí sản xuất và tính giá thành sản phẩm hoàn thành Vào cuối mỗi kì, kế toán phải tổng hợp chi phí nguyên vật liệu trực tiếp, chi phí nhân công trực tiếp và chi phí sản xuất chung thực tế phát sinh để kết chuyển về tài khoản tính giá thành. Nợ TK 154 Có TK 621, 622, 627 Đối với các khoản làm giảm chi phí sản xuất, ghi: Nợ TK 152, 111,… Có TK 154 Khi xác định được giá thành sản phẩm hoàn thành, ghi: Nợ TK 155: nếu nhập kho thành phẩm Nợ TK 157: nếu gửi bán Nợ TK 632: nếu bán luôn Có TK 154: Giá thành sản phẩm hoàn thành Sơ đồ tổng hợp về hạch toán giá thành: 5.Các phương pháp tính giá thành sản phẩm Phương pháp trực tiếp Đây là phương pháp hạch toán giá thành theo sản phẩm áp dụng cho những doanh nghiệp có quy trình sản xuất giản đơn như các doanh nghiệp khai thác và sản xuất động lực… Đặc điểm của các doanh nghiệp có quy trình sản xuất giản đơn là chỉ sản xuất một hoặc một số ít mặt hàng với số lượng lớn, chu kì sản xuất ngắn, có thể hoặc không có sản phẩm dở dang. Công thức tính giá thành: Phương pháp loại trừ giá trị sản phẩm phụ Phương pháp này được áp dụng trong trường hợp cùng một quy trình sản xuất vừa tạo ra sản phẩm chính vừa tạo ra sản phẩm phụ (sản phẩm phụ không phải là đối tượng tính giá thành). Do vậy, để tính được giá thành của sản phẩm chính cần phải loại trừ giá trị sản phẩm phụ ra khỏi tổng chi phí. Phương pháp hệ số Phương pháp này áp dụng trong trường hợp cùng một quy trình sản xuất tạo ra đồng thời nhiều loại sản phẩm chính và tất nhiên là không thể theo dõi chi tiết chi phí theo từng loại sản phẩm. Do vậy, để xác định giá thành cho từng loại sản phẩm chính cần phải quy đổi các sản phẩm chính khác nhau về một loại sản phẩm duy nhất, gọi là sản phẩm tiêu chuẩn, theo hệ số quy đổi được xây dựng sẵn. Sản phẩm có hệ số bằng 1 được chọn làm sản phẩm tiêu chuẩn. Nếu trong quá trình sản xuất có sản phẩm dở dang thì cũng cần quy đổi về sản phẩm tiêu chuẩn để xác định chi phí sản xuất dở dang cuối kì. Các công thức: Phương pháp tỉ lệ Phương pháp này cũng được áp dụng trong điều kiện sản xuất tương tự như đã nêu ở phương pháp hệ số nhưng giữa các loại sản phẩm chính lại không xác lập một hệ số quy đổi. Để xác định tỉ lệ người ta có thể sử dụng nhiều tiêu thức khác nhau như: giá thành kế hoạch, chi phí nguyên vật liệu trực tiếp,trọng lượng sản phẩm,… Thông thường có thể sử dụng giá thành kế hoạch hoặc giá thành định mức. Các công thức: Phương pháp đơn đặt hàng Đây là phương đây là phương pháp tính giá thành trong điều kiện doanh nghiệp sản xuất đơn chiếc hoặc sản xuất hàng loại nhỏ theo đơn đặt hàng của người mua. Đặc điểm của phương pháp này là tính giá thành riêng biệt theo từng đơn đặt hàng nên việc tổ chức kế toán chi phí phải được chi tiết hóa theo từng đơn đặt hàng. Chi phí nguyên vật liệu trực tiếp và chi phí nhân công trực tiếp được hạch toán trực tiếp vào từng đơn đặt hàng có liên quan, riêng chi phí sản xuất chung do liên quan đến nhiều đơn đặt hàng nên tổ chức theo dõi theo phân xưởng và cuối tháng mới tiến hành phân bổ cho từng đơn đặt hàng theo tiêu thức phù hợp. Đối với phương pháp này, đối tượng hạch toán chi phí và đối tượng tính giá thành là từng đơn đặt hàng cụ thể Giá thành của từng đơn đặt hàng là toàn bộ chi phí phát sinh kể từ lúc bắt đầu thực hiện cho đến lúc hoàn thành đơn đặt hàng đúng theo những tiêu chuẩn kĩ thuật được thỏa thuận trong hợp đồng sản xuất. Phương pháp công đoạn Phương pháp tính giá thành công đoạn áp dụng cho những doanh nghiệp sản xuất sản phẩm theo quy trình công nghệ phức tạp, quá trình chế biến sản phẩm trải qua nhiều giai đoạn theo một thứ tự nhất định để có được sản phẩm hoàn chỉnh. Các giai đoạn công nghệ có thể được thực hiện ở một hoặc nhiều phân xưởng sản xuất, mỗi giai đoạn công nghệ có thể tạo ra bán thành phẩm cho bước sau hoặc chỉ tham gia vào quá trình chế biến có tính chất liên tục để tạo ra sản phẩm hoàn chỉnh. Phương pháp định mức Phương pháp tính giá thành định mức chỉ áp dụng trong những doanh nghiệp đã xác lập được hệ thống các định mức về chi phí nguyên vật liệu, nhân công cũng như có dự toán về chi phí phục vụ và quản lý sản xuất cho từng loại sản phẩm được sản xuất ra, ngay cả các chi tiết để tạo nên sản phẩm hoàn chỉnh. Nói cách khác, doanh nghiệp phải xác lập được giá thành định mức cho từng loại sản phẩm trên cơ sở các định mức tiêu hao hiện hành. Phương pháp định mức cho phép phát hiện một cách nhanh chóng những khoản chênh lệch về chi phí phát sinh thực tế so với định mức của từng khoản mục theo từng nơi phát sinh chi phí cũng như đối tượng chịu chi phí, các nguyên nhân dẫn đến những thay đổi này... Những phát hiện này có được ngay trong quá trình phát sinh và hình thành các loại chi phí – ngay trong quá trình sản xuất – nên giúp cho các nhà quản lý có những căn cứ đề ra các quyết định hữu ích, kịp thời nhằm tiết kiệm chi phí và ngăn chặn được những hiện tượng lãng phí; sử dụng chi phí đúng mục đích, hiệu quả nhằm hạ thấp giá thành sản phẩm Qua công thức này có thể thấy rằng để xác định được giá thành thực tế của sản phẩm, kế toán phải tổ chức xác định được giá thành định mức vào đầu kì sản xuất trên cơ sở các định mức hiện hành, đồng thời phải theo dõi chi tiết những biến động của chi phí thực tế thực tế so với định mức trong trường hợp thay đổi định mức (xác lập định mức mới) và thực hiện định mức – tiết kiệm hoậc lãng phí so với định mức trong quá trình sử dụng các yếu tố của sản xuất. Việc theo dõi sự biến động so với định mức cần phải gắn liền với từng đối tượng chiọu chi phí theo từng khoản mục chi phí. Tổ chức theo dõi chặt chẽ, kịp thời và chính xác những thay đổi so với định mức trong quá trình sản xuất sản phẩm là vấn đề không chỉ có ý nghĩa quan trọng đối với công tác hạch toán giá thành mà còn phục vụ thiết thực và có hiệu quả cho công tác hạch toán nội bộ trong doanh nghiệp. Điểm nổi bật của phương pháp tính giá thành định mức là: khi xuất nguyên vật liệu cũng như các chi phí sản xuất khác cho sản xuất sản phẩm, chỉ biết tổng số xuất và xuất cho công đoạn nào mà không biết cụ thể cho từng loại sản phẩm. Do đó, để tính được giá thành thực tế của sản phẩm, phải phân bổ chi phí cho từng loại sản phẩm theo định mức chi phí tương ứng. Chương iii. Phân tích chi tiết và thiết kế hệ thống i.phân tích chi tiết 1.Vài nét về công tác kế toán nói chung tại công ty Về nhân sự Phòng kế toán - tài chính của công ty có 3 người là kế toán: một kế toán trưởng và hai kế toán viên, trình độ tin học ở mức sử dụng cơ bản. Công việc kế toán trong phòng được phân chia như sau: một người làm phần kế toán tiền mặt, tiền gửi ngân hàng; một người quản lý phần công nợ với khách hàng; kế toán trưởng đảm nhiệm phần kế toán sản xuất. Mức độ tin học hóa Về phần cứng: phòng kế toán của Công ty đã được trang bị ba máy vi tính và một máy in; các máy tính có cấu hình như sau : Celeron 300 MHz, 32MB RAM, 4GB HD …, đều cài hệ điều hành Windows 98, nối mạng ngang hàng, loại máy in: LaserJet 1100 Về phần mềm: các phần mềm hiện đang sử dụng là: Office 97, NC, Norton Utilities 3.0, Từ điển Lạc Việt 2.0,… và phần mềm kế toán BRAVO phiên bản 3.1 của Công ty ASC, phần mềm này được viết trên Visual FoxPro 6.0. Những thông tin khác Xác định hàng tồn kho: phương pháp kê khai thường xuyên. Tính giá vốn hàng xuất kho: phương pháp trung bình di động. Tính giá thành: phương pháp giá thành công đoạn có tính giá thành của nửa thành phẩm kết hợp với tính giá thành định mức. Hình thức ghi sổ kế toán: nhật kí chung. Sơ đồ hình thức ghi sổ nhật kí chung: Đối chiếu Ghi cuối tháng Ghi hàng ngày Bảng TH chi tiết Sổ, thẻ KT chi tiết Sổ nhật kí đặc biệt Báo cáo tài chính Bảng cân đối phát sinh Sổ cái Sổ nhật kí chung Chứng từ gốc 2.Tóm tắt quy trình sản xuất và đối tượng tính giá thành Quy trình sản xuất ống thép Quy trình sản xuất trải qua nhiều công đoạn nhưng có thể chia thành ba công đoạn chính được mô tả như sơ đồ dưới đây: (1): Thép cuộn được cắt ra thành thép bản rộng (thép bản rộng còn được gọi là bán thành phẩm). (2): Sản xuất ra các loại ống đen từ thép bản rộng. (3): Sản xuất ra các loại ống mạ từ ống đen. Nguyên vật liệu chính của quá trình sản xuất là các loại vật liệu thép ở dạng thép cuộn như vật liệu thép 0.8 ly, vật liệu thép 0.9 ly, vật liệu thép 1.2 ly… và các loại vật liệu phụ như hợp kim nhôm, chất hãm axit, ôxi già, kẽm… Có tất cả 27 loại vật liệu thép, mỗi loại được dùng để tạo ra một nhóm bán thành phẩm thép bản rộng nên có 27 nhóm bán thành phẩm với tổng số 330 loại. Từ bán thành phẩm sẽ sản xuất ra 281 loại ống đen, tiếp tục sản xuất ống đen thành 76 loại ống mạ. Hiện tại, công ty có 5 kho: kho ống mạ, kho ống đen, kho bán thành phẩm, kho vật liệu thép và kho vật liệu phụ Đối tượng tính giá thành Sản phẩm cuối cùng của quá trình sản xuất là ống mạ nhưng đối tượng tính giá thành bao gồm bán thành phẩm, ống mạ và ống đen. 3.Hiện trạng việc tính giá thành Trong khi các phân hệ kế toán khác đều được tin học hóa thì phân hệ kế toán tập hợp chi phí sản xuất và tính giá thành sản phẩm vẫn phải thực hiện theo phương pháp thủ công. Kì tính giá thành: tháng Các tài khoản chính: Tài khoản 1521: vật liệu thép ở dạng thép cuộn Tài khoản 1522: vật liệu phụ Tài khoản 1540: tập hợp chi phí sản xuất bán thành phẩm Tài khoản 1541: tập hợp chi phí sản xuất ống đen Tài khoản 1542: tập hợp chi phí sản xuất ống mạ Tài khoản 1550: bán thành phẩm nhập kho Tài khoản1551: ống đen nhập kho Tài khoản 1552: ống mạ nhập kho Tài khoản 6210: nguyên vật liệu trực tiếp để sản xuất bán thành phẩm Tài khoản 6211: nguyên vật liệu trực tiếp để sản xuất ống đen Tài khoản 6212: nguyên vật liệu trực tiếp để sản xuất ống mạ. Tài khoản 6220: nhân công trực tiếp sản xuất bán thành phẩm Tài khoản 6221: nhân công trực tiếp sản xuất ống đen Tài khoản 6222: nhân công trực tiếp sản xuất ống mạ Tài khoản 6270: chi phí sản xuất chung sản xuất bán thành phẩm Tài khoản 6271: chi phí sản xuất chung sản xuất ống đen Tài khoản 6272: chi phí sản xuất chung sản xuất ống mạ Các tài khoản 154 và 621 được mở tiểu khoản theo nhóm vật tư, các tài khoản 622 và 627 được mở tiểu khoản theo từng công đoạn sản xuất. Cách thức phân bổ chi phí Nói chung, khi xuất nguyên vật liệu chính cũng như các chi phí sản xuất khác cho sản xuất sản phẩm, chỉ biết tổng số xuất và xuất cho công đoạn nào mà không biết cụ thể cho từng loại sản phẩm. Do đó, để tính được giá thành thực tế của sản phẩm, phải phân bổ chi phí cho từng loại sản phẩm theo định mức về số lượng nguyên vật liệu chính tương ứng đã xác định trước khi bắt đầu tháng sản xuất. Công thức phân bổ: Ví dụ, đầu kì có định mức vật liệu X (đơn vị tính: kilogam) cho sản xuất 2 loại sản phẩm như sau: 1 Sản phẩm A cần 10 kg vật liệu X 1 Sản phẩm B cần 15 kg vật liệu X Cuối kì tính được tổng giá trị vật liệu X xuất dùng trong kì để sản xuất sản phẩm A và sản phẩm B là 5 000 000, hoàn thành nhập kho 1300 sản phẩm A và 800 sản phẩm B. Khi đó, phân bổ vật liệu X cho sản xuất từng loại sản phẩm là: sản phẩm A: sản phẩm B: Các chi phí khác như chi phí vật liệu phụ, chi phí sản xuất chung, nhân công…nếu không tính được trực tiếp cho từng đối tượng thì phân bổ theo chi phí nguyên vật liệu chính. Coi như không có sản phẩm dở dang và không có hao hụt nên toàn bộ chi phí được tính vào sản phẩm của từng công đoạn. Tính giá thành của bán thành phẩm Sơ đồ hạch toán: Các nghiệp vụ trong tháng: (1): Khi xuất vật liệu thép để sản xuất bán thành phẩm, ghi: Nợ TK 6210 Có TK 1521 Biết rõ xuất vật liệu thép để sản xuất loại bán thành phẩm nào nên có thể tính trực tiếp chi phí vật liệu chính cho từng đối tượng mà không cần phân bổ (2): Khi xuất vật liệu phụ để sản xuất bán thành phẩm, ghi: Nợ TK 6210 Có TK 1522 (3): Cuối tháng, tính ra tiền lương và các khoản phải trả công nhân trực tiếp sản xuất: Nợ TK 6220 Có TK 334,338… (4): Tập hợp hợp chi phí sản xuất chung trong tháng: Nợ TK 6270 Có TK 214,334… Các bút toán kết chuyển cuối tháng: (5): Kết chuyển chi phí nguyên vật liệu trực tiếp. Nợ TK 1540 Có TK 6210 (6): Kết chuyển chi phí nhân công trực tiếp Nợ TK 1540 Có TK 6220 (7): Kết chuyển chi phí sản xuất chung Nợ TK 1540 Có TK 6270 (8): Tính ra giá thành bán thành phẩm nhập kho Nợ TK 1550 Có TK 1540 Tính giá thành ống đen Sơ đồ hạch toán: Các nghiệp vụ trong tháng: (1): Khi xuất bán thành phẩm để sản xuất ống đen, ghi: Nợ TK 6211 Có TK 1550 Xuất chung chung, không chỉ rõ xuất cho từng loại là bao nhiêu nên cuối kì phải tiến hành phân bổ như đã trình bày ở trên (2): Khi xuất vật liệu phụ để sản xuất ống đen, ghi: Nợ TK 6211 Có TK 1522 (3): Cuối tháng, tính ra tiền lương và các khoản phải trả công nhân trực tiếp sản xuất: Nợ TK 6221 Có TK 334,338… (4): Tập hợp hợp chi phí sản xuất chung trong tháng: Nợ TK 6271 Có TK 214,334… Sau khi phân bổ chi phí, thực hiện các bút toán kết chuyển cuối tháng: (5): Kết chuyển chi phí nguyên vật liệu trực tiếp Nợ TK 1541 Có TK 6211 (6): Kết chuyển chi phí nhân công trực tiếp Nợ TK 1541 Có TK 6221 (7): Kết chuyển chi phí sản xuất chung Nợ TK 1541 Có TK 6271 (8): Tính ra giá thành ống đen nhập kho Nợ TK 1551 Có TK 1541 Tính giá thành ống mạ Sơ đồ hạch toán: Các nghiệp vụ trong tháng: (1): Khi xuất ống đen để sản xuất ống mạ, ghi: Nợ TK 6212 Có TK 1551 Xuất chung chung, không chỉ rõ xuất cho từng loại là bao nhiêu nên cuối kì phải tiến hành phân bổ như đã trình bày ở trên (2): Khi xuất vật liệu phụ để sản xuất ống mạ, ghi: Nợ TK 6212 Có TK 1522 (3): Cuối tháng, tính ra tiền lương và các khoản phải trả công nhân trực tiếp sản xuất: Nợ TK 6222 Có TK 334,338… (4): Tập hợp hợp chi phí sản xuất chung trong tháng: Nợ TK 6272 Có TK 214,334… Các bút toán kết chuyển cuối tháng: (5): Kết chuyển chi phí nguyên vật liệu trực tiếp Nợ TK 1542 Có TK 6212 (6): Kết chuyển chi phí nhân công trực tiếp Nợ TK 1542 Có TK 6222 (7): Kết chuyển chi phí sản xuất chung Nợ TK 1542 Có TK 6272 (8): Tính ra giá thành ống mạ nhập kho Nợ TK 1552 Có TK 1542 Để tính giá thành đơn vị, kế toán phải tập hợp tất cả các phiếu nhập kho để tính số lượng sản phẩm hoàn thành nhập kho của từng loại. 4.Sơ đồ luồng thông tin của hệ thống hiện tại Chứng từ bao gồm các loại chứng từ vật tư như phiếu xuất kho, phiếu nhập kho và các chứng từ kế toán như phiếu chi tiền mặt (trong trường hợp mua vật tư dùng luôn cho sản xuất mà không nhập vào kho vật tư), các phiếu kế toán, các bút toán phân bổ. Dưới đây là một số mẫu chứng từ đang dùng tại công ty: Phiếu chi: Phiếu xuất kho: Mẫu sổ nhật kí chung: Mẫu sổ cái tài khoản: Mỗi dòng trong sổ cái tương ứng với hai dòng trong sổ nhật kí chung Công việc tính giá thành được thực hiện sau khi tiến hành phân bổ và kết chuyển các chi phí sản xuất, bao gồm tính tổng giá thành và giá thành đơn vị của từng loại sản phẩm. Các báo cáo về chi phí và giá thành được lập ra không chỉ dựa vào kết quả tính giá thành mà còn dựa vào các kết quả trung gian có được khi tiến hành phân bổ các loại chi phí. Các báo cáo chi phí giá thành đang được dùng tại công ty bao gồm: 1. Bảng kê chứng từ theo sản phẩm 2. Tổng hợp phát sinh theo sản phẩm 3. Sổ chi tiết tài khoản 154 4. Phân tích giá thành 5. Phân tích hiệu quả kinh doanh cho từng loại sản phẩm 6. Tổng hợp chi phí theo khoản mục 7. Báo cáo chi tiết chi phí theo khoản mục 8. Bảng kê chi phí theo khoản mục 9. Báo cáo nguyên vật liệu trong giá thành 10.Báo cáo nguyên vật tồn liệu trên phân xưởng 11.Báo cáo tổng hợp chi phí giá thành 12.Báo cáo phân bổ nguyên vật liệu 13.Báo cáo phân bổ chi phí sản xuất chung vầ chi phí nhân công Dưới đây là một số mẫu báo cáo: 5.Sơ đồ luồng dữ liệu của hệ thống hiện tại Sơ đồ luồng dữ liệu mức 0: Sơ đồ luồng dữ liệu mức 1: Phân rã xử lý 3.0 Phân rã xử lý 2.0 Sơ đồ luồng dữ liệu mức 2: Phân rã xử lý 2.4: 6.Vấn đề của hệ thống tính giá thành hiện tại Vấn đề Mất rất nhiều thời gian để lập báo cáo về chi phí và giá thành, không lập được tất cả các báo cáo cần thiết Không tính được giá thành từng loại sản phẩm trong nhóm sản phẩm mà chỉ tính được giá thành của nhóm từ đó quy đổi ra giá thành sản phẩm từng loại theo tỉ lệ xác định trước, do đó không chính xác. Nguyên nhân Việc tập hợp chi phí sản xuất ở công ty khá phức tạp do quy trình sản xuất sản phẩm trải qua các công đoạn với nhiều đối tượng tính giá thành. Số lượng chứng từ lớn, nhiều nghiệp vụ phát sinh trong khi chỉ có một người đảm nhiệm với phương pháp thủ công. Nhiều đối tượng tập hợp chi phí và nhiều đối tượng tính giá thành nên phải mở nhiều sổ chi tiết để theo dõi Tính toán phải trải qua nhiều bước với khối lượng lớn, để tính được giá thành của giai đoạn này phải tính được giá thành của công đoạn trước đó Mong muốn của người làm kế toán sản xuất Tính giá thành bằng cách dùng phần mềm kế toán như các phân hệ kế toán khác đang dùng để có thể giải quyết được những vấn đề nêu trên, có thể nhanh chóng kết xuất các báo cáo chi phí và giá thành chi tiết cho từng loại sản phẩm. Chuyển phương pháp tính giá vốn hàng xuất kho từ trung bình di động sang trung bình tháng Giải pháp tổng thể Tin học hóa hệ thống tính giá thành bằng cách xây dựng phân hệ kế toán tập hợp chi phí sản xuất và tính giá thành sản phẩm trong phần mềm kế toán đang dùng. Tích hợp cơ sở dữ liệu của hệ thống này vào cơ sở dữ liệu của hệ thống thông tin kế toán, có thể sử dụng các kết quả của các phân hệ khác. ii.thiết kế logic 1.Sơ đồ luồng dữ liệu mới Sơ đồ luồng dữ liệu mức 0: Sơ đồ luồng dữ liệu mức 1: Phân rã xử lý 3.0 Sơ đồ luồng dữ liệu mức 2 Phân rã xử lý 3.2: Phân rã xử lý 3.4: 2.Sơ đồ luồng thông tin mới 3.Thiết kế cơ sở dữ liệu logic Giải thích một số từ ngữ Trong phần này những từ ngữ dưới đây được hiểu như sau: Chứng từ: bao gồm các loại chứng từ vật tư như phiếu xuất kho, phiếu nhập kho, chứng từ kế toán như phiếu chi, phiếu kế toán, các bút toán phân bổ… hay nói chung là tất cả các nghiệp vụ kinh tế cần định khoản. Đối tượng: những đối tượng công nợ của nghiệp vụ kinh tế phát sinh như người mua, người bán, người nhận tiền… Vật tư: không chỉ bao gồm các loại nguyên vật liệu ban đầu của quá trình sản xuất mà còn bao gồm các loại bán thành phẩm và các loại thành phẩm thép ống đen vì chúng lại được dùng làm nguyên vật liệu cho giai đoạn sản xuất tiếp theo Sản phẩm: không chỉ bao gồm các loại sản phẩm cuối cùng mà bao gồm tất cả các loại thành phẩm và bán thành phẩm. Tài khoản giá thành: là tài khoản dùng để tổng hợp tất cả các loại chi phí theo từng đối tượng tính giá thành Mối quan hệ giữa các thực thể của hệ thống tính giá thành: Chứng từ của hệ thống tính giá thành có nhiều loại nhưng có thể lưu trong cùng một tệp số liệu gọi là tệp chứng từ bởi vì có thể chia các phần tử thông tin trên mỗi chứng từ thành hai nhóm: nhóm chung (ví dụ: số chứng từ, ngày…) và nhóm chi tiết (ví dụ: mã vật tư, số lượng…). Khi định khoản, mỗi dòng của phần chi tiết chứng từ sẽ tương ứng với một cặp tài khoản Nợ – Có trong sổ nhật kí chung và trong sổ cái. Mỗi sản phẩm thuộc về một tài khoản giá thành nhưng mỗi tài khoản giá thành có thể bao gồm nhiều sản phẩm (vì những sản phẩm này tuy khác loại nhưng có chung giá thành). Một sản phẩm có thể được sản xuất từ nhiều loại vật liệu chính đồng thời một loại vật liệu chính có thể được dùng để sản xuất nhiều loại sản phẩm. Giữa sản phẩm và vật liệu chính xác định một định mức về số lượng vật liệu chính Sơ đồ thực thể quan hệ Sơ đồ thực thể quan hệ trên có 6 thực thể và 2 mối quan hệ N@M nên cơ sở dữ liệu logic bao gồm 8 tệp Sơ đồ cấu trúc dữ liệu iii.thiết kế vật lý ngoài 1.Các màn hình nhập số liệu: Thêm tài khoản Thêm nhóm vật tư Thêm vật tư Thêm phiếu chi Thêm phiếu xuất Thêm định mức vật liệu chính: Phân bổ chi phí vật liệu chính Phân bổ các chi phí còn lại Tính giá thành Lựa chọn báo cáo 2.Trình tự các thao tác tính giá thành Để tính được giá thành một cách chính xác, người sử dụng cần thực hiện các thao tác theo đúng trình tự sau: Hàng ngày, cập nhật các chứng từ liên quan. Đối với các phiếu xuất kho, nếu chọn “Tự động áp giá xuất” thì chỉ cần nhập số lượng vật tư bởi vì theo phương pháp trung bình tháng: đến cuối tháng mới tính ra giá thực tế của vật tư xuất kho. Khi tính giá vốn, chương trình sẽ tự động áp đơn giá vào các phiếu xuất kho đã nhập. Cuối tháng, đối với từng công đoạn sản xuất thực hiện các bước sau: Tính giá vốn hàng xuất kho Phân bổ chi phí Tính giá thành Sau khi tính xong giá thành (của một công đoạn), quay trở lại bước tính giá vốn (tính cho công đoạn tiếp theo). Hình minh họa trình tự tính giá thành: Sau khi thực hiện xong các bước trên mới có thể xem và in các báo cáo về chi phí - giá thành Màn hình chính: Các nghiệp vụ cuối tháng Báo cáo chi phí-giá thành iv.thiết kế vật lý trong 1.Thiết kế cơ sở dữ liệu vật lý trong Gộp tất cả các loại thành phẩm, bán thành phẩm vào tệp Vật Tư và thêm vào tệp này trường “Loại vật tư” để phân biệt: 1-Vật tư, hàng hóa; 2-Thành phẩm ngoài ra cũng thêm vào tệp này trường “Mã nhóm”. Thêm tệp nhóm vật tư với các trường: “Mã nhóm”, “Tên nhóm”, “Bậc nhóm”, “Nhóm cuối”, “Nhóm mẹ”. Tệp Sản Phẩm bao gồm tất cả các đối tượng tính giá thành, lúc đó trường “TK giá thành” không còn ý nghĩa nên loại bỏ trường này khỏi tệp Sản Phẩm. Giữa Sản Phẩm và Vật Tư ngoài mối quan hệ N@M về định mức số lượng vật liệu chính còn mối quan hệ 1@N: một đối tượng tính giá thành có thể bao gồm nhiều loại thành phẩm hoặc bán thành phẩm. Đối với tệp Định Mức, thêm trường “Số lượng sản phẩm” còn trường “Định mức” thì chia chi tiết thành 12 trường ứng với 12 tháng. Đối với tệp tài khoản, thêm trường “Tài khoản giá thành” nhận các giá trị: C-Tài khoản giá thành, K-Không phải tài khoản giá thành. Đối với tệp đối tượng, thêm trường “Mã số thuế” Thêm tệp Phân bổ để xác định các bút toán phân bổ, tệp này có các trường sau: “Số thứ tự”, “Tên bút toán”, “Tài khoản có”, “Tài khoản nợ”, “Chọn” Đối với tệp chứng từ, thêm trường “Số thứ tự” (dùng làm khóa chính thay cho hai trường “Loại chứng từ” và “Số chứng từ”) còn tệp định khoản, thêm trường “Số thứ tự 0” để thể hiện thứ tự của một dòng trong phần chi tiết của chứng từ và cùng với trường “Số thứ tự” sẽ tạo thành khóa chính. 2.Sơ đồ cấu trúc dữ liệu của cơ sở dữ liệu vật lý trong 3.Cấu trúc các tệp Tệp chứng từ: chungtu.dbf Name Type Wid Dec Diễn giải STT C 10 Số thứ tự LOAI_CT C 2 Loại chứng từ SO_CT C 10 Số chứng từ NGAY D 8 Ngày chứng từ MA_DT C 16 Mã đối tượng MA_KHO C 8 Mã kho DIEN_GIAI C 128 Diễn giải Tệp định khoản: dK.DBF Name Type Wid Dec Diễn giải STT C 10 Số thứ tự chứng từ STT0 C 3 Số thứ tự từng dòng trong chứng từ LOAI_CT C 2 Loại chứng từ SO_CT C 10 Số chứng từ MA_VT C 16 Mã vật tư SO_LUONG N 13 3 Số lượng DON_GIA N 12 2 Đơn giá THANH_TIEN N 15 2 Thành tiền MA_SP C 16 Mã sản phẩm TK_NO C 8 Tài khoản nợ TK_CO C 8 Tài khoản có Tệp kho: KHO.dbf Name Type Wid Dec Diễn giải MA_KHO C 8 Mã kho TEN_KHO C 64 Tên kho Tệp Đối tượng: DT.DBF Name Type Wid Dec Diễn giải MA_DT C 16 Mã đối tượng TEN_DT C 64 Tên đối tượng DIA_CHI C 48 Địa chỉ MA_SO_THUE C 18 Mã số thuế Tệp tài khoản: TK.DBF Name Type Wid Dec Diễn giải MA_TK C 8 Mã tài khoản TEN_TK C 100 Tên tài khoản BAC_TK N 1 Bậc tài khoản TK_ME C 8 Tài khoản mẹ TK_GT C 1 Tài khoản giá thành Tệp phân bổ: phanbo.dbf Name Type Wid Dec Diễn giải STT N 2 Số thứ tự phân bổ của bút toán TEN_BT C 48 Tên bút toán TK_NO C 8 Tài khoản nợ TK_CO C 8 Tài khoản có CHON C 1 Có thực hiện hay không Tệp nhóm vật tư: NHOMVT.dbf Name Type Wid Dec Diễn giải MA_NHOM C 8 Mã nhóm vật tư TEN_NHOM C 64 Tên nhóm vật tư BAC_NHOM N 1 Bậc nhóm NHOM_ME C 8 Nhóm mẹ NHOM_CUOI C 1 Nhóm cuối Tệp vật tư: vattu.dbf Name Type Wid Dec Diễn giải MA_VT C 16 Mã vật tư TEN_VT C 64 Tên vật tư DON_VI C 8 Đơn vị tính LOAI_VT C 1 Loại vật tư MA_NHOM C 8 Mã nhóm TK_VT C 8 Tài khoản vật tư Tệp sản phẩm: sanpham.dbf Name Type Wid Dec Diễn giải MA_SP C 16 Mã sản phẩm TEN_SP C 64 Tên sản phẩm DON_VI C 10 Đơn vị tính Tệp định mức: DinhMuc.DBF Name Type Wid Dec Diễn giải MA_SP C 16 Mã sản phẩm SO_LUONGSP N 15 2 Số lượng sản phẩm MA_VT C 16 Mã vật tư SO_LUONG01 N 15 4 Định mức về số lượng vật tư tháng 1 SO_LUONG02 N 15 4 Định mức về số lượng vật tư tháng 2 SO_LUONG03 N 15 4 Định mức về số lượng vật tư tháng 3 SO_LUONG04 N 15 4 Định mức về số lượng vật tư tháng 4 SO_LUONG05 N 15 4 Định mức về số lượng vật tư tháng 5 SO_LUONG06 N 15 4 Định mức về số lượng vật tư tháng 6 SO_LUONG07 N 15 4 Định mức về số lượng vật tư tháng 7 SO_LUONG08 N 15 4 Định mức về số lượng vật tư tháng 8 SO_LUONG09 N 15 4 Định mức về số lượng vật tư tháng 9 SO_LUONG10 N 15 4 Định mức về số lượng vật tư tháng10 SO_LUONG11 N 15 4 Định mức về số lượng vật tư tháng11 SO_LUONG12 N 15 4 Định mức về số lượng vật tư tháng12 4.Tích hợp vào cơ sở dữ liệu của hệ thống thông tin kế toán hiện tại Tệp Tích hợp vào tệp Tệp Tích hợp vào tệp Chungtu.dbf Ct.dbf TK.DBF DMTK.DBF DK.DBF CT0.DBF NHOMVT.DBF DMNHVT.DBF KHO.DBF DMKHO.DBF VATTU.DBF DMVT.DBF DT.DBF DMDT.DBF SanPham.DBF DMSP.DBF PhanBo.DBF DMPB1.DBF DinhMuc.DBF DMDMVT.DBF Tệp: CT.DBF Name Type Wid Dec Tương ứng trong CHUNGTU.DBF STT C 10 STT MA_CT C 2 LOAI_CT NGAY_CT D 8 NGAY SO_CT C 10 SO_CT DIEN_GIAI0 C 128 DIEN_GIAI MA_DT C 16 MA_DT MA_KHO C 8 MA_KHO Tệp: CT0.DBF Name Type Wid Dec Tương ứng trong DK.DBF STT C 10 STT STT0 C 3 STT0 MA_CT C 2 LOAI_CT SO_CT C 10 SO_CT TK_NO C 8 TK_NO TK_CO C 8 TK_CO TIEN N 15 THANH_TIEN MA_VT C 16 MA_VT GIA N 12 2 DON_GIA SO_LUONG N 13 3 SO_LUONG MA_SP C 16 MA_SP Tệp: DMDT.DBF giống tệp DT.DBF Tệp: DMKHO.DBF giống tệp KHO.DBF Tệp: DMPB1.DBF Name Type Wid Dec Tương ứng trong PHANBO.DBF STT N 2 STT TK_CO C 8 TK_CO TEN_BT C 48 TEN_BT TK_NO C 8 TK_NO TAG C 1 CHON Tệp DMTK.DBF Name Type Wid Dec Tương ứng trong DMTK.DBF TK C 8 MA_TK TEN_TK C 100 TEN_TK BAC_TK N 1 BAC_TK TK_ME C 8 TK_ME TK_GT C 1 TK_GT Tệp DMNHVT.DBF Name Type Wid Dec Tương ứng trong NHOMVT.DBF MA_NH C 8 MA_NHOM TEN_NH C 64 TEN_NHOM BAC_NH N 1 BAC_NHOM NH_CUOI C 1 NHOM_CUOI NH_ME C 8 NHOM_ME Tệp DMVT.DBF Name Type Wid Dec Tương ứng trong tệp VATTU.DBF MA_VT C 8 MA_VT TEN_VT C 64 TEN_VT DVT C 8 DON_VI MA_NH C 8 MA_NHOM LOAI_VT C 1 LOAI_VT TK_VT C 8 TK_VT Tệp DMSP.DBF giống tệp SANPHAM.DBF Tệp DMDMVT.DBF giữ nguyên như tệp DINHMUC.DBF 5.Sơ đồ phân rã chương trình: 6. Các thuật toán chính của chương trình KHhkhkhkhkhkhk kkk Kết luận Xây dựng phần mềm để phục vụ công tác kế toán tập hợp chi phí sản xuất và tính giá thành sản phẩm nói chung là một phạm vi rộng, tuy nhiên, đề tài “Xây dựng phân hệ kế toán tập hợp chi phí sản xuất và tính giá thành sản phẩm tại công ty TNHH ống thép Hòa Phát” chỉ giới hạn trong những điều kiện cụ thể tại công ty này. Đây là một doanh nghiệp sản xuất điển hình với quy trình sản xuất gồm nhiều công đoạn và phải tính giá thành cho sản phẩm của từng công đoạn theo thứ tự tương ứng. Phương pháp tính giá thành tại công ty là giá thành công đoạn dựa trên định mức về số lượng vật tư, kì tính giá thành là tháng, hình thức ghi sổ là nhật kí chung. Chuyển phương pháp tính giá vốn hàng xuất kho từ trung bình di động sang trung bình tháng bằng cách sử dụng chức năng “Tự động áp giá vốn”. Trong cơ sở dữ liệu của hệ thống tính giá thành đã thiết kế, tệp Định Khoản là tệp dữ liệu trung tâm, lưu trữ toàn bộ các nghiệp vụ phát sinh và tệp này sẽ được tích hợp vào tệp CT0.DBF trong cơ sở dữ liệu của hệ thống thông tin kế toán hiện tại. Với phương pháp tính giá thành hiện tại ở công ty ống thép Hòa Phát, phân bổ chi phí là khâu chủ yếu trong quá trình tính giá thành. Việc phân bổ chi phí có thể chia làm hai bước chính theo thứ tự: một là phân bổ chi phí nguyên vật liệu chính, hai là phân bổ các chi phí còn lại (như nguyên vật liệu phụ, nhân công trực tiếp và chi phí sản xuất chung) dựa vào kết quả phân bổ chi phí nguyên vật liệu chính. Giá thành sản phẩm phải tính lần lượt từ công đoạn đầu tiên cho đến công đoạn cuối cùng vì chỉ có thể tính được giá thành của một công đoạn khi đã biết giá thành của công đoạn trước đó. Để có kết quả đúng, người sử dụng phải tuân theo quy định về trình tự các thao tác, đó là: Tính giá vốn à Phân bổ chi phí à Tính giá thành. Các thao tác này được lặp lại đối với từng công đoạn sản xuất. Cuối cùng mới là xem và in các báo cáo về chi phí và giá thành. Phụ lục 1.Thủ tục phân bổ chi phí nguyên vật liệu chính PROCEDURE CmdPhanBo.Click() LOCAL _Dummy M.Thang1 = THISFORM.txtThang1.Value M.Thang2 = THISFORM.txtThang2.Value M.Thang = THISFORM.txtThang2.Value IF M.Thang2 = 0 RETURN ENDIF M.Ngay_Ct1 = CTOD([01/] + TRAN(M.Thang1, '@L ##') + [/] + M_Nam) M.Ngay_Ct2 = GOMONTH(M.Ngay_Ct1, 1 + (M.Thang2 - M.Thang1)) - 1 SELECT 0 USE (M_Data_Nam + [Ct]) ORDER Stt ALIAS K_Ct SELECT 0 USE (M_Data_Nam + [Ct0]) ORDER Stt0 ALIAS K_Ct0 SELECT 0 USE (M_Data_Nam + [SoCai]) ORDER Stt ALIAS K_SoCai SELECT 0 USE (M_Dm_Nam + [DmSp]) ORDER Ma_Sp ALIAS M_DmSp SELECT M_DmPb1 _CoKhong = [K] SCAN FOR (Tag = [x]) M.Stt = M_W_Id + [PB3] + RIGHT(M_Nam, 2) + TRANS(M.Thang2,; [@L 99]) + TRANS(Stt, [@L 99]) M.Ten_Bt = Ten_Bt M.Stt0 = TRANS(Stt, [@L 999]) M.Tk = ALLTRIM(Tk_Co) M.Tk0 = ALLTRIM(Tk_No) M.SttOld = M.Stt &&EVAL([Stt] + TRAN(M.Thang, '@L ##')) _Loai_Pb = LEFT(Loai_Pb, 1) M.SttNew = M.Stt IF EMPTY(M.Tk) OR EMPTY(M.Tk0) OR EMPTY(_Loai_Pb) WAIT WINDOWS [Chua khai bao du tai khoan trong danh muc!] SELECT M_DmPb1 LOOP ENDIF SELECT 0 CREATE TABLE (M_Temp + [Nhap_Tp]) (Ma_Vt C(16), Ma_Sp C(16),; So_Luong N(15, 3),Tk_No C(8), Tk_Co C(8)) DO ScanFileV WITH M.Ngay_Ct1, M.Ngay_Ct2, [(.T.)],; [(!EMPTY(Ma_Kho)).AND.(Tk_Co = "] + M.Tk0 + [")], [Nhap_Tp] USE (M_Dm_Nam + [DmVt]) ORDER Ma_Vt ALIAS M_DmVt IN 0 SELECT Nhap_Tp SET RELATION TO Ma_Vt INTO M_DmVt REPLACE ALL Ma_Sp WITH M_DmVt.Ma_Sp SET RELATION TO USE IN M_DmVt SELECT Ma_Sp, SUM(So_Luong) AS So_Luong, Tk_Co AS Tk,; M.Stt AS Stt0, 000000000000000.0000 AS He_So,; 000000000000000.0000 AS He_So_Vt ; FROM Nhap_Tp ; INTO TABLE (M_Temp + [M_DmTmp]) ; GROUP BY Ma_Sp SELECT M_DmTmp INDEX ON Ma_Sp TAG Ma_Sp SET ORDER TO 0 _Dummy0 = [] DO CASE CASE INLIST(_Loai_Pb, [0], [1]) _Dummy = [M_DmSp.DM_621_] + TRANS(M.Thang2, [@L 99]) CASE _Loai_Pb = [2] _Dummy0 = [Tien2] _Dummy = [M_DmSp.DM_622_] + TRANS(M.Thang2, [@L 99]) CASE _Loai_Pb = [3] _Dummy0 = [Tien3] _Dummy = [M_DmSp.DM_623_] + TRANS(M.Thang2, [@L 99]) CASE _Loai_Pb = [4] _Dummy0 = [Tien7] _Dummy = [M_DmSp.DM_627_] + TRANS(M.Thang2, [@L 99]) CASE _Loai_Pb = [9] _Dummy = [M_DmSp.DM_Tong_] + TRANS(M.Thang2, [@L 99]) ENDCASE SET RELATION TO Ma_Sp INTO M_DmSp ADDITIVE REPLACE ALL He_So WITH &_Dummy * So_Luong SET RELATION TO USE IN Nhap_Tp IF RECCOUNT([M_DmTmp])=0 WAIT WINDOW [Chua khai bao dinh muc hoac khong co thanh; pham nhap kho!] TIME 3 USE IN M_DmTmp SELECT M_DmPb1 LOOP ENDIF SELECT K_Ct SEEK M.SttOld IF K_Ct.Stt = M.SttOld IF _CoKhong = [K] _CoKhong = Yes_No([Cac but toan phan bo loai nhu vay cua; thang: ] + STR(M.Thang,2) + [ Stt: ] + ; ALLTRIM(M.Stt0) + [ da co, phan bo lai?]) IF UPPER(_CoKhong) # [C] USE IN M_DmTmp EXIT ENDIF ENDIF DO DeleteCt WITH M.SttOld IN (M_Prog + [PubLic]) ENDIF SELECT 0 USE (M_Code + [CtTmp]) ALIAS K_CtTemp COPY STRU TO (M_Temp + [K_CtTmp]) SELECT 0 USE (M_Temp + [K_CtTmp]) EXCLU ALIAS K_CtTmp USE IN K_CtTemp _Key = [(Tk_No = "] + M.Tk + [").OR.(Tk_Co = "] + M.Tk + [")] DO ScanFile WITH M.Ngay_Ct1, M.Ngay_Ct2, _Key,; [(Tk = "] + M.Tk + [")], [K_CtTmp] SELECT K_CtTmp IF RECCOUNT() = 0 WAIT WINDOWS NOWAIT [Khong co so lieu de phan bo!] USE IN K_CtTmp USE IN M_DmTmp SELECT M_DmPb1 LOOP ENDIF IF _Loai_Pb = [0] && Phân bổ theo định mức số lượng của vật tư USE (M_Dm_Nam + [DmDmVt]) ALIAS M_DmDmVt IN 0 SELECT 0 CREATE TABLE (M_Temp + [V_CtTmp]) (Nh_Ct C(1),; Ma_Vt C(16), So_Luong N(15, 3), Tien N(15, 2)) DO ScanFileV WITH M.Ngay_Ct1, M.Ngay_Ct2, [(.T.)], ; [(!EMPTY(Ma_Vt)).AND.((Tk_No = "] +; M.Tk + [").OR.] + [((Tk_Co = "] + M.Tk +; [".AND.Tk_No # "] + M.Tk0 + ")))], ; [V_CtTmp] SELECT V_CtTmp INDEX ON Ma_Vt TAG Ma_Vt SET ORDER TO 0 SELECT Ma_Vt FROM M_DmDmVt INTO TABLE (M_Temp + [V_DmVt0]) GROUP BY Ma_Vt SELECT V_DmVt0 SCAN _Ma_Vt = ALLTRIM(Ma_Vt) SELECT V_CtTmp REPLACE ALL Ma_Vt WITH _Ma_Vt FOR Ma_Vt = _Ma_Vt SELECT V_DmVt0 ENDSCAN USE IN V_DmVt0 IF (This.Parent.Parent.chkPhanBoVTthua.Value = 1) AND ; FILE(M_Data_Nam + [CDVDD.DBF]) SELECT 0 USE (M_Data_Nam + [CDVDD]) ALIAS V_CdvDD SELECT [2] AS Nh_Ct, Tk, Ma_Vt, SUM(So_Luong); AS So_Luong,SUM(Tien) AS Tien, ; SUM(Tien) AS Ps_No ; FROM V_CdvDD ; WHERE (Thang = m.Thang1 - 1).AND.; (Tk = M.Tk).AND.; (INLIST(Loai_DD, [1], [3])) ; INTO TABLE (M_Temp + [V_DdTmp1]) ; GROUP BY Tk, Ma_Vt SELECT [1] AS Nh_Ct, Tk, Ma_Vt,; SUM(So_Luong) AS So_Luong, ; SUM(Tien) AS Tien, SUM(Tien) AS Ps_Co ; FROM V_CdvDD ; WHERE (Thang = m.Thang2).AND.; (Tk = M.Tk).AND.(INLIST(Loai_DD, [1], [3])); INTO TABLE (M_Temp + [V_DdTmp2]) ; GROUP BY Tk, Ma_Vt USE IN V_CdvDD USE IN V_DdTmp1 USE IN V_DdTmp2 SELECT V_CtTmp APPEND FROM (M_Temp + [V_DdTmp1]) APPEND FROM (M_Temp + [V_DdTmp2]) SELECT K_CtTmp APPEND FROM (M_Temp + [V_DdTmp1]) APPEND FROM (M_Temp + [V_DdTmp2]) ENDIF _Dummy = [So_Luong] + TRANS(M.Thang2, [@L 99]) SELECT Ma_Sp, Ma_Vt, IIF(So_LuongSP#0,; &_Dummy/So_LuongSP, 00000000000.000000) AS SL_DinhMuc,; 0000000000000.00 AS SL_Nhap, 0000000000000.00 AS Gia, ; 0000000000000.00 AS T_SL_Nhap, 0000000000000.00 AS So_Luong, ; 0000000000000.00 AS T_So_Luong, 0000000000000.00 AS Tien, ; 0000000000000000 AS Tien_621, 0000000000000.00 AS T_Tien_621,; 0000000000000.000000 AS T_DinhMuc, 0000000000000.00 AS Dinh_Muc,; 0000000000000.000000 AS He_So, 0000000000000.000000 AS T_He_So, ;SPACE(80) AS Ten_Sp, SPACE(8) AS Dvt ; FROM M_DmDmVt ; WHERE Ma_Sp IN (SELECT Ma_Sp FROM M_DmTmp) ; INTO TABLE (M_Temp + [M_DmTmp0]) ; ORDER BY Ma_Sp, Ma_Vt SET ORDER TO Ma_Sp IN M_DmTmp SELECT V_CtTmp INDEX ON Ma_Vt TAG Ma_Vt SET ORDER TO 0 SELECT DISTINCT Ma_Vt FROM M_DmTmp0 ; INTO TABLE (M_Temp + [M_DmTmp6]) USE (M_Dm_Nam + [DmVt]) ORDER Ma_Vt ALIAS M_DmVt IN 0 SELECT M_DmTmp6 SCAN _Ma_Vt = ALLTRIM(M_DmTmp6.Ma_Vt) IF !SEEK(M_DmTmp6.Ma_Vt, [M_DmVt]) SELECT V_CtTmp REPLACE Ma_Vt WITH _Ma_Vt FOR Ma_Vt = _Ma_Vt SELECT M_DmTmp6 ENDIF ENDSCAN USE IN M_DmTmp6 USE IN M_DmVt * Tính tổng số tiền, số lượng của các vật tư đã sử dụng SELECT Ma_Vt, SUM(IIF(Nh_Ct = [2], So_Luong, - So_Luong)) AS So_Luong, SUM(IIF(Nh_Ct = [2], Tien, - Tien)) AS Tien, ; 000000000000.000 AS Gia ; FROM V_CtTmp ; WHERE So_Luong # 0 AND Tien # 0 ; INTO TABLE (M_Temp + [VtTmp]) ; GROUP BY Ma_Vt INDEX ON Ma_Vt TAG Ma_Vt USE IN V_CtTmp SELECT Ma_Vt, SUM(SL_DinhMuc) AS T_Dinhmuc ; FROM M_DmTmp0 ; INTO TABLE (M_Temp + [M_DmTmp2]) ; GROUP BY Ma_Vt SELECT M_DmTmp2 INDEX ON Ma_Vt TAG Ma_Vt SELECT M_DmTmp0 SET RELATION TO Ma_Vt INTO M_DmTmp2 && Tong dinh muc ve luong ma vat tu nay da san xuat REPLACE ALL T_DinhMuc WITH M_DmTmp2.T_DinhMuc SET RELATION TO SELECT M_DmTmp0 SET RELATION TO Ma_Sp INTO M_DmTmp && Tong so luong SP nhap kho hoan thanh REPLACE ALL SL_Nhap WITH M_DmTmp.So_Luong SELECT Ma_Vt, SUM(SL_Nhap) AS T_SL_Nhap; FROM M_DmTmp0 ; INTO TABLE (M_Temp + [M_DmTmp3]) ; GROUP BY Ma_Vt SELECT M_DmTmp3 INDEX ON Ma_Vt TAG Ma_Vt SELECT M_DmTmp0 SET RELATION TO Ma_Vt INTO M_DmTmp3 && Tong so luong nhap kho cua cac thanh pham duoc tao boi ma_vt REPLACE ALL T_SL_Nhap WITH M_DmTmp3.T_SL_Nhap SET RELATION TO USE IN M_DmTmp3 SET RELATION TO Ma_Vt INTO M_DmTmp2 && Tong dinh muc ve luong ma vat tu nay da san xuat REPLACE ALL T_DinhMuc WITH M_DmTmp2.T_DinhMuc REPLACE ALL He_So WITH SL_DinhMuc * SL_Nhap SELECT Ma_Vt, SUM(He_So) AS T_He_So; FROM M_DmTmp0 ; INTO TABLE (M_Temp + [M_DmTmp4]) ; GROUP BY Ma_Vt SELECT M_DmTmp4 INDEX ON Ma_Vt TAG Ma_Vt SELECT M_DmTmp0 SET RELATION TO Ma_Vt INTO M_DmTmp4 && Tong he so phan bo REPLACE ALL T_He_So WITH M_DmTmp4.T_He_So ********************** SET RELATION TO Ma_Vt INTO VtTmp REPLACE ALL T_Tien_621 WITH VtTmp.Tien, T_So_Luong; WITH VtTmp.So_Luong SET RELATION TO REPLACE ALL Tien_621 WITH T_Tien_621*He_So / T_He_So,; So_Luong WITH T_So_Luong * He_So / T_He_So FOR (T_He_So) # 0 SELECT Ma_Vt, T_Tien_621, T_So_Luong, SUM(Tien_621) AS Tien_621, SUM(So_luong) AS So_Luong,; 000000000000000.00 AS CL_Tien, 000000000000000.00 AS CL_SL_Xuat; FROM M_DmTmp0 ; INTO TABLE (M_Temp + [M_DmTmp5]) ; GROUP BY Ma_Vt SELECT M_DmTmp5 REPLACE ALL CL_Tien WITH T_Tien_621 - Tien_621,; CL_SL_Xuat WITH T_So_Luong - So_Luong SCAN FOR CL_Tien # 0 OR CL_SL_Xuat # 0 _Ma_Vt = Ma_Vt _CL_Tien = CL_Tien _CL_SL_Xuat = CL_SL_Xuat SELECT M_DmTmp0 CALCULATE MAX(Tien_621) TO _Max_Tien_621; FOR Ma_Vt = _Ma_Vt LOCATE FOR Tien_621 = _Max_Tien_621 AND Ma_Vt = _Ma_Vt REPLACE Tien_621 WITH Tien_621 + _CL_Tien, So_Luong ; WITH So_Luong + _CL_SL_Xuat SELECT M_DmTmp5 ENDSCAN SELECT M_DmTmp0 SET RELATION TO ********************** SELECT Ma_Sp, SUM(Tien_621) AS Tien ; FROM M_DmTmp0 ; INTO TABLE (M_Temp + [M_DmTmp1]) ; GROUP BY Ma_Sp INDEX ON Ma_Sp TAG Ma_Sp SELECT M_DmTmp SET RELATION TO Ma_Sp INTO M_DmTmp1 REPLACE ALL He_So_Vt WITH M_DmTmp1.Tien SET RELATION TO REPLACE ALL He_So WITH He_So_Vt FOR He_So_Vt # 0 SET ORDER TO 0 IN M_DmTmp USE IN M_DmDmVt USE IN VtTmp USE IN M_DmTmp0 USE IN M_DmTmp1 USE IN M_DmTmp2 USE IN M_DmTmp4 USE IN M_DmTmp5 ELSE && Phân bổ lương và nhân công IF FILE(M_Data_Nam + [CdVDD.DBF]) AND; !EMPTY(_Dummy0) USE (M_Data_Nam + [CdVDD]) ALIAS V_CdVDD IN 0 SELECT Ma_Sp, So_Luong, M.Tk AS Tk, &_Dummy0 AS; Tien, &_Dummy0 AS Ps_No; FROM V_CdVDD ; WHERE (Thang = M.Thang1 - 1).AND.; (Loai_DD = [2]).AND.(&_Dummy0 # 0); INTO TABLE (M_Temp + [V_SpDD1]) SELECT Ma_Sp, So_Luong, M.Tk AS Tk, &_Dummy0 AS ; Tien, &_Dummy0 AS Ps_Co ; FROM V_CdVDD ; WHERE (Thang = M.Thang2).AND.; (Loai_DD = [2]).AND.(&_Dummy0 # 0); INTO TABLE (M_Temp + [V_SpDD2]) USE IN V_SpDD1 USE IN V_SpDD2 USE IN V_CdvDD SELECT K_CtTmp APPEND FROM (M_Temp + [V_SpDD1]) APPEND FROM (M_Temp + [V_SpDD2]) ENDIF ENDIF SELECT M_DmTmp DELETE FOR He_So = 0 SUM He_So TO M.TongHeSo IF M.TongHeSo = 0 WAIT WINDOWS NOWAIT [Chua khai bao he so phan bo!] USE IN M_DmTmp USE IN K_CtTmp SELECT M_DmPb1 LOOP ENDIF SELECT K_CtTmp INDEX ON Tk TAG TkStt TOTAL TO (M_Temp + [K_CtTmp1]) ON Tk USE IN K_CtTmp SELECT 0 USE (M_Temp + [K_CtTmp1]) ALIAS K_CtTmp1 EXCLUSIVE INDEX ON Tk TAG Tk SELECT 0 USE (M_Code + [DmCt]) ORDER Ma_Ct ALIAS M_DmCt SEEK [PK] _Ma_Ct = Ma_Ct _Nh_Ct = Nh_Ct _So_Ct = PADR(ALLTR(STR((M_DmCt->So_Ct + 1))), FSIZE([So_Ct])) REPLACE So_Ct WITH So_Ct + 1 USE IN M_DmCt M.Len = LEN(ALLTR(M.Tk)) SELECT K_CtTmp1 SCATTER MEMVAR BLANK M.Stt = M.SttNew M.Stt0 = [001] M.User_Id = M_User_Id M.Ma_Ct = _Ma_Ct M.Nh_Ct = _Nh_Ct M.So_Ct = _So_Ct M.Ngay_Ct = M.Ngay_Ct2 M.Posted = [C] m.Ma_TTe = M_Ma_TTe0 _Ten_Bt = ALLTRIM(M.Ten_Bt) SELECT K_CtTmp1 SCAN M.Tk_Co = K_CtTmp1->Tk WAIT WINDOWS NOWAIT M_Process + [Tk ghi co: ] + ; ALLTR(M.Tk_Co) && Lấy đuôi của Tk có (621) _Tag_Tk_No = RIGHT(M.Tk_Co, LEN(M.Tk_Co) - M.Len) _Tien = K_CtTmp1->Ps_No - K_CtTmp1->Ps_Co _Tien1 = _Tien SELECT M_DmTmp SCAN M.Ma_Sp = Ma_SP M.Tk_No = ALLTRIM(M_DmTmp->Tk) + _Tag_Tk_No IF !SEEK(m.Tk_No, [M_DmTk]) m.Tk_No = m_DmTmp->Tk ENDIF WAIT WINDOW NOWAIT M_Process + [, Tk ghi No: ] + ; ALLTRIM(M.Tk_No)+[ - Tk ghi co: ]+ALLTR(M.Tk_Co) M.Dien_Giai=_Ten_Bt +[; ]+ALLTRIM(M.Tk_No)+[-]+; ALLTRIM(M.Tk_Co)+[- Sản phẩm: ]+ALLTRIM(M.Ma_Sp) SKIP IF EOF() SKIP –1 M.Tien = _Tien1 ELSE SKIP –1 M.Tien = ROUND((_Tien * M_DmTmp->He_So / ; M.TongHeSo), 0) _Tien1 = _Tien1 - M.Tien ENDIF M.Tien_Nt = M.Tien M.Tien9 = M.Tien M.Tien_Nt9 = M.Tien_Nt SELECT K_Ct0 APPEND BLANK GATHER MEMVAR M.Stt0 = TRANS(VAL(M.Stt0) + 1, [@L 999]) SELECT M_DmTmp ENDSCAN SELECT K_CtTmp1 ENDSCAN M.Dien_Giai0 = _Ten_Bt M.TTien = _Tien M.TTien_Nt = _Tien SELECT K_Ct APPEND BLANK GATHER MEMVAR DO UpDateSoCai WITH K_Ct.Stt IN (M_Prog + [Public]) USE IN M_DmTmp USE IN K_CtTmp1 SELECT M_DmPb1 ENDSCAN USE IN K_Ct USE IN K_Ct0 USE IN K_SoCai USE IN M_DmSp =MESSAGEBOX(M_End_Proc, 64, M_App_Name) 2.Thủ tục phân bổ các chi phí khác: PROCEDURE CmdPhanBo.Click() WAIT WIND M_Process NOWAIT THISFORM.SetAll([MousePointer], 11) THISFORM.LockScreen = .T. M.Thang1 = THISFORM.txtThang1.Value M.Thang2 = THISFORM.txtThang2.Value M.Thang = THISFORM.txtThang2.Value IF M.Thang2 = 0 RETURN ENDIF SELECT 0 USE (M_Data_Nam + [Ct]) ORDER Stt ALIAS K_Ct SELECT 0 USE (M_Data_Nam + [Ct0]) ORDER Stt0 ALIAS K_Ct0 SELECT 0 USE (M_Data_Nam + [SoCai]) ORDER Stt ALIAS K_SoCai M.Ngay_Ct1 = CTOD([01/] + TRAN(M.Thang1, '@L ##') + [/] + M_Nam)M.Ngay_Ct2 = GOMONTH(M.Ngay_Ct1, 1 + (M.Thang2 - ; M.Thang1)) - 1 M.Ngay_Ct = M.Ngay_Ct2 M.Ma_Ct = [PK] M.Nh_Ct = [3] M.Ma_NVU = [K] M.Ma_TTe = M_Ma_TTe0 M.Ty_Gia = 1 M.Posted = [C] M.Ty_Gia = 1 M_Tk = ALLTRIM(THIS.Parent.txtTk.Value) && Tk phan bo = "627" M_Tk_Den = ALLTRIM(THIS.Parent.txtTk_Den.Value) && Den Tk = "154" M_Tk2 = ALLTRIM(THIS.Parent.txtTk2.Value) && Theo ty le = "622" M_Tk3 = ALLTRIM(THIS.Parent.txtTk3.Value) && Theo ty le = "621" M_Tk4 = ALLTRIM(THIS.Parent.txtTk4.Value) && Theo ty le = "623" M_Tk_Den2 = ALLTRIM(THIS.Parent.txtTk_Den2.Value) && Den Tk= 154" SELECT K_SoTmp ZAP SELECT M_DmTk SEEK M_Tk _Stt = M_W_ID + [P2] + TRANSFORM(RECNO(), [@L 999]) + ; TRANSFORM(M.Thang, [@L 99]) DO DeleteCt WITH _Stt IN (M_Prog + [PubLic]) SELECT 0 CREATE TABLE (M_Temp + [Tk622]) (Tk C(8), Ma_Sp C(16), TK_DU C(8), ; Ps_No N(15, 2), Ps_No_Nt N(15, 2),Ps_Co N(15, 2), ; Ps_Co_Nt N(15, 2)) _KeyTkDen = [(Tk_DU = "] + M_Tk_Den2 + [")] _KeyTkDi = [(Tk = "] + M_Tk2 + [")] IF !EMPTY(M_Tk3) _KeyTkDi = _KeyTkDi + [.OR.(Tk = "] + M_Tk3 + [")] ENDIF IF !EMPTY(M_Tk4) _KeyTkDi = _KeyTkDi + [.OR.(Tk = "] + M_Tk4 + [")] ENDIF _Key = [(] + _KeyTkDi + [).AND.(] + _KeyTkDen + [)] DO ScanFile WITH M.Ngay_Ct1, M.Ngay_Ct2, [(.T.)], _Key, [Tk622] SELECT 0 CREATE TABLE (M_Temp + [Tk627]) (Tk C(8), Ps_No N(15, 2),; Ps_No_Nt N(15, 2),Ps_Co N(15, 2), Ps_Co_Nt N(15, 2)) DO ScanFile WITH M.Ngay_Ct1, M.Ngay_Ct2, [(Tk_No = M_Tk); .OR.(Tk_Co = M_Tk)], [(Tk = '] + M_Tk + [')], [Tk627] SELECT Tk, SUM(Ps_No - Ps_Co) AS Tien; FROM Tk627 ; INTO TABLE (M_Temp + [K_So627]) ; GROUP BY Tk SELECT K_So627 DELETE FOR Tien = 0 PACK This.Parent.Grid2.RecordSource = [K_SoTmp] This.Parent.Grid2.RecordSourceType = 1 THISFORM.LockScreen = .F. SCAN M.Stt = _Stt M.Stt = M.Stt + TRANS(RECNO(), [@L 99]) _Tk = ALLTRIM(Tk) _Tien = Tien IF SEEK(M_Tk2 + RIGHT(ALLTRIM(_Tk), 1), [M_DmTk]) _Tk622 = M_Tk2 + RIGHT(ALLTRIM(_Tk), 1) ELSE _Tk622 = M_Tk2 ENDIF SELECT Tk, Tk_Du, Ma_Sp, SUM(PS_Co - Ps_No) AS Tien622,; 0000000000000.00 AS Tien627 ; FROM Tk622 ; INTO TABLE (M_Temp + [Phan_Bo]) ; GROUP BY Tk, Tk_DU, Ma_SP ; ORDER BY Tien622 SUM Tien622 TO _Tong622 IF _Tong622 = 0 USE IN Phan_Bo LOOP ENDIF SELECT Phan_Bo REPLACE ALL Tien627 WITH ROUND(_Tien*Tien622 / _Tong622, 0) SUM Tien627 TO _Tong627 IF _Tong627 # _Tien LOCATE FOR Tien622 # 0 IF FOUND() REPLACE Tien627 WITH Tien627 + _Tien - _Tong627 ENDIF ENDIF SELECT Phan_Bo SCAN M.Stt0 = TRANSFORM(RECNO(), [@L 999]) M.Dien_Giai = [Phân bổ ] + ALLTRIM(_Tk) + [ --> ] + ; ALLTRIM(M_Tk_Den) M.Tien_Nt = Tien627 M.Tien = Tien627 M.Tk_No = STRT(Tk_DU, M_Tk_Den2, M_Tk_Den) FOR _i = FSIZE([Tk], [M_DmTk]) TO 1 STEP –1 M.Tk_No = LEFT(M.Tk_No, _i) IF SEEK(M.Tk_No, [M_DmTk]) EXIT ENDIF ENDFOR M.Tk_Co = _Tk FOR _i = FSIZE([Tk], [M_DmTk]) TO 1 STEP –1 M.Tk_Co = LEFT(M.Tk_Co, _i) IF SEEK(M.Tk_Co, [M_DmTk]) EXIT ENDIF ENDFOR M.Ma_Sp = Ma_Sp M.Ma_TTe = M_Ma_TTe0 M.Ma_NVu = [K] INSERT INTO K_Ct0 FROM MEMVAR M.Tien0 = Tien622 M.Tk_No0 = Tk_DU M.Tk_Co0 = Tk M.Ty_Le = Tien627 * 100 / _Tien INSERT INTO K_SoTmp FROM MEMVAR ENDSCAN M.Dien_Giai0 = M.Dien_Giai M.Tong_Tien = _Tien INSERT INTO K_Ct FROM MEMVAR M.Tien0 = _Tong622 M.Tien = _Tien M.Tien_Nt = _Tien m.Tien9 = m.Tien m.Tien_Nt9 = m.Tien_Nt STORE [] TO M.Tk_No0, M.Tk_Co0, M.Tk_No, M.Tk_Co, M.Ma_Sp M.Ty_Le = 100 INSERT INTO K_SoTmp FROM MEMVAR USE IN Phan_Bo DO UpDateSoCai WITH M.Stt IN (M_Prog + [PUBLIC]) SELECT K_So627 ENDSCAN USE IN K_Ct USE IN K_Ct0 USE IN K_SoCai USE IN Tk627 USE IN Tk622 USE IN K_So627 SELECT K_SoTmp GO TOP This.Parent.Grid2.SetAll("DynamicFontBold", "IIF(Ty_Le = 100, .T., .F.)", ; "Column") This.Parent.Grid2.Refresh WAIT WINDOW NOWAIT M_End_Proc THISFORM.SetAll([MousePointer], 0) 3.Thủ tục tính giá thành PROCEDURE Recalculate() LPARAMETER _Thang1, _Thang2, _Tk IF _Thang2 < _Thang1 RETURN ENDIF LOCAL _Str_Dau_Ky1, _Str_Dau_Ky2, _Str_Dau_Ky7, _Str_Dau_Ky8, _i, ; _MD_HT, _SL_SPDD ThisForm.LockScreen = .T. _Tk = ALLTRIM(_Tk) m.Ngay_Ct1 = CTOD([01/] + TRANS(_Thang1, [@L 99]) + [/] + M_Nam) m.Ngay_Ct2 = GOMONTH(CTOD([01/] + TRANS(_Thang2, [@L 99]) + [/] +; M_Nam), 1) – 1 M.Ngay_Ct0 = CTOD([01/] + TRANS(M_Th_Bd_Ht, [@L 99]) + [/] + M_Nam) _SL_SPDD = [SL_SPDD] + TRAN(_Thang2, [@L 99]) _MD_HT = [MD_HT] + TRAN(_Thang2, [@L 99]) STORE [Ps_No1_00] TO _Str_Dau_Ky1, _Str_Cuoi_Ky1 STORE [Ps_No2_00] TO _Str_Dau_Ky2, _Str_Cuoi_Ky2 STORE [Ps_No7_00] TO _Str_Dau_Ky7, _Str_Cuoi_Ky7 STORE [Ps_No8_00] TO _Str_Dau_Ky8, _Str_Cuoi_Ky8 FOR _i = M_Th_Bd_Ht TO _Thang1 – 1 _Str_Dau_Ky1 = _Str_Dau_Ky1 +[+(Ps_No1_]+TRAN(_i,[@L 99]) +[-; Ps_Co1_]+TRAN(_i,[@L 99])+[)] _Str_Dau_Ky2 = _Str_Dau_Ky2 +[+(Ps_No2_]+TRAN(_i,[@L 99]) +[-; Ps_Co2_]+TRAN(_i,[@L 99])+[)] _Str_Dau_Ky7 = _Str_Dau_Ky7 +[+(Ps_No7_]+TRAN(_i,[@L 99]) +[-; Ps_Co7_]+TRAN(_i,[@L 99])+[)] _Str_Dau_Ky8 = _Str_Dau_Ky8 +[+(Ps_No8_]+TRAN(_i,[@L 99]) +[-; Ps_Co8_]+TRAN(_i,[@L 99])+[)] ENDFOR FOR _i = M_Th_Bd_Ht TO _Thang2 _Str_Cuoi_Ky1 = _Str_Cuoi_Ky1 +[+(Ps_No1_]+TRAN(_i,[@L 99]) +[-; Ps_Co1_]+TRAN(_i,[@L 99])+[)] _Str_Cuoi_Ky2 = _Str_Cuoi_Ky2 +[+(Ps_No2_]+TRAN(_i,[@L 99]) +[-; Ps_Co2_]+TRAN(_i,[@L 99])+[)] _Str_Cuoi_Ky7 = _Str_Cuoi_Ky7 +[+(Ps_No7_]+TRAN(_i,[@L 99]) +[-; Ps_Co7_]+TRAN(_i,[@L 99])+[)] _Str_Cuoi_Ky8 = _Str_Cuoi_Ky8 +[+(Ps_No8_]+TRAN(_i,[@L 99]) +[-; Ps_Co8_]+TRAN(_i,[@L 99])+[)] ENDFOR SELECT 0 USE (M_Code + [CtTmp]) ALIAS CtTmp COPY STRUCTURE TO (M_Temp + [K_CtTmp0]) COPY STRUCTURE TO (M_Temp + [K_CtTmp1]) USE IN CtTmp USE (M_Temp + [K_CtTmp0]) EXCLUSIVE IN 0 USE (M_Temp + [K_CtTmp1]) EXCLUSIVE IN 0 DO ScanFile WITH M.Ngay_Ct1, M.Ngay_Ct2, [(Tk_No = "] + _Tk + [").OR.; (Tk_Co = "] + _Tk + [")], [(Tk = '] + _Tk + [')], [K_CtTmp0] _Key2 = [!EMPTY(Ma_Vt).AND.(Tk_Co = "] + _Tk + [")] DO ScanFileV WITH M.Ngay_Ct1, M.Ngay_Ct2, [(.T.)], _Key2, [K_CtTmp1] USE (M_Dm_Nam + [DmVt]) ORDER Ma_Vt ALIAS M_DmVt IN 0 SELECT K_CtTmp1 SET RELATION TO Ma_Vt INTO M_DmVt REPLACE ALL Ma_Sp WITH M_DmVt.Ma_Sp SET RELATION TO USE IN M_DmVt SELECT K_CtTmp1 INDEX ON Tk_Co + Ma_Sp TAG Stt SELECT K_CtTmp0 INDEX ON Tk + Ma_Sp + DTOS(Ngay_Ct) TAG Stt SELECT 0 USE (M_Data_Nam + [CDK]) ORDER Tk_Ma_Sp ALIAS K_Cd USE (M_Dm_Nam + [DmSp]) ORDER Ma_Sp ALIAS M_DmSp IN 0 SELECT Tk, Ma_Sp, SPACE(50) AS Ten_Sp, SPACE(50) AS Ten_Tk, ; 000000000000000 AS Dau_Ky,SUM(&_Str_Dau_Ky1) AS Dau_Ky1,; SUM(&_Str_Dau_Ky2) AS Dau_Ky2,SUM(&_Str_Dau_Ky7) AS; Dau_Ky7, SUM(&_Str_Dau_Ky8) AS Dau_Ky8, ; 000000000000000 AS SL_Nhap,000000000000000 AS Ps_No, ; 000000000000000 AS Ps_No1, 000000000000000 AS Ps_No2, ; 000000000000000 AS Ps_No7, 000000000000000 AS Ps_No8, ; 000000000000000 AS Ps_Co, 00000000000000 AS Ps_Co1,; 000000000000000 AS Ps_Co2,000000000000000 AS Ps_Co7, ; 000000000000000 AS Ps_Co8,000000000000000 AS SL_SPDD_QD, ; 000000000000000 AS SL_SPDD,000 AS MD_HT, ; 000000000000000 AS Gia,000000000000000 AS Gia_Thanh, ; 000000000000000 AS Cuoi_Ky,SUM(&_Str_Cuoi_Ky1) AS ; Cuoi_Ky1, SUM(&_Str_Cuoi_Ky2) AS Cuoi_Ky2,; SUM(&_Str_Cuoi_Ky7) AS Cuoi_Ky7, SUM(&_Str_Cuoi_Ky8); AS Cuoi_Ky8,000000000000000.00 AS DM_Vat_Tu,; 000000000000000.00 AS DM_Luong, ; 000000000000000.00 AS DM_CPchung ; FROM K_Cd ; WHERE (Tk = _Tk) AND !EMPTY(Ma_Sp); INTO TABLE (M_Temp + [K_SoTmp0]) ; GROUP BY Tk, Ma_Sp IF ThisForm.chkDoDangTheoSP.Value = 1 REPLACE ALL Dau_Ky WITH Dau_Ky1 + Dau_Ky2 + Dau_Ky7 +; Dau_Ky8 ELSE REPLACE ALL Dau_Ky1 WITH 0, Dau_Ky2 WITH 0, Dau_Ky7; WITH 0, Dau_Ky8 WITH 0, Cuoi_Ky1 WITH 0, ; Cuoi_Ky2 WITH 0, Cuoi_Ky7 WITH 0, ; Cuoi_Ky8 WITH 0 ENDIF SELECT Tk, Ma_Sp ; FROM K_CtTmp0 ; WHERE (Tk + Ma_Sp NOT IN(SELECT Tk + Ma_Sp FROM; K_SoTmp0)) ; INTO TABLE (M_Temp + [K_SoTmp1]) ; GROUP BY Tk, Ma_Sp USE IN K_SoTmp1 _Dummy1 = [M_DmSp.DM_621_] + TRANS(_Thang2, [@L 99]) _Dummy2 = [M_DmSp.DM_622_] + TRANS(_Thang2, [@L 99]) _Dummy7 = [M_DmSp.DM_627_] + TRANS(_Thang2, [@L 99]) SELECT K_SoTmp0 APPEND FROM (M_Temp + [K_SoTmp1]) SET RELATION TO Ma_Sp INTO M_DmSp REPLACE ALL Ten_Sp WITH M_DmSp.Ten_Sp, DM_Vat_Tu WITH &_Dummy1,DM_Luong WITH &_Dummy2, ; DM_CPchung WITH &_Dummy7 SET RELATION TO SELECT K_SoTmp0 GO TOP SCAN _Tk = Tk _Ma_Sp = Ma_Sp M.Du_No1 = Dau_Ky WAIT WINDOW M_Process + [ ] + _Tk NOWAIT SELECT K_CtTmp0 SEEK _Tk +_Ma_Sp SUM Ps_No TO M.Ps_No1 REST WHILE (Tk = _Tk).AND.(Ma_Sp =; _Ma_Sp) FOR (TK_DU = [621]) SEEK _Tk +_Ma_Sp SUM Ps_No TO M.Ps_No2 REST WHILE (Tk = _Tk).AND.(Ma_Sp = ; _Ma_Sp) FOR (TK_DU = [622]) SEEK _Tk +_Ma_Sp SUM Ps_No TO M.Ps_No7 REST WHILE (Tk = _Tk).AND.(Ma_Sp = ; _Ma_Sp) FOR (TK_DU = [627]) SEEK _Tk +_Ma_Sp SUM Ps_No TO M.Ps_No8 REST WHILE (Tk = _Tk).AND.(Ma_Sp = ; _Ma_Sp) FOR (!INLIST(TK_DU, [621],[622],[627])) SELECT K_Cd SEEK _Tk +_Ma_Sp IF FOUND() M.MD_HT = &_MD_HT M.SL_SPDD = &_SL_SPDD ELSE STORE 0 TO M.MD_HT, M.SL_SPDD ENDIF SELECT K_CtTmp1 SEEK _Tk +_Ma_Sp SUM So_Luong TO M.SL_Nhap ; REST WHILE (Tk_Co = _Tk).AND.(Ma_Sp = _Ma_Sp) SELECT K_SoTmp0 M.Ps_No = M.Ps_No1 + M.Ps_No2 + M.Ps_No7 + M.Ps_No8 REPLACE SL_Nhap WITH M.SL_Nhap, SL_SPDD WITH M.SL_SPDD,; MD_HT WITH M.MD_HT,Ps_No WITH M.Ps_No, Ps_No1; WITH M.Ps_No1, Ps_No2 WITH M.Ps_No2, ; Ps_No7 WITH M.Ps_No7, Ps_No8 WITH M.Ps_No8 ENDSCAN DELETE FOR Dau_Ky = 0 AND Dau_Ky1 = 0 AND Dau_Ky2 = 0 AND; Dau_Ky7 = 0 AND Dau_Ky8 = 0 AND SL_Nhap = 0 AND; Ps_No1 = 0 AND Ps_No2 = 0 AND Ps_No7 = 0 AND Ps_No8; = 0 AND Ps_Co = 0 AND Ps_Co1 = 0 AND Ps_Co2 = 0 AND ; Ps_Co7 = 0 AND Ps_Co8 = 0 AND Cuoi_Ky1 = 0 AND ; Cuoi_Ky2 = 0 AND Cuoi_Ky7 = 0 AND Cuoi_Ky8 = 0 PACK REPLACE ALL SL_SPDD_QD WITH SL_SPDD * MD_HT / 100, Cuoi_Ky ; WITH Cuoi_Ky1 + Cuoi_Ky2 + Cuoi_Ky7 + Cuoi_Ky8 _For = '((Cuoi_Ky = 0) OR (SL_SPDD_QD + MD_HT # 0))' *!* Tinh gia tri do dang cuoi ky DO CASE CASE (ThisForm.OptGrpPP_Danh_Gia.Value = 1) && Theo vt truc tiep REPLACE Cuoi_Ky1 WITH ROUND((Dau_Ky1 + Ps_No1) / (SL_Nhap; + SL_SPDD) * SL_SPDD, 0); FOR SL_Nhap + SL_SPDD # 0 AND &_For REPLACE ALL Cuoi_Ky2 WITH 0, Cuoi_Ky7 WITH 0, Cuoi_Ky8 ; WITH 0 FOR &_For CASE (ThisForm.OptGrpPP_Danh_Gia.Value = 2) &&San luong HTTĐ REPLACE Cuoi_Ky1 WITH ROUND((Dau_Ky1 + Ps_No1) / (SL_Nhap; + SL_SPDD) * SL_SPDD, 0) ; FOR SL_Nhap + SL_SPDD # 0 AND &_For REPLACE Cuoi_Ky2 WITH ROUND((Dau_Ky2 + Ps_No2) / (SL_Nhap; + SL_SPDD_QD) * SL_SPDD_QD, 0); FOR SL_Nhap + SL_SPDD_QD # 0 AND &_For REPLACE Cuoi_Ky7 WITH ROUND((Dau_Ky7 + Ps_No7) / (SL_Nhap ; + SL_SPDD_QD) * SL_SPDD_QD, 0) ; FOR SL_Nhap + SL_SPDD_QD # 0 AND &_For REPLACE Cuoi_Ky8 WITH ROUND((Dau_Ky8 + Ps_No8) / (SL_Nhap ; + SL_SPDD_QD) * SL_SPDD_QD, 0) ; FOR SL_Nhap + SL_SPDD_QD # 0 AND &_For CASE (ThisForm.OptGrpPP_Danh_Gia.Value = 3) && Dinh muc REPLACE ALL Cuoi_Ky1 WITH ROUND(SL_SPDD*DM_Vat_Tu, 0),; Cuoi_Ky2 WITH ROUND(DM_Luong*SL_SPDD_QD,; 0),Cuoi_Ky7 WITH ROUND(DM_Cpchung; *SL_SPDD_QD,0), Cuoi_Ky8 WITH 0 FOR &_For ENDCASE REPLACE ALL Cuoi_Ky WITH Cuoi_Ky1 + Cuoi_Ky2 + Cuoi_Ky7 + ; Cuoi_Ky8 REPLACE ALL Ps_Co WITH Dau_Ky + Ps_No - Cuoi_Ky,Ps_Co1 WITH ; Dau_Ky1 + Ps_No1 - Cuoi_Ky1, Ps_Co2 WITH Dau_Ky2 +; Ps_No2 - Cuoi_Ky2, Ps_Co7 WITH Dau_Ky7 + Ps_No7 - ; Cuoi_Ky7,Ps_Co8 WITH Dau_Ky8 + Ps_No8 - Cuoi_Ky8 SELECT K_SoTmp0 INDEX ON Tk + Ma_Sp TAG Stt REPLACE ALL Gia WITH IIF(SL_Nhap # 0, ROUND(Ps_Co / SL_Nhap, 0), 0) USE IN M_DmSp USE IN K_CtTmp0 USE IN K_CtTmp1 USE IN K_SoTmp0 USE IN K_Cd SELECT K_SoTmp IF RECCOUNT() # 0 THISFORM.Grid2.RecordSource = [] THISFORM.Grid2.RecordSourceType = 0 ZAP THISFORM.Grid2.RecordSourceType = 1 THISFORM.Grid2.RecordSource = [K_SoTmp] ENDIF APPEND FROM (M_Temp + [K_SoTmp0]) DELETE ALL FOR EMPTY(Ma_Sp) THISFORM.Grid2.SETALL("DynamicForeColor", "IIF( NOT" + _For + ", ; RGB(0, 0, 128), RGB(0, 0, 0))", "Column") WAIT CLEAR GO TOP THISFORM.Refresh ThisForm.LockScreen = .F. 4.Thủ tục cập nhật giá PROCEDURE CmdCapNhatGia.Click() IF RECCOUNT('K_SoTmp') = 0 RETURN ENDIF _Screen.MousePointer = 11 THISFORM.LockScreen = .T. WAIT WINDOW M_Process NOWAIT LOCAL _i, _Dummy USE (M_Data_Nam + [CDK]) ORDER Tk_Ma_Sp ALIAS K_Cd IN 0 USE (M_Data_Nam + [Ct]) ORDER Stt ALIAS K_Ct IN 0 USE (M_Data_Nam + [Ct0]) ORDER Stt0 ALIAS K_Ct0 IN 0 USE (M_Data_Nam + [SoCai]) ORDER Stt ALIAS K_SoCai IN 0 USE (M_Temp+[K_CtTmp1]) ORDER Stt ALIAS K_CtTmp1 Exclusive IN 0 SELECT K_SoTmp SCAN _Tk = Tk _Ma_Sp = Ma_Sp IF SL_nhap # 0 SELECT K_CtTmp1 SEEK _Tk + _Ma_Sp SCAN REST WHILE (Tk_Co = _Tk).AND.(Ma_Sp = _Ma_Sp) REPLACE Gia WITH K_SoTmp.Gia, Tien WITH; ROUND(So_Luong * K_SoTmp.Gia, 0), ; Gia_Nt WITH K_SoTmp.Gia, Tien_Nt WITH ; ROUND(So_Luong * K_SoTmp.Gia, 0) SELECT K_Ct0 SEEK K_CtTmp1.Stt + K_CtTmp1.Stt0 IF FOUND() REPLACE Tien WITH K_CtTmp1.Tien, Tien_Nt ; WITH K_CtTmp1.Tien_Nt, Ma_Sp; WITH K_SoTmp.Ma_Sp IF K_Ct0.Nh_Ct = [1] REPLACE Tien_Nhap WITH Tien + Tien5,; Tien_N_Nt WITH Tien_Nt + ; Tien_Nt5, Tien_Xuat WITH 0,; Tien_X_Nt WITH 0 ELSE REPLACE Tien_Nhap WITH 0, Tien_N_Nt; WITH 0, Tien_Xuat WITH Tien,; Tien_X_Nt WITH Tien_Nt ENDIF ENDIF DO UpdateSocai WITH K_CtTmp1.Stt IN (M_Prog+[PubLic]) SELECT K_CtTmp1 ENDSCAN SEEK _Tk + _Ma_Sp SUM Tien TO _Tien REST WHILE (Tk_Co = _Tk).AND.(Ma_Sp ; = _Ma_Sp) _Chenh_Lech = K_SoTmp.Ps_Co - _Tien IF _Chenh_Lech # 0 SEEK _Tk + _Ma_Sp IF FOUND() REPLACE Tien WITH Tien + _Chenh_Lech, Tien_Nt; WITH Tien_Nt + _Chenh_Lech SELECT K_Ct0 SEEK K_CtTmp1.Stt + K_CtTmp1.Stt0 IF FOUND() REPLACE Tien WITH K_CtTmp1.Tien, Tien_Nt ; WITH K_CtTmp1.Tien_Nt IF K_Ct0.Nh_Ct = [1] REPLACE Tien_Nhap WITH Tien + Tien5, ; Tien_N_Nt WITH Tien_Nt + ; Tien_Nt5, Tien_Xuat WITH 0, ; Tien_X_Nt WITH 0 ELSE REPLACE Tien_Nhap WITH 0, Tien_N_Nt WITH 0,; Tien_Xuat WITH Tien, Tien_X_Nt WITH Tien_Nt ENDIF ENDIF DO UpdateSocai WITH K_CtTmp1.Stt IN (M_Prog + [PubLic]) ENDIF ENDIF SELECT K_CtTmp1 ENDIF SELECT K_Cd SEEK _Tk + _Ma_Sp IF !FOUND() APPEND BLANK REPLACE Tk WITH _Tk, Ma_Sp WITH _Ma_Sp ELSE _DummyN1 = [Ps_No1_] + TRANS(ThisForm.txtThang1.Value,; [@L 99]) _DummyN2 = [Ps_No2_] + TRANS(ThisForm.txtThang1.Value, ; [@L 99]) _DummyN7 = [Ps_No7_] + TRANS(ThisForm.txtThang1.Value,; [@L 99]) _DummyN8 = [Ps_No8_] + TRANS(ThisForm.txtThang1.Value,; [@L 99]) _DummyC1 = [Ps_Co1_] + TRANS(ThisForm.txtThang1.Value,; [@L 99]) _DummyC2 = [Ps_Co2_] + TRANS(ThisForm.txtThang1.Value,; [@L 99]) _DummyC7 = [Ps_Co7_] + TRANS(ThisForm.txtThang1.Value,; [@L 99]) _DummyC8 = [Ps_Co8_] + TRANS(ThisForm.txtThang1.Value,; [@L 99]) REPLACE &_DummyN1 WITH 0, &_DummyN2 WITH 0,; &_DummyN7 WITH 0, &_DummyN8 WITH 0 REPLACE &_DummyC1 WITH 0, &_DummyC2 WITH 0,; &_DummyC7 WITH 0, &_DummyC8 WITH 0 FOR _i = ThisForm.txtThang1.Value TO ThisForm.txtThang2.Value _DummyN1 = [Ps_No1_] + TRANS(_i, [@L 99]) _DummyN2 = [Ps_No2_] + TRANS(_i, [@L 99]) _DummyN7 = [Ps_No7_] + TRANS(_i, [@L 99]) _DummyN8 = [Ps_No8_] + TRANS(_i, [@L 99]) _DummyC1 = [Ps_Co1_] + TRANS(_i, [@L 99]) _DummyC2 = [Ps_Co2_] + TRANS(_i, [@L 99]) _DummyC7 = [Ps_Co7_] + TRANS(_i, [@L 99]) _DummyC8 = [Ps_Co8_] + TRANS(_i, [@L 99]) REPLACE &_DummyN1 WITH 0, &_DummyN2 WITH 0,; &_DummyN7 WITH 0, &_DummyN8 WITH 0 REPLACE &_DummyC1 WITH 0, &_DummyC2 WITH 0,; &_DummyC7 WITH 0, &_DummyC8 WITH 0 NEXT ENDIF _DummyN1 = [Ps_No1_] + TRANS(ThisForm.txtThang2.Value, [@L 99]) _DummyN2 = [Ps_No2_] + TRANS(ThisForm.txtThang2.Value, [@L 99]) _DummyN7 = [Ps_No7_] + TRANS(ThisForm.txtThang2.Value, [@L 99]) _DummyN8 = [Ps_No8_] + TRANS(ThisForm.txtThang2.Value, [@L 99]) _DummyC1 = [Ps_Co1_] + TRANS(ThisForm.txtThang2.Value, [@L 99]) _DummyC2 = [Ps_Co2_] + TRANS(ThisForm.txtThang2.Value, [@L 99]) _DummyC7 = [Ps_Co7_] + TRANS(ThisForm.txtThang2.Value, [@L 99]) _DummyC8 = [Ps_Co8_] + TRANS(ThisForm.txtThang2.Value, [@L 99]) REPLACE &_DummyN1 WITH K_SoTmp.Ps_No1, &_DummyN2 WITH K_SoTmp.Ps_No2,&_DummyN7 WITH ; K_SoTmp.Ps_No7, &_DummyN8 WITH K_SoTmp.Ps_No8 REPLACE &_DummyC1 WITH K_SoTmp.Ps_Co1, &_DummyC2; WITH K_SoTmp.Ps_Co2, &_DummyC7 WITH; K_SoTmp.Ps_Co7, &_DummyC8 WITH K_SoTmp.Ps_Co8 _DummyN1 = [SL_SPDD] + TRANS(ThisForm.txtThang2.Value, [@L 99]) _DummyN2 = [MD_HT] + TRANS(ThisForm.txtThang2.Value, [@L 99]) REPLACE &_DummyN1 WITH K_SoTmp.SL_SPDD, &_DummyN2 ; WITH K_SoTmp.MD_HT SELECT K_SoTmp ENDSCAN USE IN K_Ct0 USE IN K_Ct USE IN K_Cd USE IN K_SoCai USE IN K_CtTmp1 SELECT K_SoTmp GO TOP THISFORM.LockScreen = .F. _Screen.MousePointer = 0 =MESSAGEBOX(M_End_Proc, 64, M_App_Name) 5.Thủ tục cập nhật sổ cái PROCEDURE UpDateSoCai PROCEDURE UpDateSoCai PARAMETER _Stt LOCAL _Select, _Used_Ct, _Used_Ct0, _Used_SoCai, _inTransaction _Select = SELECT() _Used_Ct = USED([K_Ct]) _Used_Ct0 = USED([K_Ct0]) _Used_SoCai = USED([K_SoCai]) IF NOT _Used_Ct USE (M_Data_Nam + [Ct]) ORDER Stt ALIAS K_Ct AGAIN IN 0 ENDIF IF NOT _Used_Ct0 USE (M_Data_Nam + [Ct0]) ORDER Stt0 ALIAS K_Ct0 AGAIN IN 0 ENDIF IF NOT _Used_SoCai USE (M_Data_Nam + [SoCai]) ORDER Stt ALIAS K_SoCai Again IN 0 ENDIF SELECT K_Ct SEEK _Stt SELECT K_Ct0 SEEK _Stt IF !FOUND([K_Ct]) OR !FOUND([K_Ct0]) IF NOT _Used_Ct USE IN K_Ct ENDIF IF NOT _Used_Ct0 USE IN K_Ct0 ENDIF IF NOT _Used_SoCai USE IN K_SoCai ENDIF SELECT (_Select) RETURN ENDIF _inTransaction = TXNLEVEL() IF _inTransaction = 0 BEGIN TRANSACTION ENDIF *!* Xoá định khoản DO UpdateCdK WITH _Stt, -1 SELECT K_SoCai SEEK _Stt SCAN REST WHILE K_SoCai.Stt = _Stt DELETE UNLOCK ENDSCAN *! Các định khoản giá vốn, giá bán SELECT K_Ct0 SEEK _Stt SCAN REST WHILE Stt = _Stt SCATTER MEMVAR M.Ma_Dt0 = M.Ma_Dt IF !EMPTY(M.Tk_No + M.Tk_Co) AND ((K_Ct0.Posted = [C]) OR; (K_Ct0.Ma_Ct $ [HD,TL])) DO UpDateSocai0 WITH [] ENDIF IF !EMPTY(M.Tk_No2 + M.Tk_Co2) AND (K_Ct0.Posted = [C]) DO UpDateSocai0 WITH [2] ENDIF IF !EMPTY(M.Tk_No3 + M.Tk_Co3) AND (K_Ct0.Posted = [C]) DO UpDateSocai0 WITH [3] ENDIF IF !EMPTY(M.Tk_No4 + M.Tk_Co4) AND (K_Ct0.Posted = [C]) DO UpDateSocai0 WITH [4] ENDIF IF !EMPTY(M.Tk_No5 + M.Tk_Co5) AND (K_Ct0.Posted = [C]) DO UpDateSocai0 WITH [5] ENDIF IF !EMPTY(M.Tk_No6 + M.Tk_Co6) AND (K_Ct0.Posted = [C]) DO UpDateSocai0 WITH [6] ENDIF IF !EMPTY(M.Tk_No7 + M.Tk_Co7) AND (K_Ct0.Posted = [C]) DO UpDateSocai0 WITH [7] ENDIF SELECT K_Ct0 ENDSCAN DO UpdateCdK WITH _Stt, 1 DO UpDateTTien WITH _Stt IF _inTransaction = 0 END TRANSACTION ENDIF IF NOT _Used_Ct USE IN K_Ct ENDIF IF NOT _Used_Ct0 USE IN K_Ct0 ENDIF IF NOT _Used_SoCai USE IN K_SoCai ENDIF SELECT (_Select) RETURN tài liệu tham khảo 1. Giáo trình Hệ Thống Thông Tin Quản Lý TS Trương Văn Tú – TS Trần Thị Song Minh NXB Thống Kê, Hà Nội, 2000 2. Giáo trình Kế Toán Máy TS Trần Thị Song Minh NXB Thống Kê, Hà Nội, 2000 3. Project Guide Apptech Limited - First Edition, 1999, India 4. Microsoft Visual Foxpro – Online Document. 5. Hướng dẫn thực hành về kế toán chi phí sản xuất và tính giá thành sản phẩm trong doanh nghiệp. PTS.Võ Văn Nhị – ThS.Phạm Thanh Liêm – ThS.Lý Kim Huê NXB Thống Kê, Hà Nội, 1999 6. Kế toán tập hợp chi phí sản xuất và tính giá thành sản phẩm Nhà giáo ưu tú Vũ Huy Cẩm NXB Thống Kê, Hà Nội, 1996 7. Hướng dẫn thực hành chế độ kế toán mới. TS. Phạm Văn Dược - Đặng Kim Cương NXB Thống Kê, Hà Nội, 1999

Các file đính kèm theo tài liệu này:

  • doc20396.DOC