/*
 * Copyright 2008-2009 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package itn.let.fax.user.service;

import java.io.Serializable;


/**
 * 
 * @author 		: 이호영
 * @fileName 	: FaxMngVO.java 
 * @date 		: 2023.02.08
 * @description : [문자온]팩스 문서변환 관리 VO 
 * =========================================================== 
 * DATE          AUTHOR   NOTE 
 * ----------------------------------------------------------- *
 * 2023.02.08    이호영          최초 생성
 * 
 * 
 * 
 */
public class FaxGroupDataVO extends FaxTranVO implements Serializable {
	
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -2688722105917567857L;

	

	/** 
	 * varchar(20)                                
	 * not null 
	 * comment '팩스 그룹 PK' primary key,;
	 * */ 
	private String faxGroupId;
	/** 
	 * varchar(20)                                
	 * not null 
	 * comment '문자온 일반회원ID',;
	 * */   
	private String userId;
	/** 
	 * 	varchar(11)                                
	 * not null 
	 * comment '팩스 파일 변환 관리 테이블 PK',;
	 * */        	
	private String convertMngSeq;
	
	/** 
	 * varchar(11)                                
	 * not null 
	 * comment 'Xpedite 팩스 발송 테이블 PK',;
	 * 
	 * */ 	
	private String pgiFaxtranSeq;
	
	/** 
	 * varchar(120)                               
	 * null 
	 * comment '제목',;
	 * */        
	private String subject;
	
	/** 
	 * datetime       
	 * default current_timestamp() 
	 * not null 
	 * comment '발송일자(예약일자)',;
	 * */        	
	private String reqDate;
	
	/** 
	 * int(10)                                    
	 * null 
	 * comment '팩스 총 장수',;
	 * */      
	private int faxPageCnt; 
	
	/** 
	 * int(10)                                    
	 * null 
	 * comment '팩스전송건수(수신자 카운트)',;
	 * */   		
	private int faxGroupCnt;
	
	/** 
	 * decimal(10, 2) 
	 * default 0.00                
	 * not null 
	 * comment '개별팩스 가격',;
	 * */
	private float eachPrice;
	
	/** 
	 * decimal(10, 2) 
	 * default 0.00                
	 * not null 
	 * comment '전체팩스 가격',;
	 * */      	
	private float totPrice;
	
	/** 
	 * char           
	 * default 'N'                 
	 * null 
	 * comment '에약여부(N:미예약(기본) , Y:예약)',;
	 * */      	
//	private char reserveYn;
	
	/** 
	 * char           
	 * default 'N'                 
	 * null 
	 * comment '예약 취소 여부',;
	 * */      
	private char reserveCYn;
	
	/** 
	 * decimal(20, 2) 
	 * default 0.00                
	 * not null 
	 * comment '사용전 캐쉬',;
	 * */
	private String befCash;
	
	/** 
	 * decimal        
	 * default 0                   
	 * null 
	 * comment '차감전 포인트 ',;
	 * */
	private String befPoint;
	
	/** 
	 * varchar(20)                                
	 * null 
	 * comment '추천인 아이디',;
	 * */        
	private String recommId;
	
	/** 
	 * char           
	 * default 'N'                 
	 * null 
	 * comment '사용자 삭제여부(N:미삭제, Y:삭제)',;
	 * */     	
	private char delFlag;
	
	/** 
	 * datetime       
	 * default current_timestamp() 
	 * null 
	 * comment '등록일자',;
	 * */           
	private String regdate;
	
	/** 
	 * datetime                                   
	 * null 
	 * comment '예약 취소 일자',;
	 * */         
	private String canceldate;  
	
	/** 
	 * char           
	 * default 'N'                 
	 * null 
	 * comment '이벤트 발송 여부(N:미적용, Y:적용)',;
	 * */ 	
	private char eventYn;  
	

	/* * * * * * * * 
	 * form data 받기 위한 임시 변수
	 * * * * * * * */
	// 환불 금액
	private float refundPrice;
	
	private String searchDateType;
	private int totalSentPage;
	private int totalSuccessPage;
	private int totalHoldPage;
	private int totalErrorPage;
	private int totalUnsendPage;
	private double totalSuccessPrice;
	private double totalRefundPrice;
	
