Hệ thống pháp luật

NGÂN HÀNG NHÀ NƯỚC
VIỆT NAM
-------

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------------

Số: 17/VBHN-NHNN

Hà Nội, ngày 12 tháng 7 năm 2023

 

THÔNG TƯ

QUY ĐỊNH VIỆC NHẬP KHẨU HÀNG HÓA PHỤC VỤ HOẠT ĐỘNG IN, ĐÚC TIỀN CỦA NGÂN HÀNG NHÀ NƯỚC VIỆT NAM

Thông tư số 38/2018/TT-NHNN ngày 25 tháng 12 năm 2018 của Thống đốc Ngân hàng Nhà nước Việt Nam quy định việc nhập khẩu hàng hóa phục vụ hoạt động in, đúc tiền của Ngân hàng Nhà nước Việt Nam, có hiệu lực kể từ ngày 08 tháng 02 năm 2019, được sửa đổi, bổ sung bởi:

1. Thông tư số 14/2019/TT-NHNN ngày 30 tháng 8 năm 2019 của Thống đốc Ngân hàng Nhà nước Việt Nam sửa đổi, bổ sung một số điều tại các Thông tư có quy định về chế độ báo cáo định kỳ của Ngân hàng Nhà nước, có hiệu lực kể từ ngày 15 tháng 10 năm 2019.

2. Thông tư số 07/2023/TT-NHNN ngày 30 tháng 6 năm 2023 của Thống đốc Ngân hàng Nhà nước Việt Nam sửa đổi, bổ sung một số điều của Thông tư số 38/2018/TT-NHNN ngày 25 tháng 12 năm 2018 của Thống đốc Ngân hàng Nhà nước Việt Nam quy định việc nhập khẩu hàng hóa phục vụ hoạt động in, đúc tiền của Ngân hàng Nhà nước Việt Nam, có hiệu lực kể từ ngày 14 tháng 8 năm 2023.

Căn cứ Luật Ngân hàng Nhà nước Việt Nam ngày 16 tháng 6 năm 2010;

Căn cứ Nghị định số 69/2018/NĐ-CP ngày 15 tháng 5 năm 2018 của Chính phủ quy định chi tiết một số điều của Luật Quản lý ngoại thương;

Căn cứ Nghị định số 16/2017/NĐ-CP ngày 17 tháng 02 năm 2017 của Chính phủ quy định chức năng, nhiệm vụ, quyền hạn và cơ cấu tổ chức của Ngân hàng Nhà nước Việt Nam;

Theo đề nghị của Cục trưởng Cục Phát hành và Kho quỹ;

Thống đốc Ngân hàng Nhà nước Việt Nam ban hành Thông tư quy định việc nhập khẩu hàng hóa phục vụ hoạt động in, đúc tiền của Ngân hàng Nhà nước Việt Nam.Điều 1. Phạm vi điều chỉnh

Thông tư này quy định việc nhập khẩu hàng hóa phục vụ hoạt động in, đúc tiền của Ngân hàng Nhà nước Việt Nam (sau đây gọi tắt là Ngân hàng Nhà nước) theo phương thức chỉ định thương nhân được quy định tại Phụ lục II ban hành kèm theo Nghị định số 69/2018/NĐ-CP ngày 15 tháng 5 năm 2018 của Chính phủ quy định chi tiết một số điều của Luật Quản lý ngoại thương.

Điều 2. Đối tượng áp dụng

1. Thương nhân là cơ sở in, đúc tiền được chỉ định để thực hiện việc in, đúc tiền theo hợp đồng giữa Ngân hàng Nhà nước với cơ sở in, đúc tiền.

2. Ngân hàng Nhà nước; cơ quan, tổ chức và cá nhân có liên quan đến việc nhập khẩu hàng hóa phục vụ hoạt động in, đúc tiền của Ngân hàng Nhà nước.

Điều 3. Hình thức nhập khẩu

1. Danh mục hàng hóa chỉ định cơ sở in, đúc tiền nhập khẩu phục vụ hoạt động in, đúc tiền của Ngân hàng Nhà nước được quy định tại Phụ lục ban hành kèm theo Thông tư này.

