Tải hóa đơn điện tử (https://hoadondientu.gdt.gov.vn/) Excel Vba (6 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,332
Được thích
3,150
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:
Tạm thời tôi cũng bó tay. Bạn chuyển ngày hệ thống sang kiểu English (mm/dd/yyyy) xài tạm trước vậy :D .

View attachment 304829

Cái mình thu về thì 1 loại định dạng

1729133241033.png
Em tưởng chỉ cần thêm
Mã:
Sub ghiExcel_TongHop(ByVal jsontext As String, row As Long, ByVal loaiHD As Long, sSTT As Long)
                    ws.Cells(row, c + 2).Value = ISODATE(item(arrColName(c)))
                    ws.Cells(row, c + 2).NumberFormat = "dd/mm/yyyy"
End Sub
tương tự cho sheet mua bán ?

1729135089121.png
 
Upvote 0
Tạm thời tôi cũng bó tay. Bạn chuyển ngày hệ thống sang kiểu English (mm/dd/yyyy) xài tạm trước vậy :D .
Anh phải làm như thế này, định dạng cột bảng Excel là ngày rồi trong mảng cho giá trị định dạng là chuỗi kiểu "yyyy/mm/dd" để ghi. Thay đổi hệ thống là sai lầm tai hại.
 
Upvote 0
File này còn cái lỗi tôi chưa bẫy là có khi có 1 khoảng thời gian nào đó, kết nối web bị lỗi, không có dữ liệu trả về. Thường khi chạy nhiều tháng một lúc sẽ phát sinh lỗi này.
Bài trước bác Tuân có đề xuất việc lưu các đoạn bị lỗi rồi sau đó quay lại kết nối lấy dữ liệu. Để có thời gian tôi sẽ xử lý tiếp. :)
 
Upvote 0
File này còn cái lỗi tôi chưa bẫy là có khi có 1 khoảng thời gian nào đó, kết nối web bị lỗi, không có dữ liệu trả về. Thường khi chạy nhiều tháng một lúc sẽ phát sinh lỗi này.
Bài trước bác Tuân có đề xuất việc lưu các đoạn bị lỗi rồi sau đó quay lại kết nối lấy dữ liệu. Để có thời gian tôi sẽ xử lý tiếp. :)
anh ONGKE có thể thêm cột chi tiết hàng hóa từng hóa đơn được không anh. nếu có thì quá đỉnh luôn.
 
Upvote 0
Upvote 0
EM BỊ LỖI LỆCH DÒNG KHI TẢI BÁN RA. LỆCH TỪ TÊN NGƯỜI MUA
Bài đã được tự động gộp:

Em xin góp ý: Có thể thêm cột hiển thị tiền thuế trên hóa đơn và cột để đối chiếu số chênh lệch giữa thuế trên hóa đơn và tổng thuế tự tính.
 

File đính kèm

  • 1729478410660.png
    1729478410660.png
    186.9 KB · Đọc: 24
Lần chỉnh sửa cuối:
Upvote 0
Phần mua vào không lấy được "Tổng cục thuế đã nhận hóa đơn có mã khởi tạo từ máy tính tiền" hả anh?
Tôi có đưa mục này vào comboBox luôn rồi mà bạn. Không ra kết quả sao bạn?

Screen Shot 2024-10-21 at 09.42.37.png

Tôi kiểm tra 600 mấy dòng mà không thấy dòng bị lỗi ngày. Quái thật.. :D .
Screen Shot 2024-10-21 at 09.59.05.png
 
Lần chỉnh sửa cuối:
Upvote 0
Mua bình thường còn tải bán thì lệch ạ
:) Bạn có xóa bớt cột gì không? hay trên máy tôi nó sợ nên nó hiển thị đúng nhỉ...:D

Screen Shot 2024-10-21 at 10.15.01.png

Còn việc thêm cột thì bạn cho cái ví dụ chứ tôi không trong ngành kế toán nên không biết đó là cột gì (tên cột trong file xml) để trích xuất.
 
Upvote 0
:) Bạn có xóa bớt cột gì không? hay trên máy tôi nó sợ nên nó hiển thị đúng nhỉ...:D

View attachment 304916

Còn việc thêm cột thì bạn cho cái ví dụ chứ tôi không trong ngành kế toán nên không biết đó là cột gì (tên cột trong file xml) để trích xuất.
Dạ em tải về dùng liền luôn chưa chỉnh sửa gì cả để e tải lại file vậy. cảm ơn anh nha công cụ rất hay.
 
Upvote 0
Tôi có đưa mục này vào comboBox luôn rồi mà bạn. Không ra kết quả sao bạn?

View attachment 304910

Tôi kiểm tra 600 mấy dòng mà không thấy dòng bị lỗi ngày. Quái thật.. :D .
View attachment 304911
Không ra kết quả của hóa đơn từ MTT á anh ạ, em cũng bị, thử tách tải riêng cũng không có
- Với em đang muốn thêm cột tình trạng hóa đơn bên chi tiết để đối chiếu kiểm tra cuối năm thì sửa code như nào được anh nhỉ, mong anh hướng dẫn ạ
 
Upvote 0
Dạ em tải về dùng liền luôn chưa chỉnh sửa gì cả để e tải lại file vậy. cảm ơn anh nha công cụ rất hay.
:D Bạn chờ một thời gian nữa sẽ có bản của người khác chuyên nghiệp hơn của tôi đó. File của tôi chỉ là cơ bản thôi nên nó còn lỗi tùm lum.
 
Upvote 0
:D Bạn chờ một thời gian nữa sẽ có bản của người khác chuyên nghiệp hơn của tôi đó. File của tôi chỉ là cơ bản thôi nên nó còn lỗi tùm lum.
:D Bạn chờ một thời gian nữa sẽ có bản của người khác chuyên nghiệp hơn của tôi đó. File của tôi chỉ là cơ bản thôi nên nó còn lỗi tùm lum.
Như vầy là quá ok rồi anh, em hay đi nhập liệu dạo thì không thể sử dụng phần mềm chuyên dụng được vì quá tốn kém, tải được đầu vào hàng loạt như vậy tiết kiệm thời gian rất nhiều
 
Upvote 0
Không ra kết quả của hóa đơn từ MTT á anh ạ, em cũng bị, thử tách tải riêng cũng không có
- Với em đang muốn thêm cột tình trạng hóa đơn bên chi tiết để đối chiếu kiểm tra cuối năm thì sửa code như nào được anh nhỉ, mong anh hướng dẫn ạ
- Tôi sẽ thêm cột tình trạng hóa đơn bên sheet chi tiết.
- Do mấy cái MST tôi test không có cái mẫu "từ máy tính tiền" nên chỉ code theo qui luật tương tự các kết quả xử lý khác. Để từ từ kiếm MST tôi kiểm tra xem nó chạy như thế nào.
 
Upvote 0
- Tôi sẽ thêm cột tình trạng hóa đơn bên sheet chi tiết.
- Do mấy cái MST tôi test không có cái mẫu "từ máy tính tiền" nên chỉ code theo qui luật tương tự các kết quả xử lý khác. Để từ từ kiếm MST tôi kiểm tra xem nó chạy như thế nào.
em gửi hđ mẫu ra vào của máy tính tiền
 

File đính kèm

