package com.style24.persistence.domain;

import java.util.Calendar;
import java.util.Collection;
import java.util.List;

import org.apache.commons.lang3.StringUtils;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.style24.core.support.util.CryptoUtils;
import com.style24.persistence.TscBaseDomain;
import com.style24.persistence.TscPageRequest;

import lombok.Data;

/**
 * 외부몰 Domain
 *
 * @author jmh
 * @since 2021. 5. 20
 */
@SuppressWarnings("serial")
@Data
public class ExtmallOrder extends TscBaseDomain {

	// 제휴몰 주문업로드 컬럼
	private String vendorId; 			// 벤더ID(공통코드G003)
	private String vendorNm; 			// 벤더명
	private String extmallId; 			// 제휴몰ID(외부몰). TB_EXMALL.EXTMALL_ID
	private String extmallNm; 			// 제휴몰명.SHOPLINKER_ORDER.MALL_NAME
	private String extmallTel; 			// 제휴몰고객센터연락처
	private String agentOrderId; 		// 에이전트주문번호.SHOPLINKER_ORDER.SHOPLINKER_ORDER_ID
	private String extmallOrderId; 		// 제휴몰주문번호(쇼핑몰주문번호).SHOPLINKER_ORDER.MALL_ORDER_ID
	private String extmallProdId; 		// 제휴몰상품ID. SHOPLINKER_ORDER.ORDER_PRODUCT_ID
	private String extmallProdNm; 		// 제휴몰상품명. SHOPLINKER_ORDER.PRODUCT_NAME
	private String goodsCd; 			// 상품코드(상품)
	private String goodsNm;				// 상품명
	private String goodsStat;			// 상품상태
	private String sku; 				// 옵션명(필수옵션+추가옵션)
	private Integer currPrice; 			// 현재판매가. SHOPLINKER_ORDER.SALE_PRICE
	private Integer ordQty; 			// 주문수량. SHOPLINKER_ORDER.QUANTITY
	private Integer ordAmt; 			// 주문금액. SHOPLINKER_ORDER.ORDER_PRICE
	private Integer cpnDcAmt; 			// 쿠폰할인금액(오픈마켓(인터파크,지마켓,옥션,스토어팜,스마트스토어) + 고도몰 적용). SHOPLINKER_ORDER.DIS_PRICE_COUPON
	private Integer pntDcAmt; 			// 포인트할인금액(오픈마켓(인터파크,지마켓,옥션,스토어팜,스마트스토어) + 고도몰 적용). SHOPLINKER_ORDER.DIS_PRICE_POINT
	private int delvFee; 				// 배송비.  SHOPLINKER_ORDER.BAESONG_BI
	private String ordRecvDt; 			// 주문수집일.SHOPLINKER_ORDER.ORDER_REG_DATE
	private String ordDt; 				// 주문일.SHOPLINKER_ORDER.ORDERDATE
	private String ordNm; 				// 주문자명.SHOPLINKER_ORDER.ORDER_NAME
	private String ordPhnno; 			// 주문자휴대전화번호.SHOPLINKER_ORDER.ORDER_CEL
	private String ordTelno; 			// 주문자전화번호.SHOPLINKER_ORDER.ORDER_TEL
	private String ordEmail; 			// 주문자이메일.SHOPLINKER_ORDER.ORDER_EMAIL
	private String recipNm; 			// 수령자명.SHOPLINKER_ORDER.RECEIVE
	private String recipPhnno; 			// 수령자휴대전화번호.SHOPLINKER_ORDER.RECEIVE_CEL
	private String recipTelno; 			// 수령자전화번호.SHOPLINKER_ORDER.RECEIVE_TEL
	private String recipZipcode; 		// 수령자우편번호.SHOPLINKER_ORDER.RECEIVE_ZIPCODE
	private String recipBaseAddr;		// 수령자기본주소
	private String recipDtlAddr;		// 수령자상세주소
	private String delvMemo; 			// 배송메모.SHOPLINKER_ORDER.DELIVERY_MSG
	private String uploadStat; 			// 업로드상태(공통코드G021)
	private String uploadStatNm;
	private String uploadFailCd; 		// 업로드실패코드(공통코드G022)
	private String uploadFailNm;
	private String uploadFailReason; 	// 업로드실패사유
	private Integer ordNo; 				// 주문번호(주문)
	private Integer delvAddrSq; 		// 배송지일련번호(배송지)
	private String optCd;				// 옵션코드
	private String uploadGb;			// 업로드구분(샵링커:S, 엑셀:E)
	private String excelFileNm;			// 엑셀업로드 파일명
	private String procJob;
	private String warningYn;			// 주의여부(엑셀업로드 결과표시관련)
	private String supplyCompCd;		// 공급업체코드
	private Integer totalOrdAmt;		// 총 주문금액
	private Integer stockFailHstCnt;	// 주문업로드시 재고실패이력 cnt
	private String cnclsmsSendYn; 		// 알림톡-취소문자발송여부(Y:제휴몰에서발송, N:자사몰에서발송)
	private String cnclAllSoldoutYn; 	// 알림톡-전체품절취소여부
	private String soldoutGoodsNm;		// 알림톡-품절상품내용

