新增销售台账(页面新增、Excel 导入)时,后端自动按合同全额生成开票登记与回款登记,无需前端再单独调用开票、回款接口。
| 方法 | 路径 | 说明 |
|---|---|---|
| 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": "操作成功" }(结构不变)
新增成功后,后端在同一事务内自动生成:
invoice_registration 主表 + 每个产品一条 invoice_registration_product + 每个产品一条 invoice_ledger;AUTO + 时间戳 + 产品ID(如 AUTO1755500000000123);receipt_payment;invoiceLedgerId。account_income(收入类型=回款收入)。新增保存成功后,建议提示语中说明已自动开票回款:
<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();
}
});
}
后端列表接口 /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
}
}
如需修改已自动开票回款的台账,请走「删除」后重新新增(删除会级联清理开票、回款及财务收入记录)。
AUTO 前缀,可做展示区分;id 为空的新增会触发自动开票回款,修改台账不会触发。type=1(销售)的产品。