Tải hóa đơn điện tử (https://hoadondientu.gdt.gov.vn/) Excel Vba (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

ongke0711

Thành viên gắn bó
Tham gia
7/9/06
Bài viết
2,329
Được thích
3,142
Giới tính
Nam
Chào các bạn,
Tôi ngồi mò mẫm mấy ngày mới tìm được cách tải hóa đơn điện tử từ trang https://hoadondientu.gdt.gov.vn/. Cách này có thể không chuyên nghiệp nhưng cũng giải quyết được vấn đề tải hóa đơn hàng loạt từ trang trên và ghi xuống Excel theo định dạng dễ tổng hợp dữ liệu sau này.
- Tốc độ không nhanh như các ứng dụng python siêu nhanh.
- Chưa tìm được các link tải file .xml hoặc .html
- Chưa trải nghiệm qua các định dạng hóa đơn điện tử của các nhà cung cấp giải pháp khác nhau nên sẽ không đảm bảo chạy đúng 100%.
- Chưa biết cách tích hợp code vượt Captcha của (Python, C#..) vào VBA nên phải nhập Captcha thủ công.
Nói chung cái tool cũng giải quyết được việc tải hóa đơn hàng loạt :D .
Tôi sẽ upload file demo không khóa (có khóa cũng như không) sau vì code còn lộn xộn lắm. Các bạn xem qua và đóng góp cách xử lý tốt hơn, gọn hơn nhé.


*** 12/10/2024: Cập nhật sửa một đống lỗi.
*** 15/10/2024: Cập nhật sửa lỗi Null và nhập ngày tháng.
*** 16/10/2024: Thêm tính năng lưu User/Pass.
*** 20/10/2024: Sửa lỗi hiển thị ngày tháng, sửa và thêm một số code phụ trợ.
*** 28/10/2024: Sửa lấy hóa đơn từ máy tính tiền.
*** 07/11/2024: Sửa code trích xuất dữ liệu, thêm cột so sánh.
*** 13/11/2024: Dùng code của bạn Hesanbi để tự động nhập Captcha. Thêm code lấy link tra cứu của VNPT và BKAV.
*** 05/02/2025: Thêm code tải file Zip và trích xuất dữ liệu hóa đơn từ file XML. Sửa một số lỗi.
*** 23/02/2025: Sửa lỗi hiển thị sai <Trạng thái hóa đơn>.
 

File đính kèm

Lần chỉnh sửa cuối:
Có nhiều loại hóa đơn, mỗi hóa đơn lại có các khóa thẻ xml khác nhau, họ định nghĩa là thẻ tên trường, thì có dữ liệu tương ứng nằm trong các khóa thông tin khác. Hddt mua vào và bán ra có các trường khác nhau. Ở trên em có để cái bảng thẻ xml, trong đó có nhiều trường đã phân biệt trường chung và riêng.
Có hóa đơn sai sót và thay đổi cũng có các thẻ do TT và NĐ cqt định nghĩa.
Hôm bữa anh không nhìn kỹ Key 3 trong cái bảng của em :D .
 
Upvote 0
Em thử thì bị lỗi như này ạ
 

File đính kèm

  • 1731378193327.png
    1731378193327.png
    113 KB · Đọc: 47
Upvote 0
Upvote 0
em đã thử lại 7-8 lần vẫn báo vậy
Bài đã được tự động gộp:


khi bấm "ok" nó lại báo lỗi như này ạView attachment 305495

PM hiện tại chỉ có phép tìm kiếm 1 tháng thôi, Thông báo nè
:D Có thể tìm kiếm nhiều tháng nhưng hạn chế là số lượng hoá đơn nhiều, gửi nhiều request liên tục nên bị web nó chặn lại. Tôi đã chạy thử tải về khoảng 700 hđ tổng nhưng chi tiết thì chừng 200 hđ là bị văng. Có nhiều cty một tháng cũng cả ngàn hđ nên tốt nhất chia nhỏ ra để tải.
Các bạn chờ tool của bạn Hesanbi đi nhé. :)
 
Upvote 0
Có nhiều loại hóa đơn, mỗi hóa đơn lại có các khóa thẻ xml khác nhau, họ định nghĩa là thẻ tên trường, thì có dữ liệu tương ứng nằm trong các khóa thông tin khác. Hddt mua vào và bán ra có các trường khác nhau. Ở trên em có để cái bảng thẻ xml, trong đó có nhiều trường đã phân biệt trường chung và riêng.

:D Có thể tìm kiếm nhiều tháng nhưng hạn chế là số lượng hoá đơn nhiều, gửi nhiều request liên tục nên bị web nó chặn lại. Tôi đã chạy thử tải về khoảng 700 hđ tổng nhưng chi tiết thì chừng 200 hđ là bị văng. Có nhiều cty một tháng cũng cả ngàn hđ nên tốt nhất chia nhỏ ra để tải.
Các bạn chờ tool của bạn Hesanbi đi nhé. :)
Hôm nay thuế đang bảo trì các bác ơi :D không ổn định đâu mai rồi test
 
Upvote 0
Hôm nay thuế đang bảo trì các bác ơi :D không ổn định đâu mai rồi test
Nếu tôi không nhầm thì họ sẽ cập nhật lại API hoặc Token hoặc một cách nào đó chặn tải số lượng nhiều hóa đơn.
Dễ hiểu là vì chương trình tải hóa đơn tải đi tải lại tại nguồn với số lượng yêu cầu quá khủng. Nên họ không có đủ băng thông cho điều đó.
Khi tải về các hóa đơn đã tải rồi thì không tải nữa lúc đó mới giảm tải cho Nguồn. "Nguồn mới sống sót nổi".

Giả sử bạn đang livestream sức hút của bạn quá khủng tới 100 triệu người xem đồng thời. Băng thông không đám ứng nổi. Sập livestream.
 
