package nc.bs.sscivm.ivsale.util;

import nc.vo.sscivm.ivmpub.InvoiceTypeEnum;

import java.util.HashMap;
import java.util.Map;

/**
 * 发票类型和特殊票种映射工具类
 * @author wangyl7
 *
 */
public class InvoiceTypeToTspzUtil {
    private final static Map<Integer,String> invoiceMap = new HashMap<Integer,String>();
    private final static Map<Integer,String> tspzMap = new HashMap<Integer,String>();
	static {
		invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_JDC.toIntValue(), "4");
		invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_KCL.toIntValue(), "1");
		invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_DZZYFP_KCL.toIntValue(), "2");
		invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_KCL.toIntValue(), "3");
		invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_KCL.toIntValue(), "4");
		invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_ESCTYFP.toIntValue(), "15");//二手车统一销售与机打重复
		invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_NCP.toIntValue(), "1");
		invoiceMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_NCP.toIntValue(), "3");
		
		tspzMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_JDC.toIntValue(), "12");
		tspzMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_KCL.toIntValue(), "16");
		tspzMap.put(InvoiceTypeEnum.INVOICETYPE_DZZYFP_KCL.toIntValue(), "16");
		tspzMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_KCL.toIntValue(), "16");
		tspzMap.put(InvoiceTypeEnum.INVOICETYPE_ZYFP_KCL.toIntValue(), "16");
		tspzMap.put(InvoiceTypeEnum.INVOICETYPE_DZPTFP_NCP.toIntValue(), "9");
		tspzMap.put(InvoiceTypeEnum.INVOICETYPE_PTFP_NCP.toIntValue(), "9");
	}
	
	/**
	 * 获取真实的发票类型
	 * @param fplx 发票类型
	 * @return 真实的发票类型
	 */
	public static String getRealInvoicetype(Integer fplx){
		if (invoiceMap.containsKey(fplx)){
			return invoiceMap.get(fplx);
		}
		return String.valueOf(fplx);
	}
	
	/**
	 * 获取特殊票种
	 * @param fplx 发票类型
	 * @return 特殊票种
	 */
	public static String getTspz(Integer fplx){
		if (tspzMap.containsKey(fplx)){
			return tspzMap.get(fplx);
		}
		return null;
	}
	
	/**
	 * 更具发票类型和特殊票种转发票类型
	 * @param fplx
	 * @param tspz
	 * @return
	 */
	public static String getInvoicetypeByFplxAndTspz(String fplx, String tspz){
		//非特殊票种
		if (tspz == null || tspz.startsWith("E")){
			return fplx;
		}
		//全电发票不拼接
		if ("31".equals(fplx) || "32".equals(fplx) ||"33".equals(fplx) || "34".equals(fplx)){
			return fplx;
		}
		//增值税专用发票(机动车)
		if ("412".equals(fplx + tspz)){
			return InvoiceTypeEnum.INVOICETYPE_ZYFP_JDC.toStringValue();
		}
		//农产品收购
		if ("9".equals(tspz)) {
			return fplx + "0" + tspz;
		}
		//数电纸质发票(机动车销售统一发票
		if ("36".equals(fplx)){
			return fplx;
		}
		//其他特殊票种发票
		return fplx + tspz;
	}
}
