- 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
1239 lines
46 KiB
Plaintext
1239 lines
46 KiB
Plaintext
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
|
||
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
|
||
<%@ page import="com.pms.common.utils.*"%>
|
||
<%@ page import="java.util.*"%>
|
||
<%@include file="/init_jqGrid.jsp"%>
|
||
<%
|
||
Map info = (HashMap)(request.getAttribute("info"));
|
||
boolean isModify = true;
|
||
if(info!=null &&
|
||
( CommonUtils.checkNull(info.get("APPR_STATUS")).equals( "결재중" )
|
||
||CommonUtils.checkNull(info.get("APPR_STATUS")).equals( "결재완료" )
|
||
)
|
||
){
|
||
isModify = false; //수정불가
|
||
}
|
||
String actType = (String)request.getAttribute("actType");
|
||
%>
|
||
<!DOCTYPE html>
|
||
<html>
|
||
<head>
|
||
<!-- //JSTL 페이징 변수선언 -->
|
||
<c:set var="now" value="<%=new java.util.Date() %>" />
|
||
<c:set var="sysYear"><fmt:formatDate value="${now}" pattern="yyyy" /></c:set>
|
||
|
||
<style>
|
||
/*
|
||
#gview_list_Attachments .ui-jqgrid-bdiv{
|
||
max-height: 300px;
|
||
overflow-y: visible;
|
||
}
|
||
*/
|
||
.ui-jqgrid-view {
|
||
max-height: 422px;
|
||
}
|
||
.ui-jqgrid-bdiv {
|
||
overflow-y: scroll !important;
|
||
max-height: 380px !important;
|
||
}
|
||
|
||
.pointer {
|
||
cursor: pointer;
|
||
text-decoration: underline;
|
||
}
|
||
</style>
|
||
|
||
<script type="text/javascript">
|
||
var grid;
|
||
var TYPE_STANDARD = "0001069"; //발주구분코드:일반부품
|
||
var TYPE_LONG_DLV = "0001070"; //발주구분코드:장납기부품
|
||
var TYPE_ETC = "0001538"; //발주구분코드:잡자재
|
||
|
||
$(document).ready(function(){
|
||
//$("#VAT_METHOD").val("0001079");
|
||
|
||
/* $("input[name*='PRICE']").each(function(){
|
||
$(this).val(numberWithCommas($(this).val()));
|
||
});
|
||
$("input[name*='QTY']").each(function(){
|
||
$(this).val(numberWithCommas($(this).val()));
|
||
}); */
|
||
|
||
//상신된 결재라인 가져오기
|
||
fn_getApprLine();
|
||
//구매요청서 정보 가져오기
|
||
fn_getSalesRequest();
|
||
|
||
//유닛명
|
||
if("${info.CONTRACT_MGMT_OBJID}"!=""){
|
||
fn_UnitCodeList("${info.CONTRACT_MGMT_OBJID}", "UNIT_CODE","");
|
||
$("#UNIT_CODE").val("${info.UNIT_CODE}");
|
||
}
|
||
var unit_cd = $.parseJSON($("#unit_cd").val()); //jqGrid 구분
|
||
|
||
grid = $("#grid1").jqGrid({
|
||
url: ""
|
||
,datatype: "local"
|
||
,data : $.parseJSON($("#gridDetailList").val())
|
||
,colNames: ["OBJID","PART_OBJID","LD_PART_OBJID"
|
||
,"품명"
|
||
,"품번"
|
||
,"규격","Maker","단위","수량","공급단가","레이져단가","용접단가","가공단가","후처리단가","공급가","부가세"]
|
||
,colModel: [
|
||
{name:"OBJID" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
|
||
,{name:"PART_OBJID" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
|
||
,{name:"LD_PART_OBJID" , index:"", width: 0, align:"center", hidden: true, sortable:false, editable:false}
|
||
,{name:"PART_NAME" , index:"", width:160, align:"left", hidden:false, sortable:false, editable:false
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "left"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) { }} ]
|
||
}
|
||
}
|
||
,{name:"PART_NO" , index:"", width:110, align:"left", hidden:false, sortable:false, editable:false
|
||
//,formatter:'showlink'
|
||
//,formatoptions:{baseLinkUrl:'/partMng/partMngDetailPopUp.do', addParam: '&action=display'}
|
||
,formatter:setLink
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "left"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) { }} ]
|
||
}
|
||
}
|
||
,{name:"SPEC" , index:"", width:120, align:"left", hidden:false, sortable:false, editable:false
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "left"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) { }} ]
|
||
}
|
||
}
|
||
,{name:"MAKER" , index:"", width:80, align:"left", hidden:false, sortable:false, editable:false
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "left"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) { }} ]
|
||
}
|
||
}
|
||
,{name:"UNIT" , index:"", width:52, align:"center", hidden:false, sortable:false, editable: true
|
||
,edittype :"select"
|
||
,formatter :"select"
|
||
,editoptions:{
|
||
value: unit_cd
|
||
,dataInit : function(e){
|
||
e.style.width = "92%";
|
||
e.style.fontSize = 13;
|
||
}
|
||
}
|
||
}
|
||
,{name:"ORDER_QTY" , index:"", width:40, align: "right", hidden:false, sortable:false, editable: true
|
||
,formatter: "integer", formatoptions:{thousandsSeparator:","}
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) { gridFn.calcRowAll(e); }} ]
|
||
}
|
||
}
|
||
,{name:"PARTNER_PRICE" , index:"", width:80, align: "right", hidden:false, sortable:false, editable: true
|
||
,formatter: "integer", formatoptions:{thousandsSeparator:","}
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) { gridFn.calcRowAll(e); }
|
||
}
|
||
/* ,
|
||
{type:"onclick", fn:function(e) {
|
||
var rowid = this.id.replace("_PARTNER_PRICE","");
|
||
var value = zero_to_null(this.value);
|
||
grid.jqGrid('setCell', rowid, 'PARTNER_PRICE', value);
|
||
|
||
}
|
||
} */
|
||
]
|
||
}
|
||
}
|
||
,{name:"PRICE1" , index:"", width:80, align: "right", hidden:false, sortable:false, editable: true
|
||
,formatter: "integer", formatoptions:{thousandsSeparator:","}
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) { gridFn.calcRowAll(e); }}
|
||
/*
|
||
,
|
||
{type:"focus", fn:function(e) {
|
||
var rowid = this.id.replace("_PRICE1","");
|
||
var value = zero_to_null(this.value);
|
||
grid.jqGrid('setCell', rowid, 'PRICE1', value);
|
||
}
|
||
}
|
||
*/
|
||
]
|
||
|
||
}
|
||
}
|
||
,{name:"PRICE2" , index:"", width:80, align: "right", hidden:false, sortable:false, editable: true
|
||
,formatter: "integer", formatoptions:{thousandsSeparator:","}
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) { gridFn.calcRowAll(e); }} ]
|
||
}
|
||
}
|
||
,{name:"PRICE3" , index:"", width:80, align: "right", hidden:false, sortable:false, editable: true
|
||
,formatter: "integer", formatoptions:{thousandsSeparator:","}
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) {
|
||
gridFn.calcRowAll(e); }} ]
|
||
}
|
||
}
|
||
,{name:"PRICE4" , index:"", width:80, align: "right", hidden:false, sortable:false, editable: true
|
||
,formatter: "integer", formatoptions:{thousandsSeparator:","}
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) {
|
||
gridFn.calcRowAll(e); }} ]
|
||
}
|
||
}
|
||
,{name:"SUPPLY_UNIT_PRICE", index:"", width:80, align: "right", hidden:false, sortable:false, editable: true
|
||
,formatter: "integer", formatoptions:{thousandsSeparator:","}
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) { gridFn.calcRowAll(e); }} ]
|
||
}
|
||
}
|
||
,{name:"SUPPLY_UNIT_VAT_PRICE", index:"", width:70, align: "right", hidden:false, sortable:false, editable: true
|
||
,formatter: "integer", formatoptions:{thousandsSeparator:","}
|
||
,editoptions:{
|
||
dataInit: function(e){ e.style.textAlign = "right"; e.style.fontSize = 13; }
|
||
,dataEvents: [ {type:"change", fn:function(e) { gridFn.calcRowAll(e); }} ]
|
||
}
|
||
}
|
||
]
|
||
,ignoreCase : true
|
||
,rownumbers : true
|
||
,viewrecords : true
|
||
,height : 'auto' //300
|
||
,multiselect : <% if(isModify){ %>true<% }else{ %>false<% } %> //선택가능
|
||
,shrinkToFit : false
|
||
,autowidth : true
|
||
,sortable : false
|
||
,rowNum : 10000
|
||
,forceFit : true //컬럼의 width를 변화시킬때 그리드의 width를 고정 여부
|
||
,jsonReader : {repeatitems: false}
|
||
,mtype :"POST"
|
||
,footerrow : true //바닥합계
|
||
,userDataOnFooter: true //바닥합계
|
||
//,caption :"제목"
|
||
,loadComplete: function(){
|
||
var gid = this.id;
|
||
var grid_wrap_div = $("#gbox_"+gid);
|
||
setTimeout("fn_jqGrid_init($('#"+gid+"'), false);", 50); //윈도우크기 비례 자동조절
|
||
|
||
//footer 커스텀..
|
||
var $fr = $(this.grid.sDiv).find("tr.footrow");
|
||
var $frNew1;
|
||
var footerTdCss = {"border-right-width":"0","font-weight":"bold","overflow":"hidden","white-space":"nowrap","height":"21px","padding":"0 2px 0 2px","border-top-width":"1px","border-top-color":"inherit","border-top-style":"solid"};
|
||
|
||
//1.footerRow 스타일 조정
|
||
$fr.find(">td.ui-state-default").removeClass("ui-state-default");
|
||
$fr.find(">td").addClass("footerTd");
|
||
$("td.footerTd").css(footerTdCss);
|
||
|
||
//2.footerRow 추가
|
||
$frNew1 = $(this.grid.sDiv).find("tr.footerRowNew1");
|
||
if ($frNew1.length === 0) {
|
||
$frNew1 = $fr.clone();
|
||
$frNew1.removeClass("footrow").addClass("footerRowNew1 ui-widget-content");
|
||
$frNew1.children("td").each(function () {
|
||
this.style.width = "";
|
||
});
|
||
$frNew1.insertAfter($fr);
|
||
}
|
||
|
||
//3.셋팅
|
||
var _pf = ">td[aria-describedby="+this.id+"_"; //search prefix
|
||
var _sf = "]"; //search suffix
|
||
$fr.find( _pf+"PRICE1" +_sf).text("소계(원)");
|
||
$fr.find( _pf+"PRICE3" +_sf).html('<input type="text" class="mytotalinput" name="TOTAL_SUPPLY_UNIT_PRICE" id="TOTAL_SUPPLY_UNIT_PRICE" readonly value="<fmt:formatNumber value="${info.TOTAL_SUPPLY_UNIT_PRICE}" pattern="#,###" />"/>');
|
||
|
||
$frNew1.find(_pf+"SPEC" +_sf).text("할인적용");
|
||
$frNew1.find(_pf+"MAKER" +_sf).text("최종발주금액(원)");
|
||
//$frNew1.find(_pf+"MAKER" +_sf).text("할인적용");
|
||
//$frNew1.find(_pf+"UNIT" +_sf).text("최종발주금액(원)");
|
||
$frNew1.find(_pf+"ORDER_QTY" +_sf).text("");
|
||
//$frNew1.find(_pf+"PARTNER_PRICE" +_sf).text("");
|
||
$frNew1.find(_pf+"PRICE1" +_sf).text("할인금액 : ");
|
||
$frNew1.find(_pf+"PRICE2" +_sf).html('<input type="text" class="mytotalinput" name="DISCOUNT_PRICE" id="DISCOUNT_PRICE" placeHolder="할인금액입력" numberOnly value="${info.DISCOUNT_PRICE}" readonly/>');
|
||
$frNew1.find(_pf+"PRICE3" +_sf).html('<input type="text" class="mytotalinput" name="TOTAL_PRICE" id="TOTAL_PRICE" readonly value="<fmt:formatNumber value="${info.TOTAL_PRICE}" pattern="#,###" />"/>');
|
||
$frNew1.find(_pf+"SUPPLY_UNIT_PRICE"+_sf).html('<input type="text" class="mytotalinput" name="NEGO_RATE" id="NEGO_RATE" readonly value="${info.NEGO_RATE}"/>');
|
||
$("input.mytotalinput").css({"width":"100%", "height":"24px", "border":"1px solid #eee", "padding":"0", "text-align":"right", "font-size":"13px"});
|
||
$("#DISCOUNT_PRICE").change(function(){ gridFn.footerSummary(); });
|
||
|
||
//기타 스타일 1열
|
||
var _idx = $("td[aria-describedby=grid1_PRICE2]", $(".footrow")).index(); //"용접단가"의 el번호
|
||
$("td", $(".footrow")).slice(0,_idx+1).css({"background-color":"#e4e4e4"}); //0~"용접단가" 요소까지 배경색 변경(회색)
|
||
//기타 스타일 2열
|
||
$("#DISCOUNT_PRICE").parents("tr:first").find("td[aria-describedby=grid1_SPEC], td[aria-describedby=grid1_ORDER_QTY]").css({"text-align":"right"});
|
||
$("#DISCOUNT_PRICE").parents("tr:first").find("td[aria-describedby=grid1_MAKER]").css({"text-align":"left"});
|
||
$("#DISCOUNT_PRICE").parents("tr:first").find("td[aria-describedby=grid1_UNIT], td[aria-describedby=grid1_PARTNER_PRICE]").css({"text-align":"left"});
|
||
|
||
_idx = $("td[aria-describedby=grid1_PRICE1]", $(".footerRowNew1")).index(); //Maker의 el번호
|
||
$("td", $(".footerRowNew1")).slice(0,_idx+1).css({"background-color":"#e4e4e4"});
|
||
$("td", $(".footerRowNew1")).slice(_idx+1).css({"background-color":"#fbead9"}); //(옅은핑크)
|
||
$("#DISCOUNT_PRICE,#TOTAL_PRICE,#NEGO_RATE").css({"background-color":"#fbead9"});
|
||
}
|
||
});
|
||
|
||
if("${info.PARTNER_OBJID}" != "" && ("${info.SALES_REQUEST_OBJID}" != "" || "${info.SALES_REQUEST_OBJID}" != null)){
|
||
changelist("${info.PARTNER_OBJID}");
|
||
}
|
||
|
||
gridFn.opennEdit(); //수정가능
|
||
<% if(isModify){ %>
|
||
//수정가능
|
||
$("#TYPE,#UNIT_CODE,#SALES_MNG_USER_ID,#PARTNER_OBJID,#CONTRACT_MGMT_OBJID,#DELIVERY_PLACE,#INSPECT_METHOD,#PAYMENT_TERMS,#VAT_METHOD,#ORDER_TYPE_CD").prop("disabled","");
|
||
$("#TITLE,#DISCOUNT_PRICE,#TOTAL_PRICE_TXT,#REMARK").removeAttr("readonly");
|
||
|
||
//공급업체 변경시
|
||
$("#PARTNER_OBJID").change(function(){
|
||
$("#SUPPLY_BUS_NO, #SUPPLY_USER_NAME, #SUPPLY_USER_HP, #SUPPLY_USER_TEL, #SUPPLY_USER_FAX, #SUPPLY_USER_EMAIL, #SUPPLY_ADDR").val("");
|
||
if($(this).val()!=""){
|
||
//공급업체에 발주서공급담당자(0000330)로 지정된 정보를 가져온다
|
||
var list = fnc_getJsonAllDataListBySqlId({"sqlId":"purchaseOrder.purchaseOrderAdminSupplyInfo", "PARTNER_OBJID":$(this).val()});
|
||
if(fnc_checkNull( list )!=""){
|
||
var row = list[0];
|
||
$("#SUPPLY_BUS_NO" ).val( row["SUPPLY_BUS_NO" ] );
|
||
$("#SUPPLY_USER_NAME" ).val( row["SUPPLY_USER_NAME" ] );
|
||
$("#SUPPLY_USER_HP" ).val( row["SUPPLY_USER_HP" ] );
|
||
$("#SUPPLY_USER_TEL" ).val( row["SUPPLY_USER_TEL" ] );
|
||
$("#SUPPLY_USER_FAX" ).val( row["SUPPLY_USER_FAX" ] );
|
||
$("#SUPPLY_USER_EMAIL").val( row["SUPPLY_USER_EMAIL"] );
|
||
$("#SUPPLY_ADDR" ).val( row["SUPPLY_ADDR" ] );
|
||
}
|
||
}
|
||
if("${info.SALES_REQUEST_OBJID}"!=""){
|
||
grid.clearGridData();
|
||
var type = $("#TYPE").val();
|
||
var sales_request_objid = "${info.SALES_REQUEST_OBJID}";
|
||
var partner_objid = $("#PARTNER_OBJID").val();
|
||
|
||
//sales_request_master_objid에 연결된 part 정보를 가져온다.
|
||
var list = fnc_getJsonAllDataListBySqlId({"sqlId":"purchaseOrder.SalesRequestPartListBySupply"
|
||
, "SALES_REQUEST_MASTER_OBJID":sales_request_objid
|
||
, "PARTNER_OBJID": partner_objid });
|
||
if(fnc_checkNull( list )!=""){
|
||
var text = "";
|
||
|
||
$.each(list, function(i,o){
|
||
if(i==0){
|
||
$("#BOM_REPORT_OBJID" ).val( list[0].BOM_REPORT_OBJID );
|
||
}
|
||
|
||
// PART_NO와 REMARK를 가져와서 연결
|
||
var partNo = o.PART_NO;
|
||
var remark = o.REMARK;
|
||
var partText = partNo + ": " + remark;
|
||
|
||
if (i > 0) {
|
||
text += "\n";
|
||
}
|
||
|
||
// 현재 항목을 전체 텍스트에 추가
|
||
text += partText;
|
||
|
||
var rowData = new Map();
|
||
if(type==TYPE_STANDARD){
|
||
rowData.put("PART_OBJID" , o.PART_OBJID );
|
||
}else{
|
||
rowData.put("LD_PART_OBJID", o.PART_OBJID );
|
||
}
|
||
rowData.put("PART_NAME" , o.PART_NAME );
|
||
rowData.put("PART_NO" , o.PART_NO );
|
||
rowData.put("SPEC" , o.SPEC );
|
||
rowData.put("MAKER" , o.MAKER );
|
||
rowData.put("UNIT" , o.UNIT );
|
||
rowData.put("ORDER_QTY" , o.ORDER_QTY );
|
||
rowData.put("PARTNER_PRICE", o.PARTNER_PRICE);
|
||
rowData.put("PRICE1" , o.PRICE1 );
|
||
rowData.put("PRICE2" , o.PRICE2 );
|
||
rowData.put("PRICE3" , o.PRICE3 );
|
||
rowData.put("PRICE4" , o.PRICE4 );
|
||
|
||
fn_addRow(rowData);
|
||
});
|
||
}
|
||
}
|
||
});
|
||
|
||
//발주처 담당자 변경시 HP셋팅
|
||
$("#SALES_MNG_USER_ID").change(function(){
|
||
$("#SALES_MNG_USER_HP").val($(this).find("option:selected").attr("data-cell_phone"));
|
||
});
|
||
|
||
<% if(isModify){ %>
|
||
//$("#SALES_MNG_USER_ID").val('<%=connectUserId%>');
|
||
<% } %>
|
||
$("#SALES_MNG_USER_ID").trigger("change");
|
||
|
||
//발주부품 변경시
|
||
$("#TYPE").change(function(){
|
||
var type = $("#TYPE").val();
|
||
if(fnc_checkNull(type)==TYPE_ETC){ //잡자재
|
||
$("#UNIT_CODE,#CONTRACT_MGMT_OBJID").prop("disabled","disabled"); //당사프로젝트번호, 유닛명 선택불가
|
||
$("#UNIT_CODE,#CONTRACT_MGMT_OBJID").prop("required","");
|
||
}else{
|
||
$("#UNIT_CODE,#CONTRACT_MGMT_OBJID").prop("disabled","");
|
||
$("#UNIT_CODE,#CONTRACT_MGMT_OBJID").prop("required","required");
|
||
}
|
||
});
|
||
|
||
$("#TYPE").val('${info.TYPE}');
|
||
$("#TYPE").trigger("change");
|
||
|
||
if($("#TYPE").val()==""){
|
||
$("#TYPE").val(TYPE_STANDARD); //발주구분 기본값 : 일반부품
|
||
}
|
||
|
||
//프로젝트명 변경시 유닛명 셋팅
|
||
$("#CONTRACT_MGMT_OBJID").change(function(){
|
||
fn_UnitCodeList(this.value, "UNIT_CODE", "");
|
||
});
|
||
//발주구분,프로젝트,유닛명,공급업체 변경시 - 구매BOM에서 등록한 PART정보를 가져온다
|
||
$("#TYPE,#CONTRACT_MGMT_OBJID,#UNIT_CODE,#PARTNER_OBJID").change(function(){
|
||
if("${info.SALES_REQUEST_OBJID}"=="" || "${info.SALES_REQUEST_OBJID}" == null){
|
||
addBomPart();
|
||
}
|
||
});
|
||
|
||
fnc_datepick(); //달력
|
||
$(".select2").select2();
|
||
|
||
gridFn.opennEdit(); //수정가능
|
||
|
||
//버튼
|
||
$("#btnAdd" ).click(function(){ fn_openPartMngListPopUp(); }); //행추가
|
||
$("#btnDel" ).click(function(){ gridFn.delRow(); }); //행삭제
|
||
$("#btnSave").click(function(){ fn_save(); }); //저장
|
||
$("#btnAppr").click(function(){ //결재상신
|
||
if(fnc_valitate("form1")){
|
||
var objId = "${objId}";
|
||
if(""==grid.getRowData()){
|
||
Swal.fire('저장할 품목이 존재 하지 않습니다');
|
||
return;
|
||
}
|
||
var title = encodeURIComponent($("#TITLE").val());
|
||
//var title = encodeURIComponent("발주서 상신");
|
||
window.open("/approval/registApproval.do?targetType=PURCHASE_ORDER&targetObjId="+objId+"&approvalTitle="+title+"&callbackFnc=fn_save_process","registApproval","width=700,height=700");
|
||
}
|
||
});
|
||
|
||
<% }else{ %>
|
||
$("#btnDown").click(function(){ //발주서다운
|
||
document.form1.action = "/purchaseOrder/purchaseOrderFormPopup_new.do?actType=DOWN&PURCHASE_ORDER_MASTER_OBJID=${objId}";
|
||
document.form1.submit();
|
||
});
|
||
$("#btnPriceSave").click(function(){ fn_price_save(); }); //단가저장
|
||
<% } %>
|
||
|
||
//부가세 선택불가처리 230908
|
||
$("#VAT_METHOD").prop("disabled","disabled");
|
||
|
||
$("input:text[numberOnly]").on("keyup", function() {
|
||
$(this).val(fnc_addComma($(this).val().replace(/[^0-9]/g,"")));
|
||
});
|
||
|
||
$("input[name*=PRICE]").each(function(){
|
||
$(this).val(fnc_addComma($(this).val()));
|
||
});
|
||
|
||
addZeroEvtAtPriceInput();
|
||
|
||
});
|
||
|
||
function changelist(objid){
|
||
$("#SUPPLY_BUS_NO, #SUPPLY_USER_NAME, #SUPPLY_USER_HP, #SUPPLY_USER_TEL, #SUPPLY_USER_FAX, #SUPPLY_USER_EMAIL, #SUPPLY_ADDR").val("");
|
||
if(objid!=""){
|
||
//공급업체에 발주서공급담당자(0000330)로 지정된 정보를 가져온다
|
||
var list = fnc_getJsonAllDataListBySqlId({"sqlId":"purchaseOrder.purchaseOrderAdminSupplyInfo", "PARTNER_OBJID":objid});
|
||
if(fnc_checkNull( list )!=""){
|
||
var row = list[0];
|
||
$("#SUPPLY_BUS_NO" ).val( row["SUPPLY_BUS_NO" ] );
|
||
$("#SUPPLY_USER_NAME" ).val( row["SUPPLY_USER_NAME" ] );
|
||
$("#SUPPLY_USER_HP" ).val( row["SUPPLY_USER_HP" ] );
|
||
$("#SUPPLY_USER_TEL" ).val( row["SUPPLY_USER_TEL" ] );
|
||
$("#SUPPLY_USER_FAX" ).val( row["SUPPLY_USER_FAX" ] );
|
||
$("#SUPPLY_USER_EMAIL").val( row["SUPPLY_USER_EMAIL"] );
|
||
$("#SUPPLY_ADDR" ).val( row["SUPPLY_ADDR" ] );
|
||
}
|
||
}
|
||
if("${info.SALES_REQUEST_OBJID}"!=""){
|
||
grid.clearGridData();
|
||
var type = $("#TYPE").val();
|
||
var sales_request_objid = "${info.SALES_REQUEST_OBJID}";
|
||
var partner_objid = $("#PARTNER_OBJID").val();
|
||
|
||
//sales_request_master_objid에 연결된 part 정보를 가져온다.
|
||
var list = fnc_getJsonAllDataListBySqlId({"sqlId":"purchaseOrder.SalesRequestPartListBySupply"
|
||
, "SALES_REQUEST_MASTER_OBJID":sales_request_objid
|
||
, "PARTNER_OBJID": partner_objid });
|
||
if(fnc_checkNull( list )!=""){
|
||
var text = "";
|
||
|
||
$.each(list, function(i,o){
|
||
if(i==0){
|
||
$("#BOM_REPORT_OBJID" ).val( list[0].BOM_REPORT_OBJID );
|
||
}
|
||
|
||
// PART_NO와 REMARK를 가져와서 연결
|
||
var partNo = o.PART_NO;
|
||
var remark = o.REMARK;
|
||
var partText = partNo + ": " + remark;
|
||
|
||
if (i > 0) {
|
||
text += "\n";
|
||
}
|
||
|
||
// 현재 항목을 전체 텍스트에 추가
|
||
text += partText;
|
||
|
||
var rowData = new Map();
|
||
if(type==TYPE_STANDARD){
|
||
rowData.put("PART_OBJID" , o.PART_OBJID );
|
||
}else{
|
||
rowData.put("LD_PART_OBJID", o.PART_OBJID );
|
||
}
|
||
rowData.put("PART_NAME" , o.PART_NAME );
|
||
rowData.put("PART_NO" , o.PART_NO );
|
||
rowData.put("SPEC" , o.SPEC );
|
||
rowData.put("MAKER" , o.MAKER );
|
||
rowData.put("UNIT" , o.UNIT );
|
||
rowData.put("ORDER_QTY" , o.ORDER_QTY );
|
||
rowData.put("PARTNER_PRICE", o.PARTNER_PRICE);
|
||
rowData.put("PRICE1" , o.PRICE1 );
|
||
rowData.put("PRICE2" , o.PRICE2 );
|
||
rowData.put("PRICE3" , o.PRICE3 );
|
||
rowData.put("PRICE4" , o.PRICE4 );
|
||
|
||
fn_addRow(rowData);
|
||
});
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
function addZeroEvtAtPriceInput(){
|
||
$("input:text[name*=PRICE]").on("focus", function() {
|
||
var val = $(this).val();
|
||
if(val == 0 || val == '0'){
|
||
$(this).val(zero_to_null());
|
||
}
|
||
});
|
||
$("input:text[name*=PRICE]").on("focusout", function() {
|
||
var val = $(this).val();
|
||
if(val == ''){
|
||
$(this).val(0);
|
||
}
|
||
});
|
||
}
|
||
function zero_to_null(value){
|
||
|
||
if(value=="0"){
|
||
return "";
|
||
}else{
|
||
return value;
|
||
}
|
||
}
|
||
function setLink(cellval, options, rowObject) {
|
||
|
||
if(typeof(cellval) == "undefined") {
|
||
return "";
|
||
}
|
||
|
||
if(fnc_isEmpty(rowObject.PART_OBJID)){
|
||
return rowObject.PART_NO
|
||
}else{
|
||
return "<a onclick='openPartMngPopup(\"" + rowObject.PART_OBJID + "\");' class='pointer'>" + rowObject.PART_NO + "</a>";
|
||
}
|
||
}
|
||
|
||
function openPartMngPopup(objId){
|
||
var popup_width = 600;
|
||
var popup_height = 500;
|
||
|
||
var hiddenForm = document.hiddenForm;
|
||
var url = "/partMng/partMngFormPopUp.do";
|
||
|
||
if("" != objId){
|
||
url = "/partMng/partMngDetailPopUp.do";
|
||
}
|
||
|
||
var target = "partMngPopUp";
|
||
|
||
fn_centerPopup(popup_width, popup_height, url, target);
|
||
|
||
hiddenForm.action = url;
|
||
hiddenForm.OBJID.value = objId;
|
||
hiddenForm.target = target;
|
||
hiddenForm.submit();
|
||
}
|
||
|
||
//상신된 결재라인가져오기
|
||
function fn_getApprLine(){
|
||
if('${objId}'!=''){
|
||
$.ajax({
|
||
url:"/common/getApprovalLine.do",
|
||
type:"POST",
|
||
data:{"objId":"${objId}"},
|
||
dataType:"json",
|
||
async:false,
|
||
success:function(data){
|
||
$.each(data.RESULT, function(i,o){
|
||
if(i==0){
|
||
$("#appr"+i).html(o.WRITER +"<br/>"+ o.REGDATE);
|
||
}
|
||
$("#appr"+(i+1)).html(o.TARGET_USER_NAME +"<br/>"+ (o.PROC_DATE!=undefined?o.PROC_DATE:" "));
|
||
});
|
||
},
|
||
error: function(jqxhr, status, error){
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
function fn_getSalesRequest(){
|
||
if('${param.sales_request_objid}'!=''){
|
||
$.ajax({
|
||
url:"/salesMng/getSalesRequest.do",
|
||
type:"POST",
|
||
data:{"SALES_REQUEST_MASTER_OBJID":"${param.sales_request_objid}"},
|
||
dataType:"json",
|
||
async:false,
|
||
success:function(data){
|
||
$.each(data.RESULT, function(i,o){
|
||
$("#CONTRACT_MGMT_OBJID").val(o.PROJECT_NO);
|
||
$("#UNIT_CODE").val(o.UNIT_NAME);
|
||
fn_UnitCodeList(o.PROJECT_NO, "UNIT_CODE","");
|
||
$("#UNIT_CODE").val(o.UNIT_NAME);
|
||
});
|
||
},
|
||
error: function(jqxhr, status, error){
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
//계약제품, 업체명으로 BOM에 등록된 부품정보를 자동 추가
|
||
function addBomPart(){
|
||
grid.clearGridData();
|
||
$("#BOM_REPORT_OBJID").val("");
|
||
//$("#SALES_MNG_USER_ID").val("").trigger("change");
|
||
|
||
var type = $("#TYPE").val(); //발주부품
|
||
var contract_mgmt_objid = $("#CONTRACT_MGMT_OBJID").val(); //프로젝트명
|
||
var unit_code = $("#UNIT_CODE").val(); //유닛명
|
||
var partner_objid = $("#PARTNER_OBJID").val(); //공급업체
|
||
|
||
//console.log('type:'+type + ' contract_mgmt_objid:'+contract_mgmt_objid + ' unit_code:'+unit_code + ' partner_objid:'+partner_objid);
|
||
|
||
//일반부품이고, 프로젝트명, 유닛명, 공급업체가 선택되어있으면
|
||
if(fnc_checkNull(type)==TYPE_STANDARD
|
||
&& fnc_checkNull(contract_mgmt_objid)!=""
|
||
&& fnc_checkNull(unit_code)!=""
|
||
&& fnc_checkNull(partner_objid)!=""
|
||
){
|
||
//구매BOM 조회해서 부품정보를 가져온다
|
||
var list = fnc_getJsonAllDataListBySqlId({"sqlId":"purchaseOrder.purchaseOrderSalesBomPartListByPartnerContract"
|
||
, "CONTRACT_MGMT_OBJID":contract_mgmt_objid
|
||
, "UNIT_CODE":unit_code
|
||
, "PARTNER_OBJID": partner_objid });
|
||
if(fnc_checkNull( list )!=""){
|
||
var text = "";
|
||
|
||
$.each(list, function(i,o){
|
||
if(i==0){
|
||
$("#BOM_REPORT_OBJID" ).val( list[0].BOM_REPORT_OBJID );
|
||
//$("#SALES_MNG_USER_ID").val( list[0].WRITER ).trigger("change");
|
||
}
|
||
|
||
// PART_NO와 REMARK를 가져와서 연결
|
||
var partNo = o.PART_NO;
|
||
var remark = o.REMARK;
|
||
var partText = partNo + ": " + remark;
|
||
|
||
if (i > 0) {
|
||
text += "\n";
|
||
}
|
||
|
||
// 현재 항목을 전체 텍스트에 추가
|
||
text += partText;
|
||
|
||
var rowData = new Map();
|
||
if(type==TYPE_STANDARD){
|
||
rowData.put("PART_OBJID" , o.PART_OBJID );
|
||
}else{
|
||
rowData.put("LD_PART_OBJID", o.PART_OBJID );
|
||
}
|
||
rowData.put("PART_NAME" , o.PART_NAME );
|
||
rowData.put("PART_NO" , o.PART_NO );
|
||
rowData.put("SPEC" , o.SPEC );
|
||
rowData.put("MAKER" , o.MAKER );
|
||
rowData.put("UNIT" , o.UNIT );
|
||
rowData.put("ORDER_QTY" , o.ORDER_QTY );
|
||
rowData.put("PARTNER_PRICE", o.PARTNER_PRICE);
|
||
rowData.put("PRICE1" , o.PRICE1 );
|
||
rowData.put("PRICE2" , o.PRICE2 );
|
||
rowData.put("PRICE3" , o.PRICE3 );
|
||
rowData.put("PRICE4" , o.PRICE4 );
|
||
|
||
fn_addRow(rowData);
|
||
});
|
||
}
|
||
console.log("text::"+text);
|
||
$("#REMARK").val(text);
|
||
}
|
||
gridFn.footerSummary(); //부품하단 합계 자동계산
|
||
}
|
||
|
||
//행추가시 품목선택 팝업
|
||
function fn_openPartMngListPopUp(){
|
||
|
||
fn_editGridColumnEditableCondition('PART_NAME', false);
|
||
fn_editGridColumnEditableCondition('PART_NO', false);
|
||
fn_editGridColumnEditableCondition('SPEC', false);
|
||
fn_editGridColumnEditableCondition('MAKER', false);
|
||
|
||
var hiddenForm = document.hiddenForm;
|
||
var target = "purchaseOrderPartSelectListPopUp";
|
||
var typeVal = $("#TYPE").val();
|
||
var isLD = typeVal == TYPE_LONG_DLV; //발주구분: 장납기부품
|
||
if(isLD){
|
||
var url = "/salesMng/salesLongDeliveryList.do?callbackFnc=fn_addRow&callType=purchaseOrder&actionType=SelectPopup&admin_supply="+$("#PARTNER_OBJID").val();
|
||
window.open(url,target,"width=1510,height=800");
|
||
}else if(typeVal == TYPE_STANDARD){
|
||
var url = "/partMng/partMngListPopUp.do?callbackFnc=fn_addRow&callType=purchaseOrder";
|
||
window.open(url,target,"width=1480,height=850");
|
||
}else if(!fnc_isEmpty(typeVal)){ //잡자재추가(230807)
|
||
var rowData = new Map();
|
||
/*
|
||
if(type==TYPE_STANDARD){
|
||
rowData.put("PART_OBJID" , o.PART_OBJID );
|
||
}else{
|
||
rowData.put("LD_PART_OBJID", o.PART_OBJID );
|
||
}
|
||
rowData.put("PART_NAME" , o.PART_NAME );
|
||
rowData.put("PART_NO" , o.PART_NO );
|
||
rowData.put("SPEC" , o.SPEC );
|
||
rowData.put("MAKER" , o.MAKER );
|
||
rowData.put("UNIT" , o.UNIT );
|
||
rowData.put("ORDER_QTY" , o.ORDER_QTY );
|
||
rowData.put("PARTNER_PRICE", o.PARTNER_PRICE);
|
||
rowData.put("PRICE1" , o.PRICE1 );
|
||
rowData.put("PRICE2" , o.PRICE2 );
|
||
rowData.put("PRICE3" , o.PRICE3 );
|
||
*/
|
||
fn_editGridColumnEditableCondition('PART_NAME', true);
|
||
fn_editGridColumnEditableCondition('PART_NO', true);
|
||
fn_editGridColumnEditableCondition('SPEC', true);
|
||
fn_editGridColumnEditableCondition('MAKER', true);
|
||
fn_addRow(rowData);
|
||
|
||
//var colModels = grid.jqGrid('getGridParam','colModel');
|
||
/*
|
||
var ids = grid.jqGrid("getDataIDs");
|
||
for (var i = 0; i < ids.length; i++) {
|
||
grid.jqGrid("editRow",ids[i]);
|
||
}
|
||
*/
|
||
}else{
|
||
var url = "/partMng/partMngListPopUp.do?callbackFnc=fn_addRow&callType=purchaseOrder";
|
||
window.open(url,target,"width=1480,height=850");
|
||
}
|
||
}
|
||
|
||
function fn_editGridColumnEditableCondition(colName, editable){
|
||
var nameColModel = grid.jqGrid('getColProp', colName);
|
||
nameColModel.editable = editable; // 또는 false로 변경할 수 있음
|
||
/*
|
||
if(!editable && colName == "PART_NO"){
|
||
nameColModel.formatter = setLink;
|
||
}else{
|
||
nameColModel.formatter = null;
|
||
}
|
||
*/
|
||
|
||
// 변경된 설정을 업데이트
|
||
grid.jqGrid('setColProp', colName, nameColModel);
|
||
}
|
||
|
||
//품목선택 callbackFnc :: 자동 및 수동 행추가시 사용됨
|
||
function fn_addRow(rowData){
|
||
//console.log(rowData);
|
||
|
||
var v1 = Number( rowData.map.ORDER_QTY );
|
||
var v2 = Number( rowData.map.PARTNER_PRICE );
|
||
var v3 = Number( rowData.map.PRICE1 );
|
||
var v4 = Number( rowData.map.PRICE2 );
|
||
var v5 = Number( rowData.map.PRICE3 );
|
||
var v6 = Number( rowData.map.PRICE4 );
|
||
var _rowSum = v1 * (v2+v3+v4+v5+v6);
|
||
|
||
var addData = {
|
||
"PART_OBJID" : rowData.map.PART_OBJID
|
||
,"LD_PART_OBJID": rowData.map.LD_PART_OBJID
|
||
,"PART_NAME" : rowData.map.PART_NAME
|
||
,"PART_NO" : rowData.map.PART_NO
|
||
,"SPEC" : rowData.map.SPEC
|
||
,"MAKER" : rowData.map.MAKER
|
||
,"UNIT" : rowData.map.UNIT
|
||
,"ORDER_QTY" : rowData.map.ORDER_QTY
|
||
,"PARTNER_PRICE": rowData.map.PARTNER_PRICE
|
||
,"PRICE1" : rowData.map.PRICE1
|
||
,"PRICE2" : rowData.map.PRICE2
|
||
,"PRICE3" : rowData.map.PRICE3
|
||
,"PRICE4" : rowData.map.PRICE4
|
||
,"SUPPLY_UNIT_PRICE" : _rowSum
|
||
,"SUPPLY_UNIT_VAT_PRICE": (_rowSum * 0.1)
|
||
}
|
||
|
||
var newId = grid.getGridParam("reccount")+1;
|
||
grid.addRowData(newId, addData);
|
||
grid.jqGrid("editRow", newId);
|
||
|
||
addZeroEvtAtPriceInput();
|
||
}
|
||
|
||
function fn_save(){
|
||
if(fnc_valitate("form1")){
|
||
|
||
if(""==grid.getRowData()){
|
||
Swal.fire('저장할 품목이 존재 하지 않습니다');
|
||
return;
|
||
}
|
||
//$("#status").val("PURSTCD00100");
|
||
|
||
if(confirm("저장 하시겠습니까?")){
|
||
fn_save_process();
|
||
}
|
||
}
|
||
}
|
||
<% if(isModify){ %>
|
||
function fn_save_process(){
|
||
//var master_title = grid.getRowData(1).PART_NAME;
|
||
//if(grid.getRowData().length > 1){
|
||
// master_title += " 외 "+(grid.getRowData().length-1)+"건";
|
||
//}
|
||
//$("input[name=TITLE]").val(master_title);
|
||
|
||
//$("#facility_qty").val($("#facility_qty").val().replace(/,/gi,""));
|
||
|
||
$("input[name*='PRICE']").not($("#TOTAL_PRICE_TXT")).each(function(){
|
||
$(this).val($(this).val().replace(/,/gi,""));
|
||
});
|
||
$("input[name*='QTY']").each(function(){
|
||
$(this).val($(this).val().replace(/,/gi,""));
|
||
});
|
||
|
||
gridFn.closeEdit();
|
||
$.ajax({
|
||
url:"/purchaseOrder/purchaseOrderFormPopup_newSave.do"
|
||
,type:"POST"
|
||
,data: $("#form1").serialize() + "&jqGrid="+ encodeURIComponent(JSON.stringify(grid.getRowData()))
|
||
,dataType:"json"
|
||
,success:function(data){
|
||
if(data =="SUCCESS"){
|
||
alert("저장되었습니다.");
|
||
};
|
||
if(typeof opener.fn_search =="function"){ opener.fn_search() };
|
||
self.close();
|
||
}
|
||
,error: function(jqxhr, status, error){
|
||
}
|
||
});
|
||
}
|
||
<% } %>
|
||
|
||
var gridFn = {
|
||
addRow : function() {
|
||
//var newId = grid.getGridParam("reccount")+1;
|
||
//var addData = {
|
||
// "PART_OBJID" : ""
|
||
// ,"PART_NAME" : ""
|
||
// ,"DO_NO" : ""
|
||
// ,"THICKNESS" : ""
|
||
// ,"WIDTH" : ""
|
||
// ,"HEIGHT" : ""
|
||
// ,"OUT_DIAMETER" : ""
|
||
// ,"IN_DIAMETER" : ""
|
||
// ,"LENGTH" : ""
|
||
// ,"ORDER_QTY" : ""
|
||
//};
|
||
//grid.addRowData(newId, addData);
|
||
//grid.jqGrid("editRow", newId);
|
||
}
|
||
,delRow : function(){
|
||
var selectedRowIds = grid.jqGrid("getGridParam","selarrrow");
|
||
if(selectedRowIds.length==0){
|
||
Swal.fire("삭제할 행을 선택해주십시오.");
|
||
return false;
|
||
}
|
||
for(var i = selectedRowIds.length - 1; i >= 0; i--){
|
||
grid.delRowData(selectedRowIds[i]);
|
||
}
|
||
}
|
||
,opennEdit : function() { //수정가능
|
||
var ids = grid.jqGrid("getDataIDs");
|
||
for (var i = 0; i < ids.length; i++) {
|
||
grid.jqGrid("editRow",ids[i]);
|
||
}
|
||
}
|
||
,closeEdit : function() { //수정불가
|
||
var ids = grid.jqGrid("getDataIDs");
|
||
for (var i = 0; i < ids.length; i++) {
|
||
grid.jqGrid("saveRow", ids[i], /*successFunction*/null, /*url*/"clientArray"/*, extraparam, aftersavefunc,errorfunc, afterrestorefunc*/);
|
||
}
|
||
}
|
||
,search : function() {
|
||
//grid.setGridParam({
|
||
// url: "/materMgmt/searchPartMgmt.do"
|
||
// ,datatype : "json"
|
||
// ,postData : $("#form1").serialize()
|
||
// ,loadComplete : function(data) {
|
||
// gridFn.footerSummary();
|
||
// }
|
||
// ,gridComplete : function() {
|
||
// gridFn.opennEdit(); //수정가능
|
||
// }
|
||
//}).trigger("reloadGrid");
|
||
//grid.setGridParam({url: "", datatype : "local"});
|
||
}
|
||
,calcRowAll : function(e){ //행 모든 컬럼 계산
|
||
var $g = $("#grid1");
|
||
//var rowId = $g.jqGrid('getGridParam', 'selrow'); //선택된행 번호
|
||
var rowId = e.target.id.split("_")[0]; //수정중인 행번호 (행선택은 안될수있음)
|
||
var v1 = Number( $g.find("#"+rowId+"_ORDER_QTY").val().replace(/,/gi,"") );
|
||
var v2 = Number( $g.find("#"+rowId+"_PARTNER_PRICE").val().replace(/,/gi,"") );
|
||
var v3 = Number( $g.find("#"+rowId+"_PRICE1").val().replace(/,/gi,"") );
|
||
var v4 = Number( $g.find("#"+rowId+"_PRICE2").val().replace(/,/gi,"") );
|
||
var v5 = Number( $g.find("#"+rowId+"_PRICE3").val().replace(/,/gi,"") );
|
||
var v6 = Number( $g.find("#"+rowId+"_PRICE4").val().replace(/,/gi,"") );
|
||
//var v6 = Number( $g.find("#"+rowId+"_SUPPLY_UNIT_PRICE").val() );
|
||
|
||
var eVal = $(e.target).val() .replace(/,/gi,"");
|
||
|
||
if(!$.isNumeric( fnc_checkNullDefaultValue(eVal,"0")) ){
|
||
Swal.fire("숫자를 입력해주세요"); $(e.target).select(); return;
|
||
}else{
|
||
$(e.target).val(fnc_addComma(eVal.replace(/[^0-9]/g,"")));
|
||
}
|
||
|
||
if(e.target.id == rowId+"_ORDER_QTY"
|
||
|| e.target.id == rowId+"_PARTNER_PRICE"
|
||
|| e.target.id == rowId+"_PRICE1"
|
||
|| e.target.id == rowId+"_PRICE2"
|
||
|| e.target.id == rowId+"_PRICE3"
|
||
|| e.target.id == rowId+"_PRICE4"
|
||
){
|
||
//공급가 = 수량 *(공급단가+레이져단가+용접단가+가공단가)
|
||
$g.find("#"+rowId+"_SUPPLY_UNIT_PRICE").val( numberWithCommas(v1 * (v2+v3+v4+v5+v6)));
|
||
$g.find("#"+rowId+"_SUPPLY_UNIT_VAT_PRICE").val( numberWithCommas(v1 * (v2+v3+v4+v5+v6) * 0.1));
|
||
}
|
||
|
||
this.footerSummary();
|
||
}
|
||
,footerSummary: function(){ //자동합계
|
||
$("#TOTAL_SUPPLY_UNIT_PRICE, #TOTAL_PRICE, #NEGO_RATE").val("");
|
||
|
||
//footer1
|
||
var colSum1 = 0; //공급가합계
|
||
$.each($("#grid1").getDataIDs(), function(i,o){
|
||
//console.log(i+" :: " + o);
|
||
var _v1 = $("#"+o+"_SUPPLY_UNIT_PRICE").val().replace(/,/gi,""); //공급가
|
||
var _v2 = $("#"+o+"_SUPPLY_UNIT_VAT_PRICE").val().replace(/,/gi,""); //부가세
|
||
if($.isNumeric(_v1)){
|
||
colSum1 += Number( _v1 ) + Number( _v2 );
|
||
}
|
||
});
|
||
$("#TOTAL_SUPPLY_UNIT_PRICE").val( numberWithCommas( colSum1+"" ) ); //소계
|
||
|
||
//footer2
|
||
var vDC = fnc_checkcommmanumberDefaultValue($("#DISCOUNT_PRICE").val(),"0"); // 할인금액
|
||
if(!$.isNumeric(vDC)){
|
||
Swal.fire("숫자를 입력해주세요");
|
||
$("#DISCOUNT_PRICE").select();
|
||
$("#DISCOUNT_PRICE").val("");
|
||
return;
|
||
}
|
||
vDC = Number(vDC);
|
||
|
||
var vTP = colSum1 - vDC;
|
||
$("#TOTAL_PRICE").val(numberWithCommas( vTP )); //최종발주금액 : 소계-할인금액
|
||
$("#TOTAL_PRICE_TXT").val( fnc_numToKr((vTP)+"","일금 "," 원정") + " (₩ "+numberWithCommas( vTP )+")" );
|
||
if(colSum1 != 0){
|
||
$("#NEGO_RATE" ).val( ((1-((vTP)/colSum1))*100).toFixed(1) +"%" ); //Nego율 : 1-(최종금액/소계)
|
||
}
|
||
}
|
||
}
|
||
|
||
function fn_price_save(){
|
||
//var master_title = grid.getRowData(1).PART_NAME;
|
||
//if(grid.getRowData().length > 1){
|
||
// master_title += " 외 "+(grid.getRowData().length-1)+"건";
|
||
//}
|
||
//$("input[name=TITLE]").val(master_title);
|
||
|
||
//$("#facility_qty").val($("#facility_qty").val().replace(/,/gi,""));
|
||
|
||
$("input[name*='PRICE']").not($("#TOTAL_PRICE_TXT")).each(function(){
|
||
$(this).val($(this).val().replace(/,/gi,""));
|
||
});
|
||
$("input[name*='QTY']").each(function(){
|
||
$(this).val($(this).val().replace(/,/gi,""));
|
||
});
|
||
|
||
gridFn.closeEdit();
|
||
$.ajax({
|
||
url:"/purchaseOrder/purchaseOrderFormPopup_PriceSave.do"
|
||
,type:"POST"
|
||
,data: $("#form1").serialize() + "&jqGrid="+ encodeURIComponent(JSON.stringify(grid.getRowData()))
|
||
,dataType:"json"
|
||
,success:function(data){
|
||
if(data =="SUCCESS"){
|
||
alert("저장되었습니다.");
|
||
};
|
||
if(typeof opener.fn_search =="function"){ opener.fn_search() };
|
||
self.close();
|
||
}
|
||
,error: function(jqxhr, status, error){
|
||
}
|
||
});
|
||
}
|
||
</script>
|
||
</head>
|
||
<body>
|
||
<form name="hiddenForm" id="hiddenForm" method="post">
|
||
<input type="hidden" name="OBJID" id="OBJID">
|
||
</form>
|
||
|
||
<form name="form1" id="form1" action="" method="post">
|
||
<input type="hidden" name="MASTER_OBJID" id="MASTER_OBJID" value="${objId}" />
|
||
<input type="hidden" name="BOM_REPORT_OBJID" id="BOM_REPORT_OBJID" value="${info.BOM_REPORT_OBJID}" />
|
||
<input type="hidden" name="SALES_REQUEST_OBJID" id="SALES_REQUEST_OBJID" value="${info.SALES_REQUEST_OBJID}" />
|
||
<section>
|
||
<div class="plm_menu_name">
|
||
<h2><span>발주서</span></h2>
|
||
</div>
|
||
<div id="expenseApplyPopupFormWrap1">
|
||
<table class="pmsPopupForm">
|
||
<colgroup>
|
||
<col width="4%" />
|
||
<col width="7%" />
|
||
<col width="12%" />
|
||
<col width="7%" />
|
||
<col width="12%" />
|
||
|
||
<col width="4%" />
|
||
<col width="7%" />
|
||
<col width="12%" />
|
||
<col width="7%" />
|
||
<col width="12%" />
|
||
</colgroup>
|
||
<tr>
|
||
<td colspan="2">발주번호</td>
|
||
<td colspan="3"><input type="text" name="PURCHASE_ORDER_NO" id="PURCHASE_ORDER_NO" value="${info.PURCHASE_ORDER_NO }" readonly /></td>
|
||
<td colspan="2">프로젝트번호</td>
|
||
<td colspan="3">
|
||
<select name="CONTRACT_MGMT_OBJID" id="CONTRACT_MGMT_OBJID" required reqTitle="PROJECT명" type="select" class="select2" autocomplete="off" disabled>
|
||
<option value="">선택</option>
|
||
${code_map.project_no}
|
||
</select>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2">발주부품</td>
|
||
<td colspan="3">
|
||
<select name="TYPE" id="TYPE" required reqTitle="발주부품" type="select" class="select2" autocomplete="off" disabled>
|
||
<option value="">선택</option>
|
||
${code_map.type}
|
||
</select>
|
||
</td>
|
||
<td colspan="2">유닛명</td>
|
||
<td colspan="3">
|
||
<select name="UNIT_CODE" id="UNIT_CODE" required reqTitle="유닛명" type="select" class="select2" autocomplete="off" disabled></select>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="10" style="text-align: center; height: 50px;"><h1><b>발주서<br/><p style="font-size:12px">(Purchase Order)</p></b></h1></td>
|
||
</tr>
|
||
<tr>
|
||
<td rowspan="6" class="input_title">발주처</td>
|
||
<td class="input_title">회사명</td>
|
||
<td colspan="3">우성에스이주식회사</td>
|
||
|
||
<td rowspan="6" class="input_title">공급처</td>
|
||
<td class="input_title">회사명</td>
|
||
<td colspan="3">
|
||
<select name="PARTNER_OBJID" id="PARTNER_OBJID" required reqTitle="공급처회사명" type="select" class="select2" autocomplete="off" disabled>
|
||
<option value="">선택</option>
|
||
${code_map.partner_cd}
|
||
</select>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">사업자번호</td>
|
||
<td colspan="3">514-81-95155</td>
|
||
|
||
<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>
|
||
<select name="SALES_MNG_USER_ID" id="SALES_MNG_USER_ID" required reqTitle="구매담당자" type="select" class="select2" autocomplete="off" disabled>
|
||
<option value="">선택</option>
|
||
${code_map.sales_mng_user_id}
|
||
</select>
|
||
</td>
|
||
<td class="input_title">HP</td>
|
||
<td><input type="text" name="SALES_MNG_USER_HP" id="SALES_MNG_USER_HP" value="${info.SALES_MNG_USER_CELL_PHONE }" readonly /></td>
|
||
|
||
<td class="input_title">담당자</td>
|
||
<td><input type="text" name="SUPPLY_USER_NAME" id="SUPPLY_USER_NAME" value="${info.SUPPLY_USER_NAME }" readonly /></td>
|
||
<td class="input_title">HP</td>
|
||
<td><input type="text" name="SUPPLY_USER_HP" id="SUPPLY_USER_HP" value="${info.SUPPLY_USER_HP }" readonly /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">전 화</td>
|
||
<td><input type="text" name="SALES_MNG_USER_TEL" id="SALES_MNG_USER_TEL" value="${oemInfo.OFFICE_NO }" readonly /></td>
|
||
<td class="input_title">FAX</td>
|
||
<td><input type="text" name="SALES_MNG_USER_FAX" id="SALES_MNG_USER_FAX" value="${oemInfo.SUPPLY_FAX_NO }" readonly /></td>
|
||
|
||
<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">FAX</td>
|
||
<td><input type="text" name="SUPPLY_USER_FAX" id="SUPPLY_USER_FAX" value="${info.SUPPLY_USER_FAX }" readonly /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">E-MAIL</td>
|
||
<td colspan="3">woosung@wsse.co.kr</td>
|
||
|
||
<td class="input_title">E-MAIL</td>
|
||
<td colspan="3"><input type="text" name="SUPPLY_USER_EMAIL" id="SUPPLY_USER_EMAIL" value="${info.SUPPLY_USER_EMAIL }" readonly /></td>
|
||
</tr>
|
||
<tr>
|
||
<td class="input_title">주 소</td>
|
||
<td colspan="3">대구광역시 달성군 다사읍 세천로3길 28</td>
|
||
|
||
<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 colspan="10" style="text-align: center; height:40px;">아래의 자재를 발주하오니 기일 내 필히 납품하여 주시기 바랍니다.</td>
|
||
</tr>
|
||
|
||
<tr>
|
||
<td colspan="2" class="input_title">발주구분</td>
|
||
<td colspan="1">
|
||
<select name="ORDER_TYPE_CD" id="ORDER_TYPE_CD" required reqTitle="발주구분" type="select" class="select2" autocomplete="off" disabled>
|
||
<option value="">선택</option>
|
||
${code_map.order_type_cd}
|
||
</select>
|
||
</td>
|
||
<td colspan="" class="input_title">제목</td>
|
||
<td colspan="6"><input type="text" name="TITLE" id="TITLE" value="${info.TITLE }" required reqTitle="제목" readonly /></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2" class="input_title">납품장소</td>
|
||
<td colspan="1">
|
||
<select name="DELIVERY_PLACE" id="DELIVERY_PLACE" required reqTitle="납품장소" type="select" class="select2" autocomplete="off" disabled>
|
||
<option value="">선택</option>
|
||
${code_map.delivery_place}
|
||
</select>
|
||
</td>
|
||
<td colspan="1" class="input_title">검수방법</td>
|
||
<td colspan="1">
|
||
<select name="INSPECT_METHOD" id="INSPECT_METHOD" required reqTitle="검수방법" type="select" class="select2" autocomplete="off" disabled>
|
||
<option value="">선택</option>
|
||
${code_map.inspect_method}
|
||
</select>
|
||
</td>
|
||
<td colspan="2" class="input_title">결제조건</td>
|
||
<td colspan="1">
|
||
<select name="PAYMENT_TERMS" id="PAYMENT_TERMS" required reqTitle="결제조건" type="select" class="select2" autocomplete="off" disabled>
|
||
<option value="">선택</option>
|
||
${code_map.payment_terms}
|
||
</select>
|
||
</td>
|
||
<td colspan="1" class="input_title">입고요청일</td>
|
||
<td colspan="1"><input type="text" name="DELIVERY_DATE" id="DELIVERY_DATE" class="date_icon" required reqTitle="입고요청일" value="${info.DELIVERY_DATE }" readonly/></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="2" class="input_title">금액합계</td>
|
||
<td colspan="6"><input type="text" name="TOTAL_PRICE_TXT" id="TOTAL_PRICE_TXT" value="${info.TOTAL_PRICE_TXT }" readonly placeHolder="금액합계 자동계산"/></td>
|
||
<%-- --%>
|
||
<td colspan="1" class="input_title">부가세</td>
|
||
<td colspan="1">
|
||
<select name="VAT_METHOD" id="VAT_METHOD" reqTitle="부가세" type="select" class="select2" autocomplete="off" disabled>
|
||
<option value="">선택</option>
|
||
${code_map.vat_method}
|
||
</select>
|
||
</td>
|
||
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
|
||
<div class="btn_wrap" style="height:40px;">
|
||
<div class="plm_btn_wrap" style="padding:0 8 0 8; text-align: right;">
|
||
<% if(isModify){ %>
|
||
<input type="button" value="행추가" class="plm_btns" id="btnAdd" name="btnAdd" style="background:#dfeffc">
|
||
<input type="button" value="행삭제" class="plm_btns" id="btnDel" name="btnDel" style="background:#dfeffc">
|
||
<input type="button" value="저장" class="plm_btns" id="btnSave" name="btnSave" style="background:#dfeffc">
|
||
<input type="button" value="결재상신" class="plm_btns" id="btnAppr" name="btnAppr" style="background:#dfeffc">
|
||
<% }else{ %>
|
||
<input type="button" value="단가저장" class="plm_btns" id="btnPriceSave" name="btnPriceSave" style="background:#dfeffc">
|
||
<input type="button" value="발주서다운" class="plm_btns" id="btnDown" name="btnDown" style="background:#dfeffc">
|
||
<% } %>
|
||
<input type="button" value="닫기" class="plm_btns" style="background:#dfeffc" onclick="window.close();" >
|
||
</div>
|
||
</div>
|
||
|
||
<div id="plm_table_wrap1" style="padding:0 8 0 8;">
|
||
<div style="height: ;">
|
||
<table id="grid1""></table>
|
||
<!-- <div id="jqGridPager"></div> -->
|
||
<textarea style="width:0px; height:0px; visibility: hidden;" id="gridDetailList">${gridDetailList}<c:if test="${empty gridDetailList}">[]</c:if></textarea><!-- [{},{},{}] -->
|
||
</div>
|
||
</div>
|
||
|
||
<div id="expenseApplyPopupFormWrap1" style="margin-top:30px;position: ">
|
||
<table class="pmsPopupForm">
|
||
<colgroup>
|
||
<col width="7%" />
|
||
<col width="42%" />
|
||
<col width="8%" />
|
||
<col width="11%" />
|
||
<col width="11%" />
|
||
<col width="11%" />
|
||
<col width="11%" />
|
||
</colgroup>
|
||
<tr>
|
||
<td rowspan="2" class="input_title">작업지시사항</td>
|
||
<td rowspan="2">
|
||
<textarea style="width:100%; height: 80px;background-color: #fff;" name="REMARK" id="REMARK" readonly>${info.REMARK}</textarea>
|
||
</td>
|
||
<td rowspan="2" style="text-align:center;height: 65px;" class="input_title">결<br>재</td>
|
||
<td style="text-align:center;height: 15px;" class="input_title">담당</td>
|
||
<td style="text-align:center;" class="input_title">검토</td>
|
||
<td style="text-align:center;" class="input_title">결재</td>
|
||
<td style="text-align:center;" class="input_title">대표</td>
|
||
</tr>
|
||
<tr>
|
||
<td style="text-align:center;" id="appr0"></td>
|
||
<td style="text-align:center;" id="appr1"></td>
|
||
<td style="text-align:center;" id="appr2"></td>
|
||
<td style="text-align:center;" id="appr3"></td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan="8" style="text-align: right;">★거래명세서 작성시 필히 프로젝트명 과 발주서 사양 순서로 작성 바랍니다.</td>
|
||
</tr>
|
||
</table>
|
||
</div>
|
||
</section>
|
||
|
||
<textarea style="width:0px; height:0px; visibility: hidden;" id="unit_cd">${code_map.unit_cd}</textarea><!-- 코드동적설정 -->
|
||
|
||
</form>
|
||
</body>
|
||
</html> |