diff --git a/项目管理库/诺唯赞CRM项目/CRM模块拆解分析/应收-开票-收款-核销分析.md b/项目管理库/诺唯赞CRM项目/CRM模块拆解分析/应收-开票-收款-核销分析.md
index 9f58f73..bad391a 100644
--- a/项目管理库/诺唯赞CRM项目/CRM模块拆解分析/应收-开票-收款-核销分析.md
+++ b/项目管理库/诺唯赞CRM项目/CRM模块拆解分析/应收-开票-收款-核销分析.md
@@ -75,8 +75,979 @@ a+b+c=x

五、接口列表
+---
+title: 诺唯赞CRM
+language_tabs:
+ - shell: Shell
+ - http: HTTP
+ - javascript: JavaScript
+ - ruby: Ruby
+ - python: Python
+ - php: PHP
+ - java: Java
+ - go: Go
+toc_footers: []
+includes: []
+search: true
+code_clipboard: true
+highlight_theme: darkula
+headingLevel: 2
+generator: "@tarslib/widdershins v4.0.22"
+
+---
+
+# 诺唯赞CRM
+
+Base URLs:
+
+# Authentication
+
+# 发票明细
+
+## GET 根据发票号查询发票明细列表
+
+GET /api/invoiceDetail/listInvoiceDetail/{invoiceNum}
+
+### 请求参数
+
+|名称|位置|类型|必选|说明|
+|---|---|---|---|---|
+|invoiceNum|path|string| 是 |发票号|
+|Authorization|header|string| 是 |none|
+
+> 返回示例
+
+> 成功
+
+```json
+{
+ "resultMsg": "",
+ "resultCode": 0,
+ "result": [
+ {
+ "id": "",
+ "invoiceid": "",
+ "ordercode": "",
+ "productnum": "",
+ "productcode": "",
+ "productname": "",
+ "spec": "",
+ "salesUnitcode": "",
+ "salesUnit": "",
+ "taxprice": 0,
+ "fileprice": 0,
+ "promprice": 0,
+ "valuationUnit": "",
+ "valuationQuantity": 0,
+ "salenum": 0,
+ "taxRate": "",
+ "amount": 0,
+ "total": 0,
+ "lotnum": "",
+ "busiid": "",
+ "sourcecode": "",
+ "invoicenum": "",
+ "orderdetailid": "",
+ "erpdeptcode": "",
+ "erpdeptname": "",
+ "status": "",
+ "sourceId": "",
+ "productChainName": "",
+ "isgift": "",
+ "gifttype": "",
+ "ordererName": "",
+ "clientname": ""
+ }
+ ]
+}
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+## POST 根据发票编码查询发票明细列表
+
+POST /api/invoiceDetail/listInvoiceDetailByCodes
+
+> Body 请求参数
+
+```json
+[
+ "string"
+]
+```
+
+### 请求参数
+
+|名称|位置|类型|必选|说明|
+|---|---|---|---|---|
+|Authorization|header|string| 是 |none|
+|body|body|array[string]| 否 |none|
+
+> 返回示例
+
+> 成功
+
+```json
+{
+ "resultMsg": "",
+ "resultCode": 0,
+ "result": [
+ {
+ "id": "",
+ "invoiceid": "",
+ "ordercode": "",
+ "productnum": "",
+ "productcode": "",
+ "productname": "",
+ "spec": "",
+ "salesUnitcode": "",
+ "salesUnit": "",
+ "taxprice": 0,
+ "fileprice": 0,
+ "promprice": 0,
+ "valuationUnit": "",
+ "valuationQuantity": 0,
+ "salenum": 0,
+ "taxRate": "",
+ "amount": 0,
+ "total": 0,
+ "lotnum": "",
+ "busiid": "",
+ "sourcecode": "",
+ "invoicenum": "",
+ "orderdetailid": "",
+ "erpdeptcode": "",
+ "erpdeptname": "",
+ "status": "",
+ "sourceId": "",
+ "productChainName": "",
+ "isgift": "",
+ "gifttype": "",
+ "ordererName": "",
+ "clientname": ""
+ }
+ ]
+}
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+## GET 根据应收单编码分组获取开票金额
+
+GET /api/invoiceDetail/getSumTotalGroupByReccode/{reccode}/{ordercode}
+
+### 请求参数
+
+|名称|位置|类型|必选|说明|
+|---|---|---|---|---|
+|reccode|query|string| 是 |none|
+|ordercode|query|string| 是 |none|
+|Authorization|header|string| 是 |none|
+
+> 返回示例
+
+> 成功
+
+```json
+[
+ {
+ "id": "",
+ "invoicecode": "",
+ "busidate": "",
+ "invoicenum": "",
+ "invoiceTime": "",
+ "invoiceCategory": "",
+ "status": "",
+ "redorblue": "",
+ "total": 0,
+ "currency": "",
+ "clientname": "",
+ "clientcode": "",
+ "invoicePname": "",
+ "isred": "",
+ "rednum": "",
+ "istooffice": "",
+ "invoicetype": "",
+ "isinvoicing": "",
+ "iswithgood": "",
+ "isintime": "",
+ "iswithtax": "",
+ "isoffpricetax": "",
+ "isgold": "",
+ "iselectronic": "",
+ "iscombined": "",
+ "taxnumber": "",
+ "openbank": "",
+ "bankacc": "",
+ "invoiceHead": "",
+ "invoiceAdd": "",
+ "phone": "",
+ "remark": "",
+ "detailList": [
+ {
+ "id": "",
+ "invoiceid": "",
+ "ordercode": "",
+ "productnum": "",
+ "productcode": "",
+ "productname": "",
+ "spec": "",
+ "salesUnitcode": "",
+ "salesUnit": "",
+ "taxprice": 0,
+ "fileprice": 0,
+ "promprice": 0,
+ "valuationUnit": "",
+ "valuationQuantity": 0,
+ "salenum": 0,
+ "taxRate": "",
+ "amount": 0,
+ "total": 0,
+ "lotnum": "",
+ "busiid": "",
+ "sourcecode": "",
+ "invoicenum": "",
+ "orderdetailid": "",
+ "erpdeptcode": "",
+ "erpdeptname": "",
+ "status": "",
+ "sourceId": "",
+ "productChainName": "",
+ "isgift": "",
+ "gifttype": "",
+ "ordererName": "",
+ "clientname": ""
+ }
+ ],
+ "receiptAdd": "",
+ "invEmail": "",
+ "invUrl": "",
+ "writeamount": 0,
+ "receivedStatus": "",
+ "sourcecode": "",
+ "busiid": "",
+ "witeoffStatus": "",
+ "isAuto": "",
+ "redInvoiceWord": "",
+ "invoiceWord": "",
+ "isCheckAuthenticity": "",
+ "invoiceOfd": "",
+ "invoiceXml": ""
+ }
+]
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+状态码 **200**
+
+|名称|类型|必选|约束|中文名|说明|
+|---|---|---|---|---|---|
+|*anonymous*|[[InvoiceDetailRes](#schemainvoicedetailres)]|false|none||none|
+|» id|string¦null|false|none||发票主键ID|
+|» invoicecode|string¦null|false|none||发票编号|
+|» busidate|string¦null|false|none||业务日期|
+|» invoicenum|string¦null|false|none||发票号|
+|» invoiceTime|string¦null|false|none||发票日期|
+|» invoiceCategory|string¦null|false|none||开票类型 :(发票类别):普票--common;专票--special|
+|» status|string¦null|false|none||开票状态 暂存--Z;创建--A;审核中--B;已审核--C;重新审核--D|
+|» redorblue|string¦null|false|none||红蓝字|
+|» total|number¦null|false|none||开票金额|
+|» currency|string¦null|false|none||币别|
+|» clientname|string¦null|false|none||客户名称|
+|» clientcode|string¦null|false|none||客户编码|
+|» invoicePname|string¦null|false|none||开票单位名称|
+|» isred|string¦null|false|none||是否红冲|
+|» rednum|string¦null|false|none||红冲票号|
+|» istooffice|string¦null|false|none||是否寄往办事处|
+|» invoicetype|string¦null|false|none||单据类型|
+|» isinvoicing|string¦null|false|none||是否立即开票|
+|» iswithgood|string¦null|false|none||是否随货同行|
+|» isintime|string¦null|false|none||是否及时发送|
+|» iswithtax|string¦null|false|none||是否按含税单价录入|
+|» isoffpricetax|string¦null|false|none||是否价外税|
+|» isgold|string¦null|false|none||是否开金税票|
+|» iselectronic|string¦null|false|none||开电子发票:是:Y;否:N;|
+|» iscombined|string¦null|false|none||合并开票:是:Y;否:N;|
+|» taxnumber|string¦null|false|none||纳税号|
+|» openbank|string¦null|false|none||开户银行|
+|» bankacc|string¦null|false|none||银行账户|
+|» invoiceHead|string¦null|false|none||开票抬头|
+|» invoiceAdd|string¦null|false|none||开票地址|
+|» phone|string¦null|false|none||电话|
+|» remark|string¦null|false|none||备注|
+|» detailList|[[InvoiceDetailEntity](#schemainvoicedetailentity)]¦null|false|none||发票明细|
+|»» id|string¦null|false|none||唯一ID
主键ID|
+|»» invoiceid|string¦null|false|none||对应开票表主键|
+|»» ordercode|string¦null|false|none||对应订单编码|
+|»» productnum|string¦null|false|none||货号|
+|»» productcode|string¦null|false|none||产品编码|
+|»» productname|string¦null|false|none||产品名称|
+|»» spec|string¦null|false|none||规格型号|
+|»» salesUnitcode|string¦null|false|none||销售单位编码|
+|»» salesUnit|string¦null|false|none||销售单位|
+|»» taxprice|number¦null|false|none||含税单价|
+|»» fileprice|number¦null|false|none||目录价|
+|»» promprice|number¦null|false|none||促销价|
+|»» valuationUnit|string¦null|false|none||计价单位|
+|»» valuationQuantity|number¦null|false|none||计价数量,这个是用来配合发票金额进行保存的,可以是小数|
+|»» salenum|number¦null|false|none||销售数量|
+|»» taxRate|string¦null|false|none||税率%|
+|»» amount|number¦null|false|none||产品总金额|
+|»» total|number¦null|false|none||价税合计=产品总金额 + 税额|
+|»» lotnum|string¦null|false|none||批号|
+|»» busiid|string¦null|false|none||业务ID:对应的应收单明细ID、订单明细ID|
+|»» sourcecode|string¦null|false|none||业务来源编码:订单编码;应收单编码;
业务来源编码:订单编码;应收单编码|
+|»» invoicenum|string¦null|false|none||发票号|
+|»» orderdetailid|string¦null|false|none||订单明细id(订单上开票使用)|
+|»» erpdeptcode|string¦null|false|none||ERP部门编码|
+|»» erpdeptname|string¦null|false|none||ERP部门名称|
+|»» status|string¦null|false|none||状态 启用:QY;禁用:JY|
+|»» sourceId|string¦null|false|none||来源ID|
+|»» productChainName|string¦null|false|none||物料中文描述|
+|»» isgift|string¦null|false|none||是否赠品|
+|»» gifttype|string¦null|false|none||赠品类型|
+|»» ordererName|string¦null|false|none||订货人|
+|»» clientname|string¦null|false|none||客户名称|
+|» receiptAdd|string¦null|false|none||文件地址|
+|» invEmail|string¦null|false|none||邮箱地址|
+|» invUrl|string¦null|false|none||电子发票地址|
+|» writeamount|number¦null|false|none||核销金额|
+|» receivedStatus|string¦null|false|none||核销情况|
+|» sourcecode|string¦null|false|none||业务来源编码:订单编码;应收单编码;|
+|» busiid|string¦null|false|none||发票业务id|
+|» witeoffStatus|string¦null|false|none||核销状态|
+|» isAuto|string¦null|false|none||是否自动开票 Y:是,N:否|
+|» redInvoiceWord|string¦null|false|none||红字发票代码|
+|» invoiceWord|string¦null|false|none||发票代码|
+|» isCheckAuthenticity|string¦null|false|none||是否查验真伪|
+|» invoiceOfd|string¦null|false|none||ofd格式|
+|» invoiceXml|string¦null|false|none||xml格式|
+
+## GET 根据订单编码分组获取开票金额
+
+GET /api/invoiceDetail/getSumTotalGroupByOrdercode/{ordercode}/{invoicecode}
+
+### 请求参数
+
+|名称|位置|类型|必选|说明|
+|---|---|---|---|---|
+|ordercode|query|string| 是 |none|
+|invoicecode|query|string| 是 |none|
+|Authorization|header|string| 是 |none|
+
+> 返回示例
+
+> 成功
+
+```json
+[
+ {
+ "id": "",
+ "invoiceid": "",
+ "ordercode": "",
+ "productnum": "",
+ "productcode": "",
+ "productname": "",
+ "spec": "",
+ "salesUnitcode": "",
+ "salesUnit": "",
+ "taxprice": 0,
+ "fileprice": 0,
+ "promprice": 0,
+ "valuationUnit": "",
+ "valuationQuantity": 0,
+ "salenum": 0,
+ "taxRate": "",
+ "amount": 0,
+ "total": 0,
+ "lotnum": "",
+ "busiid": "",
+ "sourcecode": "",
+ "invoicenum": "",
+ "orderdetailid": "",
+ "erpdeptcode": "",
+ "erpdeptname": "",
+ "status": "",
+ "sourceId": "",
+ "productChainName": "",
+ "isgift": "",
+ "gifttype": "",
+ "ordererName": "",
+ "clientname": ""
+ }
+]
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+状态码 **200**
+
+|名称|类型|必选|约束|中文名|说明|
+|---|---|---|---|---|---|
+|*anonymous*|[[InvoiceDetailEntity](#schemainvoicedetailentity)]|false|none||none|
+|» id|string¦null|false|none||唯一ID
主键ID|
+|» invoiceid|string¦null|false|none||对应开票表主键|
+|» ordercode|string¦null|false|none||对应订单编码|
+|» productnum|string¦null|false|none||货号|
+|» productcode|string¦null|false|none||产品编码|
+|» productname|string¦null|false|none||产品名称|
+|» spec|string¦null|false|none||规格型号|
+|» salesUnitcode|string¦null|false|none||销售单位编码|
+|» salesUnit|string¦null|false|none||销售单位|
+|» taxprice|number¦null|false|none||含税单价|
+|» fileprice|number¦null|false|none||目录价|
+|» promprice|number¦null|false|none||促销价|
+|» valuationUnit|string¦null|false|none||计价单位|
+|» valuationQuantity|number¦null|false|none||计价数量,这个是用来配合发票金额进行保存的,可以是小数|
+|» salenum|number¦null|false|none||销售数量|
+|» taxRate|string¦null|false|none||税率%|
+|» amount|number¦null|false|none||产品总金额|
+|» total|number¦null|false|none||价税合计=产品总金额 + 税额|
+|» lotnum|string¦null|false|none||批号|
+|» busiid|string¦null|false|none||业务ID:对应的应收单明细ID、订单明细ID|
+|» sourcecode|string¦null|false|none||业务来源编码:订单编码;应收单编码;
业务来源编码:订单编码;应收单编码|
+|» invoicenum|string¦null|false|none||发票号|
+|» orderdetailid|string¦null|false|none||订单明细id(订单上开票使用)|
+|» erpdeptcode|string¦null|false|none||ERP部门编码|
+|» erpdeptname|string¦null|false|none||ERP部门名称|
+|» status|string¦null|false|none||状态 启用:QY;禁用:JY|
+|» sourceId|string¦null|false|none||来源ID|
+|» productChainName|string¦null|false|none||物料中文描述|
+|» isgift|string¦null|false|none||是否赠品|
+|» gifttype|string¦null|false|none||赠品类型|
+|» ordererName|string¦null|false|none||订货人|
+|» clientname|string¦null|false|none||客户名称|
+
+## GET 根据开票单主键获取明细集合
+
+GET /api/invoiceDetail/getListByInvoiceid/{invoiceid}
+
+### 请求参数
+
+|名称|位置|类型|必选|说明|
+|---|---|---|---|---|
+|invoiceid|query|string| 是 |none|
+|Authorization|header|string| 是 |none|
+
+> 返回示例
+
+> 成功
+
+```json
+{
+ "resultMsg": "",
+ "resultCode": 0,
+ "result": {}
+}
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[AjaxResult](#schemaajaxresult)|
+
+## POST 根据id批量修改SAP发票号
+
+POST /api/invoiceDetail/updateSapInvoiceNumberById
+
+> Body 请求参数
+
+```json
+[
+ {
+ "id": "string",
+ "invoiceid": "string",
+ "ordercode": "string",
+ "productnum": "string",
+ "productcode": "string",
+ "productname": "string",
+ "spec": "string",
+ "salesUnitcode": "string",
+ "salesUnit": "string",
+ "taxprice": 0,
+ "fileprice": 0,
+ "promprice": 0,
+ "valuationUnit": "string",
+ "valuationQuantity": 0,
+ "salenum": 0,
+ "taxRate": "string",
+ "amount": 0,
+ "total": 0,
+ "lotnum": "string",
+ "busiid": "string",
+ "sourcecode": "string",
+ "invoicenum": "string",
+ "orderdetailid": "string",
+ "erpdeptcode": "string",
+ "erpdeptname": "string",
+ "status": "string",
+ "sourceId": "string",
+ "productChainName": "string",
+ "isgift": "string",
+ "gifttype": "string",
+ "ordererName": "string",
+ "clientname": "string"
+ }
+]
+```
+
+### 请求参数
+
+|名称|位置|类型|必选|说明|
+|---|---|---|---|---|
+|Authorization|header|string| 是 |none|
+|body|body|[InvoiceDetailEntity](#schemainvoicedetailentity)| 否 |none|
+
+> 返回示例
+
+> 成功
+
+```json
+{
+ "resultMsg": "",
+ "resultCode": 0,
+ "result": {}
+}
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|[AjaxResult](#schemaajaxresult)|
+
+## POST 根据发票主键id集合获取对应的发票明细集合
+
+POST /api/invoiceDetail/listByInvoiceIdList
+
+> Body 请求参数
+
+```json
+[
+ "string"
+]
+```
+
+### 请求参数
+
+|名称|位置|类型|必选|说明|
+|---|---|---|---|---|
+|Authorization|header|string| 是 |none|
+|body|body|array[string]| 否 |none|
+
+> 返回示例
+
+> 成功
+
+```json
+{
+ "resultMsg": "",
+ "resultCode": 0,
+ "result": [
+ {
+ "id": "",
+ "invoiceid": "",
+ "ordercode": "",
+ "productnum": "",
+ "productcode": "",
+ "productname": "",
+ "spec": "",
+ "salesUnitcode": "",
+ "salesUnit": "",
+ "taxprice": 0,
+ "fileprice": 0,
+ "promprice": 0,
+ "valuationUnit": "",
+ "valuationQuantity": 0,
+ "salenum": 0,
+ "taxRate": "",
+ "amount": 0,
+ "total": 0,
+ "lotnum": "",
+ "busiid": "",
+ "sourcecode": "",
+ "invoicenum": "",
+ "orderdetailid": "",
+ "erpdeptcode": "",
+ "erpdeptname": "",
+ "status": "",
+ "sourceId": "",
+ "productChainName": "",
+ "isgift": "",
+ "gifttype": "",
+ "ordererName": "",
+ "clientname": ""
+ }
+ ]
+}
+```
+
+### 返回结果
+
+|状态码|状态码含义|说明|数据模型|
+|---|---|---|---|
+|200|[OK](https://tools.ietf.org/html/rfc7231#section-6.3.1)|成功|Inline|
+
+### 返回数据结构
+
+# 数据模型
+
+