# 報價項目維護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: {} ```