	private String searchYear;
	private String searchMonth;
	private String searchQuarter;
	
	private String successDay;
	private String successMonth;
	private String successYear;
	private String successCntDay;
	private String successCntMonth;
	private String successCntYear;

	public String getSuccessDay() {
		return successDay;
	}

	public void setSuccessDay(String successDay) {
		this.successDay = successDay;
	}

	public String getSuccessMonth() {
		return successMonth;
	}

	public void setSuccessMonth(String successMonth) {
		this.successMonth = successMonth;
	}

	public String getSuccessYear() {
		return successYear;
	}

	public void setSuccessYear(String successYear) {
		this.successYear = successYear;
	}

	public String getSuccessCntDay() {
		return successCntDay;
	}

	public void setSuccessCntDay(String successCntDay) {
		this.successCntDay = successCntDay;
	}

	public String getSuccessCntMonth() {
		return successCntMonth;
	}

	public void setSuccessCntMonth(String successCntMonth) {
		this.successCntMonth = successCntMonth;
	}

	public String getSuccessCntYear() {
		return successCntYear;
	}

	public void setSuccessCntYear(String successCntYear) {
		this.successCntYear = successCntYear;
	}


	public FaxGroupDataVO() {};
	
	public FaxGroupDataVO(String userId) { this.userId = userId;};
	
	public FaxGroupDataVO(String faxGroupId, String userId, String convertMngSeq, String pgiFaxtranSeq,
			String subject, String reqDate, int faxPageCnt, int faxGroupCnt, float eachPrice,
//			float totPrice, char reserveYn, char reserveCYn, String befCash, String befPoint, String recommId,
			float totPrice, char reserveCYn, String befCash, String befPoint, String recommId,
			char delFlag, String regdate, String canceldate, char eventYn) {
		this.faxGroupId      = faxGroupId;
		this.userId          = userId;     
		this.convertMngSeq   = convertMngSeq;  
		this.pgiFaxtranSeq   = pgiFaxtranSeq;  
		this.subject         = subject;
		this.reqDate         = reqDate;
		this.faxPageCnt      = faxPageCnt;
		this.faxGroupCnt     = faxGroupCnt;
		this.eachPrice       = eachPrice;
		this.totPrice        = totPrice;
//		this.reserveYn       = reserveYn;
		this.reserveCYn      = reserveCYn;
		this.befCash         = befCash;
		this.befPoint        = befPoint;
		this.recommId        = recommId;
		this.delFlag         = delFlag;
		this.regdate         = regdate;
		this.canceldate      = canceldate;
		this.eventYn         = eventYn;
		// TODO Auto-generated constructor stub
	}

	public String getFaxGroupId() {
		return faxGroupId;
	}

	public void setFaxGroupId(String faxGroupId) {
		this.faxGroupId = faxGroupId;
	}

	public String getUserId() {
		return userId;
	}

	public void setUserId(String userId) {
		this.userId = userId;
	}

	public String getConvertMngSeq() {
		return convertMngSeq;
	}

	public void setConvertMngSeq(String convertMngSeq) {
		this.convertMngSeq = convertMngSeq;
	}

	public String getPgiFaxtranSeq() {
		return pgiFaxtranSeq;
	}

	public void setPgiFaxtranSeq(String pgiFaxtranSeq) {
		this.pgiFaxtranSeq = pgiFaxtranSeq;
	}

	public String getSubject() {
		return subject;
	}

	public void setSubject(String subject) {
		this.subject = subject;
	}

	public String getReqDate() {
		return reqDate;
	}

	public void setReqDate(String reqDate) {
		this.reqDate = reqDate;
	}

	public int getFaxPageCnt() {
		return faxPageCnt;
	}

	public void setFaxPageCnt(int faxPageCnt) {
		this.faxPageCnt = faxPageCnt;
	}

	public int getFaxGroupCnt() {
		return faxGroupCnt;
	}

	public void setFaxGroupCnt(int faxGroupCnt) {
		this.faxGroupCnt = faxGroupCnt;
	}

	public float getEachPrice() {
		return eachPrice;
	}

