This commit is contained in:
sungsu
2024-01-17 17:03:28 +09:00
parent ccd7d743d8
commit 9c91eb41cb
17 changed files with 1903 additions and 78 deletions

View File

@@ -0,0 +1,196 @@
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<div class="mt-5 mb-5 text-center">
<h1>출고 예정 생성</h1>
</div>
<hr>
<div class="container" style="text-align: center">
<div class="ulTag">
<div class="row">
<div class="col-12">
<input type='hidden' id="manager_id" value="83f11782-ae95-11ee-935d-0242ac110006">
<input type='hidden' id="activation" value="1">
<!--제품 관련 -->
<div class="input-group mb-3 w-40 col-centered">
<span id='Product_label' class="input-group-text">제품</span>
<input readonly id="product_name" type="text" class="form-control" placeholder="제품 검색">
<input hidden name="ProductName" id="product_id" value="${dto.product_id}">
<button id="product_search_button" class="btn-primary btn"
onclick="showSearchModals('제품 검색','stock_product_warehouse')">검색
</button>
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='Category_label' class="input-group-text">제품 코드</span>
<input readonly id="kan_code" type="text" class="form-control" placeholder="">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='quantity_name' class="input-group-text">재고량</span>
<input readonly id="quantity" type="text" class="form-control" value="${dto.quantity}">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='shipment_quantity_label' class="input-group-text">출고량</span>
<input id="shipment_quantity" type="text" class="form-control" placeholder="수량을 입력하세요">
</div>
<!--창고 관련 -->
<div class="input-group mb-3 w-40 col-centered">
<span id='Warehouse_label' class="input-group-text">창고</span>
<input readonly id="warehouse_name" type="text" class="form-control" placeholder="창고 검색">
<input hidden name="warehouse_id" id="warehouse_id" value="${dto.warehouse_id}">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='expected_delivery_date_label' class="input-group-text">출고 예정 날짜</span>
<input type="text" id="expected_delivery_date" placeholder="yyyy-MM-dd">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='delivery_date_label' class="input-group-text">출고 날짜</span>
<input type="text" id="delivery_date" placeholder="" readonly>
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='note_label' class="input-group-text">비고</span>
<textarea id="note" class="form-control" rows="5"></textarea>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12 ">
<div class="w-40 col-centered" style="text-align: right">
<button type="button" class="btn btn-success" id="submitBtn">생성</button>
<button type="button" class="btn btn-secondary" id="cancelBtn">취소</button>
</div>
</div>
</div>
</div>
<script>
function showSearchModals(title, val) {
$("#searchModalLabel").text(title);
const data = {name: val};
$.ajax({
type: 'post', // 타입 (get, post, put 등등)
url: '/out/show_modal', // 요청할 서버url
dataType: 'html', // 데이터 타입 (html, xml, json, text 등등)
data: data,
success: function (result) { // 결과 성공 콜백함수
$("#search_modal_body").html(result);
searchModalBootStrap.show();
},
error: function (request, status, error) {
alert(error)
}
});
}
$(document).ready(function () {
$("#submitBtn").on("click", function () {
var product_id = $("#product_id").val();
var quantity = $("#quantity").val();
var expected_delivery_date = $("#expected_delivery_date").val();
var delivery_date = $("#delivery_date").val();
var warehouse_id = $("#warehouse_id").val();
var manager_id = $("#manager_id").val();
var note = $("#note").val();
var activation = $("#activation").val();
var shipment_quantity = $("#shipment_quantity").val();
if (!product_id) {
alert("제품을 선택해야 합니다.");
$("#product_id").focus();
return false;
}
if (!expected_delivery_date) {
alert("출고 예정 날짜를 입력하세요.");
$("#expected_delivery_date").focus();
return false;
}
if (!quantity) {
alert("수량을 입력해야 합니다.");
$("#quantity").focus();
return false;
}
if (quantity < shipment_quantity) {
alert("출고수가 재고량보다 많을 수 없습니다.");
$("#quantity").focus();
return false;
}
$.ajax({
url: "/out/create_process",
type: "post",
data: {
"product_id": product_id,
"delivery_date":delivery_date,
"expected_delivery_date":expected_delivery_date,
"manager_id":manager_id,
"note":note,
"warehouse_id": warehouse_id,
"quantity": shipment_quantity,
"activation": activation
},
datatype: "json"
}).done(function (data) {
if (data == true) {
alert("재고 정보가 생성되었습니다.");
var form = document.createElement("form");
form.action = "/out/read";
form.method = "POST";
document.body.appendChild(form);
var input = document.createElement("input");
input.type = "hidden";
input.name = "name";
input.value = name;
form.appendChild(input);
form.submit();
window.location.href = "/out/list";
} else {
alert("재고 정보 생성에 실패하였습니다.");
}
}).fail(function () {
alert("오류가 발생했습니다.");
}).always(function () {
//
});
})
$("#cancelBtn").on("click", function () {
$(location).attr("href", "/out/list");
})
});
</script>