Upvote 0
Nếu tôi không nhầm thì họ sẽ cập nhật lại API hoặc Token hoặc một cách nào đó chặn tải số lượng nhiều hóa đơn.
Dễ hiểu là vì chương trình tải hóa đơn tải đi tải lại tại nguồn với số lượng yêu cầu quá khủng. Nên họ không có đủ băng thông cho điều đó.
Khi tải về các hóa đơn đã tải rồi thì không tải nữa lúc đó mới giảm tải cho Nguồn. "Nguồn mới sống sót nổi".

Giả sử bạn đang livestream sức hút của bạn quá khủng tới 100 triệu người xem đồng thời. Băng thông không đám ứng nổi. Sập livestream.
Dạ anh với lại có thể họ sửa lỗi thể hiện hóa đơn khi tìm kiếm, hiện tại đang bị lỗi tìm kiếm bị thiếu hóa đơn. À cho em hỏi, anh có thể phân tích cách lấy hóa đơn gốc của VNPT, viettel (Viễn thông), em có hóa đơn gốc lẫn xml gốc, nhưng không tìm thấy key trong đó, không hiểu NIBOT đã làm cách nào mà lấy được hóa đơn gốc.
 
Upvote 0
Dạ anh với lại có thể họ sửa lỗi thể hiện hóa đơn khi tìm kiếm, hiện tại đang bị lỗi tìm kiếm bị thiếu hóa đơn. À cho em hỏi, anh có thể phân tích cách lấy hóa đơn gốc của VNPT, viettel (Viễn thông), em có hóa đơn gốc lẫn xml gốc, nhưng không tìm thấy key trong đó, không hiểu NIBOT đã làm cách nào mà lấy được hóa đơn gốc.
File mới của tôi có thêm cách lấy hoá đơn của vnpt đó.
 
Upvote 0
File mới của tôi có thêm cách lấy hoá đơn của vnpt đó.
Cập nhật thêm cách lấy hóa đơn của BKAV là cái ID đó bác, hóa đơn cước viễn thông của VNPT hả bác. Trường hợp cùng một mã số nhà cung cấp giải pháp hóa đơn điện tử nhưng có 2 đường link khác nhau thì làm sao bác, ví dụ như của shopee, có thể lấy được key nhưng bị trùng mã số nhà cung cấp GPHĐ ĐT
 
Upvote 0
File mới của tôi có thêm cách lấy hoá đơn của vnpt đó.
PM này e nghĩ phải cập nhật đủ các nhà cung cấp hóa đơn, từ đó hy vọng hoàn thiện được hết. Bản demo mọi người test xem thiếu cài nào, nhờ họ gửi XML cho a, a nghiên cứu và cập nhật thêm để hoàn thiện
 
Upvote 0
Tôi thấy các nhà cung cấp giải pháp khác nhau có thể sẽ gắn thông tin vào các thẻ khác nhau: thttltsuat[], ttin[], ttkhac[], ... và cả tên trường. Cái tên trường trong file XML cũng có thể khác so với tên trường trong file Json. Do đó chỉ khi gặp các hóa đơn khác nhau mới bổ sung thêm được. Cái tên trường "TongTien_Thue" có thể là "tgtthue" trong json, trong json tôi chưa thấy họ dùng dấu gạch dưới "_".
Theo như hình của bạn thì bạn thử thêm đoạn code riêng cho cái thẻ ttin[] xem sao.

ví dụ:

View attachment 305423

Tôi trích xuất dữ liệu từ file json do tôi thấy có nhiều hóa đơn có file json nhưng không có file XML (không có hồ sơ gốc) trên hệ thống nên nếu tổng hợp sẽ thiếu. Nếu bên kế toán chỉ cần lấy dữ liệu có file XML thôi thì dễ hơn nhiều, chỉ cần tải hàng loạt file XML rồi dùng cái tool của bạn @hoamattroicoi là nhanh gọn lẹ rồi.
jText_TongTien_Thue.JPG

Tôi không hiểu lắm về file json. Như trong code hóa đơn này tôi debug.print jsontext như hình thì tôi thấy tại thẻ ttkhac[] có "ttruong":"TongTien_Thue" nên tôi nghĩ bên phát hành hóa đơn họ theo cấu trúc file xml quy định thì khi gửi dữ liệu về tổng cục thuế thì cũng theo quy định bên file xml.
Tôi mới tìm ra thêm một trường tên như bên dưới, bạn bổ sung thêm vào dòng code của bạn.

Mã:
"Tiền thuế dòng (Tiền thuế GTGT)"

"Ti" & ChrW(7873) & "n thu" & ChrW(7871) & " d" & ChrW(242) & "ng (Ti" & ChrW(7873) & "n thu" & ChrW(7871) & " GTGT)"
Nếu mỗi nhà cung cấp hóa đơn điện tử họ tự quy định ttruong theo cách của họ mà không có quy ước chung nào thì mình liệt kê đến khi nào mới tra đủ cho các trường hợp.
 
Upvote 0
Nếu mỗi nhà cung cấp hóa đơn điện tử họ tự quy định ttruong theo cách của họ mà không có quy ước chung nào thì mình liệt kê đến khi nào mới tra đủ cho các trường hợp.
- Tôi cũng gặp hd đơn có dùng tên TongTien_thue nên phải thêm thủ công thôi bạn.
- Tôi thấy có qui định về việc về việc thiết kế thông tin theo thẻ nhưng không chắc còn có thể đặt tên gì khác nữa không . Giờ tôi chỉ có thể lấy từ các mẫu hđ đã gặp thôi.
 
Upvote 0
- Tôi cũng gặp hd đơn có dùng tên TongTien_thue nên phải thêm thủ công thôi bạn.
- Tôi thấy có qui định về việc về việc thiết kế thông tin theo thẻ nhưng không chắc còn có thể đặt tên gì khác nữa không . Giờ tôi chỉ có thể lấy từ các mẫu hđ đã gặp thôi.
Mình góp ý về file của bạn như sau:
1. Tra cứu hóa đơn của https://tracuuhddt78.hilo.com.vn/
- File tìm sai mã tra cứu: "Fkey" chứ không phải "Searchkey";
2. Đối với các hóa đơn BKAV thì:
Link tra cứu sẽ thay "https://van.ehoadon.vn/TCHD" bằng "https://van.ehoadon.vn/Lookup?InvoiceGUID=ID" ID sẽ thay bằng dãy ký tự của ID trong hóa đơn thay vào.
-------------------
Thân ái!

