# 報價項目維護API
## 共用
取服務類型下拉
==可用by jr==
```
/api/setting/serviceType
type: get
request: {}
response: [
value: string, //類型的值
label: string // 類型名稱
]
```
取項目類型下拉
==可用by jr==
```
/api/setting/itemSortDrop
type: get
request: {
service_type:null/string //服務類型null就是全部,指定的話請送service_id
}
response: [
value: string, //類型的值
label: string // 類型名稱
]
```
----
## 個別
### 項目分類
取項目分類列表
==可用by jr==
```
/api/setting/itemSortList
type: post
request: {
service: null/string // 服務類型null就是全部,指定的話請送service_id
}
response: {
list: [
id: string, // 序號
serviceId: string, // 服務類型的值
sortName: string, // 種類名稱
status: Boolean // 狀態
],
serviceType:{
id:name
}
}
```
新增或編輯項目分類列表
==可用by jr==
```
/api/setting/itemSortModify
type: put
request: {
id: string // 序號=>編輯時才需要送
serviceId: string, // 服務類型的值
sortName: string, // 分類名稱
status: Boolean // 狀態
}
response: {}
```
----
### 報價項目維護
取報價項目維護列表
==可用by jr==
```
/api/setting/itemMaintainList
type: post
request: {
page: number,
pageSize: number,
itemName: string // 項目名稱
itemSort: string, // 項目分類
service: string, // 服務類型
}
response: {
list: [
id: string, // 序號
itemName: string, // 項目名稱
serviceId: string, // 服務類型id
itemSortName: string, // 分類
itemSortId: string, // 分類id
content: string, // 內容
feeMethod: boolean, // true: 一次性 false: 週期性
frequency: string, // 頻率
price: number, // 底價
sellPrice: number, // 售價
special: number, // 特別業績
increaseFee: boolean // 加費項目
status: Boolean, // 狀態
---之後討論---
jobItem: string, // 推薦工作項目
permission[]: {
type: string, 權限類型
reservePrice: number // 底價
}
],
page: number,
pageSize: number,
pageCount: number
}
```
新增或編輯報價項目維護列表
==可用by jr==
```
/api/setting/itemMaintainModify
type: put
request: {
id: string, // 序號=>編輯時才需要送
itemName: string, // 項目名稱
serviceId: string, // 服務類型id 可以不用送了 他是跟cate的service
itemSortName: string, // 分類 也可以不用送 我是抓取id來認的
itemSortId: string, // 分類id
content: string, // 內容
feeMethod: boolean, // true: 一次性 false: 週期性
frequency: string, // 頻率
price: number, // 底價
sellPrice: number, // 售價
special: number, // 特別業績
cost: number, // 成本
increaseFee: boolean // 加費項目
status: Boolean, // 狀態
---之後討論---
jobItem: string, // 推薦工作項目
permission[]: {
type: string, 權限類型
reservePrice: number // 底價
}
}
response: {}
```
----
### 方案維護
取方案維護列表
==可用by jr==
```
/api/setting/planMaintain
type: post
request: {
page: number,
pageSize: number,
service: string, // 服務類型
planName: string // 方案名稱
}
response: {
list: [
id: string, // 序號
planName: string, // 方案名稱
serviceId: string, // 服務類型id
content: string, // 內容
num: string, //項目數量
price: number, // 底價
sellPrice: number, // 售價
cost: number, // 成本
special: number, // 特別業績
status: Boolean // 狀態
planItems: [
pItemId: string, // 項目id
pItemName: string, // 項目名稱
pItemContent: string, // 項目內容
pItemPrice: 'number, // 項目底價
pItemUnitPrice: 'number, // 項目售價
pItemNum: 'number, // 項目數量
pItemSum: 'number, // 項目小計
pItemFeeMethod: string, // 項目收費方式 '0': 一次性, '1': 週期性
pItemCost: number, // 項目成本
]
],
page: number,
pageSize: number,
pageCount: number
}
```
取項目選單(巢狀結構 父層項目分類 子層項目)
==可用by jr==
<div style="color: #FF0000; font-weight: bold; font-size: 20px">
有新的修改
1. serviceType
</div>
```
/api/setting/itemMenu
type: get
request: {}
response: {
list[]: {
label: string, // 項目分類名稱
value: string, // 項目分類值,
children: [
value: string, // 子層項目id
label: string, // 子層項目名稱
pItemContent: string, // 子層項目內容
pItemPrice: 'number, // 子層項目底價
pItemUnitPrice: 'number, // 子層項目售價
pItemNum: 'number, // 子層項目數量,應該都是1
pItemSum: 'number, // 子層項目小計
pItemFeeMethod: string, // 子層項目收費方式 '0': 一次性, '1': 週期性
pItemCost: number // 子層項目成本
pItemIncreaseFee: boolean // 加費,在報價單會用到
serviceType: string // 服務類型,用以計算分帳
]
},
}
```
新增或編輯方案維護列表
==可用by jr==
```
/api/setting/planMaintainModify
type: put
request: {
id: string, // 序號
planName: string, // 方案名稱
serviceId: string, // 服務類型id
content: string, // 內容
num: string, //項目數量
price: number, // 底價
sellPrice: number, // 售價
cost: number, // 成本
special: number, // 特別業績
status: Boolean // 狀態
planItems: [
pItemId: string, // 項目id
pItemName: string, // 項目名稱
pItemContent: string, // 項目內容
pItemPrice: 'number, // 項目底價
pItemUnitPrice: 'number, // 項目售價
pItemNum: 'number, // 項目數量
pItemSum: 'number, // 項目小計
pItemFeeMethod: string, // 項目收費方式
pItemCost: number, // 項目成本
]
}
response: {}
```
待做討論:
推薦工作項目下拉API
# 合約與報價單API
### 報價單
取報價單列表
==可用by jr==
<div style="color: #FF0000; font-weight: bold; font-size: 20px">
有新的修改
1. suggestItems
</div>
```
/api/customer/quotationList
type: post
request: {
id: string, // 客戶id
mainContract: string // 主約單號,在點擊案件卡片後根據主約單號搜尋
}
response: {
list: [
id: string, // 單號
idLink: string, // 單號連結
clientReturnLink: string, // 客戶回傳資料
verifyState: string, // 審核狀態 '0': 無須審核,'1': 待審核,'2': 審核通過,'3': 駁回
verifyTime: string, // 審核時間
verifyPerson: string, // 審核人
verifySendMan: string, // 審核申請人
sendState: string, // 發送狀態 '0': 未發送,'1': 已發送
sendTime: string, // 發送時間
sendPerson: string, // 報價單發送人
verMark: string, // 改版註記
remark: string, // 備註
cost: number, // 成本
createdTime: string, // 建立時間+人
account: string, // 使用帳號 '0': 米洛 '1': 沃德
mainContract: string, // 主約
appointArchive: string, // 指定業績
workDay: {
workStart: number, // 工作天起始
workEnd: number, // 工作天結束
}
needTax: boolean, // 需計算5%稅金
onceMoney: number, // 一次性款項
cycleMoney: number, // 週期性款項
payStep: string, // 階段付款 '0': 一階段 '1': 二階段 '2': 三階段
calType: '0', // 計算方式 '0': % '1': $
stepMoney: {// 階段金額物件 有幾階段就給幾個,一次付清就只給first
'first': {
money: number, // 金額
percent: number, // 百分比 calType === 0 才給值
},
'second': {
money: number, // 金額
percent: number, // 百分比 calType === 0 才給值
}
},
subTotal: number, // 小計
tax: number, // 稅金
total: number, // 總計
planItems: [ // 方案中項目
pItemId: string, // 項目id
pItemName: string, // 項目名稱
pItemContent: string, // 項目內容
pItemPrice: 'number, // 項目底價
pItemUnitPrice: 'number, // 項目售價
pItemNum: 'number, // 項目數量
pItemSum: 'number, // 項目小計
pItemFeeMethod: string, // 項目收費方式 '0': 一次性, '1': 週期性
pItemCost: number, // 項目成本
pItemIncreaseFee: boolean, // 項目加費
planName: string // 方案名稱 用以顯示這個項目是來自哪個方案匯入
deleteLine: boolean // 刪除線
],
suggestItems: [
pItemId: string, // 項目id
pItemName: string, // 項目名稱
pItemContent: string, // 項目內容
pItemPrice: 'number, // 項目底價
pItemUnitPrice: 'number, // 項目售價
pItemSum: 'number, // 項目小計
pItemFeeMethod: string, // 項目收費方式 '0': 一次性, '1': 週期性
pItemCost: number, // 項目成本
planName: string, // 方案名稱 用以顯示這個項目是來自哪個方案匯入
deleteLine: boolean, // 刪除線
serviceType: string, // 服務類型 '1': 米洛, '2': 時方, '3': 大河, '4': 尋鹿人, '5': 企劃
],
permissionInfo: { // 權限資訊
code: string, // 權限代號 '0': 無權限審查, '1': 有權限審查
limit: number // 權限金額限制,依個別權限給值
},
invalid: boolean // 是否作廢
invalidTime: string, // 作廢時間
],
mainContractDrop: [ // 綁定主約下拉選單
value: string,
label: string
],
verMarkDrop: [ // 改版註記下拉選單
value: string,
label: string
],
pricePermission: number // 當前價格權限
}
```
新增報價單列表 (基本上全送原本的,有需要刪除再改)
==可用by jr==
```
/api/customer/quotationModify
type: put
request: {
list: [
id: string, // 單號
idLink: string, // 單號連結
clientReturnLink: string, // 客戶回傳資料
verifyState: string, // 審核狀態 '0': 無須審核,'1': 待審核,'2': 審核通過,'3': 駁回
verifyTime: string, // 審核時間
verifyPerson: string, // 審核人
verifySendMan: string, // 審核申請人
sendState: string, // 發送狀態 '0': 未發送,'1': 已發送
sendTime: string, // 發送時間
sendPerson: string, // 報價單發送人
verMark: string, // 改版註記
remark: string, // 備註
cost: number, // 成本
createdTime: string, // 建立時間+人
account: string, // 使用帳號 '0': 米洛 '1': 沃德
mainContract: string, // 主約
appointArchive: string, // 指定業績
workDay: {
workStart: number, // 工作天起始
workEnd: number, // 工作天結束
}
needTax: boolean, // 需計算5%稅金
onceMoney: number, // 一次性款項
cycleMoney: number, // 週期性款項
payStep: string, // 階段付款 '0': 一階段 '1': 二階段 '2': 三階段
calType: '0', // 計算方式 '0': % '1': $
stepMoney: {// 階段金額物件 有幾階段就給幾個,一次付清就只給first
'first': {
money: number, // 金額
percent: number, // 百分比 calType === 0 才給值
},
'second': {
money: number, // 金額
percent: number, // 百分比 calType === 0 才給值
}
},
subTotal: number, // 小計
tax: number, // 稅金
total: number, // 總計
planItems: [ // 方案中項目
pItemId: string, // 項目id
pItemName: string, // 項目名稱
pItemContent: string, // 項目內容
pItemPrice: 'number, // 項目底價
pItemUnitPrice: 'number, // 項目售價
pItemNum: 'number, // 項目數量
pItemSum: 'number, // 項目小計
pItemFeeMethod: string, // 項目收費方式 '0': 一次性, '1': 週期性
pItemCost: number, // 項目成本
pItemIncreaseFee: boolean, // 項目加費
planName: string // 方案名稱 用以顯示這個項目是來自哪個方案匯入
deleteLine: boolean, // 刪除線
serviceType: string, // 服務類型 '1': 米洛, '2': 時方, '3': 大河, '4': 尋鹿人, '5': 企劃
],
suggestItems: [
pItemId: string, // 項目id
pItemName: string, // 項目名稱
pItemContent: string, // 項目內容
pItemPrice: 'number, // 項目底價
pItemUnitPrice: 'number, // 項目售價
pItemSum: 'number, // 項目小計
pItemFeeMethod: string, // 項目收費方式 '0': 一次性, '1': 週期性
pItemCost: number, // 項目成本
planName: string, // 方案名稱 用以顯示這個項目是來自哪個方案匯入
deleteLine: boolean, // 刪除線
serviceType: string, // 服務類型 '1': 米洛, '2': 時方, '3': 大河, '4': 尋鹿人, '5': 企劃
],
permissionInfo: { // 權限資訊
code: string, // 權限代號 '0': 無權限審查, '1': 有權限審查
limit: number // 權限金額限制,依個別權限給值
},
invalid: boolean // 是否作廢
invalidTime: string, // 作廢時間
],
mainContractDrop: [ // 綁定主約下拉選單
value: string,
label: string
],
verMarkDrop: [ // 改版註記下拉選單
value: string,
label: string
],
pricePermission: number // 當前價格權限
}
response: {}
```
匯入方案的下拉(巢狀結構 父層服務類型 子層方案)
==可用by jr==
<div style="color: #FF0000; font-weight: bold; font-size: 20px">
有新的修改
1. serviceType
</div>
```
/api/setting/planMenu
type: get
request: {}
response: {
list[]: {
label: string, // 服務分類名稱
value: string, // 服務分類值,
children: [
value: string, // 方案id
label: string, // 方案名稱
items: [
value: string, // 子層項目id
label: string, // 子層項目名稱
pItemContent: string, // 子層項目內容
pItemPrice: 'number, // 子層項目底價
pItemUnitPrice: 'number, // 子層項目售價
pItemNum: 'number, // 子層項目數量
pItemSum: 'number, // 子層項目小計
pItemFeeMethod: string, // 子層項目收費方式 '0': 一次性, '1': 週期性
pItemCost: number // 子層項目成本
pItemIncreaseFee: boolean // 加費,在報價單會用到
planName: string, // 方案名稱 用以顯示這個項目是來自哪個方案匯入
serviceType: string // 服務類型,用以計算分帳
]
]
},
}
```
轉成合約
==可用by jr==
```
/api/customer/turnContract
type: post
request: {
id: string // 報價單單號
}
response: {}
```
發送報價單 跟發送信件一樣 多一個Pdf,格式再討論
```
/api/customer/sendQuotation
type: post
request: {
...
}
response: {}
```
報價單金額異動審核
```
/api/customer/verifyQuotationPrice
type: post
request: {
id: string, // 報價單單號
verifyState: string, // 審核狀態 '0': 無須審核,'1': 待審核,'2': 審核通過,'3': 駁回
verifyStatePassword: string //密碼
}
response: {}
```
報價單作廢
==可用by jr==
```
/api/customer/validSend
type: post
request: {
id: string, // 報價單單號
status: string // '1': 作廢 '0':取消作廢
}
```
待做討論:
PDF預覽
文案內容
作廢
### 合約
取合約列表
==可用by jr==
```
/api/customer/contractList
type: post
request: {
id: string, // 客戶id
mainContract: string // 主約單號,在點擊案件卡片後根據主約單號搜尋
}
response: {
list: [
id: string, // 單號
idLink: string, // 單號連結
clientReturnLink: string, // 客戶回傳資料
incomeState: string, // 入帳狀態
incomeMoney: number, // 入帳金額
incomeTime: string, // 入帳時間
auditState: string, // 查帳審核狀態
auditTime: string, // 查帳審核時間
auditPerson: string, // 查帳審核人
verMark: string, // 改版註記
remark: string, // 備註
cost: number, // 成本
createdTime: string, // 建立時間+人
account: string, // 使用帳號 '0': 米洛 '1': 沃德
mainContract: string, // 主約
appointArchive: string, // 指定業績
workDay: {
workStart: number, // 工作天起始
workEnd: number, // 工作天結束
}
needTax: boolean, // 需計算5%稅金
onceMoney: number, // 一次性款項
cycleMoney: number, // 週期性款項
payStep: string, // 階段付款 '0': 一階段 '1': 二階段 '2': 三階段
calType: '0', // 計算方式 '0': % '1': $
stepMoney: {// 階段金額物件 有幾階段就給幾個,一次付清就只給first
'first': {
money: number, // 金額
percent: number, // 百分比 calType === 0 才給值
},
'second': {
money: number, // 金額
percent: number, // 百分比 calType === 0 才給值
}
},
subTotal: number, // 小計
tax: number, // 稅金
total: number, // 總計
planItems: [ // 方案中項目
pItemId: string, // 項目id
pItemName: string, // 項目名稱
pItemContent: string, // 項目內容
pItemPrice: 'number, // 項目底價
pItemUnitPrice: 'number, // 項目售價
pItemNum: 'number, // 項目數量
pItemSum: 'number, // 項目小計
pItemFeeMethod: string, // 項目收費方式 '0': 一次性, '1': 週期性
pItemCost: number, // 項目成本
pItemIncreaseFee: boolean, // 項目加費
planName: string, // 方案名稱 用以顯示這個項目是來自哪個方案匯入
deleteLine: boolean, // 刪除線
serviceType: string, // 服務類型 '1': 米洛, '2': 時方, '3': 大河, '4': 尋鹿人, '5': 企劃
],
suggestItems: [
pItemId: string, // 項目id
pItemName: string, // 項目名稱
pItemContent: string, // 項目內容
pItemPrice: 'number, // 項目底價
pItemUnitPrice: 'number, // 項目售價
pItemSum: 'number, // 項目小計
pItemFeeMethod: string, // 項目收費方式 '0': 一次性, '1': 週期性
pItemCost: number, // 項目成本
planName: string, // 方案名稱 用以顯示這個項目是來自哪個方案匯入
deleteLine: boolean, // 刪除線
serviceType: string, // 服務類型 '1': 米洛, '2': 時方, '3': 大河, '4': 尋鹿人, '5': 企劃
],
permissionInfo: { // 權限資訊
code: string, // 權限代號 '0': 無權限審查, '1': 有權限審查
limit: number // 權限金額限制,依個別權限給值
},
contractShow: boolean, // 米管家合約顯示
finalCountDown: boolean // 發送尾款通知
caseName: string, // 案件名稱
],
mainContractDrop: [ // 綁定主約下拉選單
value: string,
label: string
],
verMarkDrop: [ // 改版註記下拉選單
value: string,
label: string
],
pricePermission: number // 當前價格權限
}
```
取得個別合約查帳審核
```
/api/customer/getContractAudit
type: get
request: {
id: number, // 合約id
}
response: [
{ // 送出審核後
title: string, // 查帳階段標題 ex. 頭款
titleType: string, // 查帳狀態 '0': 待審核, '1': 審核完成
titleAmount: number, // 標題金額
transferTime: string, // 匯款日期
accountNumber: string, // 帳號(末五碼)
amount: number || null, // 金額
auditTime: string || null, // 查帳日期
fee: number, // 手續費
incomeType: string, // 入帳方式 '0': 匯款, '1': 支票, '2': 現金, '3': 刷卡
applyMemo: string, // 申請人備註
auditMemo: string, // 審核人備註
tradeTime: string || null, // 銀行交易時間
applyPerson: string, // 時間 + by申請人
auditPerson: string, // 時間 + by審核人
financeCheck: true, // 財務確認,審核完成才有,按過確認之後就不能再更新審核以及入帳
},
{ // 還沒送出的階段
title: string, // 查帳階段標題 ex. 頭款
titleAmount: number, // 標題金額
}
]
```
合約查帳送出審核、確認審核以及修改審核
```
/api/customer/verifyQuotationAudit
type: post
request: {
------------送出審核申請以及審核都要送的----------
step: string, // 分期階段,用以判斷送出的分期階段,以index為辨別
id: number, // 合約id
---------------------------------------------
------------送出審核申請才有----------
applyMemo: string, // 申請人備註
transferTime: string, // 匯款日期
accountNumber: string, // 帳號(末五碼)
---------------------------------------------
------------審核才有----------
amount: number, // 金額
auditTime: string, // 查帳日期
fee: number, // 手續費
incomeType: string, // 入帳方式 '0': 匯款, '1': 支票, '2': 現金, '3': 刷卡
auditMemo: string, // 審核人備註
tradeTime: string, // 銀行交易時間
}
response: {}
```
取得個別合約查帳審核結果
```
/api/customer/getContractAuditResult
type: get
request: {
id: number, // 合約id
}
response: [
{
title: string, // 查帳階段標題 ex. 頭款
titleAmount: number, // 標題金額
transferTime: string, // 匯款日期
fee: number, // 手續費
incomeType: string, // 入帳方式 '0': 匯款, '1': 支票, '2': 現金, '3': 刷卡
accountNumber: string, // 帳號(末五碼)
tradeTime: string || null, // 銀行交易時間
auditMemo: string, // 審核人備註
auditPerson: string, // 時間 + by審核人
}
]
```
# 合約/案件卡片API
取得合約/案件卡片列表
==可用by jr==
```
/api/customer/contractCard
type: get
request: {
id: string // 客戶id
}
response: {
list: [
caseName: string, // 案件名稱
mainContract: string, // 主合約單號
incomeState: { // 入帳狀態
text: string,
state: string // '0' 未入帳 , '1': 有入帳部分或全部
},
contractLink: string, // 合約PDF連結
closeCase: boolean // 是否結案
],
serviceType: { // 服務類型map
id:name
}
}
```
取得合約/案件卡片詳細資訊
```
/api/customer/contractCardDetail
type: get
request: {
mainContract: string // 主合約單號
}
response: [
... // 階段樣板,下一個計劃規劃
]
```
取得合約分帳
/api/customer/getShareAccount
type: get
request: {
mainContract: string // 主合約單號
}
response: {
}
# 發票API
取得發票列表
```
/api/customer/invoiceList
type: get
request: {
id: string // 客戶id
}
response: {
list: [
invoiceDate: 'yyyy-MM-dd', // 發票日期
invoiceId: string, // 發票號碼
invoiceType: string, // 發票類型 '0': '電子發票', '1': '紙本發票'
variety: string, // 品項
heading: string, // 抬頭
taxId: string, // 統一編號
beforeTax: number, // 未稅金額
afterTax: number, // 含稅金額
address: string, // 寄送地址
email: string, // 電子信箱
remark: string, // 備註
remarkSpecial: string, // 特殊備註
company: string, // 開立公司 '0': '米洛', '1': '沃德', '2': '尋鹿人', '3': '大河', '4': '時方'
sendDate: 'yyyy-MM-dd', // 寄送日期
sendPerson: string, // 寄送人
status: string, // 狀態 '0': 正常狀態, '1': '已作廢', '2': '已折讓'
lastTime: string // 最後修改時間
]
}
```
新增修改發票列表
```
/api/customer/invoiceModify
type: post
request: {
invoiceType: string; // 發票類型 '0': 電子發票, '1': 紙本發票
invoiceDate: string; // 發票日期
invoiceId: string; // 發票號碼
variety: string; // 品項
beforeTax: number; // 未稅金額
afterTax: number; // 含稅金額
heading: string; // 抬頭
taxId: string; // 統一編號
address: string; // 寄送地址
email: string; // 寄送信箱
company: string; // 公司
remark: string; // 備註
case: string; // 案件
}
response: {}
```
修改發票寄送日期
```
/api/customer/invoiceModify
type: post
request: {
invoiceId: string; // 發票號碼
sendDate: 'yyyy-MM-dd', // 寄送日期
}
response: {}
```
# 合約分帳
取得合約分帳
```
/api/customer/invoiceList
type: get
request: {
mainContract: string // 合約id
}
response: {
subTotal: number, // 小計(未稅總額)
tax: number, // 稅金
total: number, // 總計(含稅總額)
shareTotal: [ // 各公司服務佔比
{
company: string, // 公司 '1': 米洛, '2': 時方, '3': 大河, '4': 尋鹿人, '5': 企劃
percent: number, // 百分比
eachAmount: number, // 未稅額
assignedAmount: number, // 已分配
leftAmount: number // 剩餘
},
],
shareStep: [ // 各公司階段分帳
{
title: string, // 款項名目
percent: number, // 百分比
status: string, // '0': 未入帳, '1': 已入帳
canShare: boolean, // 可分帳,影響分帳按鈕
canAudit: boolean, // 財務可審核,影響財務審核按鈕
type: string, // 0: %, 1: $
shareList: [
{
company: string, // 公司
money: number, // 金額
percent: number, // 百分比
},
{
company: string,
money: number,
percent: number,
},
{
company: string,
money: number,
percent: number,
}
],
stepTotal: number, // 未稅
}
]
}
```
### 工作項目分類
取工作項目分類
==可用by jr==
```
/api/setting/jobSortList
type: post
request: {
}
response: {
list: [
id: string, // 序號
jobId: string, // 工作項目的值
jobSortName: string, // 分類名稱
status: Boolean // 狀態
],
serviceType:{
id:name
}
}
```
新增或編輯工作項目分類列表
==可用by jr==
```
/api/setting/jobSortModify
type: put
request: {
id: string // 序號=>編輯時才需要送
jobId: string, // 服務類型的值
jobSortName: string, // 分類名稱
status: Boolean // 狀態
}
response: {}
```