	private String stDate;
	private String edDate;
	private String regNm;				// 자사-등록자명
	private Integer regNo;				// 자사-등록자번호
	private String regDt;				// 자사-등록일시

	private String succCnt;				// 엑셀업로드 성공수
	private String failCnt;				// 엑셀업로드 실패수

	Collection<ExtmallOrder> orderDetailList;		// 주문상세목록
	Collection<ExtmallOrder> delvFeeCdList;		// 배송정보목록

	// 스타일24 ORDER 컬럼
	// 주문마스터
	private String mallGb;							// 몰구분
	private String mallGbNm;						// 몰구분명
	private String payDt;							// 결제일자
	private Integer custNo;							// 고객번호
	private String siteCd;							// 사이트코드
	private String siteCdNm;						// 사이트코드명
	private String npayOrdNo;							// 네이버페이주문번호
	private String npayOrdDtlNo;						// 네이버페이 상품주문번호(주문상세번호)
	private String frontGb;							// 프론트구분 (P, M, A)
	private String frontGbNm;						// 프론트구분명 (PC, MOBILE, APP)
	private String custNm;							// 회원명
	private String cellPhnno;						// 회원핸드폰
	private String email;							// 이메일
	private String delvAddrNm;						// 배송지명
	private String ci;								// 회원CI값

	// 주문상세
	private Integer ordDtlNo;						// 주문상세번호
	private String ordExchGb;						// 결제, 교환 구분 (O, E)
	private String ordDtlStat;						// 주문상세상태
	private int orgOrdDtlNo;						// 실제주문상세번호(교환)
	private String formalGb;						// 정상,이월구분
	private String formalGbNm;						// 정상,이월구분명
	private String goodsType;						// 상품타입
	private String itemAddPrice;					// 구성상품옵션추가금액
	private int listPrice;							// 정상가
	private int orgCurrPrice;						// 판매가
	private double dcRate;							// 할인율
	private int optAddPrice;						// 옵션추가금액
	private int cnclRtnQty;							// 취소/반품수량
	private int cnclRtnAmt;							// 취소/반품금액
	private int orgCnclRtnAmt;						// 기취소/반품금액
	private int cpn1CpnSq;							// 즉시할인쿠폰시퀀스
	private int cpn1DcAmt;							// 즉시할인쿠폰할인금액
	private int tmtb1Sq;							// 다다익선1시퀀스(수량)
	private int tmtb1DcAmt;							// 다다익선1할인금액(수량)
	private int tmtb2Sq;							// 다다익선2시퀀스(금액)
	private int tmtb2DcAmt;							// 다다익선2할인금액(금액)
	private int goodsCpnSq;							// 상품쿠폰시퀀스
	private int goodsCpnDcAmt;						// 상품쿠폰할인금액
	private int cartCpnSq;							// 장바구니시퀀스
	private int cartCpnDcAmt;						// 장바구니할인금액
	private int gfcdUseAmt;							// 상품권사용금액
	private int ordDtlItemStat;

	private int prePntDcAmt;						// 선포인트사용금액
	private int savePntAmt;							// 적립포인트
	private int orgSavePntAmt;

	private int realOrdAmt;							// 실결제금액
	private String venderId;						// 벤더ID
	private String changeableYn;					// 교환가능여부
	private String changeFeeFreeYn;					// 교환배송비무료여부
	private String returnableYn;					// 반품가능여부
	private String returnFeeFreeYn;					// 반품배송비무료여부