2. Ngân hàng Nhà nước có văn bản chỉ định và cho phép cơ sở in, đúc tiền được nhập khẩu hàng hóa quy định tại khoản 1 Điều này.

Điều 4. Nhập khẩu hàng hóa1. Trên cơ sở văn bản chỉ định và cho phép cơ sở in, đúc tiền được nhập khẩu hàng hóa phục vụ hoạt động in, đúc tiền quy định tại khoản 2 Điều 3 Thông tư này, cơ sở in, đúc tiền thực hiện việc nhập khẩu hàng hóa phục vụ hoạt động in, đúc tiền quy định tại Phụ lục Danh mục hàng hóa chỉ định cơ sở in, đúc tiền nhập khẩu phục vụ hoạt động in, đúc tiền của Ngân hàng Nhà nước Việt Nam ban hành kèm theo Thông tư này như sau:

a) Đối với hàng hóa thuộc mục có số thứ tự 1, 2, 3, 5: Cơ sở in, đúc tiền căn cứ hợp đồng in, đúc tiền giữa cơ sở in, đúc tiền với Ngân hàng Nhà nước để thực hiện việc nhập khẩu hàng hóa;

b) Đối với hàng hóa thuộc mục có số thứ tự 4, 6, 7: Cơ sở in, đúc tiền căn cứ văn bản phê duyệt chủ trương đầu tư, quyết định đầu tư của cấp có thẩm quyền theo quy định tại Điều 4 Thông tư số 07/2020/TT-NHNN ngày 30/6/2020 của Thống đốc Ngân hàng Nhà nước Việt Nam quy định việc đầu tư, mua sắm hàng hóa phục vụ hoạt động in, đúc tiền của Ngân hàng Nhà nước Việt Nam để thực hiện việc nhập khẩu hàng hóa.

2. Thống đốc Ngân hàng Nhà nước ủy quyền Cục trưởng Cục Phát hành và Kho quỹ có văn bản xác nhận việc cơ sở in, đúc tiền nhập khẩu hàng hóa phục vụ hoạt động in, đúc tiền của Ngân hàng Nhà nước theo hợp đồng mua bán hàng hóa hoặc các hình thức văn bản khác giữa cơ sở in, đúc tiền và đơn vị cung cấp hàng hóa.

3. Khi làm thủ tục nhập khẩu, cơ sở in, đúc tiền gửi Cơ quan hải quan 01 bản chính văn bản xác nhận của Ngân hàng Nhà nước kèm hồ sơ hải quan theo quy định pháp luật.

Điều 5. Trách nhiệm của Cục Phát hành và Kho quỹ

1. Kiểm tra, theo dõi và quản lý việc sử dụng hàng hóa nhập khẩu phục vụ hoạt động in, đúc tiền của cơ sở in, đúc tiền.

2. Thực hiện các trách nhiệm khác theo quy định tại Điều 4 Thông tư này.

Điều 6. Trách nhiệm của cơ sở in, đúc tiền

1. Thực hiện nhập khẩu đúng số lượng, chất lượng, chủng loại hàng hóa và tuân thủ các quy định của pháp luật về nhập khẩu hàng hóa.

2. Cơ sở in, đúc tiền phải sử dụng hàng hóa đã nhập khẩu đúng mục đích.

3.Điều 7. Quy định chuyển tiếp

Văn bản xác nhận của Ngân hàng Nhà nước về việc cơ sở in, đúc tiền nhập khẩu hàng hóa phục vụ hoạt động in, đúc tiền theo quy định tại Thông tư số 15/2017/TT-NHNN ngày 05/10/2017 của Ngân hàng Nhà nước sửa đổi, bổ sung một số điều của Thông tư số 18/2014/TT-NHNN ngày 01/8/2014 của Ngân hàng Nhà nước hướng dẫn hoạt động nhập khẩu hàng hóa thuộc diện quản lý chuyên ngành của Ngân hàng Nhà nước Việt Nam được tiếp tục thực hiện theo các nội dung tại văn bản xác nhận.

Điều 8. Trách nhiệm tổ chức thực hiện

