委托付款合同支付流程及状态更新

该代码片段展示了委托付款合同的支付流程,涉及到以下几个关键步骤:

  1. 判断合同类型

    • 如果合同号不以 'E-' 开头,则执行以下操作:
      • 更新发票状态。
      • 如果合同存在且有委托付款合同号,则更新委托付款合同的付款状态。
      • 更新合同状态、合作伙伴状态、服务商状态、订单状态。
      • 调用支付接口。
    • 如果合同号以 'E-' 开头,则执行以下操作:
      • 更新发票状态。
      • 如果合同存在且有委托付款合同号,则更新委托付款合同的付款状态。
      • 更新合同状态、合作伙伴状态、服务商状态、订单状态。
      • 调用支付接口。
      • 更新委托付款合同的付款状态。
  2. 更新状态

    • 更新发票状态。
    • 更新合同的付款状态。
    • 更新合作伙伴的付款状态。
    • 更新服务商的付款状态。
    • 更新订单的付款状态。
    • 如果合同为已付款状态,则更新发票信息。
  3. 调用支付接口

    • 使用 finacialManager.pay(params) 方法调用支付接口。

代码示例:

if(contract!=null&&contract.getEntrustContractNo()!=null&&!''.equals(contract.getEntrustContractNo())){
    if (contract.getMoney() != null
            && contract.getMoney().compareTo(BigDecimal.ZERO) > 0) {
        params.put('invoiceMoney', contract.getMoney());
        params.put('invoiceStatus', 2);
        finacialManager.updateInvoice(params);
        //更新合同的付款状态
        contract.setPayStatus(2);
        contractService.update(contract);
        
    }
}
// 更新发票状态 
params.put('invoiceNo', invoice);
params.put('invoiceStatus', 3);
finacialManager.updateInvoice(params);
// 更新合同状态
Map<String, Object> map = new HashMap<String, Object>();
map.put('contractNo',contractNo);
map.put('payStatus', 3);
map.put('invoiceNo', invoice);
map.put('payTime', new Date());
contractService.updateContractPayStatus(map);
//更新到合作伙伴
partnerService.updatePayStatusByContractNo(map);
//更新到服务商
ServiceProvider provider=serviceProviderService.getByContractNo(contractNo);
if(provider!=null){
    provider.setPayStatus(3);
    provider.setPayTime(new Date());
    serviceProviderService.update(provider);
}
// 更新订单状态
orderService.updatePayStatusByContractNo(map);
//如果合同为已付款状态,则更新发票信息
invoiceService.updateInvoiceByContractNo(map);
//调用支付接口
params.put('contractNo', contractNo);
finacialManager.pay(params);
} else if (contractNo.startsWith('E-')) {
    // 更新发票状态 
    params.put('invoiceNo', invoice);
    params.put('invoiceStatus', 3);
    finacialManager.updateInvoice(params);
    //更新委托付款合同
    if(contract!=null&&contract.getEntrustContractNo()!=null&&!''.equals(contract.getEntrustContractNo())){
        if (contract.getMoney() != null
                && contract.getMoney().compareTo(BigDecimal.ZERO) > 0) {
            params.put('invoiceMoney', contract.getMoney());
            params.put('invoiceStatus', 2);
            finacialManager.updateInvoice(params);
            //更新合同的付款状态
            contract.setPayStatus(2);
            contractService.update(contract);
            
        }
    }
    // 更新合同状态
    Map<String, Object> map = new HashMap<String, Object>();
    map.put('contractNo',contractNo);
    map.put('payStatus', 3);
    map.put('invoiceNo', invoice);
    map.put('payTime', new Date());
    contractService.updateContractPayStatus(map);
    //更新到合作伙伴
    partnerService.updatePayStatusByContractNo(map);
    //更新到服务商
    ServiceProvider provider=serviceProviderService.getByContractNo(contractNo);
    if(provider!=null){
        provider.setPayStatus(3);
        provider.setPayTime(new Date());
        serviceProviderService.update(provider);
    }
    // 更新订单状态
    orderService.updatePayStatusByContractNo(map);
    //如果合同为已付款状态,则更新发票信息
invoiceService.updateInvoiceByContractNo(map);
    //调用支付接口
    params.put('contractNo', contractNo);
    finacialManager.pay(params);
    //更新委托付款合同
    if(contract!=null&&contract.getEntrustContractNo()!=null&&!''.equals(contract.getEntrustContractNo())){
        params.put('contractNo', contract.getEntrustContractNo());
        finacialManager.pay(params);
    }
    
}

说明:

  • 代码中的 contract 对象代表委托付款合同信息。
  • contractNo 代表合同号。
  • invoice 代表发票号。
  • voucherNo 代表记账凭证号。
  • finacialManager 是一个财务管理类,包含了更新发票、支付等方法。
  • contractServicepartnerServiceserviceProviderServiceorderServiceinvoiceService 分别代表合同、合作伙伴、服务商、订单和发票的管理类。

注意事项:

  • 确保代码中的所有变量和方法名称都符合实际情况。
  • 在实际开发中,需要根据具体的业务需求进行调整和修改。
  • 建议对代码进行充分的测试,确保代码的正确性和稳定性。

希望以上信息对您有所帮助!

委托付款合同 - 支付流程及状态更新

原文地址: https://www.cveoy.top/t/topic/lhmv 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录