This calculator is an indicative estimate, at net rates excluding VAT. It calculates one inbound and one outbound movement for the full selected period, spreading that one-time cost across the days in the period. Final rates are always confirmed in an individual quote. The unit price applies to the total pallet count within the relevant volume tier; storage is billed daily on the pallet positions actually reserved. Additional services (order picking, repacking, bonded warehousing, excise handling) are billed separately.
Parameters
pallets
months
Storage is billed daily; the monthly figure assumes 30 days.
Volume Tiers, Storage
1–100 pallets120 HUF/pallet/day
101–200 pallets115 HUF/pallet/day
201+ pallets110 HUF/pallet/day
(function(){
"use strict";
var TIERS = [
{ id: 1, min: 1, max: 100, dailyPerPallet: 120, handlingPerPallet: 580, label: '1–100 pallets' },
{ id: 2, min: 101, max: 200, dailyPerPallet: 115, handlingPerPallet: 570, label: '101–200 pallets' },
{ id: 3, min: 201, max: Infinity, dailyPerPallet: 110, handlingPerPallet: 560, label: '201+ pallets' }
];
var DAYS_PER_MONTH = 30;
var GAUGE_MAX = 500;
var fmt = new Intl.NumberFormat('en-US', { maximumFractionDigits: 0 });
function huf(n){ return fmt.format(Math.round(n)) + ' HUF'; }
var el = {
pallets: document.getElementById('pallets'),
palletsRange: document.getElementById('palletsRange'),
months: document.getElementById('months'),
monthsRange: document.getElementById('monthsRange'),
palletChips: document.querySelectorAll('#palletChips .chip'),
monthChips: document.querySelectorAll('#monthChips .chip'),
avgUnitHeadline: document.getElementById('avgUnitHeadline'),
avgUnitNote: document.getElementById('avgUnitNote'),
tierBandLabel:document.getElementById('tierBandLabel'),
tierIn: document.getElementById('tierIn'),
tierStore: document.getElementById('tierStore'),
tierOut: document.getElementById('tierOut'),
handlingTotal:document.getElementById('handlingTotal'),
handlingSub: document.getElementById('handlingSub'),
handlingPer: document.getElementById('handlingPer'),
avgMonthly: document.getElementById('avgMonthly'),
avgPer: document.getElementById('avgPer'),
avgSub: document.getElementById('avgSub'),
needle: document.getElementById('needle'),
segs: [document.getElementById('seg1'), document.getElementById('seg2'), document.getElementById('seg3')],
tiers: document.querySelectorAll('.tier')
};
function findTier(pallets){
for (var i = 0; i = TIERS[i].min && pallets <= TIERS[i].max) return TIERS[i];
}
return TIERS[TIERS.length - 1];
}
function clampInt(value, min, max, fallback){
var n = parseInt(value, 10);
if (isNaN(n)) return fallback;
if (n max) return max;
return n;
}
function needleAngle(pallets){
var p = Math.min(pallets, GAUGE_MAX);
var pos;
if (p <= 100) pos = (p / 100) * 60;
else if (p min ? ((val - min) / (max - min)) * 100 : 0;
range.style.background = 'linear-gradient(to right, var(--red) ' + pct + '%, var(--line-2) ' + pct + '%)';
}
function syncChips(list, attr, value){
for (var i = 0; i < list.length; i++){
list[i].setAttribute('aria-pressed', parseInt(list[i].getAttribute(attr), 10) === value ? 'true' : 'false');
}
}
function render(){
var pallets = clampInt(el.pallets.value, 1, 500, 1);
var months = clampInt(el.months.value, 1, 24, 1);
el.palletsRange.value = Math.min(pallets, parseInt(el.palletsRange.max, 10));
el.monthsRange.value = Math.min(months, parseInt(el.monthsRange.max, 10));
updateRangeFill(el.palletsRange);
updateRangeFill(el.monthsRange);
syncChips(el.palletChips, 'data-p', pallets);
syncChips(el.monthChips, 'data-m', months);
var tier = findTier(pallets);
for (var i = 0; i < el.tiers.length; i++){
el.tiers[i].classList.toggle('active', parseInt(el.tiers[i].getAttribute('data-tier'), 10) === tier.id);
}
for (var s = 0; s max){
input.value = max;
}
render();
});
input.addEventListener('blur', function(){
var min = parseInt(input.min, 10), max = parseInt(input.max, 10);
input.value = clampInt(input.value, min, max, min);
render();
});
}
function bindChips(list, attr, input){
for (var i = 0; i < list.length; i++){
list[i].addEventListener('click', function(){
input.value = this.getAttribute(attr);
render();
});
}
}
bindPair(el.pallets, el.palletsRange);
bindPair(el.months, el.monthsRange);
bindChips(el.palletChips, 'data-p', el.pallets);
bindChips(el.monthChips, 'data-m', el.months);
render();
})();