1731466834738.png
1731466190786.png1731466231188.png
 
Upvote 0
Em tải hóa đơn mua vào toàn bộ tháng 10/2024 (tầm 280 hóa đơn) thì kết quả bị sót 2 hóa đơn với 2 trường hợp cụ thể như sau ạ:
- Trường hợp 1: Cùng 1 nhà cung cấp có 3 tờ hóa đơn số 211, 212, 213 đều cùng ngày 31/10, khi em chọn tải từ 01/10-31/10 thì không lên được hóa đơn số 212, nhưng khi chọn tải chỉ ngày 31/10 thì lại lên đủ cả 3 tờ. Em đã thử tải cả tháng lại nhiều lần nhưng lần nào cũng bị sót hóa đơn 212 đó (Hóa đơn này thuộc loại có mã Cơ quan thuế, Đơn vị cung cấp hóa đơn điện tử: Softdreams)
- Trường hợp 2: Là 1 nhà cung cấp khác với hóa đơn ngày 31/10, em tra cứu chỉ chọn ngày 31/10 thì không lên được, nhưng thử chọn từ 31/10-12/11 thì lên được với "Tên HĐ" ở cột B là "Mẫu 01 TT78" không giống như các tên thông thường như ảnh đính kèm (Hóa đơn này thuộc loại có mã Cơ quan thuế, Đơn vị cung cấp hóa đơn điện tử: Viettel)
Không biết có bác nào gặp trường hợp giống em không ạ.
 

File đính kèm

  • 1731472064088.png
    1731472064088.png
    110.8 KB · Đọc: 20
Upvote 0
Em tải hóa đơn mua vào toàn bộ tháng 10/2024 (tầm 280 hóa đơn) thì kết quả bị sót 2 hóa đơn với 2 trường hợp cụ thể như sau ạ:
- Trường hợp 1: Cùng 1 nhà cung cấp có 3 tờ hóa đơn số 211, 212, 213 đều cùng ngày 31/10, khi em chọn tải từ 01/10-31/10 thì không lên được hóa đơn số 212, nhưng khi chọn tải chỉ ngày 31/10 thì lại lên đủ cả 3 tờ. Em đã thử tải cả tháng lại nhiều lần nhưng lần nào cũng bị sót hóa đơn 212 đó (Hóa đơn này thuộc loại có mã Cơ quan thuế, Đơn vị cung cấp hóa đơn điện tử: Softdreams)
- Trường hợp 2: Là 1 nhà cung cấp khác với hóa đơn ngày 31/10, em tra cứu chỉ chọn ngày 31/10 thì không lên được, nhưng thử chọn từ 31/10-12/11 thì lên được với "Tên HĐ" ở cột B là "Mẫu 01 TT78" không giống như các tên thông thường như ảnh đính kèm (Hóa đơn này thuộc loại có mã Cơ quan thuế, Đơn vị cung cấp hóa đơn điện tử: Viettel)
Để tôi kiểm tra lại xem.
 
Upvote 0
OPTIONS trong HTTP là lệnh gửi yêu cầu thiết đặt tùy chọn tại server trước khi gửi yêu cầu tiếp theo, để server hiểu là yêu cầu tiếp theo gửi đến các tùy chọn là khớp với OPTIONS đó để server nhận đúng yêu cầu và sẽ trả về kết quả theo OPTIONS đó.
Nếu anh viết mã HTTP đồng bộ thì quá trình gửi OPTIONS này sẽ thêm độ trễ.
Viết mã HTTP Bất đồng bộ là lập trình VBA nâng cao, để tiến đến viết mã ứng dụng chuyên nghiệp mà người học lập trình nên hướng đến. Hãy xem một ví dụ là Chrome tải hình ảnh của Intagram của một cá nhân, với hàng trăm ảnh cùng lúc. Thì không thể tải đồng bộ, nó sẽ tạo ra độ trễ lớn cho người xem.


Hãy hiểu về svg trước bạn nhé, svg nó có các ký tự định nghĩa cú pháp M L Q Z ... bạn chỉ cần xóa hết các chỉ số định vị vị trí chiều rộng cao đi. Giữ lại các ký tự cú pháp. Bây giờ việc bạn cần làm là nhấn nút tạo mới captcha để chép lại các dãy mã SVG từ 0-9 A-Z xóa như trên để sau này so sánh với SVG mới. Hãy nghĩ xem bạn sẽ thấy mỗi ký tự có chỉ số định vị vị trí theo chiều ngang, so sánh 1 trong các chỉ số này của mỗi ký tự bạn sẽ có được thứ tự vị trí 6 ký tự.
Mỗi tệp svg đều có 2 3 đường kẻ che phía trước, các định nghĩa cú pháp SVG của nó rất đơn giản, nên rất dễ phát hiện chúng để loại trừ ra.

Sử dụng biểu thức chính quy bạn sẽ làm được các điều trên.

Tôi cũng đang viết ứng dụng này, bước captcha tôi đã xử lý xong, giai đoạn tiếp theo là xử lý khối dữ liệu và tải dữ liệu. Viết ứng dụng về HDDT là không đơn giản tí nào.

Bạn có thể xem qua hình ảnh ứng dụng tôi viết. Và cũng sẽ sớm chia sẻ.

View attachment 304547

@quocphuoc88
Dữ liệu API và XML là giống hệt nhau, từ dữ liệu API viết mã tạo tệp XML, thay vì tải zip. Bạn có 10k hóa đơn, nếu bạn tải về máy tính của bạn thì chỉ tốn kém. có 2 cách để giải quyết vấn đề tải zip để tiết kiệm cho việc tải:
1. Tải zip sau khi bạn lọc danh sách ít hóa đơn.
2. Từ Dữ liệu API tạo ra xml/html.
Hy vọng sớm nhận được bộ chia sẻ này!
 
