knowledge/README.md
2024-02-27 14:50:33 +08:00

76 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# knowledge
**一、运行截图**
![输入图片说明](/imgs/2024-02-27/7sqmTbmpxy34zmov.png)![](https://dev.rzdata.net/download/attachments/51773689/image2024-2-23_14-7-33.png?version=1&modificationDate=1708668455000&api=v2)
**二、应收分析**
应收,顾名思义,即为应该收入的销售单,应收主要与发票、收款、核销业务高度集成。
目前展示的功能为应收单列表,快捷查询应收单;提供申请开票、开票、申请合并开票、合并开票、导出功能。
#### 算法
可开票金额=价税合计-已开票金额-退货金额
注:退货金额来源于应收单详情的价税合计*退货数量
#### 关键业务流程
1我的应收
基于业务条件并通过登录用户的工号empno到订单表进行查询
1. 共享应收
基于业务条件并通过登录用户的工号empno到服务团队人员表t_crm_serviceman 通过客户编码(clientcode)跟订单表的客户编码关联查询出t_crm_serviceman 中bill_share_order不等于null (rolecode=负责人时为null)或者shareorder_no(不为不共享=共享->可能为读或者写)或者rolecode=负责人相关订单数据
1. 我负责的部门应收
基于业务条件并通过登录用户的userid查询部门责任信息表t_crm_deptduty如果系统设置--部门设置模块中 部门负责人、部门助理、技术支持等配置了则取部门负责人表的信息查询相关应收单数据
1. 全公司的应收
基于业务条件直接查询应收单表
4合并开票会验证客户是否被禁用禁用得客户无法开票
**三、发票分析**
开票业务在应收和订单中集成销售通过立即开票或者在应收列表点击申请开票然后助理审核对接到ERP生成发票数据通过ERP同步到CRM更新发票里面的状态。
**关键业务流程**
![输入图片说明](/imgs/2024-02-27/71g9Qgf3jtZsyCrQ.png)![](https://dev.rzdata.net/download/attachments/32900500/worddav203afe364bd9ac899a96f79012170090.png?version=1&modificationDate=1679883553000&api=v2)
#### 算法
1. 发票状态判断
2. 退货金额+开票金额=0、价税合计大于0等待开票
3. 价税合计 = 退货金额或者实际价税合家为0 :关闭;
4. 退货金额+开票金额>=订单价税合计:全开票;
5. 否则:部分开票
6. 当ERP系统里面发票结案状态为"强结案"同步到CRM系统时需要将强结案的发票红冲状态修改为"作废",将目前系统里面发票核销状态显示"已核销"逻辑去除并按原始核销状态的取值逻辑取值;
**四、收款与核销分析**
收款业务主要有收款单核销与收款单确认主要用于关联发票与收款单进行核销操作。
#### 算法
涉及算法的位置点击核销打开核销详情页面匹配发票数筛选相同开票单位且和当前选中的发票未核销金额相等的发票最多支持同时匹配3条
x=当前发票未核销金额a=匹配发票未核销金额b=匹配发票未核销金额c=匹配发票未核销金额size=数组长度i=数组当前下标minSize=数组最小下标maxSize=数组最大下标arr=数组
1. 匹配数1条
a=x
1. 匹配数2条
a+b=x
1. 匹配数3条
a+b+c=x
该算法的关键在于去除重复匹配的数据,减少循环层数,提高查询效率。
算法核心固定i同时前后移动数组进行比较这里只说明三条匹配的算法两条是一样的原理
1. 当minSize=0且maxSize=0时minSize=i+1maxSize=size+1同时从数组前后进行比比较
2. 当minSize>=size时i+1且跳出循环此时说明当次比较已经完成跳出循环进行下次比较
3. 当minSize>=maxSize时使maxSize=0maxSize=0i+1且跳出循环此时也说明当次比较完成跳出循环将下标进行初始化当前下标+1进行下一次比较
4. 当a+b+c=x时使maxSize=0maxSize=0i+1且跳出循环并将arr[i]arr[minSize]arr[maxSize]放入结果中(此时说明满足条件,将结果放入满足条件的集合中,跳出循环进行下一次比较)
5. 当a+b+c>x时minSizei保持不变maxSize-1继续进行比较
6. 当a+b+c<x时maxSizei保持不变minSize+1继续进行比较
#### 关键业务流程
![输入图片说明](/imgs/2024-02-27/QyRs49i3AeCiLNFZ.png)![](https://dev.rzdata.net/download/attachments/32900500/worddave0391ac8f62ed7c5b7c0a6ee64ee585b.png?version=1&modificationDate=1679883554000&api=v2)