Upvote 0
- Tôi sẽ thêm cột tình trạng hóa đơn bên sheet chi tiết.
- Do mấy cái MST tôi test không có cái mẫu "từ máy tính tiền" nên chỉ code theo qui luật tương tự các kết quả xử lý khác. Để từ từ kiếm MST tôi kiểm tra xem nó chạy như thế nào.
Tra hóa đơn điện tử từ máy tính tiền phải tra theo Tab khác, nên chọn thông thường trong ComboBox xẽ không hiển thị được bác. (Cả hóa đơn đầu ra và đầu vào đều phải chọn riêng qua Tab khác).!
 

File đính kèm

  • Hướng dẫn tra cứu hóa đơn khởi tạo từ máy tính tiền.png
    Hướng dẫn tra cứu hóa đơn khởi tạo từ máy tính tiền.png
    118.1 KB · Đọc: 22
Upvote 0
Tôi có đưa mục này vào comboBox luôn rồi mà bạn. Không ra kết quả sao bạn?

View attachment 304910

Tôi kiểm tra 600 mấy dòng mà không thấy dòng bị lỗi ngày. Quái thật.. :D .
View attachment 304911
Dạ không ra được hóa đơn từ máy tính tiền, dù vẫn có mục 8 - Tổng cục thuế đã nhận hóa đơn có mã khởi tạo từ máy tính tiền ở sheet LinkTraCuu á anh.
 
Upvote 0
Cảm ơn bạn, tôi không để ý chỗ này. Để tôi sửa lại xem như thế nào.
Mình có cách nào tự người dùng tự bổ sung vào không? để thuận tiện tải và tra cứu hóa đơn gốc, nhiều hóa đơn mà mình chưa biết đến. Cám ơn ongke0711 rất nhiều đã lắng nghe, ngày càng hoàn thiện hơn
- VETC (Hóa đơn không mã, trạm thu phí) có mã trong File XML và Link tra cứu https://tracuuhoadon.vetc.com.vn/
- MSTTCGP - 102519041thì tải File XML lên trang https://ihoadon.vn/kiem-tra/?lang=vn là tải được hóa đơn gốc
- Hóa đơn Chailease (ngân hàng vay tín chấp) thì ta gợi ý Link tra cứu https://ebill.chaileasetrade.com.vnhttps://ebill.chailease.com.vn cái bắt buộc phải có tài khoản mới tải được
...
 
Upvote 0
@ongke0711 có vẻ như ứng dụng anh viết có nhiều vấn đề.
Nhưng vấn đề em thấy lớn nhất là cần giảm tải đến Server dữ liệu. Nếu có 100, 200, người dùng, Server tạm xử lý được.
Nhưng 5000, 10000 người dùng, thì bên Server họ sẽ tính đến phương án chặn IP những người dùng gửi quá nhiều yêu cầu, nếu quá trình còn tiếp diễn.

Phương án tải dữ liệu mà không lưu trữ và xét lại ngày nào sẽ cần tải thêm, thì sẽ gây tốn kém cho nguồn cấp.
Trang hệ thống hóa đơn điện tử này hơi keo kiệt trong vấn đề về băng thông. Và thuật toán mã nguồn server của họ cũng có vấn đề cho việc trả về dữ liệu liên tục.


@dinhhuy thiết đặt như danh sách này là cách bạn muốn. Nhưng để tách được dữ liệu như danh sách này cần tạo giải thuật hơi rối một tí. Với danh sách này bạn có thể tự động điền thêm, khi có các hóa đơn mới chưa biết.

