|
@@ -0,0 +1,2642 @@
|
|
|
|
+package fi.cas.formplugin;
|
|
|
|
+
|
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
|
+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.DataEntityBase;
|
|
|
|
+import kd.bos.dataentity.entity.DynamicObject;
|
|
|
|
+import kd.bos.dataentity.entity.DynamicObjectCollection;
|
|
|
|
+import kd.bos.dataentity.entity.LocaleString;
|
|
|
|
+import kd.bos.dataentity.metadata.IDataEntityProperty;
|
|
|
|
+import kd.bos.dataentity.metadata.clr.DataEntityPropertyCollection;
|
|
|
|
+import kd.bos.dataentity.resource.ResManager;
|
|
|
|
+import kd.bos.dataentity.serialization.SerializationUtils;
|
|
|
|
+import kd.bos.entity.AppMetadataCache;
|
|
|
|
+import kd.bos.entity.EntityMetadataCache;
|
|
|
|
+import kd.bos.entity.Tips;
|
|
|
|
+import kd.bos.entity.datamodel.*;
|
|
|
|
+import kd.bos.entity.datamodel.events.*;
|
|
|
|
+import kd.bos.entity.format.FormatFactory;
|
|
|
|
+import kd.bos.entity.format.FormatObject;
|
|
|
|
+import kd.bos.entity.format.FormatTypes;
|
|
|
|
+import kd.bos.entity.operate.result.OperationResult;
|
|
|
|
+import kd.bos.entity.param.AppParam;
|
|
|
|
+import kd.bos.entity.property.EntryProp;
|
|
|
|
+import kd.bos.exception.KDBizException;
|
|
|
|
+import kd.bos.form.*;
|
|
|
|
+import kd.bos.form.control.*;
|
|
|
|
+import kd.bos.form.control.events.BeforeItemClickEvent;
|
|
|
|
+import kd.bos.form.control.events.ClickListener;
|
|
|
|
+import kd.bos.form.control.events.ItemClickEvent;
|
|
|
|
+import kd.bos.form.control.events.RowClickEventListener;
|
|
|
|
+import kd.bos.form.events.*;
|
|
|
|
+import kd.bos.form.field.BasedataEdit;
|
|
|
|
+import kd.bos.form.field.ComboEdit;
|
|
|
|
+import kd.bos.form.field.ComboItem;
|
|
|
|
+import kd.bos.form.operate.AbstractOperate;
|
|
|
|
+import kd.bos.form.operate.FormOperate;
|
|
|
|
+import kd.bos.form.operate.SignOperateCallback;
|
|
|
|
+import kd.bos.list.ListFilterParameter;
|
|
|
|
+import kd.bos.list.ListShowParameter;
|
|
|
|
+import kd.bos.logging.Log;
|
|
|
|
+import kd.bos.logging.LogFactory;
|
|
|
|
+import kd.bos.orm.query.QFilter;
|
|
|
|
+import kd.bos.orm.util.CollectionUtils;
|
|
|
|
+import kd.bos.servicehelper.BusinessDataServiceHelper;
|
|
|
|
+import kd.bos.servicehelper.DispatchServiceHelper;
|
|
|
|
+import kd.bos.servicehelper.QueryServiceHelper;
|
|
|
|
+import kd.bos.servicehelper.inte.InteServiceHelper;
|
|
|
|
+import kd.bos.servicehelper.operation.OperationServiceHelper;
|
|
|
|
+import kd.bos.servicehelper.parameter.SystemParamServiceHelper;
|
|
|
|
+import kd.bos.servicehelper.workflow.WorkflowServiceHelper;
|
|
|
|
+import kd.bos.workflow.component.approvalrecord.IApprovalRecordGroup;
|
|
|
|
+import kd.fi.cas.business.errorcode.CasErrorCode;
|
|
|
|
+import kd.fi.cas.business.errorcode.PaymentErrorCode;
|
|
|
|
+import kd.fi.cas.business.helper.AcctBalanceHelper;
|
|
|
|
+import kd.fi.cas.business.helper.PayBillHepler;
|
|
|
|
+import kd.fi.cas.business.helper.PaymentFillPropHelper;
|
|
|
|
+import kd.fi.cas.business.helper.VisibleVirtualAcctHelper;
|
|
|
|
+import kd.fi.cas.business.opservice.impl.PaymentPayImpl;
|
|
|
|
+import kd.fi.cas.business.service.ViewReceiptService;
|
|
|
|
+import kd.fi.cas.consts.BillTypeConstants;
|
|
|
|
+import kd.fi.cas.enums.*;
|
|
|
|
+import kd.fi.cas.formplugin.PaymentBillEdit;
|
|
|
|
+import kd.fi.cas.formplugin.common.CasBillEdit;
|
|
|
|
+import kd.fi.cas.formplugin.helper.InitCheckPluginHelper;
|
|
|
|
+import kd.fi.cas.helper.*;
|
|
|
|
+import kd.fi.cas.pojo.BizBalanceModelBean;
|
|
|
|
+import kd.fi.cas.util.DateUtils;
|
|
|
|
+import kd.fi.cas.util.EmptyUtil;
|
|
|
|
+import kd.fi.cas.util.FormUtils;
|
|
|
|
+import kd.fi.cas.util.StringUtils;
|
|
|
|
+
|
|
|
|
+import java.math.BigDecimal;
|
|
|
|
+import java.text.Format;
|
|
|
|
+import java.util.*;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+public class ArBillEditPlugin extends CasBillEdit implements ClickListener, RowClickEventListener, SignCallbackLisenter {
|
|
|
|
+ private String labCurrencySign;
|
|
|
|
+ private int currencyAmtprecision;
|
|
|
|
+ private Format currencyFormat;
|
|
|
|
+ private static final String KEY_DIFFPAY_CALLBACK = "KEY_DIFFPAY_CALLBACK";
|
|
|
|
+ private static final String CONFIRM_DEL_CALLBACK = "CONFIRM_DEL_CALLBACK";
|
|
|
|
+ private static final String KEY_CALLBACK_CHARGEBACK = "CALLBACK_CHARGEBACK";
|
|
|
|
+ private static final String KEY_CLOSECALLBACK_CHARGEBACK = "CALLBACK_SELECTDRAFT";
|
|
|
|
+ private static Log logger = LogFactory.getLog(PaymentBillEdit.class);
|
|
|
|
+ private Long orgId;
|
|
|
|
+ private boolean isBeConfirmOK = false;
|
|
|
|
+ private List<String> settleTypes;
|
|
|
|
+
|
|
|
|
+ public ArBillEditPlugin() {
|
|
|
|
+ this.settleTypes = Arrays.asList(SettleMentTypeEnum.PROMISSORY.getValue(), SettleMentTypeEnum.CHECK.getValue(), SettleMentTypeEnum.DRAFT.getValue(), SettleMentTypeEnum.BUSINESS.getValue(), SettleMentTypeEnum.BANK.getValue());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void initFormat() {
|
|
|
|
+ FormatObject fobj = InteServiceHelper.getUserFormat(RequestContext.get().getCurrUserId());
|
|
|
|
+ fobj.getCurrencyFormat().setCurrencySymbols(this.labCurrencySign);
|
|
|
|
+ fobj.getCurrencyFormat().setMinimumFractionDigits(this.currencyAmtprecision);
|
|
|
|
+ this.currencyFormat = FormatFactory.get(FormatTypes.Currency).getFormat(fobj);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void preOpenForm(PreOpenFormEventArgs e) {
|
|
|
|
+ BillShowParameter showParameter = (BillShowParameter)e.getSource();
|
|
|
|
+ Object pkId = showParameter.getPkId();
|
|
|
|
+ if (pkId != null && !pkId.equals(0L)) {
|
|
|
|
+ DynamicObject info = BusinessDataServiceHelper.loadSingle(pkId, "nckd_cas_arbill", "id, billtype");
|
|
|
|
+ DynamicObject billtype = info.getDynamicObject("billtype");
|
|
|
|
+ if (billtype != null && BillTypeConstants.PAYBILL_SYN.equals(billtype.getPkValue())) {
|
|
|
|
+ e.getFormShowParameter().setFormId("cas_paybill_synonym");
|
|
|
|
+ e.getFormShowParameter().setCaption(ResManager.loadKDString("同名转账", "PaymentBillEdit_24", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ } else if (billtype != null && BillTypeConstants.PAYBILL_CASH.equals(billtype.getPkValue())) {
|
|
|
|
+ e.getFormShowParameter().setFormId("cas_paybill_cash");
|
|
|
|
+ e.getFormShowParameter().setCaption(ResManager.loadKDString("现金存取", "PaymentBillEdit_25", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ } else if (billtype != null && BillTypeConstants.PAYBILL_SPAN.equals(billtype.getPkValue())) {
|
|
|
|
+ e.getFormShowParameter().setCaption(ResManager.loadKDString("跨主体调拨", "PaymentBillEdit_28", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ String formId = showParameter.getFormId();
|
|
|
|
+ if ("cas_paybill_synonym".equals(formId)) {
|
|
|
|
+ e.getFormShowParameter().setFormId("cas_paybill_synonym");
|
|
|
|
+ e.getFormShowParameter().setCaption(ResManager.loadKDString("同名转账", "PaymentBillEdit_24", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ } else if ("cas_paybill_cash".equals(formId)) {
|
|
|
|
+ e.getFormShowParameter().setFormId("cas_paybill_cash");
|
|
|
|
+ e.getFormShowParameter().setCaption(ResManager.loadKDString("现金存取", "PaymentBillEdit_25", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ } else if ("cas_paybill_spanmainpart".equals(formId)) {
|
|
|
|
+ e.getFormShowParameter().setFormId("cas_paybill_spanmainpart");
|
|
|
|
+ e.getFormShowParameter().setCaption(ResManager.loadKDString("跨主体调拨", "PaymentBillEdit_28", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void registerListener(EventObject e) {
|
|
|
|
+ super.registerListener(e);
|
|
|
|
+ this.addClickListeners(new String[]{"changepayer", "changepayee", "addpayeelb1", "addpayeelb2", "settletnumber", "applyname"});
|
|
|
|
+ this.initF7();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void initF7() {
|
|
|
|
+ this.fillPaymentType();
|
|
|
|
+ this.fillCurrency();
|
|
|
|
+ this.fillEntrustorg();
|
|
|
|
+ this.setSettlementTypeFilter();
|
|
|
|
+ this.fillNetBankAcct();
|
|
|
|
+ this.expenseItem();
|
|
|
|
+ this.fillFundFlow();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void fillFundFlow() {
|
|
|
|
+ BasedataEdit fundFlow = (BasedataEdit)this.getControl("e_fundflowitem");
|
|
|
|
+ fundFlow.addBeforeF7SelectListener((select) -> {
|
|
|
|
+ ListShowParameter showParam = (ListShowParameter)select.getFormShowParameter();
|
|
|
|
+ Object org = this.getModel().getValue("org");
|
|
|
|
+ showParam.setCustomParam("org", String.valueOf(((DynamicObject)org).getPkValue()));
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ protected void expenseItem() {
|
|
|
|
+ BasedataEdit orgCtrl = (BasedataEdit)this.getControl("e_expenseitem");
|
|
|
|
+ orgCtrl.addBeforeF7SelectListener((beforeF7SelectEvent) -> {
|
|
|
|
+ ListShowParameter showParameter = (ListShowParameter)beforeF7SelectEvent.getFormShowParameter();
|
|
|
|
+ DynamicObject[] objects = BusinessDataServiceHelper.load("er_expenseitembill", "id,expenseitem", new QFilter[]{new QFilter("billtype.bill_number.number", "=", "nckd_cas_arbill")});
|
|
|
|
+ if (!EmptyUtil.isEmpty(objects)) {
|
|
|
|
+ List<Object> ids = (List)Arrays.stream(objects).map((o) -> {
|
|
|
|
+ return o.get("expenseitem.id");
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ QFilter qFilter = new QFilter("id", "in", ids);
|
|
|
|
+ showParameter.getListFilterParameter().getQFilters().add(qFilter);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ protected String getControlBankAcctForSettleType() {
|
|
|
|
+ return "payeracctbank";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean isAcctBankExistOnlineBankAcct() {
|
|
|
|
+ DynamicObject payeracctbank = (DynamicObject)this.getValue("payeracctbank");
|
|
|
|
+ if (null != payeracctbank) {
|
|
|
|
+ DynamicObjectCollection onlineBankAccts = payeracctbank.getDynamicObjectCollection("netbank");
|
|
|
|
+ return null != onlineBankAccts && onlineBankAccts.size() != 0;
|
|
|
|
+ } else {
|
|
|
|
+ return false;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void fillNetBankAcct() {
|
|
|
|
+ BasedataEdit onlinebankacct = (BasedataEdit)this.getControl("netbankacct");
|
|
|
|
+ onlinebankacct.addBeforeF7SelectListener((beforeF7SelectEvent) -> {
|
|
|
|
+ ListShowParameter showParameter = (ListShowParameter)beforeF7SelectEvent.getFormShowParameter();
|
|
|
|
+ DynamicObject payeracctbank = (DynamicObject)this.getValue("payeracctbank");
|
|
|
|
+ List<Long> ids = new ArrayList();
|
|
|
|
+ if (null != payeracctbank) {
|
|
|
|
+ DynamicObjectCollection onlineBankAccts = payeracctbank.getDynamicObjectCollection("netbank");
|
|
|
|
+ if (null != onlineBankAccts && onlineBankAccts.size() > 0) {
|
|
|
|
+ Iterator var6 = onlineBankAccts.iterator();
|
|
|
|
+
|
|
|
|
+ while(var6.hasNext()) {
|
|
|
|
+ DynamicObject bankAcct = (DynamicObject)var6.next();
|
|
|
|
+ ids.add((Long)bankAcct.getDynamicObject("fbasedataid").getPkValue());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (ids.size() == 0) {
|
|
|
|
+ ids.add(0L);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ QFilter qFilter = new QFilter("id", "in", ids);
|
|
|
|
+ showParameter.getListFilterParameter().getQFilters().add(qFilter);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void fillEntrustorg() {
|
|
|
|
+ BasedataEdit currencyF7 = (BasedataEdit)this.getControl("entrustorg");
|
|
|
|
+ currencyF7.addBeforeF7SelectListener((beforeF7SelectEvent) -> {
|
|
|
|
+ ListShowParameter showParameter = (ListShowParameter)beforeF7SelectEvent.getFormShowParameter();
|
|
|
|
+ showParameter.setCustomParam("orgFuncId", "08");
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void fillPaymentType() {
|
|
|
|
+ BasedataEdit paymenttypeF7 = (BasedataEdit)this.getControl("paymenttype");
|
|
|
|
+ paymenttypeF7.addBeforeF7SelectListener((beforeF7SelectEvent) -> {
|
|
|
|
+ String sourceBillType = (String)this.getModel().getValue("sourcebilltype");
|
|
|
|
+ ListShowParameter showParameter = (ListShowParameter)beforeF7SelectEvent.getFormShowParameter();
|
|
|
|
+ QFilter qFilter = new QFilter("enable", "=", "1");
|
|
|
|
+ Object entrance = this.getModel().getValue("entrance");
|
|
|
|
+ if (!CasHelper.isEmpty(this.getModel().getDataEntity().getPkValue())) {
|
|
|
|
+ DynamicObject payemntType = (DynamicObject)this.getModel().getValue("paymenttype");
|
|
|
|
+ if (payemntType != null) {
|
|
|
|
+ qFilter = qFilter.and(new QFilter("ispartpayment", "=", payemntType.getBoolean("ispartpayment") ? "1" : "0"));
|
|
|
|
+ } else if (!PaymentTypeEnum.AP.name().equals(entrance)) {
|
|
|
|
+ qFilter = qFilter.and(new QFilter("ispartpayment", "=", "0"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (entrance != null && !"".equals(entrance)) {
|
|
|
|
+ if (PaymentTypeEnum.AP.name().equals(entrance)) {
|
|
|
|
+ qFilter = qFilter.and(new QFilter("ispartpayment", "=", "1"));
|
|
|
|
+ } else {
|
|
|
|
+ qFilter = qFilter.and(new QFilter("ispartpayment", "=", "0"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ("pm_purorderbill".equals(sourceBillType) || "conm_purcontract".equals(sourceBillType)) {
|
|
|
|
+ qFilter = qFilter.and(new QFilter("biztype", "=", "202")).and(new QFilter("ispartpayment", "=", "1"));
|
|
|
|
+ qFilter = qFilter.and(new QFilter("ispartpayment", "=", "1"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ showParameter.getListFilterParameter().setFilter(qFilter);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void fillCurrency() {
|
|
|
|
+ BasedataEdit currencyF7 = (BasedataEdit)this.getControl("currency");
|
|
|
|
+ currencyF7.addBeforeF7SelectListener((beforeF7SelectEvent) -> {
|
|
|
|
+ ListShowParameter showParameter = (ListShowParameter)beforeF7SelectEvent.getFormShowParameter();
|
|
|
|
+ QFilter qFilter = new QFilter("enable", "=", "1");
|
|
|
|
+ Boolean isDiffCur = (Boolean)this.getValue("isdiffcur");
|
|
|
|
+ if (!isDiffCur) {
|
|
|
|
+ DynamicObject settleType = (DynamicObject)this.getModel().getValue("settletype");
|
|
|
|
+ boolean isCash = BaseDataHelper.isSettleTypeCash(settleType);
|
|
|
|
+ DynamicObject accountCash;
|
|
|
|
+ if (isCash) {
|
|
|
|
+ accountCash = (DynamicObject)this.getModel().getValue("payeracctcash");
|
|
|
|
+ if (accountCash != null) {
|
|
|
|
+ List<Long> currencys = AccountCashHelper.getCurrencys(Collections.singletonList((Long)accountCash.getPkValue()));
|
|
|
|
+ qFilter = qFilter.and(new QFilter("id", "in", currencys));
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ accountCash = (DynamicObject)this.getModel().getValue("payeracctbank");
|
|
|
|
+ if (accountCash != null) {
|
|
|
|
+ Set<Long> currencysx = AccountBankHelper.getCurrencyPks((Long)accountCash.getPkValue());
|
|
|
|
+ qFilter = qFilter.and(new QFilter("id", "in", currencysx));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ showParameter.getListFilterParameter().setFilter(qFilter);
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void afterCreateNewData(EventObject e) {
|
|
|
|
+ super.afterCreateNewData(e);
|
|
|
|
+ this.setDefaultPaymentChannelValue();
|
|
|
|
+ if (!"true".equals(this.getPageCache().get("isFromWebApi"))) {
|
|
|
|
+ this.createNewModel();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.getView().setVisible(false, new String[]{"netbankacct"});
|
|
|
|
+ this.getEntryCache();
|
|
|
|
+ this.calculateAmt();
|
|
|
|
+ DynamicObject settleType = this.getDynamicObject("settletype");
|
|
|
|
+ if (BaseDataHelper.isSettleTypeCash(settleType)) {
|
|
|
|
+ this.setValue("payeracctcash", AccountCashHelper.getDefaultAccountcash(this.getPk("org"), "payer"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void getEntryCache() {
|
|
|
|
+ String str_json = this.getPageCache().get("entry");
|
|
|
|
+ if (str_json != null) {
|
|
|
|
+ this.getModel().deleteEntryRow("entry", 0);
|
|
|
|
+ TableValueSetter vs = new TableValueSetter(new String[0]);
|
|
|
|
+ vs.addField("e_expenseitem", new Object[0]).addField("e_payableamt", new Object[0]).addField("project", new Object[0]).addField("e_fundflowitem", new Object[0]).addField("e_remark", new Object[0]);
|
|
|
|
+ Map<String, ArrayList<Map<String, String>>> maps = (Map) SerializationUtils.fromJsonString(str_json, Map.class);
|
|
|
|
+ ArrayList<Map<String, String>> list = (ArrayList)maps.get("entry");
|
|
|
|
+ Iterator var5 = list.iterator();
|
|
|
|
+
|
|
|
|
+ while(var5.hasNext()) {
|
|
|
|
+ Map<String, String> map = (Map)var5.next();
|
|
|
|
+ vs.addRow(new Object[]{map.get("e_expenseitem"), map.get("e_payableamt"), map.get("project"), map.get("e_fundflowitem"), map.get("e_remark")});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ AbstractFormDataModel model = (AbstractFormDataModel)this.getModel();
|
|
|
|
+ model.batchCreateNewEntryRow("entry", vs);
|
|
|
|
+ this.getView().updateView("entry");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setDefaultPaymentChannelValue() {
|
|
|
|
+ List<ComboItem> comboItems = new ArrayList();
|
|
|
|
+ ComboEdit paymentChannel = (ComboEdit)this.getControl("paymentchannel");
|
|
|
|
+ ComboItem comboItem = new ComboItem();
|
|
|
|
+ comboItem.setValue(PaymentChannelEnum.COUNTER.getValue());
|
|
|
|
+ comboItem.setCaption(new LocaleString(ResManager.loadKDString(PaymentChannelEnum.COUNTER.getName(), "PaymentBillEdit_16", "fi-cas-formplugin", new Object[0])));
|
|
|
|
+ comboItems.add(comboItem);
|
|
|
|
+ paymentChannel.setComboItems(comboItems);
|
|
|
|
+ this.getModel().setValue("paymentchannel", comboItem.getValue());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void beforeBindData(EventObject e) {
|
|
|
|
+ super.beforeBindData(e);
|
|
|
|
+ DynamicObject paymenttype = (DynamicObject)this.getModel().getValue("paymenttype");
|
|
|
|
+ if (null != paymenttype && !paymenttype.getBoolean("ispartpayment")) {
|
|
|
|
+ this.getView().setVisible(false, new String[]{"settleorg"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.settleOrg(false);
|
|
|
|
+ if (this.isBotpNew()) {
|
|
|
|
+ this.supplePayeeInfo();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.getModel().setDataChanged(false);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void supplePayeeInfo() {
|
|
|
|
+ Object sourcebilltype = this.getModel().getValue("sourcebilltype");
|
|
|
|
+ if (!CasHelper.isEmpty(sourcebilltype)) {
|
|
|
|
+ Object payee = this.getModel().getValue("payee");
|
|
|
|
+ Object payeebanknumMo = this.getModel().getValue("payeebanknum");
|
|
|
|
+ Object payeebankMo = this.getModel().getValue("payeebank");
|
|
|
|
+ Object payeeType = this.getValue("payeetype");
|
|
|
|
+ if (CasHelper.isEmpty(payeebanknumMo) && CasHelper.isEmpty(payeebankMo)) {
|
|
|
|
+ String billName = this.getModel().getDataEntityType().getName();
|
|
|
|
+ Map<String, Object> resultMap = CasPayeeOrPayerHelper.getPayeeOrPayerInfo(payee, payeeType, billName);
|
|
|
|
+ if (resultMap.size() > 0) {
|
|
|
|
+ Object bankaccount = resultMap.get("payeebanknum");
|
|
|
|
+ Object accountname = resultMap.get("accountname");
|
|
|
|
+ DynamicObject payeebank = (DynamicObject)resultMap.get("payeebank");
|
|
|
|
+ this.getModel().setValue("payeebanknum", bankaccount);
|
|
|
|
+ this.getModel().setValue("recaccbankname", accountname);
|
|
|
|
+ if (!CasHelper.isEmpty(payeebank)) {
|
|
|
|
+ this.fillProvinceAndCity(payeebank);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (!CasHelper.isEmpty(payeebankMo)) {
|
|
|
|
+ this.fillProvinceAndCity((DynamicObject)payeebankMo);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void fillProvinceAndCity(DynamicObject payeeBank) {
|
|
|
|
+ logger.info("打开单据 填充 国家、省、城市字段");
|
|
|
|
+ payeeBank = BusinessDataServiceHelper.loadSingle(payeeBank.getPkValue(), payeeBank.getDataEntityType().getName(), "id,name,number,country,provincetxt,citytxt,union_number");
|
|
|
|
+ this.getModel().setValue("payeebank", payeeBank);
|
|
|
|
+ this.getModel().setValue("payeebankname", payeeBank.getString("name"));
|
|
|
|
+ this.getModel().setValue("recbanknumber", payeeBank.getString("union_number"));
|
|
|
|
+ this.getModel().setValue("reccountry", payeeBank.getDynamicObject("country"));
|
|
|
|
+ this.getModel().setValue("recprovince", payeeBank.getString("provincetxt"));
|
|
|
|
+ this.getModel().setValue("reccity", payeeBank.getString("citytxt"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void createNewModel() {
|
|
|
|
+ this.getView().setVisible(false, new String[]{"usage"});
|
|
|
|
+ FormShowParameter parameter = this.getView().getFormShowParameter();
|
|
|
|
+ Map<String, Object> customParams = parameter.getCustomParams();
|
|
|
|
+ if (this.getModel().getValue("org") != null) {
|
|
|
|
+ this.orgId = this.getPk("org");
|
|
|
|
+ } else {
|
|
|
|
+ String appId = this.getView().getFormShowParameter().getAppId();
|
|
|
|
+ if (EmptyUtil.isNotEmpty(appId)) {
|
|
|
|
+ appId = AppMetadataCache.getAppInfo(appId).getId();
|
|
|
|
+ } else {
|
|
|
|
+ appId = AppMetadataCache.getAppInfo("cas").getId();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<Long> authorizedBankOrgId = OrgHelper.getAuthorizedBankOrgId(RequestContext.get().getCurrUserId(), appId, "nckd_cas_arbill", "47156aff000000ac");
|
|
|
|
+ if (!CollectionUtils.isEmpty(authorizedBankOrgId)) {
|
|
|
|
+ this.orgId = (Long)authorizedBankOrgId.get(0);
|
|
|
|
+ this.setValue("org", this.orgId);
|
|
|
|
+ } else {
|
|
|
|
+ this.orgId = null;
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setValueIfAbsent("bizdate", DateUtils.getCurrentDate());
|
|
|
|
+ if (customParams != null && customParams.containsKey("paymentType")) {
|
|
|
|
+ String entrance = (String)customParams.get("paymentType");
|
|
|
|
+ this.setValue("entrance", entrance);
|
|
|
|
+ long billTypeID = 0L;
|
|
|
|
+ QFilter[] qFilters;
|
|
|
|
+ if (PaymentTypeEnum.AP.name().equals(entrance)) {
|
|
|
|
+ qFilters = new QFilter[]{new QFilter("ispartpayment", "=", "1"), new QFilter("biztype", "=", "201")};
|
|
|
|
+ this.setPaymentType(qFilters);
|
|
|
|
+ billTypeID = BillTypeConstants.PAYBILL_PUR;
|
|
|
|
+ } else if (PaymentTypeEnum.SYN.name().equals(entrance)) {
|
|
|
|
+ qFilters = new QFilter[]{new QFilter("biztype", "=", "214")};
|
|
|
|
+ this.setPaymentType(qFilters);
|
|
|
|
+ billTypeID = BillTypeConstants.PAYBILL_SYN;
|
|
|
|
+ } else if (PaymentTypeEnum.SPAN.name().equals(entrance)) {
|
|
|
|
+ qFilters = new QFilter[]{new QFilter("biztype", "=", "217")};
|
|
|
|
+ this.setPaymentType(qFilters);
|
|
|
|
+ billTypeID = BillTypeConstants.PAYBILL_SPAN;
|
|
|
|
+ } else if (PaymentTypeEnum.CASH.name().equals(entrance)) {
|
|
|
|
+ qFilters = new QFilter[]{new QFilter("biztype", "=", "215")};
|
|
|
|
+ this.setPaymentType(qFilters);
|
|
|
|
+ billTypeID = BillTypeConstants.PAYBILL_CASH;
|
|
|
|
+ } else {
|
|
|
|
+ if (PaymentTypeEnum.ER.name().equals(entrance)) {
|
|
|
|
+ qFilters = new QFilter[]{new QFilter("biztype", "=", "211")};
|
|
|
|
+ this.setPaymentType(qFilters);
|
|
|
|
+ } else if (PaymentTypeEnum.OTR.name().equals(entrance)) {
|
|
|
|
+ qFilters = new QFilter[]{new QFilter("biztype", "=", "999")};
|
|
|
|
+ this.setPaymentType(qFilters);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ billTypeID = BillTypeConstants.PAYBILL_OTR;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setValue("issingle", "1");
|
|
|
|
+ if (billTypeID != 0L && QueryServiceHelper.exists("bos_billtype", billTypeID)) {
|
|
|
|
+ this.setValue("billtype", billTypeID);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.fillPayeeType(true);
|
|
|
|
+ if (CasHelper.isEmpty(this.orgId)) {
|
|
|
|
+ this.getView().setEnable(false, new String[]{"bar_save", "bar_submit", "bar_beforesubmit"});
|
|
|
|
+ this.getView().showErrorNotification(ResManager.loadKDString("请先选择付款人", "PaymentBillEdit_30", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ } else if (InitCheckPluginHelper.checkInitForPlugin(this.getView(), this.getDynamicObject("org"), new String[]{"bar_save", "bar_submit", "bar_beforesubmit"})) {
|
|
|
|
+ this.getView().setEnable(true, new String[]{"bar_save", "bar_submit", "bar_beforesubmit"});
|
|
|
|
+ DynamicObject baseCurrency = OrgHelper.getBaseCurrency(this.orgId);
|
|
|
|
+ this.setValue("basecurrency", baseCurrency);
|
|
|
|
+ this.setValue("currency", baseCurrency);
|
|
|
|
+ this.setValue("dpcurrency", baseCurrency);
|
|
|
|
+ this.setValue("feecurrency", baseCurrency);
|
|
|
|
+ this.setDefaultExratetable(this.orgId);
|
|
|
|
+ DynamicObject defaultSettleType = BaseDataHelper.getDefaultSettleType();
|
|
|
|
+ this.setValue("settletype", defaultSettleType);
|
|
|
|
+ DynamicObject defaultPayAccount;
|
|
|
|
+ if (!BaseDataHelper.isSettleTypeCash(defaultSettleType)) {
|
|
|
|
+ defaultPayAccount = AccountBankHelper.getDefaultPayAccount(this.orgId);
|
|
|
|
+ if (defaultPayAccount == null || (!BaseDataHelper.isSettleTypeVirtual(defaultSettleType) || !VisibleVirtualAcctHelper.checkVirtualAcct(defaultPayAccount)) && (BaseDataHelper.isSettleTypeVirtual(defaultSettleType) || VisibleVirtualAcctHelper.checkVirtualAcct(defaultPayAccount))) {
|
|
|
|
+ this.getView().setEnable(false, new String[]{"exchangerate"});
|
|
|
|
+ this.clearBalanceValue();
|
|
|
|
+ } else {
|
|
|
|
+ this.setValue("payeracctbank", defaultPayAccount);
|
|
|
|
+ this.payerAcctBankF7Changed((PropertyChangedArgs)null, defaultPayAccount);
|
|
|
|
+ this.currencyF7Changed(false);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ defaultPayAccount = BusinessDataServiceHelper.loadSingleFromCache(this.orgId, "bos_org");
|
|
|
|
+ this.getModel().setValue("payernumber", defaultPayAccount.getString("number"));
|
|
|
|
+ this.getModel().setValue("uniformsocialcreditcode", defaultPayAccount.getString("uniformsocialcreditcode"));
|
|
|
|
+ this.setPayerInfo4Lb();
|
|
|
|
+ this.setOpenOrg();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setPayerInfo4Lb() {
|
|
|
|
+ DynamicObject org = (DynamicObject)this.getModel().getValue("org");
|
|
|
|
+ if (org != null) {
|
|
|
|
+ this.getModel().setValue("orgv", CasHelper.getLocalValue(org, "name"));
|
|
|
|
+ String defaultUrl = "/icons/pc/entrance/cn_fk_80_80.png";
|
|
|
|
+ Image orgPic = (Image)this.getControl("orgpic");
|
|
|
|
+ orgPic.setUrl(defaultUrl);
|
|
|
|
+ DynamicObject payerAcctBank = (DynamicObject)this.getModel().getValue("payeracctbank");
|
|
|
|
+ DynamicObject payerAcctCash = (DynamicObject)this.getModel().getValue("payeracctcash");
|
|
|
|
+ String v_payerbanknum = "";
|
|
|
|
+ if (payerAcctBank != null) {
|
|
|
|
+ v_payerbanknum = StringUtils.splitString(payerAcctBank.getString("bankaccountnumber"), 4, " ");
|
|
|
|
+ } else if (payerAcctCash != null) {
|
|
|
|
+ v_payerbanknum = payerAcctCash.getString("number");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ((Label)this.getControl("payerbanknumv")).setText(v_payerbanknum);
|
|
|
|
+ DynamicObject payerBank = (DynamicObject)this.getModel().getValue("payerbank");
|
|
|
|
+ String v_payerbankname = "";
|
|
|
|
+ if (payerBank != null) {
|
|
|
|
+ v_payerbankname = CasHelper.getLocalValue(payerBank, "name");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ ((Label)this.getControl("payerbanknamev")).setText(v_payerbankname);
|
|
|
|
+ boolean isCash = BaseDataHelper.isSettleTypeCash((DynamicObject)this.getModel().getValue("settletype"));
|
|
|
|
+ this.getView().setVisible(!isCash, new String[]{"payerbanknamev", "payerbanknamelb"});
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void fillPayeeType(boolean setDefaultValue) {
|
|
|
|
+ ComboEdit payeetypeCbo = (ComboEdit)this.getView().getControl("payeetype");
|
|
|
|
+ List<ComboItem> comboItem = new ArrayList();
|
|
|
|
+ String entrance = (String)this.getModel().getValue("entrance");
|
|
|
|
+ if (PaymentTypeEnum.AP.name().equals(entrance)) {
|
|
|
|
+ comboItem.add(new ComboItem(new LocaleString(AsstActTypeEnum.SUPPLIER.getName()), AsstActTypeEnum.SUPPLIER.getValue()));
|
|
|
|
+ comboItem.add(new ComboItem(new LocaleString(AsstActTypeEnum.CUSTOMER.getName()), AsstActTypeEnum.CUSTOMER.getValue()));
|
|
|
|
+ comboItem.add(new ComboItem(new LocaleString(AsstActTypeEnum.EMPLOYEE.getName()), AsstActTypeEnum.EMPLOYEE.getValue()));
|
|
|
|
+ } else if (!PaymentTypeEnum.SYN.name().equals(entrance) && !PaymentTypeEnum.CASH.name().equals(entrance)) {
|
|
|
|
+ AsstActTypeEnum[] var5 = AsstActTypeEnum.values();
|
|
|
|
+ int var6 = var5.length;
|
|
|
|
+
|
|
|
|
+ for(int var7 = 0; var7 < var6; ++var7) {
|
|
|
|
+ AsstActTypeEnum asstAct = var5[var7];
|
|
|
|
+ comboItem.add(new ComboItem(new LocaleString(asstAct.getName()), asstAct.getValue()));
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ comboItem.add(new ComboItem(new LocaleString(AsstActTypeEnum.COMPANY.getName()), AsstActTypeEnum.COMPANY.getValue()));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ payeetypeCbo.setComboItems(comboItem);
|
|
|
|
+ if (setDefaultValue) {
|
|
|
|
+ this.getModel().setValue("payeetype", ((ComboItem)comboItem.get(0)).getValue());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void afterImportData(ImportDataEventArgs e) {
|
|
|
|
+ super.afterImportData(e);
|
|
|
|
+ PaymentFillPropHelper.fillProp(this.getModel().getDataEntity());
|
|
|
|
+ if (this.getModel().getValue("entrance") == null) {
|
|
|
|
+ this.setEntrance();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void initImportData(InitImportDataEventArgs e) {
|
|
|
|
+ super.initImportData(e);
|
|
|
|
+ this.getPageCache().put("isFromWebApi", "true");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void afterCopyData(EventObject e) {
|
|
|
|
+ super.afterCopyData(e);
|
|
|
|
+ DynamicObject billType = (DynamicObject)this.getValue("billtype");
|
|
|
|
+ if (billType != null && BillTypeConstants.PAYBILL_PUR == billType.getLong("id")) {
|
|
|
|
+ this.getModel().setValue("entrance", PaymentTypeEnum.AP.name());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.fillPayeeType(false);
|
|
|
|
+ this.setValue("sourcetype", SourceTypeEnum.CAS);
|
|
|
|
+ DynamicObject paymentType = (DynamicObject)this.getValue("paymenttype");
|
|
|
|
+ if (paymentType != null && paymentType.getBoolean("ispartpayment")) {
|
|
|
|
+ int count = this.getModel().getEntryRowCount("entry");
|
|
|
|
+
|
|
|
|
+ for(int i = 0; i < count; ++i) {
|
|
|
|
+ this.setValue("e_unlockamt", (BigDecimal)this.getModel().getValue("e_payableamt", i), i);
|
|
|
|
+ this.setValue("e_unsettledamt", (BigDecimal)this.getModel().getValue("e_payableamt", i), i);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.getView().updateView("entry");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.showBalance();
|
|
|
|
+ this.setNetBankAcctVisible();
|
|
|
|
+ DynamicObject accountBank = this.getDynamicObject("payeracctbank");
|
|
|
|
+ this.setPaymentChannelValue(accountBank, Boolean.TRUE);
|
|
|
|
+ DynamicObject crossTranType0 = (DynamicObject)this.getModel().getValue("crosstrantype");
|
|
|
|
+ if (crossTranType0 != null) {
|
|
|
|
+ DynamicObject crossTransType = BusinessDataServiceHelper.loadSingle(crossTranType0.getPkValue(), "bei_crosstrantype");
|
|
|
|
+ DynamicObjectCollection dynamicObjectCollection = crossTransType.getDynamicObjectCollection("entry");
|
|
|
|
+ this.isCrossTranTypeHide(dynamicObjectCollection);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.getModel().deleteEntryData("cas_draftinfo");
|
|
|
|
+ this.getModel().setValue("applyorg", (Object)null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void afterLoadData(EventObject e) {
|
|
|
|
+ super.afterLoadData(e);
|
|
|
|
+ this.showBalance();
|
|
|
|
+ this.setNetBankAcctVisible();
|
|
|
|
+ DynamicObject crossTranType0 = (DynamicObject)this.getModel().getValue("crosstrantype");
|
|
|
|
+ if (crossTranType0 != null) {
|
|
|
|
+ DynamicObject crossTransType = BusinessDataServiceHelper.loadSingle(crossTranType0.getPkValue(), "bei_crosstrantype");
|
|
|
|
+ DynamicObjectCollection dynamicObjectCollection = crossTransType.getDynamicObjectCollection("entry");
|
|
|
|
+ this.isCrossTranTypeHide(dynamicObjectCollection);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void ctrRefundInfoVisibility() {
|
|
|
|
+ logger.info("付款单:PaymentBillEdit.ctrRefundInfoVisibility()");
|
|
|
|
+ this.getView().setVisible(false, new String[]{"bar_refund_save"});
|
|
|
|
+ String billstatus = (String)this.getValue("billstatus");
|
|
|
|
+ this.getView().setVisible(BillStatusEnum.REFUND.getValue().equals(billstatus) || BillStatusEnum.RENOTE.getValue().equals(billstatus), new String[]{"e_refundamt", "e_refunddes"});
|
|
|
|
+ this.getView().setEnable(false, new String[]{"e_refundamt", "e_refunddes"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setNetBankAcctVisible() {
|
|
|
|
+ String paymentchannel = (String)this.getValue("paymentchannel");
|
|
|
|
+ if (null != paymentchannel && this.isAcctBankExistOnlineBankAcct()) {
|
|
|
|
+ this.getView().setVisible(true, new String[]{"netbankacct"});
|
|
|
|
+ } else {
|
|
|
|
+ this.getView().setVisible(false, new String[]{"netbankacct"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setEntrance() {
|
|
|
|
+ DynamicObject billType = (DynamicObject)this.getModel().getValue("billtype");
|
|
|
|
+ if (billType != null) {
|
|
|
|
+ Long billTypeId = billType.getLong("id");
|
|
|
|
+ if (BillTypeConstants.PAYBILL_PUR.equals(billTypeId)) {
|
|
|
|
+ this.getModel().setValue("entrance", PaymentTypeEnum.AP.name());
|
|
|
|
+ } else if (BillTypeConstants.PAYBILL_EXP.equals(billTypeId)) {
|
|
|
|
+ this.getModel().setValue("entrance", PaymentTypeEnum.OTR.name());
|
|
|
|
+ } else if (BillTypeConstants.PAYBILL_OTR.equals(billTypeId)) {
|
|
|
|
+ this.getModel().setValue("entrance", PaymentTypeEnum.OTR.name());
|
|
|
|
+ } else if (BillTypeConstants.PAYBILL_SYN.equals(billTypeId)) {
|
|
|
|
+ this.getModel().setValue("entrance", PaymentTypeEnum.SYN.name());
|
|
|
|
+ } else if (BillTypeConstants.PAYBILL_CASH.equals(billTypeId)) {
|
|
|
|
+ this.getModel().setValue("entrance", PaymentTypeEnum.CASH.name());
|
|
|
|
+ } else if (BillTypeConstants.PAYBILL_SPAN.equals(billTypeId)) {
|
|
|
|
+ this.getModel().setValue("entrance", PaymentTypeEnum.SPAN.name());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void customPrintDataObject(CustomPrintDataObjectArgs e) {
|
|
|
|
+ super.customPrintDataObject(e);
|
|
|
|
+ String entityKey = e.getDataSourceName();
|
|
|
|
+ if ("nckd_cas_arbill".equals(entityKey)) {
|
|
|
|
+ List<DynamicObject> dataEntitiesv = new ArrayList();
|
|
|
|
+ DynamicObject dsv = this.getModel().getDataEntity();
|
|
|
|
+ DynamicObject basecur = (DynamicObject)this.getModel().getValue("basecurrency");
|
|
|
|
+ if (basecur != null) {
|
|
|
|
+ dsv.set("basecurrency", basecur.getString("name"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (dsv.getString("payeetype") != null && dsv.getString("payeetype").length() > 0) {
|
|
|
|
+ dsv.set("payeetype", AsstActTypeEnum.getName(dsv.getString("payeetype")));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ dataEntitiesv.add(dsv);
|
|
|
|
+ e.setDataEntities(dataEntitiesv);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void propertyChanged(PropertyChangedArgs e) {
|
|
|
|
+ String key = e.getProperty().getName();
|
|
|
|
+ ChangeData[] changeData = e.getChangeSet();
|
|
|
|
+ Object newValue = changeData[0].getNewValue();
|
|
|
|
+ Object oldValue = changeData[0].getOldValue();
|
|
|
|
+ int iRow = changeData[0].getRowIndex();
|
|
|
|
+ if (newValue != oldValue) {
|
|
|
|
+ DynamicObject applyDo;
|
|
|
|
+ switch (key) {
|
|
|
|
+ case "paymenttype":
|
|
|
|
+ this.paymentTypeChanged((DynamicObject)newValue);
|
|
|
|
+ break;
|
|
|
|
+ case "bizdate":
|
|
|
|
+ this.exratedateChanged(newValue);
|
|
|
|
+ break;
|
|
|
|
+ case "exratetable":
|
|
|
|
+ this.currencyF7Changed(false);
|
|
|
|
+ this.setRecInfo("dpexratetable", newValue, Boolean.FALSE);
|
|
|
|
+ break;
|
|
|
|
+ case "exratedate":
|
|
|
|
+ this.currencyF7Changed(false);
|
|
|
|
+ this.setRecInfo("dpexratedate", newValue, Boolean.FALSE);
|
|
|
|
+ break;
|
|
|
|
+ case "payeetype":
|
|
|
|
+ this.payeeTypeChanged((String)newValue, true);
|
|
|
|
+ break;
|
|
|
|
+ case "org":
|
|
|
|
+ this.setOpenOrg();
|
|
|
|
+ this.showBalance();
|
|
|
|
+ break;
|
|
|
|
+ case "payeracctbank":
|
|
|
|
+ this.payerAcctBankF7Changed(e, newValue);
|
|
|
|
+ this.isOnlinebankVisibility();
|
|
|
|
+ break;
|
|
|
|
+ case "payeracctcash":
|
|
|
|
+ this.payerAcctCashChanged((DynamicObject)newValue);
|
|
|
|
+ break;
|
|
|
|
+ case "currency":
|
|
|
|
+ this.currencyF7Changed(true);
|
|
|
|
+ this.setRecInfo("dpcurrency", newValue, Boolean.TRUE);
|
|
|
|
+ this.setExratetableVisibility();
|
|
|
|
+ break;
|
|
|
|
+ case "exchangerate":
|
|
|
|
+ case "agreedquotation":
|
|
|
|
+ case "payquotation":
|
|
|
|
+ case "dppayquotation":
|
|
|
|
+ this.calculateAmt();
|
|
|
|
+ break;
|
|
|
|
+ case "settletype":
|
|
|
|
+ this.settleTypeChanged(e, newValue);
|
|
|
|
+ this.settletNumber((DynamicObject)newValue);
|
|
|
|
+ this.isClearSettleType((DynamicObject)oldValue, (DynamicObject)newValue);
|
|
|
|
+ if (this.isClearFeeSettleType()) {
|
|
|
|
+ this.setValue("fee", (Object)null);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "billstatus":
|
|
|
|
+ PaymentBillPluginHelper.fillToolBar(this, this.getModel(), this.getView());
|
|
|
|
+ break;
|
|
|
|
+ case "e_payableamt":
|
|
|
|
+ this.entries_payableAmtChanged((BigDecimal)newValue, oldValue, iRow);
|
|
|
|
+ break;
|
|
|
|
+ case "e_discountamt":
|
|
|
|
+ this.entries_discountAmtChanged((BigDecimal)newValue, oldValue, iRow);
|
|
|
|
+ break;
|
|
|
|
+ case "entrustorg":
|
|
|
|
+ this.entrustorgChange(newValue);
|
|
|
|
+ break;
|
|
|
|
+ case "paymentchannel":
|
|
|
|
+ this.paymentchannelChange();
|
|
|
|
+ break;
|
|
|
|
+ case "e_refundamt":
|
|
|
|
+ this.refundChange((BigDecimal)newValue, (BigDecimal)oldValue, iRow);
|
|
|
|
+ break;
|
|
|
|
+ case "crosstrantype":
|
|
|
|
+ DynamicObject crossTranType0 = (DynamicObject)this.getModel().getValue("crosstrantype");
|
|
|
|
+ if (crossTranType0 != null) {
|
|
|
|
+ applyDo = BusinessDataServiceHelper.loadSingle(crossTranType0.getPkValue(), "bei_crosstrantype");
|
|
|
|
+ DynamicObjectCollection dynamicObjectCollection = applyDo.getDynamicObjectCollection("entry");
|
|
|
|
+ this.isCrossTranTypeHide(dynamicObjectCollection);
|
|
|
|
+ Iterator var16 = dynamicObjectCollection.iterator();
|
|
|
|
+
|
|
|
|
+ while(var16.hasNext()) {
|
|
|
|
+ DynamicObject dyobj = (DynamicObject)var16.next();
|
|
|
|
+ String settleMethod = ResManager.loadKDString("清算方式", "PaymentBillEdit_27", "fi-cas-formplugin", new Object[0]);
|
|
|
|
+ if (kd.bos.dataentity.utils.StringUtils.equals(settleMethod, dyobj.getString("fieldname")) && kd.bos.dataentity.utils.StringUtils.isNotEmpty(dyobj.getString("defaultvalue"))) {
|
|
|
|
+ this.getModel().setValue("settlementmethod", dyobj.getString("defaultvalue"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "applyid":
|
|
|
|
+ applyDo = (DynamicObject)newValue;
|
|
|
|
+ if (applyDo != null) {
|
|
|
|
+ String name = applyDo.getString("name");
|
|
|
|
+ String phone = applyDo.getString("phone");
|
|
|
|
+ this.getModel().beginInit();
|
|
|
|
+ this.getModel().setValue("applyname", name);
|
|
|
|
+ this.getModel().endInit();
|
|
|
|
+ if (kd.bos.dataentity.utils.StringUtils.isNotEmpty(phone)) {
|
|
|
|
+ this.getModel().setValue("applyphone", phone);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.getView().updateView("applyname");
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "reccountry":
|
|
|
|
+ case "paycountry":
|
|
|
|
+ this.setCrossPayValue();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void isCrossTranTypeHide(DynamicObjectCollection dyobj) {
|
|
|
|
+ QFilter qFilter = new QFilter("enable", "=", '1');
|
|
|
|
+ DynamicObject[] crossTransType = BusinessDataServiceHelper.load("bei_crosstranfield", "id,number", new QFilter[]{qFilter});
|
|
|
|
+ List<Long> number = (List)dyobj.stream().map((e) -> {
|
|
|
|
+ return e.getLong("id");
|
|
|
|
+ }).collect(Collectors.toList());
|
|
|
|
+ Arrays.stream(crossTransType).forEach((e) -> {
|
|
|
|
+ if (!number.contains(e.getLong("id"))) {
|
|
|
|
+ this.getView().setVisible(Boolean.FALSE, new String[]{e.getString("number")});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void isClearSettleType(DynamicObject oldValue, DynamicObject newValue) {
|
|
|
|
+ String settletnumber = (String)this.getModel().getValue("settletnumber");
|
|
|
|
+ if (EmptyUtil.isNoEmpty(settletnumber) && Objects.nonNull(oldValue) && SettleMentTypeEnum.CREDIT.getValue().equals(oldValue.getString("settlementtype")) && (Objects.nonNull(newValue) && !SettleMentTypeEnum.CREDIT.getValue().equals(newValue.getString("settlementtype")) || Objects.isNull(newValue))) {
|
|
|
|
+ this.getModel().setValue("settletnumber", (Object)null);
|
|
|
|
+ this.getModel().setValue("sourcebilltype", (Object)null);
|
|
|
|
+ this.getModel().setValue("sourcebillid", (Object)null);
|
|
|
|
+ this.getModel().setValue("sourcetype", "CAS");
|
|
|
|
+ this.getModel().deleteEntryData("billhead_lk");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void settletNumber(DynamicObject newValue) {
|
|
|
|
+ if (!Objects.isNull(newValue)) {
|
|
|
|
+ Object settlementType = newValue.get("settlementtype");
|
|
|
|
+ DynamicObject org = (DynamicObject)this.getModel().getValue("org");
|
|
|
|
+ String appId;
|
|
|
|
+ if (Objects.nonNull(org)) {
|
|
|
|
+ appId = AppMetadataCache.getAppInfo("cdm").getId();
|
|
|
|
+ boolean visible = false;
|
|
|
|
+ if (!Objects.equals(settlementType, SettleMentTypeEnum.BUSINESS.getValue()) && !Objects.equals(settlementType, SettleMentTypeEnum.BANK.getValue())) {
|
|
|
|
+ if (Objects.equals(settlementType, SettleMentTypeEnum.PROMISSORY.getValue())) {
|
|
|
|
+ visible = (Boolean) SystemParamServiceHelper.getAppParameter(appId, "08", (Long)org.getPkValue(), "ischeck");
|
|
|
|
+ } else if (Objects.equals(settlementType, SettleMentTypeEnum.CHECK.getValue())) {
|
|
|
|
+ visible = (Boolean)SystemParamServiceHelper.getAppParameter(appId, "08", (Long)org.getPkValue(), "ispromissorynote");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ visible = (Boolean)SystemParamServiceHelper.getAppParameter(appId, "08", (Long)org.getPkValue(), "isdraft");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.getView().setVisible(!visible, new String[]{"settletnumber"});
|
|
|
|
+ this.getView().setVisible(visible, new String[]{"draftbill"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ appId = this.getString("settletnumber");
|
|
|
|
+ if (PayBillHepler.isCreditSettlement(newValue) && appId != null && appId.trim().length() > 0 && "cas_payapplybill".equals(this.getString("sourcebilltype"))) {
|
|
|
|
+ this.getView().setEnable(false, new String[]{"settletype", "settletnumber"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void refundChange(BigDecimal newValue, BigDecimal oldValue, int iRow) {
|
|
|
|
+ IBillModel model = (IBillModel)this.getModel();
|
|
|
|
+ BigDecimal e_actamt = (BigDecimal)model.getValue("e_actamt", iRow);
|
|
|
|
+ if (BigDecimal.ZERO.compareTo(newValue) != 0) {
|
|
|
|
+ if (BigDecimal.ZERO.compareTo(newValue) > 0) {
|
|
|
|
+ model.setValue("e_refundamt", oldValue, iRow);
|
|
|
|
+ this.getView().showTipNotification(ResManager.loadKDString("退款金额不能为零", "PaymentBillEdit_21", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ } else if (e_actamt.compareTo(newValue) < 0) {
|
|
|
|
+ model.setValue("e_refundamt", oldValue, iRow);
|
|
|
|
+ this.getView().showTipNotification(ResManager.loadKDString("退款金额不能大于付款金额", "PaymentBillEdit_20", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void paymentchannelChange() {
|
|
|
|
+ if (this.isBeiBePay()) {
|
|
|
|
+ this.setValue("fee", (Object)null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.isOnlinebankVisibility();
|
|
|
|
+ this.ctrBeInfoVisibility();
|
|
|
|
+ this.changePayeeValue();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void entrustorgChange(Object newValue) {
|
|
|
|
+ if (null != newValue) {
|
|
|
|
+ this.getModel().setValue("settletype", (Object)null);
|
|
|
|
+ } else {
|
|
|
|
+ DynamicObject defaultSettleType = BaseDataHelper.getDefaultSettleType();
|
|
|
|
+ this.setValue("settletype", defaultSettleType);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void addEntryCache() {
|
|
|
|
+ DynamicObjectCollection entry = this.getModel().getEntryEntity("entry");
|
|
|
|
+ List<Map<String, Object>> list = new ArrayList();
|
|
|
|
+ Iterator var3 = entry.iterator();
|
|
|
|
+
|
|
|
|
+ while(var3.hasNext()) {
|
|
|
|
+ DynamicObject row = (DynamicObject)var3.next();
|
|
|
|
+ Map<String, Object> map = new HashMap();
|
|
|
|
+ map.put("e_expenseitem", row.get("e_expenseitem") == null ? null : ((DynamicObject)row.get("e_expenseitem")).getPkValue());
|
|
|
|
+ map.put("e_payableamt", row.get("e_payableamt"));
|
|
|
|
+ map.put("project", row.get("project") == null ? null : row.getDynamicObject("project").getPkValue());
|
|
|
|
+ map.put("e_fundflowitem", row.get("e_fundflowitem") == null ? null : row.getDynamicObject("e_fundflowitem").getPkValue());
|
|
|
|
+ map.put("e_remark", row.get("e_remark"));
|
|
|
|
+ list.add(map);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Map<String, List<Map<String, Object>>> map = new HashMap();
|
|
|
|
+ map.put("entry", list);
|
|
|
|
+ String mapJson = SerializationUtils.toJsonString(map);
|
|
|
|
+ this.getPageCache().put("entry", mapJson);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void paymentTypeChanged(DynamicObject paymentType) {
|
|
|
|
+ String entrance = (String)this.getModel().getValue("entrance");
|
|
|
|
+ boolean isAp;
|
|
|
|
+ if (paymentType != null && PaymentTypeEnum.OTR.name().equals(entrance)) {
|
|
|
|
+ isAp = paymentType.getBoolean("ispartpayment");
|
|
|
|
+ Long billTypeID = this.getPk("billtype");
|
|
|
|
+ boolean isChange = false;
|
|
|
|
+ if (isAp) {
|
|
|
|
+ if (!BillTypeConstants.PAYBILL_EXP.equals(billTypeID)) {
|
|
|
|
+ this.addEntryCache();
|
|
|
|
+ this.setValue("billtype", BusinessDataServiceHelper.loadSingleFromCache(BillTypeConstants.PAYBILL_EXP, "bos_billtype"));
|
|
|
|
+ isChange = true;
|
|
|
|
+ }
|
|
|
|
+ } else if (!BillTypeConstants.PAYBILL_OTR.equals(billTypeID)) {
|
|
|
|
+ this.addEntryCache();
|
|
|
|
+ this.setValue("billtype", BusinessDataServiceHelper.loadSingleFromCache(BillTypeConstants.PAYBILL_OTR, "bos_billtype"));
|
|
|
|
+ isChange = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (isChange) {
|
|
|
|
+ this.getModel().beginInit();
|
|
|
|
+ this.setValue("paymenttype", paymentType);
|
|
|
|
+ this.getModel().endInit();
|
|
|
|
+ this.getView().updateView("paymenttype");
|
|
|
|
+ Label payeebanknumvLable = (Label)this.getControl("payeebanknumv");
|
|
|
|
+ payeebanknumvLable.setText("");
|
|
|
|
+ Label recaccbanknamevLable = (Label)this.getControl("recaccbanknamev");
|
|
|
|
+ recaccbanknamevLable.setText("");
|
|
|
|
+ Label payeebanknamevLable = (Label)this.getControl("payeebanknamev");
|
|
|
|
+ payeebanknamevLable.setText("");
|
|
|
|
+ Label recbanknumbervLable = (Label)this.getControl("recbanknumberv");
|
|
|
|
+ recbanknumbervLable.setText("");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setEntryAmountCaption();
|
|
|
|
+ if (paymentType != null) {
|
|
|
|
+ isAp = paymentType.getBoolean("ispartpayment");
|
|
|
|
+ this.getView().setVisible(isAp, new String[]{"settleorg"});
|
|
|
|
+ this.settleOrg(false);
|
|
|
|
+ DynamicObject fundflowitem = paymentType.getDynamicObject("fundflowitem");
|
|
|
|
+ this.fillFundflowItem(true, fundflowitem);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void settleTypeChanged(PropertyChangedArgs e, Object newValue) {
|
|
|
|
+ this.ctrBeInfoVisibility();
|
|
|
|
+ DynamicObject settleType = (DynamicObject)newValue;
|
|
|
|
+ DynamicObject accountCash;
|
|
|
|
+ if (BaseDataHelper.isSettleTypeCash(settleType)) {
|
|
|
|
+ this.setValue("payeracctbank", (Object)null);
|
|
|
|
+ this.setValue("payerbank", (Object)null);
|
|
|
|
+ accountCash = this.getDynamicObject("payeracctcash");
|
|
|
|
+ if (accountCash == null) {
|
|
|
|
+ this.setValue("payeracctcash", AccountCashHelper.getDefaultAccountcash(this.getPk("org"), "payer"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setValue("isdiffcur", "0");
|
|
|
|
+ this.getView().setVisible(false, new String[]{"isdiffcur"});
|
|
|
|
+ } else {
|
|
|
|
+ this.setValue("payeracctcash", (Object)null);
|
|
|
|
+ this.getView().setVisible(true, new String[]{"isdiffcur"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setPayerInfo4Lb();
|
|
|
|
+ accountCash = this.getDynamicObject("payeracctbank");
|
|
|
|
+ this.setPaymentChannelValue(accountCash, Boolean.TRUE);
|
|
|
|
+ this.changePayeeValue();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void ctrBeInfoVisibility() {
|
|
|
|
+ boolean isBePay = this.isBePay();
|
|
|
|
+ this.getView().setVisible(!this.isDraft(), new String[]{"settletnumber"});
|
|
|
|
+ this.getView().setVisible(this.isDraft(), new String[]{"draftbill"});
|
|
|
|
+ this.getView().setVisible(isBePay, new String[]{"usage"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean isDraft() {
|
|
|
|
+ DynamicObject settleType = (DynamicObject)this.getModel().getValue("settletype");
|
|
|
|
+ if (settleType == null) {
|
|
|
|
+ return false;
|
|
|
|
+ } else {
|
|
|
|
+ String settlementType = settleType.getString("settlementtype");
|
|
|
|
+ return Objects.equals(settlementType, SettleMentTypeEnum.BANK.getValue()) || Objects.equals(settlementType, SettleMentTypeEnum.BUSINESS.getValue()) || Objects.equals(settlementType, SettleMentTypeEnum.CHECK.getValue()) || Objects.equals(settlementType, SettleMentTypeEnum.PROMISSORY.getValue());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void exratedateChanged(Object newValue) {
|
|
|
|
+ if (newValue != null) {
|
|
|
|
+ this.setValue("exratedate", newValue);
|
|
|
|
+ this.setValue("dpexratedate", newValue);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void currencyF7Changed(boolean reBalance) {
|
|
|
|
+ if (reBalance) {
|
|
|
|
+ this.showBalance();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setExchangerateEditable();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void entries_payableAmtChanged(BigDecimal payableAmt, Object oldValue, int iRow) {
|
|
|
|
+ IBillModel model = (IBillModel)this.getModel();
|
|
|
|
+ BigDecimal discountAmt = (BigDecimal)model.getValue("e_discountamt", iRow);
|
|
|
|
+ discountAmt = discountAmt != null ? discountAmt : BigDecimal.ZERO;
|
|
|
|
+ if (discountAmt.abs().compareTo(payableAmt.abs()) > 0) {
|
|
|
|
+ this.getView().showTipNotification(String.format(ResManager.loadKDString("现金折扣绝对值不允许大于应付金额绝对值!", "PaymentBillEdit_2", "fi-cas-formplugin", new Object[0])));
|
|
|
|
+ this.setValue("e_payableamt", oldValue, iRow);
|
|
|
|
+ } else {
|
|
|
|
+ this.calculateAmt();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void entries_discountAmtChanged(BigDecimal discountAmt, Object oldValue, int iRow) {
|
|
|
|
+ IBillModel model = (IBillModel)this.getModel();
|
|
|
|
+ BigDecimal payableAmt = (BigDecimal)model.getValue("e_payableamt", iRow);
|
|
|
|
+ payableAmt = payableAmt != null ? payableAmt : BigDecimal.ZERO;
|
|
|
|
+ if (discountAmt.abs().compareTo(payableAmt.abs()) > 0) {
|
|
|
|
+ this.getView().showTipNotification(String.format(ResManager.loadKDString("现金折扣绝对值不允许大于应付金额绝对值!", "PaymentBillEdit_2", "fi-cas-formplugin", new Object[0])));
|
|
|
|
+ this.setValue("e_discountamt", oldValue, iRow);
|
|
|
|
+ } else {
|
|
|
|
+ this.calculateAmt();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void calculateAmt() {
|
|
|
|
+ DynamicObject basecurrency = this.getDynamicObject("basecurrency");
|
|
|
|
+ BigDecimal exchangeRate = (BigDecimal)this.getModel().getValue("exchangerate");
|
|
|
|
+ String quotation = this.getString("payquotation");
|
|
|
|
+ int round = 10;
|
|
|
|
+ if (basecurrency != null) {
|
|
|
|
+ round = basecurrency.getInt("amtprecision");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int count = this.getModel().getEntryRowCount("entry");
|
|
|
|
+ BigDecimal sumAmt = BigDecimal.ZERO;
|
|
|
|
+ BigDecimal sumLocalAmt = BigDecimal.ZERO;
|
|
|
|
+
|
|
|
|
+ for(int i = 0; i < count; ++i) {
|
|
|
|
+ DynamicObject rowInfo = this.getModel().getEntryRowEntity("entry", i);
|
|
|
|
+ BigDecimal payAmount = rowInfo.getBigDecimal("e_payableamt");
|
|
|
|
+ if (payAmount != null) {
|
|
|
|
+ this.setValue("e_payablelocamt", QuotationHelper.callToCurrency(payAmount, exchangeRate, quotation, round), i);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ BigDecimal discountAmt = rowInfo.getBigDecimal("e_discountamt");
|
|
|
|
+ if (discountAmt != null) {
|
|
|
|
+ this.setValue("e_discountlocamt", QuotationHelper.callToCurrency(discountAmt, exchangeRate, quotation, round), i);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (payAmount != null && discountAmt != null) {
|
|
|
|
+ BigDecimal actAmt = payAmount.subtract(discountAmt);
|
|
|
|
+ sumAmt = sumAmt.add(actAmt);
|
|
|
|
+ BigDecimal actLocalAmt = BigDecimal.ZERO;
|
|
|
|
+ actLocalAmt = QuotationHelper.callToCurrency(actAmt, exchangeRate, quotation, round);
|
|
|
|
+ sumLocalAmt = sumLocalAmt.add(actLocalAmt);
|
|
|
|
+ this.setValue("e_actamt", actAmt, i);
|
|
|
|
+ this.setValue("e_localamt", actLocalAmt, i);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setValue("e_unsettledamt", payAmount, i);
|
|
|
|
+ if (payAmount != null) {
|
|
|
|
+ this.setValue("e_unsettledlocalamt", QuotationHelper.callToCurrency(payAmount, exchangeRate, quotation, round), i);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setValue("e_unlockamt", payAmount, i);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setValue("actpayamt", sumAmt);
|
|
|
|
+ this.setValue("localamt", sumLocalAmt);
|
|
|
|
+ this.calculateDpAmt();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void calculateDpAmt() {
|
|
|
|
+ DynamicObject dpcurrency = this.getDynamicObject("dpcurrency");
|
|
|
|
+ DynamicObject basecurrency = this.getDynamicObject("basecurrency");
|
|
|
|
+ DynamicObject currency = this.getDynamicObject("currency");
|
|
|
|
+ String dppayquotation = this.getString("dppayquotation");
|
|
|
|
+ String agreedquotation = this.getString("agreedquotation");
|
|
|
|
+ int round = 10;
|
|
|
|
+ if (basecurrency != null) {
|
|
|
|
+ round = basecurrency.getInt("amtprecision");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ int dppayround = 10;
|
|
|
|
+ if (dpcurrency != null) {
|
|
|
|
+ dppayround = dpcurrency.getInt("amtprecision");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ BigDecimal actPayAmt = this.getBigDecimal("actpayamt");
|
|
|
|
+ if (currency != null) {
|
|
|
|
+ actPayAmt = actPayAmt.setScale(currency.getInt("amtprecision"), 4);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ BigDecimal localAmt = this.getBigDecimal("localamt");
|
|
|
|
+ BigDecimal agreedRate = this.getBigDecimal("agreedrate");
|
|
|
|
+ if (agreedRate.compareTo(new BigDecimal(0)) != 0) {
|
|
|
|
+ BigDecimal dpAmt = BigDecimal.ZERO;
|
|
|
|
+ dpAmt = QuotationHelper.callToCurrency(actPayAmt, agreedRate, agreedquotation, dppayround);
|
|
|
|
+ BigDecimal dpExchangeRate = this.getBigDecimal("dpexchangerate");
|
|
|
|
+ BigDecimal dpLocalAmt = BigDecimal.ZERO;
|
|
|
|
+ dpLocalAmt = QuotationHelper.callToCurrency(dpAmt, dpExchangeRate, dppayquotation, round);
|
|
|
|
+ this.getModel().beginInit();
|
|
|
|
+ this.setValue("dpamt", dpAmt);
|
|
|
|
+ this.setValue("dplocalamt", dpLocalAmt);
|
|
|
|
+ this.setValue("lossamt", localAmt.subtract(dpLocalAmt));
|
|
|
|
+ this.getModel().endInit();
|
|
|
|
+ this.getView().updateView("dpamt");
|
|
|
|
+ this.getView().updateView("dplocalamt");
|
|
|
|
+ this.getView().updateView("lossamt");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void payeeTypeChanged(String payeeType, boolean isChanged) {
|
|
|
|
+ if (isChanged) {
|
|
|
|
+ this.getView().setVisible(true, new String[]{"flex_addpayee"});
|
|
|
|
+ this.getView().setVisible(false, new String[]{"flex_payeeinfo"});
|
|
|
|
+ this.clearPayeeValue();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void clearPayeeValue() {
|
|
|
|
+ Object value = null;
|
|
|
|
+ this.setValue("payeeformid", value);
|
|
|
|
+ this.setValue("payee", value);
|
|
|
|
+ this.setValue("payeename", value);
|
|
|
|
+ this.setValue("payeeaccformid", value);
|
|
|
|
+ this.setValue("payeeacctbank", value);
|
|
|
|
+ this.setValue("payeebanknum", value);
|
|
|
|
+ this.setValue("payeebank", value);
|
|
|
|
+ this.setValue("payeebankname", value);
|
|
|
|
+ this.setValue("recaccbankname", value);
|
|
|
|
+ this.setValue("recbanknumber", value);
|
|
|
|
+ this.setValue("payeenumber", (Object)null);
|
|
|
|
+ this.setValue("supplierBankId", (Object)null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void payerAcctBankF7Changed(PropertyChangedArgs e, Object newValue) {
|
|
|
|
+ DynamicObject payerAcctBank = (DynamicObject)newValue;
|
|
|
|
+ this.ctrBeInfoVisibility();
|
|
|
|
+ this.showBalance();
|
|
|
|
+ if (!FeePayerEnum.REC.getValue().equals(this.getString("feepayer"))) {
|
|
|
|
+ this.setValue("feeactbank", payerAcctBank);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (payerAcctBank == null) {
|
|
|
|
+ this.setValue("payerbank", (Object)null);
|
|
|
|
+ this.setPaymentChannelValue((DynamicObject)null, Boolean.TRUE);
|
|
|
|
+ this.setCurrencyEditable();
|
|
|
|
+ } else {
|
|
|
|
+ this.setValue("payerbank", payerAcctBank.getDynamicObject("bank"));
|
|
|
|
+ Boolean isDiffCur = (Boolean)this.getValue("isdiffcur");
|
|
|
|
+ DynamicObject payCurrency = null;
|
|
|
|
+ if (isDiffCur) {
|
|
|
|
+ payCurrency = this.getDynamicObject("dpcurrency");
|
|
|
|
+ } else {
|
|
|
|
+ payCurrency = this.getDynamicObject("currency");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ boolean containCurrency = AccountBankHelper.isAcctBankContainCurrency("bd_accountbanks", payerAcctBank.getPkValue(), payCurrency);
|
|
|
|
+ if (!containCurrency) {
|
|
|
|
+ Long defaultCurrencyId = (Long)payerAcctBank.get("defaultcurrency.id");
|
|
|
|
+ if (isDiffCur) {
|
|
|
|
+ this.setValue("dpcurrency", defaultCurrencyId);
|
|
|
|
+ } else if (this.isBotpCreate()) {
|
|
|
|
+ this.setValueIfAbsent("currency", defaultCurrencyId);
|
|
|
|
+ } else {
|
|
|
|
+ this.setValue("currency", defaultCurrencyId);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setCurrencyEditable();
|
|
|
|
+ this.setOpenOrg();
|
|
|
|
+ this.setPaymentChannelValue(payerAcctBank, Boolean.TRUE);
|
|
|
|
+ this.setSettleTypeValue(payerAcctBank);
|
|
|
|
+ this.settleOrg(true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setPaymentChannelValue(DynamicObject payerAcctBank, boolean isAdd) {
|
|
|
|
+ List<ComboItem> comboItems = new ArrayList(1);
|
|
|
|
+ ComboEdit paymentChannel = (ComboEdit)this.getControl("paymentchannel");
|
|
|
|
+ DynamicObject settleType = this.getDynamicObject("settletype");
|
|
|
|
+ ComboItem comboItem = new ComboItem();
|
|
|
|
+ comboItem.setValue(PaymentChannelEnum.COUNTER.getValue());
|
|
|
|
+ comboItem.setCaption(new LocaleString(PaymentChannelEnum.COUNTER.getName()));
|
|
|
|
+ ComboItem selectedItem = comboItem;
|
|
|
|
+ comboItems.add(comboItem);
|
|
|
|
+ DynamicObject billtype = this.getDynamicObject("billtype");
|
|
|
|
+ if (null != payerAcctBank && (settleType == null || !"14".equals(settleType.getString("settlementtype"))) && (billtype == null || !BillTypeConstants.PAYBILL_CASH.equals(billtype.getPkValue()))) {
|
|
|
|
+ ComboItem item;
|
|
|
|
+ if (payerAcctBank.getBoolean("isopenbank")) {
|
|
|
|
+ item = new ComboItem();
|
|
|
|
+ item.setValue(PaymentChannelEnum.ONLINEBANK.getValue());
|
|
|
|
+ item.setCaption(new LocaleString(PaymentChannelEnum.ONLINEBANK.getName()));
|
|
|
|
+ selectedItem = item;
|
|
|
|
+ comboItems.add(item);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (payerAcctBank.getBoolean("issetbankinterface")) {
|
|
|
|
+ item = new ComboItem();
|
|
|
|
+ item.setValue(PaymentChannelEnum.BEI.getValue());
|
|
|
|
+ item.setCaption(new LocaleString(ResManager.loadKDString(PaymentChannelEnum.BEI.getName(), "PaymentBillEdit_18", "fi-cas-formplugin", new Object[0])));
|
|
|
|
+ selectedItem = item;
|
|
|
|
+ comboItems.add(item);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String defaultPaymentChannel = "";
|
|
|
|
+ String defChannel;
|
|
|
|
+ if (Objects.nonNull(settleType)) {
|
|
|
|
+ defChannel = settleType.getString("paymentchannel");
|
|
|
|
+ defaultPaymentChannel = settleType.getString("defaultpaymentchannel");
|
|
|
|
+ if (kd.bos.dataentity.utils.StringUtils.isNotEmpty(defChannel)) {
|
|
|
|
+ List<String> paymentChannels = (List)Arrays.stream(defChannel.split(",")).filter(kd.bos.dataentity.utils.StringUtils::isNotEmpty).collect(Collectors.toList());
|
|
|
|
+ comboItems.removeIf((i) -> {
|
|
|
|
+ return !paymentChannels.contains(i.getValue());
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ paymentChannel.setComboItems(comboItems);
|
|
|
|
+ if (isAdd || this.isBotpNew() && Objects.isNull(this.getModel().getValue("paymentchannel"))) {
|
|
|
|
+ defChannel = selectedItem.getValue();
|
|
|
|
+ if (settleType != null && !SettleMentTypeEnum.COLLECT.getValue().equals(settleType.getString("settlementtype"))) {
|
|
|
|
+ defChannel = PaymentChannelEnum.COUNTER.getValue();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (kd.bos.dataentity.utils.StringUtils.isNotEmpty(defaultPaymentChannel)) {
|
|
|
|
+ defChannel = defaultPaymentChannel;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String finalDefChannel = defChannel;
|
|
|
|
+ boolean contains = comboItems.stream().anyMatch((itemx) -> {
|
|
|
|
+ return Objects.equals(finalDefChannel, itemx.getValue());
|
|
|
|
+ });
|
|
|
|
+ if (!contains) {
|
|
|
|
+ defChannel = null;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ("bei".equalsIgnoreCase(defChannel)) {
|
|
|
|
+ this.getModel().setValue("fee", (Object)null);
|
|
|
|
+ this.getModel().setValue("singlestream", Boolean.FALSE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.getModel().setValue("paymentchannel", defChannel);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ paymentChannel.setComboItems(comboItems);
|
|
|
|
+ if (isAdd) {
|
|
|
|
+ this.getModel().setValue("paymentchannel", comboItem.getValue());
|
|
|
|
+ if ("bei".equalsIgnoreCase(comboItem.getValue())) {
|
|
|
|
+ this.getModel().setValue("fee", (Object)null);
|
|
|
|
+ this.getModel().setValue("singlestream", Boolean.FALSE);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void payerAcctCashChanged(DynamicObject acctCash) {
|
|
|
|
+ if (acctCash == null) {
|
|
|
|
+ this.setValue("currency", this.getDynamicObject("basecurrency"));
|
|
|
|
+ this.setCurrencyEditable();
|
|
|
|
+ this.showBalance();
|
|
|
|
+ } else {
|
|
|
|
+ Boolean isDiffCur = (Boolean)this.getValue("isdiffcur");
|
|
|
|
+ DynamicObject payCurrency = null;
|
|
|
|
+ if (isDiffCur) {
|
|
|
|
+ payCurrency = this.getDynamicObject("dpcurrency");
|
|
|
|
+ } else {
|
|
|
|
+ payCurrency = this.getDynamicObject("currency");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ boolean containCurrency = AccountBankHelper.isAcctBankContainCurrency("cas_accountcash", acctCash.getPkValue(), payCurrency);
|
|
|
|
+ if (!containCurrency) {
|
|
|
|
+ DynamicObject defaultCurrency = acctCash.getDynamicObject("defaultcurrency");
|
|
|
|
+ if (isDiffCur) {
|
|
|
|
+ this.setValue("dpcurrency", defaultCurrency);
|
|
|
|
+ } else if (this.isBotpCreate()) {
|
|
|
|
+ this.setValueIfAbsent("currency", defaultCurrency);
|
|
|
|
+ } else {
|
|
|
|
+ this.setValue("currency", defaultCurrency);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setCurrencyEditable();
|
|
|
|
+ this.setValue("openorg", acctCash.getDynamicObject("openorg"));
|
|
|
|
+ this.showBalance();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setCurrencyEditable() {
|
|
|
|
+ Boolean isCurrencyEditable = Boolean.TRUE;
|
|
|
|
+ DynamicObject settleType = this.getDynamicObject("settletype");
|
|
|
|
+ boolean isCash = BaseDataHelper.isSettleTypeCash(settleType);
|
|
|
|
+ DynamicObject accountCash;
|
|
|
|
+ if (isCash) {
|
|
|
|
+ accountCash = this.getDynamicObject("payeracctcash");
|
|
|
|
+ if (accountCash != null) {
|
|
|
|
+ isCurrencyEditable = !accountCash.getBoolean("isbycurrency");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ accountCash = this.getDynamicObject("payeracctbank");
|
|
|
|
+ if (accountCash != null) {
|
|
|
|
+ isCurrencyEditable = accountCash.getBoolean("ismulcurrency");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Boolean isDiffCur = (Boolean)this.getValue("isdiffcur");
|
|
|
|
+ if (isDiffCur) {
|
|
|
|
+ this.getView().setEnable(isCurrencyEditable, new String[]{"dpcurrency"});
|
|
|
|
+ } else {
|
|
|
|
+ this.getView().setEnable(isCurrencyEditable, new String[]{"currency"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (this.isBotpCreate()) {
|
|
|
|
+ this.getView().setEnable(false, new String[]{"currency"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void showBalance() {
|
|
|
|
+ this.getView().setEnable(true, new String[]{"bar_save", "bar_submit", "bar_beforesubmit"});
|
|
|
|
+ if (this.getModel().getValue("org") != null) {
|
|
|
|
+ Long orgID = this.getPk("org");
|
|
|
|
+ Long acctBankId = this.getPk("payeracctbank");
|
|
|
|
+ Long acctCashId = this.getPk("payeracctcash");
|
|
|
|
+ Long currencyId = this.getPk("currency");
|
|
|
|
+ boolean var5 = (Boolean)this.getValue("isdiffcur");
|
|
|
|
+ if (var5) {
|
|
|
|
+ currencyId = this.getPk("dpcurrency");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (orgID != null && (acctBankId != null || acctCashId != null) && currencyId != null) {
|
|
|
|
+ DynamicObject currency = BusinessDataServiceHelper.loadSingleFromCache(currencyId, "bd_currency");
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ BigDecimal currentBalance = BigDecimal.ZERO;
|
|
|
|
+ if (CasHelper.isNotEmpty(acctBankId)) {
|
|
|
|
+ DynamicObject acctBank = BusinessDataServiceHelper.loadSingle(acctBankId, "am_accountbank", "acctclassify");
|
|
|
|
+ if (Objects.equals(acctBank.get("acctclassify"), AcctClassifyEnum.I.getValue())) {
|
|
|
|
+ currentBalance = getCurrBalance(acctBank);
|
|
|
|
+ } else {
|
|
|
|
+ String balanceType = SystemParameterFcsHelper.getParameterString(orgID, "balancevalue");
|
|
|
|
+ Object result = DispatchServiceHelper.invokeBizService("tmc", "fbp", "balanceModelService", "getRunningBalance", new Object[]{balanceType, acctBankId, currencyId});
|
|
|
|
+ BizBalanceModelBean bizBalanceModelBean = (BizBalanceModelBean)SerializationUtils.fromJsonString(SerializationUtils.toJsonString(result), BizBalanceModelBean.class);
|
|
|
|
+ currentBalance = bizBalanceModelBean.getAmount();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (CasHelper.isNotEmpty(acctCashId)) {
|
|
|
|
+ currentBalance = AcctBalanceHelper.getAccountCashCurrBalance(orgID, acctCashId, currencyId, new Date());
|
|
|
|
+ ((Label)this.getControl("balancelb")).setText(ResManager.loadKDString("账面余额:", "PaymentBillEdit_4", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ LocaleString content = new LocaleString(ResManager.loadKDString("付款账户为现金账户时,账面余额即为当前时点现金日记账账面余额。", "PaymentBillEdit_3", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ ((Label)this.getControl("balancelb")).addTips(new Tips("text", (LocaleString)null, content, false, (List)null));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.labCurrencySign = currency.getString("sign");
|
|
|
|
+ this.currencyAmtprecision = currency.getInt("amtprecision");
|
|
|
|
+ this.initFormat();
|
|
|
|
+ ((Label)this.getControl("balancev")).setText(this.currencyFormat.format(currentBalance == null ? 0 : currentBalance));
|
|
|
|
+ } catch (Exception var12) {
|
|
|
|
+ this.clearBalanceValue();
|
|
|
|
+ logger.error(var12);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.clearBalanceValue();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static BigDecimal getCurrBalance(DynamicObject bankAcct) {
|
|
|
|
+ DynamicObject[] load = BusinessDataServiceHelper.load("ifm_accountbalance", "amount", (new QFilter("accountbank", "=", bankAcct.getPkValue())).toArray(), "bizdate desc", 1);
|
|
|
|
+ return load.length > 0 ? load[0].getBigDecimal("amount") : BigDecimal.ZERO;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void clearBalanceValue() {
|
|
|
|
+ ((Label)this.getControl("balancelb")).setText(ResManager.loadKDString("即时余额:", "PaymentBillEdit_5", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ LocaleString content = new LocaleString(ResManager.loadKDString("付款账户当前时点余额。付款账户即时余额取值来源有银企互联余额表、出纳/资金结算日记账;系统支持四种取值模式:(1)完全取自余额表;(2)完全取自日记账;(3)优先取余额表,再取日记账;(4)开通银企取余额表,未开通银企取日记账。具体采取何种模式请前往【系统服务云】-【配置工具】-【系统参数】-【资金云】-【资金公共服务】中查看。", "PaymentBillEdit_6", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ ((Label)this.getControl("balancelb")).addTips(new Tips("text", (LocaleString)null, content, false, (List)null));
|
|
|
|
+ DynamicObject currency = this.getDynamicObject("currency");
|
|
|
|
+ Boolean isDiffCur = (Boolean)this.getValue("isdiffcur");
|
|
|
|
+ if (isDiffCur) {
|
|
|
|
+ currency = this.getDynamicObject("dpcurrency");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!CasHelper.isEmpty(currency)) {
|
|
|
|
+ this.labCurrencySign = currency.getString("sign");
|
|
|
|
+ this.currencyAmtprecision = currency.getInt("amtprecision");
|
|
|
|
+ this.initFormat();
|
|
|
|
+ ((Label)this.getControl("balancev")).setText(this.currencyFormat.format(BigDecimal.ZERO));
|
|
|
|
+ } else {
|
|
|
|
+ ((Label)this.getControl("balancev")).setText("¥0.00");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void click(EventObject evt) {
|
|
|
|
+ super.click(evt);
|
|
|
|
+ this.getView().setEnable(true, 0, new String[]{"e_payableamt", "e_discountamt", "contractnumber", "e_corebillno", "e_corebillentryseq"});
|
|
|
|
+ Control c = (Control)evt.getSource();
|
|
|
|
+ switch (c.getKey().toLowerCase()) {
|
|
|
|
+ case "changepayer":
|
|
|
|
+ this.changePayerPage();
|
|
|
|
+ break;
|
|
|
|
+ case "addpayeelb1":
|
|
|
|
+ this.addPayee();
|
|
|
|
+ break;
|
|
|
|
+ case "addpayeelb2":
|
|
|
|
+ this.addPayee();
|
|
|
|
+ break;
|
|
|
|
+ case "changepayee":
|
|
|
|
+ this.changePayeePage();
|
|
|
|
+ break;
|
|
|
|
+ case "settletnumber":
|
|
|
|
+ this.settleNumberClick();
|
|
|
|
+ break;
|
|
|
|
+ case "applyname":
|
|
|
|
+ BasedataEdit applyF7 = (BasedataEdit)this.getControl("applyid");
|
|
|
|
+ applyF7.click();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void settleNumberClick() {
|
|
|
|
+ DynamicObject settleType = (DynamicObject)this.getModel().getValue("settletype");
|
|
|
|
+ if (EmptyUtil.isNoEmpty(settleType) && SettleMentTypeEnum.CREDIT.getValue().equals(settleType.getString("settlementtype"))) {
|
|
|
|
+ String appId = AppMetadataCache.getAppInfo("lc").getId();
|
|
|
|
+ DynamicObject org = (DynamicObject)this.getModel().getValue("org");
|
|
|
|
+ AppParam param = new AppParam();
|
|
|
|
+ param.setAppId(appId);
|
|
|
|
+ param.setOrgId(org.getLong("id"));
|
|
|
|
+ param.setViewType("08");
|
|
|
|
+ String paymethod = (String)SystemParamServiceHelper.loadAppParameterFromCache(param, "paymethod");
|
|
|
|
+ if ("0".equals(paymethod)) {
|
|
|
|
+ CloseCallBack closeCallBack = new CloseCallBack(this, "settletnumber");
|
|
|
|
+ QFilter qFilterSour = new QFilter("arrivalstatus", "=", "arrival_confirm");
|
|
|
|
+ qFilterSour.and("arrivalway", "!=", "protest");
|
|
|
|
+ qFilterSour.and(QFilter.sqlExpress("arrivalamount", ">", "flockamount"));
|
|
|
|
+ qFilterSour.and("isinit", "=", '0');
|
|
|
|
+ qFilterSour.and("eassrcid", "=", "");
|
|
|
|
+ CasBotpHelper.doBeforeDraw(this.getView(), "lc_arrival", this.getModel().getDataEntityType().getName(), false, qFilterSour, closeCallBack);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void changePayeePage() {
|
|
|
|
+ this.opreatePayee(Boolean.FALSE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void addPayee() {
|
|
|
|
+ this.opreatePayee(Boolean.TRUE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void opreatePayee(Boolean isAddNew) {
|
|
|
|
+ Map<String, Object> paramMap = new HashMap();
|
|
|
|
+ if (this.isHwControl()) {
|
|
|
|
+ paramMap.put("hw_payeesiteid", this.getValue("hw_payeesiteid"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ paramMap.put("org", this.getPk("org"));
|
|
|
|
+ paramMap.put("asstActType", this.getString("payeetype"));
|
|
|
|
+ paramMap.put("isBE", this.isBePay());
|
|
|
|
+ paramMap.put("billtype", Optional.ofNullable(this.getDynamicObject("billtype")).map(DataEntityBase::getPkValue).orElse((Object)null));
|
|
|
|
+ FormShowParameter parameter = new FormShowParameter();
|
|
|
|
+ parameter.getOpenStyle().setShowType(ShowType.Modal);
|
|
|
|
+ parameter.setFormId("cas_addpayee");
|
|
|
|
+ parameter.setStatus(isAddNew ? OperationStatus.ADDNEW : OperationStatus.EDIT);
|
|
|
|
+ parameter.getCustomParams().putAll(paramMap);
|
|
|
|
+ parameter.setCloseCallBack(new CloseCallBack(this, "addpayee"));
|
|
|
|
+ this.getView().showForm(parameter);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void addPayeeValue(Map<String, Object> resultMap) {
|
|
|
|
+ this.setValue("payeeformid", resultMap.get("payeeformid"));
|
|
|
|
+ this.setValue("payee", resultMap.get("payee"));
|
|
|
|
+ this.setValue("payeename", resultMap.get("payeename"));
|
|
|
|
+ if (this.isHwControl()) {
|
|
|
|
+ this.setValue("hw_payeesiteid", resultMap.get("hw_payeesiteid"));
|
|
|
|
+ this.setValue("scorg", resultMap.get("scorg"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setValue("payeenumber", resultMap.get("payeenumber"));
|
|
|
|
+ this.setValue("payeeaccformid", resultMap.get("payeeaccformid"));
|
|
|
|
+ this.setValue("payeeacctbank", resultMap.get("payeeacctbank"));
|
|
|
|
+ this.setValue("payeeacctcash", resultMap.get("payeeacctcash"));
|
|
|
|
+ this.setValue("payeebanknum", resultMap.get("payeebanknum"));
|
|
|
|
+ this.setValue("payeebank", resultMap.get("payeebank"));
|
|
|
|
+ this.setValue("payeebankname", resultMap.get("payeebankname"));
|
|
|
|
+ this.setValue("recaccbankname", resultMap.get("recaccbankname"));
|
|
|
|
+ String beBankNumber = (String)resultMap.get("recbanknumber");
|
|
|
|
+ this.setValue("recbanknumber", beBankNumber);
|
|
|
|
+ this.setValue("reccountry", resultMap.get("reccountry"));
|
|
|
|
+ this.setValue("recprovince", resultMap.get("recprovince"));
|
|
|
|
+ this.setValue("reccity", resultMap.get("reccity"));
|
|
|
|
+ this.setValue("recswiftcode", resultMap.get("swift_code"));
|
|
|
|
+ this.setValue("recroutingnum", resultMap.get("routingnum"));
|
|
|
|
+ this.setValue("recothercode", resultMap.get("other_code"));
|
|
|
|
+ this.setValue("recbankaddress", resultMap.get("address_eng"));
|
|
|
|
+ this.setValue("recemail", resultMap.get("payeeemail"));
|
|
|
|
+ this.setValue("payeecurrency", resultMap.get("payeecurrency"));
|
|
|
|
+ this.setValue("recaddress", resultMap.get("payeeaddress"));
|
|
|
|
+ this.setValue("supplierBankId", resultMap.get("supplierBankId"));
|
|
|
|
+ PaymentBillPluginHelper.fillProxyBeBankInfo(this.getModel(), this.getView(), true);
|
|
|
|
+ Boolean isDiffCur = (Boolean)this.getValue("isdiffcur");
|
|
|
|
+ Object recCurId = resultMap.get("payeecurrency");
|
|
|
|
+ if (recCurId != null && ((Long)recCurId).intValue() != 0 && !this.isBotpCreate() && isDiffCur) {
|
|
|
|
+ this.setValue("currency", resultMap.get("payeecurrency"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (AsstActTypeEnum.SUPPLIER.getValue().equals(this.getModel().getValue("payeetype"))) {
|
|
|
|
+ DynamicObject new_settletype = (DynamicObject)resultMap.get("settlment");
|
|
|
|
+ DynamicObject old_settletype = (DynamicObject)this.getModel().getValue("settletype");
|
|
|
|
+ if (!CasHelper.isEquals(new_settletype, old_settletype) && new_settletype != null) {
|
|
|
|
+ this.setValue("settletype", new_settletype);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setPayeeInfo4Lb();
|
|
|
|
+ this.getView().setVisible(false, new String[]{"flex_addpayee"});
|
|
|
|
+ this.getView().setVisible(true, new String[]{"flex_payeeinfo"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void changePayeeValue() {
|
|
|
|
+ this.setPayeeInfo4Lb();
|
|
|
|
+ boolean addpayView = this.hasPayeeInfo();
|
|
|
|
+ this.getView().setVisible(!addpayView, new String[]{"flex_addpayee"});
|
|
|
|
+ this.getView().setVisible(addpayView, new String[]{"flex_payeeinfo"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setPayeeInfo4Lb() {
|
|
|
|
+ String payeeformid = this.getString("payeetype");
|
|
|
|
+ List<String> payeetypeList = Arrays.asList("bos_org", "bd_supplier", "bd_customer", "bos_user");
|
|
|
|
+ Long payeeId = Long.parseLong(this.getValue("payee") == null ? "0" : this.getValue("payee").toString());
|
|
|
|
+ String payeeType = this.getString("payeetype");
|
|
|
|
+ if (isOther(payeeType)) {
|
|
|
|
+ this.setValue("payeenamev", this.getValue("payeename"));
|
|
|
|
+ } else if (CasHelper.isNotEmpty(payeeformid) && payeetypeList.contains(payeeformid) && CasHelper.isNotEmpty(payeeId)) {
|
|
|
|
+ DynamicObject payeeObj = BusinessDataServiceHelper.loadSingleFromCache(payeeId, payeeformid, "name");
|
|
|
|
+ this.setValue("payeenamev", CasHelper.getLocalValue(payeeObj, "name"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Image payeePic = (Image)this.getControl("payeepic");
|
|
|
|
+ String defaultUrl = BaseDataHelper.getPictureUrl(payeeId, payeeformid);
|
|
|
|
+ defaultUrl = defaultUrl == null ? "/icons/pc/entrance/cn_sk_80_80.png" : defaultUrl;
|
|
|
|
+ payeePic.setUrl(defaultUrl);
|
|
|
|
+ ((Label)this.getControl("payeebanknumv")).setText(StringUtils.splitString(this.getString("payeebanknum"), 4, " "));
|
|
|
|
+ ((Label)this.getControl("payeebanknamev")).setText(this.getString("payeebankname"));
|
|
|
|
+ ((Label)this.getControl("recaccbanknamev")).setText(this.getString("recaccbankname"));
|
|
|
|
+ ((Label)this.getControl("recbanknumberv")).setText(this.getString("recbanknumber"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void changePayerPage() {
|
|
|
|
+ DynamicObject settleType = this.getDynamicObject("settletype");
|
|
|
|
+ Object sourceBillType = this.getModel().getValue("sourcebilltype");
|
|
|
|
+ Map<String, Object> payerInfo = new HashMap();
|
|
|
|
+ payerInfo.put("cash", BaseDataHelper.isSettleTypeCash(settleType));
|
|
|
|
+ payerInfo.put("virtual", BaseDataHelper.isSettleTypeVirtual(settleType));
|
|
|
|
+ payerInfo.put("sourceBillType", sourceBillType);
|
|
|
|
+ FormShowParameter parameter = new FormShowParameter();
|
|
|
|
+ parameter.getOpenStyle().setShowType(ShowType.Modal);
|
|
|
|
+ parameter.setFormId("cas_changepayer");
|
|
|
|
+ parameter.getCustomParams().putAll(payerInfo);
|
|
|
|
+ parameter.setCloseCallBack(new CloseCallBack(this, "changepayer"));
|
|
|
|
+ this.getView().showForm(parameter);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void changePayerValue(Map<String, Object> returnMap) {
|
|
|
|
+ boolean isChangeCur = false;
|
|
|
|
+ IBillModel model = (IBillModel)this.getModel();
|
|
|
|
+ DynamicObject new_org = (DynamicObject)returnMap.get("org");
|
|
|
|
+ DynamicObject old_org = (DynamicObject)model.getValue("org");
|
|
|
|
+ DynamicObject cur = OrgHelper.getBaseCurrency((Long)new_org.getPkValue());
|
|
|
|
+ if (!CasHelper.isEquals(new_org, old_org)) {
|
|
|
|
+ this.setValue("org", new_org);
|
|
|
|
+ this.setValue("basecurrency", cur);
|
|
|
|
+ this.setValue("draftbill", (Object)null);
|
|
|
|
+ isChangeCur = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ DynamicObject new_acctcash = (DynamicObject)returnMap.get("payeracctcash");
|
|
|
|
+ DynamicObject old_acctcash = (DynamicObject)model.getValue("payeracctcash");
|
|
|
|
+ if (!CasHelper.isEquals(new_acctcash, old_acctcash)) {
|
|
|
|
+ this.setValue("payeracctcash", new_acctcash);
|
|
|
|
+ isChangeCur = false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ DynamicObject new_acctbank = (DynamicObject)returnMap.get("payeracctbank");
|
|
|
|
+ DynamicObject old_acctbank = (DynamicObject)model.getValue("payeracctbank");
|
|
|
|
+ if (!CasHelper.isEquals(new_acctbank, old_acctbank)) {
|
|
|
|
+ this.setValue("payeracctbank", new_acctbank);
|
|
|
|
+ isChangeCur = false;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ DynamicObject new_bank = (DynamicObject)returnMap.get("payerbank");
|
|
|
|
+ DynamicObject old_bank = (DynamicObject)model.getValue("payerbank");
|
|
|
|
+ if (!CasHelper.isEquals(new_bank, old_bank)) {
|
|
|
|
+ this.setValue("payerbank", new_bank);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setPayerInfo4Lb();
|
|
|
|
+ this.settleOrg(true);
|
|
|
|
+ if (isChangeCur) {
|
|
|
|
+ this.setValue("currency", cur);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String uniformsocialcreditcode = new_org.getString("uniformsocialcreditcode");
|
|
|
|
+ if (kd.bos.dataentity.utils.StringUtils.isNotBlank(uniformsocialcreditcode)) {
|
|
|
|
+ this.setValue("uniformsocialcreditcode", uniformsocialcreditcode);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String payerNumber = new_org.getString("number");
|
|
|
|
+ if (kd.bos.dataentity.utils.StringUtils.isNotBlank(payerNumber)) {
|
|
|
|
+ this.setValue("payernumber", payerNumber);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setValue("openorg", returnMap.get("openorg"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void closedCallBack(ClosedCallBackEvent e) {
|
|
|
|
+ super.closedCallBack(e);
|
|
|
|
+ Map data;
|
|
|
|
+ if ("changepayer".equals(e.getActionId())) {
|
|
|
|
+ data = (Map)e.getReturnData();
|
|
|
|
+ if (data != null) {
|
|
|
|
+ this.changePayerValue(data);
|
|
|
|
+ }
|
|
|
|
+ } else if ("addpayee".equals(e.getActionId())) {
|
|
|
|
+ data = (Map)e.getReturnData();
|
|
|
|
+ if (data != null) {
|
|
|
|
+ this.addPayeeValue(data);
|
|
|
|
+ this.setCrossPayValue();
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ String confirm;
|
|
|
|
+ if ("beforesubmit".equals(e.getActionId())) {
|
|
|
|
+ confirm = (String)e.getReturnData();
|
|
|
|
+ if (confirm != null && confirm.equals("ok")) {
|
|
|
|
+ this.getView().invokeOperation("submit");
|
|
|
|
+ }
|
|
|
|
+ } else if ("beforesubmitnew".equals(e.getActionId())) {
|
|
|
|
+ confirm = (String)e.getReturnData();
|
|
|
|
+ if (confirm != null && confirm.equals("ok")) {
|
|
|
|
+ this.getView().invokeOperation("submitandnew");
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ OperateOption option;
|
|
|
|
+ if (kd.bos.dataentity.utils.StringUtils.equals(e.getActionId(), "KEY_DIFFPAY_CALLBACK")) {
|
|
|
|
+ data = (Map)e.getReturnData();
|
|
|
|
+ if (data != null) {
|
|
|
|
+ option = OperateOption.create();
|
|
|
|
+ Iterator var4 = data.entrySet().iterator();
|
|
|
|
+
|
|
|
|
+ while(var4.hasNext()) {
|
|
|
|
+ Map.Entry<String, Object> entry = (Map.Entry)var4.next();
|
|
|
|
+ if (entry.getValue() != null) {
|
|
|
|
+ option.setVariableValue((String)entry.getKey(), entry.getValue().toString());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ option.setVariableValue("payConfirm", "1");
|
|
|
|
+ this.getView().invokeOperation("pay", option);
|
|
|
|
+ }
|
|
|
|
+ } else if (kd.bos.dataentity.utils.StringUtils.equals(e.getActionId(), "CALLBACK_SELECTDRAFT")) {
|
|
|
|
+ Object draftIdList = e.getReturnData();
|
|
|
|
+ if (draftIdList != null) {
|
|
|
|
+ option = OperateOption.create();
|
|
|
|
+ option.setVariableValue("draftids", JSON.toJSONString(draftIdList));
|
|
|
|
+ this.getView().invokeOperation("pay", option);
|
|
|
|
+ }
|
|
|
|
+ } else if (kd.bos.dataentity.utils.StringUtils.equals(e.getActionId(), "settletnumber")) {
|
|
|
|
+ ListSelectedRowCollection rows = (ListSelectedRowCollection)e.getReturnData();
|
|
|
|
+ if (EmptyUtil.isNoEmpty(rows)) {
|
|
|
|
+ this.getModel().deleteEntryData("entry");
|
|
|
|
+ CasBotpHelper.doDraw(this.getView(), "lc_arrival", this.getModel().getDataEntityType().getName(), rows);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ PaymentBillPluginHelper.isSchePayEditable(this, this.getModel());
|
|
|
|
+ DynamicObject org = this.getDynamicObject("org");
|
|
|
|
+ InitCheckPluginHelper.checkInitForPlugin(this.getView(), org, new String[]{"bar_save", "bar_submit"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void beforeItemClick(BeforeItemClickEvent evt) {
|
|
|
|
+ String opKey = evt.getOperationKey();
|
|
|
|
+ if ("delete".equals(opKey)) {
|
|
|
|
+ if ("cas_recbill".equals(this.getString("sourcebilltype"))) {
|
|
|
|
+ evt.setCancel(true);
|
|
|
|
+ String billno = this.getString("billno");
|
|
|
|
+ this.getView().showConfirm(String.format(ResManager.loadKDString("%s付款单由内部收付协同业务自动生成,是否确认删除?", "PaymentBillEdit_23", "fi-cas-formplugin", new Object[0]), billno), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_DEL_CALLBACK", this));
|
|
|
|
+ }
|
|
|
|
+ } else if ("pay".equals(opKey)) {
|
|
|
|
+ DynamicObject dataEntity = this.getModel().getDataEntity();
|
|
|
|
+ long orgDynId = dataEntity.getDynamicObject("org").getLong("id");
|
|
|
|
+ boolean selectDraftFlag = SystemParameterHelper.getParameterBoolean(orgDynId, "cs122");
|
|
|
|
+ String settleTypeKey = DraftHelper.getKey(dataEntity.get("settletype"));
|
|
|
|
+ logger.info("selectDraftFlag is:" + selectDraftFlag + ",key:" + settleTypeKey);
|
|
|
|
+ boolean isdraft = SystemParameterHelper.getCdmParameterBoolean(orgDynId, "isdraft");
|
|
|
|
+ boolean ischeck = SystemParameterHelper.getCdmParameterBoolean(orgDynId, "ischeck");
|
|
|
|
+ boolean ispromissorynote = SystemParameterHelper.getCdmParameterBoolean(orgDynId, "ispromissorynote");
|
|
|
|
+ if (!CasHelper.isEmpty(settleTypeKey)) {
|
|
|
|
+ String typeName;
|
|
|
|
+ switch (settleTypeKey) {
|
|
|
|
+ case "isdraft":
|
|
|
|
+ if (isdraft && !selectDraftFlag) {
|
|
|
|
+ typeName = ResManager.loadKDString("汇票", "DraftHelper_4", "fi-cas-common", new Object[0]);
|
|
|
|
+ this.cancelAndWarn(evt, dataEntity, typeName);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "ischeck":
|
|
|
|
+ if (ischeck && !selectDraftFlag) {
|
|
|
|
+ typeName = ResManager.loadKDString("支票", "DraftHelper_5", "fi-cas-common", new Object[0]);
|
|
|
|
+ this.cancelAndWarn(evt, dataEntity, typeName);
|
|
|
|
+ }
|
|
|
|
+ break;
|
|
|
|
+ case "ispromissorynote":
|
|
|
|
+ if (ispromissorynote && !selectDraftFlag) {
|
|
|
|
+ typeName = ResManager.loadKDString("本票", "DraftHelper_6", "fi-cas-common", new Object[0]);
|
|
|
|
+ this.cancelAndWarn(evt, dataEntity, typeName);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ("commitbe".equals(opKey)) {
|
|
|
|
+ OperateOption op = OperateOption.create();
|
|
|
|
+ op.setVariableValue("ishasright", "true");
|
|
|
|
+ OperationResult operationResult = OperationServiceHelper.executeOperate("beforecommitbe", "nckd_cas_arbill", new Object[]{this.getModel().getDataEntity().getPkValue()}, op);
|
|
|
|
+ if (!operationResult.isSuccess() && operationResult.isNeedSign()) {
|
|
|
|
+ SignOperateCallback signOperate = new SignOperateCallback(this.getView(), this, op, ClientCallback.SignClientType.Secondry, "signbeforecommitbe");
|
|
|
|
+ OperationResult ops = signOperate.sign(operationResult);
|
|
|
|
+ evt.setCancel(true);
|
|
|
|
+ if (!ops.isSuccess()) {
|
|
|
|
+ logger.info(" beforecommitbe sign error ");
|
|
|
|
+ if (ops.isShowMessage() && EmptyUtil.isNoEmpty(ops.getMessage())) {
|
|
|
|
+ this.getView().showTipNotification(ops.getMessage());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void cancelAndWarn(BeforeItemClickEvent evt, DynamicObject dataEntity, String typeName) {
|
|
|
|
+ String msg = String.format(ResManager.loadKDString("%1$s :结算方式类别为%2$s的付款单不支持确认付款", "DraftHelper_7_1", "fi-cas-common", new Object[0]), dataEntity.getString("billno"), typeName);
|
|
|
|
+ evt.setCancel(true);
|
|
|
|
+ this.getView().showTipNotification(msg);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void itemClick(ItemClickEvent evt) {
|
|
|
|
+ super.itemClick(evt);
|
|
|
|
+ String key = evt.getItemKey().toLowerCase();
|
|
|
|
+ if ("bar_beforesubmit".equals(key)) {
|
|
|
|
+ this.getView().invokeOperation("beforesubmit");
|
|
|
|
+ } else if ("bar_cancelpay".equals(key)) {
|
|
|
|
+ this.cancelPay();
|
|
|
|
+ } else if ("viewsettle".equals(key)) {
|
|
|
|
+ this.viewSettle();
|
|
|
|
+ } else if ("bar_save".equals(key)) {
|
|
|
|
+ this.getView().updateView("feeactbank");
|
|
|
|
+ this.getView().updateView("feecurrency");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void afterDeleteRow(AfterDeleteRowEventArgs e) {
|
|
|
|
+ super.afterDeleteRow(e);
|
|
|
|
+ this.calculateAmt();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void afterBindData(EventObject e) {
|
|
|
|
+ super.afterBindData(e);
|
|
|
|
+ DynamicObject org = this.getDynamicObject("org");
|
|
|
|
+ InitCheckPluginHelper.checkInitForPlugin(this.getView(), org, new String[]{"bar_save", "bar_submit"});
|
|
|
|
+ DynamicObject paymentBill = this.getModel().getDataEntity();
|
|
|
|
+ Map<String, Object> customParams = this.getView().getFormShowParameter().getCustomParams();
|
|
|
|
+ Object showConer = customParams.get("showConer");
|
|
|
|
+ List<IApprovalRecordGroup> workflowlist = WorkflowServiceHelper.getAllApprovalRecord(paymentBill.getPkValue().toString());
|
|
|
|
+ if (CollectionUtils.isEmpty(workflowlist) || CasHelper.isEmpty(showConer)) {
|
|
|
|
+ SplitContainer control = (SplitContainer)this.getControl("splitcontainerap");
|
|
|
|
+ control.hidePanel(SplitDirection.right, true);
|
|
|
|
+ control.setCollapse("splitpanelap1", true);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Long orgId = this.getPk("org");
|
|
|
|
+ DynamicObject cur;
|
|
|
|
+ DynamicObject payeracctbank;
|
|
|
|
+ if (this.isBotpNew()) {
|
|
|
|
+ if (orgId == null) {
|
|
|
|
+ this.getView().setEnable(false, new String[]{"bar_save", "bar_submit", "bar_beforesubmit"});
|
|
|
|
+ this.getView().showErrorNotification(ResManager.loadKDString("请在上游单据维护付款组织来源再推付款单。", "PaymentBillEdit_7", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ cur = OrgHelper.getBaseCurrency(orgId);
|
|
|
|
+ if (cur == null) {
|
|
|
|
+ this.getView().setEnable(false, new String[]{"bar_save", "bar_submit", "bar_beforesubmit"});
|
|
|
|
+ this.getView().setVisible(false, new String[]{"bar_refund_save", "bar_submitandnew", "bar_del", "bar_audit", "bar_unaudit", "bar_pay", "bar_cancelpay", "bar_commitbe", "genvoucher", "deletevoucher", "copyentryrow"});
|
|
|
|
+ this.getView().getFormShowParameter().setStatus(OperationStatus.VIEW);
|
|
|
|
+ this.getView().showErrorNotification(SystemStatusCtrolHelper.notFinishInitSetMsg(CasHelper.getLocalValue(this.getDynamicObject("org"), "name")));
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setValueIfAbsent("basecurrency", cur);
|
|
|
|
+ payeracctbank = this.getDynamicObject("payeracctbank");
|
|
|
|
+ if (payeracctbank != null) {
|
|
|
|
+ this.setValueIfAbsent("payerbank", payeracctbank.getDynamicObject("bank"));
|
|
|
|
+ this.setValueIfAbsent("openorg", payeracctbank.getDynamicObject("openorg"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setNetBankAcctVisible();
|
|
|
|
+ DynamicObject paymentType = paymentBill.getDynamicObject("paymenttype");
|
|
|
|
+ if (paymentType != null) {
|
|
|
|
+ paymentType = BusinessDataServiceHelper.loadSingleFromCache(paymentType.getPkValue(), "cas_paymentbilltype", "id,fundflowitem");
|
|
|
|
+ this.fillFundflowItem(false, paymentType.getDynamicObject("fundflowitem"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (null == this.getDynamicObject("exratetable")) {
|
|
|
|
+ this.setDefaultExratetable(orgId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ PaymentBillPluginHelper.fillToolBar(this, this.getModel(), this.getView());
|
|
|
|
+ this.setPayerInfo4Lb();
|
|
|
|
+ this.changePayeeValue();
|
|
|
|
+ this.setEntryAmountCaption();
|
|
|
|
+ this.ctrChangeLableVisible();
|
|
|
|
+ this.setCurrencyEditable();
|
|
|
|
+ this.ctrBeInfoVisibility();
|
|
|
|
+ this.setExchangerateEditable();
|
|
|
|
+ this.ctrRefundInfoVisibility();
|
|
|
|
+ cur = this.getDynamicObject("payeracctbank");
|
|
|
|
+ this.setPaymentChannelValue(cur, Boolean.FALSE);
|
|
|
|
+ this.setDiffCurInfo();
|
|
|
|
+ this.setCountryValue();
|
|
|
|
+ this.setCrossPayValue();
|
|
|
|
+ this.isDiffCurVisibility();
|
|
|
|
+ this.isOnlinebankVisibility();
|
|
|
|
+ this.setPayerAndPayeeInfo(orgId);
|
|
|
|
+ this.getModel().setDataChanged(false);
|
|
|
|
+ payeracctbank = (DynamicObject)this.getModel().getValue("settletype");
|
|
|
|
+ if (Objects.nonNull(payeracctbank)) {
|
|
|
|
+ this.settletNumber(payeracctbank);
|
|
|
|
+ } else {
|
|
|
|
+ this.getView().setVisible(Boolean.FALSE, new String[]{"draftbill"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.showBalance();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setPayerAndPayeeInfo(Long orgId) {
|
|
|
|
+ if (!CasHelper.isEmpty(orgId)) {
|
|
|
|
+ DynamicObject org = BusinessDataServiceHelper.loadSingleFromCache(orgId, "bos_org");
|
|
|
|
+ this.getModel().setValue("payernumber", org.getString("number"));
|
|
|
|
+ this.getModel().setValue("uniformsocialcreditcode", org.getString("uniformsocialcreditcode"));
|
|
|
|
+ Long payeeId = Long.valueOf(this.getModel().getValue("payee").toString());
|
|
|
|
+ String type = this.getModel().getValue("payeetype").toString();
|
|
|
|
+ String number = this.getModel().getValue("payeenumber").toString();
|
|
|
|
+ if (!number.isEmpty() || !AsstActTypeEnum.SUPPLIER.getValue().equals(type) && !AsstActTypeEnum.CUSTOMER.getValue().equals(type)) {
|
|
|
|
+ if (number.isEmpty() && (AsstActTypeEnum.EMPLOYEE.getValue().equals(type) || AsstActTypeEnum.COMPANY.getValue().equals(type))) {
|
|
|
|
+ number = this.getUserOrOrgNumber(payeeId, type);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ number = this.getPayeeOrPayerInfoNumber(payeeId, type, this.getModel().getDataEntityType().getName());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.getModel().setValue("payeenumber", number);
|
|
|
|
+ if (!this.getModel().getDataEntity().getString("billstatus").equals(BillStatusEnum.SAVE.getValue())) {
|
|
|
|
+ this.getView().setEnable(false, new String[]{"priority"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ protected void setExchangerateEditable() {
|
|
|
|
+ DynamicObject srcCurrency = this.getDynamicObject("currency");
|
|
|
|
+ DynamicObject destCurrency = this.getDynamicObject("basecurrency");
|
|
|
|
+ if (srcCurrency != null && destCurrency != null) {
|
|
|
|
+ if (srcCurrency.getLong("id") == destCurrency.getLong("id")) {
|
|
|
|
+ this.getView().setEnable(false, new String[]{"exchangerate"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setDefaultExratetable(Long orgId) {
|
|
|
|
+ Long exchangeRateTableId = 0L;
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ exchangeRateTableId = SystemStatusCtrolHelper.getExrateTable(orgId).getLong("id");
|
|
|
|
+ } catch (Exception var4) {
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.getModel().setValue("exratetable", exchangeRateTableId);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setEntryAmountCaption() {
|
|
|
|
+ DynamicObject billType = (DynamicObject)this.getModel().getValue("billtype");
|
|
|
|
+ if (billType != null) {
|
|
|
|
+ EntryGrid entryCtr = (EntryGrid)this.getControl("entry");
|
|
|
|
+ if (BillTypeConstants.PAYBILL_OTR.equals(billType.getPkValue())) {
|
|
|
|
+ entryCtr.setColumnProperty("e_payableamt", "header", new LocaleString(ResManager.loadKDString("实付金额", "PaymentBillEdit_8", "fi-cas-formplugin", new Object[0])));
|
|
|
|
+ entryCtr.setColumnProperty("e_payablelocamt", "header", new LocaleString(ResManager.loadKDString("实付折本币", "PaymentBillEdit_9", "fi-cas-formplugin", new Object[0])));
|
|
|
|
+ } else {
|
|
|
|
+ entryCtr.setColumnProperty("e_payableamt", "header", new LocaleString(ResManager.loadKDString("应付金额", "PaymentBillEdit_10", "fi-cas-formplugin", new Object[0])));
|
|
|
|
+ entryCtr.setColumnProperty("e_payablelocamt", "header", new LocaleString(ResManager.loadKDString("应付折本币", "PaymentBillEdit_11", "fi-cas-formplugin", new Object[0])));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void ctrChangeLableVisible() {
|
|
|
|
+ Object sourceBillType = this.getModel().getValue("sourcebilltype");
|
|
|
|
+ if (!"cas_recbill".equals(sourceBillType) && !"bei_transdetail_cas".equals(sourceBillType) && BillStatusEnum.SAVE.getValue().equals(this.getModel().getValue("billstatus"))) {
|
|
|
|
+ if (!(Boolean)this.getModel().getValue("issupplecontract")) {
|
|
|
|
+ this.getView().setVisible(true, new String[]{"changepayer", "changepayee"});
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ this.getView().setVisible(false, new String[]{"changepayer", "changepayee"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean isBePay() {
|
|
|
|
+ DynamicObject payerAcctBank = this.getDynamicObject("payeracctbank");
|
|
|
|
+ if (payerAcctBank != null && PayBillCrossHelper.isIfmBankAcc(payerAcctBank)) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ return payerAcctBank != null && (Boolean)payerAcctBank.get("issetbankinterface") && "bei".equalsIgnoreCase(this.getString("paymentchannel"));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean isBeiBePay() {
|
|
|
|
+ DynamicObject payerAcctBank = this.getDynamicObject("payeracctbank");
|
|
|
|
+ return payerAcctBank != null && (Boolean)payerAcctBank.get("issetbankinterface") && "bei".equalsIgnoreCase(this.getString("paymentchannel"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void beforeDoOperation(BeforeDoOperationEventArgs args) {
|
|
|
|
+ super.beforeDoOperation(args);
|
|
|
|
+ AbstractOperate op = (AbstractOperate)args.getSource();
|
|
|
|
+ String operateKey = op.getOperateKey();
|
|
|
|
+ DynamicObject payerAcctBank = this.getDynamicObject("payeracctbank");
|
|
|
|
+ DynamicObject accountBank;
|
|
|
|
+ if ("trackdown".equals(operateKey)) {
|
|
|
|
+ accountBank = this.getDynamicObject("settletype");
|
|
|
|
+ if (accountBank != null) {
|
|
|
|
+ String settlementtype = accountBank.getString("settlementtype");
|
|
|
|
+ if (EmptyUtil.isNoEmpty(settlementtype) && this.settleTypes.contains(settlementtype)) {
|
|
|
|
+ op.getOption().setVariableValue("botp_track_edit_status", "true");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if ((!"save".equals(operateKey) || (Boolean)this.getModel().getValue("issupplecontract")) && !"submit".equals(operateKey) && !"submitandnew".equals(operateKey) && !"beforesubmit".equals(operateKey) && !"beforesubmitnew".equals(operateKey)) {
|
|
|
|
+ DynamicObject orgData;
|
|
|
|
+ if ("refundsave".equals(operateKey)) {
|
|
|
|
+ Long rebillid = (Long)this.getView().getFormShowParameter().getCustomParam("rebillid");
|
|
|
|
+ orgData = BusinessDataServiceHelper.loadSingle(rebillid, "cas_recbill");
|
|
|
|
+ BigDecimal actrecamt = orgData.getBigDecimal("actrecamt");
|
|
|
|
+ DynamicObjectCollection payEntrys = this.getModel().getEntryEntity("entry");
|
|
|
|
+ BigDecimal refundamtTotal = (BigDecimal)payEntrys.stream().map((o) -> {
|
|
|
|
+ return o.getBigDecimal("e_refundamt");
|
|
|
|
+ }).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ if (actrecamt.compareTo(refundamtTotal) != 0) {
|
|
|
|
+ throw new KDBizException(ResManager.loadKDString("退款金额合计与收款单金额不相等", "PaymentBillEdit_19", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ FormOperate operate = (FormOperate)args.getSource();
|
|
|
|
+ operate.getOption().setVariableValue("rebillid", SerializationUtils.toJsonString(this.getView().getFormShowParameter().getCustomParam("rebillid")));
|
|
|
|
+ operate.getOption().setVariableValue("billtype", "nckd_cas_arbill");
|
|
|
|
+ } else if ("recbook".equals(operateKey)) {
|
|
|
|
+ accountBank = this.getDynamicObject("payeracctbank");
|
|
|
|
+ if (null != accountBank && AccountBankHelper.isClosed(accountBank.getLong("id"))) {
|
|
|
|
+ throw new KDBizException(String.format(ResManager.loadKDString("账户%s当前状态为已销户,暂无法进行业务处理。", "PaymentErrorCode_47", "fi-cas-business", new Object[0]), accountBank.getString("number")));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (payerAcctBank != null && PayBillCrossHelper.isIfmBankAcc(payerAcctBank)) {
|
|
|
|
+ throw new KDBizException(ResManager.loadKDString("内部账户请选择内部结算付款。", "PaymentErrorCode_48", "fi-cas-business", new Object[0]));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (PaymentBillPluginHelper.checkPayeeTypeFreeze(Collections.singletonList(this.getModel().getDataEntity()))) {
|
|
|
|
+ throw new KDBizException((new PaymentErrorCode()).CANOTDOTHISOP_WHENSUPPLIERFREEZE().getMessage());
|
|
|
|
+ }
|
|
|
|
+ } else if ("endorse".equals(operateKey)) {
|
|
|
|
+ if (payerAcctBank != null && PayBillCrossHelper.isIfmBankAcc(payerAcctBank)) {
|
|
|
|
+ throw new KDBizException(ResManager.loadKDString("内部账户请选择内部结算付款。", "PaymentErrorCode_48", "fi-cas-business", new Object[0]));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (PaymentBillPluginHelper.checkPayeeTypeFreeze(Collections.singletonList(this.getModel().getDataEntity()))) {
|
|
|
|
+ throw new KDBizException((new PaymentErrorCode()).CANOTDOTHISOP_WHENSUPPLIERFREEZE().getMessage());
|
|
|
|
+ }
|
|
|
|
+ } else if ("pay".equals(operateKey)) {
|
|
|
|
+ String draftIds = op.getOption().getVariableValue("draftids", "");
|
|
|
|
+ if (kd.bos.dataentity.utils.StringUtils.isEmpty(draftIds)) {
|
|
|
|
+ orgData = (DynamicObject)this.getValue("org");
|
|
|
|
+ Long pkValue = (Long)orgData.getPkValue();
|
|
|
|
+ boolean selectDraftFlag = SystemParameterHelper.getParameterBoolean(pkValue, "cs122");
|
|
|
|
+ DynamicObject data = this.getModel().getDataEntity(true);
|
|
|
|
+ if (selectDraftFlag && PaymentBillPluginHelper.needSelectedDraft(data)) {
|
|
|
|
+ FormShowParameter showParameter = new FormShowParameter();
|
|
|
|
+ showParameter.setAppId("cas");
|
|
|
|
+ showParameter.setFormId("cas_payment_selectdraft");
|
|
|
|
+ showParameter.setCustomParam("payBillId", data.getPkValue());
|
|
|
|
+ showParameter.getOpenStyle().setShowType(ShowType.Modal);
|
|
|
|
+ showParameter.setCloseCallBack(new CloseCallBack(this, "CALLBACK_SELECTDRAFT"));
|
|
|
|
+ this.getView().showForm(showParameter);
|
|
|
|
+ args.setCancel(true);
|
|
|
|
+ } else if (!DraftHelper.isAllPayDrafBill((DynamicObjectCollection)this.getModel().getValue("draftbill")) && !(Boolean)this.getModel().getValue("feepay")) {
|
|
|
|
+ String payConfirm = op.getOption().getVariableValue("payConfirm", "");
|
|
|
|
+ if (kd.bos.dataentity.utils.StringUtils.isEmpty(payConfirm)) {
|
|
|
|
+ this.pay(args);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (!this.isBeConfirmOK) {
|
|
|
|
+ this.storeFields();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ("submit".equals(operateKey)) {
|
|
|
|
+ FormUtils.deleteEmptyRows(this.getModel(), new String[]{"e_payableamt"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (Arrays.asList("unaudit", "chargeback", "invalid", "delete", "pay").contains(operateKey) && PayBillHepler.getViewSettle(this.getModel().getDataEntity()).size() > 0) {
|
|
|
|
+ this.getView().showErrorNotification(String.format(ResManager.loadKDString("%s已存在结算记录,导致操作失败。如需继续执行操作,请先反结算。", "PaymentBillList_36", "fi-cas-formplugin", new Object[0]), ""));
|
|
|
|
+ args.setCancel(true);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void confirmCallBack(MessageBoxClosedEvent messageBoxClosedEvent) {
|
|
|
|
+ super.confirmCallBack(messageBoxClosedEvent);
|
|
|
|
+ String id = messageBoxClosedEvent.getCallBackId();
|
|
|
|
+ MessageBoxResult res = messageBoxClosedEvent.getResult();
|
|
|
|
+ if (id.equals("CONFIRM_CANCELPAY_CALLBACK") && MessageBoxResult.Yes.equals(res)) {
|
|
|
|
+ String billno = (String)this.getModel().getValue("billno");
|
|
|
|
+ DynamicObject payObj = BusinessDataServiceHelper.loadSingle("nckd_cas_arbill", "id,billno", new QFilter[]{new QFilter("billno", "=", billno)});
|
|
|
|
+ if (!this.cancelPayCheckSettle(payObj)) {
|
|
|
|
+ this.getView().invokeOperation("cancelpay");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (id.equals("CONFIRM_CANCELPAY_SETTLE_CALLBACK") && MessageBoxResult.Yes.equals(res)) {
|
|
|
|
+ this.getView().invokeOperation("cancelpay");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (id.equals("CONFIRM_DEL_CALLBACK")) {
|
|
|
|
+ OperateOption option = OperateOption.create();
|
|
|
|
+ if (MessageBoxResult.Yes.equals(res)) {
|
|
|
|
+ option.setVariableValue("delrecpay", "1");
|
|
|
|
+ this.getView().invokeOperation("delete", option);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void storeFields() {
|
|
|
|
+ IBillModel model = (IBillModel)this.getModel();
|
|
|
|
+ String entrance = (String)model.getValue("entrance");
|
|
|
|
+ if (PaymentTypeEnum.OTR.name().equals(entrance)) {
|
|
|
|
+ DynamicObject paymentType = (DynamicObject)model.getValue("paymenttype");
|
|
|
|
+ if (paymentType != null && !paymentType.getBoolean("ispartpayment")) {
|
|
|
|
+ int count = model.getEntryRowCount("entry");
|
|
|
|
+
|
|
|
|
+ for(int i = 0; i < count; ++i) {
|
|
|
|
+ this.setValue("e_discountamt", (Object)null, i);
|
|
|
|
+ this.setValue("e_discountlocamt", (Object)null, i);
|
|
|
|
+ this.setValue("e_corebilltype", (Object)null, i);
|
|
|
|
+ this.setValue("e_corebillno", (Object)null, i);
|
|
|
|
+ this.setValue("e_corebillentryseq", (Object)null, i);
|
|
|
|
+ this.setValue("e_lockamt", (Object)null, i);
|
|
|
|
+ this.setValue("e_unlockamt", (Object)null, i);
|
|
|
|
+ this.setValue("e_settledamt", (Object)null, i);
|
|
|
|
+ this.setValue("e_unsettledamt", (Object)null, i);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if (PaymentTypeEnum.SYN.name().equals(entrance) || PaymentTypeEnum.CASH.name().equals(entrance) || PaymentTypeEnum.SPAN.name().equals(entrance)) {
|
|
|
|
+ int count = model.getEntryRowCount("entry");
|
|
|
|
+ if (count < 1) {
|
|
|
|
+ this.getView().updateView("entry");
|
|
|
|
+ this.getView().invokeOperation("newentry");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.setValue("e_payableamt", this.getBigDecimal("actpayamt"), 0);
|
|
|
|
+ this.setValue("e_fundflowitem", this.getValue("fundflowitem"), 0);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void afterDoOperation(AfterDoOperationEventArgs arg) {
|
|
|
|
+ super.afterDoOperation(arg);
|
|
|
|
+ AbstractOperate op = (AbstractOperate)arg.getSource();
|
|
|
|
+ OperationResult operationResult = arg.getOperationResult();
|
|
|
|
+ String key = op.getOperateKey();
|
|
|
|
+ if ("copyentryrow".equals(key)) {
|
|
|
|
+ EntryGrid entry = (EntryGrid)this.getControl("entry");
|
|
|
|
+ if (entry.getSelectRows().length == 0) {
|
|
|
|
+ this.getView().showTipNotification(ResManager.loadKDString("请选中一行再进行操作", "PaymentBillEdit_12", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.calculateAmt();
|
|
|
|
+ } else if (!"beforesubmit".equals(key) && !"beforesubmitnew".equals(key)) {
|
|
|
|
+ if ("newentry".equals(key)) {
|
|
|
|
+ this.settleOrg(false);
|
|
|
|
+ } else {
|
|
|
|
+ IFormView view;
|
|
|
|
+ if ("refundsave".equals(key) && arg.getOperationResult().isSuccess()) {
|
|
|
|
+ view = this.getView().getParentView();
|
|
|
|
+ view.close();
|
|
|
|
+ this.getView().sendFormAction(view);
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ("delete".equals(key) && arg.getOperationResult().isSuccess()) {
|
|
|
|
+ view = this.getView();
|
|
|
|
+ view.close();
|
|
|
|
+ this.getView().sendFormAction(view);
|
|
|
|
+ } else if (("unsubmit".equals(key) || "unaudit".equals(key)) && arg.getOperationResult().isSuccess()) {
|
|
|
|
+ this.getView().setStatus(OperationStatus.EDIT);
|
|
|
|
+ } else {
|
|
|
|
+ String reason;
|
|
|
|
+ if (!"pay".equals(key) && !"cancelpay".equals(key)) {
|
|
|
|
+ if ("receipt".equals(key) && arg.getOperationResult().isSuccess()) {
|
|
|
|
+ this.viewReceipt();
|
|
|
|
+ } else if ("chargebacknoreason".equals(key)) {
|
|
|
|
+ reason = ResManager.loadKDString("自动退单", "PaymentBillList_37", "fi-cas-formplugin", new Object[0]);
|
|
|
|
+ List<Object> successPkIds = operationResult.getSuccessPkIds();
|
|
|
|
+ Map<String, Object> data = new HashMap(16);
|
|
|
|
+ data.put("billid", successPkIds);
|
|
|
|
+ data.put("reason", reason);
|
|
|
|
+ data.put("operateKey", "chargeback");
|
|
|
|
+ PayBillListPlugnHelper.closeCallBack("CALLBACK_CHARGEBACK", this.getView(), data);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ reason = arg.getOperationResult().getMessage();
|
|
|
|
+ if (!arg.getOperationResult().isSuccess() && !(new CasErrorCode()).VOUCHER_NOT_CHECK().getMessage().equals(reason)) {
|
|
|
|
+ this.getModel().setValue("billstatus", "pay".equals(key) ? BillStatusEnum.AUDIT.getValue() : BillStatusEnum.PAY.getValue());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ("pay".equals(key) && (Boolean)this.getValue("isdiffcur")) {
|
|
|
|
+ this.getView().updateView("dpamt");
|
|
|
|
+ this.getView().updateView("agreedrate");
|
|
|
|
+ this.getView().updateView("dplocalamt");
|
|
|
|
+ this.getView().updateView("lossamt");
|
|
|
|
+ this.getView().updateView("billstatus");
|
|
|
|
+ this.getView().updateView("exchangerate");
|
|
|
|
+ this.getView().updateView("dpexchangerate");
|
|
|
|
+ this.getView().updateView("localamt");
|
|
|
|
+ this.getView().updateView("paydate");
|
|
|
|
+ this.getView().updateView("feeactbank");
|
|
|
|
+ this.getView().updateView("feecurrency");
|
|
|
|
+ this.getView().updateView("singlestream");
|
|
|
|
+ this.getView().updateView("fee");
|
|
|
|
+
|
|
|
|
+ for(int i = 0; i < this.getModel().getEntryRowCount("entry"); ++i) {
|
|
|
|
+ this.getView().updateView("e_payablelocamt", i);
|
|
|
|
+ this.getView().updateView("e_discountlocamt", i);
|
|
|
|
+ this.getView().updateView("e_localamt", i);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ this.getView().updateView("draftbill");
|
|
|
|
+ if (arg.getOperationResult().isSuccess()) {
|
|
|
|
+ this.getView().invokeOperation("refresh", OperateOption.create());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else if ("beforesubmit".equals(key)) {
|
|
|
|
+ IDataModel model = this.getModel();
|
|
|
|
+ if (!CasHelper.isEmpty(model.getValue("entrustorg"))) {
|
|
|
|
+ model.setValue("payeracctbank", (Object)null);
|
|
|
|
+ model.setValue("payerbank", (Object)null);
|
|
|
|
+ ((Label)this.getControl("payerbanknumv")).setText("");
|
|
|
|
+ ((Label)this.getControl("payerbanknamev")).setText("");
|
|
|
|
+ model.setValue("settletype", (Object)null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (arg.getOperationResult().isSuccess()) {
|
|
|
|
+ DynamicObject company = (DynamicObject)model.getValue("org");
|
|
|
|
+ boolean isNotCheckBeBankNumb = SystemParameterHelper.getParameterBoolean(company.getLong("id"), "cs125");
|
|
|
|
+ if (this.isBeiBePay() && CasHelper.isEmpty(this.getString("recbanknumber")) && !isNotCheckBeBankNumb && this.isCrossTranType()) {
|
|
|
|
+ this.getView().showTipNotification(ResManager.loadKDString(String.format("单号%s的付款单支付渠道为银企互联,收款行行号不能为空,请补充。", this.getModel().getValue("billno")), "PaymentBillEdit_29", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<Object> pks = arg.getOperationResult().getSuccessPkIds();
|
|
|
|
+ if (!EmptyUtil.isEmpty(pks)) {
|
|
|
|
+ this.getView().invokeOperation("submit");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (Arrays.asList("save", "submit").contains(key) && arg.getOperationResult().isSuccess()) {
|
|
|
|
+ this.getView().updateView("entrustorg");
|
|
|
|
+ this.getView().updateView("totalpayamt");
|
|
|
|
+
|
|
|
|
+ for(int i = 0; i < this.getModel().getEntryRowCount("entry"); ++i) {
|
|
|
|
+ this.getView().updateView("e_lockAmt", i);
|
|
|
|
+ this.getView().updateView("e_unlockAmt", i);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if ("unaudit".equals(key)) {
|
|
|
|
+ this.getView().invokeOperation("refresh", OperateOption.create());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ PaymentBillPluginHelper.fillToolBar(this, this.getModel(), this.getView());
|
|
|
|
+ this.ctrChangeLableVisible();
|
|
|
|
+ PaymentBillPluginHelper.isSchePayEditable(this, this.getModel());
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean isCrossTranType() {
|
|
|
|
+ boolean type = (Boolean)this.getValue("iscrosspay");
|
|
|
|
+ DynamicObject dentify = (DynamicObject)this.getValue("paymentidentify");
|
|
|
|
+ return !type || null == dentify || !"0".equals(dentify.getString("type"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void beforeClosed(BeforeClosedEvent e) {
|
|
|
|
+ super.beforeClosed(e);
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ BillShowParameter billShowParameter = (BillShowParameter)this.getView().getFormShowParameter();
|
|
|
|
+ String billStatus = (String)this.getModel().getValue("billstatus");
|
|
|
|
+ if (!BillStatusEnum.SAVE.getValue().equals(billStatus) || billShowParameter.getStatus() == OperationStatus.VIEW) {
|
|
|
|
+ e.setCheckDataChange(false);
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception var4) {
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void cancelPay() {
|
|
|
|
+ String billno = (String)this.getModel().getValue("billno");
|
|
|
|
+ DynamicObject payObj = BusinessDataServiceHelper.loadSingle("nckd_cas_arbill", "id,billno,isvoucher,billstatus,org", new QFilter[]{new QFilter("billno", "=", billno)});
|
|
|
|
+ String billstatus = payObj.getString("billstatus");
|
|
|
|
+ if (!billstatus.equals("D")) {
|
|
|
|
+ this.getView().invokeOperation("cancelpay");
|
|
|
|
+ } else {
|
|
|
|
+ Object org = this.getModel().getValue("org");
|
|
|
|
+ if (org != null) {
|
|
|
|
+ int CS116 = SystemParameterHelper.getParameterInteger(((DynamicObject)org).getLong("id"), "cs116");
|
|
|
|
+ Boolean isv = payObj.getBoolean("isvoucher");
|
|
|
|
+ if (3 == CS116 && isv) {
|
|
|
|
+ this.getView().showConfirm(String.format(ResManager.loadKDString("(%s)单据已经生成凭证,是否继续取消付款?", "PaymentBillEdit_15", "fi-cas-formplugin", new Object[0]), billno), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_CANCELPAY_CALLBACK", this));
|
|
|
|
+ } else if (!this.cancelPayCheckSettle(payObj)) {
|
|
|
|
+ this.getView().invokeOperation("cancelpay");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ protected String recPayAccount() {
|
|
|
|
+ return "payeracctbank";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void settleOrg(boolean isOrg) {
|
|
|
|
+ if (!this.isLockSettleOrg()) {
|
|
|
|
+ DynamicObject paymenttype = (DynamicObject)this.getModel().getValue("paymenttype");
|
|
|
|
+ if (null != paymenttype && paymenttype.getBoolean("ispartpayment")) {
|
|
|
|
+ Object openOrg = this.getModel().getValue("openorg");
|
|
|
|
+ if (openOrg != null) {
|
|
|
|
+ DynamicObject accountOrg = (DynamicObject)openOrg;
|
|
|
|
+
|
|
|
|
+ for(int i = 0; i < this.getModel().getEntryRowCount("entry"); ++i) {
|
|
|
|
+ if (isOrg || CasHelper.isEmpty(this.getModel().getValue("settleorg", i))) {
|
|
|
|
+ this.setValue("settleorg", accountOrg.getPkValue(), i);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean isHwControl() {
|
|
|
|
+ return this.getPageCache().getAll().containsKey("isHwControl");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setRecInfo(String key, Object value, Boolean isCheckDiff) {
|
|
|
|
+ if (isCheckDiff) {
|
|
|
|
+ Boolean isDiffCur = (Boolean)this.getModel().getValue("isdiffcur");
|
|
|
|
+ if (!isDiffCur) {
|
|
|
|
+ this.getModel().setValue(key, value);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ this.getModel().setValue(key, value);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setDiffCurInfo() {
|
|
|
|
+ Boolean isDiffCur = (Boolean)this.getModel().getValue("isdiffcur");
|
|
|
|
+ if (!isDiffCur) {
|
|
|
|
+ this.setValueIfAbsent("dpcurrency", this.getModel().getValue("currency"));
|
|
|
|
+ this.setValueIfAbsent("dpamt", this.getModel().getValue("actpayamt"));
|
|
|
|
+ if (!FeePayerEnum.REC.getValue().equals(this.getString("feepayer"))) {
|
|
|
|
+ this.setValueIfAbsent("feeactbank", this.getModel().getValue("payeracctbank"));
|
|
|
|
+ this.setValueIfAbsent("feecurrency", this.getModel().getValue("currency"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setExratetableVisibility() {
|
|
|
|
+ Long currencyId = this.getPk("currency");
|
|
|
|
+ Long dpCurrencyId = this.getPk("dpcurrency");
|
|
|
|
+ Long basecurrencyId = this.getPk("basecurrency");
|
|
|
|
+ if ((currencyId == null || currencyId.equals(basecurrencyId)) && (dpCurrencyId == null || dpCurrencyId.equals(basecurrencyId))) {
|
|
|
|
+ this.getView().setVisible(false, new String[]{"exratetable"});
|
|
|
|
+ this.getView().setVisible(false, new String[]{"exratedate"});
|
|
|
|
+ } else {
|
|
|
|
+ this.getView().setVisible(true, new String[]{"exratetable"});
|
|
|
|
+ this.getView().setVisible(true, new String[]{"exratedate"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setSettleTypeValue(DynamicObject payerAcctBank) {
|
|
|
|
+ if (payerAcctBank != null) {
|
|
|
|
+ DynamicObjectCollection settlementypes = payerAcctBank.getDynamicObjectCollection("settlementtype");
|
|
|
|
+ if (settlementypes != null && settlementypes.size() > 0) {
|
|
|
|
+ Set<Long> idSet = new HashSet();
|
|
|
|
+ Iterator var4 = settlementypes.iterator();
|
|
|
|
+
|
|
|
|
+ DynamicObject settletype;
|
|
|
|
+ while(var4.hasNext()) {
|
|
|
|
+ settletype = (DynamicObject)var4.next();
|
|
|
|
+ idSet.add(((DynamicObject)settletype.get("fbasedataid")).getLong("id"));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ DynamicObject settleType = this.getDynamicObject("settletype");
|
|
|
|
+ if (idSet.size() == 1) {
|
|
|
|
+ settletype = BusinessDataServiceHelper.loadSingleFromCache(idSet.iterator().next(), "bd_settlementtype", "id,settlementtype");
|
|
|
|
+ if (!BaseDataHelper.isSettleTypeCash(settletype)) {
|
|
|
|
+ this.setValue("settletype", idSet.iterator().next());
|
|
|
|
+ }
|
|
|
|
+ } else if (settleType != null && !idSet.contains((Long)settleType.getPkValue())) {
|
|
|
|
+ this.setValue("settletype", (Object)null);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setCrossPayValue() {
|
|
|
|
+ this.getView().setEnable(true, new String[]{"iscrosspay"});
|
|
|
|
+ DynamicObject payCountry = this.getDynamicObject("paycountry");
|
|
|
|
+ DynamicObject recCountry = this.getDynamicObject("reccountry");
|
|
|
|
+ if ((payCountry == null || CountryHelper.isChina(payCountry)) && (recCountry == null || CountryHelper.isChina(recCountry))) {
|
|
|
|
+ this.setValue("iscrosspay", Boolean.FALSE);
|
|
|
|
+ } else {
|
|
|
|
+ this.setValue("iscrosspay", Boolean.TRUE);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void isDiffCurVisibility() {
|
|
|
|
+ DynamicObject settleType = this.getDynamicObject("settletype");
|
|
|
|
+ if (CasHelper.isNotEmpty(settleType) && BaseDataHelper.isSettleTypeCash(settleType)) {
|
|
|
|
+ this.setValue("isdiffcur", "0");
|
|
|
|
+ this.getView().setVisible(false, new String[]{"isdiffcur"});
|
|
|
|
+ } else {
|
|
|
|
+ this.getView().setVisible(true, new String[]{"isdiffcur"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setCountryValue() {
|
|
|
|
+ DynamicObject payerBank = this.getDynamicObject("payerbank");
|
|
|
|
+ if (payerBank != null) {
|
|
|
|
+ this.setValueIfAbsent("paycountry", payerBank.getDynamicObject("country"));
|
|
|
|
+ this.setCrossPayValue();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void pay(BeforeDoOperationEventArgs evt) {
|
|
|
|
+ long orgId = (Long)this.getDynamicObject("org").getPkValue();
|
|
|
|
+ Set<String> cs1046 = SystemParameterHelper.getParameterComboxs(orgId, "cs1046");
|
|
|
|
+ DynamicObject payBill = this.getModel().getDataEntity();
|
|
|
|
+ (new PaymentPayImpl()).validate(payBill);
|
|
|
|
+ if (PaymentBillPluginHelper.isShowPayConfirm(payBill, cs1046)) {
|
|
|
|
+ FormShowParameter para = new FormShowParameter();
|
|
|
|
+ para.setFormId("cas_paybill_diffpay");
|
|
|
|
+ para.setCloseCallBack(new CloseCallBack(this, "KEY_DIFFPAY_CALLBACK"));
|
|
|
|
+ para.getOpenStyle().setShowType(ShowType.Modal);
|
|
|
|
+ DataEntityPropertyCollection properties = EntityMetadataCache.getDataEntityType("cas_paybill_diffpay").getProperties();
|
|
|
|
+ Map<String, Object> customParams = new HashMap(properties.size());
|
|
|
|
+ Iterator var9 = properties.iterator();
|
|
|
|
+
|
|
|
|
+ while(var9.hasNext()) {
|
|
|
|
+ IDataEntityProperty property = (IDataEntityProperty)var9.next();
|
|
|
|
+ String propName = property.getName();
|
|
|
|
+ if (this.getModel().getProperty(propName) != null) {
|
|
|
|
+ Object value = this.getValue(propName);
|
|
|
|
+ if (value instanceof DynamicObject) {
|
|
|
|
+ customParams.put(propName, ((DynamicObject)value).getPkValue());
|
|
|
|
+ } else {
|
|
|
|
+ customParams.put(propName, value);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ para.setCustomParams(customParams);
|
|
|
|
+ para.setCustomParam("payamount", payBill.getBigDecimal("actpayamt"));
|
|
|
|
+ para.setCustomParam("payamt", payBill.getBigDecimal("dpamt"));
|
|
|
|
+ para.setCustomParam("matchFlag", payBill.getString("matchflag"));
|
|
|
|
+ para.setCustomParam("sourcebilltype", payBill.getString("sourcebilltype"));
|
|
|
|
+ para.setCustomParam("payBillId", payBill.getString("id"));
|
|
|
|
+ this.getView().showForm(para);
|
|
|
|
+ evt.setCancel(true);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void setPaymentType(QFilter[] qFilters) {
|
|
|
|
+ DynamicObject paymentType = BusinessDataServiceHelper.loadSingleFromCache("cas_paymentbilltype", "id,fundflowitem", qFilters);
|
|
|
|
+ if (paymentType != null) {
|
|
|
|
+ this.setValue("paymenttype", paymentType.getLong("id"));
|
|
|
|
+ DynamicObject fundflowitem = paymentType.getDynamicObject("fundflowitem");
|
|
|
|
+ this.fillFundflowItem(true, fundflowitem);
|
|
|
|
+ } else {
|
|
|
|
+ this.setValue("paymenttype", (Object)null);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void viewReceipt() {
|
|
|
|
+ Long billId = (Long)this.getModel().getDataEntity().getPkValue();
|
|
|
|
+ if (billId == 0L) {
|
|
|
|
+ this.getView().showTipNotification(ResManager.loadKDString("暂无对应的电子回单记录!", "ViewReceiptService_0", "fi-cas-business", new Object[0]));
|
|
|
|
+ } else {
|
|
|
|
+ ViewReceiptService viewService = new ViewReceiptService();
|
|
|
|
+ viewService.viewReceipt(this.getView(), "nckd_cas_arbill", billId);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void viewSettle() {
|
|
|
|
+ Long billId = (Long)this.getModel().getDataEntity().getPkValue();
|
|
|
|
+ if (billId == 0L) {
|
|
|
|
+ this.getView().showTipNotification(ResManager.loadKDString("暂无结算记录。", "PaymentBillList_5", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ } else {
|
|
|
|
+ List<Long> mainSettleIds = SettleRecordQueryHelperForCas.getSettleIdsByMain("ap_settlerecord", "nckd_cas_arbill", new Object[]{billId});
|
|
|
|
+ List<Long> asstSettleIds = SettleRecordQueryHelperForCas.getSettleIdsByAsst("ap_settlerecord", "nckd_cas_arbill", new Object[]{billId});
|
|
|
|
+ Set<Long> settleRecordIds = new HashSet();
|
|
|
|
+ settleRecordIds.addAll(mainSettleIds);
|
|
|
|
+ settleRecordIds.addAll(asstSettleIds);
|
|
|
|
+ if (settleRecordIds.size() > 0) {
|
|
|
|
+ ListShowParameter parameter = new ListShowParameter();
|
|
|
|
+ parameter.setBillFormId("ap_settlerecord");
|
|
|
|
+ parameter.getOpenStyle().setShowType(ShowType.MainNewTabPage);
|
|
|
|
+ ListFilterParameter param = new ListFilterParameter();
|
|
|
|
+ param.setFilter(new QFilter("id", "in", settleRecordIds));
|
|
|
|
+ parameter.setListFilterParameter(param);
|
|
|
|
+ parameter.setCustomParam("checkKey", true);
|
|
|
|
+ this.getView().showForm(parameter);
|
|
|
|
+ } else {
|
|
|
|
+ this.getView().showTipNotification(ResManager.loadKDString("暂无结算记录。", "PaymentBillList_5", "fi-cas-formplugin", new Object[0]));
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void afterAddRow(AfterAddRowEventArgs e) {
|
|
|
|
+ super.afterAddRow(e);
|
|
|
|
+ EntryProp entryProp = e.getEntryProp();
|
|
|
|
+ String entryName = entryProp.getName();
|
|
|
|
+ if ("entry".equals(entryName)) {
|
|
|
|
+ RowDataEntity[] rows = e.getRowDataEntities();
|
|
|
|
+ if (rows.length > 0) {
|
|
|
|
+ RowDataEntity[] var5 = rows;
|
|
|
|
+ int var6 = rows.length;
|
|
|
|
+
|
|
|
|
+ for(int var7 = 0; var7 < var6; ++var7) {
|
|
|
|
+ RowDataEntity row = var5[var7];
|
|
|
|
+ this.getModel().setValue("e_sourcebillid", this.getValue("sourcebillid"), row.getRowIndex());
|
|
|
|
+ this.getModel().setValue("e_sourcebillentryid", this.getValue("sourceentryid"), row.getRowIndex());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void isOnlinebankVisibility() {
|
|
|
|
+ String paymentchannel = (String)this.getValue("paymentchannel");
|
|
|
|
+ if (paymentchannel != null && this.isAcctBankExistOnlineBankAcct()) {
|
|
|
|
+ this.getView().setVisible(true, new String[]{"netbankacct"});
|
|
|
|
+ } else {
|
|
|
|
+ this.getView().setVisible(false, new String[]{"netbankacct"});
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private Boolean cancelPayCheckSettle(DynamicObject payObj) {
|
|
|
|
+ Boolean result = Boolean.FALSE;
|
|
|
|
+ boolean exists = SettleRecordQueryHelperForCas.isExistsSettlesByMain("ap_settlerecord", "nckd_cas_arbill", new Object[]{payObj.getPkValue()}, (QFilter)null);
|
|
|
|
+ boolean exists2 = SettleRecordQueryHelperForCas.isExistsSettlesByAsst("ap_settlerecord", "nckd_cas_arbill", new Object[]{payObj.getPkValue()}, (QFilter)null);
|
|
|
|
+ if (exists || exists2) {
|
|
|
|
+ StringBuilder settleSb = new StringBuilder();
|
|
|
|
+ String billno = payObj.getString("billno");
|
|
|
|
+ settleSb.append(String.format(ResManager.loadKDString("(%s)单据已经完成结算", "PaymentBillList_28", "fi-cas-formplugin", new Object[0]), billno));
|
|
|
|
+ this.getView().showConfirm(settleSb.append(ResManager.loadKDString(",如果继续操作将会自动反结算对应的结算记录,是否继续?", "PaymentBillList_29", "fi-cas-formplugin", new Object[0])).toString(), MessageBoxOptions.YesNo, ConfirmTypes.Default, new ConfirmCallBackListener("CONFIRM_CANCELPAY_SETTLE_CALLBACK", this));
|
|
|
|
+ result = Boolean.TRUE;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return result;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public String getPayeeOrPayerInfoNumber(Object payeeOrPayer, Object payeeOrPayerType, String billName) {
|
|
|
|
+ String payeenumber = "";
|
|
|
|
+ String entityNameTemp = "";
|
|
|
|
+ String addressPropName = "";
|
|
|
|
+ if (isSupplier(payeeOrPayerType)) {
|
|
|
|
+ entityNameTemp = AsstActTypeEnum.SUPPLIER.getValue();
|
|
|
|
+ addressPropName = "supplieraddress";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (isCustomer(payeeOrPayerType)) {
|
|
|
|
+ entityNameTemp = AsstActTypeEnum.CUSTOMER.getValue();
|
|
|
|
+ addressPropName = "customeraddress";
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!CasHelper.isEmpty(entityNameTemp) && !CasHelper.isEmpty(payeeOrPayer)) {
|
|
|
|
+ DynamicObject supplierCustDO = BusinessDataServiceHelper.loadSingleFromCache(payeeOrPayer, entityNameTemp, "number,entry_bank.isdefault_bank,entry_bank.bankaccount,entry_bank.bank,entry_bank.accountname,entry_address." + addressPropName);
|
|
|
|
+ if (!CasHelper.isEmpty(supplierCustDO)) {
|
|
|
|
+ payeenumber = supplierCustDO.getString("number");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return payeenumber;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public String getUserOrOrgNumber(Object id, Object type) {
|
|
|
|
+ String entityNameTemp = "";
|
|
|
|
+ String payeenumber = "";
|
|
|
|
+ if (isUser(type)) {
|
|
|
|
+ entityNameTemp = AsstActTypeEnum.EMPLOYEE.getValue();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (isOrg(type)) {
|
|
|
|
+ entityNameTemp = AsstActTypeEnum.COMPANY.getValue();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (!CasHelper.isEmpty(entityNameTemp) && !CasHelper.isEmpty(id)) {
|
|
|
|
+ DynamicObject userOrgDO = BusinessDataServiceHelper.loadSingleFromCache(id, entityNameTemp, "number");
|
|
|
|
+ if (!CasHelper.isEmpty(userOrgDO)) {
|
|
|
|
+ payeenumber = userOrgDO.getString("number");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return payeenumber;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void fillFundflowItem(boolean isCover, DynamicObject defaultFundsItem) {
|
|
|
|
+ if (defaultFundsItem != null) {
|
|
|
|
+ for(int i = 0; i < this.getModel().getEntryRowCount("entry"); ++i) {
|
|
|
|
+ if (isCover) {
|
|
|
|
+ this.setValue("e_fundflowitem", defaultFundsItem.getPkValue(), i);
|
|
|
|
+ } else {
|
|
|
|
+ this.setValueIfAbsent("e_fundflowitem", defaultFundsItem.getPkValue(), i);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static boolean isSupplier(Object payeeType) {
|
|
|
|
+ return isAimType(AsstActTypeEnum.SUPPLIER, payeeType);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static boolean isCustomer(Object payeeType) {
|
|
|
|
+ return isAimType(AsstActTypeEnum.CUSTOMER, payeeType);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static boolean isUser(Object payeeType) {
|
|
|
|
+ return isAimType(AsstActTypeEnum.EMPLOYEE, payeeType);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static boolean isOrg(Object payeeType) {
|
|
|
|
+ return isAimType(AsstActTypeEnum.COMPANY, payeeType);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static boolean isOther(Object payeeType) {
|
|
|
|
+ return isAimType(AsstActTypeEnum.OTHER, payeeType);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private static boolean isAimType(AsstActTypeEnum asstactType, Object payeeType) {
|
|
|
|
+ return asstactType.getValue().equals(payeeType);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean isLockSettleOrg() {
|
|
|
|
+ String sourceBillType = this.getString("sourcebilltype");
|
|
|
|
+ return "ap_finapbill".equals(sourceBillType) || "ar_finarbill".equals(sourceBillType) || "ap_payapply".equals(sourceBillType) || "pm_purorderbill".equals(sourceBillType);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean isClearFeeSettleType() {
|
|
|
|
+ DynamicObject settleType = (DynamicObject)this.getModel().getValue("settletype");
|
|
|
|
+ if (settleType == null) {
|
|
|
|
+ return true;
|
|
|
|
+ } else {
|
|
|
|
+ String settlementType = settleType.getString("settlementtype");
|
|
|
|
+ return Objects.equals(settlementType, SettleMentTypeEnum.BANK.getValue()) || Objects.equals(settlementType, SettleMentTypeEnum.BUSINESS.getValue()) || Objects.equals(settlementType, SettleMentTypeEnum.CHECK.getValue());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private boolean hasPayeeInfo() {
|
|
|
|
+ String payeeformid = this.getString("payeetype");
|
|
|
|
+ Long payeeId = Long.parseLong(this.getValue("payee") == null ? "0" : this.getValue("payee").toString());
|
|
|
|
+ String payeeType = this.getString("payeetype");
|
|
|
|
+ if (isOther(payeeType)) {
|
|
|
|
+ return kd.bos.dataentity.utils.StringUtils.isNotBlank(this.getValue("payeename"));
|
|
|
|
+ } else {
|
|
|
|
+ return CasHelper.isNotEmpty(payeeformid) && CasHelper.isNotEmpty(payeeId);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ public void signCallback(SignCallbackEvent evt) {
|
|
|
|
+ if (evt.getCallbackId().equals("signbeforecommitbe")) {
|
|
|
|
+ ClientMethodResult ret = evt.getResult();
|
|
|
|
+ if (ret.getSuccess()) {
|
|
|
|
+ OperateOption operateOption = OperateOption.create();
|
|
|
|
+ operateOption.setVariableValue("ishasright", "true");
|
|
|
|
+ operateOption.setVariableValue("signCallbackFlag", "true");
|
|
|
|
+ operateOption.setVariableValue("signFirstSave", "false");
|
|
|
|
+ operateOption.setVariableValue("signResult", SerializationUtils.toJsonString(evt.getResult().getResult()));
|
|
|
|
+ operateOption.setVariableValue("clearResult", evt.getClearText());
|
|
|
|
+ OperationResult operationResult = this.getView().invokeOperation("beforecommitbe", operateOption);
|
|
|
|
+ if (operationResult.isSuccess()) {
|
|
|
|
+ this.getView().invokeOperation("commitbe");
|
|
|
|
+ } else {
|
|
|
|
+ logger.info(" signcallback fail ");
|
|
|
|
+ if (EmptyUtil.isNoEmpty(operationResult.getMessage())) {
|
|
|
|
+ evt.getView().showTipNotification(operationResult.getMessage());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ logger.info(" signbeforecommitbe SignCallbackEvent fail ");
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+}
|