补充BOS单据取号及编号定义规则
This commit is contained in:
@@ -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` 默认继承父表对应字段值。
|
||||
|
||||
Reference in New Issue
Block a user