invoice fixed

This commit is contained in:
刘鹏 2024-08-30 20:09:46 +08:00
parent b7f3a037fc
commit 8fdec7b0b4
6 changed files with 59 additions and 24 deletions

View File

@ -150,5 +150,9 @@ public class AppflgConstant {
* 系统主机端口 * 系统主机端口
*/ */
public static final String KINGDEE_HOST = "kingdee_host"; public static final String KINGDEE_HOST = "kingdee_host";
/**
* 发票类型
*/
public static final String INVOICETYPE = "invoiceType";
} }

View File

@ -2,6 +2,7 @@
* Copyright 2024 bejson.com * Copyright 2024 bejson.com
*/ */
package shkd.fi.fi.common.orc; package shkd.fi.fi.common.orc;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
/** /**
@ -19,7 +20,8 @@ public class DetailList {
/** /**
* 金额 * 金额
*/ */
private String totalAmount; private BigDecimal totalAmount;
private BigDecimal amountTax;
/** /**
* 税率 * 税率
*/ */
@ -51,10 +53,10 @@ public class DetailList {
return unitPrice; return unitPrice;
} }
public void setTotalAmount(String totalAmount) { public void setTotalAmount(BigDecimal totalAmount) {
this.totalAmount = totalAmount; this.totalAmount = totalAmount;
} }
public String getTotalAmount() { public BigDecimal getTotalAmount() {
return totalAmount; return totalAmount;
} }
@ -100,4 +102,11 @@ public class DetailList {
return commodityName; return commodityName;
} }
public BigDecimal getAmountTax() {
return amountTax;
}
public void setAmountTax(BigDecimal amountTax) {
this.amountTax = amountTax;
}
} }

View File

@ -38,7 +38,7 @@ public class Response {
/** /**
* 合计税额:飞机燃油附加费 * 合计税额:飞机燃油附加费
*/ */
private double totalTax; private BigDecimal totalTax;
/** /**
* 发票联次 eg:第一联 * 发票联次 eg:第一联
*/ */
@ -105,7 +105,7 @@ public class Response {
* 校验码 * 校验码
*/ */
private String checkCode; private String checkCode;
private double totalAmount; private BigDecimal totalAmount;
/** /**
* 购买方税号 * 购买方税号
*/ */
@ -171,11 +171,11 @@ public class Response {
return issuer; return issuer;
} }
public void setTotalTax(double totalTax) { public void setTotalTax(BigDecimal totalTax) {
this.totalTax = totalTax; this.totalTax = totalTax;
} }
public double getTotalTax() { public BigDecimal getTotalTax() {
return totalTax; return totalTax;
} }
@ -323,11 +323,11 @@ public class Response {
return checkCode; return checkCode;
} }
public void setTotalAmount(double totalAmount) { public void setTotalAmount(BigDecimal totalAmount) {
this.totalAmount = totalAmount; this.totalAmount = totalAmount;
} }
public double getTotalAmount() { public BigDecimal getTotalAmount() {
return totalAmount; return totalAmount;
} }

View File