View File

@@ -0,0 +1,219 @@
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>출고 리스트</title>
<style>
.detailTr:hover {
background-color: #f5f5f5;
cursor: pointer;
}
</style>
</head>
<body>
<div class="body">
<div class="container-fluid">
<div class="col-12">
<div class="mt-5 mb-5 text-center">
<h1>출고 관리 리스트</h1>
</div>
<div>
<hr>
</div>
<div class="row">
<div class="container-fluid">
<div class="col-12">
<form>
<div class="input-group mb-3 w-30 col-centered">
<div class="w-25">
<select class="form-select" name="searchn" id="searchn">
<option value="0">제품명</option>
<option value="1">창고명</option>
</select>
</div>
<input type="text" name="search" id="search" class="form-control"
aria-label="Text input with dropdown button" placeholder="검색어를 입력하세요">
<input class="btn btn-info" type="submit" id="searchBtn" value="검색"/>
<!-- 페이징작업용 -->
<input type="hidden" id="searchn1" value="${searchn}">
<input type="hidden" id="search1" value="${search}">
<!-- 페이징작업용 -->
</div>
</form>
</div>
</div>
<div class="container-fluid">
<div class="row row-table">
<div class="col-12">
<table class="table">
<thead class="table-dark">
<tr>
<th>번호</th>
<th>제품명</th>
<th>수량</th>
<th>창고명</th>
<th>출고 예정 날짜</th>
<th>출고 날짜</th>
<th>비고</th>
</tr>
</thead>
<tbody>
<c:forEach items="${olist }" var="dto">
<tr class="detailTr col-7" data-id="${dto.id}">
<td class="col-1">${start} <c:set var="start" value="${start +1 }"/></td>
<td class="col-1">${dto.productName }</td>
<td class="col-1">${dto.quantity }</td>
<td class="col-1">${dto.warehouseName }</td>
<td class="col-1">${dto.expected_delivery_date }</td>
<td class="col-1">${dto.delivery_date }</td>
<td class="col-1">${dto.note }</td>
</tr>
</c:forEach>
</tbody>
</table>
</div>
</div>
</div>
<div class="container-fluid">
<div class="row row-buttons">
<div class="col-3">
</div>
<div class="col-6 d-flex justify-content-center">
<nav>
<ul class="pagination">
<c:if test="${begin > pageNum }">
<li class="page-item">
<a href="javascript:void(0);" class="page-link"
onclick="pageingFunction(this.id)" id="${begin - 1 }">&lt;</a>
</li>
</c:if>
<c:forEach begin="${begin }" end="${end }" var="i">
<li class="page-item <c:if test="${p == i}"> active </c:if>">
<a href="javascript:void(0);" class="page-link "
onclick="pageingFunction(this.id); return false;" id="${i }">${i }</a>
</li>
</c:forEach>
<c:if test="${end < totalPages }">
<li class="page-item">
<a href="javascript:void(0);" class="page-link"
onclick="pageingFunction(this.id)" id="${end + 1 }">&gt;</a>
</li>
</c:if>
</ul>
</nav>
</div>
<div class="col-3 text-end">
<button type="button" class="btn btn-primary" id="createButton">생성</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script>
$(document).ready(function () {
$("#createButton").on("click",function(){
var form = document.createElement("form");
form.action = "/out/create";
form.method = "POST";
document.body.appendChild(form);
form.submit();
});
$("body").on("click", ".detailTr", function () {
var id = $(this).data("id");
var form = document.createElement("form");
form.action = "/out/read";
form.method = "POST";
document.body.appendChild(form);
var input = document.createElement("input");
input.type = "hidden";
input.name = "id";
input.value = id;
form.appendChild(input);
form.submit();
});
//검색기능
$("#searchBtn").on("click", function () {
var searchn = $("#searchn").val();
var search = $("#search").val();
var form = document.createElement("form");
form.action = "/out/list";
form.method = "get";
var input1 = document.createElement("input");
input1.type = "hidden";
input1.name = "searchn";
input1.value = searchn;
form.appendChild(input1);
var input2 = document.createElement("input");
input2.type = "hidden";
input2.name = "search";
input2.value = search;
form.appendChild(input2);
var input3 = document.createElement("input");
input3.type = "hidden";
input3.name = "p";
input3.value = 1;
form.appendChild(input3);
document.body.appendChild(form);
form.submit();
});
});//ready
function pageingFunction(clickedId) {
var searchn1 = $("#searchn1").val();
var search1 = $("#search1").val();
var form = document.createElement("form");
form.action = "/out/list";
form.method = "get";
var input1 = document.createElement("input");
input1.type = "hidden";
input1.name = "searchn";
input1.value = searchn1;
form.appendChild(input1);
var input2 = document.createElement("input");
input2.type = "hidden";
input2.name = "search";
input2.value = search1;
form.appendChild(input2);
var input3 = document.createElement("input");
input3.type = "hidden";
input3.name = "p";
input3.value = clickedId;
form.appendChild(input3);
document.body.appendChild(form);
form.submit();
}
</script>
</body>
</html>

