编辑 | blame | 历史 | 原始文档

新增销售台账自动开票、自动回款

新增销售台账(页面新增、Excel 导入)时,后端自动按合同全额生成开票登记与回款登记,无需前端再单独调用开票、回款接口。

涉及页面

  • 销售台账列表页(新增/编辑弹窗、导入)
  • 开票登记页面
  • 回款登记页面
  • 财务管理 - 收入管理页面

API

方法 路径 说明
POST /sales/ledger/addOrUpdateSalesLedger 新增/修改销售台账(仅新增时触发自动开票、回款)
POST /sales/ledger/import 导入销售台账(每条导入成功的台账均触发自动开票、回款)

请求参数: 与原有完全一致,无新增字段。

/sales/ledger/addOrUpdateSalesLedger 请求示例:

参数 类型 必填 说明
id Long 为空=新增(触发自动开票回款),非空=修改(不触发)
customerId Long 客户ID
projectName String 项目名称
entryDate String 录入日期 yyyy-MM-dd
salesman String 业务员
entryPerson String 录入人
type Integer 台账类型 1-销售
productData Array 产品列表(quantity、taxInclusiveTotalPrice 等,同原结构)
tempFileIds Array 临时附件ID列表

响应: { "code": 200, "msg": "操作成功" }(结构不变)

后端自动生成的数据(前端无需调用接口)

新增成功后,后端在同一事务内自动生成:

  1. 开票登记:invoice_registration 主表 + 每个产品一条 invoice_registration_product + 每个产品一条 invoice_ledger
  • 开票数 = 产品数量,开票金额 = 产品含税总价(全额开票);
  • 发票号自动生成,格式 AUTO + 时间戳 + 产品ID(如 AUTO1755500000000123);
  • 开票时间 = 当天,开票人 = 当前登录人。
  1. 回款登记:每个产品一条 receipt_payment
  • 回款金额 = 开票全额,回款形式 = 0(电汇),来款日期 = 当天;
  • 已关联对应的开票台账 invoiceLedgerId
  1. 财务收入:每条回款对应一条 account_income(收入类型=回款收入)。

前端修改点

1. 新增弹窗:无需改动请求参数

新增保存成功后,建议提示语中说明已自动开票回款:

<el-button type="primary" @click="submitForm">保 存</el-button>
submitForm() {
  addOrUpdateSalesLedger(this.form).then(res => {
    if (res.code === 200) {
      const msg = this.form.id ? '修改成功' : '新增成功,已自动全额开票并全额回款';
      this.$modal.msgSuccess(msg);
      this.open = false;
      this.getList();
    }
  });
}

2. 列表编辑按钮:新增后默认不可编辑

后端列表接口 /sales/ledger/listPage 返回的 isEdit 规则不变:只要存在开票或回款记录即为 false。由于新增即自动开票回款,新台账 isEdit 恒为 false,编辑按钮应禁用:

<el-button
  size="mini"
  type="text"
  :disabled="scope.row.isEdit === false"
  @click="handleUpdate(scope.row)"
>修改</el-button>
data() {
  return {
    // 无需新增字段,沿用 scope.row.isEdit
  }
}

如需修改已自动开票回款的台账,请走「删除」后重新新增(删除会级联清理开票、回款及财务收入记录)。

3. 开票登记 / 回款登记页面

  • 开票登记列表会出现自动生成的记录,发票号带 AUTO 前缀,可做展示区分;
  • 新增台账后,对应产品的「未开票数/未开票金额」为 0,开票登记弹窗中该产品不可再次开票(后端会校验超量);
  • 回款登记页面同理,自动回款记录已关联发票号。

注意事项

  • id 为空的新增会触发自动开票回款,修改台账不会触发。
  • 自动开票回款仅针对 type=1(销售)的产品。
  • 产品数量或含税总价为空/为 0 时跳过该产品的自动开票回款,不阻断台账新增。
  • Excel 导入与页面新增行为一致,均自动开票回款。
  • 删除销售台账会级联删除自动生成的开票登记、开票台账、回款登记及对应财务收入记录。
  • 台账新增后如需调整,请删除重建,避免直接修改导致开票/回款数据不一致。