调整手工开票Rate校验和夜数派生

This commit is contained in:
andy
2026-07-22 22:59:28 +07:00
parent 5712f03d4f
commit 68ff9e2b38
10 changed files with 226 additions and 21 deletions

View File

@@ -1175,6 +1175,7 @@ POST /api/reservation/invoices/manual-generations
- 如果前端同时传 `task_id``order_id`,必须保证任务属于该订单;后端不一致时返回 `RESERVATION_INVOICE_CONTEXT_MISMATCH`
- `recipient.company_code``recipient.contact_id` 用于表达目录选择结果;`company``attention``address``telephone``email` 是最终用于生成 PDF 的文本值Manual 覆盖时也必须提交。
- 后端需要重新计算金额、VAT 和合计;前端计算只做预览。
- `charges[].rate` 必填且必须是数字,允许 `0`,不能小于 `0``charges[].quantity``charges[].nights` 仍必须大于 `0`
- 后端需要返回可预览 / 下载的 PDF URL。
- `pdf_url` 第一版可作为预览地址;前端会优先用浏览器 `fetch + Blob` 触发下载,避免跨域场景下 `<a download>` 失效。如果 OSS CORS 不允许浏览器读取文件,前端会退回打开 PDF 页面。后续如要求稳定下载体验,建议后端提供带 `Content-Disposition` 的受控下载代理或签名下载 URL。
- 该接口应走 Bearer 登录、酒店访问权和 `RESERVATION_INVOICE_GENERATE` 权限,不走 M008 调试上传 access key。