Chánh Văn phòng, Cục trưởng Cục Phát hành và Kho quỹ, Thủ trưởng các đơn vị thuộc Ngân hàng Nhà nước, Chủ tịch Hội đồng quản trị, Hội đồng thành viên, Tổng Giám đốc (Giám đốc) cơ sở in, đúc tiền chịu trách nhiệm tổ chức thực hiện Thông tư này.

Điều 9. Hiệu lực thi hành1. Thông tư này có hiệu lực thi hành kể từ ngày 08 tháng 02 năm 2019.

2. Thông tư này thay thế Thông tư số 18/2014/TT-NHNN ngày 01/8/2014 của Ngân hàng Nhà nước hướng dẫn hoạt động nhập khẩu hàng hóa thuộc diện quản lý chuyên ngành của Ngân hàng Nhà nước Việt Nam và Thông tư số 15/2017/TT-NHNN ngày 05/10/2017 của Ngân hàng Nhà nước sửa đổi, bổ sung một số điều của Thông tư số 18/2014/TT-NHNN ngày 01/8/2014 hướng dẫn hoạt ……….

 

PHỤ LỤCDANH MỤC HÀNG HÓA CHỈ ĐỊNH CƠ SỞ IN, ĐÚC TIỀN NHẬP KHẨU PHỤC VỤ HOẠT ĐỘNG IN, ĐÚC TIỀN CỦA NGÂN HÀNG NHÀ NƯỚC VIỆT NAM
(Ban hành kèm theo Thông tư số 07/2023/TT-NHNN ngày 30 tháng 6 năm 2023 của Ngân hàng Nhà nước Việt Nam)

STT

TÊN HÀNG HÓA

MÃ SỐ HS

Chương

Nhóm

Phân nhóm

1

Phôi kim loại sử dụng để đúc, dập tiền kim loại

 

 

 

 

1.1

Bằng thép hợp kim

72

24

90

00

1.2

Bằng thép không gỉ

72

18

99

00

1.3

Bằng sắt, thép không hợp kim

72

06

90

00

2

Giấy in tiền

 

 

 

2.1

Giấy in tiền cotton

 

 

 

 

2.1.1

Ở dạng tờ hình chữ nhật (kể cả hình vuông) không có chiều nào trên 36 cm ở dạng không gấp

48

02

69

11

2.1.2

Loại khác

48

02

69

19

2.2

Giấy in tiền polymer

 

 

 

 

2.2.1

Từ các polymer trùng hợp

 

 

 

 

2.2.1.1

Dạng tấm và phiến

39

20

99

21

2.2.1.2

Loại khác

39

20

99

29

2.2.2

Từ các polymer trùng ngưng hoặc tái sắp xếp

 

 

 

 

2.2.2.1

Dạng tấm và phiến

39

20

99

31

2.2.2.2

Loại khác

39

20

99

39

2.2.3

Loại khác

39

20

99

90

3

Mực in tiền

 

 

 

 

3.1

Mực in tiền màu đen được làm khô bằng tia cực tím

32

15

11

10

3.2

Mực in tiền màu đen loại khác

32

15

11

90

3.3

Mực in tiền màu khác

32

15

19

90

4

Máy ép foil chống giả

84

20

10

90

5

Foil chống giả để sử dụng cho tiền, ngân phiếu thanh toán và các loại ấn chỉ, giấy tờ có giá khác thuộc ngành Ngân hàng phát hành và quản lý

49

11

99

90

6

Máy in tiền

 

 

 

 

6.1

Máy phủ Varnish

 

 

 

 

6.1.1

Máy in phủ Varnish theo công nghệ in Flexo

Có thể in được mực không màu phát quang UV (Loại in tờ rời)

84

43

16

00

6.1.2

Máy in phủ Varnish theo công nghệ in Offset

Có thể in được mực không màu phát quang UV (Loại in tờ rời, có kích thước tờ in tối đa ở dạng không gấp một chiều trên 22cm và chiều kia trên 36cm)

84

43

13

00

6.1.3

Máy in phủ Varnish kết hợp cả công nghệ Flexo và Offset

Có thể in được mực không màu phát quang UV (Loại in tờ rời, có kích thước tờ in tối đa ở dạng không gấp một chiều trên 22cm và chiều kia trên 36cm)