Đặt cột
Cột DS
Tiêu đề
Giá trị
Tiêu đề chính
key1
key2
key3
1
STT
1​
[STT]​
6
MST Nhà cung cấp
11111111​
nbmst​
2
Ký hiệu mẫu số HĐ
1​
khmshdon​
3
Ký hiệu hóa đơn
C11AAA​
khhdon​
4
Số hóa đơn
11111​
shdon​
14
Cơ quan thuế
7404​
cqt​
cttkhac​
ID mẫu hóa đơn​
Mua vào​
InvoiceTemplateID​
Là giảm thuế​
Mua vào​
IsTaxReduction​
21
Là giảm thuế 43​
Mua vào​
IsTaxReduction43​
ID tham chiếu​
Mua vào​
RefID​
Mô tả giảm thuế​
Mua vào​
TaxReductionDescription​
22
Số tiền Chữ số thập phân​
Mua vào​
AmountDecimalDigits​
Số tiền Chữ số thập phân OC​
Mua vào​
AmountOCDecimalDigits​
Chữ số thập phân hệ số​
Mua vào​
CoefficientDecimalDigits​
23
Chữ số thập phân tỷ giá hối đoái​
Mua vào​
ExchangRateDecimalDigits​
Tiền tệ chính​
Mua vào​
MainCurrency​
Số lượng Chữ số thập phân​
Mua vào​
QuantityDecimalDigits​
Đơn giá Chữ số thập phân​
Mua vào​
UnitPriceDecimalDigits​
Đơn giá OC Chữ số thập phân​
Mua vào​
UnitPriceOCDecimalDigits​
ID ứng dụng​
Mua vào​
AppID​
ID giao dịch​
Mua vào​
TransactionID​
16
Đơn vị tiền tệ
VND​
dvtte​
15
Hóa đơn
1​
hdon​
Hồ Sơ gốc có mã
xxxxxxxx-5719-456d-b949-7b58fd55670d​
hsgcma​
Hồ Sơ gốc
xxxxxxxx-f0d1-420b-ad59-81bc6bc28164​
hsgoc​
Hình thức hóa đơn
1​
hthdon​
Hình thức thanh toán
9​
htttoan​
Id
xxxxxxx-4283-ad2b-bfd4e0a162f5​
id​
Id Thuê Bao
idtbao​
Kí hiệu đơn
khdon​
Ký hiệu hóa đơn gốc
khhdgoc​
Ký hiệu mã số hóa đơn gốc
khmshdgoc​
Loại hóa đơn gốc
lhdgoc​
Mã hóa đơn
0041612B9Dxxxxxxxx4497C89C6E69CFA8F9​
mhdon​
Mã thông điệp
mtdiep​
Mã thông điệp đối chiếu
V01001091xxxxxxx3063644739A6AC644F08BB106​
mtdtchieu​
8
Địa chỉ người bán
Số 51/9 Đại Lộ xxxxx, Tổ 15, Khu phố xxxxx, Phường xxxxx, Thành phố xxxx , Tỉnh xxxx, Việt Nam​
nbdchi​
Hợp đồng kinh tế ngày (Người bán)
nbhdktngay​
Căn cứ hợp đồng kinh tế số (Người bán)
nbhdktso​
Hợp đồng số (Người bán)
nbhdso​
Lệnh điều chuyển nội bộ
nblddnbo​
Phương tiện vận chuyển (Người bán )
nbptvchuyen​
Số tài khoản người bán
2xxxx770002​
nbstkhoan​
7
Nhà cung cấp
CÔNG TY TNHH MTV xxxxxxx​
nbten​
Người bán tiếp nhận hàng
xxxxxxxxxxxxx​
nbtnhang​
Tên người vận chuyển (Người bán)
nbtnvchuyen​
[]​
nbttkhac​
24
Quận, huyện người bán​
Bán ra
Quận, huyện người bán​
25
Tỉnh/Thành phố người bán​
Bán ra
Tỉnh/Thành phố người bán​
Mã quốc gia người bán​
Bán ra
Mã quốc gia người bán​
Link tra cứu người bán​
Bán ra
Link tra cứu người bán​
Tên ngân hàng công ty có chi nhánh​
Mua vào​
CompanyBankNameWithBranch​
24
Địa chỉ người bán​
Mua vào​
SellerAddress​
25
Tài khoản ngân hàng của người bán​
Mua vào​
SellerBankAccount​
Tên ngân hàng của người bán​
Mua vào​
SellerBankName​
Số điện thoại của người bán​
Mua vào​
SellerPhoneNumber​
Ngày cấp mã
14/09/2024​
ncma​
Ngày cập nhật
14/09/2024​
ncnhat​
Người cập nhật
abc​
ngcnhat​
Ngày ký
14/09/2024​
nky​
Địa chỉ người mua
Số x, ấp x, Xã x, Huyện x, Tỉnh x, Việt Nam​
nmdchi​
Mã số thuế người mua
1111111111​
nmmst​
Số tài khoản người mua
nmstkhoan​
Tên người mua
xxxxxxxxx​
nmten​
Người mua tiếp nhận hàng
nmtnhang​
Họ tên người mua
nmtnmua​
[]​
nmttkhac​
26
Số fax người mua​
Bán ra
Số fax người mua​
Quận Huyện người mua​
Bán ra
Quận Huyện người mua​
Tỉnh/Thành phố người mua​
Bán ra
Tỉnh/Thành phố người mua​
Mã quốc gia người mua​
Bán ra
Mã quốc gia người mua​
Loại giấy tờ người mua​
Bán ra
Loại giấy tờ người mua​
Số giấy tờ người mua​
Bán ra
Số giấy tờ người mua​
Ngày sinh người mua​
Bán ra
Ngày sinh người mua​
26
Tài khoản thư điện tử SIDI​
Mua vào​
AccountObjectEmailAddressSIDI​
Ngày lập
14/09/2024​
ntao​
Ngày tiếp nhận
14/09/2024​
ntnhan​
Phiên bản
2.0.1​
pban​
Phương thức gửi
1​
ptgui​
Số hóa đơn gốc
shdgoc​
Tính chất
1​
tchat​
5
Thời điểm lập hóa đơn
14/09/2024​
tdlap​
17
Tỷ giá
1.0​
tgia​
9
Tổng tiền chưa thuế
67,442,708.0​
tgtcthue​
10
Tổng tiền thuế
5,395,417.0​
tgtthue​
Tổng tiền thanh toán bằng chữ
Ba mươi hai triệu tám trăm sáu mươi sáu nghìn năm trăm sáu mươi đồng​
tgtttbchu​
12
Tổng tiền thanh toán
5,395,417.0​
tgtttbso​
Tên hóa đơn
HÓA ĐƠN ĐIỆN TỬ GIÁ TRỊ GIA TĂNG (ND123 - TT78)​
thdon​
Tháng lập
202407​
thlap​
thttlphi​
thttltsuat​
27
Thuế suất​
tsuat​
28
Tiền​
thtien​
Tiền thuế​
tthue​
Giá trị thuế suất​
gttsuat​
HÓA ĐƠN ĐIỆN TỬ GIÁ TRỊ GIA TĂNG (ND123 - TT78)​
tlhdon​
11
Tổng tiền chiết khấu thương mại
0​
ttcktmai​
18
Trạng thái hóa đơn
Hóa đơn mới​
tthai​
Thông tin khác​
[]​
ttkhac​
Biển số​
Bán ra
Biển số​
29
TG xuất​
Bán ra
TG xuất​
Tuyến​
Bán ra
Tuyến​
Dịch vụ​
Bán ra
Dịch vụ​
Số đơn hàng​
Bán ra
Số đơn hàng​
Ghi chú​
Bán ra
Ghi chú​
Trạng thái thanh toán​
Bán ra
Trạng thái thanh toán​
Mã số bí mật​
Bán ra
Mã số bí mật​
Ghi chú hóa đơn​
Bán ra
Ghi chú hóa đơn​
29
Danh sách tên cổ phiếu​
1​
Mua vào​
ListStockName​
1​
tttbao​
ttttkhac​
30
Tổng tiền thuế tiêu thụ đặc biệt​
1,000,000.0​
Bán ra
Tổng tiền thuế tiêu thụ đặc biệt​
31
Tổng tiền phí​
1,000,000.0​
Bán ra
Tổng tiền phí​
30
Tổng số tiền​
1,000,000.0​
Mua vào​
TotalAmount​
Tổng số tiền bằng chữ (EN)​
Mua vào​
TotalAmountInWordsByENG​
31
Tổng số tiền chưa VAT​
1,000,000.0​
Mua vào​
TotalAmountWithoutVAT​
Tổng số tiền chưa VATOC​
1,000,000.0​
Mua vào​
TotalAmountWithoutVATOC​
Tổng số tiền chiết khấu​
1,000,000.0​
Mua vào​
TotalDiscountAmount​
Tổng số tiền chiết khấu OC​
1,000,000.0​
Mua vào​
TotalDiscountAmountOC​
Tổng số tiền bán​
1,000,000.0​
Mua vào​
TotalSaleAmount​
Tổng số tiền bán OC​
1,000,000.0​
Mua vào​
TotalSaleAmountOC​
Tổng số tiền VAT​
1,000,000.0​
Mua vào​
TotalVATAmount​
19
Kết quả kiểm tra hóa đơn
Đã cấp mã hóa đơn​
ttxly​
1111111111​
tvandnkntt​
Mã hồ sơ
mhso​
1​
ladhddt​
Mã khách hàng
mkhang​
Số điện thoại người bán
1111111111​
nbsdthoai​
Địa chỉ thư điện tử người bán
nbdctdtu​
FAX Người bán
nbfax​
Website người bán
nbwebsite​
Thông tin chung (Người bán)
nbcks​
32
Bên ký​
Subject​
Số serial​
SerialNumber​
Nhà phát hành​
14/09/2024​
Issuer​
Không quá​
14/09/2024​
NotAfter​
Không trước​
14/09/2024​
NotBefore​
Ngày ký​
14/09/2024​
SigningTime​
Số điện thoại người mua
nmsdthoai​
Địa chỉ thư điện tử người mua
nmdctdtu​
CCCD người mua
nmcmnd​
nmcks​
0​
bhphap​
hddunlap​
gchdgoc​
tbhgtngay​
bhpldo​
bhpcbo​
bhpngay​
Thời điểm lập hóa đơn gốc
tdlhdgoc​
13
Tổng tiền phí
1,000,000.0​
tgtphi​
Ủy nhiệm
unhiem​
Mã số thuế đơn vị nhận ủy nhiệm lập hóa đơn
mstdvnunlhdon​
Tên đơn vị nhận ủy nhiệm lập hóa đơn
tdvnunlhdon​
MSĐVCQHVNS (Người bán)
nbmdvqhnsach​
Bán theo Quyết định số
nbsqdinh​
nbncqdinh​
nbcqcqdinh​
Hình thức bán
nbhtban​
MSĐVCQHVNS (Người mua)
nmmdvqhnsach​
Địa điểm vận chuyển đến
nmddvchden​
Thời gian vận chuyển: Từ ngày
nmtgvchdtu​
Thời gian vận chuyển: Đến ngày
nmtgvchdden​
Tên người bán
nbtnban​
Địa chỉ đơn vị nhận ủy nhiệm lập hóa đơn
dcdvnunlhdon​
Số bảng kê
dksbke​
Ngày bảng kê
14/09/2024​
dknlbke​
Hình thức thanh toán
TM/CK​
thtttoan​
20
Mã số thuế tổ chức giải pháp
1111111111​
msttcgp​
CƠ QUAN THUẾ
cqtcks​
33
Bên ký CQT​
Subject​
Số serial CQT​
SerialNumber​
Nhà phát hành CQT​
14/09/2024​
Issuer​
Không quá CQT​
14/09/2024​
NotAfter​
Không trước CQT​
14/09/2024​
NotBefore​
Ngày ký CQT​
14/09/2024​
SigningTime​
Ghi chú
gchu​
kqcht​
HDNTGia
hdntgia​
Tổng giảm trừ không chịu thuế
tgtkcthue​
Tổng giảm trừ khác
tgtkhac​
Số hộ chiếu người mua
nmshchieu​
Ngày cấp hộ chiếu người mua
nmnchchieu​
Ngày hết hạn hộ chiếu người mua
nmnhhhchieu​
Quốc tịch
nmqtich​
Kiêm Tờ Khai Hoàn Thuế
ktkhthue​
13
hdhhdvu
idhdon​
idhdon​
id​
id​
Loại thuế suất​
ltsuat​
Số tiền bằng chữ​
stbchu​
1
STT​
1​
stt​
2
Tính chất​
tchat​
3
Tên hàng hóa dịch vụ​
XXXX​
ten​
4
Đơn vị tính​
m3​
dvtinh​
5
Số lượng​
6​
sluong​
6
Đơn giá​
1,000,000.0​
dgia​
7
Số tiền chiết khấu​
1,000,000.0​
stckhau​
8
Thuế suất​
tsuat​
9
Thành tiền​
1,000,000.0​
thtien​
10
Thành tiền chưa thuế​
1,000,000.0​
thtcthue​
Tỷ lệ chiết khấu​
tlckhau​
Tiền thuế​
tthue​
Sắp xếp​
sxep​
Đơn vị tiền tệ​
dvtte​
Tỷ giá​
tgia​
ttkhac​
Số tiền​
Mua vào
Amount​
Số tiền sau thuế tiêu thụ đặc biệt​
1,000,000.0​
Mua vào
AmountAfterExciseTax​
Số tiền sau thuế tiêu thụ đặc biệt OC​
1,000,000.0​
Mua vào
AmountAfterExciseTaxOC​
Số tiền OC​
1,000,000.0​
Mua vào
AmountOC​
12
Số tiền chưa có VATOC​
1,000,000.0​
Mua vào
AmountWithoutVATOC​
13
Số tiền chiết khấu​
1,000,000.0​
Mua vào
DiscountAmount​
Tỷ giá chuyển đổi chính​
Mua vào
MainConvertRate​
Số lượng chính​
Mua vào
MainQuantity​
Tên đơn vị chính​
Mua vào
MainUnitName​
Đơn giá chính​
1,000,000.0​
Mua vào
MainUnitPrice​
Loại hàng​
Mua vào
RowType​
Thứ tự sắp xếp​
Mua vào
SortOrder​
Đơn giá​
Mua vào
UnitPrice​
Đơn giá sau thuế tiêu thụ đặc biệt​
Mua vào
UnitPriceAfterExciseVAT​
11
Số tiền thuế GTGT​
Mua vào
VATAmount​
Số tiền thuế GTGT OC​
Mua vào
VATAmountOC​
Đơn giá sau thuế tiêu thụ đặc biệt​
Mua vào
UnitPriceAfterExciseVAT​
Số tiền sau thuế tiêu thụ đặc biệt OC​
Mua vào
AmountAfterExciseTaxOC​
Số tiền sau thuế tiêu thụ đặc biệt Thuế​
Mua vào
AmountAfterExciseTax​
11
Số lô​
Bán ra
Số lô​
Hạn dùng​
Bán ra
Hạn dùng​
Ghi chú dòng​
Bán ra
Ghi chú dòng​
12
Thành tiền thanh toán của hàng hóa​
1,000,000.0​
Bán ra
Thành tiền thanh toán của hàng hóa​
13
Tiền thuế dòng (Tiền thuế GTGT)​
1,000,000.0​
Bán ra
Tiền thuế dòng (Tiền thuế GTGT)​
Chiết khấu lần 2​
Bán ra
Chiết khấu lần 2​
Mã QR
qrcode​
ttmstten​
Loại áp dụng hóa đơn điện tử
ladhddtten​
Hóa đơn xuất khẩu
hdxkhau​
Hóa đơn dành cho khu phi thuế quan
hdxkptquan​
hdgktkhthue​
hdonLquans​
FALSE​
tthdclquan​
pdndungs​
hdtbssrses​
Hóa đơn trùng
hdTrung​
Là hóa đơn trùng
isHDTrung​
 
