| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438 |
- package com.uas.eis.service.Impl;
- import com.alibaba.fastjson.JSON;
- import com.alibaba.fastjson.JSONArray;
- import com.alibaba.fastjson.TypeReference;
- import com.uas.eis.config.DonlimConfig;
- import com.uas.eis.core.config.SpObserver;
- import com.uas.eis.core.support.TokenProperties;
- import com.uas.eis.dao.*;
- import com.uas.eis.dto.FindOrderRelationInvoiceDTO;
- import com.uas.eis.dto.FindOrderRelationInvoiceReq;
- import com.uas.eis.dto.FindOrderRelationInvoiceResp;
- import com.uas.eis.service.CommonService;
- import com.uas.eis.service.ERPService;
- import com.uas.eis.utils.*;
- import nuonuo.open.sdk.NNOpenSDK;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import java.text.SimpleDateFormat;
- import java.util.*;
- /**
- * @author koul
- * @email koul@usoftchina.com
- * @date 2021-12-06 18:27
- */
- @Service
- public class ERPServiceImpl implements ERPService {
- private final Logger logger = LoggerFactory.getLogger(this.getClass());
- private static Map<String,String> tokenConfig = TokenProperties.getAllProperty();
- @Autowired
- private BaseDao baseDao;
- @Autowired
- private DonlimConfig donlimConfig;
- @Autowired
- private CommonService commonService;
- @Override
- public Map<String, Object> pushInvoiceOrder(String master, int id) {
- Map<String, Object> map = new HashMap<String, Object>();
- Object[] obs=baseDao.getFieldsDataByCondition("YITOA_DATACENTER.dock_invoice_config",new String[]{"appKey","appSecret","token","taxnum"},"username='"+master+"'");
- String url=donlimConfig.getRoute();
- System.out.println(url);
- String appKey = donlimConfig.getAppKey();
- String appSecret = donlimConfig.getAppSecret();
- String token = donlimConfig.getToken();
- String taxnum= donlimConfig.getTaxnum();
- if(donlimConfig.isProd()){
- appKey = obs[0].toString();
- appSecret = obs[1].toString();
- token = obs[2].toString();// 访问令牌
- taxnum = obs[3].toString();// 授权企业税号
- }
- logger.info("pushInvoiceOrder begin: master {} ,id {} ",master,id);
- SpObserver.putSp(master);
- SqlRowList rs_main = baseDao.queryForRowSet("select * from invoiceOrder left join customer on io_cucode=cu_code where io_id="+id);
- if(rs_main.next()){
- String autoInvoiceFlag= baseDao.isDBSetting("InvoiceOrder", "autoInvoice")?"true":"false";
- //数据组装
- InvoiceOrderDTO invoiceOrderDTO=new InvoiceOrderDTO();
- invoiceOrderDTO.setOrderType("1");
- invoiceOrderDTO.setAutoInvoiceFlag(autoInvoiceFlag );//自动开票
- invoiceOrderDTO.setRepeatCall("0");
- OrderDTO orderDTO=new OrderDTO();
- orderDTO.setOriginalOrderNo(rs_main.getGeneralString("io_code"));
- orderDTO.setAddDate(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(rs_main.getDate("io_date")));
- orderDTO.setInvoiceLine(rs_main.getGeneralString("io_invoiceline"));
- orderDTO.setSpecificFactor("0");
- orderDTO.setSaleTaxNum(donlimConfig.getTaxnum());//
- orderDTO.setBuyerName(rs_main.getGeneralString("cu_name"));//客户名称
- orderDTO.setTaxNum(rs_main.getGeneralString("cu_taxid").trim());//购方税号
- orderDTO.setAccount(rs_main.getGeneralString("cu_bankaccount"));
- orderDTO.setAddress(rs_main.getGeneralString("cu_add1"));
- orderDTO.setTelephone(rs_main.getGeneralString("cu_tel"));
- orderDTO.setRemark(rs_main.getGeneralString("io_remark"));
- invoiceOrderDTO.setOrderInfo(orderDTO);
- SqlRowList rs_det = baseDao.queryForRowSet("select * from invoiceOrderdet_view where id_ioid="+id+" order by id_detno");
- List<OrderDetDTO> dets=new ArrayList<>();//商品列表
- while(rs_det.next()){
- OrderDetDTO orderDetDTO=new OrderDetDTO();
- orderDetDTO.setRowNo(rs_det.getGeneralString("id_id"));//唯一值
- orderDetDTO.setGoodsName(rs_det.getGeneralString("pr_detail"));
- orderDetDTO.setSpec(rs_det.getGeneralString("pr_spec"));
- orderDetDTO.setUnit(rs_det.getGeneralString("pr_unit"));
- orderDetDTO.setNum(rs_det.getGeneralString("id_qty"));
- //orderDetDTO.setPrice(rs_det.getGeneralString("id_price"));//平台算法问题 传单价会有差异,校验可能不通过,所有传金额和数量,不传单价
- orderDetDTO.setTaxRate(rs_det.getGeneralString("taxrate"));//0.13
- orderDetDTO.setTaxAmount(rs_det.getGeneralString("id_amount"));
- orderDetDTO.setHsbz(rs_det.getGeneralString("hsbz"));
- orderDetDTO.setSpbm(rs_det.getGeneralString("spbm"));
- dets.add(orderDetDTO);
- }
- invoiceOrderDTO.setOrderOriginalDetails(dets);
- invoiceOrderDTO.setInvoiceGoodsTransports(new ArrayList<>());
- System.out.println(JSONArray.toJSONString(invoiceOrderDTO));
- //调用对接
- NNOpenSDK sdk = NNOpenSDK.getIntance();
- String method = "nuonuo.OpeMplatform.saveOrder"; // API方法名
- String content =sdk.convertToUtf8(JSONArray.toJSONString(invoiceOrderDTO));
- String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
- String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
- Map<Object, Object> res=JSONUtil.toMap(result);
- System.out.println(result);
- Object status=res.get("status");
- Object message=res.get("message");
- if(status !=null && "0000".equals(status.toString())){//调用成功
- baseDao.execute("update invoiceOrder set io_dockstatus='对接成功' where io_id="+id);
- commonService.logSRecord("开票订单对接",id);
- }else{
- baseDao.execute("update invoiceOrder set io_dockstatus='对接失败' where io_id="+id);
- commonService.logFRecord("开票订单对接","("+status+")"+message,id);
- }
- logger.info("pushInvoiceOrder master {} ,id {} status {} message {}",master,id,status,message);
- map.put("success", true);
- map.put("message", message);
- return map;
- }else{//数据无效
- logger.info("pushInvoiceOrder err {对接源信息无效} ,master {} , id {} status {} message {}",master,id);
- map.put("success", false);
- map.put("message", "对接源信息无效");
- return map;
- }
- }
- @Override
- public Map<String, Object> invoiceOrderSubmitKp(String master, int id) {
- Object[] obs=baseDao.getFieldsDataByCondition("YITOA_DATACENTER.dock_invoice_config",new String[]{"appKey","appSecret","token","taxnum"},"username='"+master+"'");
- String url=donlimConfig.getRoute();
- System.out.println(url);
- String appKey = donlimConfig.getAppKey();
- String appSecret = donlimConfig.getAppSecret();
- String token = donlimConfig.getToken();
- String taxnum= donlimConfig.getTaxnum();
- if(donlimConfig.isProd()){
- appKey = obs[0].toString();
- appSecret = obs[1].toString();
- token = obs[2].toString();// 访问令牌
- taxnum = obs[3].toString();// 授权企业税号
- }
- SpObserver.putSp(master);
- SqlRowList rs_main = baseDao.queryForRowSet("select * from invoiceOrder left join customer on io_cucode=cu_code where io_id="+id);
- if(rs_main.next()){
- NNOpenSDK sdk = NNOpenSDK.getIntance();
- String method = "nuonuo.OpeMplatform.submitKp"; // API方法名
- String code= rs_main.getGeneralString("io_code");
- Map<String,String> reqParam=new HashMap<>();
- reqParam.put("orderNo",code);
- String content=JSONArray.toJSONString(reqParam);
- String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
- String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
- System.out.println(result);
- }else{//数据无效
- logger.info("findOrderState err {对接源信息无效} ,master {} , id {} status {} message {}",master,id);
- }
- return null;
- }
- @Override
- public Map<String, Object> findOrderState(String master, int id) {
- Map<String, Object> map = new HashMap<String, Object>();
- Object[] obs=baseDao.getFieldsDataByCondition("YITOA_DATACENTER.dock_invoice_config",new String[]{"appKey","appSecret","token","taxnum"},"username='"+master+"'");
- if(obs==null){
- return null;//对接信息为配置
- }
- String url=donlimConfig.getRoute();
- String appKey = donlimConfig.getAppKey();
- String appSecret = donlimConfig.getAppSecret();
- String token = donlimConfig.getToken();
- String taxnum= donlimConfig.getTaxnum();
- if(donlimConfig.isProd()){
- appKey = obs[0].toString();
- appSecret = obs[1].toString();
- token = obs[2].toString();// 访问令牌
- taxnum = obs[3].toString();// 授权企业税号
- }
- SpObserver.putSp(master);
- SqlRowList rs_main = baseDao.queryForRowSet("select * from invoiceOrder left join customer on io_cucode=cu_code where io_id="+id);
- if(rs_main.next()){
- String code= rs_main.getGeneralString("io_code");
- NNOpenSDK sdk = NNOpenSDK.getIntance();
- String method = "nuonuo.OpeMplatform.findOrderState"; // API方法名
- Map<String,String> reqParam=new HashMap<>();
- reqParam.put("originalOrderNo",code);
- reqParam.put("saleTaxNum",taxnum);
- String content=JSONArray.toJSONString(reqParam);
- String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
- String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
- System.out.println(result);
- FindOrderStateResp resp = JSON.parseObject(result , new TypeReference<FindOrderStateResp>() {});
- System.out.println(resp.getCode());
- System.out.println(resp.getMessage());
- if("该订单不存在".equals(resp.getMessage())){
- baseDao.execute("update invoiceOrder set IO_INVOICESTATUS = '-1' where io_id = '"+id+"'");
- }else{
- baseDao.execute("update invoiceOrder set IO_INVOICESTATUS = '"+resp.getData().getInvoiceStatus()+"'"
- +",io_errorMsg='"+StringUtil.nvl(resp.getData().getErrorMsg(),"")+"'"
- +" where io_id = '"+id+"'");
- }
- map.put("success", true);
- map.put("result", result);
- return map;
- }else{//数据无效
- logger.info("findOrderState err {对接源信息无效} ,master {} , id {} status {} message {}",master,id);
- }
- return null;
- }
- @Override
- public Map<String, Object> cancelInvoiceOrder(String master, int id) {
- Map<String, Object> map = new HashMap<String, Object>();
- Object[] obs=baseDao.getFieldsDataByCondition("YITOA_DATACENTER.dock_invoice_config",new String[]{"appKey","appSecret","token","taxnum"},"username='"+master+"'");
- if(obs==null){
- return null;//对接信息为配置
- }
- String url=donlimConfig.getRoute();
- System.out.println(url);
- String appKey = donlimConfig.getAppKey();
- String appSecret = donlimConfig.getAppSecret();
- String token = donlimConfig.getToken();
- String taxnum= donlimConfig.getTaxnum();
- if(donlimConfig.isProd()){
- System.out.println("prod");
- appKey = obs[0].toString();
- appSecret = obs[1].toString();
- token = obs[2].toString();// 访问令牌
- taxnum = obs[3].toString();// 授权企业税号
- }else{
- System.out.println("dev");
- }
- SpObserver.putSp(master);
- SqlRowList rs_main = baseDao.queryForRowSet("select * from invoiceOrder left join customer on io_cucode=cu_code where io_id="+id);
- if(rs_main.next()){
- String code= rs_main.getGeneralString("io_code");
- Map<String,String> reqParam=new HashMap<>();
- reqParam.put("originalOrderNo",code);
- reqParam.put("saleTaxNum",taxnum);
- String content=JSONArray.toJSONString(reqParam);
- NNOpenSDK sdk = NNOpenSDK.getIntance();
- String method = "nuonuo.OpeMplatform.deleteOrder"; // API方法名
- String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
- String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
- Map<Object, Object> res=JSONUtil.toMap(result);
- System.out.println(result);
- Object status=res.get("status");
- Object message=res.get("message");
- if(status !=null && "0000".equals(status.toString())){//调用成功
- baseDao.execute("update invoiceOrder set io_dockstatus='' where io_id="+id);
- baseDao.execute("insert into invoicedockLog(id_,code_,date_,result_,err_,keyvalue_)values(invoicedockLog_seq.nextval,'开票订单删除',sysdate,'SUCCEED','',"+id+") ");
- map.put("success", true);
- map.put("message", message);
- }else{
- baseDao.execute("update invoiceOrder set io_dockstatus='取消失败' where io_id="+id);
- baseDao.execute("insert into invoicedockLog(id_,code_,date_,result_,err_,keyvalue_)values(invoicedockLog_seq.nextval,'开票订单删除',sysdate,'FAILED','("+status+")"+message+"',"+id+") ");
- map.put("success", false);
- map.put("message", "("+status+")"+message);
- }
- logger.info("pushInvoiceOrder master {} ,id {} status {} message {}",master,id,status,message);
- return map;
- }else{//数据无效
- logger.info("findOrderState err {对接源信息无效} ,master {} , id {} status {} message {}",master,id);
- }
- return null;
- }
- @Override
- public Map<String, Object> getElecInvoicesById(String master, Integer id) {
- Map<String, Object> map = new HashMap<String, Object>();
- Object[] obs=baseDao.getFieldsDataByCondition("YITOA_DATACENTER.dock_invoice_config",new String[]{"appKey","appSecret","token","taxnum"},"username='"+master+"'");
- if(obs==null){
- return null;//对接信息为配置
- }
- // System.out.println(url);
- String appKey = donlimConfig.getAppKey();
- String appSecret = donlimConfig.getAppSecret();
- String token = donlimConfig.getToken();
- String taxnum= donlimConfig.getTaxnum();
- if(donlimConfig.isProd()){
- appKey = obs[0].toString();
- appSecret = obs[1].toString();
- token = obs[2].toString();// 访问令牌
- taxnum = obs[3].toString();// 授权企业税号
- }
- SpObserver.putSp(master);
- SqlRowList ioList = baseDao.queryForRowSet("select io_id,io_code from "+master+".invoiceOrder left join "+master+".customer on io_cucode=cu_code " +
- " where io_id = "+id);
- while(ioList.next()) {
- map = getElecInvoices(appKey,appSecret,token,taxnum,ioList.getGeneralInt("io_id"),ioList.getGeneralString("io_code"));
- }
- return map;
- }
- @Override
- public Map<String, Object> getElecInvoices(String appKey,String appSecret,String token,String taxnum,int ioid,String ioCode){
- Map<String, Object> res = new HashMap<String, Object>();
- String url=donlimConfig.getRoute();
- String errCode = "-999";
- String errMsg = "";
- try {
- //调用对接
- FindOrderRelationInvoiceReq foriReq = new FindOrderRelationInvoiceReq();
- foriReq.setOriginalOrderNo(ioCode);//订单编号
- foriReq.setSaleTaxNum(taxnum);//销方税号
- foriReq.setNeedInvoiceSourceDetail("0");//是否需要发票所来源的订单明细,1-是, 0-否(不填默认 0) 当为0时,将不回传orderDetailCallBackVOS。先默认不需要明细
- NNOpenSDK sdk = NNOpenSDK.getIntance();
- String method = "nuonuo.OpeMplatform.findOrderRelationInvoice"; // API方法名
- String content =sdk.convertToUtf8(JSONArray.toJSONString(foriReq));
- String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
- String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
- FindOrderRelationInvoiceResp resp = JSON.parseObject(result , new TypeReference<FindOrderRelationInvoiceResp>() {});
- errCode = resp.getStatus();
- errMsg = resp.getMessage();
- logger.info("ElecInvoice-DownLoad-master: {} ,id {} status {} message {}",SpObserver.getSp(),ioid,errCode,errMsg);
- if("0000".equals(errCode)){//调用成功
- //记录发票明细
- baseDao.execute(getElecInvoicesSqls(ioid,resp.getData()));
- commonService.logSRecord("订单关联发票对接",ioid);
- }else if(!"8958".equals(errCode)){// {"status":"8958","message":"该订单对应的开票单不存在","data":null} 没有开票单的不记录对接失败日志
- if(errMsg.length() > 3990){
- errMsg = errMsg.substring(0,3990);
- }
- baseDao.execute("update invoiceOrder set io_errorMsg='"+errMsg+"' where io_id="+ioid);
- commonService.logFRecord("订单关联发票对接","("+errCode+")"+errMsg,ioid);
- }
- }catch (Exception e){
- errMsg = "发票获取异常";
- if(StringUtil.hasText(e.getMessage())){
- errMsg = e.getMessage();
- }else if(e.getCause()!=null&&StringUtil.hasText(e.getCause().getMessage())){
- errMsg = e.getCause().getMessage();
- }
- commonService.logFRecord("订单关联发票对接",errMsg.replaceAll("'","''"),ioid);
- }
- if(StringUtil.hasText(errMsg)&&!"调用成功".equals(errMsg)){
- res.put("success", false);
- res.put("errCode", errCode);
- res.put("errMsg", errMsg);
- }else {
- res.put("success", true);
- }
- return res;
- }
- @Override
- public Map<String, Object> rushRed(String master, int id) {
- Map<String, Object> map = new HashMap<String, Object>();
- Object[] obs=baseDao.getFieldsDataByCondition("YITOA_DATACENTER.dock_invoice_config",new String[]{"appKey","appSecret","token","taxnum"},"username='"+master+"'");
- String url=donlimConfig.getRoute();
- String appKey = donlimConfig.getAppKey();
- String appSecret = donlimConfig.getAppSecret();
- String token = donlimConfig.getToken();
- String taxnum= donlimConfig.getTaxnum();
- if(donlimConfig.isProd()){
- appKey = obs[0].toString();
- appSecret = obs[1].toString();
- token = obs[2].toString();// 访问令牌
- taxnum = obs[3].toString();// 授权企业税号
- }
- logger.info("rushRed begin: master {} ,id {} ",master,id);
- SpObserver.putSp(master);
- SqlRowList rs_main = baseDao.queryForRowSet("select * from invoiceOrder left join customer on io_cucode=cu_code left join elecinvoice on io_id=ei_ioid where io_id="+id);
- if (rs_main.hasNext()){
- while(rs_main.next()){
- RedInvoiceReq redInvoiceReq=new RedInvoiceReq();
- redInvoiceReq.setBlueInvoiceLine(rs_main.getGeneralString("io_invoiceline"));//蓝票发票种类
- redInvoiceReq.setApplySource("0");//申请方(录入方)身份: 0 销方 1 购方
- redInvoiceReq.setSellerTaxNo(donlimConfig.getTaxnum());//销方税号
- redInvoiceReq.setBuyerName(rs_main.getGeneralString("cu_name"));//购方名称
- redInvoiceReq.setBuyerTaxNo(rs_main.getGeneralString("ei_taxno"));
- redInvoiceReq.setRedReason(rs_main.getGeneralString("io_redreason"));
- redInvoiceReq.setBlueElecInvoiceNumber(rs_main.getGeneralString("ei_allelectronicinvoicenumber"));
- NNOpenSDK sdk = NNOpenSDK.getIntance();
- String content =sdk.convertToUtf8(JSONArray.toJSONString(redInvoiceReq));
- String method = "nuonuo.OpeMplatform.saveInvoiceRedConfirm"; // API方法名
- String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
- String resp = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
- Map<Object, Object> res=JSONUtil.toMap(resp);
- Object code=res.get("code");
- Object describe=res.get("describe");
- Object result=res.get("result");
- if(code !=null && "E0000".equals(code.toString())){//调用成功
- queryInvoiceRedConfirm( taxnum, appKey, appSecret, token, url, result.toString());
- baseDao.execute("update elecinvoice set ei_redapplycode='"+result.toString()+"' where ei_id="+rs_main.getGeneralInt("ei_id"));
- commonService.logSRecord("红字确认单申请("+rs_main.getGeneralString("ei_refno")+")",id);
- }else{
- commonService.logFRecord("红字确认单申请("+rs_main.getGeneralInt("ei_id")+")","("+code+")"+describe,id);
- }
- logger.info("pushInvoiceOrder master {} ,id {} code {} describe {} applycode{}",master,id,code,describe,result);
- }
- }else{//数据无效
- logger.info("rushRed err {对接源信息无效} ,master {} , id {} status {} message {}",master,id);
- map.put("success", false);
- map.put("message", "对接源信息无效");
- return map;
- }
- map.put("success", true);
- return map;
- }
- @Override
- public void queryInvoiceRedConfirm(String taxnum, String appKey, String appSecret, String token,String url,String redApplycode) {
- NNOpenSDK sdk = NNOpenSDK.getIntance();
- String method = "nuonuo.OpeMplatform.queryInvoiceRedConfirm"; // API方法名
- Map<String,String> reqParam=new HashMap<>();
- reqParam.put("identity","0");
- reqParam.put("billId",redApplycode);
- String content=JSONArray.toJSONString(reqParam);
- String senid = UUID.randomUUID().toString().replace("-", ""); // 唯一标识,32位随机码,无需修改,保持默认即可
- String result = sdk.sendPostSyncRequest(url, senid, appKey, appSecret, token, taxnum, method, content);
- System.out.println(result);
- }
- private List<String> getElecInvoicesSqls(int ioid,List<FindOrderRelationInvoiceDTO> data){
- List<String> sqls = new ArrayList<String>();
- boolean syncToBillOut = baseDao.isDBSetting("BillOut","syncToBillOut");
- for (int i = 0; i < data.size(); i++) {
- sqls.add(data.get(i).toMergeSql(ioid,(i+1)));
- }
- sqls.add("update ELECINVOICE set ei_refno = (case when ei_invoiceLine in ('bs','pc','es','ec') then ei_allElectronicInvoiceNumber else ei_invoiceNumber end) " +
- "where ei_ioid = "+ioid+" and EI_INVOICESTATE = 1 and EI_EXCEPTIONMESSAGE is null and (ei_allElectronicInvoiceNumber is not null or ei_invoiceNumber is not null )");
- sqls.add("update invoiceOrder set io_refno = (select (min(ei_refno)||(case when max(ei_refno) <> min(ei_refno) then '-'||max(ei_refno) else '' end)) from ELECINVOICE where ei_ioid = io_id)" +
- "where io_id = "+ioid);
- //更新开票记录
- if(syncToBillOut){
- sqls.add("update BillOut set bi_refno = (select max(io_refno) from invoiceOrder where io_id = "+ioid+" and io_biid = bi_id) where bi_id in (select io_biid from invoiceOrder where io_id = "+ioid+" and io_refno is not null)");
- }
- return sqls;
- }
- }
|