充值抵扣会生成应收单,充值抵扣: 账期>=启用日期月份,抵扣日期<启用日期,按账期到期日结转应收单 使用java写一个案例
时间: 2023-07-16 12:14:05 浏览: 39
假设我们有一个名为RechargeDeduction的类来表示充值抵扣,以及一个名为Receivable的类来表示应收单。代码如下:
```java
import java.time.LocalDate;
public class RechargeDeduction {
private LocalDate accountDate; // 账期
private LocalDate deductDate; // 抵扣日期
private double amount; // 抵扣金额
public RechargeDeduction(LocalDate accountDate, LocalDate deductDate, double amount) {
this.accountDate = accountDate;
this.deductDate = deductDate;
this.amount = amount;
}
public LocalDate getAccountDate() {
return accountDate;
}
public void setAccountDate(LocalDate accountDate) {
this.accountDate = accountDate;
}
public LocalDate getDeductDate() {
return deductDate;
}
public void setDeductDate(LocalDate deductDate) {
this.deductDate = deductDate;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
}
```
```java
import java.time.LocalDate;
public class Receivable {
private LocalDate dueDate; // 到期日
private double amount; // 应收金额
public Receivable(LocalDate dueDate, double amount) {
this.dueDate = dueDate;
this.amount = amount;
}
public LocalDate getDueDate() {
return dueDate;
}
public void setDueDate(LocalDate dueDate) {
this.dueDate = dueDate;
}
public double getAmount() {
return amount;
}
public void setAmount(double amount) {
this.amount = amount;
}
}
```
然后我们可以编写一个名为ReceivableGenerator的类来根据充值抵扣信息生成应收单:
```java
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
public class ReceivableGenerator {
public static List<Receivable> generate(List<RechargeDeduction> deductions, LocalDate startDate) {
List<Receivable> receivables = new ArrayList<>();
for (RechargeDeduction deduction : deductions) {
if (deduction.getAccountDate().compareTo(startDate) >= 0 && deduction.getDeductDate().compareTo(startDate) < 0) {
LocalDate dueDate = deduction.getAccountDate().plusMonths(1);
double amount = deduction.getAmount();
Receivable receivable = new Receivable(dueDate, amount);
receivables.add(receivable);
}
}
return receivables;
}
}
```
这个方法接受一个充值抵扣列表和一个开始日期作为参数,然后遍历充值抵扣列表,计算符合条件的应收单并将其添加到应收单列表中,最后返回应收单列表。
例如,我们可以使用以下代码来测试这个方法:
```java
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
LocalDate startDate = LocalDate.of(2021, 1, 1);
List<RechargeDeduction> deductions = new ArrayList<>();
deductions.add(new RechargeDeduction(LocalDate.of(2020, 12, 1), LocalDate.of(2020, 12, 31), 100.0));
deductions.add(new RechargeDeduction(LocalDate.of(2021, 1, 1), LocalDate.of(2020, 12, 31), 200.0));
deductions.add(new RechargeDeduction(LocalDate.of(2021, 2, 1), LocalDate.of(2020, 12, 31), 300.0));
List<Receivable> receivables = ReceivableGenerator.generate(deductions, startDate);
for (Receivable receivable : receivables) {
System.out.println("Due date: " + receivable.getDueDate() + ", Amount: " + receivable.getAmount());
}
}
}
```
输出结果应该是:
```
Due date: 2021-01-01, Amount: 200.0
Due date: 2021-03-01, Amount: 300.0
```