package nc.pubitf.fts.report.iufo;

import nc.bs.framework.common.NCLocator;
import nc.itf.fts.service.IReportAccDetailQueryService;
import nc.pub.smart.data.DataSet;
import nc.pub.smart.metadata.DataTypeConstant;
import nc.pub.smart.metadata.Field;
import nc.pub.smart.metadata.MetaData;
import nc.vo.pub.BusinessException;
import nc.vo.tmpub.field.BillField;

import com.ufida.dataset.IContext;

/**
 * 内部账户明细账取数逻辑
 * @author liuyga
 *
 */
public class InnerAccDetailService {
	/** 入账流水号 */
	public static final String DETAILNO = "detailno";
	/** 记账日期 */
	public static final String TALLYDATE = "orgtallydate";
	/** 记账时间 */
	public static final String TALLYTIME = "tallytime";
	/** 单据类型CD */
	public static final String BILLTYPE = "billtype";
	/** 单据编号 */
	public static final String VBILLNO = "vbillno";
	
	//新添加字段 hxl 2021年11月2日 
	//特转收/付：交易类型 vuserdef1
	/** 交易类型 */
	public static final String TRADETYPE = "tradetype";
	
	/** 业务类型 */
	public static final String BUSINESSTYPE = "businesstype";
	/** 票据编号 */
	public static final String FBMBILLNO = "fbmbillno";
	/** 币种PK */
	public static final String PK_CURRTYPE = "pk_currtype";
	/** 起息日期 */
	public static final String INTERESTDATE = "interestdate";
	/** 对方单位PK */
	public static final String PK_OPPUNIT = "pk_oppunit";
	/** 对方账号 */
	public static final String OPPACCOUNT = "oppaccount";
	/** 组织本币汇率 */
	public static final String OLCRATE = "olcrate";
	/** 收入金额 */
	public static final String INMONEY = "inmoney";
	/** 收入本币金额 */
	public static final String OLCINMONEY = "olcinmoney";
	/** 支出金额 */
	public static final String OUTMONEY = "outmoney";
	/** 支出本币金额 */
	public static final String OLCOUTMONEY = "olcoutmoney";
	/** 账户余额 */
	public static final String ACCBALANCE = "accbalance";
	/** 账户本币余额 */
	public static final String OLCACCBALANCE = "olcaccbalance";
	/** 记账人PK */
	public static final String TALLYPERSON = "tallyperson";
	/** 摘要 */
	public static final String MEMO = "memo";
	/** 是否已制证 */
	public static final String ISCERTIFICATED = "iscertificated";
	/** 单据类型 */
	public static final String BILLTYPE_NAME = "billtypename";
	/** 币种 */
	public static final String CURRTYPE_NAME = "currtypename";
	/** 对方单位名称 */
	public static final String OPPUNIT_NAME = "oppunitname";
	/** 对方账号名称 */
	public static final String OPPACCOUNT_NAME = "oppaccountname";
	/** 记账人 */
	public static final String TALLYPERSON_NAME = "tallypersonname";
	/** 关联单据主键 */
	public static final String PK_SOURCEBILL = "pk_sourcebill";
	/** 排序字段 */
	public static final String SORTKEY = "sortkey";
	/** 数据类型 */
	public static final String DATATYPE = "datatype";
	/** 主组织PK */
	public static final String PK_ORG = BillField.PkOrgField;
	/** 集团PK */
	public static final String PK_GROUP = BillField.PkGroupField;
	/**
	 * 凭证号
	 */
	public static final String VOUCHERNO = "voucherno";
	/**内部账户pk modify 2013-07-26*/
	public static final String PK_ACCID="pk_accid";

	private static final MetaData metaData;
	
	/**
	 * 获得内部账户明细账结果集
	 * @param context
	 * @return
	 */  
	public static DataSet queryInneraccDetail(IContext context)throws BusinessException{
		IReportAccDetailQueryService service = (IReportAccDetailQueryService) NCLocator.getInstance().lookup(
				IReportAccDetailQueryService.class.getName());
		return service.queryAccDetail(context);
	}
	