Upvote 0
Vâng, em thấy tốt nhất là cử tải file XML hoặc nếu được thì lấy thêm cả file HTML về, rồi muốn lấy thông tin gì thì gắp từ trong file XML ra cho khỏe các anh ạ.
 
Upvote 0
Vâng, em thấy tốt nhất là cử tải file XML hoặc nếu được thì lấy thêm cả file HTML về, rồi muốn lấy thông tin gì thì gắp từ trong file XML ra cho khỏe các anh ạ.
Nguồn không trả về XML cho các hóa đơn Tổng cục thuế đã nhận không mã hoặc có thể với các hóa đơn khác. API thì có trả về thông tin trong json.
 
Upvote 0
Nguồn không trả về XML cho các hóa đơn Tổng cục thuế đã nhận không mã hoặc có thể với các hóa đơn khác. API thì có trả về thông tin trong json.
Dữ liệu trong file json có khoảng 135 trường phải không anh, nếu vậy thì các anh cứ ghi tất cả dữ liệu đó ra Excel, sau này ai cần dữ liệu nào thì tự lấy chứ mấy anh cũng không cần phải lựa giữ trường nào, bỏ trường nào làm gì cho mất công.
Năm ngoái em có làm vụ tải hóa đơn điện tử với anh Nguyễn Đức Thanh, sản phẩm sau cùng thì cơ bản có 2 lựa chọn khi tải, 1 là tải file XML (Cứ hóa đơn nào có XML thì tải về hết), 2 là tải dữ liệu về Excel (Có bao nhiêu dữ liệu ghi vào 1 file Excel hết). Dữ liệu trong file Excel nó sẽ đầy đủ các loại hóa đơn hơn, ai muốn tra cứu thì tra, tuy nhiên về độ chi tiết thông tin của 1 hóa đơn thì XML sẽ toàn vẹn và đủ thông tin hơn, ví dụ như mã tra cứu chỉ có XML mới có.
 
Upvote 0
Rất hay và ý nghĩa nhưng Mình tải thử 21 ngày nó bị lỗi này
 

File đính kèm

  • 1729500107419.png
    1729500107419.png
    7.3 KB · Đọc: 47
Upvote 0
Dữ liệu trong file json có khoảng 135 trường phải không anh, nếu vậy thì các anh cứ ghi tất cả dữ liệu đó ra Excel, sau này ai cần dữ liệu nào thì tự lấy chứ mấy anh cũng không cần phải lựa giữ trường nào, bỏ trường nào làm gì cho mất công.
Năm ngoái em có làm vụ tải hóa đơn điện tử với anh Nguyễn Đức Thanh, sản phẩm sau cùng thì cơ bản có 2 lựa chọn khi tải, 1 là tải file XML (Cứ hóa đơn nào có XML thì tải về hết), 2 là tải dữ liệu về Excel (Có bao nhiêu dữ liệu ghi vào 1 file Excel hết). Dữ liệu trong file Excel nó sẽ đầy đủ các loại hóa đơn hơn, ai muốn tra cứu thì tra, tuy nhiên về độ chi tiết thông tin của 1 hóa đơn thì XML sẽ toàn vẹn và đủ thông tin hơn, ví dụ như mã tra cứu chỉ có XML mới có.
Đổ toàn bộ json sang excel thì rất đơn giản. Vấn đề là các nhà cung cấp giải pháp sẽ có một số thiết kế tên trường khác nhau bên cạnh các trường qui định chung , bạn phải tập hơp đủ hết các loại mới xây dựng toàn bộ tên cột trên excel, sau đó đổ dữ liệu vào các cột tương ứng.
Ví dụ như tên trường lấy mã tra cứu, mỗi nccgp đặt một tên khác nhau (bạn xem trong sheet LinkTraCuu) và nằm trong các tên trường khác nhau. Vậy khi đổ dữ liệu vào excel thì tôi không biết đổ như thế nào cho tất cả hoá đơn.
File XML mà các bạn tải, theo tôi xem là đã phân loại và sắp xếp vào các tên trường thống nhất rồi chứ không phải như Json.
Bài đã được tự động gộp:

