Quellcode durchsuchen

Merge remote-tracking branch 'origin/master'

zhouger vor 5 Monaten
Ursprung
Commit
d4272a6c64
1 geänderte Dateien mit 1099 neuen und 0 gelöschten Zeilen
  1. 1099 0
      src/main/java/kd/fi/er/formplugin/web/TripEntryEditEx.java

+ 1099 - 0
src/main/java/kd/fi/er/formplugin/web/TripEntryEditEx.java

@@ -0,0 +1,1099 @@
+//
+// Source code recreated from a .class file by IntelliJ IDEA
+// (powered by FernFlower decompiler)
+//
+
+package kd.fi.er.formplugin.web;
+
+import java.math.BigDecimal;
+import java.time.LocalDate;
+import java.util.Collections;
+import java.util.Date;
+import java.util.EventObject;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+import kd.bos.bill.OperationStatus;
+import kd.bos.dataentity.entity.DynamicObject;
+import kd.bos.dataentity.entity.DynamicObjectCollection;
+import kd.bos.dataentity.metadata.IDataEntityProperty;
+import kd.bos.dataentity.metadata.clr.DataEntityPropertyCollection;
+import kd.bos.dataentity.resource.ResManager;
+import kd.bos.entity.MainEntityType;
+import kd.bos.entity.datamodel.IDataModel;
+import kd.bos.entity.datamodel.events.ChangeData;
+import kd.bos.entity.datamodel.events.PropertyChangedArgs;
+import kd.bos.entity.property.BasedataProp;
+import kd.bos.form.ConfirmCallBackListener;
+import kd.bos.form.FormShowParameter;
+import kd.bos.form.IFormView;
+import kd.bos.form.MessageBoxOptions;
+import kd.bos.form.MessageBoxResult;
+import kd.bos.form.control.Control;
+import kd.bos.form.events.MessageBoxClosedEvent;
+import kd.bos.form.field.BasedataEdit;
+import kd.bos.form.field.DateRangeEdit;
+import kd.bos.form.field.FieldEdit;
+import kd.bos.form.field.MulBasedataEdit;
+import kd.bos.form.plugin.AbstractFormPlugin;
+import kd.bos.list.ListShowParameter;
+import kd.bos.logging.Log;
+import kd.bos.logging.LogFactory;
+import kd.bos.orm.query.QFilter;
+import kd.bos.servicehelper.BusinessDataServiceHelper;
+import kd.bos.servicehelper.org.OrgUnitServiceHelper;
+import kd.fi.er.business.bean.CostDeptF7ChangePram;
+import kd.fi.er.business.invoicecloud.ItemFrom;
+import kd.fi.er.business.servicehelper.BaseCurrencyServiceHelper;
+import kd.fi.er.business.servicehelper.CommonServiceHelper;
+import kd.fi.er.business.servicehelper.CoreBaseBillServiceHelper;
+import kd.fi.er.business.servicehelper.ExpenseItemServiceHelper;
+import kd.fi.er.business.tripstd.service.IErTripStdService;
+import kd.fi.er.business.tripstd.service.imp.ErTripStdServiceImp;
+import kd.fi.er.business.utils.AmountUtils;
+import kd.fi.er.business.utils.ErCommonUtils;
+import kd.fi.er.business.utils.ErCostCenterUtil;
+import kd.fi.er.business.utils.ErEntityTypeUtils;
+import kd.fi.er.business.utils.ErStdConfig;
+import kd.fi.er.business.utils.SystemParamterUtil;
+import kd.fi.er.common.ControlMethodEnum;
+import kd.fi.er.common.SettlementTypeEnum;
+import kd.fi.er.formplugin.budget.BudgetCommonUtil;
+import kd.fi.er.formplugin.daily.mobile.reimburse.listener.BeforeCostCompanyF7SelectListener;
+import kd.fi.er.formplugin.daily.mobile.reimburse.listener.BeforeCostDeptF7SelectListener;
+import kd.fi.er.formplugin.daily.mobile.reimburse.listener.BeforeExpenseItemF7SelectListener;
+import kd.fi.er.formplugin.daily.mobile.reimburse.listener.TripBeforeCostCenterF7SelectListener;
+import kd.fi.er.formplugin.daily.web.workflow.ErMobWorkFlowOtherViewEditUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.ObjectUtils;
+
+public class TripEntryEditEx extends AbstractFormPlugin {
+    private static final Log log = LogFactory.getLog(TripEntryEdit.class);
+    private static final String TRIP_ENTRY_ROW_INDEX = "tripEntryRowIndex";
+    private static final String BTN_OK = "btnok";
+
+    public TripEntryEditEx() {
+    }
+
+    public void registerListener(EventObject e) {
+        super.registerListener(e);
+        this.addClickListeners(new String[]{"btnok"});
+        MulBasedataEdit travelersF7 = (MulBasedataEdit)this.getControl("travelers");
+        this.getF7FilterInfo(travelersF7);
+        BasedataEdit travelerF7 = (BasedataEdit)this.getControl("traveler");
+        this.getF7FilterInfo(travelerF7);
+        if (this.getView().getParentView() != null && this.getView().getParentView().getModel() != null) {
+            IDataModel model = this.getModel();
+            IDataModel parentModel = this.getView().getParentView().getModel();
+            String number = parentModel.getDataEntityType().getName();
+            if (ErEntityTypeUtils.isTripReqBill(number) && (Boolean)model.getValue("isloan")) {
+                number = "er_loanbill";
+            }
+
+            BasedataEdit tripExpenseItemF7 = (BasedataEdit)this.getControl("tripexpenseitem");
+            tripExpenseItemF7.addBeforeF7SelectListener(new BeforeExpenseItemF7SelectListener(this.getView(), number, "entrycostdept"));
+            this.costDeptF7Filter();
+            this.costCompanyF7Filter();
+            this.costCenterF7Filter();
+        }
+
+    }
+
+    private void costCenterF7Filter() {
+        TripBeforeCostCenterF7SelectListener beforeCostCenterF7SelectListener = new TripBeforeCostCenterF7SelectListener(this.getView());
+        BasedataEdit entryCostCenterF7 = (BasedataEdit)this.getControl("std_entrycostcenter");
+        if (entryCostCenterF7 != null) {
+            entryCostCenterF7.addBeforeF7SelectListener(beforeCostCenterF7SelectListener);
+        }
+
+    }
+
+    protected void costDeptF7Filter() {
+        BasedataEdit entrycostDeptF7 = (BasedataEdit)this.getControl("entrycostdept");
+        if (entrycostDeptF7 != null) {
+            BeforeCostDeptF7SelectListener beforeCostDeptF7SelectListener = new BeforeCostDeptF7SelectListener(this.getView());
+            entrycostDeptF7.addBeforeF7SelectListener(beforeCostDeptF7SelectListener);
+        }
+
+    }
+
+    protected void costCompanyF7Filter() {
+        BasedataEdit costCompanyF7 = (BasedataEdit)this.getControl("entrycostcompany");
+        Object costDept = this.getModel().getValue("entrycostdept");
+        Object company = this.getModel().getValue("company");
+        if (costCompanyF7 != null && costDept != null) {
+            BeforeCostCompanyF7SelectListener beforeCostCompanyF7SelectListener = new BeforeCostCompanyF7SelectListener(ErCommonUtils.getPk(costDept), ErCommonUtils.getPk(company));
+            costCompanyF7.addBeforeF7SelectListener(beforeCostCompanyF7SelectListener);
+        }
+
+    }
+
+    public void getF7FilterInfo(BasedataEdit travelerF7) {
+        travelerF7.addBeforeF7SelectListener((listener) -> {
+            ListShowParameter list = (ListShowParameter)listener.getFormShowParameter();
+            IFormView parentView = this.getView().getParentView();
+            if (parentView != null) {
+                IDataModel parentModel = parentView.getModel();
+                DynamicObject org = (DynamicObject)parentModel.getValue("company");
+                if (org != null) {
+                    boolean travelersrelationtripreq = SystemParamterUtil.getBoolParamResult(ErCommonUtils.getPk(org), "travelersrelationtripreq");
+                    if (travelersrelationtripreq) {
+                        Set<Object> longSet = new HashSet();
+                        DynamicObjectCollection clearloanentry;
+                        if (parentModel.getProperty("writeoffapply") != null && !parentModel.getEntryEntity("writeoffapply").isEmpty()) {
+                            clearloanentry = parentModel.getEntryEntity("writeoffapply");
+                            Iterator var9 = clearloanentry.iterator();
+
+                            label106:
+                            while(true) {
+                                DynamicObjectCollection applytravelers;
+                                do {
+                                    if (!var9.hasNext()) {
+                                        break label106;
+                                    }
+
+                                    DynamicObject itemx = (DynamicObject)var9.next();
+                                    applytravelers = itemx.getDynamicObjectCollection("applytravelers");
+                                } while(applytravelers == null);
+
+                                Iterator var12 = applytravelers.iterator();
+
+                                while(var12.hasNext()) {
+                                    DynamicObject apply = (DynamicObject)var12.next();
+                                    longSet.add(ErCommonUtils.getPk(apply.getDynamicObject("fbasedataid")));
+                                }
+                            }
+                        }
+
+                        if (parentModel.getProperty("clearloanentry") != null && !parentModel.getEntryEntity("clearloanentry").isEmpty()) {
+                            clearloanentry = parentModel.getEntryEntity("clearloanentry");
+                            HashSet<Long> applyIdSet = new HashSet();
+                            Iterator var25 = clearloanentry.iterator();
+
+                            while(var25.hasNext()) {
+                                DynamicObject item = (DynamicObject)var25.next();
+                                if ("er_tripreqbill".equals(item.getString("srcbilltype"))) {
+                                    applyIdSet.add(item.getLong("loanbillid"));
+                                }
+                            }
+
+                            DynamicObject[] reqBills = BusinessDataServiceHelper.load("er_tripreqbill", "tripentry.travelers", new QFilter[]{new QFilter("id", "in", applyIdSet)});
+                            DynamicObject[] var29 = reqBills;
+                            int var31 = reqBills.length;
+
+                            label83:
+                            for(int var32 = 0; var32 < var31; ++var32) {
+                                DynamicObject reqBill = var29[var32];
+                                DynamicObjectCollection tripentry = reqBill.getDynamicObjectCollection("tripentry");
+                                if (null != tripentry) {
+                                    Iterator var16 = tripentry.iterator();
+
+                                    while(true) {
+                                        DynamicObjectCollection travelers;
+                                        do {
+                                            if (!var16.hasNext()) {
+                                                continue label83;
+                                            }
+
+                                            DynamicObject entry = (DynamicObject)var16.next();
+                                            travelers = entry.getDynamicObjectCollection("travelers");
+                                        } while(null == travelers);
+
+                                        Iterator var19 = travelers.iterator();
+
+                                        while(var19.hasNext()) {
+                                            DynamicObject traveler = (DynamicObject)var19.next();
+                                            longSet.add(ErCommonUtils.getPk(traveler.getDynamicObject("fbasedataid")));
+                                        }
+                                    }
+                                }
+                            }
+                        }
+
+                        longSet.remove((Object)null);
+                        if (!longSet.isEmpty()) {
+                            list.getListFilterParameter().setFilter(new QFilter("id", "in", longSet));
+                        }
+                    }
+
+                    int multravelersrange = SystemParamterUtil.getMulTravelersRange(ErCommonUtils.getPk(org));
+                    List allOrgList;
+                    switch (multravelersrange) {
+                        case 0:
+                        default:
+                            DynamicObject dept = (DynamicObject)parentModel.getValue("org");
+                            list.getListFilterParameter().setFilter(QFilter.of("entryentity.dpt.masterid=?", new Object[]{dept.get("masterid")}).and(new QFilter("enable", "=", Boolean.TRUE)));
+                            break;
+                        case 1:
+                            allOrgList = OrgUnitServiceHelper.getAllSubordinateOrgs(1L, Collections.singletonList(ErCommonUtils.getPk(org)), true);
+                            list.getListFilterParameter().setFilter((new QFilter("entryentity.dpt.masterid", "in", allOrgList)).and(new QFilter("enable", "=", Boolean.TRUE)));
+                            break;
+                        case 2:
+                            long rootOrgId = OrgUnitServiceHelper.getRootOrgId();
+                            allOrgList = OrgUnitServiceHelper.getAllSubordinateOrgs(1L, Collections.singletonList(rootOrgId), true);
+                            list.getListFilterParameter().setFilter((new QFilter("entryentity.dpt.masterid", "in", allOrgList)).and(new QFilter("enable", "=", Boolean.TRUE)));
+                    }
+
+                    if (multravelersrange == 0 || multravelersrange == 1) {
+                        Long id = ErCommonUtils.getPk(parentModel.getValue("org"));
+                        if (multravelersrange == 1) {
+                            id = ErCommonUtils.getPk(org);
+                        }
+
+                        listener.getFormShowParameter().setCustomParam("initRootOrgId", id);
+                        listener.getFormShowParameter().setCustomParam("initOrgId", id);
+                    }
+
+                    list.setCustomParam("isIncludeAllSub", true);
+                }
+            }
+
+        });
+    }
+
+    public void afterCreateNewData(EventObject e) {
+        super.afterCreateNewData(e);
+        IFormView parentView = this.getView().getParentView();
+        if (parentView != null) {
+            IDataModel parentModel = parentView.getModel();
+            IDataModel model = this.getModel();
+            model.setValue("formid", parentModel.getValue("formid"));
+            model.setValue("iscurrency", parentModel.getValue("iscurrency"));
+            model.setValue("currency", ErCommonUtils.getPk(parentModel.getValue("currency")));
+            model.setValue("isloan", parentModel.getValue("isloan"));
+            model.setValue("company", parentModel.getValue("company"));
+            model.setValue("org", parentModel.getValue("org"));
+            model.setValue("bizdate", parentModel.getValue("bizdate"));
+            model.setValue("costorgusemode", parentModel.getValue("costorgusemode"));
+            model.setValue("tripentrystatus", "A");
+            DynamicObject applierOb = (DynamicObject)parentModel.getValue("applier");
+            String formId = (String)model.getValue("formid");
+            if (applierOb != null && (ErEntityTypeUtils.isTripReqBill(parentView.getEntityId()) || ErEntityTypeUtils.isTripReimburseBill(parentView.getEntityId()))) {
+                MulBasedataEdit travelersF7 = (MulBasedataEdit)this.getControl("travelers");
+                travelersF7.setMustInput(true);
+            }
+
+            this.setRowIndexPageCache();
+            DynamicObject company = (DynamicObject)model.getValue("company");
+            String costMode = ErCommonUtils.getCostOrgUseMode(company == null ? 0L : (Long)company.getPkValue());
+            if (!"0".equals(costMode)) {
+                BasedataEdit entryCostCenter = (BasedataEdit)this.getControl("std_entrycostcenter");
+                entryCostCenter.setMustInput(true);
+            }
+
+            int tripEntryRowIndex = Integer.parseInt(this.getPageCache().get("tripEntryRowIndex"));
+            if (tripEntryRowIndex != -1) {
+                DynamicObject tripEntry = parentModel.getEntryRowEntity("tripentry", tripEntryRowIndex);
+                DataEntityPropertyCollection tripEntryProps = tripEntry.getDataEntityType().getProperties();
+                DataEntityPropertyCollection properties = model.getDataEntityType().getProperties();
+                Iterator var13 = properties.iterator();
+
+                while(var13.hasNext()) {
+                    IDataEntityProperty property = (IDataEntityProperty)var13.next();
+                    String propertyName = property.getName();
+                    if (tripEntryProps.get(propertyName) != null) {
+                        model.setValue(propertyName, ErCommonUtils.getObjectValue(tripEntry.get(propertyName)));
+                    }
+                }
+
+                if (ErEntityTypeUtils.isTripReimburseBill(formId) && tripEntry.get("tripentryarea") != null) {
+                    model.setValue("triparea", ErCommonUtils.getPk(tripEntry.get("tripentryarea")));
+                }
+            } else {
+                model.setValue("entrycostdept", ErCommonUtils.getPk(parentModel.getValue("costdept")));
+                String centerKey = "std_entrycostcenter";
+                if (!"0".equals(costMode)) {
+                    ErCostCenterUtil.initEntryCostCenter(this.getModel(), "tripentry", model.getEntryCurrentRowIndex("std_entrycostcenter"), -1);
+                    DynamicObject costCenter = (DynamicObject)parentModel.getValue("std_costcenter");
+                    if (model.getProperty(centerKey) == null) {
+                        centerKey = "entrycostcenter";
+                    }
+
+                    if (costCenter != null) {
+                        model.setValue(centerKey, costCenter);
+                    }
+                }
+
+                model.setValue("entrycostcompany", ErCommonUtils.getPk(parentModel.getValue("costcompany")));
+                if (!"0".equals(costMode)) {
+                    if (model.getProperty(centerKey) == null) {
+                        centerKey = "entrycostcenter";
+                    }
+
+                    if (ErCostCenterUtil.costCenterHasCostCompany(model.getValue(centerKey), parentModel.getValue("costcompany"))) {
+                        model.setValue(centerKey, (Object)null);
+                    }
+                }
+
+                model.setValue("tripcurrency", ErCommonUtils.getPk(parentModel.getValue("currency")));
+                DynamicObjectCollection parentTripEntry = parentModel.getEntryEntity("tripentry");
+                if (parentTripEntry != null && parentTripEntry.size() > 0) {
+                    DynamicObject tripEntry = (DynamicObject)parentTripEntry.get(parentTripEntry.size() - 1);
+                    DynamicObject toPlace = tripEntry.getDynamicObject("to");
+                    model.setValue("from", ErCommonUtils.getPk(toPlace));
+                    model.setValue("startdate", tripEntry.getDate("enddate"));
+                    model.setValue("triphappendate", tripEntry.getDate("enddate"));
+                }
+
+                model.setValue("tripexchangerate", BigDecimal.ONE);
+            }
+
+            DynamicObjectCollection travelers = (DynamicObjectCollection)model.getValue("travelers");
+            if (travelers != null && applierOb != null && travelers.size() == 0) {
+                Long pkid = (Long)applierOb.getPkValue();
+                Long[] applierIds = new Long[]{pkid};
+                model.setValue("travelers", applierIds);
+            }
+
+            FormShowParameter formShowParameter = this.getView().getFormShowParameter();
+            Object istravelers = formShowParameter.getCustomParam("istravelers");
+            model.setValue("istravelers", istravelers);
+            if (model.getValue("company") != null) {
+                Object pkValue = ((DynamicObject)model.getValue("company")).getPkValue();
+                boolean isControl = SystemParamterUtil.isEnableTripStandard(Long.parseLong(pkValue.toString())) && SystemParamterUtil.getTripStandardControlLevel(Long.parseLong(pkValue.toString())) != ControlMethodEnum.NO_CONTROL;
+                model.setValue("istripcontrol", isControl);
+            }
+
+            if (company != null) {
+                int showType = ErCommonUtils.getExpenseAssumeShowTypes((Long)company.getPkValue());
+                model.setValue("expensesassumeshowtypes", String.valueOf(showType));
+                if (showType == 2) {
+                    FieldEdit costDept = (FieldEdit)this.getControl("entrycostdept");
+                    costDept.setMustInput(true);
+                    FieldEdit costCompany = (FieldEdit)this.getControl("entrycostcompany");
+                    costCompany.setMustInput(true);
+                }
+            }
+
+            this.showExchangeRate(false);
+            Boolean isMonth = (Boolean)formShowParameter.getCustomParam("isMonth");
+            if (isMonth != null) {
+                model.setValue("ismonth", isMonth);
+            }
+
+            Object ismulwayto = formShowParameter.getCustomParam("ismulwayto");
+            model.setValue("ismulwayto", ismulwayto);
+            CommonServiceHelper.setMulWayToVisible(parentModel, this.getView());
+            boolean iscurrencyshowintripentry = SystemParamterUtil.getIsCurrencyShowinTripentry(ErCommonUtils.getPk(company));
+            model.setValue("iscurrencyshowintripentry", iscurrencyshowintripentry);
+            this.setBudgetInfoByDefaultValue();
+        }
+    }
+
+    private void setBudgetInfoByDefaultValue() {
+        FormShowParameter formShowParameter = this.getView().getFormShowParameter();
+        OperationStatus status = formShowParameter.getStatus();
+        Boolean isQueryBudget = (Boolean)formShowParameter.getCustomParam("isquerybudget");
+        Object expenseItemObj = this.getModel().getValue("tripexpenseitem");
+        if (expenseItemObj != null && status.equals(OperationStatus.ADDNEW) && isQueryBudget) {
+            BudgetCommonUtil.buildBudgetAmountField(this.getView(), 0);
+        }
+
+    }
+
+    public void afterBindData(EventObject e) {
+        super.afterBindData(e);
+        this.setControlVisible();
+        IFormView parentView = this.getView().getParentView();
+        Long companyId = 0L;
+        if (parentView != null) {
+            companyId = ErCommonUtils.getPk(parentView.getModel().getValue("company"));
+        }
+
+        if (!SystemParamterUtil.getTripexpenseitemMustInput(companyId) && !this.isShowExpenseItem()) {
+            this.getView().setVisible(false, new String[]{"tripexpenseitem"});
+        } else {
+            FieldEdit editor = (FieldEdit)this.getView().getControl("tripexpenseitem");
+           // editor.setMustInput(true);
+            this.getView().setVisible(true, new String[]{"tripexpenseitem"});
+        }
+
+        IDataModel model = this.getModel();
+        String formId = (String)model.getValue("formid");
+        Boolean istripcontrol = (Boolean)model.getValue("istripcontrol");
+        if (ErEntityTypeUtils.isTripReimburseBill(formId) && istripcontrol) {
+            FieldEdit editor = (FieldEdit)this.getView().getControl("triparea");
+            editor.setMustInput(true);
+        }
+
+        FieldEdit tripexchangerateEditor;
+        if (ErEntityTypeUtils.isTripReqBill(formId)) {
+            Object type = model.getValue("triporiamouctrltype");
+            String tripamountctrltype = type == null ? "" : type.toString();
+            if ("1".equals(tripamountctrltype) || "3".equals(tripamountctrltype)) {
+                tripexchangerateEditor = (FieldEdit)this.getView().getControl("triporiamount");
+                tripexchangerateEditor.setMustInput(true);
+            }
+        }
+
+        Boolean iscurrency = (Boolean)model.getValue("iscurrency");
+        if (iscurrency) {
+            FieldEdit editor = (FieldEdit)this.getView().getControl("tripcurrency");
+            editor.setMustInput(true);
+            tripexchangerateEditor = (FieldEdit)this.getView().getControl("tripexchangerate");
+            tripexchangerateEditor.setMustInput(true);
+        }
+
+        this.setRowIndexPageCache();
+        int tripIndex = Integer.parseInt(this.getPageCache().get("tripEntryRowIndex"));
+        if (tripIndex >= 0 && this.getView().getParentView() != null) {
+            IDataModel pModel = this.getView().getParentView().getModel();
+            DynamicObject trip = pModel.getEntryRowEntity("tripentry", tripIndex);
+            if (ErEntityTypeUtils.isTripReimburseBill(formId) && trip != null && trip.getDynamicObjectCollection("entryentity").stream().anyMatch((v) -> {
+                return "2".equals(v.getString("settlementtype"));
+            })) {
+                this.getView().setEnable(false, new String[]{"tripcurrency"});
+            }
+        }
+
+        FormShowParameter formShowParameter = this.getView().getFormShowParameter();
+        Map<String, Object> customParams = formShowParameter.getCustomParams();
+        if (customParams.containsKey("tripEntryRowIndex")) {
+            int tripEntryRowIndex = (Integer)customParams.get("tripEntryRowIndex");
+            boolean isEnable = (Boolean)customParams.get("isEnable");
+            Map<String, IDataEntityProperty> allFields = this.getModel().getDataEntityType().getAllFields();
+            String entityId;
+            if (tripEntryRowIndex != -1) {
+                Iterator var14 = allFields.keySet().iterator();
+
+                while(var14.hasNext()) {
+                    entityId = (String)var14.next();
+                    this.getView().setEnable(isEnable, new String[]{entityId});
+                }
+
+                this.getView().setEnable(isEnable, new String[]{"tirpdate"});
+                this.getView().setVisible(isEnable, new String[]{"btnok", "btncancel"});
+            }
+
+            IFormView view = this.getView();
+            if (parentView != null) {
+                entityId = parentView.getEntityId();
+                Boolean isloan = (Boolean)parentView.getModel().getValue("isloan", tripEntryRowIndex);
+                if ("er_tripreqbill_ssc".equals(entityId) && isloan) {
+                    view.setEnable(Boolean.FALSE, new String[]{"from", "to", "mulwayto", "tirpdate", "vehicle", "vehicles", "entrycostcompany", "triporiamount", "entrycostdept", "std_project"});
+                }
+
+                if (!"er_tripreqbill_ssc".equals(entityId) && (this.readOnly() || this.multiVehicles())) {
+                    view.setVisible(Boolean.TRUE, new String[]{"vehicles"});
+                    view.setVisible(Boolean.FALSE, new String[]{"vehicle"});
+                } else {
+                    view.setVisible(Boolean.FALSE, new String[]{"vehicles"});
+                    view.setVisible(Boolean.TRUE, new String[]{"vehicle"});
+                }
+
+                if (ErEntityTypeUtils.isTripReimburseBill(entityId) && tripEntryRowIndex != -1) {
+                    boolean enable = !((DynamicObject)parentView.getModel().getDataEntity(true).getDynamicObjectCollection("tripentry").get(tripEntryRowIndex)).getDynamicObjectCollection("entryentity").stream().anyMatch((v) -> {
+                        return StringUtils.equals(ItemFrom.InvoiceCloud.getValue(), v.getString("itemfrom")) && StringUtils.isNotBlank(v.getString("invoiceno_entry"));
+                    });
+                    this.getView().setEnable(enable, new String[]{"tripcurrency"});
+                }
+            }
+
+            ErMobWorkFlowOtherViewEditUtils.setWorkFlowEditView(this.getView(), customParams, model, 2);
+            this.setTripDateControl();
+        }
+    }
+
+    protected boolean readOnly() {
+        IFormView parentView = this.getView().getParentView();
+        return parentView != null && !"A".equals(parentView.getModel().getValue("billstatus")) && !"D".equals(parentView.getModel().getValue("billstatus"));
+    }
+
+    protected boolean multiVehicles() {
+        return !this.getVihicleFromStdConfig();
+    }
+
+    private boolean getVihicleFromStdConfig() {
+        return StringUtils.equals(ErStdConfig.get("notMultiVehicles"), "true");
+    }
+
+    private void setRowIndexPageCache() {
+        FormShowParameter formShowParameter = this.getView().getFormShowParameter();
+        Map<String, Object> customParams = formShowParameter.getCustomParams();
+        String tripRowIndex = "-1";
+        if (customParams.get("tripEntryRowIndex") != null) {
+            tripRowIndex = customParams.get("tripEntryRowIndex").toString();
+        }
+
+        this.getPageCache().put("tripEntryRowIndex", tripRowIndex);
+    }
+
+    private void setControlVisible() {
+        FormShowParameter formShowParameter = this.getView().getFormShowParameter();
+        Map<String, Object> customParams = formShowParameter.getCustomParams();
+        if (null != this.getView().getParentView() && null != this.getView().getParentView().getModel() && null != this.getView().getParentView().getModel().getProperty("formid") && null != this.getView().getParentView().getModel().getValue("company")) {
+            Long companyId = null;
+            DynamicObject company = (DynamicObject)this.getView().getParentView().getModel().getValue("company");
+            if (company != null) {
+                companyId = (Long)company.getPkValue();
+            }
+
+            if (companyId != null) {
+                String formId = (String)this.getView().getParentView().getModel().getValue("formid");
+                if (customParams.get("isSsc") != null && "er_tripreqbill".equalsIgnoreCase(formId)) {
+                    this.getView().setVisible(true, new String[]{"triporiaccappamount"});
+                    this.setControlEnable(false);
+                } else if (customParams.get("isSsc") != null && "er_tripreimbursebill".equalsIgnoreCase(formId)) {
+                    this.getView().setVisible(false, new String[]{"triporiaccappamount"});
+                    this.setControlEnable(false);
+                } else {
+                    boolean isEnable = (Boolean)customParams.get("isEnable");
+                    this.getView().setVisible(!isEnable, new String[]{"triporiaccappamount"});
+                    this.setControlEnable(true);
+                }
+
+                Boolean isQueryBudget = (Boolean)customParams.get("isquerybudget");
+                String budgeMsgValue = (String)ErCommonUtils.getEMParameter(companyId, "budgeMsgControl");
+                BudgetCommonUtil.setIsQueryBudgetFlag(this.getPageCache(), isQueryBudget);
+                if ((isQueryBudget == null || !isQueryBudget) && !BudgetCommonUtil.getIsQueryEASBudgetFlag(this.getPageCache())) {
+                    this.getView().setVisible(false, new String[]{"budgetamount"});
+                    this.getView().setVisible(false, new String[]{"budgetmsg"});
+                } else {
+                    BudgetCommonUtil.setBudgeInfoVisible(budgeMsgValue, this.getView());
+                }
+
+            }
+        }
+    }
+
+    private void setControlEnable(Boolean isSsc) {
+        this.getView().setEnable(isSsc, new String[]{"from"});
+        this.getView().setEnable(isSsc, new String[]{"to"});
+        this.getView().setEnable(isSsc, new String[]{"tirpdate"});
+        this.getView().setEnable(isSsc, new String[]{"vehicle"});
+        this.getView().setEnable(isSsc, new String[]{"tripcurrency"});
+        this.getView().setEnable(isSsc, new String[]{"tripexchangerate"});
+        this.getView().setEnable(isSsc, new String[]{"triporiamount"});
+    }
+
+    private Boolean isShowExpenseItem() {
+        IDataModel model = this.getModel();
+        String formId = (String)model.getValue("formid");
+        Boolean isLoan = (Boolean)model.getValue("isloan");
+        Boolean istravelers = (Boolean)model.getValue("istravelers");
+        return (!ErEntityTypeUtils.isTripReqBill(formId) || !isLoan) && (!ErEntityTypeUtils.isTripReqBill(formId) || isLoan || !istravelers) && !BudgetCommonUtil.getIsQueryBudgetFlag(this.getPageCache()) && !BudgetCommonUtil.getIsQueryEASBudgetFlag(this.getPageCache()) && !BudgetCommonUtil.getIsTripReqShowExpenseitemFlag(this.getPageCache()) && !ErEntityTypeUtils.isTripReimburseBill(formId) ? false : true;
+    }
+
+    public void click(EventObject evt) {
+        super.click(evt);
+        IDataModel model = this.getModel();
+        switch (((Control)evt.getSource()).getKey()) {
+            case "btnok":
+                IFormView parentView = this.getView().getParentView();
+                IDataModel parentModel = parentView.getModel();
+                String formId = (String)parentModel.getValue("formid");
+                if (ErEntityTypeUtils.isTripReqBill(formId) && this.amountIsZero()) {
+                    boolean isloan = (Boolean)model.getValue("isloan");
+                    Object type = model.getValue("triporiamouctrltype");
+                    String tripamountctrltype = type == null ? "" : type.toString();
+                    if (isloan && ("2".equals(tripamountctrltype) || "3".equals(tripamountctrltype))) {
+                        this.getView().showTipNotification(ResManager.loadKDString("行程金额必须大于0。", "TripEntryEdit_0", "fi-er-formplugin", new Object[0]));
+                        return;
+                    }
+                }
+
+                if (ErEntityTypeUtils.isTripReqBill(formId)) {
+                    BigDecimal triporiaccappamount = (BigDecimal)model.getValue("triporiaccappamount");
+                    BigDecimal tripOriAmount = (BigDecimal)model.getValue("triporiamount");
+                    if (triporiaccappamount.compareTo(tripOriAmount) > 0) {
+                        this.getView().showErrorNotification(ResManager.loadKDString("核定金额不允许超过借款金额。", "TripEntryEdit_1", "fi-er-formplugin", new Object[0]));
+                        return;
+                    }
+                }
+
+                String billName = parentModel.getDataEntity().getDataEntityType().getName();
+                boolean isTripReimburse = ErEntityTypeUtils.isTripReimburseBill(billName);
+                boolean tripdatecontrol = SystemParamterUtil.isOpenTripDateControl(ErCommonUtils.getPk(parentModel.getValue("company")));
+                if (!(Boolean)parentModel.getValue("istravelers") && !isTripReimburse || !(Boolean)parentModel.getValue("istravelers") && isTripReimburse && tripdatecontrol) {
+                    String error = this.validateTripDate(parentModel);
+                    if (StringUtils.isNotBlank(error)) {
+                        this.getView().showErrorNotification(error);
+                        return;
+                    }
+                }
+
+                Object from = model.getValue("from");
+                Object to = model.getValue("to");
+                String cityMS = "";
+                if (from.equals(to)) {
+                    cityMS = ResManager.loadKDString("出发地与目的地相同,确认继续?", "TripEntryEdit_2", "fi-er-formplugin", new Object[0]);
+                }
+
+                String currencyMs = "";
+                int tripEntryRowIndex = Integer.parseInt(this.getPageCache().get("tripEntryRowIndex"));
+                if (tripEntryRowIndex == 0 || parentModel.getEntryRowCount("tripentry") == 0) {
+                    Object costCompany = model.getValue("entrycostcompany");
+                    Object company = parentModel.getValue("company");
+                    Long newCurrency = BaseCurrencyServiceHelper.getBaseCurrencyId(company, costCompany);
+                    Long oldCurrency = ErCommonUtils.getPk(parentModel.getValue("currency"));
+                    if (newCurrency == null) {
+                        this.getView().showErrorNotification(ResManager.loadKDString("未设置本位币,请联系管理员设置本位币。", "TripEntryEdit_7", "fi-er-formplugin", new Object[0]));
+                        return;
+                    }
+
+                    if (!newCurrency.equals(oldCurrency)) {
+                        currencyMs = ResManager.loadKDString("切换费用承担公司导致本位币变化,将清空填写分录信息,是否继续?", "TripEntryEdit_3", "fi-er-formplugin", new Object[0]);
+                    }
+                }
+
+                if (StringUtils.isNotBlank(cityMS) || StringUtils.isNotBlank(currencyMs)) {
+                    String callBackId = "samecity";
+                    if (StringUtils.isNotBlank(currencyMs)) {
+                        callBackId = "changecurrency";
+                    }
+
+                    this.getView().showConfirm(cityMS + "\r\n" + currencyMs, MessageBoxOptions.OKCancel, new ConfirmCallBackListener(callBackId, this));
+                    return;
+                }
+
+                this.clickOk(model, parentView, parentModel, formId);
+        }
+
+    }
+
+    private boolean amountIsZero() {
+        BigDecimal triporiamount = (BigDecimal)this.getModel().getValue("triporiamount");
+        BigDecimal tripAmount = (BigDecimal)this.getModel().getValue("tripamount");
+        return tripAmount.compareTo(BigDecimal.ZERO) <= 0 || triporiamount.compareTo(BigDecimal.ZERO) <= 0;
+    }
+
+    protected String validateTripDate(IDataModel parentModel) {
+        DynamicObjectCollection parentTripEntry = parentModel.getEntryEntity("tripentry");
+        int parentSize = parentTripEntry.size();
+        Map<Integer, Object> sortMap = new TreeMap();
+        if (parentSize > 0) {
+            parentTripEntry.forEach((entity) -> {
+                if (!sortMap.containsKey(entity.getInt("seq"))) {
+                    sortMap.put(entity.getInt("seq") - 1, entity);
+                }
+
+            });
+        }
+
+        Date startDate = null;
+        Date endDate = null;
+        DynamicObject curTripEntry = this.getModel().getDataEntity();
+        int index = Integer.parseInt(this.getPageCache().get("tripEntryRowIndex"));
+        if (index == -1) {
+            index = parentSize;
+        }
+
+        DynamicObject lastTripEntry = (DynamicObject)sortMap.get(index - 1);
+        if (lastTripEntry != null) {
+            startDate = curTripEntry.getDate("startdate");
+            endDate = lastTripEntry.getDate("enddate");
+            if (startDate != null && endDate != null && startDate.before(endDate)) {
+                return String.format(ResManager.loadKDString("第%1$s程行程期间不能早于第%2$s程行程期间。", "TripEntryEdit_9", "fi-er-formplugin", new Object[0]), index + 1, index);
+            }
+        }
+
+        DynamicObject nextTripEntry = (DynamicObject)sortMap.get(index + 1);
+        if (nextTripEntry != null) {
+            endDate = curTripEntry.getDate("enddate");
+            startDate = nextTripEntry.getDate("startdate");
+            if (startDate != null && endDate != null && startDate.before(endDate)) {
+                return String.format(ResManager.loadKDString("第%1$s程行程期间不能晚于第%2$s程行程期间。", "TripEntryEdit_10", "fi-er-formplugin", new Object[0]), index + 1, index + 2);
+            }
+        }
+
+        return null;
+    }
+
+    public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
+        super.confirmCallBack(messageBoxClosedEvent);
+        String callBackId = messageBoxClosedEvent.getCallBackId();
+        IFormView parentView = this.getView().getParentView();
+        IDataModel parentModel = parentView.getModel();
+        String formId = (String)parentModel.getValue("formid");
+        if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
+            this.clickOk(this.getModel(), parentView, parentModel, formId);
+        }
+
+    }
+
+    protected void clickOk(IDataModel model, IFormView parentView, IDataModel parentModel, String formId) {
+        this.getView().setEnable(false, new String[]{"btnok"});
+        DataEntityPropertyCollection tripEntryProps = parentModel.getDataEntity(true).getDynamicObjectCollection("tripentry").getDynamicObjectType().getProperties();
+        int tripEntryRowIndex = Integer.parseInt(this.getPageCache().get("tripEntryRowIndex"));
+        DataEntityPropertyCollection properties = model.getDataEntityType().getProperties();
+        Map<String, Object> returnParam = new HashMap();
+        DynamicObjectCollection tripEntry = parentModel.getDataEntity().getDynamicObjectCollection("tripentry");
+        Long oldCurrncy = ErCommonUtils.getPk(parentModel.getValue("currency"));
+        IDataEntityProperty tripamount = (IDataEntityProperty)properties.get("tripamount");
+        IDataEntityProperty triporiamount = (IDataEntityProperty)properties.get("triporiamount");
+        IDataEntityProperty property;
+        int i;
+        if (tripamount != null && triporiamount != null) {
+            IDataEntityProperty first = (IDataEntityProperty)properties.get(0);
+            property = (IDataEntityProperty)properties.get(1);
+            i = properties.indexOf(tripamount);
+            int triporiamountIndex = properties.indexOf(triporiamount);
+            properties.set(0, tripamount);
+            properties.set(1, triporiamount);
+            properties.set(i, first);
+            properties.set(triporiamountIndex, property);
+        }
+
+        int entrySize;
+        int rowIndex;
+        if (tripEntryRowIndex == -1) {
+            if (StringUtils.isNotEmpty(formId)) {
+                entrySize = ErCommonUtils.getExpenseAssumeShowTypes(ErCommonUtils.getPk(parentModel.getValue("company")));
+                if (entrySize != 1 && parentModel.getDataEntity(true).getDynamicObjectCollection("tripentry").isEmpty()) {
+                    parentModel.beginInit();
+                    parentModel.setValue("costdept", model.getValue("entrycostdept"));
+                    parentModel.endInit();
+                    parentModel.setValue("costcompany", model.getValue("entrycostcompany"));
+                    this.getView().getParentView().updateView("costdept");
+                    if (oldCurrncy != ErCommonUtils.getPk(parentModel.getValue("currency"))) {
+                        parentView.updateView();
+                        this.getView().sendFormAction(parentView);
+                        this.getView().close();
+                        return;
+                    }
+
+                    if (!(Boolean)parentModel.getValue("iscurrency")) {
+                        model.setValue("tripcurrency", parentModel.getValue("currency"));
+                    }
+                }
+
+                rowIndex = parentModel.createNewEntryRow("tripentry");
+                parentModel.setEntryCurrentRowIndex("tripentry", rowIndex);
+                Iterator var23 = properties.iterator();
+
+                while(var23.hasNext()) {
+                     property = (IDataEntityProperty)var23.next();
+                    if (tripEntry.size() > 0) {
+                        String propertyName = property.getName();
+                        if (tripEntryProps.get(propertyName) != null) {
+                            if ("vehicles".equalsIgnoreCase(propertyName) && ErEntityTypeUtils.isTripReimburseBill(formId)) {
+                                String vehicles = (String)model.getValue(propertyName);
+                                CoreBaseBillServiceHelper.mulTripVehicle(parentModel, vehicles, rowIndex);
+                            }
+
+                            if ("tripexchangerate".equals(propertyName) && properties.containsKey("tripcurrency")) {
+                                parentModel.setValue("tripcurrency", ErCommonUtils.getObjectValue(model.getValue("tripcurrency")), rowIndex);
+                            }
+
+                            parentModel.setValue(propertyName, ErCommonUtils.getObjectValue(model.getValue(propertyName)), rowIndex);
+                        }
+                    }
+                }
+
+                if (tripEntry.size() > 0 && ErEntityTypeUtils.isTripReimburseBill(formId)) {
+                    CoreBaseBillServiceHelper.addDefaultTripExpenseEntry(parentModel, rowIndex);
+                    this.setExpenseEntryValue(parentModel, model, rowIndex);
+                }
+
+                returnParam.put("currentTripEntryIndex", rowIndex);
+            }
+
+            returnParam.put("isUpdate", false);
+        } else if (parentModel.getEntryEntity("tripentry").size() > 0) {
+            if (tripEntryRowIndex == 0) {
+                parentModel.beginInit();
+                parentModel.setValue("costdept", model.getValue("entrycostdept"));
+                parentModel.endInit();
+                Object std_entrycostcenter = model.getValue("std_entrycostcenter");
+                if (std_entrycostcenter != null) {
+                    parentModel.setValue("std_costcenter", std_entrycostcenter);
+                }
+
+                parentModel.setValue("costcompany", model.getValue("entrycostcompany"));
+                this.getView().getParentView().updateView("costdept");
+                if (oldCurrncy != ErCommonUtils.getPk(parentModel.getValue("currency"))) {
+                    parentView.updateView();
+                    this.getView().sendFormAction(parentView);
+                    this.getView().close();
+                    return;
+                }
+            }
+
+            Iterator var21 = properties.iterator();
+
+            while(var21.hasNext()) {
+                property = (IDataEntityProperty)var21.next();
+                String propertyName = property.getName();
+                if (parentModel.getEntryEntity("tripentry").size() > 0 && tripEntryProps.get(propertyName) != null) {
+                    if ("tripexchangerate".equals(propertyName) && properties.containsKey("tripcurrency")) {
+                        parentModel.setValue("tripcurrency", ErCommonUtils.getObjectValue(model.getValue("tripcurrency")), tripEntryRowIndex);
+                    }
+
+                    parentModel.setValue(propertyName, ErCommonUtils.getObjectValue(model.getValue(propertyName)), tripEntryRowIndex);
+                }
+            }
+
+            if (ErEntityTypeUtils.isTripReimburseBill(formId) && parentModel.getEntryEntity("tripentry").size() > 0) {
+                this.setExpenseEntryValue(parentModel, model, tripEntryRowIndex);
+            }
+
+            if (parentModel.getEntryEntity("tripentry").size() > 0) {
+                entrySize = parentModel.getEntryRowCount("entryentity");
+                rowIndex = (Integer)parentModel.getValue("tripday", tripEntryRowIndex);
+
+                for(i = 0; i < entrySize; ++i) {
+                    parentModel.setValue("daycount", rowIndex, i, parentModel.getEntryCurrentRowIndex("tripentry"));
+                }
+
+                returnParam.put("isUpdate", true);
+                returnParam.put("currentTripEntryIndex", parentModel.getEntryCurrentRowIndex("tripentry"));
+            }
+        }
+
+        returnParam.put("isOK", true);
+        returnParam.put("startDate", model.getValue("startDate"));
+        returnParam.put("endDate", model.getValue("endDate"));
+        this.getView().returnDataToParent(returnParam);
+        this.getView().sendFormAction(parentView);
+        this.getView().close();
+    }
+
+    private void setExpenseEntryValue(IDataModel parentModel, IDataModel dataModel, int rowIndex) {
+        DynamicObject tripEntry = parentModel.getEntryRowEntity("tripentry", rowIndex);
+        int tripDay = tripEntry.getInt("tripday");
+        DynamicObjectCollection tripTravlers = tripEntry.getDynamicObjectCollection("travelers");
+        parentModel.setValue("tripentryarea", ErCommonUtils.getPk(dataModel.getValue("triparea")), rowIndex);
+        DynamicObjectCollection expenseEntry = tripEntry.getDynamicObjectCollection("entryentity");
+        if (expenseEntry != null && !expenseEntry.isEmpty()) {
+            for(int i = 0; i < expenseEntry.size(); ++i) {
+                parentModel.setValue("triparea", ErCommonUtils.getPk(dataModel.getValue("tripArea")), i, rowIndex);
+                parentModel.setValue("daycount", tripDay, i, rowIndex);
+                if (!SettlementTypeEnum.MONTH_SETTLEMENT.getCode().equals(parentModel.getValue("settlementtype", i, rowIndex))) {
+                    parentModel.setValue("trip2travelers", tripTravlers, i, rowIndex);
+                    parentModel.setValue("trip2travelerscount", tripTravlers == null ? 0 : tripTravlers.size(), i, rowIndex);
+                }
+            }
+        }
+
+    }
+
+    public void propertyChanged(PropertyChangedArgs e) {
+        super.propertyChanged(e);
+        ChangeData[] valueSet = e.getChangeSet();
+        Object propValue = valueSet[0].getNewValue();
+        String propName = e.getProperty().getName();
+        IDataModel model = this.getModel();
+        String quoteType;
+        BigDecimal tripOriAmount;
+        BigDecimal exchangeRate;
+        int currencyPrecision;
+        BigDecimal tripAmount;
+        BigDecimal triporiaccappamount;
+        BigDecimal tripaccappamount;
+        Date startDate;
+        Date endDate;
+        Long tripDays;
+        switch (propName) {
+            case "tripcurrency":
+                if (propValue == null) {
+                    model.setValue("tripcurrency", ErCommonUtils.getPk(valueSet[0].getOldValue()));
+                }
+
+                this.showExchangeRate(true);
+                BigDecimal tripEntryAmount = (BigDecimal)this.getModel().getValue("triporiamount");
+                this.getModel().setValue("triporiamount", BigDecimal.ZERO);
+                this.getModel().setValue("triporiamount", tripEntryAmount);
+                break;
+            case "triporiamount":
+                quoteType = this.getModel().getProperty("tripquotetype") == null ? "0" : (String)ObjectUtils.defaultIfNull((String)this.getModel().getValue("tripquotetype"), "0");
+                tripOriAmount = (BigDecimal)propValue;
+                exchangeRate = (BigDecimal)ObjectUtils.defaultIfNull((BigDecimal)model.getValue("tripexchangerate"), BigDecimal.ONE);
+                currencyPrecision = AmountUtils.getCurrencyPrecision(model, "currency");
+                tripAmount = AmountUtils.getCurrencyAmount(tripOriAmount, exchangeRate, currencyPrecision, quoteType);
+                model.setValue("tripamount", tripAmount);
+                model.setValue("triporiaccappamount", tripOriAmount);
+                model.setValue("tripaccappamount", tripAmount);
+                break;
+            case "triporiaccappamount":
+                quoteType = this.getModel().getProperty("tripquotetype") == null ? "0" : (String)ObjectUtils.defaultIfNull((String)this.getModel().getValue("tripquotetype"), "0");
+                triporiaccappamount = (BigDecimal)propValue;
+                BigDecimal triporiamount = (BigDecimal)model.getValue("triporiamount");
+                if (triporiaccappamount.compareTo(triporiamount) > 0) {
+                    triporiaccappamount = triporiamount;
+                    model.setValue("triporiaccappamount", triporiamount);
+                }
+
+                currencyPrecision = AmountUtils.getCurrencyPrecision(model, "currency");
+                BigDecimal changeRate = (BigDecimal)ObjectUtils.defaultIfNull((BigDecimal)model.getValue("tripexchangerate"), BigDecimal.ONE);
+                if (changeRate == null) {
+                    changeRate = BigDecimal.ONE;
+                }
+
+                tripaccappamount = AmountUtils.getCurrencyAmount(triporiaccappamount, changeRate, currencyPrecision, quoteType);
+                model.setValue("tripaccappamount", tripaccappamount);
+                break;
+            case "tripexchangerate":
+                quoteType = this.getModel().getProperty("tripquotetype") == null ? "0" : (String)ObjectUtils.defaultIfNull((String)this.getModel().getValue("tripquotetype"), "0");
+                exchangeRate = (BigDecimal)ObjectUtils.defaultIfNull((BigDecimal)propValue, BigDecimal.ONE);
+                tripOriAmount = (BigDecimal)model.getValue("triporiamount");
+                triporiaccappamount = (BigDecimal)model.getValue("triporiaccappamount");
+                currencyPrecision = AmountUtils.getCurrencyPrecision(model, "currency");
+                tripAmount = AmountUtils.getCurrencyAmount(tripOriAmount, exchangeRate, currencyPrecision, quoteType);
+                tripaccappamount = AmountUtils.getCurrencyAmount(triporiaccappamount, exchangeRate, currencyPrecision, quoteType);
+                model.setValue("tripamount", tripAmount);
+                model.setValue("tripaccappamount", tripaccappamount);
+                break;
+            case "startdate":
+                startDate = (Date)propValue;
+                endDate = (Date)model.getValue("enddate");
+                tripDays = CommonServiceHelper.calcDays(startDate, endDate);
+                model.setValue("tripday", tripDays);
+                if (startDate != null && model.getValue("triphappendate") == null) {
+                    model.setValue("triphappendate", startDate);
+                }
+                break;
+            case "enddate":
+                endDate = (Date)propValue;
+                startDate = (Date)model.getValue("startdate");
+                tripDays = CommonServiceHelper.calcDays(startDate, endDate);
+                model.setValue("tripday", tripDays);
+                break;
+            case "to":
+                DynamicObject to = (DynamicObject)propValue;
+                if (to != null) {
+                    IDataModel parentModel = this.getView().getParentView().getModel();
+                    DynamicObject company = (DynamicObject)parentModel.getValue("company");
+                    Long toCityId = (Long)to.getPkValue();
+                    Long companyId = (Long)company.getPkValue();
+                    MainEntityType dataEntityType = model.getDataEntityType();
+                    String orgProp = ((BasedataProp)dataEntityType.getProperty("triparea")).getOrgProp();
+                    ErCommonUtils.getPk(parentModel.getValue(orgProp));
+                    IErTripStdService stdService = new ErTripStdServiceImp();
+                    DynamicObject tripArea = stdService.getTripAreaByCityIdAndCompanyId(toCityId, ErCommonUtils.getPk(parentModel.getValue(orgProp)));
+                    if (tripArea != null) {
+                        model.setValue("triparea", tripArea.getPkValue());
+                    } else {
+                        model.setValue("triparea", (Object)null);
+                    }
+                }
+                break;
+            case "entrycostdept":
+                if (propValue == null) {
+                    propValue = valueSet[0].getOldValue();
+                    this.getModel().setValue("entrycostdept", ErCommonUtils.getPk(propValue));
+                }
+
+                String costDeptShowType = CommonServiceHelper.getBillCostOrgShowType(this.getView());
+                if (!StringUtils.equals("3", costDeptShowType)) {
+                    this.costDeptChange((DynamicObject)propValue);
+                }
+
+                DynamicObject expenseItem = (DynamicObject)model.getValue("tripexpenseitem");
+                log.info("当前 costDeptShowType" + costDeptShowType);
+                log.info("当前 getPageCache" + BudgetCommonUtil.getIsQueryBudgetFlag(this.getPageCache()));
+                if (expenseItem != null && "2".equals(costDeptShowType) && BudgetCommonUtil.getIsQueryBudgetFlag(this.getPageCache())) {
+                    BudgetCommonUtil.buildBudgetAmountField(this.getView(), 0);
+                }
+
+                this.checkExpenseItem(propValue, model);
+                break;
+            case "entrycostcompany":
+                if (propValue == null && valueSet[0].getOldValue() != null) {
+                    this.getModel().setValue("entrycostcompany", valueSet[0].getOldValue());
+                }
+                break;
+            case "tripexpenseitem":
+                if (BudgetCommonUtil.getIsQueryBudgetFlag(this.getPageCache()) && propValue != null) {
+                    BudgetCommonUtil.buildBudgetAmountField(this.getView(), 0);
+                }
+                break;
+            case "std_project":
+                if (BudgetCommonUtil.getIsQueryBudgetFlag(this.getPageCache())) {
+                    BudgetCommonUtil.buildBudgetAmountField(this.getView(), 0);
+                }
+                break;
+            case "vehicle":
+                if (this.getVihicleFromStdConfig()) {
+                    this.getModel().setValue("vehicles", propValue);
+                }
+                break;
+            case "std_entrycostcenter":
+                if (propValue != null && propValue != "") {
+                    ErCostCenterUtil.costCenterChangeForTripEdit(this.getView(), propValue);
+                }
+        }
+
+    }
+
+    protected void checkExpenseItem(Object propValue, IDataModel model) {
+        if (propValue != null) {
+            Set<Long> exceptRelExpItems = ExpenseItemServiceHelper.getNotRelOrgExpItemIds((Long)((DynamicObject)propValue).getPkValue());
+            DynamicObject tripExpenseItem = (DynamicObject)this.getModel().getValue("tripexpenseitem");
+            if (tripExpenseItem != null && exceptRelExpItems.contains(tripExpenseItem.getLong("id"))) {
+                model.setValue("tripexpenseitem", (Object)null);
+            }
+        }
+
+    }
+
+    protected void costDeptChange(DynamicObject entryCostDept) {
+        if (entryCostDept != null) {
+            DynamicObject company = (DynamicObject)this.getModel().getValue("company");
+            DynamicObject costCompany = (DynamicObject)this.getModel().getValue("entrycostcompany");
+            CostDeptF7ChangePram costDeptF7ChangePram = new CostDeptF7ChangePram(Boolean.TRUE, entryCostDept, costCompany, company);
+            Long costCompanyId = CoreBaseBillServiceHelper.getAccountOrgId(costDeptF7ChangePram);
+            this.getModel().setValue("entrycostcompany", costCompanyId);
+        }
+    }
+
+    private void showExchangeRate(boolean refreshExchangeRate) {
+        IDataModel model = this.getModel();
+        IDataModel parentModel = this.getView().getParentView().getModel();
+        DynamicObject tripCurrency = (DynamicObject)model.getValue("tripcurrency");
+        DynamicObject currency = (DynamicObject)parentModel.getValue("currency");
+        boolean showExchangeRate = tripCurrency != null && currency != null && !tripCurrency.getPkValue().equals(currency.getPkValue());
+        this.getView().setVisible(showExchangeRate, new String[]{"tripexchangerate", "tripamount"});
+        String quoteType = "0";
+        if (refreshExchangeRate) {
+            BigDecimal exchangeRate = BigDecimal.ONE;
+            if (tripCurrency != null && currency != null) {
+                long sourceCurrencyId = tripCurrency.getLong("id");
+                long targetCurrencyId = currency.getLong("id");
+                long companyId = (Long)parentModel.getValue("company_Id");
+                Map<String, Object> exchangeRateAndQuoteType = CommonServiceHelper.getExchangeRateFromSysParams(companyId, parentModel.getValue("costcompany"), sourceCurrencyId, targetCurrencyId, model);
+                quoteType = (String)ObjectUtils.defaultIfNull((String)exchangeRateAndQuoteType.get("quoteType"), "0");
+                exchangeRate = (BigDecimal)ObjectUtils.defaultIfNull((BigDecimal)exchangeRateAndQuoteType.get("exchangeRate"), BigDecimal.ONE);
+            }
+
+            if (this.getModel().getProperty("tripquotetype") != null) {
+                this.getModel().setValue("tripquotetype", quoteType);
+            }
+
+            this.getModel().setValue("tripexchangerate", exchangeRate);
+        }
+
+    }
+
+    private void setTripDateControl() {
+        IDataModel pModel = this.getView().getParentView().getModel();
+        DateRangeEdit tripDate = (DateRangeEdit)this.getControl("tirpdate");
+        String entryName = pModel.getDataEntityType().getName();
+        LocalDate now = LocalDate.now();
+        Long companyId = ErCommonUtils.getPk(pModel.getValue("company"));
+        if (ErEntityTypeUtils.isTripReqBill(entryName) && StringUtils.equals("1", ErCommonUtils.getTripDateSelectRange(companyId))) {
+            tripDate.setMinDate(ErCommonUtils.getDateFromLocalDate(now));
+        } else {
+            if (ErEntityTypeUtils.isTripReimburseBill(entryName) && StringUtils.equals("0", SystemParamterUtil.getTripReimDateSelectRange(companyId))) {
+                tripDate.setMaxDate(ErCommonUtils.getDateFromLocalDate(now));
+            }
+
+            if (pModel.getProperty("isopentripstd") != null) {
+                Object company = pModel.getValue("company");
+                if ((!(Boolean)pModel.getValue("istravelers") || (Boolean)pModel.getValue("travelerssamestd")) && SystemParamterUtil.isOpenTripDateControl(ErCommonUtils.getPk(company)) && (Boolean)pModel.getValue("isopentripstd") && pModel.getEntryRowCount("tripentry") != 0) {
+                    int currentIndex = Integer.parseInt(this.getPageCache().get("tripEntryRowIndex"));
+                    currentIndex = currentIndex == -1 ? pModel.getEntryRowCount("tripentry") - 1 : currentIndex - 1;
+                    DynamicObjectCollection tripEntry = pModel.getDataEntity(true).getDynamicObjectCollection("tripentry");
+                    if (currentIndex >= 0 && tripEntry.size() != 0) {
+                        DynamicObject preRow = (DynamicObject)tripEntry.get(currentIndex);
+                        Date minDate = preRow.getDate("enddate");
+                        tripDate.setMinDate(minDate);
+                    }
+                }
+            }
+        }
+    }
+}