|
@@ -0,0 +1,556 @@
|
|
|
+package kd.fi.er.formplugin.mobile;
|
|
|
+
|
|
|
+import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.EventObject;
|
|
|
+import java.util.Iterator;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.Objects;
|
|
|
+import java.util.TreeMap;
|
|
|
+import kd.bos.bill.AbstractMobBillPlugIn;
|
|
|
+import kd.bos.dataentity.entity.DynamicObject;
|
|
|
+import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
+import kd.bos.dataentity.resource.ResManager;
|
|
|
+import kd.bos.entity.cache.RedisModelCache;
|
|
|
+import kd.bos.entity.datamodel.IDataModel;
|
|
|
+import kd.bos.entity.datamodel.IRefrencedataProvider;
|
|
|
+import kd.bos.entity.datamodel.ListSelectedRowCollection;
|
|
|
+import kd.bos.entity.datamodel.events.AfterDeleteRowEventArgs;
|
|
|
+import kd.bos.entity.datamodel.events.ChangeData;
|
|
|
+import kd.bos.entity.datamodel.events.PropertyChangedArgs;
|
|
|
+import kd.bos.form.ConfirmCallBackListener;
|
|
|
+import kd.bos.form.FormShowParameter;
|
|
|
+import kd.bos.form.IFormView;
|
|
|
+import kd.bos.form.IMobileView;
|
|
|
+import kd.bos.form.MessageBoxOptions;
|
|
|
+import kd.bos.form.MessageBoxResult;
|
|
|
+import kd.bos.form.cardentry.CardEntry;
|
|
|
+import kd.bos.form.control.Control;
|
|
|
+import kd.bos.form.control.events.ClickListener;
|
|
|
+import kd.bos.form.events.AfterDoOperationEventArgs;
|
|
|
+import kd.bos.form.events.BeforeClosedEvent;
|
|
|
+import kd.bos.form.events.ClosedCallBackEvent;
|
|
|
+import kd.bos.form.events.MessageBoxClosedEvent;
|
|
|
+import kd.bos.form.field.DateTimeEdit;
|
|
|
+import kd.bos.form.field.FieldEdit;
|
|
|
+import kd.bos.form.field.MulBasedataEdit;
|
|
|
+import kd.fi.er.business.servicehelper.CommonServiceHelper;
|
|
|
+import kd.fi.er.business.utils.AmountUtils;
|
|
|
+import kd.fi.er.business.utils.ErCommonUtils;
|
|
|
+import kd.fi.er.business.utils.ErStdConfig;
|
|
|
+import kd.fi.er.business.utils.SystemParamterUtil;
|
|
|
+import kd.fi.er.business.utils.TripBillTravelerUtils;
|
|
|
+import kd.fi.er.common.ShowPageUtils;
|
|
|
+import kd.fi.er.formplugin.budget.BudgetCommonUtil;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.apache.commons.lang3.ObjectUtils;
|
|
|
+
|
|
|
+public class TripReqSectionEx extends AbstractMobBillPlugIn implements ClickListener {
|
|
|
+ public TripReqSectionEx() {
|
|
|
+ }
|
|
|
+
|
|
|
+ public void registerListener(EventObject e) {
|
|
|
+ this.addClickListeners(new String[]{"btn_save", "btn_addsection"});
|
|
|
+ IFormView view = this.getView();
|
|
|
+ MulBasedataEdit travelersF7 = (MulBasedataEdit)this.getControl("travelers");
|
|
|
+ DynamicObject company = (DynamicObject)view.getParentView().getModel().getValue("company");
|
|
|
+ DynamicObject org = (DynamicObject)view.getParentView().getModel().getValue("org");
|
|
|
+ TripBillTravelerUtils.getF7FilterInfo(company, org, travelersF7);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void afterCreateNewData(EventObject e) {
|
|
|
+ super.afterCreateNewData(e);
|
|
|
+ FormShowParameter param = this.getView().getFormShowParameter();
|
|
|
+ IDataModel model = this.getModel();
|
|
|
+ IFormView parentView = this.getView().getParentView();
|
|
|
+ IDataModel parentModel = parentView.getModel();
|
|
|
+ model.setValue("currency", ErCommonUtils.getPk(parentModel.getValue("currency")));
|
|
|
+ model.setValue("billstatus", parentModel.getValue("billstatus"));
|
|
|
+ CoreBaseBillEdit coreBaseBillEdit = new CoreBaseBillEdit();
|
|
|
+ Boolean isCurrency = coreBaseBillEdit.refreshIsCurrency(parentModel);
|
|
|
+ model.setValue("iscurrency", isCurrency);
|
|
|
+ model.setValue("istravelers", parentModel.getValue("istravelers"));
|
|
|
+ model.setValue("isloan", parentModel.getValue("isloan"));
|
|
|
+ model.setValue("ismulwayto", parentModel.getValue("ismulwayto"));
|
|
|
+ model.setValue("bizdate", parentModel.getValue("bizdate"));
|
|
|
+ CommonServiceHelper.setMulWayToVisible(parentModel, this.getView());
|
|
|
+ if (param.getCustomParam("entryedit") != null) {
|
|
|
+ this.getView().setVisible(false, new String[]{"btn_addsection"});
|
|
|
+ int index = (Integer)param.getCustomParam("index");
|
|
|
+ DynamicObject dobject = parentModel.getEntryRowEntity("tripentry", index);
|
|
|
+ DynamicObjectCollection dc = model.getEntryEntity("tripentry");
|
|
|
+ dc.add(dobject);
|
|
|
+ model.setValue("index", index + 1, 0);
|
|
|
+ } else {
|
|
|
+ Long cityId = ((IMobileView)this.getView()).getCurrentCityId();
|
|
|
+ int rowIndex = model.createNewEntryRow("tripentry");
|
|
|
+ Object to = param.getCustomParam("to");
|
|
|
+ Object date = param.getCustomParam("enddate");
|
|
|
+ if (null != to) {
|
|
|
+ cityId = Long.valueOf(to.toString());
|
|
|
+ }
|
|
|
+
|
|
|
+ if (null != date) {
|
|
|
+ model.setValue("startdate", date, 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ model.setValue("from", cityId, 0);
|
|
|
+ int count = parentModel.getEntryRowCount("tripentry");
|
|
|
+ model.setValue("index", count + 1, rowIndex);
|
|
|
+ this.initTripEntryDefaultData(model, rowIndex);
|
|
|
+ Object currencyId = ErCommonUtils.getPk(parentModel.getValue("currency"));
|
|
|
+ model.setValue("rcurrency", currencyId, rowIndex);
|
|
|
+ model.setValue("tripcurrency", currencyId, rowIndex);
|
|
|
+ Long[] applierIds = new Long[]{ErCommonUtils.getPk(parentModel.getValue("applier"))};
|
|
|
+ model.setValue("travelers", applierIds, rowIndex);
|
|
|
+ model.setValue("entrycostdept", parentModel.getValue("costdept"), rowIndex);
|
|
|
+ model.setValue("entrycostcompany", parentModel.getValue("costcompany"), rowIndex);
|
|
|
+ model.setValue("std_entrycostcenter", parentModel.getValue("std_costcenter"), rowIndex);
|
|
|
+ model.setValue("company", parentModel.getValue("company"), rowIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void afterBindData(EventObject e) {
|
|
|
+ super.afterBindData(e);
|
|
|
+ FormShowParameter formShowParameter = this.getView().getFormShowParameter();
|
|
|
+ Map<String, Object> customParams = formShowParameter.getCustomParams();
|
|
|
+ boolean isQueryBudget = (Boolean)customParams.get("isquerybudget");
|
|
|
+ BudgetCommonUtil.setIsQueryBudgetFlag(this.getPageCache(), isQueryBudget);
|
|
|
+ Long companyId = ErCommonUtils.getPk(this.getView().getParentView().getModel().getValue("company"));
|
|
|
+ this.setTripExpenseItemShow(companyId, 0);
|
|
|
+ this.setBudgetShow(0);
|
|
|
+ this.setVehicleVisible();
|
|
|
+ if (Objects.nonNull(this.getModel().getDataEntityType().getProperty("costorgusemode"))) {
|
|
|
+ this.getModel().setValue("costorgusemode", this.getView().getParentView().getModel().getValue("costorgusemode"));
|
|
|
+ }
|
|
|
+
|
|
|
+ ShowPageUtils.setMobilePageFormStatus(this.getView());
|
|
|
+ if (StringUtils.equals("1", ErCommonUtils.getTripDateSelectRange(companyId))) {
|
|
|
+ DateTimeEdit tripDate = (DateTimeEdit)this.getControl("startdate");
|
|
|
+ tripDate.setMinDate(ErCommonUtils.getDateFromLocalDate(LocalDate.now()));
|
|
|
+ tripDate = (DateTimeEdit)this.getControl("enddate");
|
|
|
+ tripDate.setMinDate(ErCommonUtils.getDateFromLocalDate(LocalDate.now()));
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setVehicleVisible() {
|
|
|
+ String vihicleKey = null;
|
|
|
+ if (!this.readOnly() && this.getVihicleFromStdConfig()) {
|
|
|
+ vihicleKey = "vehicles";
|
|
|
+ } else {
|
|
|
+ vihicleKey = "vehicle";
|
|
|
+ }
|
|
|
+
|
|
|
+ CardEntry tripentry = (CardEntry)this.getControl("tripentry");
|
|
|
+ int tripentryLen = this.getModel().getEntryRowCount("tripentry");
|
|
|
+
|
|
|
+ for(int i = 0; i < tripentryLen; ++i) {
|
|
|
+ tripentry.setChildVisible(false, i, new String[]{vihicleKey});
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ 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 getVihicleFromStdConfig() {
|
|
|
+ return StringUtils.equals(ErStdConfig.get("notMultiVehicles"), "true");
|
|
|
+ }
|
|
|
+
|
|
|
+ public void propertyChanged(PropertyChangedArgs e) {
|
|
|
+ super.propertyChanged(e);
|
|
|
+ IDataModel model = this.getModel();
|
|
|
+ String propName = e.getProperty().getName();
|
|
|
+ ChangeData[] valueSet = e.getChangeSet();
|
|
|
+ int rowIndex = valueSet[0].getRowIndex();
|
|
|
+ Object propValue = valueSet[0].getNewValue();
|
|
|
+ BigDecimal tripOriAmount;
|
|
|
+ BigDecimal exchangeRate;
|
|
|
+ String tripQuoteType;
|
|
|
+ BigDecimal tripAmount;
|
|
|
+ Date startDate;
|
|
|
+ Date endDate;
|
|
|
+ Long tripDays;
|
|
|
+ switch (propName) {
|
|
|
+ case "triporiamount":
|
|
|
+ tripOriAmount = (BigDecimal)propValue;
|
|
|
+ exchangeRate = (BigDecimal)ObjectUtils.defaultIfNull((BigDecimal)model.getValue("tripexchangerate", rowIndex), BigDecimal.ONE);
|
|
|
+ tripQuoteType = (String)ObjectUtils.defaultIfNull((String)model.getValue("tripquotetype", rowIndex), "0");
|
|
|
+ tripAmount = AmountUtils.getCurrencyAmount(tripOriAmount, exchangeRate, AmountUtils.getCurrencyPrecision(model, "currency"), tripQuoteType);
|
|
|
+ model.setValue("tripamount", tripAmount, rowIndex);
|
|
|
+ break;
|
|
|
+ case "tripcurrency":
|
|
|
+ IDataModel parentModel = this.getView().getParentView().getModel();
|
|
|
+ DynamicObject tripCurrency = (DynamicObject)propValue;
|
|
|
+ DynamicObject currency = (DynamicObject)parentModel.getValue("currency");
|
|
|
+ if (tripCurrency != null && currency != null) {
|
|
|
+ long sourceCurrencyId = tripCurrency.getLong("id");
|
|
|
+ long targetCurrencyId = currency.getLong("id");
|
|
|
+ long companyId = (Long)parentModel.getValue("company_Id");
|
|
|
+ Object costCompany = parentModel.getValue("costcompany");
|
|
|
+ Object bizdate = parentModel.getValue("bizdate");
|
|
|
+ Map<String, Object> exchangeMap = CommonServiceHelper.getExchangeRateFromSysParams(companyId, costCompany, sourceCurrencyId, targetCurrencyId, bizdate);
|
|
|
+ String quoteType = (String)ObjectUtils.defaultIfNull((String)exchangeMap.get("quoteType"), "0");
|
|
|
+ exchangeRate = (BigDecimal)ObjectUtils.defaultIfNull((BigDecimal)exchangeMap.get("exchangeRate"), BigDecimal.ONE);
|
|
|
+ if (this.getModel().getProperty("tripquotetype") != null) {
|
|
|
+ this.getModel().setValue("tripquotetype", quoteType, rowIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.getModel().setValue("tripexchangerate", exchangeRate, rowIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (tripCurrency == null && valueSet[0].getOldValue() != null) {
|
|
|
+ DynamicObject oldValue = (DynamicObject)valueSet[0].getOldValue();
|
|
|
+ model.setValue("tripcurrency", ErCommonUtils.getPk(oldValue), rowIndex);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "tripexchangerate":
|
|
|
+ exchangeRate = (BigDecimal)ObjectUtils.defaultIfNull((BigDecimal)propValue, BigDecimal.ONE);
|
|
|
+ tripOriAmount = (BigDecimal)model.getValue("triporiamount");
|
|
|
+ if (tripOriAmount.compareTo(BigDecimal.ZERO) != 0) {
|
|
|
+ tripQuoteType = (String)ObjectUtils.defaultIfNull((String)model.getValue("tripquotetype", rowIndex), "0");
|
|
|
+ tripAmount = AmountUtils.getCurrencyAmount(tripOriAmount, exchangeRate, AmountUtils.getCurrencyPrecision(model, "currency"), tripQuoteType);
|
|
|
+ model.setValue("tripamount", tripAmount, rowIndex);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "startdate":
|
|
|
+ startDate = (Date)propValue;
|
|
|
+ endDate = (Date)model.getValue("enddate");
|
|
|
+ tripDays = CommonServiceHelper.calcDays(startDate, endDate);
|
|
|
+ model.setValue("tripday", tripDays, rowIndex);
|
|
|
+ break;
|
|
|
+ case "enddate":
|
|
|
+ endDate = (Date)propValue;
|
|
|
+ startDate = (Date)model.getValue("startdate");
|
|
|
+ tripDays = CommonServiceHelper.calcDays(startDate, endDate);
|
|
|
+ model.setValue("tripday", tripDays, rowIndex);
|
|
|
+ break;
|
|
|
+ case "tripexpenseitem":
|
|
|
+ if (BudgetCommonUtil.getIsQueryBudgetFlag(this.getPageCache()) && propValue != null) {
|
|
|
+ BudgetCommonUtil.buildBudgetAmountField(this.getView(), rowIndex);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "std_project":
|
|
|
+ if (BudgetCommonUtil.getIsQueryBudgetFlag(this.getPageCache())) {
|
|
|
+ BudgetCommonUtil.buildBudgetAmountField(this.getView(), rowIndex);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "vehicle":
|
|
|
+ if (this.getVihicleFromStdConfig()) {
|
|
|
+ this.getModel().setValue("vehicles", propValue);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void click(EventObject evt) {
|
|
|
+ Control source = (Control)evt.getSource();
|
|
|
+ String key = source.getKey();
|
|
|
+ IDataModel model = this.getModel();
|
|
|
+ IDataModel parentModel = this.getView().getParentView().getModel();
|
|
|
+ Long companyId = ErCommonUtils.getPk(parentModel.getValue("company"));
|
|
|
+ switch (key) {
|
|
|
+ case "btn_save":
|
|
|
+ StringBuilder requireds = new StringBuilder();
|
|
|
+ requireds.append("from,to,startdate,enddate,vehicles");
|
|
|
+ Boolean isLoan = (Boolean)model.getValue("isloan");
|
|
|
+ if (isLoan || BudgetCommonUtil.getIsQueryBudgetFlag(this.getPageCache()) || BudgetCommonUtil.getIsQueryEASBudgetFlag(this.getPageCache()) || BudgetCommonUtil.getIsTripReqShowExpenseitemFlag(this.getPageCache()) || this.getModel().getDataEntity(true).getBoolean("istravelers") || SystemParamterUtil.getTripexpenseitemMustInput(companyId)) {
|
|
|
+ requireds.append(",tripexpenseitem");
|
|
|
+ }
|
|
|
+
|
|
|
+ DynamicObject dataEntity = model.getDataEntity(true);
|
|
|
+ DynamicObjectCollection tripentry = dataEntity.getDynamicObjectCollection("tripentry");
|
|
|
+ Boolean confirm = Boolean.FALSE;
|
|
|
+ Boolean istravelers = (Boolean)this.getModel().getValue("istravelers");
|
|
|
+ Iterator var21 = tripentry.iterator();
|
|
|
+
|
|
|
+ while(var21.hasNext()) {
|
|
|
+ DynamicObject dobjet = (DynamicObject)var21.next();
|
|
|
+ String vehicles = (String)model.getValue("vehicles");
|
|
|
+ if (vehicles == null) {
|
|
|
+ this.getView().showTipNotification(String.format(ResManager.loadKDString("请填写“交通工具”。", "CommonServiceHelper_1", "fi-er-business", new Object[0])));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ String[] split = vehicles.split(",");
|
|
|
+ if (split == null || split.length == 0) {
|
|
|
+ this.getView().showTipNotification(String.format(ResManager.loadKDString("请填写“交通工具”。", "CommonServiceHelper_1", "fi-er-business", new Object[0])));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ DynamicObjectCollection travelers = dobjet.getDynamicObjectCollection("travelers");
|
|
|
+ if (istravelers && (travelers == null || travelers.size() == 0)) {
|
|
|
+ this.getView().showTipNotification(String.format(ResManager.loadKDString("请填写“出差人”。", "TripReqSection_7", "fi-er-formplugin", new Object[0])));
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!CommonServiceHelper.requireValidate(dobjet, requireds.toString().split(","), this)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Object from = dobjet.get("from");
|
|
|
+ Object to = dobjet.get("to");
|
|
|
+ if (from.equals(to)) {
|
|
|
+ confirm = Boolean.TRUE;
|
|
|
+ }
|
|
|
+
|
|
|
+ dobjet.set("triporiaccappamount", dobjet.get("triporiamount"));
|
|
|
+ dobjet.set("tripaccappamount", dobjet.get("tripamount"));
|
|
|
+ dobjet.set("oriaccbalanceamount", dobjet.get("triporiamount"));
|
|
|
+ dobjet.set("accbalanceamount", dobjet.get("tripamount"));
|
|
|
+ }
|
|
|
+
|
|
|
+ if (parentModel.getValue("istravelers") != null && !(Boolean)parentModel.getValue("istravelers")) {
|
|
|
+ String error = this.validateTripDate(parentModel);
|
|
|
+ if (StringUtils.isNotBlank(error)) {
|
|
|
+ this.getView().showErrorNotification(error);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (confirm) {
|
|
|
+ this.getView().showConfirm(ResManager.loadKDString("出发地与目的地相同,是否继续?", "TripReqSection_0", "fi-er-formplugin", new Object[0]), MessageBoxOptions.OKCancel, new ConfirmCallBackListener("ok", this));
|
|
|
+ } else {
|
|
|
+ this.clickOk(model, parentModel, dataEntity, tripentry);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "btn_addsection":
|
|
|
+ int tripentryCurIndex = model.getEntryCurrentRowIndex("tripentry");
|
|
|
+ model.setValue("tripcurrency", ErCommonUtils.getPk(parentModel.getValue("currency")), tripentryCurIndex);
|
|
|
+ Long[] applierIds = new Long[]{ErCommonUtils.getPk(parentModel.getValue("applier"))};
|
|
|
+ model.setValue("travelers", applierIds, tripentryCurIndex);
|
|
|
+ this.setTripExpenseItemShow(companyId, tripentryCurIndex);
|
|
|
+ this.setBudgetShow(tripentryCurIndex);
|
|
|
+ this.setVehicleVisible();
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void clickOk(IDataModel model, IDataModel parentModel, DynamicObject dataEntity, DynamicObjectCollection tripentry) {
|
|
|
+ if (tripentry != null && tripentry.size() >= 1) {
|
|
|
+ long firstPageCurrencyId = ErCommonUtils.getPk(parentModel.getValue("currency"));
|
|
|
+ long secondPageCurrencyId = ErCommonUtils.getPk(model.getValue("currency"));
|
|
|
+ IFormView parentView = this.getView().getParentView();
|
|
|
+ DynamicObject parentDataEntity = parentModel.getDataEntity(true);
|
|
|
+ DynamicObjectCollection partripentry = parentDataEntity.getDynamicObjectCollection("tripentry");
|
|
|
+ if (partripentry.isEmpty() && firstPageCurrencyId != secondPageCurrencyId) {
|
|
|
+ parentView.updateView();
|
|
|
+ this.getView().sendFormAction(parentView);
|
|
|
+ this.getView().close();
|
|
|
+ } else {
|
|
|
+ FormShowParameter param = this.getView().getFormShowParameter();
|
|
|
+ String pageId = parentView.getPageId();
|
|
|
+ if (param.getCustomParam("entryedit") != null) {
|
|
|
+ int index = (Integer)param.getCustomParam("index");
|
|
|
+ partripentry.remove(index);
|
|
|
+ partripentry.addAll(index, tripentry);
|
|
|
+ } else {
|
|
|
+ partripentry.addAll(tripentry);
|
|
|
+ }
|
|
|
+
|
|
|
+ RedisModelCache redisModelCache = new RedisModelCache((IRefrencedataProvider)null, model.getDataEntityType(), pageId);
|
|
|
+ redisModelCache.storeAll(dataEntity);
|
|
|
+ parentView.updateView();
|
|
|
+ this.getView().sendFormAction(parentView);
|
|
|
+ this.getView().close();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ this.getView().showTipNotification(ResManager.loadKDString("请填写行程信息。", "TripReqSection_5", "fi-er-formplugin", new Object[0]));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private String validateTripDate(IDataModel parentModel) {
|
|
|
+ DynamicObjectCollection parentTripEntry = parentModel.getEntryEntity("tripentry");
|
|
|
+ int parentSize = parentTripEntry.size();
|
|
|
+ DynamicObjectCollection curEntryEntity = this.getModel().getEntryEntity("tripentry");
|
|
|
+ int curSize = curEntryEntity.size();
|
|
|
+ Map<Integer, Object> sortMap = new TreeMap();
|
|
|
+ if (curSize > 0) {
|
|
|
+ curEntryEntity.forEach((entity) -> {
|
|
|
+ sortMap.put(entity.getInt("index"), entity);
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ if (parentSize > 0) {
|
|
|
+ parentTripEntry.forEach((entity) -> {
|
|
|
+ if (!sortMap.containsKey(entity.getInt("seq"))) {
|
|
|
+ sortMap.put(entity.getInt("seq"), entity);
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ Date startDate = null;
|
|
|
+ Date endDate = null;
|
|
|
+ String tip = null;
|
|
|
+
|
|
|
+ for(int i = 0; i < curEntryEntity.size(); ++i) {
|
|
|
+ DynamicObject curTripEntry = (DynamicObject)curEntryEntity.get(i);
|
|
|
+ int index = curTripEntry.getInt("index");
|
|
|
+ DynamicObject lastTripEntry = (DynamicObject)sortMap.get(index - 1);
|
|
|
+ if (lastTripEntry != null) {
|
|
|
+ startDate = curTripEntry.getDate("startdate");
|
|
|
+ endDate = lastTripEntry.getDate("enddate");
|
|
|
+ if (startDate.before(endDate)) {
|
|
|
+ tip = ResManager.loadKDString("第%1$s程行程期间不能早于第%2$s程行程期间。", "TripReqSection_2", "fi-er-formplugin", new Object[0]);
|
|
|
+ return String.format(tip, index, index - 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ DynamicObject nextTripEntry = (DynamicObject)sortMap.get(index + 1);
|
|
|
+ if (nextTripEntry != null) {
|
|
|
+ endDate = curTripEntry.getDate("enddate");
|
|
|
+ startDate = nextTripEntry.getDate("startdate");
|
|
|
+ if (startDate.before(endDate)) {
|
|
|
+ tip = ResManager.loadKDString("第%1$s程行程期间不能晚于第%2$s程行程期间。", "TripReqSection_4", "fi-er-formplugin", new Object[0]);
|
|
|
+ return String.format(tip, index, index + 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setTripExpenseItemShow(Long companyId, int rowIndex) {
|
|
|
+ Boolean isLoan = (Boolean)this.getModel().getValue("isloan");
|
|
|
+ CardEntry tripCardEntry = (CardEntry)this.getControl("tripentry");
|
|
|
+ if (!isLoan && !BudgetCommonUtil.getIsQueryBudgetFlag(this.getPageCache()) && !BudgetCommonUtil.getIsQueryEASBudgetFlag(this.getPageCache()) && !BudgetCommonUtil.getIsTripReqShowExpenseitemFlag(this.getPageCache()) && !this.getModel().getDataEntity(true).getBoolean("istravelers") && !SystemParamterUtil.getTripexpenseitemMustInput(companyId)) {
|
|
|
+ tripCardEntry.setChildVisible(false, rowIndex, new String[]{"cardtripexpenseitem", "tripexpenseitem"});
|
|
|
+ } else {
|
|
|
+ tripCardEntry.setChildVisible(true, rowIndex, new String[]{"cardtripexpenseitem", "tripexpenseitem"});
|
|
|
+ FieldEdit editor = (FieldEdit)this.getView().getControl("tripexpenseitem");
|
|
|
+ editor.setMustInput(false);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void setBudgetShow(int rowIndex) {
|
|
|
+ CardEntry tripCardEntry = (CardEntry)this.getControl("tripentry");
|
|
|
+ if (tripCardEntry != null) {
|
|
|
+ if (!BudgetCommonUtil.getIsQueryBudgetFlag(this.getPageCache()) && !BudgetCommonUtil.getIsQueryEASBudgetFlag(this.getPageCache())) {
|
|
|
+ tripCardEntry.setChildVisible(false, rowIndex, new String[]{"cardbudget", "budgetamount"});
|
|
|
+ tripCardEntry.setChildVisible(false, rowIndex, new String[]{"cardbudget1", "budgetmsg"});
|
|
|
+ } else {
|
|
|
+ IFormView parentView = this.getView().getParentView();
|
|
|
+ if (parentView != null) {
|
|
|
+ String budgeMsgValue = (String)ErCommonUtils.getEMParameter(ErCommonUtils.getPk(parentView.getModel().getValue("company")), "budgeMsgControl");
|
|
|
+ if (StringUtils.isNotEmpty(budgeMsgValue)) {
|
|
|
+ if ("0".equals(budgeMsgValue)) {
|
|
|
+ tripCardEntry.setChildVisible(true, rowIndex, new String[]{"cardbudget", "budgetamount"});
|
|
|
+ tripCardEntry.setChildVisible(false, rowIndex, new String[]{"cardbudget1", "budgetmsg"});
|
|
|
+ } else if ("1".equals(budgeMsgValue)) {
|
|
|
+ tripCardEntry.setChildVisible(false, rowIndex, new String[]{"cardbudget", "budgetamount"});
|
|
|
+ tripCardEntry.setChildVisible(true, rowIndex, new String[]{"cardbudget1", "budgetmsg"});
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ tripCardEntry.setChildVisible(false, rowIndex, new String[]{"cardbudget", "budgetamount"});
|
|
|
+ tripCardEntry.setChildVisible(false, rowIndex, new String[]{"cardbudget1", "budgetmsg"});
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ tripCardEntry.setChildVisible(false, rowIndex, new String[]{"cardbudget", "budgetamount"});
|
|
|
+ tripCardEntry.setChildVisible(false, rowIndex, new String[]{"cardbudget1", "budgetmsg"});
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initTripEntryDefaultData(IDataModel model, int rowIndex) {
|
|
|
+ model.setValue("tripexchangerate", BigDecimal.ONE, rowIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void afterDeleteRow(AfterDeleteRowEventArgs e) {
|
|
|
+ super.afterDeleteRow(e);
|
|
|
+ int[] rowIndexs = e.getRowIndexs();
|
|
|
+ int rowIndex = rowIndexs[0];
|
|
|
+
|
|
|
+ for(int tripEntrySize = this.getModel().getEntryRowCount("tripentry"); rowIndex < tripEntrySize; ++rowIndex) {
|
|
|
+ int index = (Integer)this.getModel().getValue("index", rowIndex);
|
|
|
+ this.getModel().setValue("index", index - 1, rowIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void afterDoOperation(AfterDoOperationEventArgs afterDoOperationEventArgs) {
|
|
|
+ super.afterDoOperation(afterDoOperationEventArgs);
|
|
|
+ IDataModel model = this.getModel();
|
|
|
+ IDataModel paremodel = this.getView().getParentView().getModel();
|
|
|
+ int rowIndex = model.getEntryCurrentRowIndex("tripentry");
|
|
|
+ int thisCount = model.getEntryRowCount("tripentry");
|
|
|
+ DynamicObjectCollection tripentryCol = model.getEntryEntity("tripentry");
|
|
|
+ int tripenytryCount = tripentryCol.size();
|
|
|
+ if (thisCount != 0) {
|
|
|
+ int tripEntryRowCount;
|
|
|
+ if ("newtripentry".equalsIgnoreCase(afterDoOperationEventArgs.getOperateKey())) {
|
|
|
+ if (tripenytryCount > 1) {
|
|
|
+ Object lastCity = ((DynamicObject)tripentryCol.get(tripenytryCount - 2)).get("to_Id");
|
|
|
+ Object nextStartDate = ((DynamicObject)tripentryCol.get(tripenytryCount - 2)).get("enddate");
|
|
|
+ if (lastCity != null) {
|
|
|
+ model.setValue("from", lastCity, tripenytryCount - 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (nextStartDate != null) {
|
|
|
+ model.setValue("startdate", nextStartDate, tripenytryCount - 1);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ tripEntryRowCount = model.getEntryRowCount("tripentry") + paremodel.getEntryRowCount("tripentry");
|
|
|
+ model.setValue("index", tripEntryRowCount, model.getEntryRowCount("tripentry") - 1);
|
|
|
+ Object currencyId = ErCommonUtils.getPk(paremodel.getValue("currency"));
|
|
|
+ model.setValue("rcurrency", currencyId, rowIndex);
|
|
|
+ model.setValue("tripcurrency", currencyId, rowIndex);
|
|
|
+ this.initTripEntryDefaultData(model, rowIndex);
|
|
|
+ }
|
|
|
+
|
|
|
+ tripEntryRowCount = model.getEntryRowCount("tripentry");
|
|
|
+ int parentTripEntryRowCount = paremodel.getEntryRowCount("tripentry");
|
|
|
+ if (Objects.equals(afterDoOperationEventArgs.getOperateKey(), "deletetripentry")) {
|
|
|
+ for(int i = 0; i < tripEntryRowCount; ++i) {
|
|
|
+ model.setValue("index", parentTripEntryRowCount + i + 1, i);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
|
|
|
+ super.confirmCallBack(messageBoxClosedEvent);
|
|
|
+ if (MessageBoxResult.Yes.equals(messageBoxClosedEvent.getResult())) {
|
|
|
+ IFormView parentView = this.getView().getParentView();
|
|
|
+ IDataModel parentModel = parentView.getModel();
|
|
|
+ DynamicObject dataEntity = this.getModel().getDataEntity(true);
|
|
|
+ DynamicObjectCollection tripentry = dataEntity.getDynamicObjectCollection("tripentry");
|
|
|
+ this.clickOk(this.getModel(), parentModel, dataEntity, tripentry);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void closedCallBack(ClosedCallBackEvent closedCallBackEvent) {
|
|
|
+ super.closedCallBack(closedCallBackEvent);
|
|
|
+ if ("people_choose".equalsIgnoreCase(closedCallBackEvent.getActionId())) {
|
|
|
+ ListSelectedRowCollection rowCollection = (ListSelectedRowCollection)closedCallBackEvent.getReturnData();
|
|
|
+ int index = this.getModel().getEntryCurrentRowIndex("tripentry");
|
|
|
+ Object[] users = null;
|
|
|
+ if (rowCollection != null) {
|
|
|
+ users = rowCollection.stream().map((v) -> {
|
|
|
+ return v.getPrimaryKeyValue();
|
|
|
+ }).toArray();
|
|
|
+ } else {
|
|
|
+ users = new Object[0];
|
|
|
+ }
|
|
|
+
|
|
|
+ this.getModel().setValue("travelers", users, index);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public void beforeClosed(BeforeClosedEvent e) {
|
|
|
+ e.setCheckDataChange(false);
|
|
|
+ super.beforeClosed(e);
|
|
|
+ }
|
|
|
+}
|