ensign/src/main/java/com/yem/wm/utils/FunctionalCommon.java

1277 lines
65 KiB
Java
Raw Normal View History

2024-08-26 09:19:12 +08:00
package com.yem.wm.utils;/*
*
* @auther: xwudd
* @Description
* @Date: 2023/7/24
*/
import kd.bos.bill.BillShowParameter;
import kd.bos.bill.OperationStatus;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.OperateOption;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.IDataModel;
import kd.bos.entity.datamodel.events.BeforeDeleteRowEventArgs;
import kd.bos.entity.operate.result.OperationResult;
import kd.bos.entity.property.AmountProp;
import kd.bos.form.FormShowParameter;
import kd.bos.form.IFormView;
import kd.bos.form.ShowType;
import kd.bos.form.control.EntryGrid;
import kd.bos.form.field.AmountEdit;
import kd.bos.form.plugin.AbstractFormPlugin;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.AttachmentServiceHelper;
import kd.bos.servicehelper.BusinessDataServiceHelper;
import kd.bos.servicehelper.operation.OperationServiceHelper;
import kd.bos.servicehelper.operation.SaveServiceHelper;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.*;
/**
* @Description 共有功能公共方法
**/
public class FunctionalCommon {
/**
* @description 单据类型编码和视图标识相同 赋值对应的单据类型
* @author xwudd
* @param[1] e
* return
* @time 2023/8/16 11:18
*/
public static void setBillType(AbstractFormPlugin e){
IFormView view = e.getView();
IDataModel model = view.getModel();
FormShowParameter fsp = view.getFormShowParameter();
OperationStatus status = fsp.getStatus();
if(OperationStatus.ADDNEW == status){
String formId = fsp.getFormId();
DynamicObject billType = BusinessDataServiceHelper.loadSingle("bos_billtype", "id",
new QFilter[]{new QFilter("number", QCP.equals, formId)});
model.setValue("yem_billtype",billType);
}
}
/**
* @description 选装替换加装功能公共方法
* @author xwudd
* @param[1] model
* @param[2] view
* @param[3] formId 动态表单标识
* @param[4] operationNumber 服务标识
* return
* @time 2023/7/27 9:38
*/
public static void optionalOperation(IDataModel model,IFormView view,String formId,String operationNumber){
String name = model.getDataEntity().getDataEntityType().getName();
int currentRowIndex = -1;
if("yem_es_salesorder".equals(name)||"yem_es_xsalesorder".equals(name)){
currentRowIndex = model.getEntryCurrentRowIndex("yem_es_materialinfo");
}
if("yem_im_clientdemand".equals(name) || "yem_im_inquirylist".equals(name)){
currentRowIndex = model.getEntryCurrentRowIndex("yem_im_detailedinfor");
}
DynamicObject billType = (DynamicObject)model.getValue("yem_billtype");
DynamicObject productModel = (DynamicObject)model.getValue("yem_productmodel",currentRowIndex);
if(productModel != null){
DynamicObject products = productModel.getDynamicObject("yem_products");
if(products != null){
Map<String, Object> map = new HashMap<>();
List<Long> ids = new ArrayList();
int multiConfigRows = model.getEntryRowCount("yem_multiconfig");
for (int i = 0; i < multiConfigRows; i++) {
String configurType = (String)model.getValue("yem_configurtype",i);
Long configEntryId = (Long)model.getValue("yem_configentryid", i);
if("optionaloperation".equals(operationNumber)) {
if("A".equals(configurType)){
ids.add(configEntryId);
}
}
if("replaceoperation".equals(operationNumber)){
if("B".equals(configurType)){
ids.add(configEntryId);
}
}
if("retrofittingoperation".equals(operationNumber)){
if("C".equals(configurType)){
ids.add(configEntryId);
}
}
}
map.put("billTypeNumber",billType.getString("number"));
map.put("products",products.getPkValue());
map.put("operationNumber",operationNumber);
map.put("type","B");
map.put("ids",ids);
map.put("productModel",productModel);
viewForm(formId,map,view);
}
}else{
view.showErrorNotification("请填写明细信息基础机型!");
}
}
/**
* @description 打开动态表单
* @author xwudd
* @param[1] formId 表单标识
* @param[2] map 传参 无参传null
* @param[3] view
* return
* @time 2023/8/29 11:19
*/
public static void viewForm(String formId,Map<String,Object> map,IFormView view){
FormShowParameter formShowParameter = new FormShowParameter();
formShowParameter.setFormId(formId);
formShowParameter.getOpenStyle().setShowType(ShowType.Modal);
if(YEM.isNotEmpty(map)){
formShowParameter.setCustomParams(map);
}
view.showForm(formShowParameter);
}
/**
* @description 获取金额字段绑定币别字段
* @author xwudd
* @param[1] view
* @param[2] amountKey
* @time 2023/7/31 11:50
*/
public static Object getAmountFieldCurrencyKey(IFormView view,String amountKey){
IDataModel model = view.getModel();
AmountEdit marketPriceEdit = (AmountEdit)view.getControl(amountKey);
AmountProp marketPriceProperty = (AmountProp)marketPriceEdit.getProperty();
String marketPriceCurrName = marketPriceProperty.getControlPropName();
if(YEM.isNotEmpty(marketPriceCurrName)){
Object marketPriceCurr = model.getValue(marketPriceCurrName);
return marketPriceCurr;
}else{
return null;
}
}
/**
* @description 明细信息的业务分类为配件时
* 1基础机型锁定并清空
* 2多功能配置页签信息清空
* @author xwudd
* @param[1] rowIndex
* @time 2023/8/3 10:26
*/
public static void lock(IFormView view,IDataModel model,int rowIndex){
String businessSort = (String)model.getValue("yem_businesssort", rowIndex);
if("P".equals(businessSort)){
model.deleteEntryData("yem_multiconfig");
model.setValue("yem_productmodel",null,rowIndex);
view.setEnable(false,rowIndex,"yem_productmodel");
}else{
view.setEnable(true,rowIndex,"yem_productmodel");
}
}
/**
* @description 基础机型清空 清空多功能配置子分录
* @author xwudd
* @param[1] rowIndex
* return
* @time 2023/8/3 10:37
*/
public static void multiConfig(IDataModel model,int rowIndex){
model.deleteEntryData("yem_multiconfig");
}
/**
* @description 贷记单审核反写配件资金池 汇总来源汇总信息和表头财务信息方法
* @author xwudd
* @param[1] bill 配件资金池实体
* @time 2023/8/7 18:00
*/
public static void countTotalSpCapitalPool(DynamicObject bill){
DynamicObjectCollection spCapitalPool_os = bill.getDynamicObjectCollection("yem_spcapitalpool_o");
Map<Long,Map<Long,Map<String, BigDecimal>>> map = new HashMap();
for(DynamicObject spCapitalPool_o : spCapitalPool_os){
DynamicObject originType = spCapitalPool_o.getDynamicObject("yem_origintype");
DynamicObject originCurr = spCapitalPool_o.getDynamicObject("yem_origincurr");
if(YEM.isNotEmpty(originType) && YEM.isNotEmpty(originCurr)){
Long originTypeId = originType.getLong("id");
Long originCurrId = originCurr.getLong("id");
if(map.containsKey(originTypeId)){
Map<Long, Map<String, BigDecimal>> currMap = map.get(originTypeId);
if(currMap.containsKey(originCurrId)){
Map<String, BigDecimal> valueMap = currMap.get(originCurrId);
valueMap.put("originAmt",valueMap.get("originAmt").add(spCapitalPool_o.getBigDecimal("yem_originamt")));
valueMap.put("amountBase",valueMap.get("amountBase").add(spCapitalPool_o.getBigDecimal("yem_amountbase")));
valueMap.put("chargeOffAmt",valueMap.get("chargeOffAmt").add(spCapitalPool_o.getBigDecimal("yem_chargeoffamt")));
valueMap.put("chargeOffAmtBase",valueMap.get("chargeOffAmtBase").add(spCapitalPool_o.getBigDecimal("yem_chargeoffamtbase")));
valueMap.put("residueAvaAmt",valueMap.get("residueAvaAmt").add(spCapitalPool_o.getBigDecimal("yem_residueavaamt")));
valueMap.put("residueAvaAmtBase",valueMap.get("residueAvaAmtBase").add(spCapitalPool_o.getBigDecimal("yem_residueavaamtbase")));
}else{
Map<String, BigDecimal> valueMap = new HashMap<>();
valueMap.put("originAmt",spCapitalPool_o.getBigDecimal("yem_originamt"));
valueMap.put("amountBase",spCapitalPool_o.getBigDecimal("yem_amountbase"));
valueMap.put("chargeOffAmt",spCapitalPool_o.getBigDecimal("yem_chargeoffamt"));
valueMap.put("chargeOffAmtBase",spCapitalPool_o.getBigDecimal("yem_chargeoffamtbase"));
valueMap.put("residueAvaAmt",spCapitalPool_o.getBigDecimal("yem_residueavaamt"));
valueMap.put("residueAvaAmtBase",spCapitalPool_o.getBigDecimal("yem_residueavaamtbase"));
currMap.put(originCurrId,valueMap);
}
}else{
Map<Long,Map<String, BigDecimal>> currMap = new HashMap<>();
Map<String, BigDecimal> valueMap = new HashMap<>();
valueMap.put("originAmt",spCapitalPool_o.getBigDecimal("yem_originamt"));
valueMap.put("amountBase",spCapitalPool_o.getBigDecimal("yem_amountbase"));
valueMap.put("chargeOffAmt",spCapitalPool_o.getBigDecimal("yem_chargeoffamt"));
valueMap.put("chargeOffAmtBase",spCapitalPool_o.getBigDecimal("yem_chargeoffamtbase"));
valueMap.put("residueAvaAmt",spCapitalPool_o.getBigDecimal("yem_residueavaamt"));
valueMap.put("residueAvaAmtBase",spCapitalPool_o.getBigDecimal("yem_residueavaamtbase"));
currMap.put(originCurrId,valueMap);
map.put(originTypeId,currMap);
}
}
}
BigDecimal amountBaseTotal = BigDecimal.ZERO;
BigDecimal chargeOffAmtBaseTotal = BigDecimal.ZERO;
BigDecimal residueAvaAmtBaseTotal = BigDecimal.ZERO;
DynamicObjectCollection spCapitalPool_as = bill.getDynamicObjectCollection("yem_spcapitalpool_a");
spCapitalPool_as.clear();
Set<Long> originTypeIds = map.keySet();
for(Long originTypeId : originTypeIds){
Map<Long, Map<String, BigDecimal>> originCurrMap = map.get(originTypeId);
Set<Long> originCurrIds = originCurrMap.keySet();
for(Long originCurrId : originCurrIds){
DynamicObject addNew = spCapitalPool_as.addNew();
Map<String, BigDecimal> valueMap = originCurrMap.get(originCurrId);
addNew.set("yem_creditype",originTypeId);
addNew.set("yem_curr",originCurrId);
//结算币别
addNew.set("yem_sumamo",valueMap.get("originAmt"));
addNew.set("yem_useamo",valueMap.get("chargeOffAmt"));
addNew.set("yem_noamo",valueMap.get("residueAvaAmt"));
//本位币
BigDecimal amountBase = valueMap.get("amountBase");
amountBaseTotal = amountBaseTotal.add(amountBase);
addNew.set("yem_sumamobase",amountBase);
BigDecimal chargeOffAmtBase = valueMap.get("chargeOffAmtBase");
chargeOffAmtBaseTotal = chargeOffAmtBaseTotal.add(chargeOffAmtBase);
addNew.set("yem_useamobase",chargeOffAmtBase);
BigDecimal residueAvaAmtBase = valueMap.get("residueAvaAmtBase");
residueAvaAmtBaseTotal = residueAvaAmtBaseTotal.add(residueAvaAmtBase);
addNew.set("yem_noamobase",residueAvaAmtBase);
}
}
bill.set("yem_partsamtsum",amountBaseTotal);
bill.set("yem_totalusedamt",chargeOffAmtBaseTotal);
bill.set("yem_surplusamt",residueAvaAmtBaseTotal);
}
public static void viewBill(IFormView view,String formId,Object pkId){
BillShowParameter bsp = new BillShowParameter();
bsp.setFormId(formId);
bsp.setPkId(pkId);
bsp.getOpenStyle().setShowType(ShowType.MainNewTabPage);
bsp.setStatus(OperationStatus.VIEW);
view.showForm(bsp);
}
/**
* @description
* @author xwudd
* @param[1] entity
* return
* @time 2023/8/14 10:16
*/
public static void delDetailRowCalcuInfo(DynamicObject entity)
{
String sourceBillType = entity.getString("yem_sourcebilltype");
long sourceBillId = entity.getLong("yem_sourcebillid");
long sourceEntryId = entity.getLong("yem_sourceentryid");
DynamicObject bill = BusinessDataServiceHelper.loadSingle(sourceBillId, sourceBillType);
if (YEM.isNotEmpty(bill)) {
DynamicObjectCollection detailedInfos = null;
if ("yem_im_clientdemand".equals(sourceBillType)) {
detailedInfos = bill.getDynamicObjectCollection("yem_im_detailedinfor");
} else {
detailedInfos = bill.getDynamicObjectCollection("yem_es_materialinfo");
}
long id = entity.getLong("id");
// for (DynamicObject detailedInfo : detailedInfos) {
// if (detailedInfo.getLong("id") == sourceEntryId) {
// detailedInfo.set("yem_intauditbusano", null);
// detailedInfo.set("yem_intauditbusaid", null);
// break;
// }
// }
for (DynamicObject detailedInfo : detailedInfos) {
Object existIdObj = detailedInfo.get("yem_intauditbusaid");
if (YEM.isNotEmpty(existIdObj)) {
Long existId = (Long) existIdObj;
if (existId == id) {
detailedInfo.set("yem_intauditbusano", null);
detailedInfo.set("yem_intauditbusaid", null);
}
}
}
SaveServiceHelper.save(new DynamicObject[]{bill});
}
}
/**
* @description 生成内审预算单
* @author xwudd
* @param[1] e
* @param[2] entryKey
* @param[3] payEntryKey
* return
* @time 2023/8/14 10:37
*/
public static void clientDemandStartZj(AbstractFormPlugin e,String entryKey,String payEntryKey){
IFormView view = e.getView();
IDataModel model = view.getModel();
OperationStatus status = view.getFormShowParameter().getStatus();
if(status == OperationStatus.ADDNEW){
view.showErrorNotification("请先保存单据,再生成内审预算单!");
return;
}
String inCommission = (String)model.getValue("yem_incommission");
if("A".equals(inCommission)){
BigDecimal commissionAmt = (BigDecimal)model.getValue("yem_commissionamt");
if(commissionAmt.compareTo(BigDecimal.ZERO) <= 0){
view.showErrorNotification("请先维护佣金,才能生成内审预算单!");
return;
}
}
List<String> strList = new ArrayList<>();
DynamicObject dataEntity = model.getDataEntity();
DynamicObjectCollection detailEntrys = dataEntity.getDynamicObjectCollection(entryKey);
EntryGrid entryGrid = view.getControl(entryKey);
int[] selectRows = entryGrid.getSelectRows();
for(int selectRow : selectRows){
Boolean flag = false;
String intAuditBuSaNo = (String)model.getValue("yem_intauditbusano");
Object tempIntauditbusaid = model.getValue("yem_intauditbusaid");
long intAuditBuSaId = 0l;
if(tempIntauditbusaid instanceof Long){
intAuditBuSaId = (long) tempIntauditbusaid;
}
String businessSort = (String)model.getValue("yem_businesssort", selectRow);
if("P".equals(businessSort)){
strList.add(selectRow+ 1 + "");
continue;
}
DynamicObject intAuditBusAcc = null;
if(YEM.isNotEmpty(intAuditBuSaNo) || YEM.isNotEmpty(intAuditBuSaId)){
intAuditBusAcc = BusinessDataServiceHelper.loadSingle(intAuditBuSaId,"yem_im_intauditbusa");
UpdateManualFilling(intAuditBusAcc,model);
removeAtt(intAuditBusAcc);
flag = false;
}else{
intAuditBusAcc = BusinessDataServiceHelper.newDynamicObject("yem_im_intauditbusa");
setIntAuditBillType(intAuditBusAcc,view);//单据类型赋值
setBillInfo(intAuditBusAcc,dataEntity,detailEntrys.get(selectRow).getLong("id"));
intAuditBusAcc.set("org",model.getValue("org"));
intAuditBusAcc.set("creator",RequestContext.get().getCurrUserId());//创建人
intAuditBusAcc.set("createtime",new Date());//创建时间
flag = true;
}
intAuditBusAcc.set("yem_sourceentryseq",selectRow + 1);
intAuditBusAcc.set("billstatus","A");//单据状态
intAuditBusAcc.set("creator",RequestContext.get().getCurrUserId());//创建人
setIntAuditGaugeOutfit(intAuditBusAcc,model,selectRow,payEntryKey);//表头字段赋值
setIntAuditMultiConfig(intAuditBusAcc,model,detailEntrys.get(selectRow),selectRow);//多功能配置分录赋值
setIntAuditCostInfo(intAuditBusAcc,model,selectRow);//费用信息分录赋值
setInsurancePremiums(intAuditBusAcc);//保险费默认等于保费,保险费人民币默认等于保费人民币;
saveIntAuditBusAcc(view,model,intAuditBusAcc,flag,selectRow);
}
if(strList.size() > 0){
view.showMessage("选中行中,第" + String.join(",",strList) + "行,业务分类为配件,无法生存内审核算单!");
}
view.invokeOperation("refresh");
}
private static void setInsurancePremiums(DynamicObject intAuditBusAcc)
{
BigDecimal marinsupreamt = intAuditBusAcc.getBigDecimal("yem_marinsupreamt");//保费
BigDecimal marinsupreamtbase = intAuditBusAcc.getBigDecimal("yem_marinsupreamtbase");//保费人民币
intAuditBusAcc.set("yem_premium", marinsupreamt);
intAuditBusAcc.set("yem_premiumba", marinsupreamtbase);
}
public void zjNewDynamic(){
}
public static void clientDemandStartPj(AbstractFormPlugin e,String entryKey,String payEntryKey){
IFormView view = e.getView();
IDataModel model = view.getModel();
int entryRowCount = model.getEntryRowCount(entryKey);
OperationStatus status = view.getFormShowParameter().getStatus();
if(status == OperationStatus.ADDNEW){
view.showErrorNotification("请先保存单据,再生成内审预算单!");
return;
}
if(!(entryRowCount > 0)){
view.showErrorNotification("请填写商品明细信息!");
return;
}
String inCommission = (String)model.getValue("yem_incommission");
if("A".equals(inCommission)){
BigDecimal commissionAmt = (BigDecimal)model.getValue("yem_commissionamt");
if(commissionAmt.compareTo(BigDecimal.ZERO) <= 0){
view.showErrorNotification("请先维护佣金,才能生成内审预算单!");
return;
}
}
DynamicObject dataEntity = model.getDataEntity();
DynamicObjectCollection detailEntrys = dataEntity.getDynamicObjectCollection(entryKey);
Boolean flag = false;
String intAuditBuSaNo = (String)model.getValue("yem_intauditbusano",0);
Long intAuditBuSaId = (Long) model.getValue("yem_intauditbusaid",0);
DynamicObject intAuditBusAcc = null;
if(YEM.isNotEmpty(intAuditBuSaNo) || YEM.isNotEmpty(intAuditBuSaId)){
intAuditBusAcc = BusinessDataServiceHelper.loadSingle(intAuditBuSaId,"yem_im_intauditbusa");
UpdateManualFilling(intAuditBusAcc,model);
removeAtt(intAuditBusAcc);
flag = false;
}else{
intAuditBusAcc = BusinessDataServiceHelper.newDynamicObject("yem_im_intauditbusa");
setIntAuditBillType(intAuditBusAcc,view);//单据类型赋值
intAuditBusAcc.set("org",model.getValue("org"));
intAuditBusAcc.set("creator",RequestContext.get().getCurrUserId());//创建人
intAuditBusAcc.set("createtime",new Date());//创建时间
setBillInfo(intAuditBusAcc,dataEntity,detailEntrys.get(0).getLong("id"));
flag = true;
}
intAuditBusAcc.set("billstatus","A");//单据状态
intAuditBusAcc.set("creator",RequestContext.get().getCurrUserId());//创建人
setIntAuditGaugeOutfit(intAuditBusAcc,model,entryKey,payEntryKey);//表头字段赋值
setIntAuditCostInfo(intAuditBusAcc,model);//费用信息分录赋值
saveIntAuditBusAcc(view,model,intAuditBusAcc,flag);
view.invokeOperation("refresh");
}
/**
* @description 整机
* @author xwudd
* @param[1] view
* @param[2] model
* @param[3] intAuditBusAcc
* @param[4] flag
* @param[5] selectRow
* return
* @time 2023/9/21 15:59
*/
public static void saveIntAuditBusAcc(IFormView view,IDataModel model,DynamicObject intAuditBusAcc,Boolean flag,int selectRow){
OperationResult saveResult = OperationServiceHelper.executeOperate("save", "yem_im_intauditbusa", new DynamicObject[]{intAuditBusAcc}, OperateOption.create());
if(saveResult.isSuccess()){
if(flag){
model.setValue("yem_intauditbusano",intAuditBusAcc.getString("billno"),selectRow);
model.setValue("yem_intauditbusaid",intAuditBusAcc.getPkValue(),selectRow);
view.showSuccessNotification("生成选中行内审预算单成功!");
view.invokeOperation("save");
viewBill(view,"yem_im_intauditbusa",intAuditBusAcc.getPkValue());
}else{
view.invokeOperation("save");
view.showSuccessNotification("生成选中行内审预算单更新数据成功!");
}
}else{
view.showErrorNotification("生成选中行内审预算单失败!");
}
}
/**
* @description 配件
* @author xwudd
* @param[1] view
* @param[2] model
* @param[3] intAuditBusAcc
* @param[4] flag
* return
* @time 2023/9/21 15:59
*/
public static void saveIntAuditBusAcc(IFormView view,IDataModel model,DynamicObject intAuditBusAcc,Boolean flag){
OperationResult saveResult = OperationServiceHelper.executeOperate("save", "yem_im_intauditbusa", new DynamicObject[]{intAuditBusAcc}, OperateOption.create());
if(saveResult.isSuccess()){
if(flag){
model.setValue("yem_intauditbusano",intAuditBusAcc.getString("billno"),0);
model.setValue("yem_intauditbusaid",intAuditBusAcc.getPkValue(),0);
view.showSuccessNotification("生成选中行内审预算单成功!");
view.invokeOperation("save");
viewBill(view,"yem_im_intauditbusa",intAuditBusAcc.getPkValue());
}else{
view.invokeOperation("save");
view.showSuccessNotification("生成选中行内审预算单更新数据成功!");
}
}else{
view.showErrorNotification("生成选中行内审预算单失败!");
}
}
/**
* @description 内审预算单单据类型赋值
* @author xwudd
* @param[1] intAuditBusAcc 内审预算单实体
* @param[2] view 生成内审预算单的单据视图层
* @time 2023/8/11 11:30
*/
public static void setIntAuditBillType(DynamicObject intAuditBusAcc,IFormView view){
QFilter qFilter = null;
String formId = view.getFormShowParameter().getFormId();
switch(formId){
case "yem_im_clientdeman_zj" :
case "yem_es_salesorder_zj" :
case "yem_im_inclientdeman_zj" :
case "yem_es_salesorder_nmzj" :
qFilter = new QFilter("number",QCP.equals,"yem_im_intauditbusa_ZJWX");
break;
case "yem_im_clientdema_pj" :
case "yem_es_salesorder_pj" :
case "yem_im_inclientdema_pj" :
case "yem_es_salesorder_nmpj" :
qFilter = new QFilter("number",QCP.equals,"yem_im_intauditbusa_PJWX");
break;
}
if(qFilter != null){
DynamicObject billType = BusinessDataServiceHelper.loadSingle("bos_billtype", "id", qFilter.toArray());
intAuditBusAcc.set("yem_billtype",billType);
}
}
/**
* @description 整机内审预算单表头字段类型赋值
* @author xwudd
* @param[1] intAuditBusAcc
* @param[2] model
* @param[3] selectRow
* return
* @time 2023/8/11 16:07
*/
public static void setIntAuditGaugeOutfit(DynamicObject intAuditBusAcc,IDataModel model,int selectRow,String payEntryKey){
//基本信息
intAuditBusAcc.set("yem_number",selectRow);//单据编号 <-- 客户需求单-分录行序号
intAuditBusAcc.set("yem_billnopact",model.getValue("billno"));//合同编号 <-- 客户需求单-单据编号
intAuditBusAcc.set("yem_customer",model.getValue("yem_customer"));//客户名称 <-- 客户需求单-客户
intAuditBusAcc.set("yem_clientcountry",model.getValue("yem_clientcountry"));//买方国家 <-- 客户需求单-贸易国别
intAuditBusAcc.set("yem_reccondition",model.getValue("yem_reccondition"));//付款方式 <-- 客户需求单-收款条件
intAuditBusAcc.set("yem_bizdate",model.getValue("yem_bizdate"));//需求日期 <-- 客户需求单-报价日期
intAuditBusAcc.set("yem_operator",model.getValue("yem_operator"));//人员 <-- 客户需求单-销售员
intAuditBusAcc.set("yem_bd_products",model.getValue("yem_bd_products"));//产品分类 <-- 客户需求单-产品分类
intAuditBusAcc.set("yem_priceitem",model.getValue("yem_priceitem"));//价格条款 <-- 客户需求单-价格条款
intAuditBusAcc.set("yem_transportstyle",model.getValue("yem_transportstyle"));//运输方式 <-- 客户需求单-运输方式
String partsfollowcar = (String) model.getValue("yem_partsfollowcar");
String partsfollowcarName = "";
if ("Y".equals(partsfollowcar)) {
partsfollowcarName = "";
}
if ("N".equals(partsfollowcar)) {
partsfollowcarName = "";
}
intAuditBusAcc.set("yem_partsfollowcar", partsfollowcarName);
DynamicObject cnperson = (DynamicObject) model.getValue("yem_cnperson");
if (cnperson != null) {
DynamicObject bd_customer = BusinessDataServiceHelper.loadSingle(cnperson.getPkValue(), "bd_customer");
if (bd_customer != null) {
intAuditBusAcc.set("yem_intermediary", bd_customer.getString("name"));
} else {
intAuditBusAcc.set("yem_intermediary", "");
}
} else {
intAuditBusAcc.set("yem_intermediary", "");
}
//核算信息赋值
DynamicObject productModel = (DynamicObject)model.getValue("yem_productmodel", selectRow);
DynamicObject products = YEM.isNotEmpty(productModel)?productModel.getDynamicObject("yem_products"):null;
BigDecimal bigCabinetNumbers = (BigDecimal) model.getValue("yem_bigcabinetnumbers", selectRow);
BigDecimal minCabinetNumbers = (BigDecimal) model.getValue("yem_mincabinetnumbers", selectRow);
DynamicObject bigCabinet = (DynamicObject)model.getValue("yem_bigcabinet", selectRow);
DynamicObject minCabinet = (DynamicObject)model.getValue("yem_mincabinet", selectRow);
DynamicObjectCollection destPorts = (DynamicObjectCollection) model.getValue("yem_destports");
DynamicObjectCollection newDestPorts = intAuditBusAcc.getDynamicObjectCollection("yem_destports");
DynamicObjectCollection shipPorts = (DynamicObjectCollection) model.getValue("yem_shipports");
DynamicObjectCollection newShipPorts = intAuditBusAcc.getDynamicObjectCollection("yem_shipports");
getNewMulti(destPorts,newDestPorts);
getNewMulti(shipPorts,newShipPorts);
intAuditBusAcc.set("yem_productmodel",products);//出口机型
intAuditBusAcc.set("yem_deliverydate",model.getValue("yem_deliverydate"));
intAuditBusAcc.set("yem_ordernumber",model.getValue("yem_ordersumnumber"));//订单总台数
intAuditBusAcc.set("yem_singlenumber",model.getValue("yem_singlenumber"));//本单票数
intAuditBusAcc.set("yem_destports",newDestPorts);//目的港
intAuditBusAcc.set("yem_goalcountry",(DynamicObject)model.getValue("yem_clientcountry"));//目的国
intAuditBusAcc.set("yem_shipports",newShipPorts);//起运港
intAuditBusAcc.set("yem_unit",model.getValue("yem_unit",selectRow));//计量单位
intAuditBusAcc.set("yem_quantityrequired",model.getValue("yem_qty", selectRow));//出口台数
intAuditBusAcc.set("yem_bigcabinetnumber", model.getValue("yem_bigcabinetnumber"));//大柜数量
intAuditBusAcc.set("yem_mincabinetnumber", model.getValue("yem_mincabinetnumber"));//小柜数量
intAuditBusAcc.set("yem_resourceid",model.getValue("yem_resourcenog",selectRow));//产品资源号
intAuditBusAcc.set("yem_orderallocation",model.getValue("yem_orderallocation",selectRow));//订单配置要求
if(YEM.isNotEmpty(bigCabinet) && YEM.isNotEmpty(minCabinet)){
StringBuilder name = new StringBuilder();
int big = bigCabinetNumbers.intValue();
int min = minCabinetNumbers.intValue();
if (big > 0) {
name.append(big).append("*").append(bigCabinet.getString("name"));
}
if (min > 0) {
if (big > 0) {
name.append(";");
}
name.append(min).append("*").append(minCabinet.getString("name"));
}
// String name = stringDelTailZero(bigCabinetNumbers.toString()) + "*" + bigCabinet.getString("name") + ";"
// + stringDelTailZero(minCabinetNumbers.toString()) + "*" + minCabinet.getString("name");
intAuditBusAcc.set("yem_encasementype",name);//装箱方式
}
//财务信息
BigDecimal exrate = (BigDecimal)model.getValue("yem_exrate");
BigDecimal cnExRate = (BigDecimal)model.getValue("yem_cnexrate");
BigDecimal oneCarCom = (BigDecimal)model.getValue("yem_onecarcom",selectRow);
intAuditBusAcc.set("yem_currency",model.getValue("yem_currency"));//结算币别
intAuditBusAcc.set("yem_currencybase",model.getValue("yem_currencybase"));//本位币
intAuditBusAcc.set("yem_exratetable",model.getValue("yem_exratetable"));//汇率表
intAuditBusAcc.set("yem_exratedate",model.getValue("yem_exratedate"));//汇率日期
intAuditBusAcc.set("yem_exrate",exrate);//汇率
intAuditBusAcc.set("yem_quotation",model.getValue("yem_quotation"));//换算方式
intAuditBusAcc.set("yem_cncurrency",model.getValue("yem_cncurrency"));//佣金币别
intAuditBusAcc.set("yem_cnexrate",cnExRate);//佣金汇率
intAuditBusAcc.set("yem_commissionamt",oneCarCom);//佣金
intAuditBusAcc.set("yem_commissionamtba",oneCarCom.multiply(cnExRate));//佣金(人民币)
intAuditBusAcc.set("yem_insurancefeerate",model.getValue("yem_insurancefeerate"));//保险费率%
intAuditBusAcc.set("yem_insuranceaddrate",model.getValue("yem_insuranceaddrate"));//保险加成率%
intAuditBusAcc.set("yem_sastandardprice",model.getValue("yem_sastandardprice", selectRow));//标准配置基本价格FOB青岛
intAuditBusAcc.set("yem_sastandardpriceba",model.getValue("yem_sastandardpricesa", selectRow));//标准配置基本价格FOB青岛人民币
BigDecimal priceFieldAccBa = (BigDecimal)model.getValue("yem_pricefieldaccba", selectRow);
intAuditBusAcc.set("yem_pricefieldaccba",priceFieldAccBa);//资源配置单价
intAuditBusAcc.set("yem_pricefieldaccbase",priceFieldAccBa.multiply(exrate));//资源配置单价(人民币)
countSumCost(intAuditBusAcc);
//赋值信保费率%
int payAmtRows = model.getEntryRowCount(payEntryKey);
for (int i = 0; i < payAmtRows; i++) {
String isSinosure = (String)model.getValue("yem_issinosure");
if("A".equals(isSinosure)){
BigDecimal sinosureRate = (BigDecimal)model.getValue("yem_sinosurerate");
if(sinosureRate.compareTo(BigDecimal.ZERO) > 0){
intAuditBusAcc.set("yem_creditrate",sinosureRate);
break;
}
}
}
//赋值拆装费用
if(YEM.isNotEmpty(products)){
DynamicObject costs = BusinessDataServiceHelper.loadSingle("yem_bd_costs", "id,yem_detail.yem_bd_mechanical,yem_detail.yem_tearamount",
new QFilter[]{new QFilter("yem_detail.yem_bd_mechanical", QCP.equals, products.getPkValue())});
if(YEM.isNotEmpty(costs)){
DynamicObjectCollection details = costs.getDynamicObjectCollection("yem_detail");
for(DynamicObject detail : details){
DynamicObject mechanical = detail.getDynamicObject("yem_bd_mechanical");
if(YEM.isNotEmpty(mechanical)){
if(mechanical.getLong("id") == products.getLong("id")){
intAuditBusAcc.set("yem_dismountingcostba",detail.get("yem_tearamount"));
if(exrate.compareTo(BigDecimal.ZERO) > 0){
intAuditBusAcc.set("yem_dismountingcost",detail.getBigDecimal("yem_tearamount").divide(exrate, RoundingMode.HALF_UP));
}
break;
}
}
}
}
}
}
public static String stringDelTailZero(String str){
char[] chars = str.toCharArray();
for (int i = chars.length - 1; i >= 0; i--) {
if(chars[i] == '0'){
continue;
}else{
str = str.substring(0,i + 1);
}
}
return str;
}
/**
* @description 配件内审核算单 表头字段赋值
* @author xwudd
* @param[1] intAuditBusAcc
* @param[2] model
* @param[3] selectRow
* @param[4] payEntryKey
* return
* @time 2023/8/14 9:59
*/
public static void setIntAuditGaugeOutfit(DynamicObject intAuditBusAcc,IDataModel model,String entryKey,String payEntryKey){
//基本信息
intAuditBusAcc.set("yem_billnopact",model.getValue("billno"));//合同编号 <-- 客户需求单-单据编号
intAuditBusAcc.set("yem_customer",model.getValue("yem_customer"));//客户名称 <-- 客户需求单-客户
intAuditBusAcc.set("yem_clientcountry",model.getValue("yem_clientcountry"));//买方国家 <-- 客户需求单-贸易国别
intAuditBusAcc.set("yem_reccondition",model.getValue("yem_reccondition"));//付款方式 <-- 客户需求单-收款条件
intAuditBusAcc.set("yem_bizdate",model.getValue("yem_bizdate"));//需求日期 <-- 客户需求单-报价日期
intAuditBusAcc.set("yem_operator",model.getValue("yem_operator"));//人员 <-- 客户需求单-销售员
intAuditBusAcc.set("yem_bd_products",model.getValue("yem_bd_products"));//产品分类 <-- 客户需求单-产品分类
intAuditBusAcc.set("yem_priceitem",model.getValue("yem_priceitem"));//价格条款 <-- 客户需求单-价格条款
intAuditBusAcc.set("yem_transportstyle",model.getValue("yem_transportstyle"));//运输方式 <-- 客户需求单-运输方式
String partsfollowcar = (String) model.getValue("yem_partsfollowcar");
String partsfollowcarName = "";
if ("Y".equals(partsfollowcar)) {
partsfollowcarName = "";
}
if ("N".equals(partsfollowcar)) {
partsfollowcarName = "";
}
intAuditBusAcc.set("yem_partsfollowcar", partsfollowcarName);
DynamicObject cnperson = (DynamicObject) model.getValue("yem_cnperson");
if (cnperson != null) {
DynamicObject bd_customer = BusinessDataServiceHelper.loadSingle(cnperson.getPkValue(), "bd_customer");
if (bd_customer != null) {
intAuditBusAcc.set("yem_intermediary", bd_customer.getString("name"));
} else {
intAuditBusAcc.set("yem_intermediary", "");
}
} else {
intAuditBusAcc.set("yem_intermediary", "");
}
intAuditBusAcc.set("yem_fundpoolamt", model.getValue("yem_fundpoolamt"));//贷记单使用额度
//核算信息赋值
BigDecimal bigCabinetNumbers = (BigDecimal) model.getValue("yem_bigcabinetnumber");
BigDecimal minCabinetNumbers = (BigDecimal) model.getValue("yem_mincabinetnumber");
DynamicObjectCollection destPorts = (DynamicObjectCollection) model.getValue("yem_destports");
DynamicObjectCollection newDestPorts = intAuditBusAcc.getDynamicObjectCollection("yem_destports");
DynamicObjectCollection shipPorts = (DynamicObjectCollection) model.getValue("yem_shipports");
DynamicObjectCollection newShipPorts = intAuditBusAcc.getDynamicObjectCollection("yem_shipports");
getNewMulti(destPorts,newDestPorts);
getNewMulti(shipPorts,newShipPorts);
intAuditBusAcc.set("yem_deliverydate",model.getValue("yem_deliverydate"));
intAuditBusAcc.set("yem_singlenumber",model.getValue("yem_singlenumber"));//本单票数
intAuditBusAcc.set("yem_destports",newDestPorts);//目的港
intAuditBusAcc.set("yem_goalcountry",model.getValue("yem_clientcountry"));//目的国
intAuditBusAcc.set("yem_shipports",newShipPorts);//起运港
intAuditBusAcc.set("yem_bigcabinetnumber",bigCabinetNumbers);//大柜数量
intAuditBusAcc.set("yem_mincabinetnumber",minCabinetNumbers);//小柜数量
//财务信息
BigDecimal exrate = (BigDecimal)model.getValue("yem_exrate");
BigDecimal cnExRate = (BigDecimal)model.getValue("yem_cnexrate");
BigDecimal comMissionAmt = (BigDecimal)model.getValue("yem_commissionamt");
BigDecimal comMissionAmtBa = (BigDecimal)model.getValue("yem_commissionamtba");
BigDecimal insuranceFeeRate = (BigDecimal)model.getValue("yem_insurancefeerate");
BigDecimal insuranceAddRate = (BigDecimal)model.getValue("yem_insuranceaddrate");
intAuditBusAcc.set("yem_currency",model.getValue("yem_currency"));//结算币别
intAuditBusAcc.set("yem_currencybase",model.getValue("yem_currencybase"));//本位币
intAuditBusAcc.set("yem_exratetable",model.getValue("yem_exratetable"));//汇率表
intAuditBusAcc.set("yem_exratedate",model.getValue("yem_exratedate"));//汇率日期
intAuditBusAcc.set("yem_exrate",exrate);//汇率
intAuditBusAcc.set("yem_quotation",model.getValue("yem_quotation"));//换算方式
intAuditBusAcc.set("yem_cncurrency",model.getValue("yem_cncurrency"));//佣金币别
intAuditBusAcc.set("yem_cnexrate",cnExRate);//佣金汇率
intAuditBusAcc.set("yem_commissionamt",comMissionAmt);//佣金
intAuditBusAcc.set("yem_commissionamtba",comMissionAmtBa);//佣金(人民币)
intAuditBusAcc.set("yem_insurancefeerate",insuranceFeeRate);//保险费率%
intAuditBusAcc.set("yem_insuranceaddrate",insuranceAddRate);//保险加成率%
BigDecimal saFobAmountTotal = BigDecimal.ZERO;
BigDecimal saFobAmountBaseTotal = BigDecimal.ZERO;
int entryRows = model.getEntryRowCount(entryKey);
for (int i = 0; i < entryRows; i++) {
Boolean ifGift = (Boolean)model.getValue("yem_ifgift",i);
if(!ifGift){
saFobAmountTotal = saFobAmountTotal.add((BigDecimal)model.getValue("yem_safobamount",i));
saFobAmountBaseTotal = saFobAmountBaseTotal.add((BigDecimal)model.getValue("yem_safobamountbase",i));
}
}
BigDecimal marinSuPreAmt = saFobAmountTotal.multiply(insuranceFeeRate).multiply(insuranceAddRate).divide(new BigDecimal(100));
intAuditBusAcc.set("yem_carloadfobprice",saFobAmountTotal);//exw
intAuditBusAcc.set("yem_carloadfobpriceba",saFobAmountBaseTotal);//exw
intAuditBusAcc.set("yem_contractpricesum",saFobAmountTotal);//合同总金额
intAuditBusAcc.set("yem_contractpricesumba",saFobAmountBaseTotal);//合同总金额人民币
intAuditBusAcc.set("yem_marinsupreamt",marinSuPreAmt);//海运保险费
intAuditBusAcc.set("yem_marinsupreamtbase",marinSuPreAmt.multiply(exrate));//海运保险费人民币
countSumCost(intAuditBusAcc);
//赋值信保费率%
int payAmtRows = model.getEntryRowCount(payEntryKey);
for (int i = 0; i < payAmtRows; i++) {
String isSinosure = (String)model.getValue("yem_issinosure");
if("A".equals(isSinosure)){
BigDecimal sinosureRate = (BigDecimal)model.getValue("yem_sinosurerate",i);
if(sinosureRate.compareTo(BigDecimal.ZERO) > 0){
intAuditBusAcc.set("yem_creditrate",sinosureRate);
break;
}
}
}
}
/**
* @description 内审预算单多功能配置表赋值
* @author xwudd
* @param[1] intAuditBusAcc
* @param[2] model
* @param[3] materialEntry
* @param[4] selectRow
* return
* @time 2023/8/11 16:08
*/
public static void setIntAuditMultiConfig(DynamicObject intAuditBusAcc,IDataModel model,DynamicObject materialEntry,int selectRow){
BigDecimal totalUnitSetAmount = BigDecimal.ZERO;
BigDecimal qty = (BigDecimal)model.getValue("yem_qty", selectRow);
BigDecimal exrate = intAuditBusAcc.getBigDecimal("yem_exrate");
DynamicObjectCollection multiConfigs = intAuditBusAcc.getDynamicObjectCollection("yem_im_intauditbusa_b");
DynamicObjectCollection contractMultiConfigs = materialEntry.getDynamicObjectCollection("yem_multiconfig");
multiConfigs.clear();
for (DynamicObject contractMultiConfig : contractMultiConfigs) {
DynamicObject addNew = multiConfigs.addNew();
BigDecimal unitsetamount = (BigDecimal)contractMultiConfig.get("yem_unitsetamount");
addNew.set("yem_configurtype",contractMultiConfig.get("yem_configurtype"));//配置类型
addNew.set("yem_configurname",contractMultiConfig.get("yem_configurname"));//配置名称
addNew.set("yem_marketraiseprice",contractMultiConfig.get("yem_marketraiseprice"));//标准销售加价
addNew.set("yem_unitsetnumber",contractMultiConfig.get("yem_unitsetnumber"));//单台数量
addNew.set("yem_unitsetamount",unitsetamount);//单台加价金额
addNew.set("yem_unitsetamountbase",contractMultiConfig.get("yem_unitsetamountbase"));//单台加价金额
totalUnitSetAmount = totalUnitSetAmount.add(unitsetamount);
}
BigDecimal totalUnitSetAmountBase = totalUnitSetAmount.multiply(exrate);
BigDecimal saStandardPrice = (BigDecimal)model.getValue("yem_sastandardprice", selectRow);
BigDecimal saStandardPriceSa = (BigDecimal)model.getValue("yem_sastandardpricesa", selectRow);
BigDecimal carLoadFobPrice = totalUnitSetAmount.add(saStandardPrice);
BigDecimal carLoadFobPriceBase = totalUnitSetAmountBase.add(saStandardPriceSa);
BigDecimal priceFieldAccBa = (BigDecimal) model.getValue("yem_pricefieldaccba", selectRow);
BigDecimal priceFieldAccBase = priceFieldAccBa.multiply(exrate);
intAuditBusAcc.set("yem_conrapricesum",totalUnitSetAmount);//配置加价合计
intAuditBusAcc.set("yem_conrapricesumba",totalUnitSetAmountBase);//配置加价合计(人民币)
intAuditBusAcc.set("yem_carloadfobprice",carLoadFobPrice);//整车FOB价格
intAuditBusAcc.set("yem_carloadfobpriceba",carLoadFobPriceBase);//整车FOB价格人民币
BigDecimal sumCost = intAuditBusAcc.getBigDecimal("yem_sumcost");//总费用
BigDecimal sumCostaBase = intAuditBusAcc.getBigDecimal("yem_sumcostbase");//总费用(人民币)
BigDecimal contractAmt = carLoadFobPrice.add(sumCost).add(priceFieldAccBa);
BigDecimal contractAmtBase = carLoadFobPriceBase.add(sumCostaBase).add(priceFieldAccBase);
intAuditBusAcc.set("yem_contractprice",contractAmt);//合同价格
intAuditBusAcc.set("yem_contractpriceba",contractAmtBase);//合同价格本位币
intAuditBusAcc.set("yem_contractpricesum",contractAmt.multiply(qty));//合同总额
intAuditBusAcc.set("yem_contractpricesumba",contractAmtBase.multiply(qty));//合同总额本位币
BigDecimal insuranceFeeRate = (BigDecimal)model.getValue("yem_insurancefeerate");
BigDecimal insuranceAddRate = (BigDecimal)model.getValue("yem_insuranceaddrate");
BigDecimal marinSuPreAmt = contractAmt.multiply(insuranceFeeRate).multiply(insuranceAddRate).divide(new BigDecimal(100));
intAuditBusAcc.set("yem_marinsupreamt",marinSuPreAmt);
intAuditBusAcc.set("yem_marinsupreamtbase",marinSuPreAmt.multiply(exrate));
}
/**
* @description 整机内审预算单费用信息赋值
* @author xwudd
* @param[1] intAuditBusAcc
* @param[2] model
* @param[3] selectRow
* return
* @time 2023/8/11 16:08
*/
public static void setIntAuditCostInfo(DynamicObject intAuditBusAcc,IDataModel model,int selectRow){
DynamicObjectCollection costInfos = intAuditBusAcc.getDynamicObjectCollection("yem_costinfor");
costInfos.clear();
BigDecimal exrate = (BigDecimal) model.getValue("yem_exrate");
Integer orderSumNumber = (Integer)model.getValue("yem_ordersumnumber");
Integer singleNumber = (Integer)model.getValue("yem_singlenumber");
BigDecimal bigCabinetNumbers = (BigDecimal)model.getValue("yem_bigcabinetnumber");
BigDecimal minCabinetNumbers = (BigDecimal)model.getValue("yem_mincabinetnumber");
int costInfoRows = model.getEntryRowCount("yem_costinfor");
for (int i = 0; i < costInfoRows; i++) {
DynamicObject addNew = costInfos.addNew();
BigDecimal ticketPrice = (BigDecimal)model.getValue("yem_ticketprice", i);
BigDecimal bigCabinetPrice = (BigDecimal)model.getValue("yem_bigcabinetprice", i);
BigDecimal minCabinetPrice = (BigDecimal)model.getValue("yem_mincabinetprice", i);
BigDecimal bigCabinetAmt = bigCabinetPrice.multiply(bigCabinetNumbers);
BigDecimal minCabinetAmt = minCabinetPrice.multiply(minCabinetNumbers);
BigDecimal byTicketAmt = ticketPrice.multiply(new BigDecimal(singleNumber));
BigDecimal costSumAmountBba = bigCabinetAmt.add(minCabinetAmt).add(byTicketAmt);
addNew.set("yem_addorsubc",model.getValue("yem_addorsub",i));//费用类型
addNew.set("yem_padexpensec",model.getValue("yem_padexpense",i));//费用项目
addNew.set("yem_bd_chargemode",model.getValue("yem_bd_chargemode",i));//计费方式
addNew.set("yem_bigcabinetprice",bigCabinetPrice);//大柜单价
addNew.set("yem_mincabinetprice",minCabinetPrice);//小柜单价
addNew.set("yem_byticketprice",ticketPrice);//按票单价
addNew.set("yem_bigcabinetamt",bigCabinetAmt);//大柜金额
addNew.set("yem_mincabinetamt",minCabinetAmt);//小柜金额
addNew.set("yem_byticketamt",byTicketAmt);//按票金额
addNew.set("yem_costsumamountcba",costSumAmountBba);//费用金额本位币
if(orderSumNumber != 0){
BigDecimal cartFulAmountBa = costSumAmountBba.divide(new BigDecimal(orderSumNumber), RoundingMode.HALF_UP);
addNew.set("yem_cartfulamountba",cartFulAmountBa);//单车费用金额本位币
if(!(exrate.compareTo(BigDecimal.ZERO) == 0)){
addNew.set("yem_cartfulamount",cartFulAmountBa.divide(exrate, RoundingMode.HALF_UP));//单车费用金额
}
}
if(!(exrate.compareTo(BigDecimal.ZERO) == 0)){
BigDecimal costSumAmountC = costSumAmountBba.divide(exrate, RoundingMode.HALF_UP);
addNew.set("yem_costsumamountc",costSumAmountC);//费用金额
}
}
}
/**
* @description 配件内审预算单费用信息赋值
* @author xwudd
* @param[1] intAuditBusAcc
* @param[2] model
* return
* @time 2023/8/11 16:08
*/
public static void setIntAuditCostInfo(DynamicObject intAuditBusAcc,IDataModel model){
DynamicObjectCollection costInfos = intAuditBusAcc.getDynamicObjectCollection("yem_costinfor");
costInfos.clear();
BigDecimal exrate = (BigDecimal) model.getValue("yem_exrate");
Integer orderSumNumber = (Integer)model.getValue("yem_ordersumnumber");
BigDecimal bigCabinetNumbers = (BigDecimal)model.getValue("yem_bigcabinetnumber");
BigDecimal minCabinetNumbers = (BigDecimal)model.getValue("yem_mincabinetnumber");
Integer singleNumber = (Integer)model.getValue("yem_singlenumber");
int costInfoRows = model.getEntryRowCount("yem_costinfor");
for (int i = 0; i < costInfoRows; i++) {
DynamicObject addNew = costInfos.addNew();
BigDecimal ticketPrice = (BigDecimal)model.getValue("yem_ticketprice", i);
BigDecimal bigCabinetPrice = (BigDecimal)model.getValue("yem_bigcabinetprice", i);
BigDecimal minCabinetPrice = (BigDecimal)model.getValue("yem_mincabinetprice", i);
BigDecimal bigCabinetAmt = bigCabinetPrice.multiply(bigCabinetNumbers);
BigDecimal minCabinetAmt = minCabinetPrice.multiply(minCabinetNumbers);
BigDecimal byTicketAmt = ticketPrice.multiply(new BigDecimal(singleNumber));
BigDecimal costSumAmountBba = bigCabinetAmt.add(minCabinetAmt).add(byTicketAmt);
addNew.set("yem_addorsubc",model.getValue("yem_addorsub",i));//费用类型
addNew.set("yem_padexpensec",model.getValue("yem_padexpense",i));//费用项目
addNew.set("yem_bd_chargemode",model.getValue("yem_bd_chargemode",i));//计费方式
addNew.set("yem_bigcabinetprice",bigCabinetPrice);//大柜单价
addNew.set("yem_mincabinetprice",minCabinetPrice);//小柜单价
addNew.set("yem_byticketprice",ticketPrice);//按票单价
addNew.set("yem_bigcabinetamt",bigCabinetAmt);//大柜金额
addNew.set("yem_mincabinetamt",minCabinetAmt);//小柜金额
addNew.set("yem_byticketamt",byTicketAmt);//按票金额
addNew.set("yem_costsumamountcba",costSumAmountBba);//费用金额本位币
if(orderSumNumber != 0){
BigDecimal cartFulAmountBa = costSumAmountBba.divide(new BigDecimal(orderSumNumber), RoundingMode.HALF_UP);
addNew.set("yem_cartfulamountba",cartFulAmountBa);//单车费用金额本位币
if(!(exrate.compareTo(BigDecimal.ZERO) == 0)){
addNew.set("yem_cartfulamount",cartFulAmountBa.divide(exrate, RoundingMode.HALF_UP));//单车费用金额
}
}
if(!(exrate.compareTo(BigDecimal.ZERO) == 0)){
BigDecimal costSumAmountC = costSumAmountBba.divide(exrate, RoundingMode.HALF_UP);
addNew.set("yem_costsumamountc",costSumAmountC);//费用金额
}
}
}
public static void setBillInfo(DynamicObject intAuditBusAcc,DynamicObject sourceObj,Long sourceEntryId){
intAuditBusAcc.set("yem_sourcebilltype",sourceObj.getDynamicObjectType().getName());//源单类型
intAuditBusAcc.set("yem_sourcebillid",sourceObj.getPkValue());//来源单据ID
intAuditBusAcc.set("yem_sourcebillno",sourceObj.getString("billno"));//来源单据编码
intAuditBusAcc.set("yem_corebilltype",sourceObj.getString("yem_corebilltype"));//核心单类型
intAuditBusAcc.set("yem_corebillno",sourceObj.getString("yem_corebillno"));//核心单据编码
intAuditBusAcc.set("yem_corebillid",sourceObj.getLong("yem_corebillid"));//核心单据ID
intAuditBusAcc.set("yem_sourceentryid",sourceEntryId);//来源明细分录行内码
}
/**
* @description 删除明细信息分录校验
* @author xwudd
* @param[1] e
* @param[2] view
* @param[3] model
* @param[4] rowIndexs
* return
* @time 2023/8/14 17:12
*/
public static void deleteMaterialEntry(BeforeDeleteRowEventArgs e, IFormView view, IDataModel model, int[] rowIndexs){
List<String> rows = new ArrayList();
for(int rowIndex : rowIndexs){
String intAuditBuSaNo = (String)model.getValue("yem_intauditbusano",rowIndex);
Long intAuditBuSaId = (Long)model.getValue("yem_intauditbusaid",rowIndex);
if(YEM.isNotEmpty(intAuditBuSaNo) && YEM.isNotEmpty(intAuditBuSaId)) {
rows.add(rowIndex + 1 + "");
}
}
if(rows.size() > 0){
String join = String.join(",", rows);
view.showErrorNotification("" + join + "行已生成内审预算单,不可删除!");
e.setCancel(true);
}
}
/**
* @description 外销合同给内审核算单赋值相关字段
* @author xwudd
* @param[1] model
* @param[2] entryKey
* return
* @time 2023/8/14 17:12
*/
public static void defaultValue(IDataModel model,String entryKey){
int entryRowRows = model.getEntryRowCount(entryKey);
DynamicObject dataEntity = model.getDataEntity();
for (int i = 0; i < entryRowRows; i++) {
String intAuditBuSaNo = (String)model.getValue("yem_intauditbusano",i);
Long intAuditBuSaId = (Long)model.getValue("yem_intauditbusaid",i);
if(YEM.isNotEmpty(intAuditBuSaNo) && YEM.isNotEmpty(intAuditBuSaId)) {
DynamicObject intAuditBuSa = BusinessDataServiceHelper.loadSingle(intAuditBuSaId, "yem_im_intauditbusa");
setBillInfo(intAuditBuSa,dataEntity,model.getEntryRowEntity("yem_es_materialinfo",i).getLong("id"));
SaveServiceHelper.save(new DynamicObject[]{intAuditBuSa});
}
}
}
/**
* @description 更新数据更新本位币数据
* @author xwudd
* @param[1] intAuditBusAcc
* @param[2] model
* return
* @time 2023/8/18 16:44
*/
public static void UpdateManualFilling(DynamicObject intAuditBusAcc,IDataModel model){
BigDecimal exrate = (BigDecimal)model.getValue("yem_exrate");
BigDecimal seaFreight = intAuditBusAcc.getBigDecimal("yem_seafreight");//海运费
BigDecimal preMium = intAuditBusAcc.getBigDecimal("yem_premium");//保险费
BigDecimal commissionAmt = intAuditBusAcc.getBigDecimal("yem_commissionamt");//佣金
BigDecimal bankCost = intAuditBusAcc.getBigDecimal("yem_bankcost");//银行费用
BigDecimal interestAmt = intAuditBusAcc.getBigDecimal("yem_interestamt");//银行利息费
BigDecimal landCarryCost = intAuditBusAcc.getBigDecimal("yem_landcarrycost");//陆运费
BigDecimal airliftCost = intAuditBusAcc.getBigDecimal("yem_airliftcost");//空运费
BigDecimal expressCost = intAuditBusAcc.getBigDecimal("yem_expresscost");//快递费
BigDecimal forwarderCost = intAuditBusAcc.getBigDecimal("yem_forwardercost");//货代费
BigDecimal packagingCost = intAuditBusAcc.getBigDecimal("yem_packagingcost");//包装费
BigDecimal creditAmt = intAuditBusAcc.getBigDecimal("yem_creditamt");//信保费
BigDecimal elseCost = intAuditBusAcc.getBigDecimal("yem_elsecost");//其他费用
intAuditBusAcc.set("yem_seafreightba",seaFreight.multiply(exrate));
intAuditBusAcc.set("yem_premiumba",preMium.multiply(exrate));
intAuditBusAcc.set("yem_commissionamtba",commissionAmt.multiply(exrate));
intAuditBusAcc.set("yem_bankcostba",bankCost.multiply(exrate));
intAuditBusAcc.set("yem_interestamtba",interestAmt.multiply(exrate));
intAuditBusAcc.set("yem_landcarrycostba",landCarryCost.multiply(exrate));
intAuditBusAcc.set("yem_airliftcostba",airliftCost.multiply(exrate));
intAuditBusAcc.set("yem_expresscostba",expressCost.multiply(exrate));
intAuditBusAcc.set("yem_forwardercostba",forwarderCost.multiply(exrate));
intAuditBusAcc.set("yem_packagingcostba",packagingCost.multiply(exrate));
intAuditBusAcc.set("yem_creditamtba",creditAmt.multiply(exrate));
intAuditBusAcc.set("yem_elsecostba",elseCost.multiply(exrate));
DynamicObjectCollection intauditbusas = intAuditBusAcc.getDynamicObjectCollection("yem_im_intauditbusa_a");
for(DynamicObject intauditbusa : intauditbusas){
BigDecimal costSumAmounts = intauditbusa.getBigDecimal("yem_costsumamounts");
intauditbusa.set("yem_costsumamountcoins",costSumAmounts.multiply(exrate));
}
}
/**
* @description new单据赋值多选基础资料处理
* @author xwudd
* @param[1] oldObjCols
* @param[2] newObjCols
* return
* @time 2023/8/14 17:11
*/
public static void getNewMulti(DynamicObjectCollection oldObjCols,DynamicObjectCollection newObjCols){
newObjCols.clear();
for(DynamicObject oldObjCol : oldObjCols){
DynamicObject dynamicObject = new DynamicObject(newObjCols.getDynamicObjectType());
DynamicObject fbasedataid = oldObjCol.getDynamicObject("fbasedataid");
dynamicObject.set("fbasedataid",fbasedataid);
newObjCols.add(dynamicObject);
}
}
/**
* @description 通过编码查基础资料实体
* @author xwudd
* @param[1] objKey
* @param[2] number
* return
* @time 2023/8/21 14:35
*/
public static DynamicObject getBaseDynamicObject(String objKey,String number){
return BusinessDataServiceHelper.loadSingle(objKey,"id,number",new QFilter[]{new QFilter("number",QCP.equals,number)});
}
/**
* @description 计算总费用
* @author xwudd
* * @param[1] intAuditBusAcc
* return
* @time 2023/9/26 10:37
*/
public static void countSumCost(DynamicObject intAuditBusAcc){
BigDecimal seaFreight = intAuditBusAcc.getBigDecimal("yem_seafreight");
seaFreight = seaFreight.add(intAuditBusAcc.getBigDecimal("yem_premium"));
seaFreight = seaFreight.add(intAuditBusAcc.getBigDecimal("yem_bankcost"));
seaFreight = seaFreight.add(intAuditBusAcc.getBigDecimal("yem_commissionamt"));
seaFreight = seaFreight.add(intAuditBusAcc.getBigDecimal("yem_interestamt"));
seaFreight = seaFreight.add(intAuditBusAcc.getBigDecimal("yem_landcarrycost"));
seaFreight = seaFreight.add(intAuditBusAcc.getBigDecimal("yem_airliftcost"));
seaFreight = seaFreight.add(intAuditBusAcc.getBigDecimal("yem_expresscost"));
seaFreight = seaFreight.add(intAuditBusAcc.getBigDecimal("yem_forwardercost"));
seaFreight = seaFreight.add(intAuditBusAcc.getBigDecimal("yem_packagingcost"));
seaFreight = seaFreight.add(intAuditBusAcc.getBigDecimal("yem_creditamt"));
seaFreight = seaFreight.add(intAuditBusAcc.getBigDecimal("yem_elsecost"));
BigDecimal seaFreightBa = intAuditBusAcc.getBigDecimal("yem_seafreightba");
seaFreightBa = seaFreightBa.add(intAuditBusAcc.getBigDecimal("yem_premiumba"));
seaFreightBa = seaFreightBa.add(intAuditBusAcc.getBigDecimal("yem_bankcostba"));
seaFreightBa = seaFreightBa.add(intAuditBusAcc.getBigDecimal("yem_commissionamtba"));
seaFreightBa = seaFreightBa.add(intAuditBusAcc.getBigDecimal("yem_interestamtba"));
seaFreightBa = seaFreightBa.add(intAuditBusAcc.getBigDecimal("yem_landcarrycostba"));
seaFreightBa = seaFreightBa.add(intAuditBusAcc.getBigDecimal("yem_airliftcostba"));
seaFreightBa = seaFreightBa.add(intAuditBusAcc.getBigDecimal("yem_expresscostba"));
seaFreightBa = seaFreightBa.add(intAuditBusAcc.getBigDecimal("yem_forwardercostba"));
seaFreightBa = seaFreightBa.add(intAuditBusAcc.getBigDecimal("yem_packagingcostba"));
seaFreightBa = seaFreightBa.add(intAuditBusAcc.getBigDecimal("yem_creditamtba"));
seaFreightBa = seaFreightBa.add(intAuditBusAcc.getBigDecimal("yem_elsecostba"));
intAuditBusAcc.set("yem_sumcost",seaFreight);
intAuditBusAcc.set("yem_sumcostbase",seaFreightBa);
}
public void deleteCorrespondingAtt(){
}
/**
* 获取当前用户当前组织对应部门
* @param orgID 组织ID
* @return
*/
public static Set getOrgUserDeps(long orgID) {
String longnumber = "";
QFilter qFilter = new QFilter("org", QCP.equals, orgID);
qFilter.and(new QFilter("view.number", QCP.equals, "15"));
DynamicObject[] bos_org_s = BusinessDataServiceHelper.load("bos_org_structure",
"id,name,number,longnumber", new QFilter[] { qFilter }, null);
if(null != bos_org_s && bos_org_s.length>0){
longnumber = bos_org_s[0].getString("longnumber");
}
Map org_map = new HashMap();
qFilter = new QFilter("longnumber", QCP.like, longnumber+"%");
bos_org_s = BusinessDataServiceHelper.load("bos_org_structure","id,name,number,org", new QFilter[] { qFilter }, null);
if(null != bos_org_s && bos_org_s.length>0){
for(DynamicObject bos_org:bos_org_s){
org_map.put(bos_org.getDynamicObject("org").getLong("id"),bos_org.getDynamicObject("org"));
}
}
return org_map.keySet();
}
public static void removeAtt(DynamicObject intAuditBusAcc){
if(YEM.isNotEmpty(intAuditBusAcc)){
List<String> attNameList = new ArrayList();
DynamicObject billType = intAuditBusAcc.getDynamicObject("yem_billtype");
String billTypeNumber = YEM.isNotEmpty(billType)?billType.getString("number"):"";
if("yem_im_intauditbusa_PJWX".equals(billTypeNumber)){
attNameList.add(setAttName("PJ",intAuditBusAcc) + ".pdf");
}
if("yem_im_intauditbusa_ZJWX".equals(billTypeNumber)) {
attNameList.add(setAttName("NSZJ",intAuditBusAcc) + ".pdf");
attNameList.add(setAttName("HSZJ",intAuditBusAcc) + ".pdf");
}
List<Map<String, Object>> attachments = AttachmentServiceHelper.getAttachments(intAuditBusAcc.getString("yem_sourcebilltype"), intAuditBusAcc.getLong("yem_sourcebillid"), "attachmentpanel");
for(Map<String, Object> attachment : attachments){
String name = (String)attachment.get("name");
if(attNameList.contains(name)){
AttachmentServiceHelper.remove(intAuditBusAcc.getString("yem_sourcebilltype"), intAuditBusAcc.getLong("yem_sourcebillid"),attachment.get("uid"));
}
}
}
}
public static String setAttName(String tplIdByNum,DynamicObject dataEntitie){
Integer seq = dataEntitie.getInt("yem_sourceentryseq");
DynamicObject productModel = dataEntitie.getDynamicObject("yem_productmodel");
String productModelNum = YEM.isNotEmpty(productModel)?productModel.getString("number"):"";
String sourceBillNo = dataEntitie.getString("yem_sourcebillno");
if(tplIdByNum.contains("NSZJ")){
return String.format("%s出口产品内部审批表-%s-%s",sourceBillNo,productModelNum,seq);
}
if(tplIdByNum.contains("HSZJ")){
return String.format("%s整机自营出口核算表-%s-%s",sourceBillNo,productModelNum,seq);
}
if(tplIdByNum.contains("PJ")){
return String.format("%s配件订单价格核算表",sourceBillNo);
}
return null;
}
}