@ -88,12 +88,13 @@ public class UploadAttachmentsFormPlugin extends AbstractFormPlugin {
//财务应付单号 //财务应付单号
String billno = formShowParameter.getCustomParam("billno"); String billno = formShowParameter.getCustomParam("billno");
//往来户 //往来户
String asstactName = formShowParameter.getCustomParam("asstactName");
//结算组织 //结算组织
String orgName = formShowParameter.getCustomParam("orgName"); String orgName = formShowParameter.getCustomParam("orgName");
//财务应付单 //财务应付单
DynamicObject ap_finapbill = BusinessDataServiceHelper.loadSingle(id, "ap_finapbill"); DynamicObject ap_finapbill = BusinessDataServiceHelper.loadSingle(id, "ap_finapbill");
DynamicObject org = ap_finapbill.getDynamicObject("org"); DynamicObject org = ap_finapbill.getDynamicObject("org");
String asstactName = ap_finapbill.getDynamicObject("receivingsupplierid").getString("name");
log.info("asstactName:"+asstactName);
String uniformsocialcreditcode = org.getString("uniformsocialcreditcode");//统一社会信用代码 String uniformsocialcreditcode = org.getString("uniformsocialcreditcode");//统一社会信用代码
if(StringUtils.isEmpty(uniformsocialcreditcode)){ if(StringUtils.isEmpty(uniformsocialcreditcode)){
this.getView().showMessage("当前结算组织未维护统一社会信用代码,请先维护"); this.getView().showMessage("当前结算组织未维护统一社会信用代码,请先维护");
@ -216,8 +217,9 @@ public class UploadAttachmentsFormPlugin extends AbstractFormPlugin {
List<Response> responseList = ocrRetureData.getResponse(); List<Response> responseList = ocrRetureData.getResponse();
Response response = responseList.get(0); Response response = responseList.get(0);
String saleName = response.getSaleName();//开票公司 String saleName = response.getSaleName();//开票公司
log.info("开票公司:"+saleName);
if (StringUtils.isNotEmpty(saleName) && !StringUtil.equals(asstactName, saleName)) { if (StringUtils.isNotEmpty(saleName) && !StringUtil.equals(asstactName, saleName)) {
this.getView().showMessage("发票开票单位和当前单据上结算供应商不一致"); this.getView().showMessage("发票开票单位["+saleName+"]和当前单据上收款供应商["+asstactName+"]不一致");
return; return;
} }
String purchaserName = response.getPurchaserName();//收票公司 String purchaserName = response.getPurchaserName();//收票公司
@ -243,12 +245,15 @@ public class UploadAttachmentsFormPlugin extends AbstractFormPlugin {
//add 处理接口 end 0822 1.识别2.处理3.验真 //add 处理接口 end 0822 1.识别2.处理3.验真
List<DetailList> detailList = response.getDetailList(); List<DetailList> detailList = response.getDetailList();
BigDecimal shkd_tax = BigDecimal.ZERO;//税额 BigDecimal shkd_tax = response.getTotalTax();//税额
BigDecimal shkd_amount = BigDecimal.ZERO;//金额 BigDecimal hanshuijia = response.getAmountTax();//含税价
for (DetailList list : detailList) { BigDecimal buhanshuijia = response.getTotalAmount();//不含税价
shkd_tax = shkd_tax.add(new BigDecimal(list.getTax()));
shkd_amount = shkd_amount.add(new BigDecimal(list.getTotalAmount())); // for (DetailList list : detailList) {
} // shkd_tax = shkd_tax.add(new BigDecimal(list.getTax()));
// buhanshuijia = buhanshuijia.add(list.getTotalAmount());
// hanshuijia = hanshuijia.add(null==list.getAmountTax()?BigDecimal.ZERO:list.getAmountTax());
// }
DetailList detailList1 = detailList.get(0); DetailList detailList1 = detailList.get(0);
//2.1.发票合规查验接口请求头 //2.1.发票合规查验接口请求头
@ -265,8 +270,14 @@ public class UploadAttachmentsFormPlugin extends AbstractFormPlugin {
checkCode = checkCode.substring(checkCode.length() - 6); checkCode = checkCode.substring(checkCode.length() - 6);
} }
compliancecollectBody.put("CheckCode_6", checkCode);// checkCode后6位数 compliancecollectBody.put("CheckCode_6", checkCode);// checkCode后6位数
compliancecollectBody.put("TotalAmount", response.getAmountTax().setScale(2, RoundingMode.HALF_UP)); String invoiceType = response.getInvoiceType();
Date invoiceDate = response.getInvoiceDate(); if(paramsMap.get(AppflgConstant.INVOICETYPE).contains(invoiceType)){//云税发票类型invoiceType 为100,103,107,200,201时传不含税价
compliancecollectBody.put("TotalAmount", buhanshuijia);
}else{
if(null!=hanshuijia&&BigDecimal.ZERO.compareTo(hanshuijia)!=0){
compliancecollectBody.put("TotalAmount", hanshuijia);
}
} Date invoiceDate = response.getInvoiceDate();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String format = simpleDateFormat.format(invoiceDate); String format = simpleDateFormat.format(invoiceDate);
compliancecollectBody.put("BillingDate", format);//invoiceDate compliancecollectBody.put("BillingDate", format);//invoiceDate
@ -296,7 +307,7 @@ public class UploadAttachmentsFormPlugin extends AbstractFormPlugin {
//2.5.发票合规查验接口调用成功 生成发票识别单据 //2.5.发票合规查验接口调用成功 生成发票识别单据
DynamicObject shkd_invoicereceipt = BusinessDataServiceHelper.newDynamicObject("shkd_invoicereceipt"); DynamicObject shkd_invoicereceipt = BusinessDataServiceHelper.newDynamicObject("shkd_invoicereceipt");
shkd_invoicereceipt.set("billno", String.valueOf(System.currentTimeMillis())); shkd_invoicereceipt.set("billno", String.valueOf(System.currentTimeMillis()));
String invoiceType = response.getInvoiceType();
String invoiceTypeNumber = null; String invoiceTypeNumber = null;
if ("103".equals(invoiceType)) { if ("103".equals(invoiceType)) {
@ -319,7 +330,7 @@ public class UploadAttachmentsFormPlugin extends AbstractFormPlugin {
shkd_invoicereceipt.set("shkd_pricetaxtotal", response.getAmountTax());//价税合计 shkd_invoicereceipt.set("shkd_pricetaxtotal", response.getAmountTax());//价税合计
shkd_invoicereceipt.set("shkd_taxrate1", detailList1.getTaxRate());//税率(%) shkd_invoicereceipt.set("shkd_taxrate1", detailList1.getTaxRate());//税率(%)
shkd_invoicereceipt.set("shkd_tax", shkd_tax);//税额 shkd_invoicereceipt.set("shkd_tax", shkd_tax);//税额
shkd_invoicereceipt.set("shkd_amount", shkd_amount);//金额 shkd_invoicereceipt.set("shkd_amount", buhanshuijia);//金额
shkd_invoicereceipt.set("shkd_asstactname", response.getSaleName());//开票公司 销售方 shkd_invoicereceipt.set("shkd_asstactname", response.getSaleName());//开票公司 销售方
shkd_invoicereceipt.set("shkd_buyername", response.getPurchaserName());//收票公司 购买方 shkd_invoicereceipt.set("shkd_buyername", response.getPurchaserName());//收票公司 购买方
shkd_invoicereceipt.set("shkd_istaxdeduction", null);//可抵扣 是否??? shkd_invoicereceipt.set("shkd_istaxdeduction", null);//可抵扣 是否???
@ -408,6 +419,9 @@ public class UploadAttachmentsFormPlugin extends AbstractFormPlugin {
if (shkd_taxrate1.contains("%")) { if (shkd_taxrate1.contains("%")) {
shkd_taxrate1 = shkd_taxrate1.substring(0, shkd_taxrate1.indexOf("%")); shkd_taxrate1 = shkd_taxrate1.substring(0, shkd_taxrate1.indexOf("%"));
} }
if(shkd_taxrate1.contains("免税")){
shkd_taxrate1="0";
}
addNew.set("shkd_i_taxrate", shkd_taxrate1); addNew.set("shkd_i_taxrate", shkd_taxrate1);
addNew.set("shkd_i_tax", dynamicObject.get("shkd_tax")); addNew.set("shkd_i_tax", dynamicObject.get("shkd_tax"));
addNew.set("shkd_i_amount", dynamicObject.get("shkd_amount")); addNew.set("shkd_i_amount", dynamicObject.get("shkd_amount"));

View File

@ -382,6 +382,12 @@ public class SynchronizaSapOPPlugin extends AbstractOperationServicePlugIn {
if(StringUtils.isNotEmpty(shkd_sap_sup_num)){ if(StringUtils.isNotEmpty(shkd_sap_sup_num)){
LIFNR = shkd_sap_sup_num; LIFNR = shkd_sap_sup_num;
} }
//如果科目上维护了SAP默认订单则以科目维护的为准
String shkd_sap_order = account.getString("shkd_sap_order");
String AUFNR = "";
if(StringUtils.isNotEmpty(shkd_sap_order)){
AUFNR = shkd_sap_order;
}
items1.setDOCID(docid); items1.setDOCID(docid);
items1.setITEMNO(seq); items1.setITEMNO(seq);
@ -406,7 +412,7 @@ public class SynchronizaSapOPPlugin extends AbstractOperationServicePlugIn {
items1.setGSBER(""); items1.setGSBER("");
items1.setKUNNR(KUNNR); items1.setKUNNR(KUNNR);
items1.setLIFNR(LIFNR); items1.setLIFNR(LIFNR);
items1.setAUFNR(""); items1.setAUFNR(AUFNR);
items1.setVALUT(""); items1.setVALUT("");
items1.setXREF1(""); items1.setXREF1("");
items1.setXREF2(""); items1.setXREF2("");

View File

@ -1,5 +1,6 @@
package shkd.fi.fi.sso; package shkd.fi.fi.sso;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject; import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.utils.ObjectUtils; import kd.bos.dataentity.utils.ObjectUtils;
import kd.bos.dc.api.model.Account; import kd.bos.dc.api.model.Account;
@ -48,8 +49,9 @@ public class OtherSysSSOAuth implements ThirdSSOAuthHandler {
@Override @Override
public void callTrdSSOLogin(HttpServletRequest request, HttpServletResponse response, String s) { public void callTrdSSOLogin(HttpServletRequest request, HttpServletResponse response, String s) {
//用户需要登录的地址 //用户需要登录的地址
String requestURL = URLEncoder.encode(request.getRequestURL().toString()) ; RequestContext requestContext = RequestContext.get();
String loginUrl = "http://10.13.11.210/ierp/login.html?redirect="+requestURL; String loginUrl = requestContext+"login.html";
logger.info("loginUrl:"+loginUrl);
try { try {
response.sendRedirect(loginUrl); response.sendRedirect(loginUrl);
} catch (IOException e) { } catch (IOException e) {