Rất hay và ý nghĩa nhưng Mình tải thử 21 ngày nó bị lỗi này
Nó báo lỗi “Script out of range” hay sao bạn?
Theo hình thì chắc là do người bán không có MST. Để bẫy lỗi nó rồi bạn kiểm tra lại có lấy được hóa đơn chi tiết khi không có "nbmst" không nhé.
Chỗ dòng báo lỗi bạn thêm: & "" như hình xem như thế nào.
Screen Shot 2024-10-21 at 21.08.36.png
 
Lần chỉnh sửa cuối:
Upvote 0
Oh.. file XML và HTML hóa đơn điều nằm trong Json response mà bữa giờ không nhìn cho kỹ... haizza..:D

Nhưng mà chưa biết làm sao chuyển đổi UTF8 text sang Unicode hehe..Bạn nào rành vụ web này thì hướng dẫn giùm nhé.

Screen Shot 2024-10-21 at 22.08.34.png
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Oh.. file XML và HTML hóa đơn điều nằm trong Json response mà bữa giờ không nhìn cho kỹ... haizza..:D
CẬP NHẬT LIỀN ANH. HIHI. MÀ ANH ƠI. FILE ANH NƠI MÃ TRA CỨU CÓ LINK TRA CỨU MÀ KHÔNG CÓ MÃ TRA CỨU NƠI. ANH SỮA GIÚP VÀ CẬP NHẬT THÊM ĐƯỢC KHÔNG Ạ. ANH ĐẸP TRAI ÔNGKE
 
Upvote 0
Oh.. file XML và HTML hóa đơn điều nằm trong Json response mà bữa giờ không nhìn cho kỹ... haizza..:D

Nhưng mà chưa biết làm sao chuyển đổi UTF8 text sang Unicode hehe..Bạn nào rành vụ web này thì hướng dẫn giùm nhé.
Lưu với ADODB.Stream anh nhé, đặt type là 1, Charset là UTF-8
Nếu lỗi thêm Position = 0 và Type = 2 sau khi Write.
 
Upvote 0
@ongke0711 Cảm ơn Ad đã ra file này, mình cũng sử dụng file một vài công ty nhưng khi tra cứu hóa đơn từ máy tính tiền lại không tra cứu được, cái này phải xem xét thêm, File chạy cũng xảy ra một số lỗi code hiện ra thông báo rất kỳ cục (hình dưới), Thêm trường Tiền Thuế trong hóa đơn (đôi khi một số hóa đơn sẽ không trùng tiền thuế trên tool khi tính ra bảng tính làm tròn) ,Khi tra cứu một số hóa đơn từ các công ty đặc thù như xăng dầu sẽ không phải tra cứu từ vnpt mà là petrolimex, mình đã xem thấy cái đó cũng là một điều thiếu sót... Mong Ad sẽ nghiên cứu thêm phần này.... sẽ mong rằng có thêm tiện ích tải xml về máy để lưu trữ hóa đơn...

LOI KHI TRA KQ TRA CUU.PNG
Mình cũng bổ sung thêm cho Ad thêm vào Tool các nhà cung cấp hóa đơn khác
- Hóa đơn điện tử Petrolimex: https://hoadon.petrolimex.com.vn/ dùng trường Fkey để tra cứu
- Hóa đơn điện tử Thaco (ô tô Trường Hải): https://hoadondientu.thaco.com.vn/ dùng trường SearchKey để tra cứu
- Hóa đơn điện tử Thế Giới Di Động: https://hddt.thegioididong.com/ và Bách Hóa Xanh: https://hddt.bachhoaxanh.com/ Dùng số điện thoạiSố Hóa đơn để tra cứu
- Hóa đơn điện tử Myinvoice: https://tracuu.myinvoice.vn/#/ dùng Trường mã cơ quan thuế để tra cứu
- Hóa đơn điện tử Mắt Bão: https://matbao.in/tra-cuu-hoa-don/ dùng File XML để tra cứu
Do đó file XML cũng có thể tra cứu ngược lại với hệ thống tra cứu hóa đơn cũng rất tiện
Cảm ơn Admin đã đọc Cmt này... Luôn luôn ủng hộ Tool...
 
Lần chỉnh sửa cuối:
Upvote 0
Hóa đơn từ máy tính tiền thì trong url chỉnh "query" thành "sco-query" là được
 
Upvote 0
Cơ mà không có Account trang này để test thử code, thấy rôm rả quá
 
Upvote 0
Công cụ hay quá, rất có ích khi làm PL 142. Cám ơn bác. Nhưng phần hđ mua vào vẫn không tải được dữ liệu "Tổng cục thuế đã nhận hóa đơn có mã khởi tạo từ máy tính tiền". Phần chi tiết bảng kê bán r bán ra lệch cột Mã HHDV, Tên HHDV, Đơn vị tính, Số lượng, Đơn giá
 
Lần chỉnh sửa cuối:
Upvote 0
Vấn đề không lấy được tên người mua lý do là đối với Khách lẻ ( không phải doanh nghiệp) thì khi lập hóa đơn sẽ ghi vào trường "tên người mua" không ghi vào "Tên đơn vị". Vấn đề thứ 2 là bảng kê bán ra không lấy được mã hàng hóa dịch vụ trên hóa đơn, và ghi tên hàng hóa vào cột mã hàng hóa dịch vụ khiến cho lệch dòng, e đã test 2 công ty có khi tự tính được tiền thuế có khi không . Đề xuất khi tự tính tiền thuế thì làm tròn luôn không để lại thập phân
 
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.
mình thấy hữu dụng bạn có thể chia sẻ cho anh e diễn đàn thử không
 
Upvote 0
mình thấy hữu dụng bạn có thể chia sẻ cho anh e diễn đàn thử không
Ứng dụng vẫn đang trong quá trình phát triển, hiện tại cũng gần hoàn thiện chị nhé.

Dưới đây là một trang tính Tìm và lọc hóa đơn trong ứng dụng. Chị có thể hình dung ra số lượng nút nhấn và tùy chọn, thì số lượng mã phải viết là rất lớn.
Chưa kể đến các giải thuật để xử lý khối dữ liệu hóa đơn để lưu trữ vào Database. Có đến 3 dạng dữ liệu cho hóa đơn XML, JSON và PDF, nên cũng phải viết mã cho 3 dạng.


1729692854409.png
 
Upvote 0
nói chung tôi tải về chạy thử lỗi tùm lum cả
Nói chứ, được như vậy là quá ngon rồi.
Ứng dụng vẫn đang trong quá trình phát triển, hiện tại cũng gần hoàn thiện chị nhé.