	public void setEachPrice(float eachPrice) {
		this.eachPrice = eachPrice;
	}

	public float getTotPrice() {
		return totPrice;
	}

	public void setTotPrice(float totPrice) {
		this.totPrice = totPrice;
	}

//	public char getReserveYn() {
//		return reserveYn;
//	}

//	public void setReserveYn(char reserveYn) {
//		this.reserveYn = reserveYn;
//	}

	public char getReserveCYn() {
		return reserveCYn;
	}

	public void setReserveCYn(char reserveCYn) {
		this.reserveCYn = reserveCYn;
	}

	public String getBefCash() {
		return befCash;
	}

	public void setBefCash(String befCash) {
		this.befCash = befCash;
	}

	public String getBefPoint() {
		return befPoint;
	}

	public void setBefPoint(String befPoint) {
		this.befPoint = befPoint;
	}

	public String getRecommId() {
		return recommId;
	}

	public void setRecommId(String recommId) {
		this.recommId = recommId;
	}

	public char getDelFlag() {
		return delFlag;
	}

	public void setDelFlag(char delFlag) {
		this.delFlag = delFlag;
	}

	public String getRegdate() {
		return regdate;
	}

	public void setRegdate(String regdate) {
		this.regdate = regdate;
	}

	public String getCanceldate() {
		return canceldate;
	}

	public void setCanceldate(String canceldate) {
		this.canceldate = canceldate;
	}

	public char getEventYn() {
		return eventYn;
	}

	public void setEventYn(char eventYn) {
		this.eventYn = eventYn;
	}

	public float getRefundPrice() {
		return refundPrice;
	}

	public void setRefundPrice(float refundPrice) {
		this.refundPrice = refundPrice;
	}
	
	public String getSearchDateType() {
		return searchDateType;
	}

	public void setSearchDateType(String searchDateType) {
		this.searchDateType = searchDateType;
	}

	public int getTotalSentPage() {
		return totalSentPage;
	}

	public void setTotalSentPage(int totalSentPage) {
		this.totalSentPage = totalSentPage;
	}

	public int getTotalSuccessPage() {
		return totalSuccessPage;
	}

	public void setTotalSuccessPage(int totalSuccessPage) {
		this.totalSuccessPage = totalSuccessPage;
	}

	public int getTotalHoldPage() {
		return totalHoldPage;
	}

	public void setTotalHoldPage(int totalHoldPage) {
		this.totalHoldPage = totalHoldPage;
	}

	public int getTotalErrorPage() {
		return totalErrorPage;
	}

	public void setTotalErrorPage(int totalErrorPage) {
		this.totalErrorPage = totalErrorPage;
	}

	public int getTotalUnsendPage() {
		return totalUnsendPage;
	}

	public void setTotalUnsendPage(int totalUnsendPage) {
		this.totalUnsendPage = totalUnsendPage;
	}

	public double getTotalSuccessPrice() {
		return totalSuccessPrice;
	}

	public void setTotalSuccessPrice(double totalSuccessPrice) {
		this.totalSuccessPrice = totalSuccessPrice;
	}

	public double getTotalRefundPrice() {
		return totalRefundPrice;
	}

	public void setTotalRefundPrice(double totalRefundPrice) {
		this.totalRefundPrice = totalRefundPrice;
	}
	
	public String getSearchYear() {
		return searchYear;
	}

	public void setSearchYear(String searchYear) {
		this.searchYear = searchYear;
	}

	public String getSearchMonth() {
		return searchMonth;
	}

	public void setSearchMonth(String searchMonth) {
		this.searchMonth = searchMonth;
	}





	/* 
	 * Builder 패턴 
	 * */
	static public class Builder {
		private String 	faxGroupId;
		private String 	userId;
		private String 	convertMngSeq;
		private String 	pgiFaxtranSeq;
		private String 	subject;
		private String 	reqDate;
		private int 	faxPageCnt; 
		private int 	faxGroupCnt;
		private float 	eachPrice;
		private float	totPrice;
		private char 	reserveYn;
		private char 	reserveCYn;
		private String 	befCash;
		private String 	befPoint;
		private String  recommId;
		private char 	delFlag;
		private String  regdate;
		private String  canceldate;  
		private char 	eventYn;  
	