Upvote 0
*** 13/11/2024: Dùng code của bạn Hesanbi để tự động nhập Captcha. Thêm code lấy link tra cứu của VNPT và BKAV.
Bài đã được tự động gộp:

... với "Tên HĐ" ở cột B là "Mẫu 01 TT78" không giống như các tên thông thường như ảnh đính kèm (Hóa đơn này thuộc loại có mã Cơ quan thuế, Đơn vị cung cấp hóa đơn điện tử: Viettel)
Cột này là tôi lấy "Tên loại hóa đơn" ("tlhdon") nên nó hiển thị đúng như qui ước như vậy.
 
Upvote 0
*** 13/11/2024: Dùng code của bạn Hesanbi để tự động nhập Captcha. Thêm code lấy link tra cứu của VNPT và BKAV.
Bài đã được tự động gộp:


Cột này là tôi lấy "Tên loại hóa đơn" ("tlhdon") nên nó hiển thị đúng như qui ước như vậy.
Hy vọng ngày càng hoàn thiện hơn, anh chị em kế toán tự chủ được công việc của mình. Cám ơn anh nhiều!
 
Upvote 0
Em làm Bank mà dùng tool này của bác thì có xơi đc k chứ 1 tháng n rơi vào tầm hơn triệu cái hóa đơn. Tks bác nhé
 
Upvote 0
Em làm Bank mà dùng tool này của bác thì có xơi đc k chứ 1 tháng n rơi vào tầm hơn triệu cái hóa đơn. Tks bác nhé
Tool không tải được số lượng lớn như vậy đâu bạn. Hơn nữa bạn phải đổi sang cơ sở dữ liệu khác để chứa nó chứ Excel có giới hạn 1tr dòng thôi.
 
Upvote 0
1731544786842.png1731544801282.png

Em thử V4 thì tự giải mã CAPCHA rồi, nhưng sao lại không tải được chi tiết ấy anh
 
Upvote 0
Em làm Bank mà dùng tool này của bác thì có xơi đc k chứ 1 tháng n rơi vào tầm hơn triệu cái hóa đơn. Tks bác nhé
Đăng nhập tài khoản HDDT vào một ứng dụng không được phát triển theo tiêu chuẩn an toàn và bảo mật thì có khả năng doanh nghiệp của bạn sẽ bị phạt. Huống chi là bạn sử dụng tài khoản HDDT được cấp cho Ngân Hàng. Do một số bạn cần sử dụng trình tải đơn giản để xử lý số lượng ít hóa đơn. Nên tin tưởng và sử dụng ứng dụng.

Nếu xử lý hàng triệu hóa đơn trên tháng thì bạn cần thuê server hoặc bạn sở hữu dàn máy PC khủng để xử lý. PC thường xử lý biết khi nào cho xong công việc của bạn.

Đụng đến Ngân Hàng, Xăng dầu, công ty lớn, tập đoàn, thì tốt nhất vẫn là tổ chức giải pháp HDDT.
 
Upvote 0
Cột này là tôi lấy "Tên loại hóa đơn" ("tlhdon") nên nó hiển thị đúng như qui ước như vậy.
Vâng bác, tại em thấy riêng hóa đơn này tra cứu lệch vài ngày sau mới tải về được (dù ngày hóa đơn và ngày ký số như nhau) mà tên hiển thị có hơi khác nên em ghi chú lại để nếu được bác kiểm tra xem thử ạ.
 
Upvote 0
Bác ơi, em chợt nảy ra 1 ý tưởng như này, bác xem có khả thi không !
Vì đã có tự giải CAPCHA rồi, thì tạo 1 cái list tự đăng nhập, tự tải theo ngày tháng cài sẵn, xong xuất file ra 1 vị trí cố định, rồi tự chuyển sang MST tiếp theo lại tải tiếp theo ngày tháng đó luôn
 
Upvote 0
Cho em hỏi đoạn code vượt capcha em thử thay mã capcha này https://tracuunnt.gdt.gov.vn/tcnnt/captcha.png vào thay link của bên hoá đơn thì không báo lỗi ạ!
1731559694101.png

1731559726879.png
 
Upvote 0
Cho em hỏi đoạn code vượt capcha em thử thay mã capcha này https://tracuunnt.gdt.gov.vn/tcnnt/captcha.png vào thay link của bên hoá đơn thì không báo lỗi ạ!
View attachment 305560

View attachment 305561
Code giải captcha trong bài này chỉ áp dụng cho captcha định dạng hình ảnh .svg thôi bạn, còn với dạng bạn đề cập thì bạn có thể thử với Google Gemini xem sao, không chắc liệu Google có cho phép sử dụng API của họ để giải captcha không, với lại không phải lúc nào kết quả cũng chính xác 100%.
1731564356321.png
 
Upvote 0
Cho em hỏi đoạn code vượt capcha em thử thay mã capcha này https://tracuunnt.gdt.gov.vn/tcnnt/captcha.png vào thay link của bên hoá đơn thì không báo lỗi ạ!
Giải captcha bên trang tổng cục thuế bạn phải có tư duy tạo ra thuật toán liên quan đến toán học vector, hình học và hiểu về toán học không gian màu.
Bên ht hddt chỉ cần giải mẹo.
 
Upvote 0
Cho em hỏi đoạn code vượt capcha em thử thay mã capcha này https://tracuunnt.gdt.gov.vn/tcnnt/captcha.png vào thay link của bên hoá đơn thì không báo lỗi ạ!
View attachment 305560

View attachment 305561
Vd bên Python bạn có thể sử dụng thư viện cv2, pytesseract để viết một script phân tích các nét vẽ, màu sắc rồi từ đó đoán ra các ký tự, nhưng mà kết quả cũng may rủi lắm.
Tham khảo thêm:
Scrapy - simple captcha solving example
 
