erp同步销售发票
This commit is contained in:
parent
18cff06874
commit
1f48069759
|
@ -0,0 +1,118 @@
|
||||||
|
package nc.bs.uapbd.task;
|
||||||
|
|
||||||
|
import nc.bs.dao.BaseDAO;
|
||||||
|
import nc.bs.logging.Logger;
|
||||||
|
import nc.bs.pub.pa.PreAlertObject;
|
||||||
|
import nc.bs.pub.taskcenter.BgWorkingContext;
|
||||||
|
import nc.bs.pub.taskcenter.IBackgroundWorkPlugin;
|
||||||
|
import nc.bs.trade.business.HYSuperDMO;
|
||||||
|
import nc.jdbc.framework.processor.MapListProcessor;
|
||||||
|
import nc.vo.pub.BusinessException;
|
||||||
|
import nc.vo.sscivm.ivsale.IVApplicationHeadVO;
|
||||||
|
import nc.vo.sscivm.ivsale.IVApplogVO;
|
||||||
|
import uap.mw.trans.TransactionFactory;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
|
public class InvoiceTaskPlugin implements IBackgroundWorkPlugin{
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public PreAlertObject executeTask(BgWorkingContext arg0) throws BusinessException {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
Logger.error("---start----任务开始运行--");
|
||||||
|
try {
|
||||||
|
BaseDAO dao = new BaseDAO();
|
||||||
|
String sql = " SELECT sscivm_invoice.pk_invoice,so_saleinvoice.csaleinvoiceid,so_saleinvoice.vbillcode billcode, sscivm_invoice.fphm, " +
|
||||||
|
"sscivm_invoice.Gmfmc, sscivm_invoice.Jshj, sscivm_invoice.viewurl, sscivm_invoice.billno " +
|
||||||
|
" FROM sscivm_invoice " +
|
||||||
|
" left join sscivm_invoice_relation on sscivm_invoice_relation.PK_INVOICE = sscivm_invoice.pk_invoice " +
|
||||||
|
" left join so_saleinvoice on so_saleinvoice.csaleinvoiceid = sscivm_invoice_relation.billid " +
|
||||||
|
" left join sscivm_ivapplog on sscivm_ivapplog.fphm = sscivm_invoice.fphm " +
|
||||||
|
" where " +
|
||||||
|
" sscivm_invoice_relation.billtype = '32' " +
|
||||||
|
" and so_saleinvoice.vdef20 <> 'Y' " +
|
||||||
|
" and sscivm_invoice.dr = 0 " +
|
||||||
|
" and sscivm_ivapplog.kpzt = 2 ";
|
||||||
|
// + " so_saleinvoice.vbillcode = 'SI2024070400000738' ";
|
||||||
|
ArrayList<HashMap<String, Object>> al = (ArrayList<HashMap<String, Object>>)dao.executeQuery(sql, new MapListProcessor());
|
||||||
|
Logger.error("---alData------"+al);
|
||||||
|
if(al.size() > 0) {
|
||||||
|
for(HashMap<String, Object> sscivm_invoice : al) {
|
||||||
|
Object pk_invoice = sscivm_invoice.get("pk_invoice"); //bip发票主键
|
||||||
|
Object csaleinvoiceid = sscivm_invoice.get("csaleinvoiceid"); //销售发票id
|
||||||
|
Object billcode = sscivm_invoice.get("billcode"); //销售发票编码
|
||||||
|
Object billno = sscivm_invoice.get("billno"); //bip单据编码编码
|
||||||
|
Object fphm = sscivm_invoice.get("fphm");
|
||||||
|
Object Gmfmc = sscivm_invoice.get("Gmfmc");
|
||||||
|
Object Jshj = sscivm_invoice.get("Jshj");
|
||||||
|
Object viewurl = sscivm_invoice.get("viewurl");
|
||||||
|
String ctcode="";
|
||||||
|
HYSuperDMO dmo = new HYSuperDMO();
|
||||||
|
IVApplogVO[] ivApplogVO=(IVApplogVO[]) dmo.queryByWhereClause(IVApplogVO.class, "fphm='"+fphm+"' and dr=0 ");
|
||||||
|
Logger.error("---ivApplogVO------"+ivApplogVO);
|
||||||
|
if(ivApplogVO!=null&&ivApplogVO.length>0) {
|
||||||
|
ivApplogVO[0].getLyid();//开票申请单主键
|
||||||
|
IVApplicationHeadVO ivApplicationHeadVO =(IVApplicationHeadVO) dmo.queryByPrimaryKey(IVApplicationHeadVO.class, ivApplogVO[0].getLyid());
|
||||||
|
ctcode=ivApplicationHeadVO.getDef2();//合同号
|
||||||
|
}
|
||||||
|
Object url = ctcode+"_"+Gmfmc+"_"+fphm+"_"+Jshj + ".pdf";
|
||||||
|
/**
|
||||||
|
* 回写逻辑:
|
||||||
|
* 1.修改发票关联关系单据编码
|
||||||
|
* 2.ERP销售发票回传,根据销售发票id,回写发票号和单据编号
|
||||||
|
* 3.根据销售发票id 回写下游应收单表头表体发票号
|
||||||
|
* 4.查询销售发票下游单据,如果有将下游单据表体字段【来源单据号】更新成新的发票号
|
||||||
|
*/
|
||||||
|
//手动开启事务
|
||||||
|
TransactionFactory.getTMProxy().begin(3,0);
|
||||||
|
//修改发票关联关系单据编码
|
||||||
|
String sirSql = "UPDATE sscivm_invoice_relation set billno = '" + billno +"' where pk_invoice = '"+ pk_invoice +"' and billid = '"+ csaleinvoiceid +"'";
|
||||||
|
dao.executeUpdate(sirSql);
|
||||||
|
Logger.error("---sirSqlExecute------"+sirSql);
|
||||||
|
//ERP销售发票回传,根据销售发票id,回写发票号和单据编号
|
||||||
|
String sSaleSql = "UPDATE so_saleinvoice set vdef20 = 'Y' , vdef13 = '" + fphm + "', vbillcode = '" + billno +"' where csaleinvoiceid = '" + csaleinvoiceid + "'";
|
||||||
|
dao.executeUpdate(sSaleSql);
|
||||||
|
Logger.error("---sSaleSqlExecute------"+sSaleSql);
|
||||||
|
//根据销售发票id 回写下游应收单表头发票号
|
||||||
|
String recBillSql = "MERGE INTO ar_recbill a USING (select DISTINCT pk_recbill,top_billid,top_billtype from ar_recitem) b ON ( a.pk_recbill = b.pk_recbill AND b.top_billid = '" + csaleinvoiceid + "' AND b.top_billtype = '32' ) \n" +
|
||||||
|
"WHEN MATCHED THEN\n" +
|
||||||
|
"UPDATE \n" +
|
||||||
|
"SET a.invoiceno = '" + fphm + "'";
|
||||||
|
dao.executeUpdate(recBillSql);
|
||||||
|
Logger.error("---recBillSqlExecute------"+recBillSql);
|
||||||
|
//根据销售发票id 回写下游应收单表体发票号
|
||||||
|
String recItemSql = "UPDATE ar_recitem \n" +
|
||||||
|
"SET invoiceno = '" + fphm + "' \n" +
|
||||||
|
"WHERE\n" +
|
||||||
|
"top_billid = '" + csaleinvoiceid + "' \n" +
|
||||||
|
"AND top_billtype = '32'";
|
||||||
|
dao.executeUpdate(recItemSql);
|
||||||
|
Logger.error("---recItemSqlExecute------"+recItemSql);
|
||||||
|
//查询销售发票下游单据,如果有将下游单据表体字段【来源单据号】更新成新的发票号
|
||||||
|
String saleOutSql = "UPDATE ic_saleout_b \n" +
|
||||||
|
"SET vsourcebillcode = '"+ billno +"' \n" +
|
||||||
|
"WHERE\n" +
|
||||||
|
"csourcetype = '32' \n" +
|
||||||
|
"AND csourcebillhid = '" + csaleinvoiceid +"'";
|
||||||
|
dao.executeUpdate(saleOutSql);
|
||||||
|
Logger.error("---saleOutSqlExecute------"+saleOutSql);
|
||||||
|
//正常结束
|
||||||
|
TransactionFactory.getTMProxy().end(null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
} catch(Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
//异常回滚
|
||||||
|
TransactionFactory.getTMProxy().end(e);
|
||||||
|
Logger.error("writeBack Error: ",e);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue