补充BOS单据取号及编号定义规则

This commit is contained in:
chen qiang
2026-09-30 10:17:51 +08:00
parent 1bce6fa48c
commit a314c64b0b
8 changed files with 70 additions and 8 deletions
+15 -1
View File
@@ -138,6 +138,19 @@ WHERE BILLDATE = 20260501
SELECT * FROM M_RETAIL
```
### 品小二中文条件
品小二环境存在已知字符集转换问题,中文条件直接写成 `LIKE '%中文%'` 可能返回 0 行。查询中文值时使用 Oracle `UNISTR` Unicode 转义,例如:
```sql
SELECT ID, NAME, DESCRIPTION
FROM AD_TABLE
WHERE DESCRIPTION LIKE '%' || UNISTR('\96F6\552E\5355') || '%'
AND ROWNUM <= 20
```
直接中文字面量查不到时,先用 `UNISTR` 形式重试;这条是品小二的客户级兼容规则。其他 client 若已验证直接中文字面量可用,不必强制改写,但 `UNISTR` 可作为跨环境复用和避免传输编码转换的通用兜底。
## 常用业务对象说明
- “商品”“款号”通常指 `M_PRODUCT` 表。
@@ -291,7 +304,8 @@ python scripts/oracle_skill.py ops_report HENLO
- 新增记录主键 `ID` 使用 `get_sequences('<表名称>')`。
- 如果表存在 `DOCNO` 字段,先到 `AD_COLUMN` 查询该字段的 `SEQUENCENAME`。
- 如果 `SEQUENCENAME` 有值,`DOCNO` 使用 `Get_SequenceNo('<SEQUENCENAME>', 37)`。
- 取单号函数为 `Get_SequenceNo('<CODE>', AD_CLIENT_ID)`;默认 `CODE` 取该单据 `DOCNO` 字段对应的 `AD_COLUMN.SEQUENCENAME` 值,第二个参数取单据实际的 `AD_CLIENT_ID`,确认是 `37` 时才写 `37`。配置为空时不猜测 `CODE`,特殊业务按实际配置和过程逻辑核实;只生成 SQL 示例,不通过查询通道调用取号函数。
- 取号 `CODE` 的定义在 `AD_SEQUENCE` 表,分析编号规则时沿 `DOCNO -> AD_COLUMN.SEQUENCENAME -> AD_SEQUENCE` 核实。
- 如果表存在 `AD_CLIENT_ID` 字段,默认值为 `37`。
- 如果表存在 `AD_ORG_ID` 字段,默认值为 `27`。
- 子表 `AD_CLIENT_ID`、`AD_ORG_ID` 默认继承父表对应字段值。