BỘ XÂY DỰNG | CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM |
Số: 3799/BXD-KTXD | Hà Nội, ngày 22 tháng 8 năm 2023 |
Kính gửi: Ban Quản lý dự án đầu tư xây dựng tỉnh Quảng Nam
Bộ Xây dựng nhận được Văn bản số 424/BQL-QLDA1 ngày 05/7/2023 của Ban Quản lý dự án đầu tư xây dựng tỉnh Quảng Nam về xử lý tình huống một nhà thầu trong Liên danh đang thực hiện hợp đồng xây dựng xin rút khỏi liên danh. Sau khi nghiên cứu, Bộ Xây dựng có ý kiến như sau:
1. Việc quản lý, thực hiện hợp đồng xây dựng theo nội dung hợp đồng đã ký kết, phù hợp hồ sơ mời thầu/ hồ sơ yêu cầu, hồ sơ dự thầu/ hồ sơ đề xuất, tuân thủ quy định pháp luật áp dụng cho hợp đồng.
2. Việc thanh lý hợp đồng xây dựng quy định tại Điều 147 Luật Xây dựng; việc điều chỉnh và thẩm quyền quyết định điều chỉnh hợp đồng xây dựng quy định tại Điều 143 Luật Xây dựng, và mục 5 Chương II Nghị định số 37/2015/NĐ-CP3. Đối với trường hợp cụ thể nêu tại Văn bản số 424/BQL-QLDA1, đề nghị Ban Quản lý dự án đầu tư xây dựng tỉnh Quảng Nam căn cứ vào nội dung hợp đồng đã ký, thỏa thuận liên danh, các hồ sơ hợp đồng khác có liên quan, thực tiễn thực hiện hợp đồng để quyết định phương án tổ chức triển khai thi công trên cơ sở tham khảo, vận dụng quy định về xử lý tình huống trong đấu thầu tại Điều 117 Nghị định số 63/2014/NĐ-CPTrên đây là ý kiến của Bộ Xây dựng, đề nghị Ban Quản lý dự án đầu tư xây dựng tỉnh Quảng Nam nghiên cứu, báo cáo cấp có thẩm quyền thực hiện theo quy định pháp luật./.
| TL. BỘ TRƯỞNG |
/g, '').replace(/\s*(<\/?[^>]+>)\s*/g, '$1').trim();
}
function checkAndWrap(element) {
// Đệ quy kiểm tra các phần tử .main-elem con bên trong trước
element.children('cttd, dctd, dctk').each(function() {
checkAndWrap($(this));
});
// Lấy HTML hiện tại của phần tử .main-elem và làm sạch nó
var currentHTML = cleanHTML(element.html());
// Log trạng thái HTML bên trong trước khi kiểm tra
//console.log('Before inner HTML:', currentHTML);
// Kiểm tra xem HTML có bao quanh bởi thẻ span không
if (!(currentHTML.startsWith(''))) {
// Nếu không, bao quanh toàn bộ nội dung bằng thẻ span
element.html('' + currentHTML + '');
currentHTML = cleanHTML(element.html());
//console.log('After inner HTML:', currentHTML);
} else {
//console.log('Giữ nguyên inner HTML:..........................');
}
}
$('cttd.chuthichtudong a.chuthichtudong').each(function() {
$(this).removeClass('chuthichtudong');
});
// Bắt đầu kiểm tra từ các phần tử .main-elem ngoài cùng
$('cttd.chuthichtudong, a.chuthichtudong, dctd, dctk').each(function() {
$(this).attr('id', 'rnd_' + random_string_id(20));
checkAndWrap($(this));
});
});
$(document).ready(function() {
$('cttd.chuthichtudong span, a.chuthichtudong span, dctk span, dctd span').click(function(e) {
e.preventDefault();
e.stopPropagation();
});
$('cttd.chuthichtudong > span, a.chuthichtudong > span, dctk > span, dctd > span').click(function(e) {
e.preventDefault();
e.stopPropagation();
if ($(document).width()<=768) {
return;
}
var $this = $(this);
//alert($this.position().top);
var clickedElement = $(this);
var level = 0;
var selectors = ['cttd.chuthichtudong > span', 'dctk > span', 'dctd > span'];
// Kiểm tra xem có ít nhất một cấp con thỏa mãn điều kiện không
var hasChild = selectors.some(function(selector) {
return clickedElement.closest(selector).find('span').length > 0;
});
if (!hasChild) {
//alert('chỉ có 1 cấp');
var totalSubLevels = 1;
}
else
{
function findMatchingParent(element) {
var parent = element.parent();
if (parent.length === 0) return null;
for (var i = 0; i < selectors.length; i++) {
if (parent.is(selectors[i])) {
return parent;
}
}
return findMatchingParent(parent);
}
var parentElement = findMatchingParent(clickedElement);
while (parentElement !== null) {
level++;
parentElement = findMatchingParent(parentElement);
}
var closestElement = clickedElement.closest(selectors.join(', '));
var nodeName = closestElement.prop('nodeName').toLowerCase();
var className = closestElement.attr('class');
var textContent = closestElement.text().trim();
var address = selectors.find(function(selector) {
return closestElement.is(selector);
});
// Đếm tổng số cấp dưới bao gồm cả cấp được click
var totalSubLevels = closestElement.find('span').length + 1; // +1 để bao gồm cả cấp được click
var parent_id = closestElement.parent().attr('id');
//alert('Clicked element level: ' + level + '\nAddress: ' + address + '\nText: ' + textContent + '\nparent_id: ' + parent_id);
var variableName = 'parent_id_' + level;
// Gán giá trị của parent_id cho biến động này
window[variableName] = parent_id;
}
if (totalSubLevels>1)
{
// Tạo đối tượng để lưu trữ các biến động
var dynamicVars = {};
// Tạo tên biến động dựa trên giá trị của level
var variableName = 'parent_id_' + level;
// Gán giá trị của parent_id cho biến động này
dynamicVars[variableName] = parent_id;
// Giờ gắn ngược lại biến buble_id = parent_id_{level}
var buble_id = dynamicVars[variableName];
}
else
{
buble_id = 'dc_' + $(this).parent().attr('id');
}
//alert('bat dau xu ly ' + buble_id);
// Nếu không có .pointer ngay sau .main-elem thì chèn thêm
if ($this.next('.pointy').length === 0) {
$this.after(' bên trong $pointer
if ($(e.target).closest('.list_tds').length > 0) {
// Người dùng đang chạm vào nội dung bên trong .scroll_2
// Cho phép hành vi cuộn và ngăn chặn di chuyển $pointer
e.stopPropagation();
return true;
}
// Người dùng không chạm vào nội dung bên trong $pointer
// Cho phép di chuyển $pointer
return false;
}
$pointer.on('touchstart', startDragging);
$pointer.on('touchmove', duringDragging);
$pointer.on('touchend', stopDragging);
// Hàm để cập nhật vị trí của pointer
var updatePointerPosition = function() {
var offset = $this.position();
//alert($this.position().top);
var windowHeight = $(window).height() - $('#nav-tab-vb').height()-20;
var pointerHeight = Math.max(250, Math.min(windowHeight * 0.8, 450));
var elementOffset = $this.position().top;
var newTop = elementOffset - (pointerHeight / 2);
// Đảm bảo pointer không ra khỏi màn hình
var maxTop = $(document).height() - pointerHeight;
newTop = Math.max(0, Math.min(newTop, maxTop));
$pointer.css({
left: $('#doc-left-col').width() + 50 + "px",
width: $('#doc-right-col').width() - 30,
height: pointerHeight,
top: newTop + "px"
});
//alert($pointer.position().top);
};
/*
*/
// Cập nhật vị trí pointer khi thay đổi kích thước hoặc xoay màn hình
$(window).on('resize orientationchange', function() {
updatePointerPosition();
//$canvas.css('top', $this.position().top+'px');
var cap_nhat_pointy_top = setInterval(function(){
if ($this.position().top-$this.parent().height()+10!=$pointer.prev('canvas.pointy').position().top) {
$pointer.prev('canvas.pointy').css({'top': $this.position().top-$this.parent().height()+10+'px'});
$this.trigger('pointy-update');
clearInterval(cap_nhat_pointy_top);
}
else
{
clearInterval(cap_nhat_pointy_top);
}
},50);
});
}
}
}
if ($pointer.is(':visible')) {
if (level==0) {
if (totalSubLevels==1) {
scrollTop_offset = $pointer.offset().top - $(window).height() / 4;
}
else
{
scrollTop_offset = $pointer.offset().top - $('#nav-tab-vb').height()-10;
}
$('html,body').animate({
scrollTop: scrollTop_offset
},
'slow');
}
}
}
$pointer.css('opacity', '1');
$('.pointy').click(function(e) {
e.preventDefault();
e.stopPropagation();
});
var parent = $(this).parent();
var dataCT = parent.attr('data-ct');
var dataDC = parent.attr('data-dc');
var dataTN = parent.attr('data-tn');
//if (dataCT) loai_buble = 'chuthich';
//if (dataDC) loai_buble = 'danchieu';;
//if (dataTN) loai_buble = 'thuatngu';
var loai_buble = parent.prop('nodeName').toLowerCase();
var text_html = $(this).text();
if (loai_buble=='cttd' || loai_buble=='a') {
pointer_html = '