Dưới đây là một trang tính Tìm và lọc hóa đơn trong ứng dụng. Chị có thể hình dung ra số lượng nút nhấn và tùy chọn, thì số lượng mã phải viết là rất lớn.
Chưa kể đến các giải thuật để xử lý khối dữ liệu hóa đơn để lưu trữ vào Database. Có đến 3 dạng dữ liệu cho hóa đơn XML, JSON và PDF, nên cũng phải viết mã cho 3 dạng.


View attachment 304992
Đợt này anh chị em nhà kế được nhiều công cụ hữu dụng quá <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ợ.
Tình hình là excel vba của bác đang được các đồng chí, mang trên mạng rao bán ác quá. toàn 300-400k
 
Upvote 0
@ongke0711 Nếu anh sợ mất đi công sức thì chép mã cần ẩn qua twinBasic đóng gói thành DLL, tương tác giữa DLL và VBA phải là giao tiếp tin nhắn và truy cập bộ nhớ, lưu vào Excel hoặc VBA để khởi chạy. Thêm thông báo ứng dụng miễn phí 100% lần đầu mở ứng dụng. Nếu có ai có thể dịch ngược DLL, họ cũng không có hơi sức đi phá một ứng dụng đơn giản như thế này.


Ứng dụng anh viết với http là đồng bộ và không lưu dữ liệu, mỗi lần tải, tải lại từ đầu khá bất tiện và tốn kém. Đồng thời chờ lâu.
Tận dụng bất đồng bộ chạy trình tải, vài chục hoặc hàng trăm hóa đơn chỉ vài giây.
 
Lần chỉnh sửa cuối:
Upvote 0
Chắc cái bản cập nhật sửa lỗi sắp tới chắc rao bán quá…hehe
Chấp gì kẻ lấy sản phẩm của người khác mang đi rao bán nói là của mình viết, trong khi bản chưa hoàn thiện (Nick facebook ảo).
Anh viết tên đăng nhập và pass là GPE mặc định, để khỏi phải mất công
 
Upvote 0
Ứng dụng anh viết với http là đồng bộ và không lưu dữ liệu, mỗi lần tải, tải lại từ đầu khá bất tiện và tốn kém. Đồng thời chờ lâu.
Tận dụng bất đồng bộ chạy trình tải, vài chục hoặc hàng trăm hóa đơn chỉ vài giây.
Sẽ ngâm cứu và học hỏi tới cái kỹ thuật mà bạn gợi ý đây... :thumbs:.
 
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.
Bản update 28/10/2024, đang bị lỗi này bác ah1730190837508.png
 
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.
1730260645375.pngCùng có tiền trước VAT, cùng có VAT khác 0% mà chỗ có tiền thuế, chỗ không có ạ
 
Upvote 0
Upvote 0
Em thấy tải json không lỗi. Anh cần gửi options với các method GET, POST, OPTIONS và mỗi lần nguồn trả về danh sách thì cần tải xong detail mới tiếp tục tải state khác để tiếp tục tải detail.
 
Upvote 0
Em thấy tải json không lỗi. Anh cần gửi options với các method GET, POST, OPTIONS và mỗi lần nguồn trả về danh sách thì cần tải xong detail mới tiếp tục tải state khác để tiếp tục tải detail.
Đúng là json không có lỗi, ý anh là việc bóc tách dữ liệu từ nó chưa quen lắm và đầy đủ nên vẫn lỗi, oải thiệt, xử lý bẫy lỗi tùm lum… để anh code cẩn thận lại từng trường hợp có thể phát sinh lỗi.
 
