package com.tenwa.leasing.serviceImpl.voucher;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import jbo.app.CUSTOMER_INFO;
import jbo.app.VOUCHERASSSTACTS_INFO;
import jbo.app.VOUCHERASS_STACTS_CONFIG;
import jbo.app.VOUCHER_CONNECTION;
import jbo.app.VOUCHER_V8;
import jbo.com.tenwa.app.entity.ownInfo.OWN_ACCOUNT;
import jbo.com.tenwa.app.entity.ownInfo.OWN_INFO;
import jbo.com.tenwa.entity.contract.CONTRACT_INFO;
import jbo.com.tenwa.entity.contract.CONTRACT_SIGNATORY;
import jbo.com.tenwa.entity.contract.CONTRACT_SUPPLIER_INFO;
import jbo.com.tenwa.entity.project.PROJ_INFO;
import jbo.sys.ORG_INFO;
import jbo.sys.USER_INFO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.amarsoft.app.als.sys.tools.JBOHelper;
import com.amarsoft.are.ARE;
import com.amarsoft.are.jbo.BizObject;
import com.amarsoft.are.jbo.BizObjectManager;
import com.amarsoft.are.jbo.JBOFactory;
import com.amarsoft.are.jbo.JBOTransaction;
import com.amarsoft.are.log.Log;
import com.amarsoft.dict.als.manage.NameManager;
import com.tenwa.flow.util.DataOperatorUtil;
import com.tenwa.leasing.service.voucher.IntereasVoucherheadService;
import com.tenwa.leasing.service.voucher.VoucherToV8Service;
import com.tenwa.reckon.util.DateUtils;
import com.tenwa.reckon.util.MoneyUtils;
import com.tenwa.reckon.util.NumberUtils;
import com.tenwa.reckon.util.Tools;
/**
*
*
。
* 2014-3-20
* @author sea
* @version 4.5
*/
public class VoucherToV8Impl implements VoucherToV8Service {
/**
* log4j日志
*/
//private static final Logger log = LoggerFactory.getLogger(VoucherToV8Impl.class);
/**
* ARE日志
*/
private static Log log=ARE.getLog();
/**
* 注入凭证头服务接口
*/
private IntereasVoucherheadService intereasVoucherheadService=new IntereasVoucherheadServiceImpl();
/**
* 网银凭证情况下的使用的条件参考变量
*/
private static final String moduleName_value = "网银导入";
/**
* 欧力士特殊生成凭证模块
* 因根据合同号都会把凭证归属在合同对应所属公司下,这样不满足欧力士现业务需求
*/
private static final String SPECIAL_MODULENAME = "代收深圳款";
/**
* FIXME SEA 代收租金 判断与网银规则一致,科目主表加废弃字段,字表也加废弃字段,下方随之加对应的判断
* V8凭证数据入库。
* @author sea
* @param headMap
* headMap参数集合传入的数据目前存在:
* 参数1:合同号/contract_id (合同表UUID,用于取凭证所属,合同信息等数据)
* 参数2:业务模块/modleName (例如:已开票增值税发票回导流程/网银核销流程/租金实收流程...等等)
* Map map1 = new HashMap();
* map1.put("contract_id", "合同号");
* map1.put("moduleName", "业务模块");
* map1.put("accNumber", "本方银行账号编码");//网银凭证产生情况下,该字段必填 ,同时请务必把前一个参数‘moduleName’置为‘网银导入’。
* map1.put("oldContractid", "老合同转新合同情况下老合同号");
* @param vouchersMap
* 参数二集合传入的数据是一个list集合,里面是一个个的map集合,一个map封装一个凭证分录
* 参数1:摘要/F5
* 参数2:科目序号/F6 VOUCHERASS_STACTS_CONFIG表的ID
* 参数3:借方金额/F7 原币金额 贷方金额为0
* 参数4:贷方金额 /F8 原币金额 借方金额为0
* 参数5:业务日期(到账日期)/F15 网银到账日期 TODO 在CreateVoucherServiceImpl增加业务日期,在实际投放增加供应商编码
* 参数6:供应商编码/F19 供应商编码
* 参数7:会计记账日期/F1 (产生凭证的地方存在会计日期则必须传入该日期,不存在可不传)。
* (会计记账日期传入为空清下:取值通过函数getAccountDay传入F15业务日期获取,已提供公用查询接口getBookDate)
* List