Upvote 0
@hoangtuan.net bạn có thể cho biết tại sao bạn muốn vượt Captcha tra cứu thuế. Tôi thấy họ đã thêm API https://f-emc.ngsp.gov.vn/tracking để giám sát nguồn truy cập. Nếu bạn vượt captcha và tải nhanh thông tin. Chắc chắn sẽ bị họ phát hiện và họ sẽ thực hiện điều gì đó tiếp theo.
 
Upvote 0
@hoangtuan.net bạn có thể cho biết tại sao bạn muốn vượt Captcha tra cứu thuế. Tôi thấy họ đã thêm API https://f-emc.ngsp.gov.vn/tracking để giám sát nguồn truy cập. Nếu bạn vượt captcha và tải nhanh thông tin. Chắc chắn sẽ bị họ phát hiện và họ sẽ thực hiện điều gì đó tiếp theo.
có thể bạn ấy muốn tra cứu nhanh thông tin tình trạng các doanh nghiệp (đang hoạt động, bỏ điểm, ngừng hoạt động ), hoặc tra cứu mã số thuế TNCN từ số cccd !
 
Upvote 0
có thể bạn ấy muốn tra cứu nhanh thông tin tình trạng các doanh nghiệp (đang hoạt động, bỏ điểm, ngừng hoạt động ), hoặc tra cứu mã số thuế TNCN từ số cccd !
đúng rồi ạ, trước đây bác @ongke0711 và các bác có làm file tra trên masothue.com nhưng trang đó nhiều lúc cập nhập chậm và không chính thức như bên trang của thuế ạ!
 
Upvote 0
Upvote 0
Upvote 0
Em tải bản mới và cũ của anh chạy nó lấy thiếu 1 cái hóa đơn kiểm tra trên trang thuế thì có hóa đơn bị thiếu đó. Tải file từ trang thuế thì cũng có hóa đơn bị thiếu đó luôn anh @ongke0711.
Em chạy bản v4 3 lần, 2 lần đầu không có hóa đơn đó, đến lần 3 thì mới có. Là do lỗi mạng hay sao vậy anh?
 
Upvote 0
Em chạy bản v4 3 lần, 2 lần đầu không có hóa đơn đó, đến lần 3 thì mới có. Là do lỗi mạng hay sao vậy anh?
Chủ yếu là do lỗi kết nối với web khi gửi request số hóa đơn đó và web không trả về thông tin, code tự nhảy qua tải hóa đơn khác.
Đối với code hiện tại của tôi chỉ có thể tăng độ trễ kết nối để tránh gửi request liên tục thôi. Bạn kiếm hàm Sleep và tăng lên, đổi lại sẽ chậm đi rất nhiều.
 
Upvote 0
Chủ yếu là do lỗi kết nối với web khi gửi request số hóa đơn đó và web không trả về thông tin, code tự nhảy qua tải hóa đơn khác.
Đối với code hiện tại của tôi chỉ có thể tăng độ trễ kết nối để tránh gửi request liên tục thôi. Bạn kiếm hàm Sleep và tăng lên, đổi lại sẽ chậm đi rất nhiều.
Dạ, code tầm đó thì em chịu anh ơi. Em chưa đủ trình. Cám ơn anh đã phản hồi em!
 
Upvote 0
Nó đổi token luôn hay sao ấy, tra cứu tay vẫn được, nhưng chạy tra cứu bằng file thì không ra kết quả
Tôi thấy vẫn tải bình thường tại tệp này nha bạn

 
Upvote 0
E không hiểu sao, mấy bản cập nhật về sau, toàn bị lỗi như này
1731899470804.png
 
