- Add Docker Compose configurations for dev, prod, and standalone environments - Add database initialization scripts (init-db.sh, init-db-docker.sh) - Add enhanced start-docker-linux.sh with DB init support - Add comprehensive database initialization guide - Support for automatic dbexport.pgsql import on first run - Include safety checks for production environment
820 lines
33 KiB
Plaintext
820 lines
33 KiB
Plaintext
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||
<%@ page import="com.pms.common.utils.*"%>
|
||
<%@ page import="java.util.*" %>
|
||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||
<%@include file= "/init.jsp" %>
|
||
<%
|
||
Map info = (HashMap)(request.getAttribute("info"));
|
||
boolean isModify = true;
|
||
String actionType = "regist";
|
||
if(info!=null &&
|
||
( CommonUtils.checkNull(info.get("APPR_STATUS_NAME")).equals( "결재중" )
|
||
||CommonUtils.checkNull(info.get("APPR_STATUS_NAME")).equals( "결재완료" )
|
||
)
|
||
){
|
||
isModify = false;
|
||
actionType = "";
|
||
}
|
||
%>
|
||
<c:set var="isModify" value="<%= isModify %>"/>
|
||
<c:set var="actionType" value="<%= actionType %>"/>
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<style>
|
||
.input_title{
|
||
text-align: left !important;
|
||
}
|
||
.borderBox input {
|
||
font-size: 13px;
|
||
}
|
||
|
||
#drawCanvas {
|
||
width: 99%; /* 캔버스의 가로 크기를 화면의 50%로 설정 */
|
||
height: 18%; /* 높이를 자동으로 조정하여 가로세로 비율 유지 */
|
||
border: 1px solid black;
|
||
}
|
||
.in_table_scroll_wrap table td{
|
||
padding-left: 0px
|
||
}
|
||
|
||
|
||
/* 세로 방향 프린트 스타일 */
|
||
@media print and (orientation: portrait) {
|
||
.in_table_scroll_wrap._table1 {
|
||
width: 98.6% !important;
|
||
margin-left: 10px !important;
|
||
border-bottom: 1px solid #a4a4a4;
|
||
}
|
||
.in_table_scroll_wrap._table2 {
|
||
min-height: 570px !important;
|
||
}
|
||
/* 나머지 세로 방향 스타일... */
|
||
}
|
||
|
||
/* 가로 방향 프린트 스타일 */
|
||
@media print and (orientation: landscape) {
|
||
.in_table_scroll_wrap._table1 {
|
||
width: 98.6% !important; /* 예시: 가로 방향에서는 전체 너비 사용 */
|
||
margin-left: 0 !important;
|
||
position: relative;
|
||
left:10px
|
||
}
|
||
.in_table_scroll_wrap._table2 {
|
||
min-height:245px !important; /* 예시: 가로 방향에서는 높이 줄임 */
|
||
}
|
||
.input_title {
|
||
font-size: 11px;
|
||
}
|
||
input[type="text"] {
|
||
font-size: 11px;
|
||
}
|
||
td.align_l {
|
||
font-size: 11px;
|
||
}
|
||
}
|
||
@media print {
|
||
.btn_wrap {
|
||
display: none;
|
||
}
|
||
.input_title {
|
||
font-size: 10px;
|
||
}
|
||
input[type="text"] {
|
||
font-size: 9px;
|
||
}
|
||
td.align_l {
|
||
font-size: 9px;
|
||
}
|
||
body {
|
||
font-family: Times, serif;
|
||
color: black;
|
||
}
|
||
.no-print {
|
||
display: none;
|
||
}
|
||
.print-only {
|
||
display: block;
|
||
}
|
||
.plm_thead {
|
||
color: #000;
|
||
}
|
||
.in_table_scroll_wrap {
|
||
height: auto !important;
|
||
overflow: visible !important;
|
||
max-height: none !important;
|
||
}
|
||
}
|
||
</style>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
||
<title><%=Constants.SYSTEM_NAME%></title>
|
||
<script>
|
||
var normalArr = new Array();
|
||
|
||
$(document).ready(function(){
|
||
|
||
$('.select2').select2();
|
||
fnc_datepick();
|
||
|
||
fn_getApprLine(); //결재라인
|
||
|
||
$("#btn_close").click(function(){
|
||
self.close();
|
||
opener.fn_search();
|
||
});
|
||
|
||
<% if(isModify){ %>
|
||
$("#btnSave" ).click(function(){ saveOEMInfo(); });
|
||
|
||
$("input:text[numberOnly]").on("keyup", function() {
|
||
$(this).val(fnc_addComma($(this).val().replace(/[^0-9]/g,"")));
|
||
});
|
||
|
||
//$("#NEGO_PRICE_ALL").val();
|
||
|
||
$("#DISCOUNT_PERCENTAGE").change(function(){
|
||
var discountPercentage = $(this).val().replace(/,/gi,"");
|
||
var discountPrice = $("#DISCOUNT_PRICE").val().replace(/,/gi,"");
|
||
|
||
var invDiscountPrice = (discountPrice * discountPercentage ) / 100
|
||
invDiscountPrice = Math.round(invDiscountPrice);
|
||
|
||
var totalPrice = $("#TOTAL_PARTNER_PRICE_SUM").val().replace(/,/gi,"");
|
||
var negoPriceAll = totalPrice - invDiscountPrice;
|
||
negoPriceAll = Math.round(negoPriceAll);
|
||
|
||
/* alert("discountPercentage:"+discountPercentage);
|
||
alert("discountPrice:"+discountPrice);
|
||
alert("invDiscountPrice:"+invDiscountPrice);
|
||
alert("totalPrice:"+totalPrice);
|
||
alert("negoPriceAll:"+negoPriceAll); */
|
||
|
||
$("#INV_DISCOUNT_PRICE").val( numberWithCommas(invDiscountPrice) );
|
||
//$("#INV_DISCOUNT_PRICE").trigger("change");
|
||
$("#NEGO_PRICE_ALL").val( numberWithCommas(negoPriceAll) );
|
||
$("#NEGO_VAT_PRICE_ALL").val( numberWithCommas(Math.round(negoPriceAll*0.1)) );
|
||
$("#NEGO_PRICE_ALL").trigger("change");
|
||
});
|
||
|
||
$("#INV_DISCOUNT_PRICE").change(function(){
|
||
var invDiscountPrice = $(this).val().replace(/,/gi,"");
|
||
var discountPrice = $("#DISCOUNT_PRICE").val().replace(/,/gi,"");
|
||
|
||
var discountPercentage = invDiscountPrice * 100 / discountPrice
|
||
discountPercentage = Math.round(discountPercentage);
|
||
|
||
$("#DISCOUNT_PERCENTAGE").val( numberWithCommas(discountPercentage) );
|
||
$("#DISCOUNT_PERCENTAGE").trigger("change");
|
||
});
|
||
|
||
$("#PERCENTAGE").change(function(){/* TOTAL_PARTNER_PRICE_SUM */
|
||
//var totalPrice = $("#TOTAL_SUPPLY_UNIT_PRICE").val().replace(/,/gi,"");
|
||
//var totalPrice = $("#TOTAL_PRICE_ALL").val().replace(/,/gi,"");
|
||
var negoPriceAll = $("#NEGO_PRICE_ALL").val().replace(/,/gi,"");
|
||
if(negoPriceAll == ""){
|
||
var totalPrice = $("#TOTAL_PARTNER_PRICE_SUM").val().replace(/,/gi,"");
|
||
//var totalPrice = $("#TOTAL_PARTNER_PRICE_SUM").val().replace(/,/gi,"")*1.1;
|
||
}else{
|
||
var totalPrice = negoPriceAll;
|
||
}
|
||
var percentage = $(this).val().replace(/,/gi,"");
|
||
var requestAmount = (totalPrice * percentage * 1.1) / 100
|
||
requestAmount = Math.round(requestAmount);
|
||
|
||
$("#REQUEST_AMOUNT").val( numberWithCommas(requestAmount) );
|
||
$("#REQUEST_AMOUNT").trigger("change");
|
||
$("#displayRequestAmount").val(numberWithCommas(requestAmount));
|
||
//alert("totalPrice:"+totalPrice);
|
||
//alert("percentage:"+percentage);
|
||
//alert("requestAmount:"+requestAmount);
|
||
});
|
||
|
||
$("#REQUEST_AMOUNT").change(function(){
|
||
var requestAmountSum = $("#REQUEST_AMOUNT_SUM").val().replace(/,/gi,"");
|
||
var total_supply_unit_price = $("#TOTAL_SUPPLY_UNIT_PRICE").val().replace(/,/gi,"");
|
||
var requestAmount = $(this).val().replace(/,/gi,"");
|
||
|
||
var check = total_supply_unit_price*1.1 - requestAmountSum - requestAmount
|
||
//alert("requestAmountSum:"+requestAmountSum);
|
||
//alert("total_supply_unit_price:"+total_supply_unit_price);
|
||
//alert("requestAmount:"+requestAmount);
|
||
if(check < 0){
|
||
Swal.fire("요청금액은 할인금액 적용 공급가액을 넘을 수 없습니다.");
|
||
$("#REQUEST_AMOUNT").val( 0 );
|
||
return false;
|
||
}
|
||
});
|
||
|
||
fn_getInvoicePartList("${resultMap.OBJID}","${param.bom_report_objid}");
|
||
|
||
$("#btnAppr").click(function(){ //결재상신
|
||
if(fnc_valitate("form1")){
|
||
Swal.fire({
|
||
title: '선택된 데이터를 승인요청 하시겠습니까?',
|
||
text: '',
|
||
icon: 'warning',
|
||
|
||
showCancelButton: true, // cancel버튼 보이기. 기본은 원래 없음
|
||
confirmButtonColor: '#3085d6', // confrim 버튼 색깔 지정
|
||
cancelButtonColor: '#d33', // cancel 버튼 색깔 지정
|
||
confirmButtonText: '확인', // confirm 버튼 텍스트 지정
|
||
cancelButtonText: '취소', // cancel 버튼 텍스트 지정
|
||
reverseButtons: false, // 버튼 순서 거꾸로
|
||
|
||
}).then(result => {
|
||
// 만약 Promise리턴을 받으면,
|
||
if (result.isConfirmed) { // 만약 모달창에서 confirm 버튼을 눌렀다면
|
||
var objId = "${info.INVOICE_OBJID}";
|
||
var title = "${info.PURCHASE_ORDER_NO}"+ " ${param.GROUPSEQ}" + " INOVICE";
|
||
var salesMngUser = "${info.SALES_MNG_USER_ID}";
|
||
normalArr.push(salesMngUser);
|
||
$.ajax({
|
||
url: "/approval/approvalProc.do",
|
||
method: 'post',
|
||
data: {
|
||
"approvalTitle":title
|
||
, "approvalDescription":$("#approvalDescription").val()
|
||
, "targetObjId":objId
|
||
, "targetObjIds":$("#targetObjIds").val()
|
||
, "targetType":"INVOICE"
|
||
, "normalArr":normalArr
|
||
, "helpArr":""
|
||
, "refArr":""
|
||
},
|
||
dataType: 'json',
|
||
success: function(data) {
|
||
//Swal.fire(data.msg);
|
||
alert(data.msg);
|
||
opener.fn_search();
|
||
self.close(0);
|
||
},
|
||
error: function(jqxhr, status, error){
|
||
}
|
||
});
|
||
}
|
||
});
|
||
//window.open("/approval/registApproval.do?targetType=INVOICE&targetObjId="+objId+"&approvalTitle="+title+"&callbackFnc=fn_save_appr_process","registApproval","width=700,height=700");
|
||
}
|
||
});
|
||
<% }else{ %>
|
||
|
||
<% } %>
|
||
|
||
var isReg = fnc_isEmpty('${info.INVOICE_OBJID}');
|
||
var INVOICE_STATUS = '${info.INVOICE_STATUS}';
|
||
var actionType = '${param.actionType}';
|
||
//alert(isReg + ":" + INVOICE_STATUS);
|
||
if('view' != actionType && (isReg || 'create' == INVOICE_STATUS)){
|
||
calcPrice(isReg);
|
||
}
|
||
|
||
var SIGN = '${info.SIGN}';
|
||
var SIGN_WIDTH = '${info.SIGN_WIDTH}';
|
||
var SIGN_HEIGHT = '${info.SIGN_HEIGHT}';
|
||
//alert(SIGN);
|
||
if (SIGN) {
|
||
//fnc_drawImageOnCanvas('drawCanvas', SIGN, SIGN_WIDTH, SIGN_HEIGHT);
|
||
fnc_resizeAndDraw('drawCanvas', SIGN, SIGN_WIDTH, SIGN_HEIGHT);
|
||
}
|
||
|
||
// 삭제 버튼 클릭 이벤트
|
||
$('#clearButton').on('click', function(event) {
|
||
// 기본 동작 방지
|
||
event.preventDefault();
|
||
// 캔버스를 클리어합니다.
|
||
clearCanvas();
|
||
});
|
||
|
||
});
|
||
|
||
function calcPrice(isReg){
|
||
//var discountPercentage = $(this).val().replace(/,/gi,"");
|
||
var discountPercentage = 100;
|
||
var discountPrice = $("#DISCOUNT_PRICE").val().replace(/,/gi,""); //DISCOUNT_PRICE_ALL
|
||
//var DISCOUNT_PRICE_ALL = Number(fnc_checkNullDefaultValue('${info.DISCOUNT_PRICE_ALL}', '0'));
|
||
|
||
var invDiscountPrice = (discountPrice * discountPercentage ) / 100
|
||
invDiscountPrice = Math.round(invDiscountPrice);
|
||
|
||
var INV_DISCOUNT_PRICE_SUM = Number(fnc_checkNullDefaultValue('${info.INV_DISCOUNT_PRICE_SUM}', '0')); //할인금액 전체
|
||
var INV_DISCOUNT_PRICE_SEQ = Number(fnc_checkNullDefaultValue('${info.INV_DISCOUNT_PRICE_SEQ}', '0')); //할인금액 이건
|
||
if(isReg && INV_DISCOUNT_PRICE_SUM > INV_DISCOUNT_PRICE_SEQ){ //신규등록
|
||
INV_DISCOUNT_PRICE_SUM = INV_DISCOUNT_PRICE_SUM - INV_DISCOUNT_PRICE_SEQ;
|
||
}
|
||
invDiscountPrice = invDiscountPrice - (INV_DISCOUNT_PRICE_SUM - INV_DISCOUNT_PRICE_SEQ);
|
||
|
||
var totalPrice = $("#TOTAL_PARTNER_PRICE_SUM").val().replace(/,/gi,"");
|
||
var negoPriceAll = totalPrice - invDiscountPrice;
|
||
negoPriceAll = Math.round(negoPriceAll);
|
||
//alert(totalPrice + ":" + invDiscountPrice + ":" + negoPriceAll + "(" + INV_DISCOUNT_PRICE_SUM + ":" + INV_DISCOUNT_PRICE_SEQ);
|
||
|
||
/* alert("discountPercentage:"+discountPercentage);
|
||
alert("discountPrice:"+discountPrice);
|
||
alert("invDiscountPrice:"+invDiscountPrice);
|
||
alert("totalPrice:"+totalPrice);
|
||
alert("negoPriceAll:"+negoPriceAll); */
|
||
|
||
$("#INV_DISCOUNT_PRICE").val( numberWithCommas(invDiscountPrice) );
|
||
//$("#INV_DISCOUNT_PRICE").trigger("change");
|
||
$("#NEGO_PRICE_ALL").val( numberWithCommas(negoPriceAll) );
|
||
$("#NEGO_VAT_PRICE_ALL").val( numberWithCommas(Math.round(negoPriceAll*0.1)) );
|
||
$("#displayRequestAmount").val(numberWithCommas(negoPriceAll));
|
||
$("#REQUEST_AMOUNT").val(numberWithCommas(negoPriceAll));
|
||
}
|
||
|
||
//상신된 결재라인가져오기
|
||
function fn_getApprLine(){
|
||
if(fnc_isEmpty('${info.INVOICE_OBJID}')){
|
||
return;
|
||
}
|
||
$.ajax({
|
||
url:"/common/getApprovalLine.do",
|
||
type:"POST",
|
||
data:{"objId":"${info.INVOICE_OBJID}"},
|
||
dataType:"json",
|
||
async:false,
|
||
success:function(data){
|
||
$.each(data.RESULT, function(i,o){
|
||
if(i==0){
|
||
$("#appr"+i ).text( o.WRITER );
|
||
$("#appr"+i+"_date").text( o.REGDATE );
|
||
}
|
||
$("#appr"+(i+1) ).text( o.TARGET_USER_NAME );
|
||
$("#appr"+(i+1)+"_date").text( fnc_checkNull(o.PROC_DATE)!=""?o.PROC_DATE:" " );
|
||
});
|
||
},
|
||
error: function(jqxhr, status, error){
|
||
}
|
||
});
|
||
}
|
||
|
||
function fn_save_appr_process(){
|
||
$("#status").val("0000101"); //결재중
|
||
fn_save_process();
|
||
}
|
||
function fn_save_process(){
|
||
|
||
$("input[name*='BALANCE']").each(function(){
|
||
$(this).val($(this).val().replace(/,/gi,""));
|
||
});
|
||
$("input[name*='AMOUNT']").each(function(){
|
||
$(this).val($(this).val().replace(/,/gi,""));
|
||
});
|
||
$("input[name*='TOTAL_SUM']").each(function(){
|
||
$(this).val($(this).val().replace(/,/gi,""));
|
||
});
|
||
$("input[name*='PRICE']").each(function(){
|
||
$(this).val($(this).val().replace(/,/gi,""));
|
||
});
|
||
$("input[name*='ALL']").each(function(){
|
||
$(this).val($(this).val().replace(/,/gi,""));
|
||
});
|
||
|
||
//합계 콤마 제거
|
||
//$("input[id^=TOTAL]", $(".footrow")).each(function(i,o){ $(this).val( $(this).val().replaceAll(",","") ); });
|
||
|
||
$.ajax({
|
||
url:"/supplyChainMgmt/invoiceIssuance.do",
|
||
type:"POST",
|
||
data:$("#form1").serialize(),
|
||
dataType:"json",
|
||
async:true,
|
||
success:function(data){
|
||
if(data.result!=''){
|
||
alert('저장되었습니다');
|
||
}
|
||
opener.fn_search();
|
||
self.close();
|
||
},
|
||
error: function(jqxhr, status, error){
|
||
}
|
||
});
|
||
}
|
||
|
||
function saveOEMInfo(){
|
||
if(fnc_valitate("form1")){
|
||
if(_TOTAL_QTY < 1){
|
||
Swal.fire('입고된 건이 없습니다.');
|
||
return;
|
||
}
|
||
//var PRICE_SUM = $("#PRICE_SUM").val();
|
||
var PRICE_SUM = $("#displayRequestAmount").val();
|
||
if(fnc_isEmpty(PRICE_SUM) || PRICE_SUM == '0'){
|
||
Swal.fire('발급할 금액이 없습니다.');
|
||
return;
|
||
}
|
||
if(confirm("저장하시겠습니까?")){
|
||
fn_save_process();
|
||
}
|
||
}
|
||
}
|
||
|
||
var _TOTAL_QTY = 0;
|
||
function fn_getInvoicePartList(masterObjId,bomObjId){
|
||
|
||
$("#partListArea").empty();
|
||
var requestStatus = $("#STATUS").val();
|
||
|
||
var appendText = "";
|
||
|
||
$.ajax({
|
||
url:"/supplyChainMgmt/getInvoiceTargetList.do",
|
||
type:"POST",
|
||
data:{"INVOICE_OBJID":"${info.INVOICE_OBJID}","PURCHASE_ORDER_MASTER_OBJID":"${info.OBJID}", "GROUPSEQ":"${param.GROUPSEQ}"},
|
||
dataType:"json",
|
||
async:false,
|
||
success:function(data){
|
||
var resultData = data;
|
||
|
||
$.each(resultData, function(i){
|
||
console.log("resultData["+i+"]:"+resultData[i]);
|
||
|
||
//var RNUM = fnc_checkNull(resultData[i].RNUM);
|
||
var rowObjId = fnc_checkNull(resultData[i].OBJID);
|
||
var PART_OBJID = fnc_checkNull(resultData[i].PART_OBJID);
|
||
var PART_NO = fnc_checkNull(resultData[i].PART_NO);
|
||
var PART_NAME = fnc_checkNull(resultData[i].PART_NAME);
|
||
var SPEC = fnc_checkNull(resultData[i].SPEC);
|
||
var QTY = fnc_checkNull(resultData[i].RECEIPT_QTY);
|
||
var RECEIPT_DATE = fnc_checkNull(resultData[i].RECEIPT_DATE);
|
||
var UNIT_PRICE = fnc_checkNull(resultData[i].TOTAL_SUM_PRICE);
|
||
var PARTNER_PRICE = fnc_checkNull(resultData[i].TOTAL_PARTNER_PRICE);
|
||
var VAT_PRICE = fnc_checkNull(resultData[i].TOTAL_PARTNER_VAT_PRICE);
|
||
var REMARK = fnc_checkNull(resultData[i].REMARK);
|
||
|
||
//var SALES_REQUEST_MASTER_OBJID = fnc_checkNull(resultData[i].SALES_REQUEST_MASTER_OBJID);
|
||
|
||
_TOTAL_QTY += Number(QTY);
|
||
|
||
appendText += " <tr class='dataTr' id='"+rowObjId+"'>";
|
||
appendText += " <input type='hidden' name='OBJID' value='"+rowObjId+"'class='TARGET_OBJID'>";
|
||
appendText += " <input type='hidden' name='PART_OBJID_"+rowObjId+"' value='"+PART_OBJID+"'>";
|
||
appendText += " <td class='align_l'>";
|
||
appendText += " <input type='text' name='RECEIPT_DATE_"+rowObjId+"' value='"+RECEIPT_DATE+"'style='text-align:center;'>";
|
||
appendText += " </td>";
|
||
appendText += " <td class='align_l'>";
|
||
appendText += " <input type='text' name='PART_NO_"+rowObjId+"' value='"+PART_NO+"'>";
|
||
appendText += " </td>";
|
||
appendText += " <td class='align_l'>";
|
||
appendText += " <input type='text' name='PART_NAME_"+rowObjId+"' value='"+PART_NAME+"'>";
|
||
appendText += " </td>";
|
||
appendText += " <td class='align_l'>";
|
||
appendText += " <input type='text' name='SPEC_"+rowObjId+"' value='"+SPEC+"'style='text-align:center;'>";
|
||
appendText += " </td>";
|
||
appendText += " <td class='align_c'>";
|
||
appendText += " <input type='text' name='QTY_"+rowObjId+"' value='"+QTY+"' style='text-align:center;'>";
|
||
appendText += " </td>";
|
||
appendText += " <td class='align_r4'>";
|
||
appendText += " <input type='text' name='UNIT_PRICE_"+rowObjId+"' value='"+numberWithCommas(UNIT_PRICE)+"' style='text-align:right;'>";
|
||
appendText += " </td>";
|
||
appendText += " <td class='align_r4'>";
|
||
appendText += " <input type='text' name='PARTNER_PRICE_"+rowObjId+"' value='"+numberWithCommas(PARTNER_PRICE)+"' style='text-align:right;'>";
|
||
appendText += " </td>";
|
||
appendText += " <td class='align_r4'>";
|
||
appendText += " <input type='text' name='VAT_PRICE_"+rowObjId+"' value='"+numberWithCommas(VAT_PRICE)+"'style='text-align:right;'>";
|
||
appendText += " </td>";
|
||
appendText += " <td class='align_r4'>";
|
||
appendText += " <input type='text' name='REMARK_"+rowObjId+"' value='"+REMARK+"'>";
|
||
appendText += " </td>";
|
||
appendText += " </tr>";
|
||
|
||
|
||
//fnc_getSupplyCodeListAppend("PARTNER_OBJID_"+rowObjId, PARTNER_OBJID);
|
||
//fn_addBomPart("PART_OBJID_"+rowObjId, PART_NO);
|
||
});
|
||
$("#partListArea").append(appendText);
|
||
|
||
/* $.each(resultData, function(i){
|
||
var rowObjId = fnc_checkNull(resultData[i].OBJID);
|
||
var PART_OBJID = fnc_checkNull(resultData[i].PART_OBJID);
|
||
var PARTNER_OBJID = fnc_checkNull(resultData[i].PARTNER_OBJID);
|
||
fnc_getAdminSupCdListAppend("", "PARTNER_OBJID_"+rowObjId, PARTNER_OBJID);
|
||
$("#PARTNER_OBJID_"+rowObjId).val(PARTNER_OBJID);
|
||
fn_addBomPart("PART_OBJID_"+rowObjId, PART_OBJID, "PART_NAME_"+rowObjId,"");
|
||
}); */
|
||
$(".select2").select2();
|
||
},
|
||
error: function(jqxhr, status, error){
|
||
}
|
||
|
||
});
|
||
//$("#partListArea").append(appendText);
|
||
}
|
||
|
||
|
||
|
||
// Function to resize and draw the large canvas content onto the small canvas
|
||
function fnc_resizeAndDraw(id, imageData, originalWidth, originalHeight) {
|
||
if(originalWidth && originalWidth){
|
||
const img = new Image();
|
||
img.onload = () => {
|
||
var canvas = document.getElementById(id);
|
||
var ctx = canvas.getContext('2d');
|
||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||
ctx.drawImage(img, 0, 0, originalWidth, originalHeight, 0, 0, canvas.width, canvas.height);
|
||
};
|
||
img.src = imageData;
|
||
}else{
|
||
fnc_drawImageOnCanvas(id, imageData);
|
||
}
|
||
}
|
||
//캔버스에 이미지를 그리는 함수
|
||
function fnc_drawImageOnCanvas(id, imageData) {
|
||
// 이미지 객체 생성
|
||
var image = new Image();
|
||
// 이미지 데이터 할당
|
||
image.src = imageData;
|
||
|
||
// 이미지가 로드된 후에 캔버스에 그리기
|
||
image.onload = function() {
|
||
var canvas = document.getElementById(id);
|
||
var ctx = canvas.getContext('2d');
|
||
// 이미지를 캔버스에 그립니다.
|
||
ctx.drawImage(image, 0, 0);
|
||
};
|
||
}
|
||
// 캔버스 초기화 함수
|
||
function fnc_clearCanvas(id) {
|
||
var canvas = document.getElementById(id);
|
||
var ctx = canvas.getContext('2d');
|
||
// 캔버스 영역을 클리어합니다.
|
||
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
||
}
|
||
function fnc_startup(id) {
|
||
const el = document.getElementById(id);
|
||
el.addEventListener("touchstart", handleStart);
|
||
el.addEventListener("touchend", handleEnd);
|
||
el.addEventListener("touchcancel", handleCancel);
|
||
el.addEventListener("touchmove", handleMove);
|
||
}
|
||
|
||
</script>
|
||
</head>
|
||
<body>
|
||
<form name="form1" id="form1" action="" method="post">
|
||
<input type="hidden" name="INVOICE_OBJID" id="INVOICE_OBJID" value="${info.INVOICE_OBJID}">
|
||
<input type="hidden" name="PARENT_OBJID" value="${info.OBJID}">
|
||
<input type="hidden" name="GROUP_SEQ" value="${param.GROUPSEQ}">
|
||
<input type="hidden" name="APPRSTATUS" value="${param.APPRSTATUS}">
|
||
<section>
|
||
<div class="plm_menu_name" style="vertical-align:middle; height:90px; margin-top:-11px;">
|
||
<h2 style="text-align:center; margin:10px;">
|
||
<span style="font-size:28px;text-decoration-line: underline; text-decoration-style: double;">거 래 명 세 표</span>
|
||
</br>[공급 받는 자 보관용]
|
||
</h2>
|
||
<div style="font-size:13px; width:200px;"><p style="margin: 37 0 0 2"><b>발주서번호 : ${info.PURCHASE_ORDER_NO} ${param.GROUPSEQ}차</b></p></div>
|
||
</div>
|
||
|
||
<div id="businessPopupFormWrap1" style="display: flex; border: none;">
|
||
<div style="width:50%; float:left; margin-top:5px; border-top: 1px solid #ccc;">
|
||
<table class="plm_table3" >
|
||
<colgroup>
|
||
<col width="6.8%" />
|
||
<col width="10%" />
|
||
<col width="10%" />
|
||
<col width="10%" />
|
||
</colgroup>
|
||
<tr>
|
||
<td class="input_title">일 자</td>
|
||
<td class="align_l">2023-12-25</td>
|
||
<td class="input_title">등 록 번 호</td>
|
||
<td class="align_l">514-81-95155</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">거 래 처</td>
|
||
<td class="align_l" colspan="3">우성에스이주식회사</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">주 소</td>
|
||
<td class="align_l" colspan="3">대구광역시 달성군 다사읍 세천로3길 28</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="input_title">전 화 번 호</td>
|
||
<td class="align_l">053-585-5710</td>
|
||
<td class="input_title">팩 스 번 호</td>
|
||
<td class="align_l">053-585-5711</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">합 계 금 액</td>
|
||
<td colspan="3" class="align_r4"><input type="text" name="displayRequestAmount" id="displayRequestAmount" value="<fmt:formatNumber value="${info.REQUEST_AMOUNT}" pattern="#,###" />" style="text-align:right;" readonly/></td>
|
||
<input type="hidden" name="PRICE_SUM" value="${SUM_PRICE_MAP.TOTAL_PRICE_SUM}"/>
|
||
<input type="hidden" name="TOTAL_REAL_SUPPLY_VAT_PRICE" value="${info.TOTAL_REAL_SUPPLY_VAT_PRICE}" />
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
<div style="width:50%;float:right;margin-top: 5px;border-top: 1px solid #ccc;" >
|
||
<table class="plm_table3 borderBox" >
|
||
<colgroup>
|
||
<col width="8%" />
|
||
<col width="15%" />
|
||
<col width="10%" />
|
||
<col width="15%" />
|
||
</colgroup>
|
||
<tr>
|
||
<td class="input_title">등 록 번 호</td>
|
||
<td colspan="3"><input type="text" name="SUPPLY_BUS_NO" id="SUPPLY_BUS_NO" value="${info.SUPPLY_BUS_NO }" readonly /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">상 호</td>
|
||
<td colspan=""><input type="text" name="PARTNER_NAME" id="PARTNER_NAME" value="${info.PARTNER_NAME }" readonly /></td>
|
||
<td class="input_title">성 명</td>
|
||
<td colspan=""><input type="text" name="SUPPLY_USER_NAME" id="SUPPLY_USER_NAME" value="${info.SUPPLY_USER_NAME }" readonly /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">주 소</td>
|
||
<td colspan="3"><input type="text" name="SUPPLY_ADDR" id="SUPPLY_ADDR" value="${info.SUPPLY_ADDR }" readonly /></td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td class="input_title">업 태</td>
|
||
<td><input type="text" name="MY_COMPANY_BUS_NAME" id="MY_COMPANY_BUS_NAME" value="${info.MY_COMPANY_BUS_NAME }" readonly /></td>
|
||
<td class="input_title">종목</td>
|
||
<td ><input type="text" name="MY_COMPANY_SUPPLY_STOCKNAME" id="MY_COMPANY_SUPPLY_STOCKNAME" value="${info.MY_COMPANY_SUPPLY_STOCKNAME }" readonly /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">전 화 번 호</td>
|
||
<td><input type="text" name="SUPPLY_USER_TEL" id="SUPPLY_USER_TEL" value="${info.SUPPLY_USER_TEL }" readonly /></td>
|
||
<td class="input_title">팩 스 번 호</td>
|
||
<td><input type="text" name="SUPPLY_USER_FAX" id="SUPPLY_USER_FAX" value="${info.SUPPLY_USER_FAX }" readonly /></td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
<div class="plm_table_wrap">
|
||
<div class="in_table_scroll_wrap _table1" style="height:26px; width:98%; margin-left:10px;">
|
||
<table class="plm_table3" >
|
||
<colgroup>
|
||
<col width="7%" />
|
||
<col width="15%" />
|
||
<col width="12%" />
|
||
<col width="11%" />
|
||
<col width="4%" />
|
||
<col width="8%" />
|
||
<col width="8%" />
|
||
<col width="8%" />
|
||
<col width="10%" />
|
||
</colgroup>
|
||
<thead>
|
||
<tr class="plm_thead">
|
||
<td>월일</td>
|
||
<td>품목</td>
|
||
<td>품명</td>
|
||
<td>규격</td>
|
||
<td>수량</td>
|
||
<td>단가</td>
|
||
<td>공급가액</td>
|
||
<td>세액</td>
|
||
<td>비고</td>
|
||
</tr>
|
||
</thead>
|
||
</table>
|
||
</div>
|
||
<div class="in_table_scroll_wrap _table2" style="min-height: 400px;width:98.6%;margin-left:10px;border-bottom:none;">
|
||
<table class="plm_table3">
|
||
<colgroup>
|
||
<col width="7%" />
|
||
<col width="15%" />
|
||
<col width="12%" />
|
||
<col width="11%" />
|
||
<col width="4%" />
|
||
<col width="8%" />
|
||
<col width="8%" />
|
||
<col width="8%" />
|
||
<col width="10%" />
|
||
</colgroup>
|
||
<tbody id="partListArea">
|
||
<%-- <c:choose>
|
||
<c:when test="${!empty LIST}">
|
||
<c:forEach var="item" items="${LIST}" varStatus="status">
|
||
<tr>
|
||
<td>${item.RECEIPT_DATE}</td>
|
||
<td>${item.PART_NO}</td>
|
||
<td>${item.SPEC}</td>
|
||
<td class="align_r4"><fmt:formatNumber value="${item.RECEIPT_QTY}" pattern="#,###" /></td>
|
||
<td class="align_r4"><fmt:formatNumber value="${item.TOTAL_SUM_PRICE}" pattern="#,###" /></td>
|
||
<td class="align_r4"><fmt:formatNumber value="${item.TOTAL_PARTNER_PRICE}" pattern="#,###" /></td>
|
||
<td class="align_r4"><fmt:formatNumber value="${item.TOTAL_PARTNER_VAT_PRICE}" pattern="#,###" /></td>
|
||
<td></td>
|
||
</tr>
|
||
</c:forEach>
|
||
</c:when>
|
||
<c:otherwise>
|
||
<tr>
|
||
<td colspan="8" style="text-align:center;">조회된 정보가 없습니다.</td>
|
||
</tr>
|
||
</c:otherwise>
|
||
</c:choose> --%>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
<div class="_table2" style="height:200px;width:98%;margin-left:10px;border-bottom:none;border-top: 1px solid #ccc;">
|
||
<table class="plm_table3">
|
||
<colgroup>
|
||
<col width="10%" />
|
||
<col width="12%" />
|
||
<col width="10%" />
|
||
<col width="12%" />
|
||
|
||
<col width="5%" />
|
||
<col width="10%" />
|
||
<col width="12%" />
|
||
<col width="8%" />
|
||
<col width="8%" />
|
||
</colgroup>
|
||
<tbody>
|
||
<tr>
|
||
<td class="input_title">비고</td>
|
||
<td colspan="3"><input type="text" name="REMARK" id="REMARK" value="${info.INVOICE_REMARK}"/></td>
|
||
<td class="input_title"colspan="2">공급가액 합</td>
|
||
<td class="align_r4"><input type="text" name="TOTAL_PARTNER_PRICE_SUM" id="TOTAL_PARTNER_PRICE_SUM" style="text-align:right;" value="<fmt:formatNumber value="${SUM_PRICE_MAP.TOTAL_PARTNER_PRICE_SUM}" pattern="#,###" />" numberOnly readonly/></td>
|
||
<td class="input_title"colspan="">세액</td>
|
||
<td class="align_r4"><input type="text" name="TOTAL_PARTNER_VAT_PRICE_SUM" id="TOTAL_PARTNER_VAT_PRICE_SUM" style="text-align:right;" value="<fmt:formatNumber value="${SUM_PRICE_MAP.TOTAL_PARTNER_VAT_PRICE_SUM}" pattern="#,###" />" numberOnly readonly/></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">네고액</td>
|
||
<td class="align_r4"><fmt:formatNumber value="${info.DISCOUNT_PRICE_ALL}" pattern="#,###.##" /></td>
|
||
<td class="input_title">네고율(%)</td>
|
||
<td class="align_r4">${info.NEGO_RATE}</td>
|
||
|
||
<input type="hidden" name="DISCOUNT_PRICE" id="DISCOUNT_PRICE" value="${info.DISCOUNT_PRICE_ALL}"/>
|
||
<input type="hidden" name="INV_DISCOUNT_PRICE" id="INV_DISCOUNT_PRICE" />
|
||
<input type="hidden" name="REQUEST_AMOUNT" id="REQUEST_AMOUNT" />
|
||
|
||
<td colspan="2" class="input_title">네고적용 실 공급가액 합</td>
|
||
<td class="align_r4"><input type="text" name="NEGO_PRICE_ALL" id="NEGO_PRICE_ALL" style="text-align:right;" value="<fmt:formatNumber value="${info.NEGO_PRICE_ALL}" pattern="#,###.##" />" numberOnly readonly/></td>
|
||
<td class="input_title">세액</td>
|
||
<td class="align_r4"><input type="text" name="NEGO_VAT_PRICE_ALL" id="NEGO_VAT_PRICE_ALL" style="text-align:right;" value="<fmt:formatNumber value="${info.NEGO_VAT_PRICE_ALL}" pattern="#,###" />" numberOnly readonly/></td>
|
||
<%--
|
||
<td colspan="2" class="input_title">할인율(%)</td>
|
||
<td class="align_r4"><input type="text" name="DISCOUNT_PERCENTAGE" id="DISCOUNT_PERCENTAGE" style="text-align:right;" value="<fmt:formatNumber value="${info.DISCOUNT_PERCENTAGE}" pattern="#,###.##" />" numberOnly/></td>
|
||
<td class="input_title">할인금액</td>
|
||
<td class="align_r4"><input type="text" name="INV_DISCOUNT_PRICE" id="INV_DISCOUNT_PRICE" style="text-align:right;" value="<fmt:formatNumber value="${info.INV_DISCOUNT_PRICE}" pattern="#,###" />" numberOnly /></td>
|
||
--%>
|
||
</tr>
|
||
<%--
|
||
<tr>
|
||
<td colspan="" class="input_title">네고적용금액</td>
|
||
<td class="align_r4"><input type="text" name="NEGO_PRICE_ALL" id="NEGO_PRICE_ALL" style="text-align:right;" value="<fmt:formatNumber value="${info.NEGO_PRICE_ALL}" pattern="#,###" />" numberOnly readonly/></td>
|
||
<td class="input_title">부가세</td>
|
||
<td class="align_r4"><input type="text" name="NEGO_VAT_PRICE_ALL" id="NEGO_VAT_PRICE_ALL" value="<fmt:formatNumber value="${info.NEGO_VAT_PRICE_ALL}" pattern="#,###" />" style="text-align:right;" readonly/></td>
|
||
|
||
<td colspan="2" class="input_title">비율(%)</td>
|
||
<td class="align_r4"><input type="text" name="PERCENTAGE" id="PERCENTAGE" style="text-align:right;" value="${info.PERCENTAGE}" numberOnly/></td>
|
||
<td class="input_title">요청금액</td>
|
||
<td class="align_r4"><input type="text" name="REQUEST_AMOUNT" id="REQUEST_AMOUNT" style="text-align:right;" value="<fmt:formatNumber value="${info.REQUEST_AMOUNT}" pattern="#,###" />" numberOnly required reqTitle="요청금액"/></td>
|
||
<input type="hidden" name="TOTAL_SUPPLY_UNIT_PRICE" id="TOTAL_SUPPLY_UNIT_PRICE" value="${info.TOTAL_REAL_SUPPLY_PRICE}"/>
|
||
<input type="hidden" name="TOTAL_PRICE_ALL" id="TOTAL_PRICE_ALL" value="${info.TOTAL_PRICE_ALL}"/>
|
||
<input type="hidden" name="REQUEST_AMOUNT_SUM" id="REQUEST_AMOUNT_SUM" value="${info.REQUEST_AMOUNT_SUM}"/>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">전미수잔액</td>
|
||
<td colspan=""><input type="text" name="OUTSTANDING_BALANCE" id="OUTSTANDING_BALANCE" style="text-align:right;" value="<fmt:formatNumber value="${info.OUTSTANDING_BALANCE}" pattern="#,###" />" numberOnly/></td>
|
||
<td class="input_title">총합계</td>
|
||
<td><input type="text" name="TOTAL_SUM" id="TOTAL_SUM" style="text-align:right;" value="<fmt:formatNumber value="${info.TOTAL_SUM}" pattern="#,###" />" numberOnly/></td>
|
||
<td colspan="2" class="input_title">입금액</td>
|
||
<td class="align_r4"><input type="text" name="DEPOSIT_AMOUNT" id="DEPOSIT_AMOUNT" style="text-align:right;" value="<fmt:formatNumber value="${info.DEPOSIT_AMOUNT}" pattern="#,###" />" numberOnly/></td>
|
||
<td class="input_title">총미수잔액</td>
|
||
<td class="align_r4"><input type="text" name="TOTAL_OUTSTANDING_BALANCE" id="TOTAL_OUTSTANDING_BALANCE" style="text-align:right;" value="<fmt:formatNumber value="${info.TOTAL_OUTSTANDING_BALANCE}" pattern="#,###" />" numberOnly/></td>
|
||
</tr>
|
||
--%>
|
||
<tr style="height:90px">
|
||
<td colspan="4" style="background-color:lightgrey"></td>
|
||
<td colspan="2" class="input_title">구매확인 </td>
|
||
<!--
|
||
<td colspan="3" class="align_r4"><input type="text" name="RECEIVE_USER" id="RECEIVE_USER" value="${info.RECEIVE_USER}" style="text-align:right;"/></td>
|
||
-->
|
||
<td colspan="3" class="input_sub_title">
|
||
<div class="canvas-container">
|
||
<canvas id="drawCanvas" width="400" height="150" style="border:1px solid black;z-index: 4;position: relative;"></canvas>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
<div class="btn_wrap">
|
||
<div class="plm_btn_wrap_center">
|
||
<c:if test = "${param.APPRSTATUS ne 'inProcess' and param.APPRSTATUS ne 'complete' and param.actionType ne 'view'}">
|
||
<c:if test = "${info.INVOICE_OBJID ne '' and info.INVOICE_OBJID ne null and connectUserId eq info.ISSUANCE_ID}">
|
||
<input type="button" value="승인요청" id="btnAppr" class="plm_btns">
|
||
</c:if>
|
||
<c:if test = "${info.INVOICE_OBJID eq '' or info.INVOICE_OBJID eq null or connectUserId eq info.ISSUANCE_ID}">
|
||
<input type="button" value="저장" id="btnSave" class="plm_btns create">
|
||
</c:if>
|
||
</c:if>
|
||
|
||
<!--
|
||
<button id="signsaveButton" style="margin-right: -51px;position: relative;top: -35px;">저장</button>
|
||
<button id="clearButton" style="margin-right: -110px;position: relative;top: -35px;">삭제</button>
|
||
<input type="button" value="사인 Clear" id="clearButton" class="plm_btns" style="margin-right:;position: ;top:;">
|
||
-->
|
||
|
||
<input type="button" value="닫기" name="" id="btn_close" class="plm_btns" onclick="javascript:self.close();">
|
||
</div>
|
||
</div>
|
||
</section>
|
||
</form>
|
||
</body>
|
||
</html> |