View File

@@ -0,0 +1,260 @@
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.10.0/jquery.timepicker.min.css">
<script src="https://code.jquery.com/jquery-3.6.4.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-timepicker/1.10.0/jquery.timepicker.min.js"></script>
<div class="mt-5 mb-5 text-center">
<h1>출고 예정 상세페이지</h1>
<div class="col-10" style="text-align: right">
<button type="button" class="btn btn-danger" id="yes_no_modal_show">삭제</button>
</div>
</div>
<hr>
<div class="container" style="text-align: center">
<div class="ulTag">
<div class="row">
<div class="col-12">
<input type="hidden" class="form-control" aria-label="id" id="id" value="${dto.id}" readonly>
<!--제품 관련 -->
<div class="input-group mb-3 w-40 col-centered">
<span id='Product_label' class="input-group-text">제품</span>
<input readonly id="product_name" type="text" class="form-control" value="${dto.product_name}">
<input hidden name="ProductName" id="product_id" value="${dto.product_id}">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='kan_code_label' class="input-group-text">제품 코드</span>
<input readonly id="kan_code" type="text" class="form-control" value="${dto.kan_code}">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='quantity_name' class="input-group-text">출고량</span>
<input readonly id="quantity" type="text" class="form-control" placeholder="수량을 입력하세요" value="${dto.quantity}">
</div>
<!--창고 관련 -->
<div class="input-group mb-3 w-40 col-centered">
<span id='Warehouse_label' class="input-group-text">창고</span>
<input readonly id="warehouse_name" type="text" class="form-control" value="${dto.warehouse_name}">
<input hidden name="warehouse_id" id="warehouse_id" value="${dto.warehouse_id}">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='expected_delivery_date_label' class="input-group-text">출고 예정 날짜</span>
<input readonly type="text" id="expected_delivery_date" value="${dto.expected_delivery_date}">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='delivery_date_label' class="input-group-text">출고 날짜</span>
<input readonly type="text" id="delivery_date" value="${dto.delivery_date}">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='note_label' class="input-group-text">비고</span>
<textarea readonly id="note" class="form-control" rows="5" value="${dto.note}"></textarea>
</div>
</div>
</div>
</div>
<div class="row col-12">
<div class="col-6 ">
<div class="w-40 col-centered" style="text-align: right">
<button type="button" class="btn btn-danger" id="outNow">출고</button>
</div>
</div>
<div class="col-6 ">
<div class="w-40 col-centered" style="text-align: left">
<button type="button" class="btn btn-success" id="checkBtn">확인</button>
<button type="button" class="btn btn-secondary" id="modifyBtn">수정</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="yes_no_modal_stock_delete" tabindex="-1" aria-labelledby="exampleModalLabel"
aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="yesNoModalLabel">삭제 하시겠습니까?</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<button id="modal_yes_button_stock_delete" type="button" class="modal_yes btn btn-primary">삭제</button>
</div>
</div>
</div>
</div>
<div class="modal fade" id="outNowModal" tabindex="-1" aria-labelledby="exampleModalLabel"
aria-hidden="true">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5" id="outNowLabel">출고하시겠습니까?</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">닫기</button>
<button id="modal_yes_button_outNow" type="button" class="modal_yes btn btn-primary">삭제</button>
</div>
</div>
</div>
</div>
<script>
function showSearchModals(title, val){
$("#searchModalLabel").text(title);
const data = { name : val};
$.ajax({
type : 'post', // 타입 (get, post, put 등등)
url : '/out/show_modal', // 요청할 서버url
dataType : 'html', // 데이터 타입 (html, xml, json, text 등등)
data : data,
success : function(result) { // 결과 성공 콜백함수
$("#search_modal_body").html(result);
searchModalBootStrap.show();
},
error : function(request, status, error) {
alert(error)
}
});
}
$(document).ready(function () {
$("#modifyBtn").on("click", function () {
var id = $("#id").val();
var form = document.createElement("form");
form.action = "/out/update";
form.method = "POST";
document.body.appendChild(form);
var input = document.createElement("input");
input.type = "hidden";
input.name = "id";
input.value = id;
form.appendChild(input);
form.submit();
})
$("#checkBtn").on("click", function () {
$(location).attr("href", "/out/list");
})
yesNoModal.yesFunction1 = deleteStockFunction;
function deleteStockFunction() {
var id = $("#id").val();
$.ajax({
url: "/out/delete",
type: "delete",
data: {
"id": id,
},
datatype: "json"
}).done(function (data) {
if (data == true) {
alert("삭제되었습니다.");
$(location).attr("href", "/out/list");
} else {
alert("정상적으로 삭제되지 않았습니다..");
}
}).fail(function () {
alert("오류가 발생했습니다.");
}).always(function () {
//
});
}//deleteCategoryFunction
const yesNoModalBootStrap = new bootstrap.Modal("#yes_no_modal_stock_delete");
$("#yes_no_modal_show").on("click", function () {
yesNoModalBootStrap.show();
});
$("#modal_yes_button_stock_delete").on("click", function () {
console.log("삭제 버튼 클릭 이벤트 실행");
yesNoModal.yesFunction1();
yesNoModalBootStrap.hide();
});
yesNoModal.yesFunction2 = outNowUpdate;
function outNowUpdate() {
var id = $("#id").val();
var expected_delivery_date = $("#expected_delivery_date").val();
// 현재 날짜와 시간을 얻기
var now = new Date();
var delivery_date = now.toISOString().slice(0, 19).replace('T', ' ');
$.ajax({
url: "/out/outNow",
type: "put",
data: {
"id": id,
"expected_delivery_date": expected_delivery_date,
"delivery_date": delivery_date
},
datatype: "json"
}).done(function (data) {
if (data == true) {
alert("출고 되었습니다.");
$(location).attr("href", "/out/list");
} else {
alert("정상적으로 출고되지 않았습니다..");
}
}).fail(function () {
alert("오류가 발생했습니다.");
}).always(function () {
//
});
}//deleteCategoryFunction
const outNowBootStrap = new bootstrap.Modal("#outNowModal");
$("#outNow").on("click", function () {
outNowBootStrap.show();
});
$("#modal_yes_button_outNow").on("click", function () {
console.log("삭제 버튼 클릭 이벤트 실행");
yesNoModal.yesFunction2();
yesNoModalBootStrap.hide();
});
});
</script>
<script>
$(function () {
// 달력을 표시할 input 요소에 대해 datepicker를 호출
$("#expected_delivery_date").datetimepicker(); // 예상 배송일에 대해 날짜 및 시간을 선택할 수 있게 함
$("#delivery_date").datetimepicker(); // 실제 배송일에 대해 날짜 및 시간을 선택할 수 있게 함
});
</script>