Upvote 0
E không hiểu sao, mấy bản cập nhật về sau, toàn bị lỗi như này
View attachment 305662
Lỗi này có thể do Office nó chặn cái Web browser control. Cách xử lý nhanh nhất là bạn cứ thêm dấu nháy đơn ( ' ) trước dòng lệnh có "wbCatcha" để vô hiệu hóa nó (dùng lệnh Find để tìm). Đã có code giải mã captcha tự động rồi nên khỏi hiển thị cũng được.


Screen Shot 2024-11-18 at 12.16.21.png
 
Upvote 0
Em đang bị lỗi này, và không ghi dữ liệu vào sheet chi tiết đượcView attachment 305656
Bạn thay cái hàm MsgboxUni trong module [MsgBoxTV] bằng code dưới đây: chạy thử xem.

JavaScript:
Option Explicit

#If VBA7 Then
    Private Declare PtrSafe Function GetActiveWindow Lib "user32" () As LongPtr
    Public Declare PtrSafe Function MessageBoxW Lib "user32" _
                                    (ByVal hwnd As LongPtr, _
                                    ByVal lpText As LongPtr, _
                                    ByVal lpCaption As LongPtr, _
                                    ByVal wType As Long) As Long
#Else
    Private Declare Function GetActiveWindow Lib "user32" () As Long
    Public Declare Function MessageBoxW Lib "user32" _
                            (ByVal hwnd As Long, _
                            ByVal lpText As Long, _
                            ByVal lpCaption As Long, _
                            ByVal wType As Long) As Long
#End If

Public Function MsgBoxUni(ByVal sMsgUni As String, Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, Optional ByVal sTitleUni As String = vbNullString) As VbMsgBoxResult
    MsgBoxUni = MessageBoxW(GetActiveWindow, StrPtr(sMsgUni), StrPtr(sTitleUni), Buttons)
End Function
 
Upvote 0
vậy không có cách nào sửa được hả anh, tại vì để 2 cột thuế suất như vậy dễ nhầm lẫn, mà khai báo thuế gtgt bán ra thì nó phân biệt rõ KKKNT, KCT hay 0%
này có gì đâu, làm cái lệnh if KKKNT, KCT là 0% thì xong thôi ko có gì hết
 
Upvote 0
Upvote 0
Chỗ link tra cứu hóa đơn gốc, nếu 1 mã số thuế tổ chức giải pháp, mà có 2 link tra cứu thì làm sao ạ, em thử thêm vào mà nó toàn bắt link đầu tiên
Bài đã được tự động gộp:

Chỉ có một cách là dùng API để cho menu tự động cuộn khi rê chuột lên xuống

View attachment 305805
hóng <3
 
Upvote 0
Chào các bạn,
Tôi ngồi mò mẫm mấy ngày mới tìm được cách tải hóa đơn điện tử từ trang https://hoadondientu.gdt.gov.vn/. Cách này có thể không chuyên nghiệp nhưng cũng giải quyết được vấn đề tải hóa đơn hàng loạt từ trang trên và ghi xuống Excel theo định dạng dễ tổng hợp dữ liệu sau này.
- Tốc độ không nhanh như các ứng dụng python siêu nhanh.
- Chưa tìm được các link tải file .xml hoặc .html
- Chưa trải nghiệm qua các định dạng hóa đơn điện tử của các nhà cung cấp giải pháp khác nhau nên sẽ không đảm bảo chạy đúng 100%.
- Chưa biết cách tích hợp code vượt Captcha của (Python, C#..) vào VBA nên phải nhập Captcha thủ công.
Nói chung cái tool cũng giải quyết được việc tải hóa đơn hàng loạt :D .
Tôi sẽ upload file demo không khóa (có khóa cũng như không) sau vì code còn lộn xộn lắm. Các bạn xem qua và đóng góp cách xử lý tốt hơn, gọn hơn nhé.



*** 12/10/2024: Cập nhật sửa một đống lỗi.
*** 15/10/2024: Cập nhật sửa lỗi Null và nhập ngày tháng.
*** 16/10/2024: Thêm tính năng lưu User/Pass.
*** 20/10/2024: Sửa lỗi hiển thị ngày tháng, sửa và thêm một số code phụ trợ.
*** 28/10/2024: Sửa lấy hóa đơn từ máy tính tiền.
*** 07/11/2024: Sửa code trích xuất dữ liệu, thêm cột so sánh.
*** 13/11/2024: Dùng code của bạn Hesanbi để tự động nhập Captcha. Thêm code lấy link tra cứu của VNPT và BKAV.
Vẫn lấy cả hoá đơn ở trạng thái "Đã bị huỷ" bác ạ.
 
Upvote 0
Screenshot_1.jpg
Em có ý kiến này, để phục vụ tối ưu cho kế toán thì cần đầy đủ cột tiền thuế chi tiết của các mặt hàng, tuy nhiên có thể trên xml không có chi tiết nên tiền thuế đó đang để trống, hoặc tiền thuế có chênh lệch. Vậy bác có thể làm thêm việc tính lại tiền thuế chi tiết cho các dòng, số tiền thuế chênh lệch sẽ bù trừ vào dòng cuối cùng của hóa đơn không
 
Upvote 0
e tới form login rồi, nhưng không load được mã catcha lên được, nhờ các anh chỉ giáo với
 
Upvote 0
Upvote 0
Sau khi điền hoặc chọn MST, bạn thử di chuyển nháy chuột qua khung "Mật khẩu" rồi click "icon con mắt" thử xem được không.
vẫn được bạn nhé. chổ nhập mã captcha vẫn nhập được luôn.
1732868690358.png
Bài đã được tự động gộp:

Sau khi điền hoặc chọn MST, bạn thử di chuyển nháy chuột qua khung "Mật khẩu" rồi click "icon con mắt" thử xem được không.
mình làm đc rồi bạn nhé, thanks bạn
 
Upvote 0
Upvote 0
Bạn ơi, trường Mã HHDV chưa lấy được dữ liệu, trên dữ liệu là trường <MHHDVu>
 

File đính kèm

  • 1733132756714.png
    1733132756714.png
    48.5 KB · Đọc: 8
Upvote 0
file HTML tải về có cách nào khi bấm in ra nó như khi đang xem từ hoadondientu không bác,
 
Upvote 0
Bạn ơi, trường Mã HHDV chưa lấy được dữ liệu, trên dữ liệu là trường <MHHDVu>
Phần thông tin của hoá đơn chi tiết tôi lấy từ file json hiển thị thông tin như trên web, nó không thể hiện mã hhdvu. Chỉ có trong file XML tải về là có đầy đủ. Do đó muốn đủ thông tin thì trích xuất dữ liệu từ file XML.
Nếu lấy thông tin từ file XML không thì sẽ có nhiều hoá đơn bị bỏ qua do không có file XML.
 
Upvote 0

ongke0711 theo kinh nghiệm làm việc với hóa đơn của m thì gốc chuẩn đủ thông tin là file xml, nhưng mà việc đọc thông tin trên file xml là rất vất vả các phần mềm hiển thị thông tin trên file xml thì ko hẳn đã hiển thị chuẩn đủ chỉ tiêu
Mặc dù tổng cục thuế đã chuẩn hóa dữ liệu hóa đơn điện tử nhưng còn rất nhiều nghiệp vụ kinh tế trong thực tế không thể hiện được trên các mẫu hóa đơn nên nếu chỉ xem nguyên file dữ liệu có thể không thể hiện đúng bản chất của hóa đơn
nên theo m thì làm sao tải đc hóa đơn gốc từ nhà cung cấp và cả file xml thì mới chuẩn​

Bài đã được tự động gộp:

Tôi chỉ in được cái hoá đơn này thành 2 trang thôi bạn.

View attachment 306031
nếu tải thủ công thì in được thành 1
 
Upvote 0
ongke0711 theo kinh nghiệm làm việc với hóa đơn của m thì gốc chuẩn đủ thông tin là file xml, nhưng mà việc đọc thông tin trên file xml là rất vất vả các phần mềm hiển thị thông tin trên file xml thì ko hẳn đã hiển thị chuẩn đủ chỉ tiêu

Mặc dù tổng cục thuế đã chuẩn hóa dữ liệu hóa đơn điện tử nhưng còn rất nhiều nghiệp vụ kinh tế trong thực tế không thể hiện được trên các mẫu hóa đơn nên nếu chỉ xem nguyên file dữ liệu có thể không thể hiện đúng bản chất của hóa đơn​

nên theo m thì làm sao tải đc hóa đơn gốc từ nhà cung cấp và cả file xml thì mới chuẩn​

Bài đã được tự động gộp:


nếu tải thủ công thì in được thành 1
Anh nói quá chuẩn. chỉ cần file xml thôi đủ rồi. . tải được hóa đơn gốc thì càng tốt
Bài đã được tự động gộp:

Tôi chạy code tải nguyên file .zip mà khi in cũng hiển thị 2 trang, không biết setup như thế nào.
anh ongke711 cập nhật thêm file xml đi anh. em hóng chờ anh mõi mòn
 
Upvote 0
anh ongke711 cập nhật thêm file xml đi anh. em hóng chờ anh mõi mòn
Tại lo cơm áo gạo tiền quá nên tôi chưa làm tiếp…:D:D
Bài đã được tự động gộp:

ongke0711 theo kinh nghiệm làm việc với hóa đơn của m thì gốc chuẩn đủ thông tin là file xml, nhưng mà việc đọc thông tin trên file xml là rất vất vả các phần mềm hiển thị thông tin trên file xml thì ko hẳn đã hiển thị chuẩn đủ chỉ tiêu​

Mặc dù tổng cục thuế đã chuẩn hóa dữ liệu hóa đơn điện tử nhưng còn rất nhiều nghiệp vụ kinh tế trong thực tế không thể hiện được trên các mẫu hóa đơn nên nếu chỉ xem nguyên file dữ liệu có thể không thể hiện đúng bản chất của hóa đơn​

nên theo m thì làm sao tải đc hóa đơn gốc từ nhà cung cấp và cả file xml thì mới chuẩn​

Bài đã được tự động gộp:


nếu tải thủ công thì in được thành 1
Tôi cũng đang chuyển qua hướng tải file XML chứ dữ liệu json lấy từ web nó chỉ hiển thị dữ liệu cơ bản, còn thiếu những thông tin quan trọng như: mhhdvu, …
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi chạy code tải nguyên file .zip mà khi in cũng hiển thị 2 trang, không biết setup như thế nào.
m cũng có gặp nhiều trường hợp này, tải trên web trực tiếp về nó cũng thế, nhưng mà vào xem hóa đơn xong m ấy chuyột in không dùng phím thì tải về lại ok
Bài đã được tự động gộp:

Tại lo cơm áo gạo tiền quá nên tôi chưa làm tiếp…:D:D
Bài đã được tự động gộp:


Tôi cũng đang chuyển qua hướng tải file XML chứ dữ liệu json lấy từ web nó chỉ hiển thị dữ liệu cơ bản, còn thiếu những thông tin quan trọng như: mhhdvu, …
với số lượng nhỏ thì m tải xml xong rồi mang lên tổng cục đọc thì được nhưng số lượng lớn mà ko có file pdf thì rất bất tiện, nói chung cũng cần phải có cả 2
CÒn thực tế sai đúng mà có dùng AL quét thì cũng vẫn phải cần đến chủ dn với kế toán đối chiếu
Bài đã được tự động gộp:

m cũng có gặp nhiều trường hợp này, tải trên web trực tiếp về nó cũng thế, nhưng mà vào xem hóa đơn xong m ấy chuyột in không dùng phím thì tải về lại ok
Bài đã được tự động gộp:


với số lượng nhỏ thì m tải xml xong rồi mang lên tổng cục đọc thì được nhưng số lượng lớn mà ko có file pdf thì rất bất tiện, nói chung cũng cần phải có cả 2
CÒn thực tế sai đúng mà có dùng AL quét thì cũng vẫn phải cần đến chủ dn với kế toán đối chiếu
:D nếu mà có tự động tải hóa đơn từ nhà cung cấp về khi kích vào nữa thì tuyệt với hihihi
 
Lần chỉnh sửa cuối:
Upvote 0
chứ dữ liệu json lấy từ web nó chỉ hiển thị dữ liệu cơ bản, còn thiếu những thông tin quan trọng như: mhhdvu, …
Sau khi anh gửi yêu cầu với API:
query/invoices/[purchase và sold]
Json trả về, gửi yêu cầu từng hóa đơn đến API sau sẽ có được đầy đủ thông tin hơn tệp XML:

Hệ thống không cho phép gửi quá nhiều yêu cầu trong một khoảng thời gian, khoảng 20 yêu cầu trong vòng 5 giây, chính vì vậy cần các quản nghỉ giữa các lần tải.
 
Upvote 0
Sau khi anh gửi yêu cầu với API:

Json trả về, gửi yêu cầu từng hóa đơn đến API sau sẽ có được đầy đủ thông tin hơn tệp XML:


Hệ thống không cho phép gửi quá nhiều yêu cầu trong một khoảng thời gian, khoảng 20 yêu cầu trong vòng 5 giây, chính vì vậy cần các quản nghỉ giữa các lần tải.
Anh có kiêtm tra vài hoá đơn từ cái api chi tiết rồi, nó không có mahhdvu trong khi file xml thì lại có.
 
Upvote 0
Anh gửi 2 file của 1 hoá đơn: json và xml. File XML là có MHHDVu còn dữ liệu từ json thì không.

Chắc do bên IT nguồn họ không cho khóa MHHDVu vào json trả về vì nó không cần thiết cho giao diện hiển thị trên web.
Vậy bắt buộc tải cả hai về để tiêu chuẩn hóa dữ liệu để lưu trữ. Có khi họ cấp API riêng cho các tổ chức giải pháp tải dữ liệu mà mình không biết. Chứ không phải API từ web nguồn.
 
Upvote 0
Các bác cho hỏi nếu mình muốn sử dụng link tra cứu hóa đơn và mã tra cứu cho từng MST người bán khác nhau với cùng một nhà cung cấp giải pháp hóa đơn thì phần Select Case, và sheet Linktracuu mình thêm như thế nào: Vì cùng nhà cung cấp giải pháp sẽ có một số doanh nghiệp lớn sử dụng tên miền con để cấp riêng tài khoản truy cập để nhận hóa đơn mua vào. (Ví dụ như Vingroup sẽ sử dụng tên miền : https://e-invoice-tt78.vingroup.net/ để tra hóa đơn với cùng nhà cung cấp giải pháp là VNPT có MST NCCGP là 0100684378). Thank all!
 
Upvote 0
Cũng có file XML mà chẳng có [MHHDVU]. Nói chung là người bán hoặc người mua không nhập liệu thì nguồn nào (xml, json) cũng có thể thiếu :confused:

Screenshot 2024-12-06 at 15.22.29.png
 
Upvote 0
@ongke0711 danh sách các nhà cung cấp ở bài viết của em chỉ là tham khảo, trong json và xml họ sẽ có các link tra cứu, anh cần thêm đoạn mã để tách lấy link tra cứu đó, thay vì so sách mã số thuế để lấy link. Vì link tra cứu đó có thể là link tra cứu trực tiếp.

Anh xem trong các hóa đơn các từ khóa tra cứu link là gì, cũng như từ khóa mã số bí mật, có nhiều từ khóa khác nhau.
 
Upvote 0
Hóng các hàng nóng từ cao thủ, cuối năm rồi cần công cụ để kiểm tra dữ liệu huhu
 
Upvote 0
Em đăng nhập mà bị lỗi như vậy, mong các anh chị giúp em ạ
 

File đính kèm

  • LOI.jpg
    LOI.jpg
    41.9 KB · Đọc: 40
Upvote 0
Bác chủ ngâm cứu làm tương tự một file kết nối với thuedientu tải hàng loạt tờ khai các năm xong đổ số liệu ra để tổng hợp so sánh nữa thì tuyệt, nhất là tờ khai qt TNCN bị ẩn đi ko cho tải!!
 
Upvote 0
Mình xin chia sẻ thông tin để Tra cứu với các Hoá đơn Xăng dầu của Petrolimex nhưng tra xml thì MSTTCGP lại là 100684378 (Tập Đoàn Bưu chính viễn thông Việt Nam - VNPT)
Trang tra cứu: https://hoadon.petrolimex.com.vn/SearchInvoicebycode/Index
Tra cứu theo Fkey
Gửi ad cập nhật để hoàn thiện File
Rất cám ơn ad đã thực hiện File
 
Upvote 0
Tra cứu trên Trang Hoá đơn điện từ từ ngày 01/01/2024 đến ngày 31/01/2024 (Hoá đơn có mã) ra 36 kết quả
Nhưng khi lấy từ File thì chỉ ra 35 kết quả
Nhờ các Bác xem lại lỗi
Xin cám ơn.
 

File đính kèm

  • 1734667805864.png
    1734667805864.png
    77.5 KB · Đọc: 28
  • 1734667845128.png
    1734667845128.png
    26.7 KB · Đọc: 24
Upvote 0
Tra cứu trên Trang Hoá đơn điện từ từ ngày 01/01/2024 đến ngày 31/01/2024 (Hoá đơn có mã) ra 36 kết quả
Nhưng khi lấy từ File thì chỉ ra 35 kết quả
Nhờ các Bác xem lại lỗi
Xin cám ơn.
Có thể trong quá trình ghi từng hoá đơn, có hoá đơn phát sinh lỗi nên code bỏ qua dòng đó, tiếp tục ghi hoá đơn khác. Để rảnh tôi xem lại nhé.
 
Upvote 0
Tra cứu trên Trang Hoá đơn điện từ từ ngày 01/01/2024 đến ngày 31/01/2024 (Hoá đơn có mã) ra 36 kết quả
Nhưng khi lấy từ File thì chỉ ra 35 kết quả
Nhờ các Bác xem lại lỗi
Xin cám ơn.
Này bác nên dò thủ công coi thiếu hóa đơn nào, nó có gì đặc biệt không thì mới biết được lý do chính sác. Ko thì bác tải lại 1 lần nữa coi có kết xuất đủ không!
 
Upvote 0
Này bác nên dò thủ công coi thiếu hóa đơn nào, nó có gì đặc biệt không thì mới biết được lý do chính sác. Ko thì bác tải lại 1 lần nữa coi có kết xuất đủ không!
Tôi đã dò lại vài lần lúc đủ lúc không và đều chỉ thiếu 1 Hoá đơn này
 

File đính kèm

Upvote 0
Tôi đã dò lại vài lần lúc đủ lúc không và đều chỉ thiếu 1 Hoá đơn này
Mình có dùng 1 tool khác để tải hóa đơn thì một số hóa đơn của VETC nó bị lỗi tải, dù tải kiểu gì cũng không được. Nhưng được cái thì tool kia tải lỗi thì nó vẫn chèn 1 dòng báo lỗi trong danh sách file nên vẫn biết để mà mò tay lại.
 
Upvote 0
Mình xin chia sẻ thông tin để Tra cứu với các Hoá đơn Xăng dầu của Petrolimex nhưng tra xml thì MSTTCGP lại là 100684378 (Tập Đoàn Bưu chính viễn thông Việt Nam - VNPT)
Trang tra cứu: https://hoadon.petrolimex.com.vn/SearchInvoicebycode/Index
Tra cứu theo Fkey
Gửi ad cập nhật để hoàn thiện File
Rất cám ơn ad đã thực hiện File
Tôi nghĩ vụ link tra cứu phải tự nhập thủ công cho từng MST người bán vì nó không có link tra cứu chung. Phải tìm link dựa trên 1 thông tin là MSTTCGP + MSTNB thì mới lấy link đúng được.

Ví dụ:
Screenshot 2024-12-23 at 14.22.53.png
 
Upvote 0
Hữu ích quá, mình cũng là một kế toán, cảm ơn tác giả rất nhiều
 
Upvote 0

Bài viết mới nhất

Back
Top Bottom