@tocca-systems/twp-cli 0.38.0 → 0.39.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.public.md +10 -0
- package/README.md +118 -3
- package/dist/{ai-dispatch-AHCYPQ5Y.js → ai-dispatch-KRMDHQEF.js} +1 -1
- package/dist/{api-command-BZVUZIOB.js → api-command-IO572BZ4.js} +3 -3
- package/dist/{app-SNRFIHTQ.js → app-Y2RIXLS4.js} +4 -4
- package/dist/{backlog-33ELMSV6.js → backlog-67JSQYOH.js} +1 -1
- package/dist/chunk-4ZT5LTRX.js +94 -0
- package/dist/{chunk-QBA6THJ5.js → chunk-BJLXXRSY.js} +1 -1
- package/dist/{chunk-LS7P3IWP.js → chunk-C7UDUHQZ.js} +7 -7
- package/dist/{chunk-ZST7XESB.js → chunk-ELXDRPDV.js} +39 -33
- package/dist/{chunk-TAN5I2DP.js → chunk-I4ARX6NM.js} +1 -1
- package/dist/{chunk-IRT7VFG4.js → chunk-MHRGKUMK.js} +1 -1
- package/dist/chunk-QDTYD5PY.js +147 -0
- package/dist/{chunk-57HDZYSN.js → chunk-QQLWMHGR.js} +1 -1
- package/dist/{chunk-ADQD5OPN.js → chunk-RZ54TCQU.js} +15 -14
- package/dist/chunk-TLN3JSEC.js +7 -0
- package/dist/chunk-UVUVEL3B.js +3 -0
- package/dist/{chunk-OHIERIBW.js → chunk-Y5YDL3MC.js} +1 -1
- package/dist/cli.js +109 -9
- package/dist/{commands-RCDYCU6L.js → commands-MLYGGSUE.js} +3 -3
- package/dist/company-3KUWW7QA.js +71 -0
- package/dist/{completion-3X7HPIPM.js → completion-6R5D5TQQ.js} +1 -1
- package/dist/contract-FGRHTOGI.js +86 -0
- package/dist/{department-PVUB3ZPI.js → department-PN5DCCRL.js} +1 -1
- package/dist/deposit-XQER6PMG.js +4 -0
- package/dist/estimate-IXBEQVGI.js +164 -0
- package/dist/{inquiry-CUK2LWQK.js → inquiry-3VOJASJH.js} +1 -1
- package/dist/invoice-KY3BYTHQ.js +209 -0
- package/dist/{job-title-CZRZFVUU.js → job-title-EM6RKGQ6.js} +1 -1
- package/dist/{knowledge-XYLG42MB.js → knowledge-F4FZ4MLH.js} +1 -1
- package/dist/{leave-DL3JPO5I.js → leave-D2S7NMJC.js} +1 -1
- package/dist/{media-CMNIZUPY.js → media-SQVQVX2E.js} +1 -1
- package/dist/{notification-ULATH7AC.js → notification-NTFUPUMY.js} +1 -1
- package/dist/{oneshot-RYWJ6ECA.js → oneshot-TMGTEN3S.js} +1 -1
- package/dist/{position-ICOGEMRG.js → position-D52LXRDT.js} +1 -1
- package/dist/{prospect-MB2OP7L2.js → prospect-AQ7EUU4N.js} +1 -1
- package/dist/receivable-AE44YIJO.js +49 -0
- package/dist/{registry-XBYUPKQQ.js → registry-3WV46K26.js} +1 -1
- package/dist/{report-JL7UJB4G.js → report-TI2DOJGX.js} +1 -1
- package/dist/{run-6JRHCC67.js → run-KNZ43HFF.js} +2 -2
- package/dist/{task-CMCHUX2D.js → task-VKVZSF7J.js} +2 -2
- package/dist/{user-5JXFO56G.js → user-KEFI7XZI.js} +1 -1
- package/dist/{workflow-XBUMFS2G.js → workflow-4FHTOQZZ.js} +1 -1
- package/package.json +1 -1
- package/dist/chunk-GLBQAXWC.js +0 -6
- package/dist/chunk-O4NSYHR4.js +0 -3
- package/dist/company-GMCHRVHF.js +0 -161
- package/dist/sales-GJKW7VVG.js +0 -4
- /package/dist/{commands-7PGS2PTH.js → commands-K6DQ3O35.js} +0 -0
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{readBody}from"./chunk-HGTG5XQ7.js";import{featureLicenseGuidance,licenseForbidden}from"./chunk-RZ54TCQU.js";import{repeatedValues}from"./chunk-IOGVQVGD.js";import{isoDate}from"./chunk-UDPJ2IGK.js";import{SALES_CONTRACTS_PATH,isExactNumericId,resolveNamed}from"./chunk-ELXDRPDV.js";import"./chunk-IF2K4PM5.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";
|
|
4
|
+
import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,PAGE_NUMBER_PAGING_HELP,STABLE_PAGE_ORDER,nonEmpty,pageNumberPaging,pageNumberQuery,pageRangeNotes}from"./chunk-5R4SEO3I.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-ZN5EFDH7.js";import{acknowledgement,isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";var PATH=SALES_CONTRACTS_PATH;var SALES_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));var DISAMBIGUATION="\u53D6\u5F15\u5951\u7D04\u306F\u898B\u7A4D\u304B\u3089\u4F5C\u308B\u8CA9\u58F2\u7BA1\u7406\u306E\u66F8\u985E\u3067\u3059\uFF08\u660E\u7D30\u30FB\u91D1\u984D\u3092\u6301\u3061\u3001\u627F\u8A8D\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306B\u4E57\u308A\u307E\u3059\uFF09\u3002\n\u9867\u5BA2\u306B\u7D10\u3065\u3051\u3066\u4FDD\u7BA1\u3059\u308B\u5951\u7D04\u66F8\u306E PDF \u306F\u5225\u7269\u3067\u3001twp customer contract \u3067\u6271\u3044\u307E\u3059\u3002\n\n";
|
|
5
|
+
var CONTRACT_STATUSES={new:"\u4F5C\u6210\u4E2D",create_completed:"\u4F5C\u6210\u5B8C\u4E86",in_progress:"\u7533\u8ACB\u4E2D",approved:"\u627F\u8A8D\u6E08",rejected:"\u5DEE\u3057\u623B\u3057",submitted:"\u63D0\u793A\u6E08",contracted:"\u5951\u7D04\u7DE0\u7D50\u6E08",deleted:"\u524A\u9664\u6E08"};var RENEWAL_TYPES={auto_renewal:"\u81EA\u52D5\u66F4\u65B0",application_renewal:"\u7533\u8FBC\u306B\u3088\u308B\u66F4\u65B0"};function statusName(code){return CONTRACT_STATUSES[code]??code}function tableHelp(table){
|
|
6
|
+
return Object.entries(table).map(([code,name])=>`${code}\uFF08${name}\uFF09`).join(" / ")}var STORE_KEYS=["estimate_id","contract_no","title","status","contract_date","start_date","end_date","renewal_type","cancellation_notice_days","next_renewal_date","memo","manage_form_data","contract_document_file_ids","details","recipients"];var CREATE_ONLY_KEYS=["estimate_id"];var UPDATE_KEYS=STORE_KEYS.filter(key=>!CREATE_ONLY_KEYS.includes(key));var DETAIL_KEYS=["item_name","description","quantity","unit",
|
|
7
|
+
"unit_price","tax_rate"];var RECIPIENT_KEYS=["customer_contact_id","recipient_type"];var FIELD_NOTES=[["estimate_id","\u4F5C\u6210\u3067\u5FC5\u9808\u30FB\u4F5C\u6210\u306E\u307F\u3002\u5143\u306E\u898B\u7A4D\u306E ID\uFF08\u6574\u6570\u3002\u53D6\u5F15\u5148\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u898B\u7A4D\u304B\u3089\u6C7A\u307E\u308A\u307E\u3059\uFF09"],["title","\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u5951\u7D04\u4EF6\u540D\uFF08500 \u6587\u5B57\u307E\u3067\uFF09"],["contract_date",
|
|
8
|
+
"\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u5951\u7D04\u65E5\uFF08YYYY-MM-DD\uFF09"],["contract_no","\u5951\u7D04\u756A\u53F7\uFF08100 \u6587\u5B57\u307E\u3067\u3002\u81EA\u52D5\u3067\u306F\u63A1\u756A\u3055\u308C\u307E\u305B\u3093\uFF09"],["status",`\u4F5C\u6210\u306F new\uFF08\u4F5C\u6210\u4E2D\uFF09/ create_completed\uFF08\u4F5C\u6210\u5B8C\u4E86\uFF09\u3060\u3051\u3002\u627F\u8A8D\u7533\u8ACB\uFF08in_progress\uFF09\u306F update \u3067\u3002\u627F\u8A8D\u6E08\uFF08approved\uFF09\u306F\u627F\u8A8D\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u3067\u3057\u304B\u4ED8\u304D\u307E\u305B\u3093\u3002\u5024: ${tableHelp(
|
|
9
|
+
CONTRACT_STATUSES)}`],["start_date / end_date","\u5951\u7D04\u671F\u9593\uFF08YYYY-MM-DD\u3002end_date \u306F start_date \u4EE5\u964D\uFF09"],["renewal_type",`\u66F4\u65B0\u533A\u5206: ${tableHelp(RENEWAL_TYPES)}\uFF08null \u3067\u672A\u8A2D\u5B9A\uFF09`],["cancellation_notice_days","\u89E3\u7D04\u306E\u7533\u3057\u5165\u308C\u671F\u9650\uFF08\u6E80\u4E86\u306E\u4F55\u65E5\u524D\u304B\u30FB0\u301C65535 \u306E\u6574\u6570\uFF09"],["next_renewal_date","\u6B21\u56DE\u66F4\u65B0\u65E5\uFF08YYYY-MM-DD\uFF09"],
|
|
10
|
+
["memo","\u30E1\u30E2\uFF08\u6587\u5B57\u5217\uFF09"],["manage_form_data","\u6DFB\u4ED8\u66F8\u985E\u30FB\u96C6\u8A08\u9805\u76EE\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF08\u753B\u9762\u304C\u4F5C\u308B\u5F62\u3002CLI \u304B\u3089\u306F\u6DFB\u4ED8\u3092\u4F5C\u308C\u307E\u305B\u3093\uFF09"],["contract_document_file_ids","\u5951\u7D04\u66F8\u30D5\u30A1\u30A4\u30EB\uFF08\u30D5\u30A1\u30A4\u30EB\u6A5F\u80FD\u306E ID \u306E\u914D\u5217\u30FB50 \u4EF6\u307E\u3067\uFF09\u3002\u9001\u308B\u3068\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u3001[] \u3067\u5168\u89E3\u9664"],
|
|
11
|
+
["details","\u4F5C\u6210\u3067\u5FC5\u9808\u30FB1 \u4EF6\u4EE5\u4E0A\u3002update \u3067\u9001\u308B\u3068\u660E\u7D30\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059"],["details[].item_name","\u5FC5\u9808\u3002\u54C1\u540D\uFF08500 \u6587\u5B57\u307E\u3067\uFF09"],["details[].quantity","\u5FC5\u9808\u3002\u6570\u91CF\uFF080 \u4EE5\u4E0A\u306E\u6570\u5024\uFF09"],["details[].unit","\u5FC5\u9808\u3002set / item / unit / hour / day / month / person / person_month / person_day"],["\
|
|
12
|
+
details[].unit_price","\u5FC5\u9808\u3002\u5358\u4FA1\uFF08\u6574\u6570\u30FB\u5186\uFF09"],["details[].tax_rate",'\u5FC5\u9808\u3002"10" / "8" / "0"\uFF08\u6587\u5B57\u5217\uFF09'],["details[].description","\u660E\u7D30\u306E\u8AAC\u660E"],["recipients","\u9001\u4ED8\u5148\uFF0850 \u4EF6\u307E\u3067\uFF09\u3002update \u3067\u9001\u308B\u3068\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059"],["recipients[].customer_contact_id","\u5FC5\u9808\u3002\u9867\u5BA2\u306E\u62C5\u5F53\u8005 ID"],
|
|
13
|
+
["recipients[].recipient_type","to\uFF08\u5B9B\u5148\uFF09/ cc\uFF08\u5199\u3057\uFF09"]];var CONTENT_MAX_CHARS=1e6;var LIST_COLUMNS=["id","contract_no","contract_date","status","company_name","title","total","invoice_total","deposit_total"];var GET_COLUMNS=["id","contract_no","title","status","contract_date","start_date","end_date","renewal_type","next_renewal_date","company_name","project_name","estimate_no","subtotal","tax_amount","total"];var CONTENT_FILE_FLAG={name:"--content-file",summary:"\
|
|
14
|
+
\u53D6\u5F15\u5951\u7D04\u306E\u5185\u5BB9\u306E JSON \u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};var SKELETON_FLAG={name:"--generate-cli-skeleton",summary:"--content-file \u306E\u3072\u306A\u5F62\u3092\u51FA\u3057\u3066\u7D42\u4E86\u3059\u308B\uFF08\u53D6\u5F15\u5951\u7D04\u306F\u5909\u3048\u306A\u3044\uFF09",takesValue:false};var SKELETON_ESTIMATE_FLAG={name:"--estimate",summary:"\u3072\u306A\u5F62\u306E\u5143\u306B\u3059\u308B\u898B\u7A4D\u306E ID\uFF08--generate-cli-skeleton \u3068\u4E00\u7DD2\u306B\
|
|
15
|
+
\u4F7F\u3046\u3002\u4EF6\u540D\u3068\u660E\u7D30\u3092\u5199\u3059\uFF09",takesValue:true,placeholder:"<\u898B\u7A4DID>"};var CONTENT_HELP="\u5185\u5BB9\uFF08--content-file\uFF09\u306F JSON \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u3059\u3002\u30AD\u30FC\u306F\u753B\u9762\u306E\u5165\u529B\u9805\u76EE\u3068\u540C\u3058\u540D\u524D\uFF08title / contract_date / details \u306A\u3069\uFF09\u3067\u3001\n \u5404\u30AD\u30FC\u306B\u6E21\u305B\u308B\u5024\u306F --generate-cli-skeleton \u306E\u6CE8\u8A18\uFF08stderr\uFF09\u306B\u51FA\u307E\u3059\u3002\n \u30B5\u30FC\u30D0\u306B\u7121\u3044\u30AD\u30FC\uFF08\u6253\u3061\u9593\u9055\u3044\u3092\u542B\u3080\u3002\u660E\u7D30 details[] \u3068\u9001\u4ED8\u5148 recipients[] \u306E\u4E2D\u3082\uFF09\u306F\u3001\u9001\u308B\u524D\u306B\u3059\u3079\u3066\u6319\u3052\u3066\u6B62\u3081\u307E\u3059\n \uFF08\u30B5\u30FC\u30D0\u306F\u77E5\u3089\u306A\u3044\u30AD\u30FC\u3092\u9ED9\u3063\u3066\u6368\u3066\u308B\u305F\u3081\uFF09\u3002\u5024\u306E\u8AA4\u308A\u306F\u30B5\u30FC\u30D0\u304C 422 \u3067\u65AD\u308A\u307E\u3059\u3002--content-file - \u3067\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u3081\u307E\u3059\u3002";
|
|
16
|
+
function usageOf(op){return`twp contract ${op} help`}function contractIdArg(input,op){const[raw,...rest]=input.args;const id=raw?.trim()??"";if(id==="")throw new UsageError("\u53D6\u5F15\u5951\u7D04\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf(op));if(rest.length>0)throw new UsageError(`\u53D7\u3051\u53D6\u308C\u308B\u53D6\u5F15\u5951\u7D04\u306E ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,usageOf(op));if(!isExactNumericId(id)){throw new UsageError(`\u53D6\
|
|
17
|
+
\u5F15\u5951\u7D04\u306E ID \u306F\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${id}`,"\u5951\u7D04\u756A\u53F7\u3067\u63A2\u3059\u306A\u3089 twp contract list --keyword <\u756A\u53F7> \u306E id \u5217\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002")}return id}function contractPath(input,op){return`${PATH}/${contractIdArg(input,op)}`}function noArgs(input,op){if(input.args.length>0)throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.
|
|
18
|
+
args.join(" ")}`,usageOf(op))}function envelope(body,what){if(!isRecord(body)||body["result"]!==true){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return body}function dataOf(body,what){const data=envelope(body,what)["data"];if(!isRecord(data)||typeof data["id"]!=="string"){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}
|
|
19
|
+
return data}function serverMessage(body){const message=isRecord(body)?body["message"]:void 0;return typeof message==="string"&&message!==""?[message]:[]}function withStatusName(row,columns){const picked=pick(row,columns);const status=isRecord(row)?row["status"]:void 0;if(typeof status!=="string")return picked;return Object.fromEntries(Object.entries(picked).flatMap(([key,value])=>key==="status"?[[key,value],["status_name",statusName(status)]]:[[key,value]]))}function text(value){return typeof value===
|
|
20
|
+
"string"||typeof value==="number"?String(value):""}function describeContract(contract){const no=text(contract["contract_no"]);const total=typeof contract["total"]==="number"?`\u7A0E\u8FBC ${contract["total"].toLocaleString("ja-JP")} \u5186`:"";const status=text(contract["status"]);const parts=[text(contract["company_name"]),total,status===""?"":statusName(status)].filter(part=>part!=="");return`${no===""?"\uFF08\u5951\u7D04\u756A\u53F7\u306A\u3057\uFF09":no}\u300C${text(contract["title"])}\u300D${parts.
|
|
21
|
+
length>0?`\uFF08${parts.join("\u30FB")}\uFF09`:""}`}var LIST_FILTER_FLAGS=[{name:"--keyword",summary:"\u4EF6\u540D\u30FB\u5951\u7D04\u756A\u53F7\u30FB\u30E1\u30E2\u306E\u8A9E\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u90E8\u5206\u4E00\u81F4\uFF09",takesValue:true,placeholder:"<\u8A9E>"},{name:"--status",summary:"\u30B9\u30C6\u30FC\u30BF\u30B9\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u30B3\u30FC\u30C9\u304B\u8868\u793A\u540D\u30FB\u8907\u6570\u56DE\u6307\u5B9A\u3067\u304D\u308B\uFF09",takesValue:true,placeholder:"\
|
|
22
|
+
<\u30B9\u30C6\u30FC\u30BF\u30B9>",repeatable:true},{name:"--customer",summary:"\u53D6\u5F15\u5148\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u4F01\u696D\u540D\u30FB\u7565\u79F0\u30FB\u30AB\u30CA\u306E\u5B8C\u5168\u4E00\u81F4\u304B ID\u3002\u5143\u306E\u898B\u7A4D\u306E\u53D6\u5F15\u5148\uFF09",takesValue:true,placeholder:"<\u53D6\u5F15\u5148>"},{name:"--project",summary:"\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u7D5E\u308A\u8FBC\u3080\uFF08\u30B3\u30FC\u30C9\u304B ID\u3002\u5143\u306E\u898B\u7A4D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF09",
|
|
23
|
+
takesValue:true,placeholder:"<\u30B3\u30FC\u30C9|ID>"},{name:"--estimate",summary:"\u5143\u306E\u898B\u7A4D\u306E ID \u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u898B\u7A4DID>"},{name:"--from",summary:"\u5951\u7D04\u65E5\u304C\u3053\u306E\u65E5\u4EE5\u964D\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8>"},{name:"--to",summary:"\u5951\u7D04\u65E5\u304C\u3053\u306E\u65E5\u4EE5\u524D\uFF08YYYY-MM-DD\uFF09",takesValue:true,placeholder:"<\u65E5\u4ED8>"}];function listQuery(input){
|
|
24
|
+
const resolved=input.resolved??{};const{page_no,page_limit}=pageNumberQuery(input);return{keyword:nonEmpty(input.flags,"--keyword"),status_list:resolved["status"],company_id:resolved["customer"],project_id:resolved["project"],estimate_id:resolved["estimate"],contract_date_from:isoDate(input,"--from"),contract_date_to:isoDate(input,"--to"),...STABLE_PAGE_ORDER,page_limit,page_no}}async function statusCodes(input){const refs=Object.entries(CONTRACT_STATUSES).map(([code,name])=>({id:code,name,code}));
|
|
25
|
+
const codes=[];for(const raw of repeatedValues(input,"--status")){const ref=await resolveNamed(raw,refs,{flag:"--status",label:"\u53D6\u5F15\u5951\u7D04\u306E\u30B9\u30C6\u30FC\u30BF\u30B9",scope:"\u3053\u306E CLI"});if(!codes.includes(ref.id))codes.push(ref.id)}return codes}async function prepareList(input,ctx){noArgs(input,"list");listQuery(input);const status=await statusCodes(input);const estimate=nonEmpty(input.flags,"--estimate");if(estimate!==void 0&&!isExactNumericId(estimate.trim())){throw new UsageError(
|
|
26
|
+
`--estimate \u306E\u898B\u7A4D ID \u306F\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${estimate}`,usageOf("list"))}const resolved={};if(status.length>0)resolved["status"]=status.join(",");const customer=nonEmpty(input.flags,"--customer");if(customer!==void 0)resolved["customer"]=(await ctx.resolver.company(customer,{flag:"--customer",source:"sales",mustExist:true})).id;const project=nonEmpty(input.flags,"--project");if(project!==void 0)resolved["project"]=await ctx.projectId(
|
|
27
|
+
project);if(estimate!==void 0)resolved["estimate"]=text((await ctx.resolver.salesRecord("estimate",estimate.trim(),"--estimate"))["id"]);return withResolved(input,resolved)}function totalsNote(body){if(!isRecord(body))return[];const sum=body["sum"];return[...pageRangeNotes(body),...typeof sum==="number"?[`\u8A72\u5F53 ${sum} \u4EF6`]:[]]}var listPaging=pageNumberPaging({label:"\u53D6\u5F15\u5951\u7D04\u4E00\u89A7"});function rows(body){envelope(body,"\u53D6\u5F15\u5951\u7D04\u4E00\u89A7");return listPaging.
|
|
28
|
+
items(body)}var listOperation={name:"list",summary:"\u53D6\u5F15\u5951\u7D04\u3092\u4E00\u89A7\u3059\u308B\uFF08\u767B\u9332\u306E\u65B0\u3057\u3044\u9806\uFF09",usage:"twp contract list [--keyword <\u8A9E>] [--status <\u30B9\u30C6\u30FC\u30BF\u30B9>]... [--customer <\u53D6\u5F15\u5148>] [--project <\u30B3\u30FC\u30C9|ID>] [--estimate <\u898B\u7A4DID>] [--from <\u65E5\u4ED8>] [--to <\u65E5\u4ED8>] [--all] [--limit <\u4EF6\u6570>]",description:DISAMBIGUATION+`\u8CA9\u58F2\u7BA1\u7406\u306E\u53D6\u5F15\u5951\u7D04\u3092\u4E00\u89A7\u3057\u307E\u3059\u3002\u898B\u3048\u308B\u306E\u306F\u30B5\u30FC\u30D0\u304C\u3042\u306A\u305F\u306B\u898B\u305B\u308B\u5951\u7D04\u3060\u3051\u3067\
|
|
29
|
+
\u3059
|
|
30
|
+
\uFF08\u7BA1\u7406\u8005\u4EE5\u5916\u306F\u3001\u5143\u306E\u898B\u7A4D\u304C\u30E1\u30F3\u30D0\u30FC\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306B\u3042\u308B\u5951\u7D04\u3068\u3001\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u672A\u8A2D\u5B9A\u3067\u81EA\u5206\u304C\u4F5C\u6210\u8005\u306E\u5951\u7D04\uFF09\u3002
|
|
31
|
+
|
|
32
|
+
--status \u306B\u6E21\u305B\u308B\u5024: ${tableHelp(CONTRACT_STATUSES)}
|
|
33
|
+
\u8907\u6570\u56DE\u6307\u5B9A\u3059\u308B\u3068\u3044\u305A\u308C\u304B\u306B\u5F53\u305F\u308B\u3082\u306E\u3092\u51FA\u3057\u307E\u3059\u3002\u30B3\u30FC\u30C9\u3067\u3082\u8868\u793A\u540D\u3067\u3082\u6307\u5B9A\u3067\u304D\u3001\u6253\u3061\u9593\u9055\u3044\u306F\u300C0\u4EF6\u300D\u3067\u306F\u306A\u304F\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002
|
|
34
|
+
--customer / --project \u306F\u5143\u306E\u898B\u7A4D\u306E\u53D6\u5F15\u5148\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u3067\u7D5E\u308A\u8FBC\u307F\u307E\u3059\uFF08\u5951\u7D04\u305D\u306E\u3082\u306E\u306F\u53D6\u5F15\u5148\u3092\u6301\u3061\u307E\u305B\u3093\uFF09\u3002
|
|
35
|
+
--project \u3092\u7701\u3044\u3066\u3082\u65E2\u5B9A\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\uFF08TWP_PROJECT \u7B49\uFF09\u3067\u306F\u7D5E\u308A\u8FBC\u307F\u307E\u305B\u3093\u3002
|
|
36
|
+
\u7D5E\u308A\u8FBC\u307F\u5168\u4F53\u306E\u4EF6\u6570\u306F stderr \u306B\u51FA\u307E\u3059\u3002invoice_total / deposit_total \u306F\u3053\u306E\u5951\u7D04\u306B\u7D10\u3065\u304F\u8ACB\u6C42\u30FB\u5165\u91D1\u306E\u5408\u8A08\uFF08\u7A0E\u8FBC\uFF09\u3067\u3059\u3002
|
|
37
|
+
|
|
38
|
+
--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
|
|
39
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${LIST_COLUMNS.join(" / ")}\u3001status \u306E\u5F8C\u308D\u306B status_name\uFF09\u3067\u3059\u3002
|
|
40
|
+
|
|
41
|
+
`+LIST_PAGING_HELP+"\n"+PAGE_NUMBER_PAGING_HELP,flags:[...PAGE_NUMBER_LIST_FLAGS,...LIST_FILTER_FLAGS],paging:listPaging,forbidden:SALES_FORBIDDEN,prepare:prepareList,plan:input=>({method:"GET",path:PATH,query:listQuery(input)}),summarize:body=>rows(body).map(row=>withStatusName(row,LIST_COLUMNS)),raw:rows,notes:totalsNote};var getOperation={name:"get",summary:"\u53D6\u5F15\u5951\u7D041\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B",usage:"twp contract get <\u5951\u7D04ID>",description:DISAMBIGUATION+
|
|
42
|
+
"ID \u306F twp contract list \u306E id \u5217\u306E\u6570\u5B57\u3067\u3059\uFF08\u5951\u7D04\u756A\u53F7\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002\n\n--output json \u306F\u5951\u7D04\u306E\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u660E\u7D30 details\u30FB\u9001\u4ED8\u5148 recipients \u3092\u542B\u3080\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002",flags:[],forbidden:SALES_FORBIDDEN,plan:input=>({method:"GET",path:contractPath(input,"get")}),summarize:body=>withStatusName(dataOf(body,"\
|
|
43
|
+
\u53D6\u5F15\u5951\u7D04"),GET_COLUMNS),raw:body=>dataOf(body,"\u53D6\u5F15\u5951\u7D04")};function unknownRowKeys(value,key,allowed,source){if(value===void 0||value===null)return[];if(!Array.isArray(value))throw new UsageError(`${key} \u306F\u914D\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${source}\uFF09`,CONTENT_HELP);const problems=[];value.forEach((row,index)=>{if(!isRecord(row)){problems.push(`${key}[${index}] \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093`);
|
|
44
|
+
return}for(const name of Object.keys(row)){if(!allowed.includes(name))problems.push(`${key}[${index}].${name}`)}});return problems}function parseContractContent(textBody,source,mode){let parsed;try{parsed=JSON.parse(textBody)}catch{throw new UsageError(`\u53D6\u5F15\u5951\u7D04\u306E\u5185\u5BB9\u304C JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093\uFF08${source}\uFF09`,CONTENT_HELP)}if(!isRecord(parsed))throw new UsageError(`\u53D6\u5F15\u5951\u7D04\u306E\u5185\u5BB9\u306F JSON \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${source}\
|
|
45
|
+
\uFF09`,CONTENT_HELP);const allowed=mode==="create"?STORE_KEYS:UPDATE_KEYS;const problems=[...Object.keys(parsed).filter(key=>!allowed.includes(key)).map(key=>mode==="update"&&CREATE_ONLY_KEYS.includes(key)?`${key}\uFF08\u4F5C\u6210\u306E\u3068\u304D\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u5143\u306E\u898B\u7A4D\u306F\u4ED8\u3051\u66FF\u3048\u3089\u308C\u307E\u305B\u3093\uFF09`:key==="project_id"||key==="company_id"?`${key}\uFF08\u53D6\u5F15\u5951\u7D04\u306F\u6301\u3061\u307E\u305B\u3093\u3002\u5143\u306E\u898B\u7A4D\u306E\u5024\u304C\u4F7F\u308F\u308C\u307E\u3059\uFF09`:
|
|
46
|
+
key),...unknownRowKeys(parsed["details"],"details",DETAIL_KEYS,source),...unknownRowKeys(parsed["recipients"],"recipients",RECIPIENT_KEYS,source)];if(problems.length>0){throw new UsageError(`\u53D6\u5F15\u5951\u7D04\u306E\u5185\u5BB9\u306B\u9001\u308C\u306A\u3044\u9805\u76EE\u304C\u3042\u308A\u307E\u3059\uFF08${source}\uFF09: ${problems.join(", ")}`,`\u9001\u308C\u308B\u9805\u76EE\u306F twp contract ${mode} --generate-cli-skeleton \u306E\u6CE8\u8A18\u306B\u4E26\u3073\u307E\u3059\u3002${mode==="u\
|
|
47
|
+
pdate"?"\u4ECA\u306E\u5024\u306F twp contract update <\u5951\u7D04ID> --generate-cli-skeleton \u3067\u53D6\u308C\u307E\u3059\u3002":""}`)}if(mode==="update"&&Object.keys(parsed).length===0){throw new UsageError(`\u66F8\u304D\u63DB\u3048\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093\uFF08${source} \u304C\u7A7A\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u3059\uFF09`,usageOf("update"))}return parsed}function contentNotes(body,mode){const notes=[];if(mode==="update"){if(Array.isArray(body["\
|
|
48
|
+
details"]))notes.push("\u660E\u7D30\uFF08details\uFF09\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\uFF08\u9001\u3063\u305F\u884C\u3060\u3051\u304C\u6B8B\u308A\u307E\u3059\uFF09");if(Array.isArray(body["recipients"]))notes.push("\u9001\u4ED8\u5148\uFF08recipients\uFF09\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059")}if(Array.isArray(body["contract_document_file_ids"]))notes.push("\u5951\u7D04\u66F8\u30D5\u30A1\u30A4\u30EB\uFF08contract_document_file_ids\uFF09\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059");
|
|
49
|
+
if(mode==="update"&&body["status"]==="in_progress")notes.push("status \u304C in_progress\uFF08\u7533\u8ACB\u4E2D\uFF09\u3067\u3059\u3002\u4ECA\u304C\u7533\u8ACB\u4E2D\u3067\u306A\u3051\u308C\u3070\u627F\u8A8D\u7533\u8ACB\u306B\u306A\u308A\u3001\u627F\u8A8D\u8005\u3078\u5C4A\u304D\u307E\u3059");if(mode==="update"&&body["status"]==="deleted"){notes.push("status \u3092 deleted\uFF08\u524A\u9664\u6E08\uFF09\u306B\u3057\u307E\u3059\u3002\u3053\u308C\u306F\u524A\u9664\u3067\u306F\u306A\u304F\u30B9\u30C6\u30FC\u30BF\u30B9\u306E\u5909\u66F4\u3067\u3001\u8ACB\u6C42\u304C\u7D10\u3065\u3044\u3066\u3044\u3066\u3082\u6B62\u307E\u308A\u307E\u305B\u3093\uFF08\u524A\u9664\u306A\u3089 twp contract delete\uFF09")}
|
|
50
|
+
return notes}function todayJst(now=new Date){return new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Tokyo"}).format(now)}function fieldNotes(mode){return[`\u9001\u308C\u308B\u9805\u76EE\uFF08${mode}\uFF09\u3068\u5024\u306E\u6C7A\u307E\u308A\uFF08\u30B5\u30FC\u30D0\u306E\u691C\u67FB\u306E\u5199\u3057\uFF09:`,...FIELD_NOTES.filter(([key])=>mode==="create"||!CREATE_ONLY_KEYS.includes(key)).map(([key,note])=>` ${key}: ${note}`)]}function createSkeleton(estimate){const details=Array.isArray(estimate["\
|
|
51
|
+
details"])?estimate["details"].filter(isRecord).map(row=>pick(row,DETAIL_KEYS)):[];return{estimate_id:estimate["id"]??null,contract_no:null,title:estimate["title"]??"",status:"new",contract_date:todayJst(),start_date:null,end_date:null,renewal_type:null,cancellation_notice_days:null,next_renewal_date:null,memo:null,details:details.length>0?details:[{item_name:"",description:null,quantity:1,unit:"set",unit_price:0,tax_rate:"10"}]}}function createSkeletonNotes(estimate){return[`\u898B\u7A4D ${text(
|
|
52
|
+
estimate["estimate_no"])||text(estimate["id"])}\u300C${text(estimate["title"])}\u300D\u306E\u4EF6\u540D\u3068\u660E\u7D30\u3092\u5199\u3057\u307E\u3057\u305F`,"\u5951\u7D04\u671F\u9593\u30FB\u66F4\u65B0\u533A\u5206\u3092\u57CB\u3081\u3066\u304B\u3089 twp contract create --content-file <\u30D1\u30B9> \u3067\u4F5C\u308A\u307E\u3059\uFF08\u53D6\u5F15\u5148\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u898B\u7A4D\u304B\u3089\u6C7A\u307E\u308A\u307E\u3059\uFF09",...fieldNotes("create")]}function updateSkeleton(contract){
|
|
53
|
+
const out={};for(const key of UPDATE_KEYS){if(!(key in contract))continue;const value=contract[key];if(key==="details"&&Array.isArray(value)){out[key]=value.filter(isRecord).map(row=>pick(row,DETAIL_KEYS))}else if(key==="recipients"&&Array.isArray(value)){out[key]=value.filter(row=>isRecord(row)&&row["is_deleted"]!==true).map(row=>pick(row,RECIPIENT_KEYS))}else{out[key]=value}}return out}function updateSkeletonNotes(contract){const recipients=contract["recipients"];const deleted=Array.isArray(recipients)?
|
|
54
|
+
recipients.filter(row=>isRecord(row)&&row["is_deleted"]===true).length:0;return["\u4ECA\u306E\u53D6\u5F15\u5951\u7D04\u306E\u3001\u66F8\u304D\u8FBC\u3081\u308B\u9805\u76EE\u3060\u3051\u3092\u51FA\u3057\u307E\u3057\u305F\u3002\u5909\u3048\u306A\u3044\u9805\u76EE\u306F\u6D88\u3057\u3066\u304B\u3089 twp contract update <\u5951\u7D04ID> --content-file <\u30D1\u30B9> \u3067\u9001\u3063\u3066\u304F\u3060\u3055\u3044"," \uFF08details / recipients / contract_document_file_ids \u3092\u9001\u308B\u3068\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\uFF09",
|
|
55
|
+
...deleted>0?[` \u9001\u4ED8\u5148\u306E\u3046\u3061\u9867\u5BA2\u7BA1\u7406\u3067\u524A\u9664\u3055\u308C\u305F ${deleted} \u4EBA\u306F\u5916\u3057\u307E\u3057\u305F\uFF08\u9001\u308A\u8FD4\u3059\u3068\u30B5\u30FC\u30D0\u304C\u65AD\u308B\u305F\u3081\uFF09`]:[],...fieldNotes("update")]}function writeResult(value){if(!isRecord(value)||typeof value["skeleton"]!=="boolean"){throw new Error("\u5185\u90E8\u30A8\u30E9\u30FC: contract \u306E\u5FDC\u7B54\u306B\u5370\u304C\u3042\u308A\u307E\u305B\u3093\uFF08execute \u306E\u914D\u7DDA\u6F0F\u308C\uFF09")}
|
|
56
|
+
return value}function contentOf(input){return JSON.parse(requireResolved(input,"body"))}function skeletonEstimatePath(input){return`/api/v2/sales/estimates/${requireResolved(input,"estimate")}`}function createPlan(input){if(input.flags.has(SKELETON_FLAG.name))return{method:"GET",path:skeletonEstimatePath(input)};return{method:"POST",path:PATH,body:contentOf(input)}}function updatePlan(input){const target=contractPath(input,"update");if(input.flags.has(SKELETON_FLAG.name))return{method:"GET",path:target};
|
|
57
|
+
return{method:"PUT",path:target,body:contentOf(input)}}async function prepareContent(input,mode){const wantsSkeleton=input.flags.has(SKELETON_FLAG.name);if(wantsSkeleton&&input.flags.has(CONTENT_FILE_FLAG.name)){throw new UsageError("--generate-cli-skeleton \u3068 --content-file \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",usageOf(mode))}if(mode==="create"){const estimate=nonEmpty(input.flags,SKELETON_ESTIMATE_FLAG.name)?.trim();if(!wantsSkeleton&&estimate!==void 0){throw new UsageError(
|
|
58
|
+
"--estimate \u306F\u3072\u306A\u5F62\uFF08--generate-cli-skeleton\uFF09\u3092\u4F5C\u308B\u3068\u304D\u3060\u3051\u4F7F\u3044\u307E\u3059","\u4F5C\u6210\u3067\u306F\u5143\u306E\u898B\u7A4D\u3092 --content-file \u306E estimate_id \u306B\u66F8\u3044\u3066\u304F\u3060\u3055\u3044\u3002")}if(wantsSkeleton){if(estimate===void 0){throw new UsageError("\u53D6\u5F15\u5951\u7D04\u306E\u3072\u306A\u5F62\u306F\u5143\u306E\u898B\u7A4D\u304B\u3089\u4F5C\u308A\u307E\u3059\u3002--estimate <\u898B\u7A4DID> \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
59
|
+
"\u898B\u7A4D\u306E ID \u306F twp estimate list \u306E id \u5217\u3067\u3059\uFF08\u53D6\u5F15\u5951\u7D04\u306F\u898B\u7A4D\u304C\u7121\u3044\u3068\u4F5C\u308C\u307E\u305B\u3093\uFF09\u3002")}if(!isExactNumericId(estimate))throw new UsageError(`--estimate \u306E\u898B\u7A4D ID \u306F\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${estimate}`,usageOf("create"));return withResolved(input,{estimate})}}if(wantsSkeleton)return input;const body=await readBody(input,{flag:"--conte\
|
|
60
|
+
nt",fileFlag:CONTENT_FILE_FLAG.name,label:"\u53D6\u5F15\u5951\u7D04\u306E\u5185\u5BB9",maxChars:CONTENT_MAX_CHARS,usage:usageOf(mode)});if(body===void 0){throw new UsageError("\u53D6\u5F15\u5951\u7D04\u306E\u5185\u5BB9\u3092 --content-file <\u30D1\u30B9> \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",`\u3072\u306A\u5F62\u306F twp contract ${mode==="update"?"update <\u5951\u7D04ID>":"create --estimate <\u898B\u7A4DID>"} --generate-cli-skeleton \u3067\u51FA\u305B\u307E\u3059\u3002`)}const content=parseContractContent(
|
|
61
|
+
body,`${CONTENT_FILE_FLAG.name} ${input.flags.get(CONTENT_FILE_FLAG.name)??""}`,mode);return withResolved(input,{body:JSON.stringify(content)})}var createOperation={name:"create",summary:"\u53D6\u5F15\u5951\u7D04\u3092\u4F5C\u6210\u3059\u308B\uFF08\u5185\u5BB9\u306F --content-file \u306E JSON\uFF09",usage:"twp contract create (--content-file <\u30D1\u30B9> | --generate-cli-skeleton --estimate <\u898B\u7A4DID>)",description:DISAMBIGUATION+`POST /api/v2/sales/contracts \u3067\u53D6\u5F15\u5951\u7D04\u3092\u4F5C\u308A\u307E\u3059\u3002\u5143\u306E\u898B\u7A4D\uFF08estimate_id\uFF09\
|
|
62
|
+
\u304C\u5FC5\u9808\u3067\u3001\u53D6\u5F15\u5148\u30FB\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306F\u898B\u7A4D\u304B\u3089\u6C7A\u307E\u308A\u307E\u3059\u3002
|
|
63
|
+
\u4F5C\u6210\u6642\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\u306F new\uFF08\u4F5C\u6210\u4E2D\uFF09\u304B create_completed\uFF08\u4F5C\u6210\u5B8C\u4E86\uFF09\u3060\u3051\u3067\u3059\uFF08\u627F\u8A8D\u7533\u8ACB\u306F twp contract update \u3067 status \u3092 in_progress \u306B\u3057\u307E\u3059\uFF09\u3002
|
|
64
|
+
|
|
65
|
+
${CONTENT_HELP}
|
|
66
|
+
|
|
67
|
+
--generate-cli-skeleton --estimate <\u898B\u7A4DID> \u306F\u898B\u7A4D\u3092\u8AAD\u307F\uFF08GET /api/v2/sales/estimates/{id}\uFF09\u3001\u4EF6\u540D\u3068\u660E\u7D30\u3092\u5199\u3057\u305F
|
|
68
|
+
\u3072\u306A\u5F62\u3092\u6A19\u6E96\u51FA\u529B\u3078\u51FA\u3057\u3066\u7D42\u4E86\u3057\u307E\u3059\uFF08\u53D6\u5F15\u5951\u7D04\u306F\u4F5C\u308A\u307E\u305B\u3093\uFF09\u3002\u5404\u9805\u76EE\u306B\u6E21\u305B\u308B\u5024\u306F stderr \u306B\u51FA\u307E\u3059\u3002
|
|
69
|
+
\u4F8B: twp contract create --generate-cli-skeleton --estimate 63 --output json > contract.json
|
|
70
|
+
|
|
71
|
+
\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\u3002\u4F5C\u3063\u305F\u53D6\u5F15\u5951\u7D04\u306E ID \u306F\u51FA\u529B\u306E id \u3067\u3059\u3002`,flags:[CONTENT_FILE_FLAG,SKELETON_FLAG,SKELETON_ESTIMATE_FLAG],forbidden:SALES_FORBIDDEN,async prepare(input){noArgs(input,"create");return prepareContent(input,"create")},plan:createPlan,plannedNotes:input=>input.flags.has(SKELETON_FLAG.
|
|
72
|
+
name)?["\u898B\u7A4D\u3092\u8AAD\u3080\u3060\u3051\u3067\u3001\u53D6\u5F15\u5951\u7D04\u306F\u4F5C\u308A\u307E\u305B\u3093"]:contentNotes(contentOf(input),"create"),execute:async(input,ctx)=>({skeleton:input.flags.has(SKELETON_FLAG.name),body:await ctx.send(createPlan(input))}),summarize(value){const result=writeResult(value);return result.skeleton?createSkeleton(dataOf(result.body,"\u898B\u7A4D")):withStatusName(dataOf(result.body,"\u53D6\u5F15\u5951\u7D04\u306E\u4F5C\u6210"),GET_COLUMNS)},raw(value){
|
|
73
|
+
const result=writeResult(value);return result.skeleton?createSkeleton(dataOf(result.body,"\u898B\u7A4D")):dataOf(result.body,"\u53D6\u5F15\u5951\u7D04\u306E\u4F5C\u6210")},notes(value){const result=writeResult(value);return result.skeleton?createSkeletonNotes(dataOf(result.body,"\u898B\u7A4D")):serverMessage(result.body)}};var updateOperation={name:"update",summary:"\u53D6\u5F15\u5951\u7D04\u3092\u66F8\u304D\u63DB\u3048\u308B\uFF08\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u3044\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308B\uFF09",
|
|
74
|
+
usage:"twp contract update <\u5951\u7D04ID> (--content-file <\u30D1\u30B9> | --generate-cli-skeleton)",description:DISAMBIGUATION+`PUT /api/v2/sales/contracts/{id} \u3067\u53D6\u5F15\u5951\u7D04\u3092\u66F8\u304D\u63DB\u3048\u307E\u3059\u3002\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u3044\u305F\u30AD\u30FC\u3060\u3051\u3092\u9001\u308A\u307E\u3059\uFF08\u66F8\u304B\u306A\u304B\u3063\u305F\u9805\u76EE\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002
|
|
75
|
+
\u26A0\uFE0F details\uFF08\u660E\u7D30\uFF09\u30FBrecipients\uFF08\u9001\u4ED8\u5148\uFF09\u30FBcontract_document_file_ids\uFF08\u5951\u7D04\u66F8\u30D5\u30A1\u30A4\u30EB\uFF09\u306F\u3001\u9001\u308B\u3068\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\u3002
|
|
76
|
+
status \u3092 in_progress\uFF08\u7533\u8ACB\u4E2D\uFF09\u306B\u3059\u308B\u3068\u627F\u8A8D\u7533\u8ACB\u306B\u306A\u308A\u307E\u3059\u3002\u5143\u306E\u898B\u7A4D\uFF08estimate_id\uFF09\u306F\u4ED8\u3051\u66FF\u3048\u3089\u308C\u307E\u305B\u3093\u3002
|
|
77
|
+
|
|
78
|
+
${CONTENT_HELP}
|
|
79
|
+
|
|
80
|
+
--generate-cli-skeleton \u306F\u4ECA\u306E\u53D6\u5F15\u5951\u7D04\u3092\u8AAD\u307F\uFF08GET /api/v2/sales/contracts/{id}\uFF09\u3001\u66F8\u304D\u8FBC\u3081\u308B\u30AD\u30FC\u3060\u3051\u3092\u6B8B\u3057\u3066\u51FA\u3057\u307E\u3059\u3002
|
|
81
|
+
\u4F8B: twp contract update 12 --generate-cli-skeleton --output json > contract.json`,flags:[CONTENT_FILE_FLAG,SKELETON_FLAG],forbidden:SALES_FORBIDDEN,async prepare(input){contractIdArg(input,"update");return prepareContent(input,"update")},plan:updatePlan,plannedNotes:input=>input.flags.has(SKELETON_FLAG.name)?["\u4ECA\u306E\u53D6\u5F15\u5951\u7D04\u3092\u8AAD\u3080\u3060\u3051\u3067\u3001\u66F8\u304D\u63DB\u3048\u307E\u305B\u3093"]:contentNotes(contentOf(input),"update"),execute:async(input,ctx)=>({
|
|
82
|
+
skeleton:input.flags.has(SKELETON_FLAG.name),body:await ctx.send(updatePlan(input))}),summarize(value){const result=writeResult(value);return result.skeleton?updateSkeleton(dataOf(result.body,"\u53D6\u5F15\u5951\u7D04")):withStatusName(dataOf(result.body,"\u53D6\u5F15\u5951\u7D04\u306E\u66F4\u65B0"),GET_COLUMNS)},raw(value){const result=writeResult(value);return result.skeleton?updateSkeleton(dataOf(result.body,"\u53D6\u5F15\u5951\u7D04")):dataOf(result.body,"\u53D6\u5F15\u5951\u7D04\u306E\u66F4\u65B0")},
|
|
83
|
+
notes(value){const result=writeResult(value);return result.skeleton?updateSkeletonNotes(dataOf(result.body,"\u53D6\u5F15\u5951\u7D04")):serverMessage(result.body)}};var deleteOperation={name:"delete",summary:"\u53D6\u5F15\u5951\u7D04\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09",usage:"twp contract delete <\u5951\u7D04ID> --yes",description:DISAMBIGUATION+"DELETE /api/v2/sales/contracts/{id} \u3067\u53D6\u5F15\u5951\u7D04\u3092\u524A\u9664\u3057\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306F\u8AD6\u7406\u524A\u9664\u3067\u3001\u4E00\u89A7\u30FB\u8A73\u7D30\u304B\u3089\u6D88\u3048\u307E\u3059\uFF09\u3002\n\u8ACB\u6C42\u304C\u7D10\u3065\u3044\u3066\u3044\u308B\u5951\u7D04\u306F\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF08\u305D\u306E\u6587\u9762\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\u3002\u5148\u306B\u8ACB\u6C42\u5074\u306E\u7D10\u3065\u3051\u3092\u5916\u3059\u304B\
|
|
84
|
+
\u8ACB\u6C42\u3092\u524A\u9664\u3057\u307E\u3059\uFF09\u3002\n\u9001\u308B\u524D\u306B\u5BFE\u8C61\u306E\u5951\u7D04\u3092\u8AAD\u307F\u3001stderr \u306B\u51FA\u3057\u307E\u3059\uFF08--dry-run \u3067\u3082\u51FA\u307E\u3059\uFF09\u3002",destructive:true,flags:[],forbidden:SALES_FORBIDDEN,async prepare(input,ctx){const contract=await ctx.resolver.salesRecord("contract",contractIdArg(input,"delete"),"<\u5951\u7D04ID>");return withResolved(input,{contract:JSON.stringify(contract)})},plan:input=>({method:"\
|
|
85
|
+
DELETE",path:contractPath(input,"delete")}),plannedNotes:input=>[`\u524A\u9664\u3059\u308B\u53D6\u5F15\u5951\u7D04: ${describeContract(JSON.parse(requireResolved(input,"contract")))}`],summarize:body=>acknowledgement(body,"\u53D6\u5F15\u5951\u7D04\u524A\u9664"),raw:body=>acknowledgement(body,"\u53D6\u5F15\u5951\u7D04\u524A\u9664")};var contractDomain={name:"contract",summary:"\u8CA9\u58F2\u7BA1\u7406\u306E\u53D6\u5F15\u5951\u7D04\uFF08\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664\u3002\u9867\u5BA2\u306E\u5951\u7D04\u66F8 PDF \u306F twp customer contract\uFF09",
|
|
86
|
+
operations:[listOperation,getOperation,createOperation,updateOperation,deleteOperation]};export{contractDomain,contractIdArg,createSkeleton,parseContractContent,updateSkeleton};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterFields,masterItem,masterListOperation,masterRows,referencedDeleteGuidance,resolveRefFields,targetId,updateFlags}from"./chunk-
|
|
3
|
+
import{cacheNote,createFlags,fieldBody,hasAnyField,idSegment,masterFields,masterItem,masterListOperation,masterRows,referencedDeleteGuidance,resolveRefFields,targetId,updateFlags}from"./chunk-MHRGKUMK.js";import"./chunk-UDPJ2IGK.js";import{DEPARTMENTS_PATH}from"./chunk-ELXDRPDV.js";import"./chunk-IF2K4PM5.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-NHYMHCAT.js";import"./chunk-5R4SEO3I.js";
|
|
4
4
|
import"./chunk-II5RVJQN.js";import{withResolved}from"./chunk-ZN5EFDH7.js";import{acknowledgement,isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";var LABEL="\u90E8\u7F72";var LIST_COLUMNS=["id","code","name","parent_id","level","effective_status","valid_from","valid_to","member_count"];var GET_COLUMNS=["id","code","name","name_short","parent_id","level","sort","effective_status","valid_from","valid_to","description"];var TREE_COLUMNS=["depth","name","code","id","effective_status","valid_to"];var MEMBER_COLUMNS=["id","user_id","position_id","job_title_id","start_date","end_date","is_primary","is_current","effective_status"];var REF_FLAG={name:"\
|
|
5
5
|
--department",summary:"\u5BFE\u8C61\u306E\u90E8\u7F72\uFF08\u4F4D\u7F6E\u5F15\u6570\u306E\u4EE3\u308F\u308A\u306B\u4F7F\u3048\u308B\uFF09",takesValue:true,placeholder:"<\u90E8\u7F72>"};var REF_HELP="<\u90E8\u7F72> \u306F\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID \u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u540D\u524D\u304C\u8907\u6570\u306B\u4E00\u81F4\u3059\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002\nID \u4EE5\u5916\u306F\u90E8\u7F72\u4E00\u89A7\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002";
|
|
6
6
|
var FIELDS=masterFields(LABEL,[{kind:"text",flag:"--name-short",key:"name_short",label:"\u7565\u79F0",maxChars:50,summary:"\u7565\u79F0"},{kind:"ref",flag:"--parent",key:"parent_id",summary:"\u89AA\u90E8\u7F72\uFF08\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\uFF09",placeholder:"<\u90E8\u7F72>",clearFlag:"--no-parent",clearSummary:"\u89AA\u90E8\u7F72\u3092\u5916\u3057\u3066\u6700\u4E0A\u4F4D\u306B\u3059\u308B",resolve:(ctx,ref,flag)=>ctx.resolver.department(ref,flag)},{kind:"integer",flag:"--sor\
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{depositDomain,depositIdArg,describeDeposit,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden}from"./chunk-QDTYD5PY.js";import"./chunk-I6DWJXPC.js";import"./chunk-HGTG5XQ7.js";import"./chunk-RZ54TCQU.js";import"./chunk-IOGVQVGD.js";import"./chunk-UDPJ2IGK.js";import"./chunk-ELXDRPDV.js";import"./chunk-IF2K4PM5.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-QQRJLH6B.js";
|
|
4
|
+
import"./chunk-NHYMHCAT.js";import"./chunk-5R4SEO3I.js";import"./chunk-II5RVJQN.js";import"./chunk-ZN5EFDH7.js";import"./chunk-ZWVYVS2A.js";import"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";export{depositDomain,depositIdArg,describeDeposit,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden};
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{FORCE_FLAG,OUT_FLAG,REV_FLAG,revOf,singleId,uploadStaged}from"./chunk-4ZT5LTRX.js";import{CUSTOMER_LICENSE,childForbidden,levelForbidden}from"./chunk-QQLWMHGR.js";import{contentTypeFor,inspectLocalFile,issued}from"./chunk-VECUCVIY.js";import{checkUploadQuota}from"./chunk-DDKZ5IPT.js";import{createFlags,fieldBody,hasAnyField,updateFlags}from"./chunk-MHRGKUMK.js";import"./chunk-I6DWJXPC.js";import{charCount,readBody}from"./chunk-HGTG5XQ7.js";import{
|
|
4
|
+
estimateReadOperations,featureLicenseGuidance,licenseForbidden}from"./chunk-RZ54TCQU.js";import{repeatedValues}from"./chunk-IOGVQVGD.js";import"./chunk-UDPJ2IGK.js";import{SALES_ESTIMATES_PATH,isExactNumericId}from"./chunk-ELXDRPDV.js";import{ApiError}from"./chunk-IF2K4PM5.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-QQRJLH6B.js";
|
|
5
|
+
import"./chunk-NHYMHCAT.js";import"./chunk-GY7KI5E5.js";import{nonEmpty}from"./chunk-5R4SEO3I.js";import"./chunk-II5RVJQN.js";import{requireResolved,withResolved}from"./chunk-ZN5EFDH7.js";import{acknowledgement,isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";import fs from"fs";import path from"path";var DOCUMENT_TYPES=["order_form","individual_contract","other"];var DOCUMENT_TYPE_HELP="order_form\uFF1D\u6CE8\u6587\u66F8 / individual_contract\uFF1D\u500B\u5225\u5951\u7D04\u66F8 / other\uFF1D\u305D\u306E\u4ED6\u6848\u4EF6\u66F8\u985E";var MAGIC_BYTES={pdf:["%PDF-"],jpg:["\xFF\xD8\xFF"],jpeg:["\xFF\xD8\xFF"],png:["\x89PNG\r\n\n"],xlsx:["PK","PK","PK\x07\b"],docx:["PK","PK","PK\x07\b"],xls:["\xD0\xCF\xE0\xA1\xB1\xE1"],doc:["\xD0\xCF\xE0\xA1\xB1\xE1"]};var FILE_NAME_MAX_CHARS=255;var FIELDS=[
|
|
6
|
+
{kind:"text",flag:"--name",key:"document_name",label:"\u66F8\u985E\u540D",maxChars:255,summary:"\u66F8\u985E\u540D\uFF08create \u3067\u306F\u5FC5\u9808\uFF09"},{kind:"enum",flag:"--type",key:"document_type",values:DOCUMENT_TYPES,summary:`\u66F8\u985E\u7A2E\u5225\uFF08${DOCUMENT_TYPE_HELP}\u30FBcreate \u3067\u306F\u5FC5\u9808\uFF09`}];var COLUMNS=["document_id","estimate_id","document_type","document_type_label","document_name","current_version","updated_by_name","updated_at"];var VERSION_COLUMNS=[
|
|
7
|
+
"version_number","file_name","file_size","is_current","created_by_name","created_at"];var ESTIMATE_FLAG={name:"--estimate",summary:"\u898B\u7A4D\u306E ID\uFF08twp estimate list \u306E id \u5217\u306E\u6570\u5B57\u30FB\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\u898B\u7A4DID>"};var FILE_FLAG={name:"--file",summary:"\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B\u30D5\u30A1\u30A4\u30EB\uFF08PDF\u30FBJPEG\u30FBPNG\u30FBWord\u30FBExcel\u3002\u5FC5\u9808\uFF09",takesValue:true,placeholder:"<\
|
|
8
|
+
\u30D1\u30B9>"};var REF_HELP="--estimate\uFF08\u898B\u7A4D\u306E ID\uFF09\u304C\u5FC5\u9808\u3067\u3059\u3002<\u66F8\u985EID> \u306F twp estimate case-document list \u306E document_id \u5217\u306E\u5024\u3067\u3059\u3002\n\u9867\u5BA2\u3092\u307E\u305F\u3044\u3060\u4E00\u89A7\u306F twp customer case-document list --customer <\u9867\u5BA2> \u3067\u898B\u3089\u308C\u307E\u3059\u3002";var VIEW_FORBIDDEN=levelForbidden(CUSTOMER_LICENSE,"\u6848\u4EF6\u66F8\u985E\u3092\u898B\u308B\u306B\u306F\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u8981\u308A\u307E\u3059\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");
|
|
9
|
+
var EDIT_FORBIDDEN=childForbidden("\u6848\u4EF6\u66F8\u985E","edit");var usageOf=op=>`twp estimate case-document ${op} help`;function estimateBase(input,op){const raw=nonEmpty(input.flags,ESTIMATE_FLAG.name);if(raw===void 0)throw new UsageError(`${ESTIMATE_FLAG.name} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usageOf(op));const id=raw.trim();if(!isExactNumericId(id))throw new UsageError(`${ESTIMATE_FLAG.name} \u306F\u898B\u7A4D\u306E ID\uFF08\u6570\u5B57\uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${id}`,
|
|
10
|
+
usageOf(op));return`${SALES_ESTIMATES_PATH}/${id}/case-documents`}var docId=(input,op)=>singleId(input,"\u66F8\u985E",usageOf(op),"twp estimate case-document list --estimate <\u898B\u7A4DID> \u306E document_id \u5217\u306E\u5024\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002");var docPath=(input,op)=>`${estimateBase(input,op)}/${encodeURIComponent(docId(input,op))}`;function noArgs(input,op){if(input.args.length>0)throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.
|
|
11
|
+
args.join(" ")}`,usageOf(op))}function itemsOf(body){const items=isRecord(body)?body["items"]:void 0;if(!isRecord(body)||body["result"]!==true||!Array.isArray(items)||!items.every(isRecord)){throw new ApiResponseError("\u6848\u4EF6\u66F8\u985E\u4E00\u89A7\u306E\u5FDC\u7B54\u306B items \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return items}function docOf(body,what){const doc=isRecord(body)?body["case_docu\
|
|
12
|
+
ment"]:void 0;if(!isRecord(body)||body["result"]!==true||!isRecord(doc)||typeof doc["document_id"]!=="string"){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B case_document.document_id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return doc}function summaryOf(body,what){const doc=docOf(body,what);const versions=doc["versions"];return{...pick(doc,COLUMNS),versions:Array.isArray(versions)?versions.length:0}}function localDocument(input,op){
|
|
13
|
+
const{file,size}=inspectLocalFile(input.flags.get(FILE_FLAG.name),FILE_FLAG.name,usageOf(op));const name=path.basename(file);const extension=path.extname(name).slice(1).toLowerCase();const signatures=MAGIC_BYTES[extension];if(signatures===void 0){throw new UsageError(`\u6848\u4EF6\u66F8\u985E\u306F PDF\u30FB\u753B\u50CF\uFF08JPEG/PNG\uFF09\u30FBOffice\uFF08Word/Excel\uFF09\u3060\u3051\u3092\u767B\u9332\u3067\u304D\u307E\u3059: ${name}`)}if(Array.from(name).length>FILE_NAME_MAX_CHARS){throw new UsageError(
|
|
14
|
+
`\u30D5\u30A1\u30A4\u30EB\u540D\u306F ${FILE_NAME_MAX_CHARS} \u6587\u5B57\u307E\u3067\u3067\u3059\uFF08${Array.from(name).length} \u6587\u5B57\uFF09: ${name}`)}const head=Buffer.alloc(Math.max(...signatures.map(s=>s.length)));let read;try{const fd=fs.openSync(file,"r");try{read=fs.readSync(fd,head,0,head.length,0)}finally{fs.closeSync(fd)}}catch(err){throw new UsageError(`\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\uFF08${FILE_FLAG.name}\uFF09: ${file}\uFF08${err.code??
|
|
15
|
+
err.message}\uFF09`)}const text=head.subarray(0,read).toString("latin1");if(!signatures.some(signature=>text.startsWith(signature))){throw new UsageError(`\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u304C\u62E1\u5F35\u5B50\uFF08.${extension}\uFF09\u3068\u5408\u3044\u307E\u305B\u3093\uFF08\u58CA\u308C\u3066\u3044\u308B\u304B\u5225\u306E\u5F62\u5F0F\u3067\u3059\uFF09: ${file}`)}return{file,name,size}}function uploadUrlPlan(input,op){return{method:"POST",path:`${estimateBase(input,op)}/upload-url`,body:{
|
|
16
|
+
file_name:requireResolved(input,"fileName"),file_size:Number(requireResolved(input,"fileSize"))}}}function prepareFile(input,op){estimateBase(input,op);const doc=localDocument(input,op);return Promise.resolve(withResolved(input,{file:doc.file,fileName:doc.name,fileSize:String(doc.size)}))}function estimateOf(input){return(input.flags.get(ESTIMATE_FLAG.name)??"").trim()}async function createDocument(input,ctx){const body=fieldBody(input,FIELDS);return uploadStaged(input,ctx,{label:"\u6848\u4EF6\u66F8\u985E",
|
|
17
|
+
issue:uploadUrlPlan(input,"create"),retry:`twp estimate case-document list --estimate ${estimateOf(input)}`,register:async uploadKey=>{const created=docOf(await ctx.send({method:"POST",path:estimateBase(input,"create"),body:{...body,upload_key:uploadKey,file_name:requireResolved(input,"fileName")}}),"\u6848\u4EF6\u66F8\u985E\u306E\u767B\u9332");return{result:true,case_document:created}}})}async function addVersion(input,ctx){const target=docPath(input,"add-version");const before=docOf(await ctx.
|
|
18
|
+
send({method:"GET",path:target}),"\u6848\u4EF6\u66F8\u985E");const previous=typeof before["current_version"]==="number"?before["current_version"]:0;return uploadStaged(input,ctx,{label:"\u6848\u4EF6\u66F8\u985E",issue:uploadUrlPlan(input,"add-version"),retry:`twp estimate case-document get ${docId(input,"add-version")} --estimate ${estimateOf(input)}`,register:async uploadKey=>{const after=docOf(await ctx.send({method:"POST",path:`${target}/versions`,body:{upload_key:uploadKey,file_name:requireResolved(
|
|
19
|
+
input,"fileName")}}),"\u7248\u306E\u5DEE\u66FF\u3048");const current=after["current_version"];if(typeof current!=="number"||current<=previous){throw new ApiResponseError(`\u7248\u306E\u5DEE\u66FF\u3048\u306E\u5FDC\u7B54\u3067\u73FE\u884C\u7248\u304C\u9032\u3093\u3067\u3044\u307E\u305B\u3093\uFF08\u5DEE\u66FF\u3048\u524D ${previous} \u2192 \u5FDC\u7B54 ${String(current)}\uFF09\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return{result:true,case_document:after}}})}
|
|
20
|
+
var estimateCaseDocumentResource={name:"case-document",summary:"\u898B\u7A4D\u306E\u6848\u4EF6\u66F8\u985E\uFF08\u6CE8\u6587\u66F8\u30FB\u500B\u5225\u5951\u7D04\u66F8\u306A\u3069\u3002\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u767B\u9332\u30FB\u7248\u306E\u5DEE\u66FF\u3048\u30FB\u66F4\u65B0\u30FB\u524A\u9664\u30FB\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\uFF09",operations:[{name:"list",summary:"\u898B\u7A4D\u306E\u6848\u4EF6\u66F8\u985E\u3092\u4E00\u89A7\u3059\u308B",usage:"twp estimate case-document list\
|
|
21
|
+
--estimate <\u898B\u7A4DID>",description:`\u898B\u7A4D\u306B\u767B\u9332\u3055\u308C\u305F\u6848\u4EF6\u66F8\u985E\uFF08\u524A\u9664\u3057\u305F\u3082\u306E\u3092\u9664\u304F\uFF09\u3092\u3059\u3079\u3066\u8FD4\u3057\u307E\u3059\uFF08\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u3061\u307E\u305B\u3093\uFF09\u3002
|
|
22
|
+
|
|
23
|
+
--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
|
|
24
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002`,flags:[ESTIMATE_FLAG],forbidden:VIEW_FORBIDDEN,plan(input){noArgs(input,"list");return{method:"GET",path:estimateBase(input,"list")}},summarize:body=>itemsOf(body).map(row=>pick(row,COLUMNS)),raw:itemsOf},{name:"get",summary:"\u6848\u4EF6\u66F8\u985E1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B\uFF08\u73FE\u884C\u7248\u30FB\u904E\u53BB\u7248\u3092\u542B\u3080\uFF09",usage:"twp esti\
|
|
25
|
+
mate case-document get <\u66F8\u985EID> --estimate <\u898B\u7A4DID>",description:`${REF_HELP}
|
|
26
|
+
|
|
27
|
+
--output json \u306F\u73FE\u884C\u7248\u30FB\u904E\u53BB\u7248\uFF08versions\uFF09\u3092\u542B\u3080\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002
|
|
28
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${COLUMNS.join(" / ")} / versions\uFF1D\u7248\u306E\u6570\uFF09\u3067\u3059\u3002
|
|
29
|
+
\u7248\u3054\u3068\u306E\u5217\u306F ${VERSION_COLUMNS.join(" / ")} \u3067\u3059\uFF08--output json\uFF09\u3002`,flags:[ESTIMATE_FLAG],forbidden:VIEW_FORBIDDEN,plan:input=>({method:"GET",path:docPath(input,"get")}),summarize:body=>summaryOf(body,"\u6848\u4EF6\u66F8\u985E"),raw:body=>docOf(body,"\u6848\u4EF6\u66F8\u985E")},{name:"create",summary:"\u30D5\u30A1\u30A4\u30EB\u3092\u898B\u7A4D\u306E\u6848\u4EF6\u66F8\u985E\u3068\u3057\u3066\u767B\u9332\u3059\u308B\uFF08\u5BB9\u91CF\u691C\u67FB\u30FB\u8EE2\u9001\u30FB\u767B\u9332\u30921\u30B3\u30DE\u30F3\u30C9\u3067\uFF09",
|
|
30
|
+
usage:"twp estimate case-document create --estimate <\u898B\u7A4DID> --file <\u30D1\u30B9> --type <\u7A2E\u5225> --name <\u66F8\u985E\u540D>",description:`--estimate\u30FB--file\u30FB--type\uFF08${DOCUMENT_TYPE_HELP}\uFF09\u30FB--name \u304C\u5FC5\u9808\u3067\u3059\u3002
|
|
31
|
+
|
|
32
|
+
\u6B21\u306E\u9806\u306B\u9001\u308A\u307E\u3059\u3002
|
|
33
|
+
0. POST /api/v2/storage/check-upload\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u5BB9\u91CF\u691C\u67FB\u3002\u8D85\u904E\u306A\u3089\u4F55\u3082\u9001\u3089\u305A\u306B\u6B62\u307E\u308A\u307E\u3059\uFF09
|
|
34
|
+
1. POST \u2026/case-documents/upload-url\uFF08\u7F72\u540DURL\u306E\u767A\u884C\uFF09
|
|
35
|
+
2. \u7F72\u540DURL\u3078 PUT\uFF08\u30D5\u30A1\u30A4\u30EB\u672C\u4F53\u3002TWP \u306E\u8A8D\u8A3C\u60C5\u5831\u306F\u9001\u308A\u307E\u305B\u3093\uFF09
|
|
36
|
+
3. POST \u2026/case-documents\uFF08\u66F8\u985E\u306E\u767B\u9332\u3002\u3053\u3053\u3067\u6848\u4EF6\u66F8\u985E\u304C\u6210\u7ACB\u3057\u307E\u3059\uFF09
|
|
37
|
+
\u5BFE\u5FDC\u5916\u306E\u5F62\u5F0F\uFF08\u62E1\u5F35\u5B50\u304C PDF\u30FBJPEG\u30FBPNG\u30FBWord\u30FBExcel \u3067\u306A\u3044\u30FB\u4E2D\u8EAB\u304C\u62E1\u5F35\u5B50\u3068\u5408\u308F\u306A\u3044\uFF09\u306F\u3001\u4F55\u3082\u9001\u3089\u305A\u306B\u6B62\u3081\u307E\u3059
|
|
38
|
+
\uFF08\u30B5\u30FC\u30D0\u3082\u540C\u3058\u6761\u4EF6\u3067\u65AD\u308A\u307E\u3059\uFF09\u3002--dry-run \u306F 1 \u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u3060\u3051\u3092\u8868\u793A\u3057\u307E\u3059\u3002
|
|
39
|
+
\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\uFF08\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002`,flags:[ESTIMATE_FLAG,FILE_FLAG,...createFlags(FIELDS)],forbidden:EDIT_FORBIDDEN,prepare(input){noArgs(input,"create");fieldBody(input,FIELDS);for(const flag of["--type","--name"]){if(!input.flags.has(flag))throw new UsageError(`${flag} \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,
|
|
40
|
+
usageOf("create"))}return prepareFile(input,"create")},plan:input=>uploadUrlPlan(input,"create"),plannedNotes:input=>[`\u5B9F\u884C\u6642\u306F\u3001\u3053\u306E\u524D\u306B\u5BB9\u91CF\u691C\u67FB\uFF08POST /api/v2/storage/check-upload\uFF09\u3092\u9001\u308A\u3001\u3053\u306E\u3042\u3068\u7F72\u540DURL\u3078 ${requireResolved(input,"fileSize")} \u30D0\u30A4\u30C8\u3092 PUT \u3057\u3066\u304B\u3089\u3001POST ${estimateBase(input,"create")} \u3067\u6848\u4EF6\u66F8\u985E\u3092\u767B\u9332\u3057\u307E\u3059\u3002`],
|
|
41
|
+
execute:createDocument,summarize:body=>summaryOf(body,"\u6848\u4EF6\u66F8\u985E\u306E\u767B\u9332"),raw:body=>docOf(body,"\u6848\u4EF6\u66F8\u985E\u306E\u767B\u9332")},{name:"add-version",summary:"\u6848\u4EF6\u66F8\u985E\u306B\u65B0\u3057\u3044\u7248\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u767B\u9332\u3059\u308B\uFF08\u5DEE\u66FF\u3048\u3002\u904E\u53BB\u7248\u306F\u6B8B\u308A\u307E\u3059\uFF09",usage:"twp estimate case-document add-version <\u66F8\u985EID> --estimate <\u898B\u7A4DID> --file <\u30D1\u30B9>",
|
|
42
|
+
description:`${REF_HELP}
|
|
43
|
+
|
|
44
|
+
\u66F8\u985E\u304C\u3053\u306E\u898B\u7A4D\u306B\u3042\u308B\u3053\u3068\u3092\u78BA\u304B\u3081\u3066\u304B\u3089\u3001\u5BB9\u91CF\u691C\u67FB \u2192 \u7F72\u540DURL\u306E\u767A\u884C \u2192 PUT \u2192 POST \u2026/{\u66F8\u985EID}/versions \u306E\u9806\u306B\u9001\u308A\u307E\u3059\u3002
|
|
45
|
+
\u767B\u9332\u3057\u305F\u30D5\u30A1\u30A4\u30EB\u304C\u73FE\u884C\u7248\u306B\u306A\u308A\u3001\u305D\u308C\u307E\u3067\u306E\u7248\u306F\u904E\u53BB\u7248\u3068\u3057\u3066\u6B8B\u308A\u307E\u3059\uFF08get \u306E versions\uFF09\u3002
|
|
46
|
+
\u5FDC\u7B54\u3067\u73FE\u884C\u7248\u306E\u756A\u53F7\u304C\u9032\u3093\u3060\u3053\u3068\u3092\u78BA\u304B\u3081\u3066\u304B\u3089\u6210\u529F\u3092\u540D\u4E57\u308A\u307E\u3059\u3002--dry-run \u306F\u7F72\u540DURL\u306E\u767A\u884C\u3060\u3051\u3092\u8868\u793A\u3057\u307E\u3059\u3002
|
|
47
|
+
\u9867\u5BA2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7DE8\u96C6\u8005\u300D\u4EE5\u4E0A\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\u3002`,flags:[ESTIMATE_FLAG,FILE_FLAG],forbidden:EDIT_FORBIDDEN,prepare(input){docId(input,"add-version");return prepareFile(input,"add-version")},plan:input=>uploadUrlPlan(input,"add-version"),plannedNotes:input=>[`\u5B9F\u884C\u6642\u306F\u3001\u3053\u306E\u524D\u306B GET ${docPath(input,"add-version")}\uFF08\u66F8\u985E\u306E\u78BA\u8A8D\uFF09\u3068\u5BB9\u91CF\u691C\u67FB\u3092\u9001\u308A\u3001\u3053\u306E\u3042\u3068\u7F72\u540DURL\u3078 ${requireResolved(
|
|
48
|
+
input,"fileSize")} \u30D0\u30A4\u30C8\u3092 PUT \u3057\u3066\u304B\u3089\u3001POST ${docPath(input,"add-version")}/versions \u3067\u7248\u3092\u767B\u9332\u3057\u307E\u3059\u3002`],execute:addVersion,summarize:body=>summaryOf(body,"\u7248\u306E\u5DEE\u66FF\u3048"),raw:body=>docOf(body,"\u7248\u306E\u5DEE\u66FF\u3048")},{name:"update",summary:"\u6848\u4EF6\u66F8\u985E\u306E\u66F8\u985E\u540D\u30FB\u7A2E\u5225\u3092\u5909\u66F4\u3059\u308B\uFF08\u30D5\u30A1\u30A4\u30EB\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09",
|
|
49
|
+
usage:"twp estimate case-document update <\u66F8\u985EID> --estimate <\u898B\u7A4DID> [--name <\u66F8\u985E\u540D>] [--type <\u7A2E\u5225>]",description:`${REF_HELP}
|
|
50
|
+
|
|
51
|
+
\u6307\u5B9A\u3057\u305F\u9805\u76EE\u3060\u3051\u3092\u5909\u66F4\u3057\u307E\u3059\u3002\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u3082\u6307\u5B9A\u3057\u306A\u3044\u3068\u30A8\u30E9\u30FC\u306B\u306A\u308A\u307E\u3059\u3002
|
|
52
|
+
\u30D5\u30A1\u30A4\u30EB\u3092\u5DEE\u3057\u66FF\u3048\u308B\u306A\u3089 twp estimate case-document add-version \u3092\u4F7F\u3044\u307E\u3059\u3002`,flags:[ESTIMATE_FLAG,...updateFlags(FIELDS)],forbidden:EDIT_FORBIDDEN,plan(input){if(!hasAnyField(input,FIELDS))throw new UsageError("\u5909\u66F4\u3059\u308B\u9805\u76EE\u30921\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf("update"));return{method:"PATCH",path:docPath(input,"update"),body:fieldBody(input,FIELDS)}},summarize:body=>summaryOf(
|
|
53
|
+
body,"\u6848\u4EF6\u66F8\u985E\u306E\u66F4\u65B0"),raw:body=>docOf(body,"\u6848\u4EF6\u66F8\u985E\u306E\u66F4\u65B0")},{name:"delete",summary:"\u6848\u4EF6\u66F8\u985E\u3092\u524A\u9664\u3059\u308B\uFF08\u5168\u7248\u3002\u9867\u5BA2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u306E\u307F\u30FB--yes \u304C\u8981\u308B\uFF09",usage:"twp estimate case-document delete <\u66F8\u985EID> --estimate <\u898B\u7A4DID> --yes",description:`${REF_HELP}
|
|
54
|
+
|
|
55
|
+
\u66F8\u985E\u3092\u904E\u53BB\u7248\u3054\u3068\u524A\u9664\u3057\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306F\u8AD6\u7406\u524A\u9664\u3067\u3001\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u304B\u3089\u6D88\u3048\u307E\u3059\uFF09\u3002`,destructive:true,flags:[ESTIMATE_FLAG],forbidden:childForbidden("\u6848\u4EF6\u66F8\u985E","delete"),plan:input=>({method:"DELETE",path:docPath(input,"delete")}),summarize:body=>acknowledgement(body,"\u6848\u4EF6\u66F8\u985E\u524A\u9664"),
|
|
56
|
+
raw:body=>acknowledgement(body,"\u6848\u4EF6\u66F8\u985E\u524A\u9664")},{name:"download",summary:"\u6848\u4EF6\u66F8\u985E\u306E\u30D5\u30A1\u30A4\u30EB\u3092\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9\u3057\u3066\u30D5\u30A1\u30A4\u30EB\u3078\u66F8\u304D\u51FA\u3059\uFF08\u65E2\u5B9A\u306F\u73FE\u884C\u7248\uFF09",usage:"twp estimate case-document download <\u66F8\u985EID> --estimate <\u898B\u7A4DID> --out <\u30D1\u30B9> [--rev <\u7248\u756A\u53F7>] [--force]",description:`${REF_HELP}
|
|
57
|
+
|
|
58
|
+
\u66F8\u304D\u51FA\u3057\u5148\u306F --out \u3067\u5FC5\u305A\u6307\u5B9A\u3057\u307E\u3059\uFF08\u6A19\u6E96\u51FA\u529B\u3078\u306F\u51FA\u3057\u307E\u305B\u3093\uFF09\u3002\u65E2\u5B58\u30D5\u30A1\u30A4\u30EB\u306F --force \u304C\u7121\u3051\u308C\u3070\u4E0A\u66F8\u304D\u3057\u307E\u305B\u3093\u3002
|
|
59
|
+
\u904E\u53BB\u7248\u306F --rev \u3067\u7248\u756A\u53F7\u3092\u6307\u5B9A\u3057\u307E\u3059\uFF08get \u306E versions \u306E version_number\uFF09\u3002`,flags:[ESTIMATE_FLAG,OUT_FLAG,REV_FLAG,FORCE_FLAG],forbidden:VIEW_FORBIDDEN,download:{outFlag:OUT_FLAG.name,forceFlag:FORCE_FLAG.name},plan:input=>({method:"GET",path:`${docPath(input,"download")}/download`,query:{version:revOf(input,usageOf("download"))}}),summarize:body=>body,raw:body=>body}]};import fs2 from"fs";import path2 from"path";var PATH=SALES_ESTIMATES_PATH;var SALES_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));var STORE_KEYS=["estimate_format_id","estimate_no_rule_id","title","company_id","project_id","department_id","estimate_user_id","kpi_user_id","business_place_id","has_work_report","seal_impression_id","reliability","estimate_type","project_category","evaluation_multiplier_category","status","estimate_date","estimate_expiration_date","order_acceptance_issue_date","order_issue_dat\
|
|
60
|
+
e","order_no","order_no_blank","billing_acceptance_category","billing_date","delivery_date","monthly_period_start","monthly_period_end","terms","order_acceptance_terms","memo","internal_memo","manage_form_data","details","recipients"];var UPDATE_KEYS=[...STORE_KEYS.filter(key=>key!=="estimate_no_rule_id"),"approval_comment"];var DETAIL_KEYS=["item_name","description","quantity","unit","unit_price","tax_rate","acceptance_date","clearance_type","clearance_hours_min","clearance_hours_max","clearanc\
|
|
61
|
+
e_rounding_method"];var RECIPIENT_KEYS=["customer_contact_id","recipient_type"];var FIELD_NOTES=[["estimate_format_id","\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E ID\uFF08\u6574\u6570\uFF09"],["estimate_no_rule_id","\u4F5C\u6210\u306E\u307F\u3002\u898B\u7A4D\u756A\u53F7\u306E\u63A1\u756A\u30EB\u30FC\u30EB\u306E ID\uFF08\u6307\u5B9A\u3059\u308B\u3068\u756A\u53F7\u3092\u63A1\u756A\u3002\u7701\u3051\u3070\u756A\u53F7\u306A\u3057\uFF09"],["title","\u4F5C\u6210\u3067\u5FC5\
|
|
62
|
+
\u9808\u3002\u898B\u7A4D\u4EF6\u540D\uFF08500 \u6587\u5B57\u307E\u3067\uFF09"],["company_id","\u53D6\u5F15\u5148\u306E ID\uFF08\u6574\u6570\u3002twp company list \u306E id\uFF09"],["project_id","\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E ID\uFF08UUID\uFF09"],["department_id","\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u4E3B\u5E79\u90E8\u7F72\u306E ID\uFF08twp department list \u306E id\uFF09"],["estimate_user_id / kpi_user_id","\u898B\u7A4D\u62C5\u5F53\u8005\u30FBKPI \u96C6\u8A08\u7528\u62C5\u5F53\u8005\u306E\u30E6\u30FC\u30B6\u30FC ID"],
|
|
63
|
+
["business_place_id / seal_impression_id","\u4E8B\u696D\u6240\u30FB\u5370\u5F71\u306E ID\uFF08\u6574\u6570\uFF09"],["has_work_report / order_no_blank","true / false"],["reliability","\u6848\u4EF6\u78BA\u5EA6: 60 / 55 / 50 / 40 / 30 / 20 / 10 / 02 / 01\uFF08\u6587\u5B57\u5217\uFF09"],["estimate_type","rough\uFF08\u6982\u7B97\uFF09/ formal\uFF08\u6B63\u5F0F\u3002\u4FDD\u5B58\u3067\u8ACB\u6C42\u304C\u81EA\u52D5\u4F5C\u6210\u3055\u308C\u307E\u3059\uFF09"],["project_category","contracted\uFF08\u53D7\u8A17\uFF09/ mainten\
|
|
64
|
+
ance\uFF08\u4FDD\u5B88\uFF09/ ai_support\uFF08AI\u4F34\u8D70\uFF09/ license\uFF08\u30E9\u30A4\u30BB\u30F3\u30B9\uFF09/ ses_other\uFF08SES\u30FB\u6D3E\u9063(\u4ED6\u793E)\uFF09/ ses_own\uFF08SES\u30FB\u6D3E\u9063(\u81EA\u793E)\uFF09"],["evaluation_multiplier_category","self_sourced_new / company_lead_new / directed_new / self_sourced_new_handoff / company_lead_new_handoff / directed_new_handoff / repeat / tossup_received"],["status","\u4F5C\u6210\u306F new\uFF08\u4F5C\u6210\u4E2D\uFF09/ create_completed\uFF08\u4F5C\u6210\u5B8C\u4E86\uFF09\u3060\u3051\u3002\u627F\u8A8D\u7533\u8ACB\uFF08in_progress\uFF09\u306F updat\
|
|
65
|
+
e \u3067"],["estimate_date / billing_date","\u4F5C\u6210\u3067\u5FC5\u9808\u3002YYYY-MM-DD"],["estimate_expiration_date / order_acceptance_issue_date / order_issue_date / delivery_date","YYYY-MM-DD"],["order_no","\u6CE8\u6587\u66F8\u756A\u53F7\uFF08100 \u6587\u5B57\u307E\u3067\uFF09"],["billing_acceptance_category","bulk\uFF08\u4E00\u62EC\uFF09/ per_detail\uFF08\u660E\u7D30\u9805\u76EE\u5225\u3002\u6B63\u5F0F\u898B\u7A4D\u3067\u306F\u5168\u660E\u7D30\u306B acceptance_date \u304C\u8981\u308B\uFF09/ monthly\uFF08\u6708\u984D\uFF09"],
|
|
66
|
+
["monthly_period_start / monthly_period_end","YYYY-MM"],["terms / order_acceptance_terms / memo","\u5099\u8003\uFF08\u898B\u7A4D\u66F8\u7528\u30FB\u6CE8\u6587\u8ACB\u66F8\u7528\uFF09\u30FB\u30E1\u30E2\uFF08\u6587\u5B57\u5217\uFF09"],["internal_memo","\u793E\u5185\u5171\u6709\u30E1\u30E2\uFF085,000 \u6587\u5B57\u307E\u3067\u3002twp estimate memo \u3067\u3082\u66F8\u3051\u307E\u3059\uFF09"],["manage_form_data","\u6DFB\u4ED8\u66F8\u985E\u30FB\u96C6\u8A08\u9805\u76EE\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\uFF08\u753B\u9762\u304C\u4F5C\u308B\u5F62\u3002CLI \u304B\u3089\u306F\u6DFB\u4ED8\u3092\u4F5C\u308C\u307E\u305B\u3093\uFF09"],
|
|
67
|
+
["details","\u4F5C\u6210\u3067\u5FC5\u9808\u30FB1 \u4EF6\u4EE5\u4E0A\u3002update \u3067\u9001\u308B\u3068\u660E\u7D30\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059"],["details[].item_name","\u5FC5\u9808\u3002\u54C1\u540D\uFF08500 \u6587\u5B57\u307E\u3067\uFF09"],["details[].quantity","\u5FC5\u9808\u3002\u6570\u91CF\uFF080 \u4EE5\u4E0A\u306E\u6570\u5024\uFF09"],["details[].unit","\u5FC5\u9808\u3002set / item / unit / hour / day / month / person / person_month / person_day"],["\
|
|
68
|
+
details[].unit_price","\u5FC5\u9808\u3002\u5358\u4FA1\uFF08\u6574\u6570\u30FB\u5186\uFF09"],["details[].tax_rate",'\u5FC5\u9808\u3002"10" / "8" / "0"\uFF08\u6587\u5B57\u5217\uFF09'],["details[].description / acceptance_date","\u660E\u7D30\u306E\u8AAC\u660E\u30FB\u691C\u53CE\u65E5\uFF08YYYY-MM-DD\uFF09"],["details[].clearance_type","\u7CBE\u7B97\u65B9\u6CD5: middle\uFF08\u4E2D\u5272\uFF09/ upper_lower\uFF08\u4E0A\u4E0B\u5272\uFF09/ hours_160\uFF08160\u6642\u9593\u5272\uFF09"],["details[].clearanc\
|
|
69
|
+
e_hours_min / clearance_hours_max","\u7CBE\u7B97\u5E45\uFF081\u301C999 \u306E\u6574\u6570\u3002middle / upper_lower \u3067\u306F\u5FC5\u9808\uFF09"],["details[].clearance_rounding_method","floor / ceil / round"],["recipients","\u9001\u4ED8\u5148\uFF0850 \u4EF6\u307E\u3067\uFF09\u3002update \u3067\u9001\u308B\u3068\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059"],["recipients[].customer_contact_id","\u5FC5\u9808\u3002\u9867\u5BA2\u306E\u62C5\u5F53\u8005 ID"],["recipients[].recipient_\
|
|
70
|
+
type","to\uFF08\u5B9B\u5148\uFF09/ cc\uFF08\u5199\u3057\uFF09"],["approval_comment","update \u306E\u307F\u3002\u627F\u8A8D\u7533\u8ACB\u6642\u306E\u7533\u8ACB\u8005\u30B3\u30E1\u30F3\u30C8\uFF081,000 \u6587\u5B57\u307E\u3067\uFF09"]];var CONTENT_MAX_CHARS=1e6;var MEMO_MAX_CHARS=5e3;var SCAN_MAX_BYTES=20*1024*1024;var SCAN_CONTENT_TYPES=["application/pdf","image/png","image/jpeg","image/gif","image/webp"];var ORDER_FORM_SOURCE="order_form";var WRITE_COLUMNS=["id","estimate_no","title","status","e\
|
|
71
|
+
stimate_type","estimate_date","company_name","project_name","subtotal","tax_amount","total"];var CONTENT_FILE_FLAG={name:"--content-file",summary:"\u898B\u7A4D\u306E\u5185\u5BB9\u306E JSON \u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};var SKELETON_FLAG={name:"--generate-cli-skeleton",summary:"--content-file \u306E\u3072\u306A\u5F62\u3092\u51FA\u3057\u3066\u7D42\u4E86\u3059\u308B\uFF08\u898B\u7A4D\u306F\u5909\u3048\u306A\u3044\uFF09",
|
|
72
|
+
takesValue:false};var CONTENT_HELP="\u5185\u5BB9\uFF08--content-file\uFF09\u306F JSON \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u3059\u3002\u30AD\u30FC\u306F\u753B\u9762\u306E\u5165\u529B\u9805\u76EE\u3068\u540C\u3058\u540D\u524D\uFF08title / estimate_date / details \u306A\u3069\uFF09\u3067\u3001\n \u5404\u30AD\u30FC\u306B\u6E21\u305B\u308B\u5024\u306F --generate-cli-skeleton \u306E\u6CE8\u8A18\uFF08stderr\uFF09\u306B\u51FA\u307E\u3059\u3002\n \u30B5\u30FC\u30D0\u306B\u7121\u3044\u30AD\u30FC\uFF08\u6253\u3061\u9593\u9055\u3044\u3092\u542B\u3080\u3002\u660E\u7D30 details[] \u3068\u9001\u4ED8\u5148 recipients[] \u306E\u4E2D\u3082\uFF09\u306F\u3001\u9001\u308B\u524D\u306B\u3059\u3079\u3066\u6319\u3052\u3066\u6B62\u3081\u307E\u3059\n \uFF08\u30B5\u30FC\u30D0\u306F\u77E5\u3089\u306A\u3044\u30AD\u30FC\u3092\u9ED9\u3063\u3066\u6368\u3066\u308B\u305F\u3081\uFF09\u3002\u5024\u306E\u8AA4\u308A\u306F\u30B5\u30FC\u30D0\u304C 422 \u3067\u65AD\u308A\u307E\u3059\u3002--content-file - \u3067\u6A19\u6E96\u5165\u529B\u304B\u3089\u8AAD\u3081\u307E\u3059\u3002";
|
|
73
|
+
function usageOf2(op){return`twp estimate ${op} help`}function estimateIdArg(input,op){const[raw,...rest]=input.args;const id=raw?.trim()??"";if(id==="")throw new UsageError("\u898B\u7A4D\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",usageOf2(op));if(rest.length>0)throw new UsageError(`\u53D7\u3051\u53D6\u308C\u308B\u898B\u7A4D\u306E ID \u306F1\u3064\u3060\u3051\u3067\u3059: ${rest.join(" ")}`,usageOf2(op));if(!isExactNumericId(id)){throw new UsageError(`\u898B\u7A4D\u306E ID \u306F\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${id}`,
|
|
74
|
+
"\u898B\u7A4D\u756A\u53F7\uFF08EST0000063 \u306A\u3069\uFF09\u3067\u63A2\u3059\u306A\u3089 twp estimate list --keyword <\u756A\u53F7> \u306E id \u5217\u3092\u4F7F\u3063\u3066\u304F\u3060\u3055\u3044\u3002")}return id}function estimatePath(input,op){return`${PATH}/${estimateIdArg(input,op)}`}function noArgs2(input,op){if(input.args.length>0)throw new UsageError(`${op} \u306F\u4F4D\u7F6E\u5F15\u6570\u3092\u53D6\u308A\u307E\u305B\u3093: ${input.args.join(" ")}`,usageOf2(op))}function dataOf(body,what){
|
|
75
|
+
const data=isRecord(body)?body["data"]:void 0;if(!isRecord(body)||body["result"]!==true||!isRecord(data)||typeof data["id"]!=="string"){throw new ApiResponseError(`${what}\u306E\u5FDC\u7B54\u306B data.id \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002`)}return data}function serverMessage(body){const message=isRecord(body)?body["message"]:void 0;return typeof message==="string"&&message!==""?[message]:[]}function unknownRowKeys(value,key,allowed,source){
|
|
76
|
+
if(value===void 0||value===null)return[];if(!Array.isArray(value))throw new UsageError(`${key} \u306F\u914D\u5217\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${source}\uFF09`,CONTENT_HELP);const problems=[];value.forEach((row,index)=>{if(!isRecord(row)){problems.push(`${key}[${index}] \u304C\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093`);return}for(const name of Object.keys(row)){if(!allowed.includes(name))problems.push(`${key}[${index}].${name}`)}});
|
|
77
|
+
return problems}function parseEstimateContent(text,source,mode){let parsed;try{parsed=JSON.parse(text)}catch{throw new UsageError(`\u898B\u7A4D\u306E\u5185\u5BB9\u304C JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093\uFF08${source}\uFF09`,CONTENT_HELP)}if(!isRecord(parsed))throw new UsageError(`\u898B\u7A4D\u306E\u5185\u5BB9\u306F JSON \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08${source}\uFF09`,CONTENT_HELP);const allowed=mode==="create"?
|
|
78
|
+
STORE_KEYS:UPDATE_KEYS;const unknown=Object.keys(parsed).filter(key=>!allowed.includes(key));const problems=[...unknown.map(key=>mode==="create"&&key==="approval_comment"?"approval_comment\uFF08\u4F5C\u6210\u3067\u306F\u9001\u308C\u307E\u305B\u3093\u3002\u627F\u8A8D\u7533\u8ACB\u306F update \u3067\uFF09":mode==="update"&&key==="estimate_no_rule_id"?"estimate_no_rule_id\uFF08\u63A1\u756A\u30EB\u30FC\u30EB\u306F\u4F5C\u6210\u306E\u3068\u304D\u3060\u3051\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF09":key),
|
|
79
|
+
...unknownRowKeys(parsed["details"],"details",DETAIL_KEYS,source),...unknownRowKeys(parsed["recipients"],"recipients",RECIPIENT_KEYS,source)];if(problems.length>0){throw new UsageError(`\u898B\u7A4D\u306E\u5185\u5BB9\u306B\u9001\u308C\u306A\u3044\u9805\u76EE\u304C\u3042\u308A\u307E\u3059\uFF08${source}\uFF09: ${problems.join(", ")}`,`\u9001\u308C\u308B\u9805\u76EE\u306F twp estimate ${mode} --generate-cli-skeleton \u306E\u6CE8\u8A18\u306B\u4E26\u3073\u307E\u3059\u3002${mode==="update"?"\u4ECA\u306E\u5024\u306F twp \
|
|
80
|
+
estimate update <\u898B\u7A4DID> --generate-cli-skeleton \u3067\u53D6\u308C\u307E\u3059\u3002":""}`)}if(mode==="update"&&Object.keys(parsed).length===0){throw new UsageError(`\u66F8\u304D\u63DB\u3048\u308B\u9805\u76EE\u304C\u3042\u308A\u307E\u305B\u3093\uFF08${source} \u304C\u7A7A\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u3059\uFF09`,usageOf2("update"))}return parsed}async function readContent(input,mode){const body=await readBody(input,{flag:"--content",fileFlag:CONTENT_FILE_FLAG.name,label:"\
|
|
81
|
+
\u898B\u7A4D\u306E\u5185\u5BB9",maxChars:CONTENT_MAX_CHARS,usage:usageOf2(mode)});return body===void 0?void 0:parseEstimateContent(body,`${CONTENT_FILE_FLAG.name} ${input.flags.get(CONTENT_FILE_FLAG.name)??""}`,mode)}function contentNotes(body,mode){const notes=[];if(body["estimate_type"]==="formal"){notes.push("\u898B\u7A4D\u533A\u5206\u304C\u300C\u6B63\u5F0F\u300D\uFF08formal\uFF09\u306A\u306E\u3067\u3001\u4FDD\u5B58\u3059\u308B\u3068\u30B5\u30FC\u30D0\u304C\u3053\u306E\u898B\u7A4D\u306E\u5185\u5BB9\u3067\u8ACB\u6C42\u3092\u81EA\u52D5\u4F5C\u6210\u30FB\u66F4\u65B0\u3057\u307E\u3059")}
|
|
82
|
+
if(mode==="update"){if(Array.isArray(body["details"]))notes.push("\u660E\u7D30\uFF08details\uFF09\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\uFF08\u9001\u3063\u305F\u884C\u3060\u3051\u304C\u6B8B\u308A\u307E\u3059\uFF09");if(Array.isArray(body["recipients"]))notes.push("\u9001\u4ED8\u5148\uFF08recipients\uFF09\u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059");if(body["status"]==="in_progress")notes.push("status \u3092 in_progress\uFF08\u7533\u8ACB\u4E2D\uFF09\u306B\u3059\u308B\u3068\u627F\u8A8D\u7533\u8ACB\u306B\u306A\u308A\u3001\u627F\u8A8D\u8005\u3078\u5C4A\u304D\u307E\u3059")}
|
|
83
|
+
return notes}function todayJst(now=new Date){return new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Tokyo"}).format(now)}function fieldNotes(mode){return[`\u9001\u308C\u308B\u9805\u76EE\uFF08${mode==="create"?"create":"update"}\uFF09\u3068\u5024\u306E\u6C7A\u307E\u308A\uFF08\u30B5\u30FC\u30D0\u306E\u691C\u67FB\u306E\u5199\u3057\uFF09:`,...FIELD_NOTES.filter(([key])=>mode==="create"?key!=="approval_comment":key!=="estimate_no_rule_id").map(([key,text])=>` ${key}: ${text}`)]}function formatsOf(body){
|
|
84
|
+
const list=isRecord(body)?body["list"]:void 0;if(!isRecord(body)||body["result"]!==true||!Array.isArray(list)||!list.every(isRecord)){throw new ApiResponseError("\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u4E00\u89A7\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return list}var FORMATS_PLAN={method:"GET",path:"/api/v2/sales/estimate-formats",query:{page_limit:100,page_no:1}};
|
|
85
|
+
function createSkeleton(body){const formats=formatsOf(body);const only=formats.length===1?formats[0]:void 0;const pickDefault=key=>only===void 0?null:only[key]??null;const today=todayJst();return{estimate_format_id:only===void 0?null:only["id"]??null,estimate_no_rule_id:pickDefault("default_estimate_no_id"),title:"",company_id:null,project_id:null,department_id:"",estimate_user_id:null,business_place_id:pickDefault("default_business_place_id"),seal_impression_id:pickDefault("default_seal_impress\
|
|
86
|
+
ion_id"),estimate_type:"rough",status:"new",estimate_date:today,billing_date:today,terms:pickDefault("default_terms"),memo:null,details:[{item_name:"",description:null,quantity:1,unit:only===void 0?"set":only["default_unit"]??"set",unit_price:0,tax_rate:only===void 0?"10":only["default_tax_rate"]??"10"}]}}function createSkeletonNotes(body){const formats=formatsOf(body);const pageSum=isRecord(body)?body["page_sum"]:void 0;const lines=formats.length===0?["\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u753B\u9762\u3067\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u4F5C\u3063\u3066\u304B\u3089 estimate_\
|
|
87
|
+
format_id \u306B\u5165\u308C\u3066\u304F\u3060\u3055\u3044"]:formats.length===1?[`\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u300C${String(formats[0]?.["format_name"])}\u300D\u3060\u3051\u306A\u306E\u3067\u3001\u305D\u306E\u65E2\u5B9A\u5024\u3092\u5165\u308C\u307E\u3057\u305F`]:["estimate_format_id \u306B\u6B21\u306E\u3069\u308C\u304B\u306E id \u3092\u5165\u308C\u3066\u304F\u3060\u3055\u3044\uFF08\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\uFF09:",...formats.map(row=>` ${String(
|
|
88
|
+
row["id"])}: ${String(row["format_name"])}`),...typeof pageSum==="number"&&pageSum>1?[` \uFF08\u5148\u982D ${formats.length} \u4EF6\u3060\u3051\u3092\u51FA\u3057\u3066\u3044\u307E\u3059\u3002\u6B8B\u308A\u306F twp api /api/v2/sales/estimate-formats\uFF09`]:[]];return[...lines,"department_id\uFF08\u4E3B\u5E79\u90E8\u7F72\uFF09\u30FBtitle\u30FBdetails[].item_name / unit_price \u3092\u57CB\u3081\u3066\u304B\u3089 twp estimate create --content-file <\u30D1\u30B9> \u3067\u4F5C\u308A\u307E\u3059",...fieldNotes(
|
|
89
|
+
"create")]}function updateSkeleton(estimate){const out={};for(const key of UPDATE_KEYS){if(key==="approval_comment"||!(key in estimate))continue;const value=estimate[key];if(key==="details"&&Array.isArray(value)){out[key]=value.filter(isRecord).map(row=>pick(row,DETAIL_KEYS))}else if(key==="recipients"&&Array.isArray(value)){out[key]=value.filter(isRecord).map(row=>pick(row,RECIPIENT_KEYS))}else{out[key]=value}}return out}function updateSkeletonNotes(){return["\u4ECA\u306E\u898B\u7A4D\u306E\u3001\u66F8\u304D\u8FBC\u3081\u308B\u9805\u76EE\u3060\u3051\u3092\u51FA\u3057\u307E\u3057\u305F\u3002\u5909\u3048\u306A\u3044\u9805\u76EE\u306F\u6D88\u3057\u3066\u304B\u3089 \
|
|
90
|
+
twp estimate update <\u898B\u7A4DID> --content-file <\u30D1\u30B9> \u3067\u9001\u3063\u3066\u304F\u3060\u3055\u3044"," \uFF08details / recipients \u3092\u9001\u308B\u3068\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u3001\u6B63\u5F0F\u898B\u7A4D\u306A\u3089\u8ACB\u6C42\u3078\u306E\u53CD\u6620\u3082\u8D70\u308A\u307E\u3059\uFF09",...fieldNotes("update")]}function writeResult(value){if(!isRecord(value)||typeof value["skeleton"]!=="boolean"){throw new Error("\u5185\u90E8\u30A8\u30E9\u30FC: estimate \u306E\u5FDC\u7B54\u306B\u5370\u304C\u3042\u308A\u307E\u305B\u3093\uFF08execute \
|
|
91
|
+
\u306E\u914D\u7DDA\u6F0F\u308C\uFF09")}return value}function contentOf(input){return JSON.parse(requireResolved(input,"body"))}function createPlan(input){if(input.flags.has(SKELETON_FLAG.name))return FORMATS_PLAN;return{method:"POST",path:PATH,body:contentOf(input)}}function updatePlan(input){const target=estimatePath(input,"update");if(input.flags.has(SKELETON_FLAG.name))return{method:"GET",path:target};return{method:"PUT",path:target,body:contentOf(input)}}async function prepareContent(input,mode){
|
|
92
|
+
const wantsSkeleton=input.flags.has(SKELETON_FLAG.name);if(wantsSkeleton&&input.flags.has(CONTENT_FILE_FLAG.name)){throw new UsageError("--generate-cli-skeleton \u3068 --content-file \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",usageOf2(mode))}if(wantsSkeleton)return input;const content=await readContent(input,mode);if(content===void 0){throw new UsageError("\u898B\u7A4D\u306E\u5185\u5BB9\u3092 --content-file <\u30D1\u30B9> \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044",
|
|
93
|
+
`\u3072\u306A\u5F62\u306F twp estimate ${mode}${mode==="update"?" <\u898B\u7A4DID>":""} --generate-cli-skeleton \u3067\u51FA\u305B\u307E\u3059\u3002`)}return withResolved(input,{body:JSON.stringify(content)})}var createOperation={name:"create",summary:"\u898B\u7A4D\u3092\u4F5C\u6210\u3059\u308B\uFF08\u5185\u5BB9\u306F --content-file \u306E JSON\uFF09",usage:"twp estimate create (--content-file <\u30D1\u30B9> | --generate-cli-skeleton)",description:`POST /api/v2/sales/estimates \u3067\u898B\u7A4D\u3092\u4F5C\u308A\u307E\u3059\u3002\u4F5C\u6210\u6642\u306E\u30B9\u30C6\u30FC\u30BF\u30B9\
|
|
94
|
+
\u306F new\uFF08\u4F5C\u6210\u4E2D\uFF09\u304B create_completed\uFF08\u4F5C\u6210\u5B8C\u4E86\uFF09\u3060\u3051\u3067\u3059
|
|
95
|
+
\uFF08\u627F\u8A8D\u7533\u8ACB\u306F twp estimate update \u3067 status \u3092 in_progress \u306B\u3057\u307E\u3059\uFF09\u3002
|
|
96
|
+
|
|
97
|
+
${CONTENT_HELP}
|
|
98
|
+
|
|
99
|
+
--generate-cli-skeleton \u306F\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E\u4E00\u89A7\uFF08GET /api/v2/sales/estimate-formats\uFF09\u3092\u8AAD\u307F\u3001--content-file \u306B\u6E21\u3059
|
|
100
|
+
\u3072\u306A\u5F62\u3092\u6A19\u6E96\u51FA\u529B\u3078\u51FA\u3057\u3066\u7D42\u4E86\u3057\u307E\u3059\uFF08\u898B\u7A4D\u306F\u4F5C\u308A\u307E\u305B\u3093\uFF09\u3002\u5404\u9805\u76EE\u306B\u6E21\u305B\u308B\u5024\u306F stderr \u306B\u51FA\u307E\u3059\u3002
|
|
101
|
+
\u4F8B: twp estimate create --generate-cli-skeleton --output json > estimate.json
|
|
102
|
+
|
|
103
|
+
\u898B\u7A4D\u533A\u5206\u3092 formal\uFF08\u6B63\u5F0F\uFF09\u306B\u3059\u308B\u3068\u3001\u4FDD\u5B58\u3057\u305F\u3068\u304D\u306B\u30B5\u30FC\u30D0\u304C\u8ACB\u6C42\u3092\u81EA\u52D5\u4F5C\u6210\u3057\u307E\u3059\u3002
|
|
104
|
+
\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\u3002\u4F5C\u3063\u305F\u898B\u7A4D\u306E ID \u306F\u51FA\u529B\u306E id \u3067\u3059\u3002`,flags:[CONTENT_FILE_FLAG,SKELETON_FLAG],forbidden:SALES_FORBIDDEN,async prepare(input){noArgs2(input,"create");return prepareContent(input,"create")},plan:createPlan,plannedNotes:input=>input.flags.has(SKELETON_FLAG.name)?["\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E\u4E00\u89A7\u3092\u8AAD\u3080\u3060\u3051\u3067\u3001\u898B\u7A4D\u306F\u4F5C\u308A\u307E\u305B\u3093"]:
|
|
105
|
+
contentNotes(contentOf(input),"create"),execute:async(input,ctx)=>({skeleton:input.flags.has(SKELETON_FLAG.name),body:await ctx.send(createPlan(input))}),summarize(value){const result=writeResult(value);return result.skeleton?createSkeleton(result.body):pick(dataOf(result.body,"\u898B\u7A4D\u306E\u4F5C\u6210"),WRITE_COLUMNS)},raw(value){const result=writeResult(value);return result.skeleton?createSkeleton(result.body):dataOf(result.body,"\u898B\u7A4D\u306E\u4F5C\u6210")},notes(value){const result=writeResult(
|
|
106
|
+
value);return result.skeleton?createSkeletonNotes(result.body):serverMessage(result.body)}};var updateOperation={name:"update",summary:"\u898B\u7A4D\u3092\u66F8\u304D\u63DB\u3048\u308B\uFF08\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u3044\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308B\uFF09",usage:"twp estimate update <\u898B\u7A4DID> (--content-file <\u30D1\u30B9> | --generate-cli-skeleton)",description:`PUT /api/v2/sales/estimates/{id} \u3067\u898B\u7A4D\u3092\u66F8\u304D\u63DB\u3048\u307E\u3059\u3002\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u3044\u305F\u30AD\u30FC\u3060\u3051\u3092\u9001\u308A\u307E\u3059\uFF08\u66F8\u304B\u306A\u304B\u3063\u305F\u9805\u76EE\u306F\u5909\u308F\u308A\u307E\u305B\u3093\uFF09\u3002
|
|
107
|
+
\u26A0\uFE0F details\uFF08\u660E\u7D30\uFF09\u3068 recipients\uFF08\u9001\u4ED8\u5148\uFF09\u306F\u3001\u9001\u308B\u3068\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\uFF08\u884C\u3054\u3068\u306E\u30DE\u30FC\u30B8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\uFF09\u3002
|
|
108
|
+
status \u3092 in_progress\uFF08\u7533\u8ACB\u4E2D\uFF09\u306B\u3059\u308B\u3068\u627F\u8A8D\u7533\u8ACB\u306B\u306A\u308A\u307E\u3059\uFF08approval_comment \u3067\u7533\u8ACB\u8005\u30B3\u30E1\u30F3\u30C8\u3092\u6DFB\u3048\u3089\u308C\u307E\u3059\uFF09\u3002
|
|
109
|
+
\u8ACB\u6C42\u304C\u78BA\u5B9A\u6E08\u307F\uFF08\u627F\u8A8D\u6E08\u30FB\u767A\u884C\u6E08\u306A\u3069\uFF09\u306E\u898B\u7A4D\u3084\u3001\u6B63\u5F0F\u63D0\u793A\u6E08\u30FB\u6B63\u5F0F\u627F\u8A8D\u6E08\u306E\u898B\u7A4D\u306F\u3001\u30B5\u30FC\u30D0\u304C\u4FDD\u5B58\u3092\u65AD\u308B\u304B\u4E00\u90E8\u306E\u9805\u76EE\u3057\u304B\u53D7\u3051\u307E\u305B\u3093\u3002
|
|
110
|
+
|
|
111
|
+
${CONTENT_HELP}
|
|
112
|
+
|
|
113
|
+
--generate-cli-skeleton \u306F\u4ECA\u306E\u898B\u7A4D\u3092\u8AAD\u307F\uFF08GET /api/v2/sales/estimates/{id}\uFF09\u3001\u66F8\u304D\u8FBC\u3081\u308B\u30AD\u30FC\u3060\u3051\u3092\u6B8B\u3057\u3066\u51FA\u3057\u307E\u3059
|
|
114
|
+
\uFF08get \u306E\u5FDC\u7B54\u306F\u91D1\u984D\u30FB\u540D\u524D\u306A\u3069\u66F8\u304D\u8FBC\u3081\u306A\u3044\u9805\u76EE\u3092\u542B\u3080\u306E\u3067\u3001\u305D\u306E\u307E\u307E\u3067\u306F\u9001\u308C\u307E\u305B\u3093\uFF09\u3002
|
|
115
|
+
\u4F8B: twp estimate update 123 --generate-cli-skeleton --output json > estimate.json`,flags:[CONTENT_FILE_FLAG,SKELETON_FLAG],forbidden:SALES_FORBIDDEN,async prepare(input){estimateIdArg(input,"update");return prepareContent(input,"update")},plan:updatePlan,plannedNotes:input=>input.flags.has(SKELETON_FLAG.name)?["\u4ECA\u306E\u898B\u7A4D\u3092\u8AAD\u3080\u3060\u3051\u3067\u3001\u66F8\u304D\u63DB\u3048\u307E\u305B\u3093"]:contentNotes(contentOf(input),"update"),execute:async(input,ctx)=>({skeleton:input.
|
|
116
|
+
flags.has(SKELETON_FLAG.name),body:await ctx.send(updatePlan(input))}),summarize(value){const result=writeResult(value);return result.skeleton?updateSkeleton(dataOf(result.body,"\u898B\u7A4D")):pick(dataOf(result.body,"\u898B\u7A4D\u306E\u66F4\u65B0"),WRITE_COLUMNS)},raw(value){const result=writeResult(value);return result.skeleton?updateSkeleton(dataOf(result.body,"\u898B\u7A4D")):dataOf(result.body,"\u898B\u7A4D\u306E\u66F4\u65B0")},notes(value){const result=writeResult(value);return result.skeleton?
|
|
117
|
+
updateSkeletonNotes():serverMessage(result.body)}};var deleteOperation={name:"delete",summary:"\u898B\u7A4D\u3092\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09",usage:"twp estimate delete <\u898B\u7A4DID> --yes",description:"DELETE /api/v2/sales/estimates/{id} \u3067\u898B\u7A4D\u3092\u524A\u9664\u3057\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306F\u8AD6\u7406\u524A\u9664\u3067\u3001\u4E00\u89A7\u30FB\u8A73\u7D30\u304B\u3089\u6D88\u3048\u307E\u3059\uFF09\u3002\n\u5951\u7D04\u304B\u3001\u4EBA\u304C\u4F5C\u3063\u305F\u30FB1\u6BB5\u3067\u3082\u9032\u3093\u3060\u8ACB\u6C42\u304C\u7D10\u3065\u3044\u3066\u3044\u308B\u3068\u3001\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF08\u305D\u306E\u7406\u7531\u3092\u305D\u306E\u307E\u307E\u51FA\u3057\u307E\u3059\uFF09\u3002\n\u6B63\u5F0F\u898B\u7A4D\u304C\u81EA\u52D5\u4F5C\u6210\u3057\u305F\u672A\u78BA\u5B9A\u306E\u8ACB\u6C42\u306F\u3001\u898B\u7A4D\u3068\u4E00\u7DD2\u306B\u30B5\u30FC\u30D0\u304C\u8AD6\u7406\u524A\u9664\u3057\u307E\u3059\u3002\n\u6848\u4EF6\u66F8\u985E\uFF08twp estimate case-document\uFF09\u306F\u898B\u7A4D\u3092\u6D88\u3057\u3066\u3082\u6B8B\u308A\u3001\u9867\u5BA2\u8A73\u7D30\u304B\u3089\u53C2\u7167\u3055\u308C\u7D9A\u3051\u307E\u3059\u3002",
|
|
118
|
+
destructive:true,flags:[],forbidden:SALES_FORBIDDEN,plan:input=>({method:"DELETE",path:estimatePath(input,"delete")}),summarize:body=>acknowledgement(body,"\u898B\u7A4D\u524A\u9664"),raw:body=>acknowledgement(body,"\u898B\u7A4D\u524A\u9664")};var MEMO_FLAGS=[{name:"--text",summary:`\u30E1\u30E2\u306E\u672C\u6587\uFF08${MEMO_MAX_CHARS.toLocaleString()} \u6587\u5B57\u307E\u3067\uFF09`,takesValue:true,placeholder:"<\u672C\u6587>"},{name:"--text-file",summary:"\u30E1\u30E2\u306E\u672C\u6587\u3092\u8AAD\u3080\u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",
|
|
119
|
+
takesValue:true,placeholder:"<\u30D1\u30B9>"},{name:"--clear",summary:"\u30E1\u30E2\u3092\u6D88\u3059",takesValue:false}];async function prepareMemo(input){estimateIdArg(input,"memo");const clear=input.flags.has("--clear");const text=await readBody(input,{flag:"--text",fileFlag:"--text-file",label:"\u793E\u5185\u5171\u6709\u30E1\u30E2",maxChars:MEMO_MAX_CHARS,usage:usageOf2("memo")});if(clear&&text!==void 0)throw new UsageError("--clear \u3068 --text / --text-file \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",
|
|
120
|
+
usageOf2("memo"));if(!clear&&text===void 0)throw new UsageError("\u30E1\u30E2\u3092 --text <\u672C\u6587> \u304B --text-file <\u30D1\u30B9> \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6D88\u3059\u306A\u3089 --clear\uFF09",usageOf2("memo"));return withResolved(input,clear?{memoMode:"clear"}:{memoMode:"set",memo:text})}function memoOf(body){return dataOf(body,"\u793E\u5185\u5171\u6709\u30E1\u30E2\u306E\u4FDD\u5B58")}var memoOperation={name:"memo",summary:"\u898B\u7A4D\u306E\u793E\u5185\u5171\u6709\u30E1\u30E2\u3092\u66F8\u304D\u63DB\u3048\u308B\uFF08\u4E00\u89A7\u306E\u30E1\u30E2\u6B04\uFF09",
|
|
121
|
+
usage:"twp estimate memo <\u898B\u7A4DID> (--text <\u672C\u6587> | --text-file <\u30D1\u30B9> | --clear)",description:`PATCH /api/v2/sales/estimates/{id}/internal-memo \u3067\u3001\u898B\u7A4D\u4E00\u89A7\u306E\u30E1\u30E2\u6B04\uFF08\u793E\u5185\u5171\u6709\u30E1\u30E2\uFF09\u3092\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u3048\u307E\u3059\u3002
|
|
122
|
+
\u898B\u7A4D\u672C\u4F53\u306E\u4FDD\u5B58\uFF08\u660E\u7D30\u306E\u4F5C\u308A\u76F4\u3057\u30FB\u627F\u8A8D\u30FB\u8ACB\u6C42\u3078\u306E\u53CD\u6620\uFF09\u306F\u4F34\u308F\u306A\u3044\u306E\u3067\u3001\u78BA\u5B9A\u6E08\u307F\u306E\u898B\u7A4D\u306B\u3082\u66F8\u3051\u307E\u3059\u3002
|
|
123
|
+
\u4E0A\u9650\u306F ${MEMO_MAX_CHARS.toLocaleString()} \u6587\u5B57\u3067\u3059\u3002CLI \u306F\u672C\u6587\u3092\u52A0\u5DE5\u305B\u305A\u306B\u9001\u308A\u307E\u3059\u304C\u3001\u30B5\u30FC\u30D0\u304C\u524D\u5F8C\u306E\u7A7A\u767D\u30FB\u6539\u884C\u3092\u843D\u3068\u3057\u3066\u4FDD\u5B58\u3057\u307E\u3059\u3002`,flags:MEMO_FLAGS,forbidden:SALES_FORBIDDEN,prepare:prepareMemo,plan:input=>({method:"PATCH",path:`${estimatePath(input,"memo")}/internal-memo`,body:{internal_memo:requireResolved(input,
|
|
124
|
+
"memoMode")==="clear"?null:requireResolved(input,"memo")}}),summarize:body=>pick(memoOf(body),["id","internal_memo","updated_at"]),raw:memoOf,notes:serverMessage};var INVOICE_FLAG={name:"--invoice",summary:"\u7D10\u3065\u3051\u308B\u8ACB\u6C42\u306E\u8ACB\u6C42\u756A\u53F7\uFF08INV0000170 \u306A\u3069\uFF09",takesValue:true,placeholder:"<\u8ACB\u6C42\u756A\u53F7>"};var INVOICE_ID_FLAG={name:"--invoice-id",summary:"\u7D10\u3065\u3051\u308B\u8ACB\u6C42\u306E ID\uFF08twp invoice list \u306E id \u5217\u306E\u6570\u5B57\uFF09",
|
|
125
|
+
takesValue:true,placeholder:"<\u8ACB\u6C42ID>"};var INVOICE_NO_MAX_CHARS=255;function linkedEstimate(invoice){const previous=invoice?.["estimate_id"];return typeof previous==="string"||typeof previous==="number"?String(previous):""}async function prepareLink(input,ctx){estimateIdArg(input,"link-invoice");const no=nonEmpty(input.flags,INVOICE_FLAG.name)?.trim();const id=nonEmpty(input.flags,INVOICE_ID_FLAG.name)?.trim();if(no===void 0===(id===void 0)){throw new UsageError(`${INVOICE_FLAG.name}\uFF08\u8ACB\u6C42\
|
|
126
|
+
\u756A\u53F7\uFF09\u304B ${INVOICE_ID_FLAG.name}\uFF08\u8ACB\u6C42 ID\uFF09\u306E\u3069\u3061\u3089\u304B\u4E00\u65B9\u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usageOf2("link-invoice"))}if(no!==void 0){if(charCount(no)>INVOICE_NO_MAX_CHARS)throw new UsageError(`\u8ACB\u6C42\u756A\u53F7\u306F ${INVOICE_NO_MAX_CHARS} \u6587\u5B57\u307E\u3067\u3067\u3059`,usageOf2("link-invoice"));const found=await ctx.resolver.invoiceByNumber(no);return withResolved(input,{invoiceNo:no,invoiceId:typeof found?.["\
|
|
127
|
+
id"]==="string"?found["id"]:"",previous:linkedEstimate(found),looked:found===null?"missing":"found"})}const invoice=await ctx.resolver.salesRecord("invoice",id,INVOICE_ID_FLAG.name);const invoiceNo=invoice["invoice_no"];if(typeof invoiceNo!=="string"||invoiceNo.trim()===""){throw new UsageError(`\u8ACB\u6C42 ${id} \u306B\u306F\u8ACB\u6C42\u756A\u53F7\u304C\u307E\u3060\u63A1\u756A\u3055\u308C\u3066\u3044\u306A\u3044\u305F\u3081\u3001\u7D10\u3065\u3051\u3089\u308C\u307E\u305B\u3093\uFF08\u30B5\u30FC\u30D0\u306F\u8ACB\u6C42\u756A\u53F7\u3067\u8ACB\u6C42\u3092\u6307\u3057\u307E\u3059\uFF09`,
|
|
128
|
+
"\u753B\u9762\u3067\u8ACB\u6C42\u756A\u53F7\u3092\u63A1\u756A\u3057\u3066\u304B\u3089\u3001\u3082\u3046\u4E00\u5EA6\u5B9F\u884C\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return withResolved(input,{invoiceNo,invoiceId:id,previous:linkedEstimate(invoice),looked:"found"})}var linkInvoiceOperation={name:"link-invoice",summary:"\u65E2\u5B58\u306E\u8ACB\u6C42\u3092\u3053\u306E\u898B\u7A4D\u306B\u7D10\u3065\u3051\u308B\uFF08--yes \u304C\u8981\u308B\uFF09",usage:"twp estimate link-invoice <\u898B\u7A4DID> (--in\
|
|
129
|
+
voice <\u8ACB\u6C42\u756A\u53F7> | --invoice-id <\u8ACB\u6C42ID>) --yes",description:"POST /api/v2/sales/estimates/{id}/link-invoice \u3067\u3001\u65E2\u5B58\u306E\u8ACB\u6C42\u306E\u300C\u7D10\u3065\u304F\u898B\u7A4D\u300D\u3092\u3053\u306E\u898B\u7A4D\u306B\u4ED8\u3051\u66FF\u3048\u307E\u3059\u3002\n\u8ACB\u6C42\u306F --invoice\uFF08\u8ACB\u6C42\u756A\u53F7\uFF09\u304B --invoice-id\uFF08twp invoice list \u306E id\uFF09\u306E\u3069\u3061\u3089\u304B\u3067\u6307\u5B9A\u3057\u307E\u3059\u3002\u30B5\u30FC\u30D0\u306F\u8ACB\u6C42\u756A\u53F7\u3067\u8ACB\u6C42\u3092\n\u6307\u3059\u306E\u3067\u3001ID \u3092\u6E21\u3057\u305F\u3068\u304D\u306F\u8ACB\u6C42\u3092\u8AAD\u3093\u3067\u756A\u53F7\u3092\u5F15\u304D\u307E\u3059\uFF08\u756A\u53F7\u304C\u672A\u63A1\u756A\u306E\u8ACB\u6C42\u306F\u7D10\u3065\u3051\u3089\u308C\u307E\u305B\u3093\uFF09\u3002\n\u9001\u308B\u524D\u306B\u3001\u5BFE\u8C61\u306E\u8ACB\u6C42\uFF08\u756A\u53F7\u30FBID\uFF09\u3068\u4ECA\u306E\u7D10\u3065\u3051\u5148\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\uFF08--dry-run \u3067\u3082\u51FA\u307E\u3059\uFF09\u3002\n\u26A0\uFE0F \u8ACB\u6C42\u304C\u5225\u306E\u898B\u7A4D\u306B\u7D10\u3065\u3044\u3066\u3044\u308C\u3070\u4ED8\u3051\u66FF\u308F\u308A\u3001\u524D\u306E\u898B\u7A4D\u304B\u3089\u306E\u81EA\u52D5\u53CD\u6620\uFF08\u6708\u984D\u306E\u5BFE\u8C61\u6708\u30FB\u81EA\u52D5\u4F5C\u6210\u306E\u5370\uFF09\u306F\u5916\u308C\u307E\u3059\u3002\n \u5143\u306E\u898B\u7A4D\u3078\u7D10\u3065\u3051\u76F4\u3057\u3066\u3082\u81EA\u52D5\u53CD\u6620\u306F\u623B\u308A\u307E\u305B\u3093\u3002",
|
|
130
|
+
destructive:true,confirmation:"\u8ACB\u6C42\u306E\u7D10\u3065\u3051\u5148\u3092\u4ED8\u3051\u66FF\u3048\u308B\u64CD\u4F5C\uFF08\u524D\u306E\u898B\u7A4D\u304B\u3089\u306E\u81EA\u52D5\u53CD\u6620\u306F\u5916\u308C\u3001\u623B\u308A\u307E\u305B\u3093\uFF09",flags:[INVOICE_FLAG,INVOICE_ID_FLAG],forbidden:SALES_FORBIDDEN,prepare:prepareLink,plan:input=>({method:"POST",path:`${estimatePath(input,"link-invoice")}/link-invoice`,body:{invoice_no:requireResolved(input,"invoiceNo")}}),plannedNotes(input){const estimate=estimateIdArg(
|
|
131
|
+
input,"link-invoice");const invoiceNo=requireResolved(input,"invoiceNo");const invoiceId=input.resolved?.["invoiceId"]??"";const previous=input.resolved?.["previous"]??"";const target=`\u8ACB\u6C42 ${invoiceNo}${invoiceId===""?"":`\uFF08ID ${invoiceId}\uFF09`}`;if(input.resolved?.["looked"]==="missing")return[`${target} \u3092\u4E00\u89A7\u3067\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08\u4ECA\u306E\u7D10\u3065\u3051\u5148\u306F\u78BA\u304B\u3081\u3066\u3044\u307E\u305B\u3093\u3002\u7121\u3051\u308C\u3070\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09`];
|
|
132
|
+
if(previous==="")return[`${target} \u306F\u4ECA\u306F\u3069\u306E\u898B\u7A4D\u306B\u3082\u7D10\u3065\u3044\u3066\u3044\u307E\u305B\u3093\u3002\u898B\u7A4D ${estimate} \u3078\u7D10\u3065\u3051\u307E\u3059`];if(previous===estimate)return[`${target} \u306F\u65E2\u306B\u3053\u306E\u898B\u7A4D\u306B\u7D10\u3065\u3044\u3066\u3044\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u304C\u65AD\u308A\u307E\u3059\uFF09`];return[`${target} \u306F\u4ECA\u306F\u898B\u7A4D ${previous} \u306B\u7D10\u3065\u3044\u3066\u3044\u307E\u3059\u3002\u898B\u7A4D ${estimate}\
|
|
133
|
+
\u3078\u4ED8\u3051\u66FF\u3048\u307E\u3059`]},summarize:body=>pick(dataOf(body,"\u8ACB\u6C42\u306E\u7D10\u3065\u3051"),["id","invoice_no","title","status","estimate_id","invoice_date","total"]),raw:body=>dataOf(body,"\u8ACB\u6C42\u306E\u7D10\u3065\u3051"),notes:serverMessage};function depositRows(body){const list=isRecord(body)?body["list"]:void 0;if(!isRecord(body)||body["result"]!==true||!Array.isArray(list)||!list.every(isRecord)){throw new ApiResponseError("\u898B\u7A4D\u306E\u95A2\u9023\u5165\u91D1\u306E\u5FDC\u7B54\u306B list \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\
|
|
134
|
+
\u3066\u304F\u3060\u3055\u3044\u3002")}return list}var depositsOperation={name:"deposits",summary:"\u898B\u7A4D\u306B\u7D10\u3065\u304F\u8ACB\u6C42\u3078\u306E\u5165\u91D1\u3092\u4E00\u89A7\u3059\u308B\uFF08\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u306E\u307F\uFF09",usage:"twp estimate deposits <\u898B\u7A4DID>",description:"GET /api/v2/sales/estimates/{id}/deposits\u3002\u898B\u7A4D\u306B\u7D10\u3065\u304F\u8ACB\u6C42\u306E\u3046\u3061\u3001\u3042\u306A\u305F\u304C\u898B\u3089\u308C\u308B\u8ACB\u6C42\u3078\u306E\u5165\u91D1\u3060\u3051\u3092\u8FD4\u3057\u307E\u3059\n\uFF08\u91D1\u984D\u306F\u3053\u306E\u898B\u7A4D\u306E\u8ACB\u6C42\u3078\u5F15\u304D\u5F53\u3066\u305F\u5206\u3060\u3051\u3067\u3059\u3002\u5165\u91D1\u5168\u4F53\u306E\u5145\u5F53\u72B6\u6CC1\u306F\u5165\u91D1\u306E\u753B\u9762\u3067\u898B\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\n\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u305F\u305A\u5168\u4EF6\u3092\u8FD4\u3057\u307E\u3059\u3002\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\
|
|
135
|
+
\u3053\u3068\u304C\u8981\u308A\u307E\u3059\u3002\n\n--output json \u306F\u5F15\u5F53\u306E\u5185\u8A33\uFF08allocations\uFF09\u3092\u542B\u3080\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002\n--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08id / deposit_date / related_amount / company_name / allocations\uFF1D\u5F15\u5F53\u306E\u4EF6\u6570\uFF09\u3067\u3059\u3002",flags:[],forbidden:body=>body?.error==="permission_denied"?featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"):
|
|
136
|
+
"\u95A2\u9023\u5165\u91D1\u3092\u898B\u308B\u306B\u306F\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u7BA1\u7406\u8005\u300D\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\uFF08\u7BA1\u7406\u8005\u3067\u3082\u3001\u898B\u7A4D\u306E\u30D7\u30ED\u30B8\u30A7\u30AF\u30C8\u306E\u30E1\u30F3\u30D0\u30FC\u3067\u306A\u3051\u308C\u3070\u898B\u3089\u308C\u307E\u305B\u3093\uFF09\u3002\u30C6\u30CA\u30F3\u30C8\u7BA1\u7406\u8005\u306B\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002",
|
|
137
|
+
plan:input=>({method:"GET",path:`${estimatePath(input,"deposits")}/deposits`}),summarize:body=>depositRows(body).map(row=>({...pick(row,["id","deposit_date","related_amount","company_name"]),allocations:Array.isArray(row["allocations"])?row["allocations"].length:0})),raw:depositRows};var SCAN_FILE_FLAG={name:"--file",summary:"\u6CE8\u6587\u66F8\u306E\u30D5\u30A1\u30A4\u30EB\uFF08PDF\u30FBPNG\u30FBJPEG\u30FBGIF\u30FBWebP\u300120MB \u307E\u3067\uFF09",takesValue:true,placeholder:"<\u30D1\u30B9>"};
|
|
138
|
+
function prepareScan(input){noArgs2(input,"scan-order-form");const{file,size}=inspectLocalFile(input.flags.get(SCAN_FILE_FLAG.name),SCAN_FILE_FLAG.name,usageOf2("scan-order-form"));const name=path2.basename(file);const contentType=contentTypeFor(name);if(!SCAN_CONTENT_TYPES.includes(contentType)){throw new UsageError(`\u6CE8\u6587\u66F8\u306E\u8AAD\u307F\u53D6\u308A\u306F PDF\u30FBPNG\u30FBJPEG\u30FBGIF\u30FBWebP \u3060\u3051\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u307E\u3059: ${name}`)}if(size>SCAN_MAX_BYTES)
|
|
139
|
+
throw new UsageError(`\u6CE8\u6587\u66F8\u306E\u8AAD\u307F\u53D6\u308A\u306F 20MB \u307E\u3067\u3067\u3059\uFF08${size.toLocaleString()} \u30D0\u30A4\u30C8\uFF09: ${name}`);if(!matchesScanSignature(contentType,readHead(file,12))){throw new UsageError(`\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u304C\u62E1\u5F35\u5B50\u3068\u5408\u3044\u307E\u305B\u3093\uFF08\u58CA\u308C\u3066\u3044\u308B\u304B\u5225\u306E\u5F62\u5F0F\u3067\u3059\uFF09: ${name}`)}return Promise.resolve(withResolved(input,{file,fileName:name,
|
|
140
|
+
fileSize:String(size),contentType}))}function readHead(file,length){const head=Buffer.alloc(length);let read;try{const fd=fs2.openSync(file,"r");try{read=fs2.readSync(fd,head,0,length,0)}finally{fs2.closeSync(fd)}}catch(err){throw new UsageError(`\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093\uFF08${SCAN_FILE_FLAG.name}\uFF09: ${file}\uFF08${err.code??err.message}\uFF09`)}return head.subarray(0,read)}function matchesScanSignature(contentType,head){const text=head.toString(
|
|
141
|
+
"latin1");switch(contentType){case"application/pdf":return text.startsWith("%PDF-");case"image/png":return text.startsWith("\x89PNG\r\n\n");case"image/jpeg":return text.startsWith("\xFF\xD8\xFF");case"image/gif":return text.startsWith("GIF87a")||text.startsWith("GIF89a");case"image/webp":return text.startsWith("RIFF")&&text.slice(8,12)==="WEBP";default:return false}}function scanUploadPlan(input){return{method:"POST",path:"/api/v2/attachments/upload-url",body:{file_name:requireResolved(input,"f\
|
|
142
|
+
ileName"),content_type:requireResolved(input,"contentType"),file_size:Number(requireResolved(input,"fileSize")),source:ORDER_FORM_SOURCE}}}function scanResult(body){const data=isRecord(body)?body["data"]:void 0;if(!isRecord(body)||body["result"]!==true||!isRecord(data)||!("order_no"in data)){throw new ApiResponseError("\u6CE8\u6587\u66F8\u306E\u8AAD\u307F\u53D6\u308A\u306E\u5FDC\u7B54\u306B data.order_no \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}
|
|
143
|
+
return data}async function scanOrderForm(input,ctx){const file=requireResolved(input,"file");const size=Number(requireResolved(input,"fileSize"));await checkUploadQuota(ctx,size);const{id,uploadUrl}=issued(await ctx.send(scanUploadPlan(input)));if(!isSafePathSegment(id))throw new ApiResponseError(`\u6DFB\u4ED8 ID \u306E\u5F62\u304C\u60F3\u5B9A\u3068\u9055\u3044\u307E\u3059: ${id}`);const bytes=fs2.readFileSync(file);if(bytes.byteLength!==size){throw new UsageError(`\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u4E2D\u306B\u30D5\u30A1\u30A4\u30EB\u306E\u5927\u304D\u3055\u304C\u5909\u308F\u308A\u307E\u3057\u305F\uFF08${size}\
|
|
144
|
+
\u2192 ${bytes.byteLength} \u30D0\u30A4\u30C8\uFF09: ${file}`)}await ctx.putSigned(uploadUrl,bytes,requireResolved(input,"contentType"));try{return await ctx.send({method:"POST",path:`${PATH}/order-form/scan`,body:{attachment_id:id}})}catch(err){const refused=err instanceof ApiError&&err.status>=400&&err.status<500;if(!refused){ctx.warn(`\u6CE8\u6587\u66F8\u306E\u8AAD\u307F\u53D6\u308A\u306F\u9001\u4FE1\u3057\u307E\u3057\u305F\u304C\u3001\u7D50\u679C\u3092\u53D7\u3051\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30B5\u30FC\u30D0\u3067\u8AAD\u307F\u53D6\u308A\u307E\u3067\u6E08\u307F\u3001AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u305F\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u6253\u3061\u76F4\u3059\u3068\u3082\u3046\u4E00\u5EA6\u6D88\u8CBB\u3057\u307E\u3059\uFF08\u4E0A\u3052\u305F\u6DFB\u4ED8 ${id}\
|
|
145
|
+
\u306F\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u3067\u3001\u4E00\u5B9A\u6642\u9593\u5F8C\u306B\u53C2\u7167\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\uFF09\u3002
|
|
146
|
+
`)}throw err}}var scanOperation={name:"scan-order-form",summary:"\u6CE8\u6587\u66F8\u306E\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u6CE8\u6587\u66F8\u756A\u53F7\u3092 AI \u3067\u8AAD\u307F\u53D6\u308B\uFF08AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u30FB--yes \u304C\u8981\u308B\uFF09",usage:"twp estimate scan-order-form --file <\u30D1\u30B9> --yes",description:"\u753B\u9762\u306E\u898B\u7A4D\u30D5\u30A9\u30FC\u30E0\u306E\u300C\u6CE8\u6587\u66F8\u300D\u6B04\u3068\u540C\u3058\u304F\u3001\u30D5\u30A1\u30A4\u30EB\u304B\u3089\u6CE8\u6587\u66F8\u756A\u53F7\u306E\u5019\u88DC\u3092\u8AAD\u307F\u53D6\u308A\u307E\u3059\u3002\u898B\u7A4D\u306F\u5909\u308F\u308A\u307E\u305B\u3093\u3002\n\u8AAD\u307F\u53D6\u3063\u305F\u756A\u53F7\u3092\u898B\u7A4D\u3078\u5165\u308C\u308B\u306A\u3089 twp estimate update <\u898B\u7A4DID> --content-file \u3067 order_no \u3092\u9001\u308A\u307E\u3059\u3002\n\n\
|
|
147
|
+
\u6B21\u306E\u9806\u306B\u9001\u308A\u307E\u3059\u3002\n 0. POST /api/v2/storage/check-upload\uFF08\u30C6\u30CA\u30F3\u30C8\u306E\u5BB9\u91CF\u691C\u67FB\u3002\u8D85\u904E\u306A\u3089\u4F55\u3082\u9001\u3089\u305A\u306B\u6B62\u307E\u308A\u307E\u3059\uFF09\n 1. POST /api/v2/attachments/upload-url\uFF08\u6DFB\u4ED8\u306E\u767A\u884C\uFF09\n 2. \u7F72\u540DURL\u3078 PUT\uFF08\u30D5\u30A1\u30A4\u30EB\u672C\u4F53\u3002TWP \u306E\u8A8D\u8A3C\u60C5\u5831\u306F\u9001\u308A\u307E\u305B\u3093\uFF09\n 3. POST /api/v2/sales/estimates/order-form/scan\uFF08\u8AAD\u307F\u53D6\u308A\u3002\u3053\u3053\u3067 AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\uFF09\n\u4E0A\u3052\u305F\u6DFB\u4ED8\u306F\u3069\u306E\u66F8\u985E\u306B\u3082\u767B\u9332\u3055\u308C\u306A\u3044\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u3067\u3001\u4E00\u5B9A\u6642\u9593\u5F8C\u306B\u53C2\u7167\u3067\u304D\u306A\u304F\u306A\u308A\u307E\u3059\u3002\n\u4E2D\u8EAB\u304C\u62E1\u5F35\u5B50\u3068\u5408\u308F\u306A\u3044\u30D5\u30A1\u30A4\u30EB\u306F\u4F55\u3082\u9001\u3089\u305A\u306B\u6B62\u3081\u307E\u3059\u3002\u8AAD\u307F\u53D6\u308A\u306E\u7D50\u679C\u3092\u53D7\u3051\u53D6\u308C\u306A\u304B\u3063\u305F\u3068\u304D\u306F\u3001\u6253\u3061\u76F4\u3059\u3068\n\u3082\u3046\u4E00\u5EA6\u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u3053\u3068\u304C\u3042\u308A\u307E\u3059\uFF08\u305D\u306E\u65E8\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\uFF09\u3002\n--dry-run \u306F 1 \u306E\u30EA\u30AF\u30A8\u30B9\u30C8\u3060\u3051\u3092\u8868\u793A\u3057\u3001\u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u305B\u3093\u3002\u8CA9\u58F2\u7BA1\u7406\u306E\u6A29\u9650\u304C\u300C\u30E1\u30F3\u30D0\u30FC\u300D\u4EE5\u4E0A\u3067\u3042\u308B\u3053\u3068\u304C\u8981\u308A\u307E\u3059\u3002",
|
|
148
|
+
destructive:true,confirmation:"AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3059\u308B\u64CD\u4F5C",flags:[SCAN_FILE_FLAG],forbidden:SALES_FORBIDDEN,prepare:prepareScan,plan:scanUploadPlan,plannedNotes:input=>[`\u5B9F\u884C\u6642\u306F\u3001\u3053\u306E\u524D\u306B\u5BB9\u91CF\u691C\u67FB\u3092\u9001\u308A\u3001\u3053\u306E\u3042\u3068\u7F72\u540DURL\u3078 ${requireResolved(input,"fileSize")} \u30D0\u30A4\u30C8\u3092 PUT \u3057\u3066\u304B\u3089\u3001POST ${PATH}/order-form/scan \u3067\u8AAD\u307F\u53D6\u308A\u307E\u3059\uFF08\
|
|
149
|
+
\u30C6\u30CA\u30F3\u30C8\u306E AI \u30AF\u30EC\u30B8\u30C3\u30C8\u3092\u6D88\u8CBB\u3057\u307E\u3059\uFF09\u3002`],execute:scanOrderForm,summarize:body=>{const data=scanResult(body);return{order_no:data["order_no"]??null,attachment_id:data["attachment_id"]??null}},raw:scanResult,notes:body=>{const data=scanResult(body);return data["order_no"]===null||data["order_no"]===""?["\u6CE8\u6587\u66F8\u756A\u53F7\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093\u3067\u3057\u305F\uFF08extracted \u306B\u8AAD\u307F\u53D6\u3063\u305F\u5185\u5BB9\u304C\u3042\u308A\u307E\u3059: --output json\uFF09"]:
|
|
150
|
+
["\u8AAD\u307F\u53D6\u3063\u305F\u756A\u53F7\u306F\u5019\u88DC\u3067\u3059\u3002\u898B\u7A4D\u3078\u5165\u308C\u308B\u524D\u306B\u6CE8\u6587\u66F8\u3068\u7167\u3089\u3057\u3066\u304F\u3060\u3055\u3044"]}};var SPLIT_FLAG={name:"--split",summary:"\u90E8\u7F72\u3068\u6309\u5206\u91D1\u984D\uFF08<\u90E8\u7F72>=<\u91D1\u984D>\u3002\u90E8\u7F72\u306F\u540D\u524D\u30FB\u30B3\u30FC\u30C9\u30FBID\u3002\u8907\u6570\u56DE\u6307\u5B9A\u3059\u308B\uFF09",takesValue:true,placeholder:"<\u90E8\u7F72>=<\u91D1\u984D>",
|
|
151
|
+
repeatable:true};var ALLOCATION_COLUMNS=["department_id","amount","percentage","updated_at"];function allocationRows(body){const data=isRecord(body)?body["data"]:void 0;if(!isRecord(body)||body["result"]!==true||!Array.isArray(data)||!data.every(isRecord)){throw new ApiResponseError("\u90E8\u7F72\u6309\u5206\u306E\u5FDC\u7B54\u306B data \u914D\u5217\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002")}return data}function allocationPercentage(amount,total){
|
|
152
|
+
return total>0?Number((amount/total*100).toFixed(4)):0}async function prepareAllocationSet(input,ctx){const id=estimateIdArg(input,"allocation set");const raws=repeatedValues(input,SPLIT_FLAG.name);if(raws.length===0){throw new UsageError("\u6309\u5206\u3092 --split <\u90E8\u7F72>=<\u91D1\u984D> \u30671\u3064\u4EE5\u4E0A\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u6309\u5206\u3092\u3084\u3081\u308B\u306A\u3089 twp estimate allocation delete\uFF09","twp estimate allocation set help")}const parsed=raws.
|
|
153
|
+
map(raw=>{const at=raw.lastIndexOf("=");const ref=at<0?"":raw.slice(0,at).trim();const amountText=at<0?"":raw.slice(at+1).trim();if(ref===""||!/^\d+$/.test(amountText)||!Number.isSafeInteger(Number(amountText))){throw new UsageError(`--split \u306F <\u90E8\u7F72>=<\u91D1\u984D>\uFF08\u91D1\u984D\u306F 0 \u4EE5\u4E0A\u306E\u6574\u6570\u30FB\u5186\uFF09\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${raw}`,"twp estimate allocation set help")}return{ref,amount:Number(amountText)}});const estimate=await ctx.
|
|
154
|
+
resolver.salesRecord("estimate",id,"<\u898B\u7A4DID>");const total=estimate["total"];if(typeof total!=="number")throw new ApiResponseError("\u898B\u7A4D\u306E\u5FDC\u7B54\u306B total \u304C\u3042\u308A\u307E\u305B\u3093\u3002\u63A5\u7D9A\u5148\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002");const splits=[];for(const{ref,amount}of parsed){const department=await ctx.resolver.department(ref,SPLIT_FLAG.name);if(splits.some(s=>s.department_id===department.id)){throw new UsageError(`\u540C\u3058\u90E8\u7F72\
|
|
155
|
+
\u304C2\u56DE\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059: ${department.name}`,"twp estimate allocation set help")}splits.push({department_id:department.id,amount,percentage:allocationPercentage(amount,total)})}const sum=splits.reduce((acc,s)=>acc+s.amount,0);if(sum!==total){throw new UsageError(`\u6309\u5206\u91D1\u984D\u306E\u5408\u8A08\uFF08${sum.toLocaleString("ja-JP")}\u5186\uFF09\u304C\u898B\u7A4D\u91D1\u984D\uFF08${total.toLocaleString("ja-JP")}\u5186\u30FB\u7A0E\u8FBC\uFF09\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093`,
|
|
156
|
+
"\u5408\u8A08\u304C\u898B\u7A4D\u91D1\u984D\u306B\u306A\u308B\u3088\u3046\u306B --split \u306E\u91D1\u984D\u3092\u76F4\u3057\u3066\u304F\u3060\u3055\u3044\uFF08\u30B5\u30FC\u30D0\u3082\u540C\u3058\u6761\u4EF6\u3067\u65AD\u308A\u307E\u3059\uFF09\u3002")}const before=await ctx.resolver.estimateAllocations(id);const names=new Map((await ctx.resolver.departments()).map(d=>[d.id,d.name]));const label=departmentId=>{const key=String(departmentId);return names.get(key)??key};const diff=[`\u6309\u5206\u3092\u5168\u4EF6\u7F6E\u304D\u63DB\u3048\u307E\u3059\uFF08\u898B\u7A4D\
|
|
157
|
+
\u91D1\u984D ${total.toLocaleString("ja-JP")}\u5186\uFF09:`,...before.length===0?[" \u7F6E\u63DB\u524D: \u306A\u3057"]:before.map(row=>` \u7F6E\u63DB\u524D: ${label(row["department_id"])} ${Number(row["amount"]).toLocaleString("ja-JP")}\u5186\uFF08${String(row["percentage"])}%\uFF09`),...splits.map(s=>` \u7F6E\u63DB\u5F8C: ${label(s.department_id)} ${s.amount.toLocaleString("ja-JP")}\u5186\uFF08${s.percentage}%\uFF09`)];return withResolved(input,{body:JSON.stringify({allocations:splits}),diff:JSON.
|
|
158
|
+
stringify(diff)})}var allocationResource={name:"allocation",summary:"\u898B\u7A4D\u306E\u90E8\u7F72\u6309\u5206\uFF08\u4E00\u89A7\u30FB\u5168\u4EF6\u7F6E\u63DB\u30FB\u524A\u9664\uFF09",operations:[{name:"list",summary:"\u898B\u7A4D\u306E\u90E8\u7F72\u6309\u5206\u3092\u8868\u793A\u3059\u308B",usage:"twp estimate allocation list <\u898B\u7A4DID>",description:`GET /api/v2/sales/estimates/{id}/allocations\u3002\u6309\u5206\u304C\u7121\u3051\u308C\u3070\u7A7A\u306E\u4E00\u89A7\u3067\u3059\uFF08\u3053\u306E API \u306F\u30DA\u30FC\u30B8\u30F3\u30B0\u3092\u6301\u3061\u307E\u305B\u3093\uFF09\u3002
|
|
159
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${ALLOCATION_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002\u90E8\u7F72\u540D\u306F twp department list \u3067\u5F15\u3051\u307E\u3059\u3002`,flags:[],forbidden:SALES_FORBIDDEN,plan:input=>({method:"GET",path:`${estimatePath(input,"allocation list")}/allocations`}),summarize:body=>allocationRows(body).map(row=>pick(row,ALLOCATION_COLUMNS)),raw:allocationRows},{name:"set",summary:"\u898B\u7A4D\u306E\u90E8\u7F72\u6309\u5206\u3092\u5168\u4EF6\u7F6E\u304D\u63DB\u3048\u308B\uFF08--yes \u304C\u8981\u308B\uFF09",
|
|
160
|
+
usage:"twp estimate allocation set <\u898B\u7A4DID> --split <\u90E8\u7F72>=<\u91D1\u984D> [--split <\u90E8\u7F72>=<\u91D1\u984D>]... --yes",description:"POST /api/v2/sales/estimates/{id}/allocations \u3067\u6309\u5206\u3092**\u5168\u4EF6\u7F6E\u304D\u63DB\u3048\u307E\u3059**\uFF08\u6307\u5B9A\u3057\u306A\u304B\u3063\u305F\u90E8\u7F72\u306E\u6309\u5206\u306F\u6D88\u3048\u307E\u3059\uFF09\u3002\n\u6309\u5206\u91D1\u984D\u306E\u5408\u8A08\u306F\u898B\u7A4D\u91D1\u984D\uFF08\u7A0E\u8FBC\u306E total\uFF09\u3068\u4E00\u81F4\u3055\u305B\u307E\u3059\u3002\u4E00\u81F4\u3057\u306A\u3051\u308C\u3070\u9001\u308B\u524D\u306B\u6B62\u3081\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u3082\u540C\u3058\u6761\u4EF6\u3067\u65AD\u308A\u307E\u3059\uFF09\u3002\n\u6309\u5206\u5272\u5408\u306F\u753B\u9762\u3068\u540C\u3058\u304F\u300C\u91D1\u984D \xF7 \u898B\u7A4D\u91D1\u984D \xD7 100\u300D\uFF08\u5C0F\u65704\u6841\uFF09\u3067 CLI \u304C\u8A08\u7B97\u3057\u3066\u9001\u308A\u307E\u3059\u3002\n--dry-run \u306F\u7F6E\u63DB\u524D\u3068\u7F6E\u63DB\u5F8C\u306E\u6309\u5206\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\uFF08\u4ECA\u306E\u6309\u5206\u3068\u898B\u7A4D\u91D1\u984D\u3092\u8AAD\u3080\u306E\u3067\u5F80\u5FA9\u3057\u307E\u3059\uFF09\u3002\n \u4F8B: twp estimate allocation set 123 --split \u958B\u767A\u90E8=660000 --split \u55B6\u696D\u90E8=440000 --yes",
|
|
161
|
+
destructive:true,confirmation:"\u90E8\u7F72\u6309\u5206\u3092\u5168\u4EF6\u7F6E\u304D\u63DB\u3048\u308B\u64CD\u4F5C",flags:[SPLIT_FLAG],forbidden:SALES_FORBIDDEN,prepare:prepareAllocationSet,plan:input=>({method:"POST",path:`${estimatePath(input,"allocation set")}/allocations`,body:JSON.parse(requireResolved(input,"body"))}),plannedNotes:input=>JSON.parse(requireResolved(input,"diff")),summarize:body=>allocationRows(body).map(row=>pick(row,ALLOCATION_COLUMNS)),raw:allocationRows,notes:serverMessage},
|
|
162
|
+
{name:"delete",summary:"\u898B\u7A4D\u306E\u90E8\u7F72\u6309\u5206\u3092\u3059\u3079\u3066\u524A\u9664\u3059\u308B\uFF08--yes \u304C\u8981\u308B\uFF09",usage:"twp estimate allocation delete <\u898B\u7A4DID> --yes",description:"DELETE /api/v2/sales/estimates/{id}/allocations \u3067\u3001\u898B\u7A4D\u306E\u6309\u5206\u3092\u3059\u3079\u3066\u6D88\u3057\u307E\u3059\uFF08\u898B\u7A4D\u305D\u306E\u3082\u306E\u306F\u6D88\u3048\u307E\u305B\u3093\uFF09\u3002",destructive:true,flags:[],forbidden:SALES_FORBIDDEN,
|
|
163
|
+
plan:input=>({method:"DELETE",path:`${estimatePath(input,"allocation delete")}/allocations`}),summarize:body=>acknowledgement(body,"\u90E8\u7F72\u6309\u5206\u306E\u524A\u9664"),raw:body=>acknowledgement(body,"\u90E8\u7F72\u6309\u5206\u306E\u524A\u9664")}]};var estimateWriteOperations=[createOperation,updateOperation,deleteOperation,memoOperation,linkInvoiceOperation,depositsOperation,scanOperation];var estimateDomain={name:"estimate",summary:"\u8CA9\u58F2\u7BA1\u7406\u306E\u898B\u7A4D\uFF08\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664\u30FB\u793E\u5185\u30E1\u30E2\u30FB\u8ACB\u6C42\u306E\u7D10\u3065\u3051\u30FB\u95A2\u9023\u5165\u91D1\u30FB\u90E8\u7F72\u6309\u5206\u30FB\u6848\u4EF6\u66F8\u985E\u30FB\u6CE8\u6587\u66F8\u306E\u8AAD\u307F\u53D6\u308A\uFF09",operations:[...estimateReadOperations,...estimateWriteOperations],subresources:[allocationResource,
|
|
164
|
+
estimateCaseDocumentResource]};export{estimateDomain};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
2
|
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
-
import{repeatedValues}from"./chunk-IOGVQVGD.js";import{booleanText,boundedText}from"./chunk-UDPJ2IGK.js";import{INQUIRY_CATEGORIES_PATH}from"./chunk-
|
|
3
|
+
import{repeatedValues}from"./chunk-IOGVQVGD.js";import{booleanText,boundedText}from"./chunk-UDPJ2IGK.js";import{INQUIRY_CATEGORIES_PATH}from"./chunk-ELXDRPDV.js";import"./chunk-IF2K4PM5.js";import{UUID_RE,isSafePathSegment}from"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-II5RVJQN.js";import{requireResolved,singleRef,withResolved}from"./chunk-ZN5EFDH7.js";
|
|
4
4
|
import{isRecord,pick}from"./chunk-ZWVYVS2A.js";import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";var LABEL="\u554F\u3044\u5408\u308F\u305B\u30AB\u30C6\u30B4\u30EA";var LIST_COLUMNS=["id","category_code","title","sort","is_active","notification_user_count"];var GET_COLUMNS=["id","category_code","title","description","sort","is_active","notification_users"];var FORBIDDEN=`\u7BA1\u7406\u8005\u306E\u6A29\u9650\u304C\u5FC5\u8981\u3067\u3059\u3002${LABEL}\u306E\u8A73\u7D30\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u306F\u554F\u3044\u5408\u308F\u305B\u6A5F\u80FD\u306E\u7BA1\u7406\u8005\u3060\u3051\u304C\u884C\u3048\u307E\u3059`;
|
|
5
5
|
var SORT_LAST="last";var CODE_RE=/^[a-zA-Z0-9_-]+$/;var REF_HELP="<\u30AB\u30C6\u30B4\u30EA> \u306F\u30AB\u30C6\u30B4\u30EA\u30B3\u30FC\u30C9\u30FB\u540D\u524D\uFF08title\uFF09\u30FBID \u306E\u3069\u308C\u3067\u3082\u6307\u5B9A\u3067\u304D\u307E\u3059\uFF08\u540D\u524D\u304C\u8907\u6570\u306B\u4E00\u81F4\u3059\u308C\u3070\u5019\u88DC\u3092\u51FA\u3057\u3066\u6B62\u307E\u308A\u307E\u3059\uFF09\u3002\nID \u4EE5\u5916\u306F\u30AB\u30C6\u30B4\u30EA\u4E00\u89A7\uFF08\u65E2\u5B9A10\u5206\u30AD\u30E3\u30C3\u30B7\u30E5\u30FB--refresh \u3067\u53D6\u308A\u76F4\u3057\uFF09\u3068\u7167\u5408\u3057\u307E\u3059\u3002";
|
|
6
6
|
var NOTIFY_HELP="--notify \u306F\u901A\u77E5\u5148\u306E\u30E6\u30FC\u30B6\u30FC\u3067\u3001\u8907\u6570\u56DE\u6307\u5B9A\u3067\u304D\u307E\u3059\u3002\u30E6\u30FC\u30B6\u30FC\u306F ID\u30FB\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u30FB\u793E\u54E1\u756A\u53F7\u30FB\u6C0F\u540D\u3067\u6307\u5B9A\u3067\u304D\u307E\u3059\n\uFF08ID \u4EE5\u5916\u306F\u30C6\u30CA\u30F3\u30C8\u306E\u30E6\u30FC\u30B6\u30FC\u4E00\u89A7\u3068\u7167\u5408\u3057\u307E\u3059\u3002\u7D44\u7E54\u7BA1\u7406\u8005\u3067\u306A\u3044\u5834\u5408\u306F ID \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF09\u3002";
|