Chuyên đề 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 2 LỜI NÓI ĐẦU 4 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 6 I.Giới thiệu về công ty TNHH ống thép Hòa Phát 6 II.Giới thiệu đề tài nghiên cứu 7 1.Khái quát đề tài 7 2.Tính cấp thiết của đề tài 7 CHƯƠNG II.CƠ SỞ LÝ LUẬN CỦA VIỆC NGHIÊN CỨU ĐỀ TÀI 9 I.Hệ thống thông tin quản lý 9 1.Hệ thống thông tin quản lý 9 2.Hiệu quả kinh tế của hệ thống thông tin quản lý 11 3.Phương pháp phát triển một hệ thống thông tin quản lý 13 II.Kế toán tập hợp chi phí sản xuất và tính giá thành sản phẩm 18 1.Khái niệm chi phí sản xuất và giá thành sản phẩm 18 2.Phân loại chi phí sản xuất 18 3.Phân loại giá thành 19 4.Phương pháp tập hợp chi phí sản xuất 20 5.Các phương pháp tính giá thành sản phẩm 26 CHƯƠNG III. PHÂN TÍCH CHI TIẾT VÀ THIẾT KẾ HỆ THỐNG 31 I.Phân tích chi tiết 31 1.Vài nét về công tác kế toán nói chung tại công ty 31 2.Tóm tắt quy trình sản xuất và đối tượng tính giá thành 32 3.Hiện trạng việc tính giá thành 33 4.Sơ đồ luồng thông tin của hệ thống hiện tại 40 5.Sơ đồ luồng dữ liệu của hệ thống hiện tại 49 6.Vấn đề của hệ thống tính giá thành hiện tại 51 II.Thiết kế logic 53 1.Sơ đồ luồng dữ liệu mới 53 2.Sơ đồ luồng thông tin mới 55 3.Thiết kế cơ sở dữ liệu logic 57 III.Thiết kế vật lý ngoài 60 1.Các màn hình nhập số liệu 60 2.Trình tự các thao tác tính giá thành 65 IV.Thiết kế vật lý trong 67 1.Thiết kế cơ sở dữ liệu vật lý trong 67 2.Sơ đồ cấu trúc dữ liệu của cơ sở dữ liệu vật lý trong 67 3.Cấu trúc các tệp 69 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 71 5.Sơ đồ phân rã chương trình 73 6.Các thuật toán chính của chương trình 75 KẾT LUẬN 79 PHỤ LỤC 80 TÀI LIỆU THAM KHẢO 110

doc119 trang | Chia sẻ: maiphuongtl | Lượt xem: 1726 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Chuyên đề 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, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trê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
Tài liệu liên quan