电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

财务应付单如何暂存态指定发票?

来源:金蝶云社区作者:金蝶2024-09-2217

财务应付单如何暂存态指定发票?

1 简介

1.1 功能介绍

星瀚版本在5.0.011以上,支持现场二开财务应付单暂存态指定发票。

1.2 应用场景

同一个供应商下有多张采购订单,后续收到一张发票,但由于业务人员按照订单入库并确认应付,一张发票需要被多张应付使用。当第一张应付采集发票后,发票并未完全占用,后续发票需要被其他应付指定,同时应付单需要关联发票后提交进入审批流,因此需要在应付暂存时能够指定发票。

2 主要操作

2.1 财务应付单表单界面增加按钮“暂存态指定发票”

上传图片


2.2 增加表单插件,在itemClick增加逻辑判定,当点击该按钮时,打开发票列表进行选择

@Override
public void itemClick(ItemClickEvent evt) {
    super.itemClick(evt);
    String key = evt.getItemKey().toLowerCase();
    Object billstatus = this.getModel().getValue("billstatus");
    // 暂存态点击指定发票按钮
    if ("bar_assigninvbya".equals(key) && "A".equals(billstatus)) {
        ListShowParameter lsp = ShowFormHelper.createShowListForm(EntityConst.ENTITY_APINVOICE, true, 2);
        ListFilterParameter lfp = new ListFilterParameter();
        DynamicObject finApBill = this.getModel().getDataEntity(true);
        DynamicObject org = finApBill.getDynamicObject("org");
        QFilter qfilter = new QFilter("org", QCP.equals, org.getPkValue());
        qfilter.and(new QFilter("unrelatedamt", QCP.not_equals, BigDecimal.ZERO));
        qfilter.and(new QFilter("invoicestatus", QCP.in, new String[]{"0", ""})); //发票状态=正常,或没值在可以指定
        qfilter.and(new QFilter("billstatus", QCP.equals, "C")); //审核
        qfilter.and(new QFilter("ismatched", QCP.equals, Boolean.FALSE)); //未匹配
        String asstacttype = finApBill.getString("asstacttype");
        if (!EmptyUtils.isEmpty(asstacttype)) {
            qfilter.and(new QFilter("asstacttype", QCP.equals, asstacttype)); //往来类型
        }
        DynamicObject asstact = finApBill.getDynamicObject("asstact");
        if (!ObjectUtils.isEmpty(asstact)) {
            // .masterid加上后平台取往来类型默认get(0) 取第一个往来类型拼接过滤条件,仅支持个性化供应商场景查询
            if (AsstactTypeEnum.bd_supplier.getValue().equals(asstacttype)) {
                qfilter.and(new QFilter("receivablessupp.masterid", QCP.equals, asstact.get("masterid"))); //往来户(存在个性化数据筛选不出来)
            } else {
                qfilter.and(new QFilter("receivablessupp", QCP.equals, asstact.getPkValue()));
            }
        } else {
            throw new KDBizException(ResManager.loadKDString("请选择往来户", "demo_12", "fi-ap-business"));
        }
        qfilter.and(new QFilter("currency", QCP.equals, finApBill.getLong("currency.id")));
        lfp.setFilter(qfilter);
        lsp.setListFilterParameter(lfp);
        lsp.setCloseCallBack(new CloseCallBack(this, "assigninvbya"));
        this.getView().showForm(lsp);
    }
}


2.3 然后再closedCallBack事件中进行监听,当客户选中了发票,更新财务应付单的发票明细行

@Override
public void closedCallBack(ClosedCallBackEvent e) {
    super.closedCallBack(e);
    String actionId = e.getActionId();
    Object returnData = e.getReturnData();
    //指定发票
    if ("assigninvbya".equalsIgnoreCase(actionId)) {
        ListSelectedRowCollection rowList = (ListSelectedRowCollection) returnData;
        if (ObjectUtils.isEmpty(rowList)) return;
        Set<Long> invPks = new HashSet<>(ConfigConsts.COLLSIZES);
        for (ListSelectedRow listSelectedRow : rowList) {
            Long billId = (Long) listSelectedRow.getPrimaryKeyValue();
            invPks.add(billId);
        }
        DynamicObject[] invoices = BusinessDataServiceHelper.load(EntityConst.ENTITY_APINVOICE,
                "pricetaxtotal,invoicetype,invoicecode,currency,invoiceno,issuedate,tax,amount,asstactname," +
                        "buyername,istaxdeduction,remark,serialno,invoicestatus,taxrate,billno",
                new QFilter[]{new QFilter("id", QCP.in, invPks)});
     

财务应付单如何暂存态指定发票?

1 简介1.1 功能介绍星瀚版本在5.0.011以上,支持现场二开财务应付单暂存态指定发票。1.2 应用场景同一个供应商下有多张采购订单,后续收...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信