package com.style24.persistence.domain;

import java.util.Collection;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.style24.persistence.TscBaseDomain;
import com.style24.persistence.TscPageRequest;

import lombok.Data;

/**
 * 상품 Domain
 *
 * @author eskim
 * @since 2020. 10. 20
 */
@SuppressWarnings("serial")
@Data
public class Goods extends TscBaseDomain {

	private String goodsCd;		//상품코드
	private int productNo;		//ProductNo(WMS)
//	private String productCode;		//ProductCode(WMS)
	private String brandCd;		//브랜드코드
	private String itemkindCd;		//품목코드
	private String goodsNm;		//상품명
	private String goodsTnm;		//상품타이틀명
	private String goodsSnm;		//상품검색명
	private String goodsSnm1;		//상품검색명1(사용자등록용)
	private String mainColorCd;		//대표색상코드
	private String styleYear;		//스타일연도
	private String seasonCd;		//시즌코드(공통코드G006)
	private String sexGb;		//성별구분(공통코드G007)
	private String goodsNum;		//품번(자사상품만 사용)
	private String goodsType;		//상품타입(공통코드G056)
	private int listPrice;		//정상가(최초판매가)
	private int currPrice;		//현재판매가
	private int currBprice;		//변경전현재판매가
	private String priceUpdDt;		//가격변경일시
	private float dcRate;		//할인율
	private int benefitCurrPrice;		//즉시할인판매가
	private String goodsStat;		//상품상태(공통코드G008)
	private String goodsStatCd;		//상품상태명(공통코드G008)-상품대량등록시 goodsStat를 다른용도로 사용하고 있으므로, 상품상태 코드값 추가필요
	private String selfMallYn;		//자사몰노출여부
	private String goodsGb;		//해외구매대행/병행수입 상품일 경우 주문 시 통관부호 입력 란이 추가되어야 한다
	private String foreignBuyYn;		//해외구매대행여부
	private String parallelImportYn;	//병행수입여부
	private String orderMadeYn;			//주문제작여부
	private String distributionGb;		//유통구분(공콩코드 G065)
	private String selfGoodsYn;		//자사상품여부
	private String supplyCompCd;		//공급업체코드
	private String supplyGoodsCd;		//공급업체상품코드(원코드)
	private String ageGrpCd;		//상품연령대(공통코드 G023)
	private String delvLocCd;		//출고처코드
	private String delvFeeCd;	//배송비정책코드
	private int delvFee;		//배송비
	private int minOrdAmt;		//무료배송비최소구매금액
	private float pntPrate;		//포인트적립율(PC)
	private float pntMrate;		//포인트적립율(모바일)
	private float sellFeeRate;		//판매수수료율
	private String formalGb;		//정상이월구분(공통코드G009)
	private String changeableYn;		//교환가능여부
	private String returnableYn;		//반품가능여부
	private String changeFeeFreeYn;		//교환배송비무료여부
	private String returnFeeFreeYn;		//반품배송비무료여부
	private String prePpntUsableYn;		//선포인트사용가능여부(PC)
	private String preMpntUsableYn;		//선포인트사용가능여부(모바일)
	private int minOrdQty;		//최소주문수량
	private int maxOrdQty;		//최대주문수량
	private int dayMaxOrdQty;		//ID당1일최대구매수량
	private String giftPackYn;		//선물포장여부
	private String frstCfrmDt;		//최초승인일시
	private String originCd;		//제조국(원산지)
	private String makeYmd;		//제조연월일
	private String taxGb;		//과세구분(10:과세, 20:비과세)
	private String erpPriceLinkYn;		//ERP가격연계여부(자사상품만 사용. Y:연계)
	private String erpStockLinkYn;		//ERP재고연계여부(자사상품만 사용. Y:연계)
	private String newCustOrdYn;		//신규고객 구매가능여부(Y:신규고객만 구매가능)
	private String newCustOrdStdt;		//신규고객 시작일
	private String newCustOrdEddt;		//신규고객 종료일
	private int costPrice;		//원가
	private String adultYn;		//성인용품여부
	private String tobeFormYn;		//상품상세신규폼사용여부
	private String sellStdt;		//판매시작일시
	private String sellStYMD;		//판매시작일
	private String sellStHH;		//판매시작시
	private String sellEddt;		//판매종료일시
	private String sellEdYMD;		//판매종료일
	private String sellEdHH;		//판매종료시

	private String brandEnm;		//브랜드영문명
	private String brandGrpNm;		//브랜드그룹명
	private int brandNo;			// 브랜드번호
	private String supplyVendorCd;	//벤더코드

	private String goodsDesc;		//상품상세(as-is)
	private String goodsPcTopDesc;
	private String goodsPcDownDesc;
	private String goodsMobileTopDesc;
	private String goodsMobileDownDesc;
	private String goodsTitlesDesc;		//상품 상세 타이틀
	private String goodsContentsDesc;	//상품 상세 내용
	private String goodsCharacterDesc;	//상품 상세 특징
	private String chkDescKeep = "N";
//
	private String chDataYn = "N";
	private String chImgYn = "N";
	private String chNotiYn = "N";
	private String chStockDataYn = "N";
	private String chSafeYn = "N";
	private String choOtYn = "N";
	private String chGoodsStatYn = "N";
	private String chCfrmYn = "N";		//입점용추가
	private int stockQtySum;
	private String goodsImageYn;
	private String itemkindNm;
	private String niClsfCd;
	private String originNm;
	private String repGoodsCd;

	private int currPriceOrg;
	private String goodsStatOrg;
	private String formalGbOrg;
	private float sellFeeRateOrg;

	private String sysImgNm;
	private String niClsfNm;
	private String goodsTypeNm;
	private String goodTnmInit;
	private String certTargetGb;
	private String certFormGb;
	private String certType;
	private String certNum;
	private String custGrade;
	private String custGradeName;

	private String goodsRegMsg;
	private String procJob;
	private String excelFileNm;
//	private String searchGb;

	private String blankFlag;
//
//	private Integer sizeCurrStockQty;
//	private Integer sizeBaseStockQty;
//	private Integer sizeSaleStockQty;
//	private Integer sizeStockQty;
//	private String goodsSizeCd;
//	private String sizeSoldoutYn;
	private String siteCd;
	private int sellDay15Qty;

	private int goodsSq;

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] arrGoodsCd;

	// 상품옵션/재고
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] compsGoodsCd; // 상품 사이즈

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] optCd; // 상품 사이즈

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] optCd1; // 상품 옵션1

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] optCd2; // 상품 옵션2

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] addPrice; // 추가금액

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] baseStockQty; // 안전재고

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] currStockQty; // erp가용재고

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] storeStockQty; // 매장가용재고

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] storeMaxQty; // wms, 매장 재고중 최대값

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] editCurrStockQty; // 수정가용재고

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] soldoutYn; // 품절여부

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] dispOrd; // 우선순위

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] dispYn; // 전시여부

	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private String[] goodsOrderGrade; // 구매 등급

	private Collection<GoodsNotiInfo> notiListNew; // 고시항목

	private String notiList; // 고시항목
//	private String delvLocCd;

	private Collection<GoodsCompose> goodsComposeListNew; // 상품 구성상품
	private String goodsComposeList; // 상품 구성상품

	// Pagination
	private TscPageRequest pageable;
	private int pageNo = 1;
	private int pageSize = 50;
	private int pageUnit = 10;
}