	static {
		metaData = new MetaData();
		
		//hxl 2021年11月2日  新添加字段 数组长度由33改到34
		Field[] fields = new Field[34];
        for (int i = 0; i < fields.length; i++) {
            fields[i] = new Field();
        }
        int j = 0;
        fields[j].setFldname(SORTKEY);
		fields[j].setCaption("排序字段");/*-=notranslate=-*/
		fields[j].setPrecision(120);
		fields[j++].setDataType(DataTypeConstant.LONG);

        fields[j].setFldname("detailno");
		fields[j].setCaption("入账流水号");/*-=notranslate=-*/
		fields[j].setPrecision(50);
		fields[j++].setDataType(DataTypeConstant.STRING);
		
		fields[j].setFldname("orgtallydate");
		fields[j].setCaption("记账日期");/*-=notranslate=-*/
		fields[j].setPrecision(19);
		fields[j++].setDataType(DataTypeConstant.STRING);
		
		fields[j].setFldname("tallytime");
		fields[j].setCaption("记账时间");/*-=notranslate=-*/
		fields[j].setPrecision(19);
		fields[j++].setDataType(DataTypeConstant.STRING);
		
		fields[j].setFldname("billtype");
		fields[j].setCaption("单据类型CD");/*-=notranslate=-*/
		fields[j].setPrecision(20);
		fields[j++].setDataType(DataTypeConstant.STRING);
		
		fields[j].setFldname("billtypename");
		fields[j].setCaption("单据类型");/*-=notranslate=-*/
		fields[j].setPrecision(200);
		fields[j++].setDataType(DataTypeConstant.STRING);
		
		fields[j].setFldname("vbillno");
		fields[j].setCaption("单据编号");/*-=notranslate=-*/
		fields[j].setPrecision(50);
		fields[j++].setDataType(DataTypeConstant.STRING);
		
		// hxl begin
		fields[j].setFldname("tradetype");
		fields[j].setCaption("交易类型");/*-=notranslate=-*/
		fields[j].setPrecision(50);
		fields[j++].setDataType(DataTypeConstant.STRING); //end
		
		fields[j].setFldname("businesstype");
		fields[j].setCaption("业务类型");/*-=notranslate=-*/
		fields[j].setPrecision(100);
		fields[j++].setDataType(DataTypeConstant.STRING);
		
		fields[j].setFldname("fbmbillno");
		fields[j].setCaption("票据编号");/*-=notranslate=-*/
		fields[j].setPrecision(50);
		fields[j++].setDataType(DataTypeConstant.STRING);
		
		fields[j].setFldname("pk_currtype");
		fields[j].setCaption("币种PK");/*-=notranslate=-*/
		fields[j].setPrecision(50);
		fields[j++].setDataType(DataTypeConstant.STRING);
		
		fields[j].setFldname("currtypename");
		fields[j].setCaption("币种");/*-=notranslate=-*/
		fields[j].setPrecision(120);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname("interestdate");
		fields[j].setCaption("起息日期");/*-=notranslate=-*/
		fields[j].setPrecision(19);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname("pk_oppunit");
		fields[j].setCaption("对方单位PK");/*-=notranslate=-*/
		fields[j].setPrecision(20);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname("oppunitname");
		fields[j].setCaption("对方单位");/*-=notranslate=-*/
		fields[j].setPrecision(300);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname("oppaccount");
		fields[j].setCaption("对方账号");/*-=notranslate=-*/
		fields[j].setPrecision(300);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname("oppaccountname");
		fields[j].setCaption("对方账号名称");/*-=notranslate=-*/
		fields[j].setPrecision(300);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname("olcrate");
		fields[j].setCaption("组织本币汇率");/*-=notranslate=-*/
		fields[j].setPrecision(28);
		fields[j].setScale(8);
		fields[j++].setDataType(DataTypeConstant.BIGDECIMAL);

		fields[j].setFldname("inmoney");
		fields[j].setCaption("收入金额");/*-=notranslate=-*/
		fields[j].setPrecision(28);
		fields[j].setScale(8);
		fields[j++].setDataType(DataTypeConstant.BIGDECIMAL);

		fields[j].setFldname("olcinmoney");
		fields[j].setCaption("收入本币金额");/*-=notranslate=-*/
		fields[j].setPrecision(28);
		fields[j].setScale(8);
		fields[j++].setDataType(DataTypeConstant.BIGDECIMAL);

		fields[j].setFldname("outmoney");
		fields[j].setCaption("支出金额");/*-=notranslate=-*/
		fields[j].setPrecision(28);
		fields[j].setScale(8);
		fields[j++].setDataType(DataTypeConstant.BIGDECIMAL);

		fields[j].setFldname("olcoutmoney");
		fields[j].setCaption("支出本币金额");/*-=notranslate=-*/
		fields[j].setPrecision(28);
		fields[j].setScale(8);
		fields[j++].setDataType(DataTypeConstant.BIGDECIMAL);

		fields[j].setFldname("accbalance");
		fields[j].setCaption("账户余额");/*-=notranslate=-*/
		fields[j].setPrecision(28);
		fields[j].setScale(8);
		fields[j++].setDataType(DataTypeConstant.BIGDECIMAL);

		fields[j].setFldname("olcaccbalance");
		fields[j].setCaption("账户本币余额");/*-=notranslate=-*/
		fields[j].setPrecision(28);
		fields[j].setScale(8);
		fields[j++].setDataType(DataTypeConstant.BIGDECIMAL);

		fields[j].setFldname("tallyperson");
		fields[j].setCaption("记账人PK");/*-=notranslate=-*/
		fields[j].setPrecision(20);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname("tallypersonname");
		fields[j].setCaption("记账人");/*-=notranslate=-*/
		fields[j].setPrecision(200);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname("memo");
		fields[j].setCaption("摘要");/*-=notranslate=-*/
//		fields[j].setPrecision(200);
		fields[j].setPrecision(450);//将值扩大
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname("iscertificated");
		fields[j].setCaption("是否已制证");/*-=notranslate=-*/
		fields[j].setPrecision(50);
		fields[j++].setDataType(DataTypeConstant.STRING);
		
		fields[j].setFldname("pk_sourcebill");
		fields[j].setCaption("关联单据主键");/*-=notranslate=-*/
		fields[j].setPrecision(20);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname(DATATYPE);
		fields[j].setCaption("数据类型");/*-=notranslate=-*/
		fields[j].setPrecision(50);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname(PK_ORG);
		fields[j].setCaption("主组织");/*-=notranslate=-*/
		fields[j].setPrecision(20);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname(PK_GROUP);
		fields[j].setCaption("集团");/*-=notranslate=-*/
		fields[j].setPrecision(20);
		fields[j++].setDataType(DataTypeConstant.STRING);

		fields[j].setFldname(VOUCHERNO);
		fields[j].setCaption("凭证号");/*-=notranslate=-*/
		fields[j].setPrecision(50);
		fields[j++].setDataType(DataTypeConstant.STRING);
		
		fields[j].setFldname(PK_ACCID);
		fields[j].setCaption("内部账户主键");/*-=notranslate=-*/
		fields[j].setPrecision(50);
		fields[j++].setDataType(DataTypeConstant.STRING);

		metaData.addField(fields);
	}
	
	/**
	 * 获得内部账户明细账元数据
	 * @return
	 */
	public static MetaData getInneraccDetailMetaData() {
		return metaData;
	}
}

