gaoluyang
7 天以前 3688f07fd292812994dbf3c84bde18a440d8275c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package cn.iocoder.yudao.module.erp.service.purchase;
 
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.invoice.ErpPurchaseInvoicePageReqVO;
import cn.iocoder.yudao.module.erp.controller.admin.purchase.vo.invoice.ErpPurchaseInvoiceSaveReqVO;
import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInvoiceDO;
import cn.iocoder.yudao.module.erp.dal.dataobject.purchase.ErpPurchaseInvoiceOrderDO;
import jakarta.validation.Valid;
 
import java.math.BigDecimal;
import java.util.Collection;
import java.util.List;
import java.util.Map;
 
import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
 
/**
 * ERP 采购来票 Service 接口
 *
 * @author 超级管理员
 */
public interface ErpPurchaseInvoiceService {
 
    /**
     * 创建来票
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createPurchaseInvoice(@Valid ErpPurchaseInvoiceSaveReqVO createReqVO);
 
    /**
     * 更新来票
     *
     * @param updateReqVO 更新信息
     */
    void updatePurchaseInvoice(@Valid ErpPurchaseInvoiceSaveReqVO updateReqVO);
 
    /**
     * 删除来票
     *
     * @param id 编号
     */
    void deletePurchaseInvoice(Long id);
 
    /**
     * 获得来票
     *
     * @param id 编号
     * @return 来票
     */
    ErpPurchaseInvoiceDO getPurchaseInvoice(Long id);
 
    /**
     * 获得来票列表
     *
     * @param ids 编号列表
     * @return 来票列表
     */
    List<ErpPurchaseInvoiceDO> getPurchaseInvoiceList(Collection<Long> ids);
 
    /**
     * 获得来票 Map
     *
     * @param ids 编号列表
     * @return 来票 Map
     */
    default Map<Long, ErpPurchaseInvoiceDO> getPurchaseInvoiceMap(Collection<Long> ids) {
        return convertMap(getPurchaseInvoiceList(ids), ErpPurchaseInvoiceDO::getId);
    }
 
    /**
     * 获得来票分页
     *
     * @param pageReqVO 分页查询
     * @return 来票分页
     */
    PageResult<ErpPurchaseInvoiceDO> getPurchaseInvoicePage(ErpPurchaseInvoicePageReqVO pageReqVO);
 
    /**
     * 根据采购订单编号获得来票列表
     *
     * @param orderId 采购订单编号
     * @return 来票列表
     */
    List<ErpPurchaseInvoiceDO> getPurchaseInvoiceListByOrderId(Long orderId);
 
    /**
     * 根据供应商编号获得来票列表
     *
     * @param supplierId 供应商编号
     * @return 来票列表
     */
    List<ErpPurchaseInvoiceDO> getPurchaseInvoiceListBySupplierId(Long supplierId);
 
    /**
     * 根据采购订单编号列表,统计每个订单的来票金额合计(用于计算剩余可开票金额)
     *
     * @param orderIds 采购订单编号列表
     * @return Map<采购订单编号, 来票金额合计>
     */
    /**
     * 获得采购订单的已来票金额合计
     *
     * @param orderIds          采购订单编号集合
     * @param excludeInvoiceId  需排除的来票编号(编辑来票时为该来票自身,可为空)
     * @return 采购订单编号 -> 已来票金额
     */
    Map<Long, BigDecimal> getPurchaseInvoicePriceSumMapByOrderIds(Collection<Long> orderIds, Long excludeInvoiceId);
 
    /**
     * 获得来票的采购订单分摊明细
     *
     * @param invoiceId 来票编号
     * @return 分摊明细列表
     */
    List<ErpPurchaseInvoiceOrderDO> getPurchaseInvoiceOrderListByInvoiceId(Long invoiceId);
 
    /**
     * 获得来票的采购订单分摊明细(批量)
     *
     * @param invoiceIds 来票编号列表
     * @return 分摊明细列表
     */
    List<ErpPurchaseInvoiceOrderDO> getPurchaseInvoiceOrderListByInvoiceIds(Collection<Long> invoiceIds);
 
    /**
     * 获得采购订单的分摊明细(批量,用于统计订单已来票金额)
     *
     * @param purchaseOrderIds 采购订单编号列表
     * @return 分摊明细列表
     */
    List<ErpPurchaseInvoiceOrderDO> getPurchaseInvoiceOrderListByPurchaseOrderIds(Collection<Long> purchaseOrderIds);
 
}