|
|
@@ -141,19 +141,65 @@ public class SikuServiceImpl implements SikuService {
|
|
|
item.put("productBizCode","1001");//产品bizcode
|
|
|
item.put("invoiceName",UtilMap.getString(formData,"textField_mkgarw4d"));//开票名称
|
|
|
item.put("taxPercent",UtilMap.getDouble(formData,"numberField_mkgkboht")/100);//税率
|
|
|
- item.put("quantity",1);//数量
|
|
|
item.put("forexName","CNY");//币种
|
|
|
item.put("exchangeRate",1);//外汇汇率
|
|
|
- item.put("priceWithTax",UtilMap.getDouble(formData,"numberField_mkdo0azb"));//含税单价
|
|
|
item.put("taxClassShortCode",UtilMap.getString(formData,"textField_mm49zsli"));//税收分类编码
|
|
|
|
|
|
+ if (!"红冲".equals(fplx)){
|
|
|
+ item.put("quantity",1);//数量
|
|
|
+ item.put("priceWithTax",UtilMap.getDouble(formData,"numberField_mkdo0azb"));//含税单价
|
|
|
+ }else {
|
|
|
+ item.put("quantity",-1);//数量
|
|
|
+ item.put("priceWithTax",UtilMap.getDouble(formData,"numberField_mknspz7d"));//含税单价
|
|
|
+ Map originInvoice = new HashMap();
|
|
|
+ originInvoice.put("blueInvoiceNumber",UtilMap.getString(formData,"textField_mkxmix7d"));//原蓝字发票号
|
|
|
+ item.put("blueInvoiceDto",Arrays.asList(originInvoice));
|
|
|
+ }
|
|
|
+
|
|
|
application.put("items",Arrays.asList(item));
|
|
|
|
|
|
Map result = MkYpUtil.application(Arrays.asList(application));
|
|
|
|
|
|
+ if (!isTrue(result)){
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstId)
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("radioField_mkxripcc, textareaField_mmlzqvn0","开票失败",getErrorMsg(result))))
|
|
|
+ .useLatestVersion(true)
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
+ }
|
|
|
+
|
|
|
return McR.success();
|
|
|
}
|
|
|
|
|
|
+ private boolean isTrue(Map result){
|
|
|
+ String messageCode = UtilMap.getString(result, "messageCode");
|
|
|
+
|
|
|
+ if (Objects.nonNull(messageCode) && "SUCCESS".equals(messageCode)){
|
|
|
+ return true;
|
|
|
+ }else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //获取错误信息
|
|
|
+ private String getErrorMsg(Map result) {
|
|
|
+ String errorMsg = UtilMap.getString(result, "message");
|
|
|
+
|
|
|
+ Map data = UtilMap.getMap(result, "data");
|
|
|
+
|
|
|
+ if (Objects.nonNull(data)){
|
|
|
+ List<Map> errorData = UtilMap.getList(data, "errorData");
|
|
|
+
|
|
|
+ if (Objects.nonNull(errorData) && !errorData.isEmpty()){
|
|
|
+ for (Map errorDatum : errorData) {
|
|
|
+ errorMsg = errorMsg + ";" + UtilMap.getString(errorDatum, "errorMessage");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return errorMsg;
|
|
|
+ }
|
|
|
+
|
|
|
private static String getEstimatedInvoiceType(String fplx, String estimatedInvoiceType) {
|
|
|
switch (fplx){
|
|
|
case "应/免税普票":
|
|
|
@@ -186,6 +232,7 @@ public class SikuServiceImpl implements SikuService {
|
|
|
formData.put("radioField_mkxripcc","开票成功");
|
|
|
formData.put("textField_mkxripc6",invoiceNumber);
|
|
|
formData.put("textField_mm3aixk0",downloadPageUrl);
|
|
|
+ formData.put("textareaField_mmlzqvn0","");
|
|
|
|
|
|
if (Strings.isNotBlank(pdfUrl)){
|
|
|
String fileName = invoiceNumber + ".pdf";
|
|
|
@@ -420,11 +467,17 @@ public class SikuServiceImpl implements SikuService {
|
|
|
|
|
|
Double receivedAmount = UtilMap.getDouble(receivable, "receivedAmount");//已收金额
|
|
|
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
+ List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
.formUuid("FORM-A9A47B0365DB437F8F4C8E01B4468220K7GU")
|
|
|
.searchCondition(JSONObject.toJSONString(UtilMap.map("textField_mkxripc6",invoiceNumber)))
|
|
|
- .formDataJson(JSONObject.toJSONString(UtilMap.map("numberField_ml8t9c4u",receivedAmount)))
|
|
|
- .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list).getData();
|
|
|
+
|
|
|
+ String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstanceId)
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("numberField_ml8t9c4u",receivedAmount)))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
|
|
|
return;
|
|
|
}
|
|
|
@@ -449,18 +502,30 @@ public class SikuServiceImpl implements SikuService {
|
|
|
|
|
|
if (formCode.contains("需求")){
|
|
|
//采购需求&结算
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
+ List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
.formUuid("FORM-C8C1FBBA781C4C5EBAC487C07BC5A86AD2HO")
|
|
|
- .formDataJson(JSONObject.toJSONString(UtilMap.map("numberField_mkf2qumf",amt)))
|
|
|
- .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o",formCode)))
|
|
|
- .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", formCode)))
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list).getData();
|
|
|
+
|
|
|
+ String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstanceId)
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("numberField_mkf2qumf",amt)))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
}else {
|
|
|
//直接采购结算单
|
|
|
- ydClient.operateData(YDParam.builder()
|
|
|
+ List<Map> data = (List<Map>) ydClient.queryData(YDParam.builder()
|
|
|
.formUuid("FORM-1AFEDDA034C74F0DB18FA60C941CB56EHUUG")
|
|
|
- .formDataJson(JSONObject.toJSONString(UtilMap.map("numberField_mkf2qumf",amt)))
|
|
|
- .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o",formCode)))
|
|
|
- .build(), YDConf.FORM_OPERATION.upsert);
|
|
|
+ .searchCondition(JSONObject.toJSONString(UtilMap.map("serialNumberField_mkkmij3o", formCode)))
|
|
|
+ .build(), YDConf.FORM_QUERY.retrieve_list).getData();
|
|
|
+
|
|
|
+ String formInstanceId = UtilMap.getString(data.get(0), "formInstanceId");
|
|
|
+
|
|
|
+ ydClient.operateData(YDParam.builder()
|
|
|
+ .formInstanceId(formInstanceId)
|
|
|
+ .updateFormDataJson(JSONObject.toJSONString(UtilMap.map("numberField_mkf2qumf",amt)))
|
|
|
+ .build(), YDConf.FORM_OPERATION.update);
|
|
|
}
|
|
|
|
|
|
}
|