	private String soldoutYn;						// 품절여부
	private String soldoutMemo;						// 품절메모
	private String soldoutRegNo;					// 품절등록자번호
	private String soldoutRegDt;					// 품절등록일자
	private String shotDelvYn;						// 총알배송여부
	private String shotDelvUseYn;					// 총알배송사용여부(장바구니)
	private String giftPackYn;						// 선물포장여부
	private int custDelvAddrSq;
	private String foreignYn;						// 해외구매대행여부

	private String delvLocCd;						// 출고처코드
	private String delvLocNm;						// 출고처코드명
	private String delvAssigngDt;					// 출고처지정일자
	private String delvAddignStat;					// 출고처지정상태
	private String dstrbtMemo;						// 출고메모
	private String delvStdt;						// 배송시작일자
	private String delvEddt;						// 배송종료일자

	private String shipCompCd;						// 배송업체코드
	private String invoiceNo;						// 송장번호
	private String invoiceSendYn;					// 배송지시전송여부
	private String sellStoreCd;						// 판매매장코드
	private String naverPayShipCompCd;				// 네이버페이 택배사코드
	private double sellFeeRate;						// 판매매장수수료

	private String afLinkCd;						// AFLINKCD
	private String ithrCd;							// ITHRCD
	private String contentsLoc;						// CONTESTSCLOC

	private Integer planDtlsq;						// 기획전시퀀스
	private Integer socialSq;						// 소셜시퀀스

	private String condition;						//
	private String[] conditions = null;				//

	private String searchDateGb;					// 검색일자구분
	private String orderNm;							// 주문자명
	private String custId;							// 회원ID
	private String orderPhnno;						// 주문핸드폰번호
	private String sizeCd;							// 사이즈코드
	private String payMeans;						// 결제타입
	private String chgStat;							// 교환상태
	private String chgGb;							// 변경구분 (취소신청, 반품신청, 교환요청)
	private String wdInvoiceSendYn;					// 회수지시전송여부
	private String goodsCnt;						// 상품수

	private int cancelRequestQty;					// 취소요청수량
	private int exchangeRequestQty;					// 교환요청수량
	private int returnRequestQty;					// 반품요청수량
	private int delvFeeSaveGoodsAmt;				// 최수주문수량 - 상품 수량 금액

	// 상품정보
	private String imgPath1;						// 이미지경로1
	private String sysImgNm;						// 이미지명
	private String brandCd;							// 브랜드코드
	private String opt;								// 옵션
	private String optCd1;							// 옵션코드1
	private String optCd2;							// 옵션코드2
	private String optCd11;							// 교환옵션코드1
	private String optCd12;							// 교환옵션코드2
	private String goodsTypeNm;						// 상품타입명
	private String brandEnm;						// 브랜드명
	private String itemCd;							// 아이템코드
	private String goodsNum;						// 품번
	private String supplyGoodsCd;					// 공급처코드
	private String optCd2s;							// 옵션코드(문자)
	private int currStockQty;						// 현재재고
	private String currStockQtys;					// 현재재고(문자)

	private int totDcAmt;							// 전체할인금액
	private String dateGbn;							// 일자구분
	private String mallCd;							// MALLCD
	private String search;							// 검색어
	private int productNo;							// 상품번호
	private String skuModelNo;						// skuModelNo
	private String productCode;						// productCode

	private String foreignBuyYn;					// 해외구매대행가능여부
	private String orderMadeYn;						// 주문제작상품여부
	private String entryNo;							// 통관번호
	private int dispOrd;							// 노출순서

