impl Warehouse

This commit is contained in:
CodeSteak 2020-02-03 20:53:02 +01:00
parent 2fc0b54716
commit 58473e58a3
10 changed files with 547 additions and 2 deletions

View File

@ -18,6 +18,8 @@ import java.util.UUID;
@Controller
public class RequestController {
static int notSoRandom = 0;
@GetMapping("/")
public String home() {
return "redirect:/shop/";
@ -209,11 +211,36 @@ public class RequestController {
@GetMapping("/intern/warehouse/")
public String accountingWarehouse() {
return "/intern/warehouse/";
return "/intern/warehouse/index";
}
@GetMapping("/intern/warehouse/todo")
public String accountingWarehouseTodo() {
return "/intern/warehouse/todo";
}
@GetMapping("/intern/warehouse/addManual")
public String accountingWarehouseAddManual() {
return "/intern/warehouse/addManual";
}
@PostMapping("/intern/warehouse/progress/{id}")
public String accountingWarehouseProgressIdPost(HttpServletResponse response) {
if((notSoRandom++) % 2 == 1) {
return "redirect:/intern/warehouse/progress/450";
} else {
response.setStatus(409);
return "/intern/warehouse/error_progress_failed";
}
}
@GetMapping("/intern/warehouse/progress/{id}")
public String accountingWarehouseProgressId() {
return "/intern/warehouse/id_progress";
}
@GetMapping("/intern/warehouse/slots/")
public String accountingWarehouseSlots() {
return "/intern/warehouse/slots/index";
}
}

View File

@ -360,6 +360,8 @@ input[type="password"]::placeholder {
}
button, .button {
display: inline-block;
font-family: "Fira Mono";
font-weight: bold;
text-decoration: none;
@ -535,7 +537,7 @@ input[type="number"]:focus {
.detailgrid {
display: grid;
grid-auto-flow: dense;
grid-auto-flow: row;
min-width: 20rem;
grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
grid-template-rows: auto;
@ -842,6 +844,16 @@ input[type="number"]:focus {
display: block;
}
th.r,
td.r {
text-align: right;
}
th.l,
td.l {
text-align: left;
}
/***
THE UGLY

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.5 KiB

View File

@ -43,6 +43,15 @@
</ul>
</li>
<li><a th:href="@{/intern/suppliers/}">Lager</a>
<ul>
<li><a th:href="@{/intern/warehouse/}">Buchungen</a></li>
<li><a th:href="@{/intern/warehouse/addManual}">Manuelle Buchung</a></li>
<li><a th:href="@{/intern/warehouse/todo}">Packliste</a></li>
<li><a th:href="@{/intern/warehouse/slots/}">Inventar</a></li>
</ul>
</li>
</ul>
</ul>
</nav>

View File

@ -0,0 +1,86 @@
<!DOCTYPE html>
<html lang="de" dir="ltr" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=0.75, user-scalable=no">
<title>Manuelle Buchung</title>
<link rel="stylesheet" th:href="@{/css/ecom.css}" />
</head>
<body>
<nav th:replace="/fragments/header :: header">Header</nav>
<div class="sidebar-layout content-width">
<nav></nav>
<div>
<h1>Manuelle Buchung</h1>
</div>
</div>
<main class="sidebar-layout content-width">
<nav th:replace="/fragments/intern :: sidebar"></nav>
<div class="content-width">
<form class="detailgrid" th:action="@{/intern/warehouse/todo}">
<div class="m">
<label for="amount">Artikelnummer</label>
<input placeholder="Nr." class="full-width" type="text" name="article" value="" list="articles"/>
<datalist id="articles">
<option value="5100 - Kamera" />
<option value="5200 - Usb Stick" />
<option value="5640 - Stativ" />
</datalist>
</div>
<div class="s">
<label for="amount">Anzahl</label>
<input type="number" step="1" name="amount" value="0" />
</div>
<div class="l">
<label for="reason">Grund:</label>
<input placeholder="Grund" class="full-width" type="text" name="reason-man" value="" />
</div>
<div class="s">
<fieldset>
<label for="source">Von</label>
<fieldset>
<input type="radio" id="s-no" name="source" value="None" required>
<label for="s-no">Hinzufügen</label>
</fieldset>
<fieldset>
<input type="radio" id="s-main" name="source" value="Slot" required>
<label for="s-main">Lagerplatz</label>
<input placeholder="Nr." type="text" name="source-slot" value="" />
</fieldset>
</fieldset>
</div>
<div class="s">
<fieldset>
<label for="destination">Nach</label>
<fieldset>
<input type="radio" id="d-no" name="destination" value="None" required>
<label for="d-no">Entfernen</label>
</fieldset>
<fieldset>
<input type="radio" id="d-main" name="destination" value="Main" required>
<label for="d-main">Lagerplatz</label>
<input placeholder="Nr." type="text" name="destination-slot" value="" />
</fieldset>
</fieldset>
</div>
<div class="l">
<p>
Manuelle Buchungen können nicht rückgängig gemacht werden! <br />
Es können jedoch Gegenbuchungen erstellt werden.
</p>
<button type="submit">Buchung tätigen</button>
<button type="reset">Zurücksetzen</button>
</div>
</form>
</div>
</main>
<footer th:replace="/fragments/footer :: footer"></footer>
</body>
</html>

View File

@ -0,0 +1,29 @@
<!DOCTYPE html>
<html lang="de" dir="ltr" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>e-commerce</title>
<link rel="stylesheet" th:href="@{/css/ecom.css}"/>
<script>
window.setTimeout(function() {
window.location.href = "/intern/warehouse/todo";
}, 3000);
</script>
</head>
<body>
<body>
<main class="modal l">
<div class="detailflex l">
<h1>Wurde bereits zugewiesen.</h1>
<p>
<img th:src="@{/img/undraw_cancel_u1it.svg}"/>
</p>
<p>
Diese Seite leitet sie automatisch nach 3 Sekunden weiter.
</p>
<a class="button" th:href="@{/intern/warehouse/todo}" > Zurück </a>
</div>
</main>
<footer th:replace="/fragments/footer :: footer"></footer>
</body>
</html>

View File

@ -0,0 +1,58 @@
<!DOCTYPE html>
<html lang="de" dir="ltr" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>e-commerce</title>
<link rel="stylesheet" th:href="@{/css/ecom.css}"/>
</head>
<body>
<body>
<main class="modal l">
<div class="detailflex l">
<h1>Erfolgreich zugewiesen.</h1>
<p>
<table id="main-table">
<tr>
<th>Zeitpunkt</th>
<th>Artikel</th>
<th>Anzahl</th>
<th>Von</th>
<th>Nach</th>
</tr>
<!-------------------------------------------------------------->
<tr data-group="3">
<td>2020-01-12 12:18</td>
<td colspan="4" class="l">
<a th:href="@{/intern/customerOrders/4808}">Bestellung 8408</a>
<div>
Hans Maier <br />
Hauptstraße 12<br />
74880 Musterstadt<br />
Deutschland <br />
</div>
</td>
</tr>
<tr data-group="3">
<td><img th:src="@{/img/product-1.jpg}" class="s" /></td>
<td><a th:href="@{/intern/listedArticles/45015}">Kamera</a></td>
<td>1</td>
<td><a th:href="@{/intern/warehouse/slots/#q=1}">Lagherplatz 01</a></td>
<td> - </td>
</tr>
<tr data-group="3">
<td><img th:src="@{/img/product-2.jpg}" class="s" /></td>
<td><a th:href="@{/intern/listedArticles/4205}">Spielzeugauto</a></td>
<td>2</td>
<td><a th:href="@{/intern/warehouse/slots/#q=2}">Lagherplatz 02</a></td>
<td> - </td>
</tr>
</table>
</p>
<a class="secondary button" th:href="@{/intern/warehouse/todo}" > Fertig </a>
</div>
</main>
<footer th:replace="/fragments/footer :: footer"></footer>
</body>
</html>

View File

@ -0,0 +1,121 @@
<!DOCTYPE html>
<html lang="de" dir="ltr" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=0.75, user-scalable=no">
<title>Lager</title>
<script th:src="@{/js/filterTable.js}"></script>
<link rel="stylesheet" th:href="@{/css/ecom.css}" />
</head>
<body>
<nav th:replace="/fragments/header :: header">Header</nav>
<div class="sidebar-layout content-width">
<nav></nav>
<div>
<h1>Lagerbuchungen</h1>
</div>
</div>
<main class="sidebar-layout content-width">
<nav th:replace="/fragments/intern :: sidebar"></nav>
<div class="content-width">
<p>
Die Lagerbestände nach Artikel können Sie unter den <a th:href="@{/intern/listedArticles/}">gelisteten Artikeln</a> einsehen.
</p>
<p>
<table id="main-table">
<tr>
<th colspan="7">
<input type="text" placeholder="Filtern" class="smaller jsFilterTable full-width" data-target-id="main-table"></input>
</th>
</tr>
<tr>
<th>Zeitpunkt</th>
<th>Artikel</th>
<th>Anzahl</th>
<th>Von</th>
<th>Nach</th>
<th>Status</th>
</tr>
<!-------------------------------------------------------------->
<tr data-group="3">
<td>2020-01-12 12:18</td>
<td colspan="4" class="l">
<a th:href="@{/intern/customerOrders/4808}">Bestellung 8408</a>
</td>
<td>Auf Warteliste <br />
</td>
</tr>
<tr data-group="3">
<td></td>
<td><a th:href="@{/intern/listedArticles/45015}">Kamera</a></td>
<td>1</td>
<td><a th:href="@{/intern/warehouse/slots/#q=1}">Lagherplatz 01</a></td>
<td> - </td>
<td></td>
</tr>
<tr data-group="3">
<td></td>
<td><a th:href="@{/intern/listedArticles/4205}">Spielzeugauto</a></td>
<td>2</td>
<td><a th:href="@{/intern/warehouse/slots/#q=2}">Lagherplatz 02</a></td>
<td> - </td>
<td></td>
</tr>
<!-------------------------------------------------------------->
<tr data-group="2">
<td>2020-01-12 12:15</td>
<td colspan="4" class="l">
Manuell: Ware war defekt.
</td>
<td>In Arbeit <br />
</td>
</tr>
<tr data-group="2">
<td></td>
<td><a th:href="@{/intern/listedArticles/45015}">Kamera</a></td>
<td>1</td>
<td><a th:href="@{/intern/warehouse/slots/#q=1}">Lagherplatz 01</a></td>
<td> - </td>
<td></td>
</tr>
<!-------------------------------------------------------------->
<tr data-group="1">
<td>2020-01-12 12:11</td>
<td colspan="4" class="l">
<a th:href="@{/intern/supplierOrders/#q=4545}">Lieferung 4545</a>
</td>
<td>Fertig <br /></td>
</tr>
<tr data-group="1">
<td></td>
<td><a th:href="@{/intern/listedArticles/45015}">Kamera</a></td>
<td>10</td>
<td> - </td>
<td><a th:href="@{/intern/warehouse/slots/#q=1}">Lagherplatz 01</a></th>
<td></td>
</tr>
<tr data-group="1">
<td></td>
<td><a th:href="@{/intern/listedArticles/45015}">Kamera</a></td>
<td>1</td>
<td> - </td>
<td><a th:href="@{/intern/warehouse/slots/#q=4}">Lagherplatz 04</a></td>
<td></td>
</tr>
</table>
</p>
</div>
</main>
<footer th:replace="/fragments/footer :: footer"></footer>
</body>
</html>

View File

@ -0,0 +1,100 @@
<!DOCTYPE html>
<html lang="de" dir="ltr" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=0.75, user-scalable=no">
<title>Inventar</title>
<script th:src="@{/js/filterTable.js}"></script>
<link rel="stylesheet" th:href="@{/css/ecom.css}" />
</head>
<body>
<nav th:replace="/fragments/header :: header">Header</nav>
<div class="sidebar-layout content-width">
<nav></nav>
<div>
<h1>Inventar</h1>
</div>
</div>
<main class="sidebar-layout content-width">
<nav th:replace="/fragments/intern :: sidebar"></nav>
<div class="content-width">
<!-- Dirty -->
<div style="min-width: 10rem; display: inline-block; margin: var(--u0);">
<h3>Plätze in Verwendung</h3>
<h2>67%</h2>
</div>
<div style="min-width: 10rem; display: inline-block; margin: var(--u0);">
<h3>Lagereffizienz</h3>
<h2>43%</h2>
</div>
<div style="min-width: 10rem; display: inline-block; margin: var(--u0);">
<h3>Lagerdiversität</h3>
<h2>3</h2>
</div>
<p>
<table id="main-table">
<tr>
<th colspan="7">
<input type="text" placeholder="Filtern" class="smaller jsFilterTable full-width" data-target-id="main-table"></input>
</th>
</tr>
<tr>
<th>Lagerplatz</th>
<th>Bild</th>
<th>Artikel</th>
<th>Anzahl</th>
<th>Max.</th>
</tr>
<tr>
<td><h2>1</h2></td>
<td><img th:src="@{/img/product-1.jpg}" class="s" /></td>
<td><a th:href="@{/intern/listedArticles/45015}">Kamera</a></td>
<td>20</td>
<td>20</td>
</tr>
<tr>
<td><h2>2</h2></td>
<td><img th:src="@{/img/product-1.jpg}" class="s" /></td>
<td><a th:href="@{/intern/listedArticles/45015}">Kamera</a></td>
<td>1</td>
<td>20</td>
</tr>
<tr>
<td><h2>3</h2></td>
<td></td>
<td></td>
<td>0</td>
<td></td>
</tr>
<tr>
<td><h2>4</h2></td>
<td></td>
<td></td>
<td>0</td>
<td></td>
</tr>
<tr>
<td><h2>5</h2></td>
<td><img th:src="@{/img/product-3.jpg}" class="s" /></td>
<td><a th:href="@{/intern/listedArticles/45015}">Usb-Ding</a></td>
<td>1</td>
<td>10</td>
</tr>
<tr>
<td><h2>6</h2></td>
<td><img th:src="@{/img/product-4.jpg}" class="s" /></td>
<td><a th:href="@{/intern/listedArticles/45015}">Stativ</a></td>
<td>3</td>
<td>5</td>
</tr>
</table>
</p>
</div>
</main>
<footer th:replace="/fragments/footer :: footer"></footer>
</body>
</html>

View File

@ -0,0 +1,102 @@
<!DOCTYPE html>
<html lang="de" dir="ltr" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=0.75, user-scalable=no">
<title>Packliste</title>
<script th:src="@{/js/filterTable.js}"></script>
<link rel="stylesheet" th:href="@{/css/ecom.css}" />
</head>
<body>
<nav th:replace="/fragments/header :: header">Header</nav>
<div class="sidebar-layout content-width">
<nav></nav>
<div>
<h1>Packliste</h1>
</div>
</div>
<main class="sidebar-layout content-width">
<nav th:replace="/fragments/intern :: sidebar"></nav>
<div class="content-width">
<p>
<table id="main-table">
<tr>
<th colspan="7">
<input type="text" placeholder="Filtern" class="smaller jsFilterTable full-width" data-target-id="main-table"></input>
</th>
</tr>
<tr>
<th>Zeitpunkt</th>
<th>Artikel</th>
<th>Anzahl</th>
<th>Von</th>
<th>Nach</th>
<th>Status</th>
</tr>
<!-------------------------------------------------------------->
<tr data-group="3">
<td>2020-01-12 12:18</td>
<td colspan="4" class="l">
<a th:href="@{/intern/customerOrders/4808}">Bestellung 8408</a>
<div>
Hans Maier <br />
Hauptstraße 12<br />
74880 Musterstadt<br />
Deutschland <br />
</div>
</td>
<td>
<form th:action="@{/intern/warehouse/progress/5410}" method="post">
<button type="submit">Beginnen</button>
</form>
</td>
</tr>
<tr data-group="3">
<td><img th:src="@{/img/product-1.jpg}" class="s" /></td>
<td><a th:href="@{/intern/listedArticles/45015}">Kamera</a></td>
<td>1</td>
<td><a th:href="@{/intern/warehouse/slots/#q=1}">Lagherplatz 01</a></td>
<td> - </td>
<td>
</td>
</tr>
<tr data-group="3">
<td><img th:src="@{/img/product-2.jpg}" class="s" /></td>
<td><a th:href="@{/intern/listedArticles/4205}">Spielzeugauto</a></td>
<td>2</td>
<td><a th:href="@{/intern/warehouse/slots/#q=2}">Lagherplatz 02</a></td>
<td> - </td>
<td></td>
</tr>
<!-------------------------------------------------------------->
<tr data-group="2">
<td>2020-01-12 12:15</td>
<td colspan="4" class="l">
Manuell: Ware war defekt.
</td>
<td><a class="secondary button">Abschließen</a>
</td>
</tr>
<tr data-group="2">
<td><img th:src="@{/img/product-1.jpg}" class="s" /></td>
<td><a th:href="@{/intern/listedArticles/45015}">Kamera</a></td>
<td>1</td>
<td><a th:href="@{/intern/warehouse/slots/#q=1}">Lagherplatz 01</a></td>
<td> - </td>
<td></td>
</tr>
</table>
</p>
</div>
</main>
<footer th:replace="/fragments/footer :: footer"></footer>
</body>
</html>