委托付款合同 - 支付流程及状态更新
委托付款合同支付流程及状态更新
该代码片段展示了委托付款合同的支付流程,涉及到以下几个关键步骤:
-
判断合同类型:
- 如果合同号不以 'E-' 开头,则执行以下操作:
- 更新发票状态。
- 如果合同存在且有委托付款合同号,则更新委托付款合同的付款状态。
- 更新合同状态、合作伙伴状态、服务商状态、订单状态。
- 调用支付接口。
- 如果合同号以 'E-' 开头,则执行以下操作:
- 更新发票状态。
- 如果合同存在且有委托付款合同号,则更新委托付款合同的付款状态。
- 更新合同状态、合作伙伴状态、服务商状态、订单状态。
- 调用支付接口。
- 更新委托付款合同的付款状态。
- 如果合同号不以 'E-' 开头,则执行以下操作:
-
更新状态:
- 更新发票状态。
- 更新合同的付款状态。
- 更新合作伙伴的付款状态。
- 更新服务商的付款状态。
- 更新订单的付款状态。
- 如果合同为已付款状态,则更新发票信息。
-
调用支付接口:
- 使用
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是一个财务管理类,包含了更新发票、支付等方法。contractService、partnerService、serviceProviderService、orderService和invoiceService分别代表合同、合作伙伴、服务商、订单和发票的管理类。
注意事项:
- 确保代码中的所有变量和方法名称都符合实际情况。
- 在实际开发中,需要根据具体的业务需求进行调整和修改。
- 建议对代码进行充分的测试,确保代码的正确性和稳定性。
希望以上信息对您有所帮助!
原文地址: https://www.cveoy.top/t/topic/lhmv 著作权归作者所有。请勿转载和采集!