		public Builder() {
		}
		
		public Builder(FaxGroupDataVO faxGroupDataVO) {
			this.faxGroupId      = faxGroupDataVO.faxGroupId;
			this.userId          = faxGroupDataVO.userId;     
			this.convertMngSeq   = faxGroupDataVO.convertMngSeq;  
			this.pgiFaxtranSeq   = faxGroupDataVO.pgiFaxtranSeq;  
			this.subject         = faxGroupDataVO.subject;
			this.reqDate         = faxGroupDataVO.reqDate;
			this.faxPageCnt      = faxGroupDataVO.faxPageCnt;
			this.faxGroupCnt     = faxGroupDataVO.faxGroupCnt;
			this.eachPrice       = faxGroupDataVO.eachPrice;
			this.totPrice        = faxGroupDataVO.totPrice;
//			this.reserveYn       = faxGroupDataVO.reserveYn;
			this.reserveCYn      = faxGroupDataVO.reserveCYn;
			this.befCash         = faxGroupDataVO.befCash;
			this.befPoint        = faxGroupDataVO.befPoint;
			this.recommId        = faxGroupDataVO.recommId;
			this.delFlag         = faxGroupDataVO.delFlag;
			this.regdate         = faxGroupDataVO.regdate;
			this.canceldate      = faxGroupDataVO.canceldate;
			this.eventYn         = faxGroupDataVO.eventYn;
		}
		
		public Builder faxGroupId(String faxGroupId) {
			this.faxGroupId = faxGroupId;
			return this;
		}
		
		public Builder userId(String userId) {
			this.userId = userId;
			return this;
		}
		
		public Builder convertMngSeq(String convertMngSeq) {
			this.convertMngSeq = convertMngSeq;
			return this;
		}
		public Builder pgiFaxtranSeq(String pgiFaxtranSeq) {
			this.pgiFaxtranSeq = pgiFaxtranSeq;
			return this;
		}
		public Builder subject(String subject) {
			this.subject = subject;
			return this;
		}
		public Builder reqDate(String reqDate) {
			this.reqDate = reqDate;
			return this;
		}
		public Builder faxPageCnt(int faxPageCnt) {
			this.faxPageCnt = faxPageCnt;
			return this;
		}
		public Builder faxGroupCnt(int faxGroupCnt) {
			this.faxGroupCnt = faxGroupCnt;
			return this;
		}
		public Builder eachPrice(float eachPrice) {
			this.eachPrice = eachPrice;
			return this;
		}
		public Builder totPrice(float totPrice) {
			this.totPrice = totPrice;
			return this;
		}
		public Builder reserveYn(char reserveYn) {
			this.reserveYn = reserveYn;
			return this;
		}
		public Builder reserveCYn(char reserveCYn) {
			this.reserveCYn = reserveCYn;
			return this;
		}
		public Builder befCash(String befCash) {
			this.befCash = befCash;
			return this;
		}
		public Builder befPoint(String befPoint) {
			this.befPoint = befPoint;
			return this;
		}
		public Builder recommId(String recommId) {
			this.recommId = recommId;
			return this;
		}
		public Builder delFlag(char delFlag) {
			this.delFlag = delFlag;
			return this;
		}

		public Builder regdate(String regdate) {
			this.regdate = regdate;
			return this;
		}
		public Builder canceldate(String canceldate) {
			this.canceldate = canceldate;
			return this;
		}
		public Builder eventYn(char eventYn) {
			this.eventYn = eventYn;
			return this;
		}

		public FaxGroupDataVO build() {
			return new FaxGroupDataVO(
					faxGroupId
					, userId       
					, convertMngSeq
					, pgiFaxtranSeq
					, subject      
					, reqDate      
					, faxPageCnt   
					, faxGroupCnt  
					, eachPrice    
					, totPrice     
//					, reserveYn    
					, reserveCYn   
					, befCash      
					, befPoint     
					, recommId     
					, delFlag      
					, regdate      
					, canceldate   
					, eventYn
			);
		}
	}
	
}