	/* Multi CheckBox 항목 */
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] multiBrand;					// 브랜드코드배열

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] multiOrdStat;					// 주문상태배열

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] multiOrdDtlStat;				// 주문상세상태배열

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] multiChgStat;					// 주문상태배열

	private int sumListPrice;						// 공급가액 합계
	private int sumOrdAmt;							// 주문금액합계
	private int sumOrdCnclAmt;						// 주문취소금액합계
	private int sumRealPayAmt;						// 주문실결제금액합계
	private int ordNoCnt;							// 주문번호건수
	private int sumOrdQty;							// 주문건수합계
	private int sumOrdCnclQty;						// 주문취소건수합계


	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private int[] ordNoList;						// 주문번호배열

	private String delYn;							// 삭제여부
	private String recipAddr;						// 배송지주소
	private String delvAddrEditYn;					// 출고메모수정여부
	private String exchGbNm;						// 교환구분명

	private String escrowYn;						// 에스크로결제여부
	private String payMeansNm;						// 결제타입명
	private String cardNm;							// 카드명
	private String vaBank;							// 가상계좌
	private String pgTradeNo;						// PG거래번호
	private String payStat;							// 결제상태
	private String payStatNm;						// 결제상태명
	private int payAmt;								// 결제금액
	private String vaDeadline;						// 가상계좌입금마감일

	private String delvFeeGb;						// 배송비구분 (원주문배송비, 재결제배송비, 반품배송비, 교환배송비)
	private String delvFeeGbNm;						// 배송비구분명
	private int wmsDelvFee;							// 자사 배송비
	private String delvUsacYn;						// 배송비정산여부
	private String delvUsacDt;						// 배송비정산일자
	private Integer delvFeeSq;						// 배송비시퀀스

	private String coundelClsf;
	private String relGoodsCd;						// 1:1문의상품코드
	private String questTitle;						// 1:1문의제목
	private String questDt;							// 1:1문의일자
	private String ansDt;							// 1:1답변일자
	private int andNo;								// 1:1답변자

	private Integer ordChgSq;						// 변경시퀀스
	private String chgGbNm;							// 변경구분명
	private String chgStatNm;						// 변경상태명
	private String chgReason;						// 변경사유
	private String chgReasonNm;						// 변경사유명
	private String chgMemo;							// 변경메모
	private String chgerNm;							// 변경자
	private String chgerPhnno;						// 변경자핸드폰번호
	private String chgerTelno;						// 변경자전화번호
	private String chgerZipcode;					// 변경자우편번호
	private String chgerBaseAddr;					// 변경자기본주소
	private String chgerDtlAddr;					// 변경자상세주소
	private String chgerRtnMemo;					// 변경자반품메모
	private String wdInvoiceNo;						// 회수송장번호

	private String supplyCompNm;					// 공급업체명
	private String brandKnm;						// 브랜드명(한글)
	private String ordDtlStatNm;					// 주문상세상태명

	private String custGrade;						// 고객등급
	private String custGradeNm;						// 고객등급명
	private String custGb;							// 고객구분(일반, 임직원)
	private String custGbNm;						// 고객구분명
	private String managedRsn;
	private String managedRsnNm;

	private int itemQty;							// 아이템수량
	private int itemPrice;							// 아이템단가
	private String itemNm;							// 아이템명

	// Pagination
	private TscPageRequest pageable;				// 페이징
	private int pageNo = 1;							// 페이지번호
	private int pageSize = 50;						// 페이지목록수
	private int pageUnit = 10;						// 페이지번호수

	// 주문문의 1:1 응답 칼럼
	private String counselClsfNm;
	private String ansNo;
	private String ansNm;
	private String updNm;

	// 주문메모칼럼
	private Integer orderMemoSq;
	private Integer ordMemoSq;
	private String memo;
	private String orgFileNm;
	private String sysFileNm;

	// 사은품칼럼
	private Integer ordFreegiftSq;
	private Integer freegiftSq;
	private String freegiftNm;
	private Integer freegiftValSq;
	private int usePoint;
	private int seq;
	private String userNm;
	private String allYn;

	// 환불계좌칼럼
	private String raBank;
	private String raBankNm;
	private String raNo;
	private String encodedRaNo;
	private String raNm;
	private String defaultYn;

	// 주문상세변경내역칼럼
	private String userId;
	private String updId;
	private String shipCompNm;
	private String shipCompId;

	// 주문쿠폰
	private int cpnSq;
	private Integer cpnId;
	private String cpnType;
	private String targetCd1;
	private String targetCd2;
	private String cpnNm;
	private String dcWay;
	private int dcPval;
	private int dcMval;
	private int dcAval;
	private String applyScope;
	private Integer custCpnSq;

	// 주문포인트
	private Integer pntHstSq;
	private int pntRate;
	private int pntPrate;
	private int pntMrate;
	private int pntAmt;
	private String occurGb;
	private String occurGbNm;
	private String occurDtlDesc;
	private String pntUploadStat;

	// 주문상품권
	private Integer gfcdHstSq;
	private Integer custGfcdSq;
	private String gfcdNm;
	private String gfcdNo;
	private int gfcdAmt;
	private int chgGfcdAmt;
	private int usGfcdAmt;
	private int rmGfcdAmt;
	private int rmPntAmt;

	// 다다익선
	private Integer tmtbSq;
	private String tmtbNm;
	private int tmtbDcAmt;

	// 상태변경
	private String g20;
	private String g30;
	private String g40;
	private String g50;
	private String g55;
	private String g60;

	// 취소요청
	private String cncWait;
	private int ordReqChgQty;
	private int itemReqChgQty;
	private int itemOrdPrice;
	private int minOrdAmt;
	private int orgDelvFee;
	private String delvFeeCd;
	private String resDelvFeeCd;
	private int ordCanChgQty;
	private String allCanYn;
	private String lastCanYn;

	private String addDelvFeeYn;
	private int addDelvFee;
	private Integer ordDtlItemSq;

	private Integer paySq;
	private String pgOrdNo;
	private int refundAmt;
	private int rfCpn1Amt;
	private int rfTmtb1Amt;
	private int rfTmtb2Amt;
	private int rfGoodsCpnAmt;
	private int rfCartCpnAmt;
	private int rfDelvCpnAmt;
	private int rfPntAmt;
	private int rfPrePntAmt;
	private int rfGfcdUseAmt;
	private int rfDeliveryFee;
	private int rfCnclAmt;
	private int rfRealCnclAmt;

	private int pgCpnAmt;
	private int npayPntAmt;
	private String payGb;
	private String pgGb;
	private String pgTid;
	private String cardType;
	private String cardKind;
	private String cardBank;
	private String cardMips;
	private String cardPcableYn;
	private String vaNo;
	private String vaNm;
	private String telecom;
	private String cashAuthNo;
	private String cashTradeNo;

	private String accountNo;
	private String encodedAccountNo;	// 계좌번호 암호화
	private String accountNm;
	private String bankCd;
	private String bankNm;

	public String getAccountNo() {
		this.accountNo = CryptoUtils.decryptAES(this.accountNo);
		return this.accountNo;
	}

	public void encryptData () {
		this.encodedAccountNo = CryptoUtils.encryptAES(this.accountNo);
	}

	private int realDelvAmt;
	private int delvCpnSq;
	private int delvCpnDcAmt;

	private int chgQty;
	private int rtnDelvFee;
	private int excDelvFee;

	private String[] ordDtlStatArr;

	private int[] ordDtlNoArr;
	private int[] cnclRtnReqQtyArr;

	// 교환요청
	private String ordChgOpt;
	private String rtnLocZipcode;
	private String rtnLocBaseAddr;
	private String rtnLocDtlAddr;
	private String rtnLocTelno;
	private String rtnLocNm;
	private int exchangeOrdDtlNo;
	private int exchangeOrdDtlItemSq;
	private String wdGb;
	private int addPayCost;

	// 주문서
	private int wmsCnt;
	private int resCnt;
	private int delvCnt;
	private int delvTotCnt;
	private int delvFeeTotCnt;

	Collection<Order> shotCartList;					// 자사총알배송목록
	Collection<Order> wmsCartList;					// 자사일반배송목록
	Collection<Order> resCartList;					// 자사예약배송목록
	Collection<Order> delvCartList;					// 입점업체배송목록
	Collection<Order> delvAllCartList;				// 배송전체목록 sort
	Collection<Order> cartGoodsList;				// 다다익선적용장바구니목록
	List<Order> goodsCpnList;
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private int[] cartCpnCartSqArr;

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private int[] freegiftSqArr;

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private int[] freegiftSectionSqArr;
	int freegiftAmt;
	Integer freegiftSectionSq;

	// 장바구니
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private int[] cartSqArr;		// 장바구니 일련번호 배열 (일시품절제외 조회)
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] itemNmArr;		// 옵션코드
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] goodsPriceArr;		// 옵션코드
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] optCdArr;		// 옵션코드
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] colorNmArr;	// 컬러명
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] optCd1Arr;		// 옵션코드
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] optCd2Arr;		// 옵션코드
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] itemQtyArr;	// 구성상품번호
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] itemCdArr;		// 옵션코드
	private String jsessionId;		// SessionId
	private String colorNm;			// 컬러명
	private String itemQtyr;		// itemQty GROUP_CONCAT
	private String delvResDt;		// 예약배송일자
	private String shotDelvDt;		// 총알 도착 예상 일자
	private String firstCompYn;		// 업체 중 첫번째 상품 여부
	private String delvFeeCrite;	// 배송비구분 (G078_10 : 조건부 무료, G078_20 : 무료, G078_30 : 유료)
	private String shotCanYn;		// 총알배송 가능 여부
	private String serialCpnNm;		// 시리얼쿠폰명
	private String cartDelvFeeCd;	// 장바구니 delvFeeCd 구분 (총알, 일반, 업체구분)
	private String ordCanYn;		// 주문 가능 여부
	private String quickYn;			// 퀵메뉴 여부
	private String cartYn;			// 장바구니 여부
	private Integer cartSq;			// 장바구니 일련번호
	private int goodsQty;			// 장바구니 등록 수량
	private int compCnt;			// 장바구니 업체 수
	private int compSumPrice;		// 업체별 금액 합계
	private int qtySumCurrPrice;	//
	private int totDelvFee;			// 배송비 총합
	private int totCartCnt;			// 장바구니 상품 수량
	private int maxDcAmt;			// 쿠폰 최대 할인 금액
	private int buyLimitAmt;		// 쿠폰 적용 최소 구매 금액
	private int wishCnt;			// 위시리스트 수량
	private int minOrdQty;			// 최소 주문 수량
	private int maxOrdQty;			// 최대 주문 수량
	private int ordCanQty;			// 주문 가능 수량
	private int saveLimitDay;		// 장바구니 보관기한
	private int allCartCnt;			// 장바구니 전체 수량(구매불가 포함)

	// 다다익선
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private int[] tmtbSqs;							// 다다익선 일련번호
	private int qtyTmtbSq;							// 수량 다다익선 적용 일련번호
	private int amtTmtbSq;							// 금액 다다익선 적용 일련번호
	private int applyAmtSectionVal;					// 적용 조건
	private int applyQtySectionVal;					// 적용 조건
	private int dcVal;								// 할인값
	private int qtyDcVal;							// 수량 다다익선 할인값
	private int amtDcVal;							// 금액 다다익선 할인값
	private int qtyTmtbCnt;							// 수량 다다익선 상품 수
	private int amtTmtbCnt;							// 금액 다다익선 상품 수
	private int sectionVal;							// 다다익선 조건
	private int qtySectionVal;						// 수량 다다익선 조건
	private int amtSectionVal;						// 금액 다다익선 조건
	private int tmtbSumQty;							// 장바구니 수량 다다익선 총계
	private int tmtbSumAmt;							// 장바구니 금액 다다익선 총계
	private int qtyTmtbSumQty;						// 수량 다다익선 합계 수량
	private int qtyTmtbSumAmt;						// 수량 다다익선 합계 금액
	private int amtTmtbSumQty;						// 금액 다다익선 합계 수량
	private int amtTmtbSumAmt;						// 금액 다다익선 합계 금액
	private int qtyTmtbMinSectionVal;				// 수량 다다익선 최소 조건
	private int qtyTmtbMinDcVal;					// 수량 다다익선 최소조건에 대한 할인값
	private int amtTmtbMinSectionVal;				// 금액 다다익선 최소조건
	private int amtTmtbMinDcVal;					// 금액 다다익선 최소조건에 대한 할인값
	private String sectionGb;						// 할인구분
	private String qtyTmtbNm;						// 수량 적용 다다익선명
	private String amtTmtbNm;						// 금액 적용 다다익선명
	private String qtyDcWay;						// 수량 다다익선 할인구분
	private String amtDcWay;						// 금액 다다익선 할인구분
	private String qtyGoodsGb;						// 상품 구분 (G800_10(기본), G800_20(적용), G800_30(제외), G800_40(ALL))
	private String amtGoodsGb;						// 상품 구분 (G800_10(기본), G800_20(적용), G800_30(제외), G800_40(ALL))
	private String goodsGb;							// 상품 구분 (G800_10(기본), G800_20(적용), G800_30(제외), G800_40(ALL))
	private String applyGb;							// 다다익선 할인 기준
	private String applyQtySectionYn;				// 다다익선 적용 여부
	private String applyAmtSectionYn;				// 다다익선 적용 여부

	// 마이페이지
	private int itemCnt;
	private int ordDtlStatCnt;
	private String delvDesc;
	private Integer reviewSq;
	private String selfGoodsYn;
	private String brandNm;
	private String brandGroupNm;
	private String expiredSoon;
	private int purchaseConfirmDay;
	private String giftLimitDt;
	private int giftLimitDay;
	private String giftCompleteDt;
	private String vaDeadlineYmd;
	private String vaDeadlineHms;
	private int totalDcAmt;
	private Integer custPntSq;
	private int orderReceiptCount;
	private int depositWaitingCount;
	private int waitingAddPaymentCount;
	private int paymentCompleteCount;
	private int goodsPrepareCount;
	private int shipPrepareCount;
	private int shippingCount;
	private int shipCompleteCount;
	private int cancelCount;
	private int exchangeCount;
	private int returnCount;
	private int confirmCount;
	private String reviewableYn;

	// 카카오페이 & 네이버페이
	private int ordGoodsQty;

	// 암호화 대상 복호화 처리
	public String getCustNm() {
		this.custNm = CryptoUtils.decryptAES(this.custNm);
		return this.custNm;
	}

	public String getEmail() {
		this.email = CryptoUtils.decryptAES(this.email);
		return this.email;
	}

	public String getCellPhnno() {
		this.cellPhnno = CryptoUtils.decryptAES(this.cellPhnno);
		return this.cellPhnno;
	}

	public String getRecipBaseAddr() {
		this.recipBaseAddr = CryptoUtils.decryptAES(this.recipBaseAddr);
		return this.recipBaseAddr;
	}

	public String getRecipDtlAddr() {
		this.recipDtlAddr = CryptoUtils.decryptAES(this.recipDtlAddr);
		return this.recipDtlAddr;
	}

	private String dispYn;

	// 주묹정보등록
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private int[] freegiftValArr;			// 사은품상품 일련번호 배열
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] freegiftGoodsArr;		// 사은품장바구니 일련번호 배열
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] freegiftUsePointArr;	// 사은품사용포인트 배열

	private String prePntDcAmtYn; 			// 선포인트사용여부
	private String sellGb;					// 판매구분
	private int usPntAmt;					// 포인트사용금액

	private String payType;					// 결제타입
	private String delvYn;					// 출고여부

	/* Multi CheckBox 항목 */
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] payTypeArr;

	// 휴대폰 번호 대쉬 붙이기
	public void setHypenCellPhone() {
		if (StringUtils.isNotBlank(this.cellPhnno)) {
			if (this.cellPhnno.length() > 10) {
				this.cellPhnno = this.cellPhnno.substring(0, 3) + "-" + this.cellPhnno.substring(3, 7) + "-" + this.cellPhnno.substring(7, 11);
			} else {
				this.cellPhnno = this.cellPhnno.substring(0, 3) + "-" + this.cellPhnno.substring(3, 6) + "-" + this.cellPhnno.substring(6, 10);
			}
		}
	}

	// 휴대폰 번호 대쉬 붙이기
	public void setHypenRecipPhone() {
		if (StringUtils.isNotBlank(this.cellPhnno)) {
			if (this.recipPhnno.length() > 10) {
				this.recipPhnno = this.recipPhnno.substring(0, 3) + "-" + this.recipPhnno.substring(3, 7) + "-" + this.recipPhnno.substring(7, 11);
			} else {
				this.recipPhnno = this.recipPhnno.substring(0, 3) + "-" + this.recipPhnno.substring(3, 6) + "-" + this.recipPhnno.substring(6, 10);
			}
		}
	}

	private String ifYn;				// 증권 인터페이스 여부 (입금 확인 여부)
	private String insNo;				// USAFE 보증보험 증권번호
	private String resultCd;			// 결과코드
	private String resultMsg;			// 결과메세지
	private String insuranceYn;			// 보증보험신청여부
	private String birthYmd;			// 생년월일(탈퇴 시 NULL로 처리)
	private String sexGb;				// 성별구분(공통코드G007). 탈퇴 시 NULL로 처리
	private String birthGen;			// 보증보험(생년월일 + 성별)

	public String getBirthYmd() {
		this.birthYmd = CryptoUtils.decryptAES(this.birthYmd);
		return this.birthYmd;
	}

	public String getSexGb() {
		this.sexGb = CryptoUtils.decryptAES(this.sexGb);
		return this.sexGb;
	}

	private String orderGiftYn;			// 선물여부
	private String giftMsg;				// 선물메세지
	private String giftAddrInpYn;		// 선물배송지등록여부
	private String giftPackCloseYn;		// 선물받기 배송기한 지남
	private String giftPackCloseDt;		// 선물받기 배송기한 날짜

	private int pointUseOrdMinAmt;		// 포인트사용기준
	private int pointUseMaxLimit;		// 최대사용가능포인트율
	private String custPayMeans;		// 결제타입설정

	private String backUrl;
	private String goodsUrl;

	// 2021.05.11 금액정보 체크
	private int orgGoodsSumAmt;
	private int cpn1DcSumAmt;
	private int tmtb1DcSumAmt;
	private int tmtb2DcSumAmt;
	private int goodsCpnDcSumAmt;
	private int cartCpnDcSumAmt;
	private int prePntDcSumAmt;
	private int pntDcSumAmt;
	private int gfcdUseSumAmt;
	private int realOrdSumAmt;
	private int delvSumAmt;

	private String delvFeeCdGrp;			// 자사,입점구분을 위해서 생성
	private Boolean isCustomer;				// 고객사유여부
	Collection<Order> withdrawConfirmList;	// 입점업체회수컨펌대상목록
	private String whMemo;					// 회수메모
	private int cancelQty;
	private int delvQty;

	private int dtlOrdAmt;
	private int dtlItemOrdAmt;

	// 네이버페이 주문형
	private String stdt;
	private String eddt;
	private Calendar from;
	private Calendar to;
	private String errorReason;
	private String accessLicense;
	private String secretKey;

	private String delvExpnYn;
	private String addDeliveryFeeYn;
	private int addDeliveryFee;
	private String wdBfSendYn;

	// 2021.06.17 스윗트래커 정보 조회
	private String timeTrans;
	private String delvWhere;
	private String details;
	private String telno;

	// 기본항목세팅(오류가 안나는 값들)
	public void setBasicParams(ShoplinkerOrder ord) {
		this.extmallId = ord.getMallId();
		this.extmallNm = ord.getMallName();
		this.agentOrderId = ord.getShoplinkerOrderId();
		this.extmallOrderId = ord.getMallOrderId();
		this.extmallProdId = ord.getOrderProductId();
		this.extmallProdNm = ord.getProductName();
		this.ordRecvDt = ord.getOrderRegDate();
		this.ordDt = ord.getOrderdate();
	}

	// 기본항목 외 세팅
	public void setDetailParams(ShoplinkerOrder ord) {
		this.goodsCd = ord.getPartnerProductId();
		this.sku = ord.getSku();
		this.currPrice = Integer.parseInt(ord.getSalePrice());
		this.ordQty = Integer.parseInt(ord.getQuantity());
		this.ordAmt = Integer.parseInt(ord.getOrderPrice());
		this.optCd = ord.getSkuMatchCode();
		this.delvFee = Integer.parseInt(ord.getBaesongBi());
		this.ordNm = ord.getOrderName();
		this.ordPhnno = ord.getOrderCel();
		this.ordTelno = ord.getOrderTel();
		this.ordEmail = ord.getOrderEmail();
		this.recipNm = ord.getReceive();
		this.recipPhnno = ord.getReceiveCel();
		this.recipTelno = ord.getReceiveTel();
		this.recipZipcode = ord.getReceiveZipcode();
		this.delvMemo = ord.getDeliveryMsg();
	}

	public String[] getParams() {
		String[] params = {this.ordDt, this.extmallId, this.extmallOrderId, this.agentOrderId, this.extmallProdId, this.sku, this.optCd, this.currPrice+"", this.ordQty+"", this.delvFee+"", this.ordNm, this.ordTelno, this.ordPhnno, this.ordEmail, this.recipNm, this.recipTelno, this.recipPhnno, this.recipZipcode, this.recipBaseAddr, this.recipDtlAddr, this.delvMemo};
		return params;
	}

	public String[] getColumns() {
		String[] columns = {"주문일", "제휴몰ID", "제휴주문번호", "샵링커주문번호",  "제휴상품코드", "자사상품코드", "옵션코드", "판매가", "주문수량", "배송비", "주문자", "주문자전화번호", "주문자휴대폰번호", "주문자이메일", "수령자명", "수령자전화번호", "수령자휴대폰번호", "수령자우편번호", "수령자기본주소", "수령자상세주소", "배송메시지"};
		return columns;
	}
}