84

43

16

00

6.2

Máy in số

(Máy in theo công nghệ in Typo, sử dụng khuôn in dạng hộp số nhảy)

84

43

19

00

6.3

Máy in lõm

(Máy in sử dụng công nghệ in lõm (in Intaglio))

84

43

19

00

6.4

Máy in Offset

(Máy in sử dụng công nghệ in offset, loại in tờ rời, có kích thước tờ in tối đa ở dạng không gấp một chiều trên 22cm và chiều kia trên 36cm)

84

43

13

00

6.5

Máy in lưới

(Máy sử dụng khuôn lưới dạng ống tròn, loại in tờ rời)

84

43

19

00

7

Máy đúc, dập tiền kim loại

 

 

 

 

7.1

Máy đúc tiền kim loại theo công nghệ làm nóng chảy kim loại thành dạng lỏng

84

54

30

00

7.2

Máy dập tiền kim loại

(Thiết bị tạo hình sản phẩm tiền kim loại từ dải phôi kim loại được đột dập thành phôi tiền xu (xu trống), sau đó xu trống được gia công và dập ở trạng thái nguội dưới tác dụng của áp lực tạo hình ảnh trên tiền xu theo khuôn mẫu thiết kế)

84

62

49

00

 

Mẫu số 01

CƠ SỞ IN ĐÚC TIỀN
-------

CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM
Độc lập - Tự do - Hạnh phúc
---------------

Số: …………..…

(Tỉnh, thành phố).... ngày … tháng … năm ….

 

BÁO CÁO TÌNH HÌNH NHẬP KHẨU VÀ SỬ DỤNG HÀNG HÓA CỦA CƠ SỞ IN ĐÚC TIỀN

(Kỳ báo cáo: Quý      /    )

Kính gửi: Ngân hàng Nhà nước Việt Nam
(Cục Phát hành và kho quỹ)

Phần I. Tình hình nhập khẩu và sử dụng hàng hóa

1. Số lượng từng chủng loại hàng hóa, nguyên vật liệu đã nhập khẩu trong kỳ báo cáo

2. Số lượng từng chủng loại hàng hóa, nguyên vật liệu đã sử dụng trong kỳ báo cáo

3. Tình hình sử dụng giấy xác nhận của Ngân hàng nhà nước cấp cho cơ sở in đúc tiền để làm thủ tục nhập khẩu hàng hóa, nguyên vật liệu

Phần II. Đề xuất, kiến nghị (nếu có)

 

 

NGƯỜI ĐẠI DIỆN HỢP PHÁP
(Ký, ghi rõ họ tên, chức vụ và đóng dấu)


 


Nơi nhận:
- Ban lãnh đạo NHNN;
- Văn phòng Chính phủ (để đăng Công báo);
- Cổng thông tin điện tử NHNN;
- Lưu VP, PC3.

XÁC THỰC VĂN BẢN HỢP NHẤT

KT. THỐNG ĐỐC
PHÓ THỐNG ĐỐC




Đoàn Thái Sơn

 



“Căn cứ Luật Ngân hàng Nhà nước Việt Nam ngày 16 tháng 6 năm 2010;

Căn cứ Nghị định số 69/2018/NĐ-CP ngày 15 tháng 5 năm 2018 của Chính phủ quy định chi tiết một số điều của Luật Quản lý ngoại thương;

Căn cứ Nghị định số 134/2016/NĐ-CP ngày 01 tháng 9 năm 2016 của Chính phủ quy định chi tiết một số điều và biện pháp thi hành Luật Thuế xuất khẩu, thuế nhập khẩu; Nghị định số 18/2021/NĐ-CP ngày 11 tháng 3 năm 2021 của Chính phủ sửa đổi, bổ sung một số điều của Nghị định số 134/2016/NĐ-CP ngày 01 tháng 9 năm 2016 của Chính phủ quy định chi tiết một số điều và biện pháp thi hành Luật Thuế xuất khẩu, thuế nhập khẩu;

Căn cứ Nghị định số 102/2022/NĐ-CP ngày 12 tháng 12 năm 2022 của Chính phủ quy định chức năng, nhiệm vụ, quyền hạn và cơ cấu tổ chức của Ngân hàng Nhà nước Việt Nam;

