Pågående upphandlingar 
                                    
    Du som företagare är välkommen att delta i våra upphandlingar - en sund konkurrens är positivt för alla parter.
    Upphandlingsavdelningen är kommunens centrala upphandlings- och inköpsenhet. När Trollhättans Stad köper varor, tjänster och byggentreprenader måste vi som kommun följa Lagen om offentlig upphandling. En upphandling resulterar antingen i ett ramavtal eller ett enskilt köp.
Vi använder oss av Visma vid annonsering av upphandlingar. Du som anbudsgivare registrerar dig för att hämta ut handlingarna till upphandlingen.
Aktuella och pågående upphandlingar 
 
    
        Ny annonseringsdatabas 
Under en övergångsperiod använder Trollhättans stad två olika annonseringsdatabaser för pågående upphandlingar. Du hittar vårt nya system här:
Annonserade upphandlingar (clira.io) 
     
 
    
        
            Senast granskad 2025-10-14  av KLALIW 
        
        
            
        
     
 
                                 
                             
                         
                     
                 
             
         
     
 
    
        
            Statistical Code 
            <script type="text/javascript">
// SITEIMPROVE
    (function () {
        var sz = document.createElement('script'); sz.type = 'text/javascript'; sz.async = true;
        sz.src = '//siteimproveanalytics.com/js/siteanalyze_8055.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(sz, s);
    })();
</script>
<script type="text/javascript">
// Lyssna is clicked
$(".bapluslogo").click(function(e){
	// Siteimprove event
	var eventCategory = "Lyssna på sidan";
	var eventLabel = $('body').css('position') == 'absolute' ? "Close" : "Open";
	var eventAction = $(document).attr('title').replace(" - Trollhättans stad", "");
	
	_sz.push(['event', eventCategory, eventLabel, eventAction]);
});
// Lättläst is clicked
$("#showEasyread").click(function(e){
	// Siteimprove event
	var eventCategory = "Lättläst";
	var eventLabel = $('#showEasyread').hasClass('active') ? "Close" : "Open";
	var eventAction = $(document).attr('title').replace(" - Trollhättans stad", "");
	
	_sz.push(['event', eventCategory, eventLabel, eventAction]);
});
// Hitta snabbt is clicked
setTimeout(function() {$(".rek-link").click(function(e){
	// Siteimprove event
	var eventCategory = "Hitta snabbt";
	var eventLabel = $(document).attr('title').replace(" - Trollhättans stad", "");
	var eventAction = $(this).text();
	
	_sz.push(['event', eventCategory, eventLabel, eventAction]);
});
}, 2000);
</script>
<script type="text/javascript">
// VISITORS VOICE 
  var _paq = _paq || [];
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="//tracking.visitorsvoice.com/piwik/";
    _paq.push(['setTrackerUrl', u+'piwik.php']);
    _paq.push(['setSiteId', '39']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.type='text/javascript'; g.async=true; g.defer=true; g.src=u+'piwik.js'; s.parentNode.insertBefore(g,s);
  })();
  
</script>
<script>
// Startpage only
if ($("body").hasClass("StartPage")) {
	// Language links on startpage
	var languages_start = '<div style="float: right;position: relative;height: 2em;z-index: 100;background: #f0f0f0;padding: 0.5em;">';
	var img = '<i class="fa-solid fa-angle-right" style="margin-right:5px;"></i>';
	var eng = '<a style="margin:10px;" href="/en/homepage/">' + img + '<span class="show-for-sr">Show the article in  </span> English</a>';
	var fin = '<a style="margin:10px;" href="/fi/startsida/">' + img + '<span class="show-for-sr">Näytä artikkeli  </span> Suomi</a>';
	var swe = '<a style="margin:10px;" href="/startsida/">' + img + '<span class="show-for-sr">Visa artikeln på  </span> Svenska</a>';
	var languages_end = '</div>';
	var path = window.location.pathname;	
	switch (path) {
		case '/startsida/':
		case '/startsida':
			$('header').append(languages_start + eng + fin + languages_end);
			break;
		case '/fi/startsida/':
		case '/fi/startsida':
			$('header').append(languages_start + eng + swe + languages_end);
			break;
		case '/en/homepage/':
		case '/en/homepage':
			$('header').append(languages_start + swe + fin + languages_end);
			break;
		default:
			break;
	}
	
	// Campaign: Red (den nya) startpage-panels when black
	//$('.startpage-panels .colorBlack').css({"background-color":"#C94846"});
	
	// Campaign: Orange startpage-panels when empty
	$('.startpage-panels .colorEmpty').css({"background-color":"#F8B068"});
		
	//************************
}
</script>
<script>
// Set Language Label in header
var userLanguage = navigator.language || navigator.userLanguage;
var languageLabel;
switch (userLanguage) {
    case 'sv' :
    case 'sv-SE' :
        languageLabel = "Språk";
        break;
    case 'en' :
    case 'en-US' :
        languageLabel = "Languages";
        break;
    case 'fi' :
        languageLabel = "Kieli";
        break;
    default :
        languageLabel = "Languages";
}
$(".functionLinks ul li.colorLightYellow a strong").text($(".functionLinks ul li.colorLightYellow a strong").text().replace("Languages", languageLabel));
$("#MobileMenu ul li.colorLightYellow a strong").text($("#MobileMenu ul li.colorLightYellow a strong").text().replace("Languages", languageLabel));
</script>
<script>
// SearchPage only
if ($("body").hasClass("SearchPage")) {
	//Change background color to search tip
	var beforeTip = '</div></div></div><div class="row"><div class="block textblock full large-12 medium-12 small-12 columns"><div class="row colorLightYellow"><div class="medium-12 columns"><p>'
	var afterTip = '</p></div>'
	var oldtext = $('.searchNumberPresentation').html();
	var newtext = (oldtext.replace('<p>', beforeTip)).replace('</p>', afterTip);
	$('.searchNumberPresentation').html(newtext);
}
</script>
<style>
.opaonhover:hover, .opaonhover:focus { opacity:0.9; }
.noborder {margin-bottom:0px; line-height:0; border:none!important;}
</style>