View File

@@ -0,0 +1,189 @@
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<div class="mt-5 mb-5 text-center">
<h1>출고 예정 수정</h1>
</div>
<hr>
<div class="container" style="text-align: center">
<div class="ulTag">
<div class="row">
<div class="col-12">
<input type="hidden" id="id" value="${dto.id }">
<input type='hidden' id="manager_id" value="83f11782-ae95-11ee-935d-0242ac110006">
<input type='hidden' id="activation" value="1">
<!--제품 관련 -->
<div class="input-group mb-3 w-40 col-centered">
<span id='Product_label' class="input-group-text">제품</span>
<input readonly id="product_name" type="text" class="form-control" placeholder="제품 검색" value="${dto.product_name}">
<input hidden name="ProductName" id="product_id" value="${dto.product_id}">
<button id="product_search_button" class="btn-primary btn"
onclick="showSearchModals('제품 검색','stock_product_warehouse')">검색
</button>
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='Category_label' class="input-group-text">제품 코드</span>
<input readonly id="kan_code" type="text" class="form-control" placeholder="" value="${dto.kan_code}">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='shipment_quantity_label' class="input-group-text">출고량</span>
<input id="quantity" type="text" class="form-control" placeholder="수량을 입력하세요" value="${dto.quantity}">
</div>
<!--창고 관련 -->
<div class="input-group mb-3 w-40 col-centered">
<span id='Warehouse_label' class="input-group-text">창고</span>
<input readonly id="warehouse_name" type="text" class="form-control" placeholder="창고 검색" value="${dto.warehouse_name}">
<input hidden name="warehouse_id" id="warehouse_id" value="${dto.warehouse_id}">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='expected_delivery_date_label' class="input-group-text">출고 예정 날짜</span>
<input type="text" id="expected_delivery_date" placeholder="yyyy-MM-dd" value="${dto.expected_delivery_date}">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='delivery_date_label' class="input-group-text">출고 날짜</span>
<input type="text" id="delivery_date" placeholder="" readonly value="${dto.expected_delivery_date}">
</div>
<div class="input-group mb-3 w-40 col-centered">
<span id='note_label' class="input-group-text">비고</span>
<textarea id="note" class="form-control" rows="5" value="${note}"></textarea>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-12 ">
<div class="w-40 col-centered" style="text-align: right">
<button type="button" class="btn btn-primary" id="updateBtn">수정 완료</button>
<button type="button" class="btn btn-secondary" id="cancelBtn">취소</button>
</div>
</div>
</div>
</div>
<script>
function showSearchModals(title, val) {
$("#searchModalLabel").text(title);
const data = {name: val};
$.ajax({
type: 'post', // 타입 (get, post, put 등등)
url: '/out/show_modal', // 요청할 서버url
dataType: 'html', // 데이터 타입 (html, xml, json, text 등등)
data: data,
success: function (result) { // 결과 성공 콜백함수
$("#search_modal_body").html(result);
searchModalBootStrap.show();
},
error: function (request, status, error) {
alert(error)
}
});
}
$(document).ready(function () {
$("#updateBtn").on("click", function () {
var id = $("#id").val();
var product_id = $("#product_id").val();
var quantity = $("#quantity").val();
var expected_delivery_date = $("#expected_delivery_date").val();
var warehouse_id = $("#warehouse_id").val();
var note = $("#note").val();
var activation = $("#activation").val();
if (!product_id) {
alert("제품을 선택해야 합니다.");
$("#product_id").focus();
return false;
}
if (!expected_delivery_date) {
alert("출고 예정 날짜를 입력하세요.");
$("#expected_delivery_date").focus();
return false;
}
$.ajax({
url: "/out/update_process",
type: "put",
data: {
"id": id,
"product_id": product_id,
"expected_delivery_date":expected_delivery_date,
"note":note,
"warehouse_id": warehouse_id,
"quantity": quantity,
"activation": activation,
},
datatype: "json"
}).done(function (data) {
if (data == true) {
alert("출고 정보가 수정되었습니다.");
var form = document.createElement("form");
form.action = "/out/read";
form.method = "POST";
document.body.appendChild(form);
var input = document.createElement("input");
input.type = "hidden";
input.name = "name";
input.value = name;
form.appendChild(input);
form.submit();
window.location.href = "/out/list";
} else {
alert("출고 정보 수정에 실패하였습니다.");
}
}).fail(function () {
alert("오류가 발생했습니다.");
}).always(function () {
//
});
})
$("#cancelBtn").on("click", function () {
var id = $("#id").val();
var form = document.createElement("form");
form.action = "/out/read";
form.method = "POST";
document.body.appendChild(form);
var input = document.createElement("input");
input.type = "hidden";
input.name = "id";
input.value = id;
form.appendChild(input);
form.submit();
})
});
</script>