Theo đề nghị của Cục trưởng Cục Phát hành và Kho quỹ;

Thống đốc Ngân hàng Nhà nước Việt Nam ban hành Thông tư sửa đổi, bổ sung một số điều của Thông tư số 38/2018/TT-NHNN ngày 25 tháng 12 năm 2018 của Thống đốc Ngân hàng Nhà nước Việt Nam quy định việc nhập khẩu hàng hóa phục vụ hoạt động in, đúc tiền của Ngân hàng Nhà nước Việt Nam (sau đây gọi tắt là Thông tư số 38/2018/TT-NHNN).”

lồng nhau (bên trong) hay không const memberID = 0; const vbID = '7bc1d5d4a0521e3f678045bd92b550cc'; console.log('Tiện ích loaded - memberID:', memberID, 'vbID:', vbID); function isInViewportAndTabNoiDung(element) { const rect = element.getBoundingClientRect(); const buffer = 1500; // Buffer to preload content below the viewport (approx. 50+ lines) const viewHeight = window.innerHeight || document.documentElement.clientHeight; const isInViewport = rect.top < viewHeight + buffer && rect.bottom >= 0; const isInTabNoiDung = $(element).closest('#tab_noi_dung_vb').length > 0; return isInViewport && isInTabNoiDung; } function getAddress(element) { const validTags = ['trichyeu', 'cancu', 'phan', 'chuong', 'muc', 'tieumuc', 'dieu', 'khoan', 'diem']; const $parent = $(element).closest(validTags.join(',')); if (!$parent.length) { return null; } let addr = $parent.attr('address'); if (!addr && $parent.prop('tagName').toLowerCase() === 'trichyeu') { addr = 'trichyeu'; $parent.attr('address', addr); } return addr || null; } function processTnplClasses($element) { const tnplKeysInLine = new Set(); // key = slug hoặc text (thường là slug) $element.find('tnpl').each(function () { const $tnpl = $(this); const tnplSlug = ($tnpl.attr('slug') || '').trim().toLowerCase(); const tnplKey = tnplSlug || $tnpl.text().trim().toLowerCase(); // Đã xử lý trong cùng dòng => bỏ if (tnplKeysInLine.has(tnplKey)) { return; } tnplKeysInLine.add(tnplKey); let tnplExists = false; // Chỉ duyệt các tnpl đã được tô màu (class on) $('tnpl.on').each(function () { const $existingTnpl = $(this); const existingSlug = ($existingTnpl.attr('slug') || '').trim().toLowerCase(); const existingKey = existingSlug || $existingTnpl.text().trim().toLowerCase(); if ( existingKey === tnplKey && isInViewportAndTabNoiDung($existingTnpl[0]) ) { tnplExists = true; return false; // break each } }); if (!tnplExists) { $tnpl.addClass('on'); } }); } function processQueue() { while (pendingRequests < maxConcurrentRequests && requestQueue.length > 0) { const task = requestQueue.shift(); pendingRequests++; task() .always(() => { pendingRequests--; processQueue(); }); } } function processVisibleParagraphs() { try { $('#tab_noi_dung_vb p:not([is-posted="1"])').each(function () { let $element = $(this); if (isInViewportAndTabNoiDung(this)) { $element.attr('is-posted', '1'); $element.addClass('loading-content'); let p_innerHTML = $element.html(); let address = null; if (cac_cau_hinh.loai_noi_dung.includes('docs')) { address = getAddress($element); } const isSubP = $element.parents('p').length > 0; if (isSubP && !allow_sub_p) { $element.removeClass('loading-content'); return; // Không gửi nếu không cho phép } const postData = { p_content: p_innerHTML, cac_cau_hinh, address }; if (isSubP && allow_sub_p) { postData.sub_p = 1; } requestQueue.push(() => $.ajax({ url: '//tnpl' + (Math.floor(Math.random() * 10) + 1) + '.hethongphapluat.com/tien-ich/tim.tien.ich.php', type: 'POST', data: postData, success: function(response) { $element.html(response); processTnplClasses($element); // Đợi CTTD và các tiện ích load xong rồi mới attach badge if (memberID === 4 && typeof attachPhanTichBadge === 'function') { setTimeout(function() { // $element chính là thẻ p, kiểm tra và attach badge trực tiếp const $parent = $element.closest('phan, chuong, muc, tieumuc, dieu, khoan, diem'); if ($parent.length > 0 && $element.find('.badge-phan-tich').length === 0) { // Sau khi CTTD load xong, set position: relative cho

không còn ảnh hưởng $element.css('position', 'relative'); const address = $parent.attr('address'); $element.attr('data-address', address); // Lấy tên loại thẻ cho tooltip const parentType = getParentTypeName($parent.prop('tagName').toLowerCase()); const $badge = $('Phân tích'); $element.append($badge); } // Xử lý các p con (nếu có sub-p) attachPhanTichBadge($element); }, 300); // Đợi 300ms để CTTD render xong } }, complete: function() { $element.removeClass('loading-content'); } }) ); processQueue(); } }); } catch(e) { console.error('Lỗi processVisibleParagraphs:', e); } } $(window).on('scroll resize', function () { processVisibleParagraphs(); }); console.log('Bắt đầu processVisibleParagraphs lần đầu...'); processVisibleParagraphs(); console.log('processVisibleParagraphs lần đầu hoàn thành'); // Chức năng phân tích điều luật (chỉ cho member_id = 4) if (memberID === 4) { // Hàm lấy tên tiếng Việt của thẻ function getParentTypeName(tagName) { const typeNames = { 'phan': 'Phần', 'chuong': 'Chương', 'muc': 'Mục', 'tieumuc': 'Tiểu mục', 'dieu': 'Điều', 'khoan': 'Khoản', 'diem': 'Điểm' }; return typeNames[tagName] || 'Nội dung'; } function attachPhanTichBadge($container) { const validTags = 'phan, chuong, muc, tieumuc, dieu, khoan, diem'; $container.find('p').each(function() { const $p = $(this); const $parent = $p.closest(validTags); if ($parent.length > 0) { // Kiểm tra đã có badge chưa if ($p.find('.badge-phan-tich').length === 0) { // Set relative cho

(lúc này CTTD đã render xong) $p.css('position', 'relative'); // Lưu address vào data attribute để dùng sau const address = $parent.attr('address'); $p.attr('data-address', address); // Lấy tên loại thẻ cho tooltip const parentType = getParentTypeName($parent.prop('tagName').toLowerCase()); const $badge = $('Phân tích'); $p.append($badge); } } }); } // Helper: Escape HTML entities function escapeHtml(text) { const map = { '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' }; return String(text).replace(/[&<>"']/g, function(m) { return map[m]; }); } // Helper: Convert Markdown to HTML (đơn giản) function markdownToHtml(markdown) { if (!markdown) return ''; let html = markdown; // Headers html = html.replace(/^### (.*$)/gim, '

$1
'); html = html.replace(/^## (.*$)/gim, '

$1

'); html = html.replace(/^# (.*$)/gim, '

$1

'); // Bold html = html.replace(/\*\*(.*?)\*\*/g, '$1'); // Italic html = html.replace(/\*(.*?)\*/g, '$1'); // Blockquote html = html.replace(/^> (.*$)/gim, '
$1
'); html = html.replace(/^> (.*$)/gim, '
$1
'); // Lists (unordered) html = html.replace(/^\- (.*$)/gim, '
  • $1
  • '); html = html.replace(/(
  • .*<\/li>)/s, '
      $1
    '); // Lists (ordered) html = html.replace(/^\d+\. (.*$)/gim, '
  • $1
  • '); // Line breaks và paragraphs html = html.split('\n\n').map(para => { para = para.trim(); if (para.startsWith('')) { return para; } if (para) { return '

    ' + para.replace(/\n/g, '
    ') + '

    '; } return ''; }).join('\n'); // Clean up multiple line breaks html = html.replace(/\n{3,}/g, '\n\n'); return html; } function openPhanTichModal(address, vbID) { // Không thay đổi vị trí scroll. Panel sẽ bám theo viewport. const $right = $('#rightdocinfo'); function positionPhanTichPanel() { if ($right.length === 0) return; const rect = $right[0].getBoundingClientRect(); const vpH = window.innerHeight || document.documentElement.clientHeight; $('#phanTichSlidePanel').css({ 'position': 'fixed', 'top': '0px', // bám đỉnh viewport để luôn thấy ngay 'left': rect.left + 'px', 'width': rect.width + 'px', 'height': vpH + 'px', // full chiều cao màn hình 'z-index': 9999, 'right': 'auto', // vô hiệu hóa right:-100% trong template 'overflow-y': 'auto', 'background': 'white', 'visibility': 'visible', 'opacity': 1, 'pointer-events': 'auto' }); } // Tạo slide panel nếu chưa có if ($('#phanTichSlidePanel').length === 0) { const panelHTML = `
    ⚖️ Phân tích điều luật
    Đang phân tích...

    Đang phân tích với Gemini AI...

    `; $('body').append(panelHTML); // Căn panel theo vị trí thật của #rightdocinfo bằng fixed + transform positionPhanTichPanel(); // Khởi tạo transform ẩn ngoài màn hình $('#phanTichSlidePanel').css({ 'transform': 'translateX(100%)', 'transition': 'transform 0.3s ease-in-out' }); // Đảm bảo reflow xong mới position + slide (double rAF) try { requestAnimationFrame(function(){ requestAnimationFrame(function(){ positionPhanTichPanel(); $('#phanTichSlidePanel').css('transform', 'translateX(0)'); }); }); } catch(e) {} // Đưa #rightdocinfo vào khung nhìn (nếu đang nằm ngoài viewport) try { const off = $right.offset(); if (off && (off.top < 0 || off.top > (window.pageYOffset + (window.innerHeight||document.documentElement.clientHeight)))) { $('html, body').stop(true).animate({scrollTop: Math.max(off.top - 10, 0)}, 0); } } catch (e) {} // Recalc khi scroll/resize $(window).off('scroll.phanTich resize.phanTich').on('scroll.phanTich resize.phanTich', function() { if ($('#phanTichSlidePanel').length) positionPhanTichPanel(); }); // Recalc khi #rightdocinfo thay đổi kích thước if (window.ResizeObserver && $right.length) { try { if (window._phanTichRO) { window._phanTichRO.disconnect(); } window._phanTichRO = new ResizeObserver(function() { positionPhanTichPanel(); }); window._phanTichRO.observe($right[0]); } catch (e) { // ignore } } // Event close $('#closePhanTichPanel').on('click', function() { $('#phanTichSlidePanel').css('transform', 'translateX(100%)'); }); } // Reset nội dung và hiển thị panel $('#phanTichPanelContent').html(`
    Đang phân tích...

    Đang phân tích với Gemini AI...

    `); // Slide in animation – chỉ khi panel đã có width hợp lệ (>10px) (function startSlideWhenReady() { const $panel = $('#phanTichSlidePanel'); if ($panel.width() > 10) { setTimeout(function(){ $panel.css('transform', 'translateX(0)'); }, 10); } else { let tries = 0; const iv = setInterval(function() { positionPhanTichPanel(); if ($panel.width() > 10 || ++tries > 40) { // tối đa ~2s clearInterval(iv); $panel.css('transform', 'translateX(0)'); } }, 50); } })(); // AJAX request const randomServer = Math.floor(Math.random() * 10) + 1; $.ajax({ url: '//tnpl' + randomServer + '.hethongphapluat.com/tien-ich/phan.tich.dieu.luat.php', type: 'POST', contentType: 'application/json', data: JSON.stringify({ address: address, vb_id: vbID }), success: function(response) { if (response.ok) { // Render kết quả phân tích let html = ''; // Header thông tin văn bản html += '
    '; html += '
    ' + escapeHtml(response.ten_van_ban) + '
    '; if (response.so_hieu) { html += 'Số hiệu: ' + escapeHtml(response.so_hieu) + '
    '; } html += 'Điều khoản: ' + escapeHtml(response.address) + ''; html += '
    '; // Nội dung phân tích (Markdown -> HTML) html += '
    '; html += markdownToHtml(response.phan_tich); html += '
    '; // Thông tin usage (nếu có) if (response.usage) { html += '
    '; html += 'Thống kê: '; html += 'Input tokens: ' + (response.usage.promptTokenCount || 0) + ', '; html += 'Output tokens: ' + (response.usage.candidatesTokenCount || 0); html += '
    '; } $('#phanTichPanelContent').html(html); } else { $('#phanTichPanelContent').html(` `); } }, error: function(xhr, status, error) { let errorMsg = error; if (xhr.responseJSON && xhr.responseJSON.error) { errorMsg = xhr.responseJSON.error; } $('#phanTichPanelContent').html(` `); } }); } // Helpers: show/hide badge cho một

    - ĐƠN GIẢN function showPhanTichBadgeForP($p) { const $badge = $p.find('.badge-phan-tich'); if ($badge.length === 0) return; $badge.stop(true, true).fadeIn(200); const $parent = $p.closest('phan, chuong, muc, tieumuc, dieu, khoan, diem'); if ($parent.length > 0) { $parent.addClass('highlight-border'); } } function hidePhanTichBadgeForP($p) { const $badge = $p.find('.badge-phan-tich'); if ($badge.length === 0) return; $badge.stop(true, true).fadeOut(200); const $parent = $p.closest('phan, chuong, muc, tieumuc, dieu, khoan, diem'); if ($parent.length > 0) { $parent.removeClass('highlight-border'); } } // Event delegation cho hover vào p (bao gồm cả khi hover vào bất kỳ element nào trong p) $(document).on('mouseenter', '#tab_noi_dung_vb p[data-address], #tab_noi_dung_vb p[data-address] *', function(e) { const $p = $(this).is('p') ? $(this) : $(this).closest('p[data-address]'); if ($p.length) { showPhanTichBadgeForP($p); } }); // Event delegation cho hover ra khỏi p → ẩn badge và xóa viền thẻ cha $(document).on('mouseleave', '#tab_noi_dung_vb p[data-address]', function(e) { // Chỉ ẩn khi thực sự rời khỏi p, không phải chỉ di chuyển giữa các child const $p = $(this); setTimeout(() => { if (!$p.is(':hover')) { hidePhanTichBadgeForP($p); } }, 50); }); // Event delegation cho hover vào badge (cả gốc và fixed) → hiện tooltip $(document).on('mouseenter', '.badge-phan-tich, .badge-phan-tich-fixed', function() { const $badge = $(this); const parentType = $badge.attr('data-parent-type') || 'Nội dung'; if ($badge.find('.badge-tooltip').length === 0) { const $tooltip = $('Phân tích chi tiết nội dung ' + parentType + ' này'); $badge.append($tooltip); setTimeout(() => $tooltip.addClass('show'), 10); } }); // Event delegation cho hover ra khỏi badge (cả gốc và fixed) → ẩn tooltip $(document).on('mouseleave', '.badge-phan-tich, .badge-phan-tich-fixed', function() { const $tooltip = $(this).find('.badge-tooltip'); if ($tooltip.length > 0) { $tooltip.removeClass('show'); setTimeout(() => $tooltip.remove(), 300); } }); // Event delegation cho click badge (cả gốc và fixed) → mở modal $(document).on('click', '.badge-phan-tich, .badge-phan-tich-fixed', function(e) { e.stopPropagation(); let address; if ($(this).hasClass('badge-phan-tich-fixed')) { // Badge fixed: lấy address từ data-for address = $(this).attr('data-for'); } else { // Badge gốc: lấy từ

    cha const $p = $(this).closest('p'); address = $p.attr('data-address'); } if (address && vbID) { openPhanTichModal(address, vbID); } else { alert('Không tìm thấy địa chỉ điều luật hoặc ID văn bản!'); } }); // Attach cho các p đã có sẵn khi hover lần đầu $(document).on('mouseenter', '#tab_noi_dung_vb p', function() { const $p = $(this); if ($p.find('.badge-phan-tich').length === 0 && !$p.attr('data-address')) { const $parent = $p.closest('phan, chuong, muc, tieumuc, dieu, khoan, diem'); if ($parent.length > 0) { attachPhanTichBadge($p.parent()); } } }); } });