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
119 trang |
Chia sẻ: maiphuongtl | Lượt xem: 1726 | Lượt tải: 0
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 nhng cã thÓ lu 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 nhng 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 nhng 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, lu 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:
- 20396.DOC