Veckomeny fixes to Date
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -27,6 +27,12 @@ namespace Aberwyn.Controllers
|
|||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Route("budget/elkostnad")]
|
||||||
|
public IActionResult Elkostnad()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// För fallback när ingen månad/år anges
|
// För fallback när ingen månad/år anges
|
||||||
[Route("budget")]
|
[Route("budget")]
|
||||||
|
|||||||
@@ -358,7 +358,7 @@ namespace Aberwyn.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
entry.Cook = cook;
|
entry.Cook = cook;
|
||||||
|
entry.Date = FirstDateOfISOWeek(year, week).AddDays(day);
|
||||||
if (string.IsNullOrWhiteSpace(mealName))
|
if (string.IsNullOrWhiteSpace(mealName))
|
||||||
{
|
{
|
||||||
switch (mealType.ToLower())
|
switch (mealType.ToLower())
|
||||||
@@ -564,7 +564,21 @@ namespace Aberwyn.Controllers
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private static DateTime FirstDateOfISOWeek(int year, int weekOfYear)
|
||||||
|
{
|
||||||
|
DateTime jan4 = new DateTime(year, 1, 4);
|
||||||
|
int daysOffset = DayOfWeek.Thursday - jan4.DayOfWeek;
|
||||||
|
|
||||||
|
DateTime firstThursday = jan4.AddDays(daysOffset);
|
||||||
|
var cal = System.Globalization.CultureInfo.CurrentCulture.Calendar;
|
||||||
|
int firstWeek = cal.GetWeekOfYear(firstThursday, System.Globalization.CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
|
||||||
|
|
||||||
|
if (firstWeek <= 1)
|
||||||
|
weekOfYear -= 1;
|
||||||
|
|
||||||
|
DateTime result = firstThursday.AddDays(weekOfYear * 7);
|
||||||
|
return result.AddDays(-3); // tillbaka till måndag
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
70
Aberwyn/Views/Budget/Elkostnad.cshtml
Normal file
70
Aberwyn/Views/Budget/Elkostnad.cshtml
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "Elkostnad";
|
||||||
|
}
|
||||||
|
|
||||||
|
<h2>Räkna ut elkostnad</h2>
|
||||||
|
|
||||||
|
<div class="form-section">
|
||||||
|
<div class="mb-2">
|
||||||
|
<label for="spotpris">Månadens spotpris (öre/kWh):</label>
|
||||||
|
<input type="number" id="spotpris" class="form-control" step="0.01" value="52.33" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-2">
|
||||||
|
<label for="forbrukning">Förbrukning (kWh):</label>
|
||||||
|
<input type="number" id="forbrukning" class="form-control" value="350" />
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="button" class="btn btn-primary mt-2" onclick="berakna()">Beräkna</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="resultat" class="alert alert-info mt-3" style="display:none;"></div>
|
||||||
|
|
||||||
|
@section Scripts {
|
||||||
|
<script>
|
||||||
|
function berakna() {
|
||||||
|
// Inputs
|
||||||
|
let spotprisOre = parseFloat(document.getElementById("spotpris").value) || 0;
|
||||||
|
let spotprisKr = spotprisOre / 100; // omvandling öre → kr
|
||||||
|
let forbrukning = parseFloat(document.getElementById("forbrukning").value) || 0;
|
||||||
|
|
||||||
|
// Elhandel – fasta tillägg (kr/kWh)
|
||||||
|
const paslag = 0.029;
|
||||||
|
const rorliga = 0.0567;
|
||||||
|
const ursprung = 0.016;
|
||||||
|
|
||||||
|
// Elnät – fasta avgifter (kr/kWh)
|
||||||
|
const eloverforing = 0.29;
|
||||||
|
const energiskatt = 0.439;
|
||||||
|
|
||||||
|
// Fasta avgifter per månad (kr)
|
||||||
|
const elhandelFast = 39.20;
|
||||||
|
const elnatFast = 335.00;
|
||||||
|
const fastSumma = elhandelFast + elnatFast;
|
||||||
|
|
||||||
|
// Rörliga priser
|
||||||
|
let elhandelPerKwh = spotprisKr + paslag + rorliga + ursprung;
|
||||||
|
let elnatPerKwh = eloverforing + energiskatt;
|
||||||
|
let totaltPerKwh = elhandelPerKwh + elnatPerKwh;
|
||||||
|
|
||||||
|
// Kostnader
|
||||||
|
let rorligt = forbrukning * totaltPerKwh;
|
||||||
|
let totalExMoms = rorligt + fastSumma;
|
||||||
|
let moms = totalExMoms * 0.25;
|
||||||
|
let totalInklMoms = totalExMoms + moms;
|
||||||
|
|
||||||
|
// Resultat
|
||||||
|
let resultat = document.getElementById("resultat");
|
||||||
|
resultat.style.display = "block";
|
||||||
|
resultat.innerHTML = `
|
||||||
|
<h4>Resultat</h4>
|
||||||
|
<p>Rörligt (Elhandel + Elnät): ${rorligt.toFixed(2)} kr</p>
|
||||||
|
<p>Fasta avgifter: ${fastSumma.toFixed(2)} kr</p>
|
||||||
|
<p>Moms (25%): ${moms.toFixed(2)} kr</p>
|
||||||
|
<hr />
|
||||||
|
<strong>Total kostnad: ${totalInklMoms.toFixed(2)} kr</strong><br />
|
||||||
|
<small>Snittpris: ${(totalInklMoms / forbrukning).toFixed(2)} kr/kWh</small>
|
||||||
|
`;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user