Upvote 0
Em vẫn không hiểu tại sao không hiện capcha lúc đăng nhập được ạ? (@$%@(@$%@ em cũng bấm ẩn hiện mật khẩu như clip demo những vẫn không hiện capcha để nhập, có ai bị tình trạng này giống em không ạ1730518864051.png
 
Upvote 0
Em vẫn không hiểu tại sao không hiện capcha lúc đăng nhập được ạ? (@$%@(@$%@ em cũng bấm ẩn hiện mật khẩu như clip demo những vẫn không hiện capcha để nhập, có ai bị tình trạng này giống em không ạView attachment 305218
Khi mở file excel có thông báo Enable content hay securities gì không bạn? Chắc để đổi qua dùng hàm tự nhập captcha (của @HeSanbi, @huhumalu) để tránh lỗi của web browser control.
 
Upvote 0
Khi mở file excel có thông báo Enable content hay securities gì không bạn? Chắc để đổi qua dùng hàm tự nhập captcha (của @HeSanbi, @huhumalu) để tránh lỗi của web browser control.
Không luôn ạ. Bình thường file marco tải về vẫn hay bị khóa sẵn, em unblock luôn rồi nhưng vẫn không hiểu còn thiếu gì mà ko hiện capcha để nhập như m.n (@$%@ (@$%@
 
Upvote 0
Tải được xml hông anh trai, cần nhất cái xml hihi
Tải được chứ xml, html. Nhưng tôi thấy có nhiều loại hoá đơn không có hồ sơ gốc nên sẽ không có file xml. Vậy nếu chỉ dựa trên XML sẽ thiếu hoá đơn (hoá đơn tct không cấp mã).
 
Upvote 0
Tải được chứ xml, html. Nhưng tôi thấy có nhiều loại hoá đơn không có hồ sơ gốc nên sẽ không có file xml. Vậy nếu chỉ dựa trên XML sẽ thiếu hoá đơn (hoá đơn tct không cấp mã).
Tải được XML và HTML là quá ngon rồi bác, Một số nơi chỉ cần hóa đơn in ra từ Thuế là được chấp nhận rồi không cần hóa đơn gốc ( trừ những hóa đơn in ra không thấy được mặt hàng)
Bài đã được tự động gộp:

Tải được chứ xml, html. Nhưng tôi thấy có nhiều loại hoá đơn không có hồ sơ gốc nên sẽ không có file xml. Vậy nếu chỉ dựa trên XML sẽ thiếu hoá đơn (hoá đơn tct không cấp mã).
Một số phần mềm nó bán 50k/1000 file xml tải về đó bác :D
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0
Không luôn ạ. Bình thường file marco tải về vẫn hay bị khóa sẵn, em unblock luôn rồi nhưng vẫn không hiểu còn thiếu gì mà ko hiện capcha để nhập như m.n (@$%@ (@$%@
Bạn thử mở ứng dụng Excel trước với quyền Administrator rồi từ nó mở file excel này xem như thế nào nhé.
(Bấm phải chuột vào ứng dụng Excel, chọn Run as administrator)
 
Upvote 0
Không luôn ạ. Bình thường file marco tải về vẫn hay bị khóa sẵn, em unblock luôn rồi nhưng vẫn không hiểu còn thiếu gì mà ko hiện capcha để nhập như m.n (@$%@ (@$%@
Theo KN của mình thì bạn bấm vô ra 1,2 lần vào khung nhập Capcha, nó sẽ hiện lên phần Enable content!
 
Upvote 0
Tôi đã xử lý dc pdf, xml bằng python. 1 lần đăng nhập là sài dc 24h, ko cần đăng nhập nhiều lần, đang cải tiền vụ lý bảng kê xml và tra cứu mst hàng loạt tích hợp xong rồi mới phát hành cho mọi người tham khảo.
 
Upvote 0
Mã rất đơn giản như sau:

Gọi lệnh này cho một Control để mở Menu popup chọn ngày tháng
MakeDatePickerPopupMenuContext ComboBox1
JavaScript:
'                    _,
' ___   _   _  _ ___(_)
'/ __| / \ | \| | _ | |
'\__ \/ \ \| \\ | _ \ |
'|___/_/ \_|_|\_|___/_|
'

Private Const ProjectUDFName = "UDFDataValidationList"
Private Const ProjectUDFFileName = "UDFDataValidationList"
Private Const ProjectUDFVersion = "1.00"

Option Explicit
Option Compare Text

Const DatePickerPopupYears = 1
Const DatePickerPopupMonths = 2
Const DatePickerPopupDays = 3
Const DatePickerPopupToDay = 4
Dim Navigate&, ActionIndex&, vAruments
Sub MakeDatePickerPopupMenuContext(ByVal control As Object)

  On Error Resume Next
  Dim o, o1, o2, io, i%, k, y0&, Y&, D&, c$, m$, b As Boolean, gr As Boolean, cap$, tag$, lyear&, lmonth&

  Dim pickerType&
  Y = year(Date): cap = "Ch" & ChrW(7885) & "n n" & ChrW(259) & "m:"
  D = DatePickerPopupYears: Navigate = D: pickerType = D
  m = ProjectUDFName & "_PopupYears": GoSub m
 
  If b Then
    D = DatePickerPopupToDay:
    i = 1: c = "H" & ChrW(244) & "m nay": GoSub addButton
    D = DatePickerPopupYears: gr = True
    For i = 1 To 15: c = Y - i + 1:  tag = "year" & i: GoSub addButton: Next
  End If
  cap = "Ch" & ChrW(7885) & "n th" & ChrW(225) & "ng:"
  D = DatePickerPopupMonths: m = ProjectUDFName & "_PopupMonths": GoSub m: Set o1 = o
  If b Then For i = 1 To 12: c = i: tag = "month" & i: GoSub addButton: Next
  cap = "Ch" & ChrW(7885) & "n ng" & ChrW(224) & "y:": D = DatePickerPopupDays: m = ProjectUDFName & "_PopupDays": GoSub m: Set o2 = o
  If b Then For i = 1 To 31: c = i: tag = "day" & i: GoSub addButton: Next
l1:
  If Navigate = D Then
    Y = Day(DateSerial(lyear, lmonth + 1, 0))
    For i = 29 To 31: o.Controls(i + 1).Visible = i <= Y: Next
  End If
l2:
  io.ShowPopup
  i = ActionIndex
 

  If i > 0 Then
    ActionIndex = 0
    Select Case Navigate
    Case DatePickerPopupYears:: Navigate = DatePickerPopupMonths: lyear = io.Controls(i + 1).caption: Set io = o1: GoTo l2
    Case DatePickerPopupMonths: Navigate = DatePickerPopupDays:  lmonth = io.Controls(i).caption: Set io = o2: GoTo l1
    Case DatePickerPopupDays: k = DateSerial(lyear, lmonth, io.Controls(i).caption): GoSub v
    Case DatePickerPopupToDay: k = Date:  GoSub v
    Case Else: k = io.Controls(i).caption: GoSub v
    End Select
  End If

Exit Sub
v:
  control.value = k
Return
m: b = False
  Err.Clear:  Set o = Application.CommandBars(m)
 
  ' If Err = 0 Then o.Delete
  If Err Then b = True: Set o = Application.CommandBars.add(m, msoBarPopup, , True)
  If D = pickerType Then Set io = o
  If o.FindControl(tag:=cap) Is Nothing Then
    With o.Controls.add
      .Style = msoButtonAutomatic
      .caption = cap
      .Enabled = False
      .tag = cap
    End With
  End If
Return
addButton:
  If Not o.FindControl(tag:=tag) Is Nothing Then Return
  With o.Controls.add '(msoButtonCaption)
    .Style = msoButtonAutomatic
    .caption = c
    .OnAction = "'" & ThisWorkbook.name & "'!'UDFDataValidationList_callback " & CStr(i + 1) & "," & D & ",""" & c & """'"
    .faceid = 21847
    .BeginGroup = gr: gr = False
    .tag = tag
  End With
Return
End Sub

Sub UDFDataValidationList_callback(Index&, direction&, ParamArray aruments())

  ActionIndex = Index
  vAruments = aruments
  Select Case direction
  Case DatePickerPopupToDay: Navigate = direction
  End Select
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Upvote 0

À.. do tôi gõ sai chính tả + chưa sửa số thứ tự cột.
JavaScript:
subItms("tphi") ==> subItms2("tphi")
Bạn tải lại file rồi chạy kiểm tra xem nhé.
Tôi tải 700 cái hóa đơn tổng và ghi chừng 600 dòng hóa đơn chi tiết là báo lỗi 429 của web là "có quá nhiều yêu cầu được gửi" nên web sẽ chặn lại. Bạn tải vừa vừa thôi nhé. Đây vẫn còn là cái hạn chế của cái tool tôi viết.
(Tôi có thêm 2 cột ở sheet Chi tiết, bắt chước của bạn @hoamattroicoi để kiểm tra tiền thuế :D vì thấy có người yêu cầu)
 
Lần chỉnh sửa cuối:
Upvote 0
Em thử cái mới nhất thì không thấy lỗi gì cả, mà em thấy ở Sheets tổng hợp đầy đủ các chỉ tiêu mà sao ở chi tiết mình cũng không làm như vậy anh nhỉ, em thấy xử lý tất cả các chỉ tiêu ở Sheets chi tiết sẽ đỡ loạn hơn là nhảy qua nhảy lại ở Sheets Tổng hợp, quan điểm cá nhân ạ
 
Upvote 0
Em thử cái mới nhất thì không thấy lỗi gì cả, mà em thấy ở Sheets tổng hợp đầy đủ các chỉ tiêu mà sao ở chi tiết mình cũng không làm như vậy anh nhỉ, em thấy xử lý tất cả các chỉ tiêu ở Sheets chi tiết sẽ đỡ loạn hơn là nhảy qua nhảy lại ở Sheets Tổng hợp, quan điểm cá nhân ạ
Nếu chỉ ghi thông tin toàn bộ vào sheet Chi tiết thì đỡ bớt một công đoạn trích xuất dữ liệu, nó sẽ nhanh hơn. Tôi không biết bên kế toán có cần thông tin bên sheet Tổng hợp không nên làm cả 2.
 
Upvote 0
Nếu chỉ ghi thông tin toàn bộ vào sheet Chi tiết thì đỡ bớt một công đoạn trích xuất dữ liệu, nó sẽ nhanh hơn. Tôi không biết bên kế toán có cần thông tin bên sheet Tổng hợp không nên làm cả 2.
nên để sheet tổng hợp và sheet chi tiết riêng bác ạ, để còn coi thuế GTGT tự tính và thuế trên tổng hợp có chênh lệch không, nếu lệch còn biết mà xử lý
Bài đã được tự động gộp:

Tôi đã xử lý dc pdf, xml bằng python. 1 lần đăng nhập là sài dc 24h, ko cần đăng nhập nhiều lần, đang cải tiền vụ lý bảng kê xml và tra cứu mst hàng loạt tích hợp xong rồi mới phát hành cho mọi người tham khảo.
Làm sao để inbox riêng, cho em hỏi về tool tải HĐ gốc
 
Upvote 0
1730963019959.png
Của e tải về dùng nó báo lỗi như này ad ơi. k hiện mã capcha để nhập luôn. có gì nhờ ad xem hộ e với. xin cám ơn
 
Upvote 0
:) năm 2006 tôi chỉ lọt chọt vô diễn đàn để hỏi mấy linh tinh làm báo cáo thôi. Sau đó 2015 mới quay lại tập tành tự học VBA.
ui thế thì cao thủ rồi ạ,
Công nhận VBA nhiều ứng dụng hay thật, em là dân tài chính kế toán thực sự thấy được ứng dụng quá tuyệt vời
Đang cố gắng để được Pro như bác
 
Upvote 0
ui thế thì cao thủ rồi ạ,
Công nhận VBA nhiều ứng dụng hay thật, em là dân tài chính kế toán thực sự thấy được ứng dụng quá tuyệt vời
Đang cố gắng để được Pro như bác
Bạn này mời nên chưa để ý, trên diễn đàn chủ yếu là những người nghiệp dư mới phải đi mày mò, chứ những người chuyên nghiệp thì đâu phải lụi hụi bao lâu như vậy.
 
Upvote 0
Bạn này mời nên chưa để ý, trên diễn đàn chủ yếu là những người nghiệp dư mới phải đi mày mò, chứ những người chuyên nghiệp thì đâu phải lụi hụi bao lâu như vậy.
Có chỗ nào đào tạo VBA để có thể viết VBA chuyên nghiệp không bác :D
Trên Youtube với các Khóa học Online toàn kiến thức nhập môn
 
Upvote 0
hỗ nào đào tạo VBA để có thể viết VBA chuyên nghiệp không bác :D
Trên Youtube với các Khóa học Online toàn kiến thức nhập

Mình không biết tiêu chí như thế nào thì được gọi là VBA chuyên nghiệp, nhưng nếu bạn không chê thì có thể bắt đầu từ các bài viết của anh befaint tại đây.
Cảm ơn bác.
Một số bác học VB6 để biên dịch code VBA thì có cần thiết không bác?
Hiện tại em tìm Hiểu VB6 đã dừng hỗ trợ từ lâu rồi
 
Upvote 0
Cảm ơn bác.
Một số bác học VB6 để biên dịch code VBA thì có cần thiết không bác?
Hiện tại em tìm Hiểu VB6 đã dừng hỗ trợ từ lâu rồi
Cái này còn phụ thuộc nhu cầu của bạn đến mức nào, nhiều người cũng nói làm tài chính kế toán như bạn nhưng lên đây chỉ nhờ lập vài công thức, có một số bạn thì nhờ viết vài code tổng hợp, tách dữ liệu .... Nếu chỉ như vậy thì với họ chắc là đủ dùng, còn với bạn đã đủ hay chưa thì mình chịu.
 
Lần chỉnh sửa cuối:
Upvote 0
Tôi có thêm cột so sánh trong sheet Chi tiết, bạn tải file mới xem có đúng chưa.
Cho em hỏi cái này chỉ là cảnh báo thôi phải không ạ? Em có chạy thử và có kiểm tra thì thấy số tiền thuế có Tổng hợp và Chi tiết bằng nhau sao vẫn có cảnh báo này.

1730972938051.png

Với vẫn còn bị lỗi định dạng ngày:
1730973137505.png
 
Upvote 0
Cho em hỏi cái này chỉ là cảnh báo thôi phải không ạ? Em có chạy thử và có kiểm tra thì thấy số tiền thuế có Tổng hợp và Chi tiết bằng nhau sao vẫn có cảnh báo này.
View attachment 305382

Là cành báo để đối chiếu: tổng thuế của từng dòng hàng hóa cộng lại so với cột tổng thuế trên hđ. Có khi nó chênh lệch do số thập phân.

Screenshot at Nov 07 17-43-49.png

Có những trường hợp cột tiền thuế ("tthue") chi tiết =null (không có) là những hóa đơn "không mã". Và có những kiểu hóa đơn "không mã" nhưng vẫn có cột "tthue".



Screen Shot 2024-11-07 at 17.49.45.png
 
Upvote 0
@huhumalu
Dùng các API GDIPlus vẽ các SVG Path trực tiếp lên Userform là được không cần đến WebBrowser ActiveX rất rờm rà. Google bạn sẽ tìm thấy thư viện clsGPIPlus, nhưng thư viện này là thư viện chung nên khá tốn kém. Trong đó có phương thức vẽ SVG.
[/CODE]
Anh chạy thử cái file này thì bị lỗi phần hiển thị hình các ký tự captcha. Em xem lại cách khắc phục như thế nào nhé.

Screen Shot 2024-11-08 at 13.03.33.png
 
Upvote 0
Trong Sub ghiExcel_ChiTiet bạn tính cột tiền thuế [cột 27 sheet ChiTietHD_mua] dựa vào TTruong = "Tiền thuế". Nhưng tôi gặp trường hợp hóa đơn sau bị lỗi. Do file xml này họ lại dùng TTruong = "TongTien_Thue". Hình như không có quy ước thống nhất tên trường nên Không biết còn có tên gọi nào nữa không để đưa luôn vào code:
Mã:
...
Select Case subItms2("ttruong")
   Case "Ti" & ChrW(7873) & "n thu" & ChrW(7871), "TongTien_Thue"
      ws.Cells(row_ct, 27).Value = subItms2("dlieu")
      tongthueCT = tongthueCT + Val(subItms2("dlieu"))
...
 

File đính kèm

  • TTruong_TienThue.JPG
    TTruong_TienThue.JPG
    68.2 KB · Đọc: 15
Upvote 0
Upvote 0
Trong Sub ghiExcel_ChiTiet bạn tính cột tiền thuế [cột 27 sheet ChiTietHD_mua] dựa vào TTruong = "Tiền thuế". Nhưng tôi gặp trường hợp hóa đơn sau bị lỗi. Do file xml này họ lại dùng TTruong = "TongTien_Thue". Hình như không có quy ước thống nhất tên trường nên Không biết còn có tên gọi nào nữa không để đưa luôn vào code:
Mã:
...
Select Case subItms2("ttruong")
   Case "Ti" & ChrW(7873) & "n thu" & ChrW(7871), "TongTien_Thue"
      ws.Cells(row_ct, 27).Value = subItms2("dlieu")
      tongthueCT = tongthueCT + Val(subItms2("dlieu"))
...

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ụ:

Screen Shot 2024-11-09 at 08.22.03.png

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.
 
Lần chỉnh sửa cuối:
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.
Em thấy thực tế các PM có phí hiện nay luôn, quy trình: họ tải danh sách hóa đơn => tải XML => Xuất chi tiết.
- Đối trường hợp hóa đơn Không Mã (Ký hiệu: 1K24...) thì không phải Nhà cung cấp hóa đơn nào họ cũng tải lên liền đâu ah (bảng tổng hợp danh sách lên), nên không tải được hóa đơn là hết sức bình thường ah
 
Upvote 0
Trong Sub ghiExcel_ChiTiet bạn tính cột tiền thuế [cột 27 sheet ChiTietHD_mua] dựa vào TTruong = "Tiền thuế". Nhưng tôi gặp trường hợp hóa đơn sau bị lỗi. Do file xml này họ lại dùng TTruong = "TongTien_Thue". Hình như không có quy ước thống nhất tên trường nên Không biết còn có tên gọi nào nữa không để đưa luôn vào code:
Mã:
...
Select Case subItms2("ttruong")
   Case "Ti" & ChrW(7873) & "n thu" & ChrW(7871), "TongTien_Thue"
      ws.Cells(row_ct, 27).Value = subItms2("dlieu")
      tongthueCT = tongthueCT + Val(subItms2("dlieu"))
...

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)"
 
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.
Có hóa đơn sai sót và thay đổi cũng có các thẻ do TT và NĐ cqt định nghĩa.
 
Upvote 0

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

Back
Top Bottom