@tocca-systems/twp-cli 0.38.0 → 0.40.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 +22 -0
- package/README.md +213 -3
- package/dist/{api-command-BZVUZIOB.js → api-command-7PZCMQO5.js} +4 -4
- package/dist/{app-SNRFIHTQ.js → app-PNHDMD3V.js} +4 -4
- package/dist/{backlog-33ELMSV6.js → backlog-ISEIWKMQ.js} +1 -1
- package/dist/chunk-43OMEGNH.js +94 -0
- package/dist/{chunk-HAIZHSNZ.js → chunk-6ZUVESMI.js} +1 -1
- package/dist/chunk-7ACENLLZ.js +147 -0
- package/dist/{chunk-QBA6THJ5.js → chunk-B7YCG2T7.js} +1 -1
- package/dist/{chunk-IRT7VFG4.js → chunk-BPCK5RAB.js} +1 -1
- package/dist/{chunk-ADQD5OPN.js → chunk-BZ7ULFR3.js} +15 -14
- package/dist/{chunk-ZST7XESB.js → chunk-BZAXQOLB.js} +54 -43
- package/dist/chunk-EOSSFTNG.js +4 -0
- package/dist/chunk-FKS2Z34P.js +70 -0
- package/dist/{chunk-57HDZYSN.js → chunk-H54MGGHB.js} +1 -1
- package/dist/{chunk-TAN5I2DP.js → chunk-I4ARX6NM.js} +1 -1
- package/dist/chunk-L6AHCTQZ.js +8 -0
- package/dist/chunk-PEM3HR7L.js +58 -0
- package/dist/{chunk-VECUCVIY.js → chunk-PKWMJIBM.js} +1 -1
- package/dist/{chunk-BUZKNZ45.js → chunk-UT4FACHN.js} +5 -3
- package/dist/chunk-V3GQEUYI.js +16 -0
- package/dist/{chunk-FEOST3GF.js → chunk-VK5T7ULK.js} +1 -1
- package/dist/{chunk-LS7P3IWP.js → chunk-WV3ZKUF4.js} +25 -23
- package/dist/{chunk-OHIERIBW.js → chunk-X5IVIOGL.js} +1 -1
- package/dist/chunk-XN5TUZOT.js +48 -0
- package/dist/cli.js +247 -8
- package/dist/{commands-7PGS2PTH.js → commands-PG5VVBKO.js} +1 -1
- package/dist/company-4Z4JJVA7.js +71 -0
- package/dist/{completion-3X7HPIPM.js → completion-EFGQJDIU.js} +1 -1
- package/dist/contract-BQ76SGWV.js +86 -0
- package/dist/{department-PVUB3ZPI.js → department-YHZRSWLB.js} +1 -1
- package/dist/deposit-U4AVQH5O.js +4 -0
- package/dist/estimate-U2K7DPGH.js +173 -0
- package/dist/{inquiry-CUK2LWQK.js → inquiry-5D4U6CLU.js} +1 -1
- package/dist/invoice-2VLK2BFV.js +210 -0
- package/dist/{job-title-CZRZFVUU.js → job-title-G7MIYWVA.js} +1 -1
- package/dist/{knowledge-XYLG42MB.js → knowledge-7QDC775Q.js} +1 -1
- package/dist/{leave-DL3JPO5I.js → leave-GHFJOGNC.js} +1 -1
- package/dist/{media-CMNIZUPY.js → media-XO6X3UQT.js} +1 -1
- package/dist/{notification-ULATH7AC.js → notification-SUSR5NGQ.js} +1 -1
- package/dist/{oneshot-RYWJ6ECA.js → oneshot-UGYF2PLB.js} +1 -1
- package/dist/{position-ICOGEMRG.js → position-UY33ETLX.js} +1 -1
- package/dist/{prospect-MB2OP7L2.js → prospect-G426O6XL.js} +1 -1
- package/dist/purchase-3GGAQRE6.js +214 -0
- package/dist/receivable-TNH4KCUO.js +4 -0
- package/dist/{registry-XBYUPKQQ.js → registry-ODJB7AS3.js} +1 -1
- package/dist/{render-MTSSHDAZ.js → render-F4MRN2FQ.js} +1 -1
- package/dist/{report-JL7UJB4G.js → report-UC2PCK7B.js} +1 -1
- package/dist/run-GDYEOQQK.js +4 -0
- package/dist/sales-master-ORLR5VK4.js +71 -0
- package/dist/sales-numbering-MBFKVR2C.js +4 -0
- package/dist/supplier-payment-AFJ7G6AP.js +110 -0
- package/dist/{task-CMCHUX2D.js → task-S3BBBELE.js} +2 -2
- package/dist/{user-5JXFO56G.js → user-O7H5PD4N.js} +1 -1
- package/dist/{workflow-XBUMFS2G.js → workflow-2YL2OF2Y.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/run-6JRHCC67.js +0 -4
- package/dist/sales-GJKW7VVG.js +0 -4
|
@@ -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-BZ7ULFR3.js";import{repeatedValues}from"./chunk-IOGVQVGD.js";import{isoDate}from"./chunk-UDPJ2IGK.js";import{SALES_CONTRACTS_PATH,isExactNumericId,resolveNamed}from"./chunk-BZAXQOLB.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-BPCK5RAB.js";import"./chunk-UDPJ2IGK.js";import{DEPARTMENTS_PATH}from"./chunk-BZAXQOLB.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,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic}from"./chunk-7ACENLLZ.js";import"./chunk-I6DWJXPC.js";import"./chunk-HGTG5XQ7.js";import"./chunk-BZ7ULFR3.js";import"./chunk-IOGVQVGD.js";import"./chunk-UDPJ2IGK.js";import"./chunk-BZAXQOLB.js";import"./chunk-IF2K4PM5.js";import"./chunk-GMBJTG6A.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";
|
|
4
|
+
import"./chunk-QQRJLH6B.js";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,excerpt,parseAllocationRows,parsePlanBody,planSkeleton,salesAdminForbidden,sendAtomic};
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
import { createRequire as __twpCreateRequire } from 'node:module';
|
|
2
|
+
const require = __twpCreateRequire(import.meta.url);
|
|
3
|
+
import{estimateCaseDocumentResource}from"./chunk-PEM3HR7L.js";import{estimatePdfOperation}from"./chunk-V3GQEUYI.js";import{estimateNoRuleResource}from"./chunk-FKS2Z34P.js";import{salesAdminForbidden}from"./chunk-7ACENLLZ.js";import"./chunk-43OMEGNH.js";import"./chunk-H54MGGHB.js";import"./chunk-BPCK5RAB.js";import{contentTypeFor,inspectLocalFile,issued}from"./chunk-PKWMJIBM.js";import{checkUploadQuota}from"./chunk-DDKZ5IPT.js";import"./chunk-I6DWJXPC.js";
|
|
4
|
+
import{charCount,readBody}from"./chunk-HGTG5XQ7.js";import{estimateReadOperations,featureLicenseGuidance,licenseForbidden}from"./chunk-BZ7ULFR3.js";import{repeatedValues}from"./chunk-IOGVQVGD.js";import"./chunk-UDPJ2IGK.js";import{SALES_ESTIMATES_PATH,SALES_ESTIMATE_FORMATS_PATH,SALES_ESTIMATE_NO_RULES_PATH,SALES_INVOICE_NO_RULES_PATH,isExactNumericId}from"./chunk-BZAXQOLB.js";import{ApiError}from"./chunk-IF2K4PM5.js";import{isSafePathSegment}from"./chunk-GMBJTG6A.js";
|
|
5
|
+
import"./chunk-XNLIEUAW.js";import"./chunk-J7QYPKVK.js";import"./chunk-4VZKNEVN.js";import"./chunk-QQRJLH6B.js";import"./chunk-NHYMHCAT.js";import"./chunk-GY7KI5E5.js";import{LIST_PAGING_HELP,PAGE_NUMBER_LIST_FLAGS,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";
|
|
6
|
+
import{ApiResponseError,UsageError}from"./chunk-7WSNIXTQ.js";import"./chunk-RZVI6PMW.js";import"./chunk-VSJBJXZO.js";var PATH=SALES_ESTIMATE_FORMATS_PATH;var LABEL="\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8";var CONTENT_KEYS=["format_name","start_date","end_date","default_unit","default_tax_rate","default_business_place_id","default_seal_impression_id","default_estimate_no_id","default_invoice_no_id","default_payee_id","default_terms","default_invoice_memo","default_purchase_terms","default_purchase_acceptance_terms","estimate_workflow_id","contract_workflow_id","invoice_workflow_id","purchase_workflow_\
|
|
7
|
+
id","description","estimate_manage_content","contract_manage_content","invoice_manage_content","sort_order"];var FIELD_NOTES=[["format_name","\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u540D\uFF08255 \u6587\u5B57\u307E\u3067\uFF09"],["default_unit","\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u660E\u7D30\u306E\u65E2\u5B9A\u306E\u5358\u4F4D\uFF08set / item / unit / hour / day / month / person / person_month / person_day\uFF09"],["default_tax_rate",'\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u65E2\u5B9A\u306E\u7A0E\u7387\uFF08"10" / "8" / \
|
|
8
|
+
"0"\uFF09'],["default_estimate_no_id","\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB\u306E ID\uFF08\u6574\u6570\u3002twp estimate no-rule list \u306E id\uFF09"],["default_invoice_no_id","\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB\u306E ID\uFF08\u6574\u6570\u3002twp invoice no-rule list \u306E id\uFF09"],["start_date / end_date","\u6709\u52B9\u671F\u9593\uFF08YYYY-MM-DD\u3002\u7D42\u4E86\u306F\u958B\u59CB\u4EE5\u964D\u3002null \u3067\u671F\u9650\u306A\u3057\uFF09"],
|
|
9
|
+
["default_business_place_id / default_seal_impression_id / default_payee_id","\u65E2\u5B9A\u306E\u4E8B\u696D\u6240\u30FB\u5370\u5F71\u30FB\u632F\u8FBC\u5148\u306E ID\uFF08\u6574\u6570\u3002twp business-place / seal-impression / payee list \u306E id\u3002null \u3067\u672A\u8A2D\u5B9A\uFF09"],["default_terms / default_invoice_memo","\u898B\u7A4D\u306E\u53D6\u5F15\u6761\u4EF6\u30FB\u8ACB\u6C42\u306E\u5099\u8003\u306E\u65E2\u5B9A\u306E\u6587\u9762"],["default_purchase_terms / default_purchase_accept\
|
|
10
|
+
ance_terms","\u6CE8\u6587\u66F8\u30FB\u6CE8\u6587\u8ACB\u66F8\u306E PDF \u306E\u5099\u8003\u306E\u65E2\u5B9A\u306E\u6587\u9762"],["estimate_workflow_id / contract_workflow_id / invoice_workflow_id / purchase_workflow_id","\u898B\u7A4D\u30FB\u5951\u7D04\u30FB\u8ACB\u6C42\u30FB\u4ED5\u5165\u306E\u627F\u8A8D\u30EB\u30FC\u30C8\uFF08\u30EF\u30FC\u30AF\u30D5\u30ED\u30FC\u306E ID\u3002twp workflow list \u306E id\u3002null \u3067\u627F\u8A8D\u306A\u3057\uFF09"],["description","\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E\u8AAC\u660E"],
|
|
11
|
+
["estimate_manage_content / contract_manage_content / invoice_manage_content","\u898B\u7A4D\u30FB\u5951\u7D04\u30FB\u8ACB\u6C42\u306E\u6DFB\u4ED8\u66F8\u985E\u30FB\u96C6\u8A08\u9805\u76EE\u306E\u5B9A\u7FA9\u306E\u914D\u5217\uFF08\u753B\u9762\u304C\u4F5C\u308B\u5F62\u3002get \u306E\u5024\u3092\u5199\u3057\u3066\u76F4\u3059\u306E\u304C\u78BA\u5B9F\u3067\u3059\uFF09"],["sort_order","\u8868\u793A\u9806\uFF080 \u4EE5\u4E0A\u306E\u6574\u6570\u3002null \u306F\u9001\u308C\u307E\u305B\u3093\uFF09"]];var CONTENT_MAX_CHARS=1e6;
|
|
12
|
+
var SORT_MAX=2147483647;var LIST_COLUMNS=["id","format_name","default_unit","default_tax_rate","default_estimate_no_id","default_invoice_no_id","start_date","end_date","sort_order"];var GET_COLUMNS=[...LIST_COLUMNS,"default_business_place_id","default_seal_impression_id","default_payee_id","estimate_workflow_id","contract_workflow_id","invoice_workflow_id","purchase_workflow_id","description","updated_at"];var MEMBER_FORBIDDEN=licenseForbidden(featureLicenseGuidance("\u8CA9\u58F2\u7BA1\u7406"));
|
|
13
|
+
var ADMIN_FORBIDDEN=salesAdminForbidden(`${LABEL}\u306E\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664`);var CONTENT_FILE_FLAG={name:"--content-file",summary:"\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\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\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u5909\u3048\u306A\u3044\uFF09",
|
|
14
|
+
takesValue:false};var ABOUT="\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u3001\u898B\u7A4D\u30FB\u5951\u7D04\u30FB\u8ACB\u6C42\u30FB\u4ED5\u5165\u3092\u4F5C\u308B\u3068\u304D\u306E\u65E2\u5B9A\u5024\uFF08\u5358\u4F4D\u30FB\u7A0E\u7387\u30FB\u4E8B\u696D\u6240\u30FB\u5370\u5F71\u30FB\u632F\u8FBC\u5148\u30FB\u756A\u53F7\u30EB\u30FC\u30EB\u30FB\u53D6\u5F15\u6761\u4EF6\u30FB\u5099\u8003\u30FB\u627F\u8A8D\u30EB\u30FC\u30C8\u30FB\n\u6DFB\u4ED8\u66F8\u985E\u3068\u96C6\u8A08\u9805\u76EE\uFF09\u306E\u7D44\u3067\u3059\u3002\u5909\u3048\u308B\u3068\u3001\u3053\u308C\u4EE5\u964D\u306B\u3053\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3067\u4F5C\u308B\u66F8\u985E\u306B\u52B9\u304D\u307E\u3059\u3002";
|
|
15
|
+
var CONTENT_HELP="\u5185\u5BB9\uFF08--content-file\uFF09\u306F JSON \u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u3067\u3059\u3002\u30AD\u30FC\u306F API \u306E\u9805\u76EE\u540D\uFF08format_name / default_unit \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\uFF09\u306F\u3001\u9001\u308B\u524D\u306B\u3059\u3079\u3066\u6319\u3052\u3066\u6B62\u3081\u307E\u3059\uFF08\u30B5\u30FC\u30D0\u306F\u77E5\u3089\u306A\u3044\u30AD\u30FC\u3092\u9ED9\u3063\u3066\u6368\u3066\u308B\u305F\u3081\uFF09\u3002\n \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 estimate format ${op} help`}function text(value){return typeof value==="string"||typeof value==="number"?String(value):""}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 recordOf(body,what=LABEL){const data=envelope(body,what)["\
|
|
17
|
+
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`);return data}function serverMessage(body){const message=isRecord(body)?body["message"]:void 0;return typeof message==="string"&&message!==""?[message]:[]}function idArg(input,op){const[raw,...rest]=input.args;const id=raw?.trim()??"";if(id==="")throw new UsageError(
|
|
18
|
+
`${LABEL}\u306E ID \u3092\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,usageOf(op));if(rest.length>0)throw new UsageError(`\u4F59\u5206\u306A\u5F15\u6570\u304C\u3042\u308A\u307E\u3059: ${rest.join(" ")}`,usageOf(op));if(!isExactNumericId(id))throw new UsageError(`${LABEL}\u306E ID \u306F\u5148\u982D\u306B 0 \u3092\u4ED8\u3051\u306A\u3044\u6570\u5B57\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044: ${id}`,"ID \u306F twp estimate format list \u306E id \u5217\u3067\u3059\u3002");return id}
|
|
19
|
+
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.args.join(" ")}`,usageOf(op))}function describe(format){return`ID ${text(format["id"])}\u300C${text(format["format_name"])}\u300D`}function parseFormatContent(textBody,source,mode){let parsed;try{parsed=JSON.parse(textBody)}catch{throw new UsageError(`${LABEL}\u306E\u5185\u5BB9\u304C JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093\uFF08${source}\
|
|
20
|
+
\uFF09`,CONTENT_HELP)}if(!isRecord(parsed))throw new UsageError(`${LABEL}\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 unknownKeys=Object.keys(parsed).filter(key=>!CONTENT_KEYS.includes(key));if(unknownKeys.length>0){throw new UsageError(`${LABEL}\u306E\u5185\u5BB9\u306B\u9001\u308C\u306A\u3044\u9805\u76EE\u304C\u3042\u308A\u307E\u3059\uFF08${source}\uFF09: ${unknownKeys.join(", ")}`,
|
|
21
|
+
`\u9001\u308C\u308B\u9805\u76EE\u306F twp estimate format ${mode} --generate-cli-skeleton \u306E\u6CE8\u8A18\u306B\u4E26\u3073\u307E\u3059\u3002`)}if("sort_order"in parsed){const sort=parsed["sort_order"];if(typeof sort!=="number"||!Number.isSafeInteger(sort)||sort<0||sort>SORT_MAX){throw new UsageError(`sort_order \u306F 0 \u4EE5\u4E0A ${SORT_MAX} \u4EE5\u4E0B\u306E\u6574\u6570\u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\uFF08null \u306F\u9001\u308C\u307E\u305B\u3093\uFF09\uFF08${source}\
|
|
22
|
+
\uFF09`,"\u8868\u793A\u9806\u3092\u5909\u3048\u306A\u3044\u306A\u3089 sort_order \u306E\u30AD\u30FC\u3054\u3068\u6D88\u3057\u3066\u304F\u3060\u3055\u3044\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 fieldNotes(){return["\u9001\u308C\u308B\u9805\u76EE\u3068\u5024\u306E\u6C7A\u307E\u308A\uFF08\u30B5\u30FC\u30D0\u306E\u691C\u67FB\u306E\u5199\u3057\uFF09:",
|
|
23
|
+
...FIELD_NOTES.map(([key,note])=>` ${key}: ${note}`)]}function rulesOf(body,what){const list=isRecord(body)?body["list"]:void 0;if(!isRecord(body)||body["result"]!==true||!Array.isArray(list)||!list.every(isRecord)){throw new ApiResponseError(`${what}\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 RULES_QUERY={page_limit:100,page_no:1};function onlyId(rules,body){
|
|
24
|
+
const pageSum=isRecord(body)?body["page_sum"]:void 0;return rules.length===1&&!(typeof pageSum==="number"&&pageSum>1)?rules[0]?.["id"]:null}function createSkeleton(source){const estimate=rulesOf(source.estimateRules,"\u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB");const invoice=rulesOf(source.invoiceRules,"\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB");return{format_name:"",default_unit:"set",default_tax_rate:"10",default_estimate_no_id:onlyId(estimate,source.estimateRules),default_invoice_no_id:onlyId(
|
|
25
|
+
invoice,source.invoiceRules),default_business_place_id:null,default_seal_impression_id:null,default_payee_id:null,default_terms:null,default_invoice_memo:null,description:null,sort_order:0}}function ruleChoices(label,key,list,rules,body){if(rules.length===0)return[`${label}\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u5148\u306B twp ${list} no-rule create \u3067\u4F5C\u3063\u3066\u304B\u3089 ${key} \u306B\u5165\u308C\u3066\u304F\u3060\u3055\u3044`];if(rules.length===1&&onlyId(rules,body)!==null)return[
|
|
26
|
+
`${label}\u306F\u300C${text(rules[0]?.["rule_name"])}\u300D\u3060\u3051\u306A\u306E\u3067\u3001\u305D\u308C\u3092 ${key} \u306B\u5165\u308C\u307E\u3057\u305F`];const pageSum=isRecord(body)?body["page_sum"]:void 0;return[`${key} \u306B\u6B21\u306E\u3069\u308C\u304B\u306E id \u3092\u5165\u308C\u3066\u304F\u3060\u3055\u3044\uFF08${label}\uFF09:`,...rules.map(row=>` ${text(row["id"])}: ${text(row["rule_name"])}`),...typeof pageSum==="number"&&pageSum>1?[` \uFF08\u5148\u982D ${rules.length} \u4EF6\u3060\u3051\u3092\u51FA\u3057\u3066\
|
|
27
|
+
\u3044\u307E\u3059\u3002\u6B8B\u308A\u306F twp ${list} no-rule list --all\uFF09`]:[]]}function createSkeletonNotes(source){return[...ruleChoices("\u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB","default_estimate_no_id","estimate",rulesOf(source.estimateRules,"\u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB"),source.estimateRules),...ruleChoices("\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB","default_invoice_no_id","invoice",rulesOf(source.invoiceRules,"\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB"),source.invoiceRules),
|
|
28
|
+
"format_name \u3092\u57CB\u3081\u3066\u304B\u3089 twp estimate format create --content-file <\u30D1\u30B9> \u3067\u4F5C\u308A\u307E\u3059\uFF08\u4F7F\u308F\u306A\u3044\u30AD\u30FC\u306F\u6D88\u3057\u3066\u69CB\u3044\u307E\u305B\u3093\uFF09",...fieldNotes()]}function updateSkeleton(format){const out={};for(const key of CONTENT_KEYS){if(key in format)out[key]=format[key]}return out}var listPaging=pageNumberPaging({label:`${LABEL}\u4E00\u89A7`});function listRows(body){envelope(body,`${LABEL}\u4E00\u89A7`);
|
|
29
|
+
return listPaging.items(body)}var listOperation={name:"list",summary:`${LABEL}\u3092\u4E00\u89A7\u3059\u308B\uFF08\u8868\u793A\u9806\uFF09`,usage:"twp estimate format list [--keyword <\u8A9E>] [--all] [--limit <\u4EF6\u6570>]",description:`${ABOUT}
|
|
30
|
+
|
|
31
|
+
--keyword \u306F\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u540D\u3068\u8AAC\u660E\u306E\u90E8\u5206\u4E00\u81F4\u3067\u3059\u3002
|
|
32
|
+
--output json \u306F API \u304C\u8FD4\u3059\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\uFF08\u6DFB\u4ED8\u66F8\u985E\u30FB\u96C6\u8A08\u9805\u76EE\u306E\u5B9A\u7FA9\u3092\u542B\u3080\uFF09\u3092\u51FA\u3057\u307E\u3059\u3002
|
|
33
|
+
--output table / text / tsv \u306F\u8981\u7D04\u5217\uFF08${LIST_COLUMNS.join(" / ")}\uFF09\u3067\u3059\u3002
|
|
34
|
+
|
|
35
|
+
`+LIST_PAGING_HELP+"\n \u26A0 \u3053\u306E\u4E00\u89A7\u306F\u30DA\u30FC\u30B8\u756A\u53F7\u3067\u4F4D\u7F6E\u3092\u6307\u5B9A\u3057\u307E\u3059\uFF08--cursor \u306F\u30DA\u30FC\u30B8\u756A\u53F7\u3067\u3059\uFF09\u3002\n \u4E26\u3073\u306F\u8868\u793A\u9806\uFF08sort_order\uFF09\u306E\u5C0F\u3055\u3044\u9806\u30FB\u540C\u3058\u306A\u3089 ID \u306E\u9806\u306B\u30B5\u30FC\u30D0\u304C\u56FA\u5B9A\u3057\u3066\u3044\u307E\u3059\u3002\u8FBF\u3063\u3066\u3044\u308B\u6700\u4E2D\u306B\u30C7\u30FC\u30BF\u304C\u5897\u6E1B\u3059\u308B\u3068\u3001\u53D6\u308A\u3053\u307C\u3057\u30FB\u91CD\u8907\u304C\u8D77\u3053\u308A\u5F97\u307E\u3059\u3002",
|
|
36
|
+
flags:[...PAGE_NUMBER_LIST_FLAGS,{name:"--keyword",summary:"\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u540D\u30FB\u8AAC\u660E\u306E\u90E8\u5206\u4E00\u81F4\u3067\u7D5E\u308A\u8FBC\u3080",takesValue:true,placeholder:"<\u8A9E>"}],paging:listPaging,forbidden:MEMBER_FORBIDDEN,prepare:async input=>{noArgs(input,"list");pageNumberQuery(input);return input},plan:input=>{const{page_no,page_limit}=pageNumberQuery(input);return{method:"GET",path:PATH,query:{keyword:nonEmpty(input.flags,"--keyword"),page_limit,
|
|
37
|
+
page_no}}},summarize:body=>listRows(body).map(row=>pick(row,LIST_COLUMNS)),raw:listRows,notes:body=>{const sum=isRecord(body)?body["sum"]:void 0;return[...pageRangeNotes(body),...typeof sum==="number"?[`\u8A72\u5F53 ${sum} \u4EF6`]:[]]}};var getOperation={name:"get",summary:`${LABEL}1\u4EF6\u306E\u8A73\u7D30\u3092\u8868\u793A\u3059\u308B`,usage:"twp estimate format get <\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8ID>",description:"ID \u306F twp estimate format list \u306E id \u5217\u306E\u6570\u5B57\u3067\u3059\u3002--output json \u306F\u6DFB\u4ED8\u66F8\u985E\u30FB\u96C6\u8A08\u9805\u76EE\u306E\u5B9A\u7FA9\u3068\u5099\u8003\u306E\
|
|
38
|
+
\u6587\u9762\u3092\u542B\u3080\u5168\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u51FA\u3057\u307E\u3059\u3002",flags:[],forbidden:MEMBER_FORBIDDEN,plan:input=>({method:"GET",path:`${PATH}/${idArg(input,"get")}`}),summarize:body=>pick(recordOf(body),GET_COLUMNS),raw:body=>recordOf(body)};function writeResult(value){if(!isRecord(value)||typeof value["skeleton"]!=="boolean")throw new Error("\u5185\u90E8\u30A8\u30E9\u30FC: estimate format \u306E\u5FDC\u7B54\u306B\u5370\u304C\u3042\u308A\u307E\u305B\u3093\uFF08execute \u306E\u914D\u7DDA\u6F0F\u308C\uFF09");
|
|
39
|
+
return value}function contentOf(input){return JSON.parse(requireResolved(input,"body"))}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(wantsSkeleton)return input;const body=await readBody(input,{flag:"--content",fileFlag:CONTENT_FILE_FLAG.
|
|
40
|
+
name,label:`${LABEL}\u306E\u5185\u5BB9`,maxChars:CONTENT_MAX_CHARS,usage:usageOf(mode)});if(body===void 0){throw new UsageError(`${LABEL}\u306E\u5185\u5BB9\u3092 --content-file <\u30D1\u30B9> \u3067\u6307\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044`,`\u3072\u306A\u5F62\u306F twp estimate format ${mode}${mode==="update"?" <\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8ID>":""} --generate-cli-skeleton \u3067\u51FA\u305B\u307E\u3059\u3002`)}const content=parseFormatContent(body,`${CONTENT_FILE_FLAG.name} ${input.
|
|
41
|
+
flags.get(CONTENT_FILE_FLAG.name)??""}`,mode);return withResolved(input,{body:JSON.stringify(content)})}var ESTIMATE_RULES_PLAN={method:"GET",path:SALES_ESTIMATE_NO_RULES_PATH,query:RULES_QUERY};var INVOICE_RULES_PLAN={method:"GET",path:SALES_INVOICE_NO_RULES_PATH,query:RULES_QUERY};async function executeCreate(input,ctx){if(!input.flags.has(SKELETON_FLAG.name))return{skeleton:false,body:await ctx.send({method:"POST",path:PATH,body:contentOf(input)})};const source={estimateRules:await ctx.send(ESTIMATE_RULES_PLAN),
|
|
42
|
+
invoiceRules:await ctx.send(INVOICE_RULES_PLAN)};return{skeleton:true,body:source}}var createOperation={name:"create",summary:`${LABEL}\u3092\u4F5C\u6210\u3059\u308B\uFF08\u5185\u5BB9\u306F --content-file \u306E JSON\u30FB\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\uFF09`,usage:"twp estimate format create (--content-file <\u30D1\u30B9> | --generate-cli-skeleton)",description:`POST /api/v2/sales/estimate-formats\u3002\u8CA9\u58F2\u7BA1\u7406\u306E\u300C\u7BA1\u7406\u8005\u300D\u3060\u3051\u304C\u4F7F\u3048\u307E\u3059\u3002
|
|
43
|
+
|
|
44
|
+
${ABOUT}
|
|
45
|
+
|
|
46
|
+
${CONTENT_HELP}
|
|
47
|
+
|
|
48
|
+
--generate-cli-skeleton \u306F\u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB\u30FB\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB\u306E\u4E00\u89A7\u3092\u8AAD\u307F\u3001\u3072\u306A\u5F62\u3092\u6A19\u6E96\u51FA\u529B\u3078\u51FA\u3057\u3066\u7D42\u4E86\u3057\u307E\u3059\uFF08\u30EB\u30FC\u30EB\u304C1\u4EF6\u3060\u3051\u306A\u3089\u305D\u306E ID \u3092\u5165\u308C\u307E\u3059\uFF09\u3002
|
|
49
|
+
\u4F8B: twp estimate format create --generate-cli-skeleton --output json > format.json`,flags:[CONTENT_FILE_FLAG,SKELETON_FLAG],forbidden:ADMIN_FORBIDDEN,prepare:async input=>{noArgs(input,"create");return prepareContent(input,"create")},plan:input=>input.flags.has(SKELETON_FLAG.name)?ESTIMATE_RULES_PLAN:{method:"POST",path:PATH,body:contentOf(input)},plannedNotes:input=>input.flags.has(SKELETON_FLAG.name)?["\u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB\u30FB\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB\u306E\u4E00\u89A7\u3092\u8AAD\u3080\u3060\u3051\u3067\u3001\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306F\u4F5C\u308A\u307E\u305B\u3093\uFF08\u5B9F\u884C\u6642\u306F\u8ACB\u6C42\u756A\u53F7\u30EB\u30FC\u30EB\u306E\u4E00\u89A7\u3082\u8AAD\u307F\u307E\u3059\uFF09"]:
|
|
50
|
+
[],execute:executeCreate,summarize(value){const result=writeResult(value);return result.skeleton?createSkeleton(result.body):pick(recordOf(result.body,`${LABEL}\u306E\u4F5C\u6210`),GET_COLUMNS)},raw(value){const result=writeResult(value);return result.skeleton?createSkeleton(result.body):recordOf(result.body,`${LABEL}\u306E\u4F5C\u6210`)},notes(value){const result=writeResult(value);return result.skeleton?createSkeletonNotes(result.body):serverMessage(result.body)}};function updatePlan(input){const target=`${PATH}\
|
|
51
|
+
/${idArg(input,"update")}`;return input.flags.has(SKELETON_FLAG.name)?{method:"GET",path:target}:{method:"PUT",path:target,body:contentOf(input)}}var updateOperation={name:"update",summary:`${LABEL}\u3092\u66F8\u304D\u63DB\u3048\u308B\uFF08\u30D5\u30A1\u30A4\u30EB\u306B\u66F8\u3044\u305F\u9805\u76EE\u3060\u3051\u3092\u9001\u308B\u30FB\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\uFF09`,usage:"twp estimate format update <\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8ID> (--content-file <\u30D1\u30B9> | --generate-cli-skeleton)",
|
|
52
|
+
description:`PUT /api/v2/sales/estimate-formats/{id}\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
|
|
53
|
+
*_manage_content\uFF08\u914D\u5217\uFF09\u306F\u3001\u9001\u308B\u3068\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\u3002\u9001\u308B\u524D\u306B\u4ECA\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u8AAD\u307F\u3001\u5BFE\u8C61\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\uFF08--dry-run \u3067\u3082\u51FA\u307E\u3059\uFF09\u3002
|
|
54
|
+
|
|
55
|
+
${ABOUT}
|
|
56
|
+
|
|
57
|
+
${CONTENT_HELP}
|
|
58
|
+
|
|
59
|
+
--generate-cli-skeleton \u306F\u4ECA\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u304B\u3089\u66F8\u304D\u8FBC\u3081\u308B\u30AD\u30FC\u3060\u3051\u3092\u6B8B\u3057\u3066\u51FA\u3057\u307E\u3059\u3002`,flags:[CONTENT_FILE_FLAG,SKELETON_FLAG],forbidden:ADMIN_FORBIDDEN,prepare:async(input,ctx)=>{const id=idArg(input,"update");const prepared=await prepareContent(input,"update");if(input.flags.has(SKELETON_FLAG.name))return prepared;return withResolved(prepared,{current:JSON.stringify(await ctx.resolver.
|
|
60
|
+
salesRecord("estimate-format",id,"<\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8ID>"))})},plan:updatePlan,plannedNotes:input=>{if(input.flags.has(SKELETON_FLAG.name))return["\u4ECA\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u8AAD\u3080\u3060\u3051\u3067\u3001\u66F8\u304D\u63DB\u3048\u307E\u305B\u3093"];const content=contentOf(input);const replaced=["estimate_manage_content","contract_manage_content","invoice_manage_content"].filter(key=>key in content);return[`\u66F8\u304D\u63DB\u3048\u308B${LABEL}:\
|
|
61
|
+
${describe(JSON.parse(requireResolved(input,"current")))}\u30FB\u9001\u308B\u9805\u76EE: ${Object.keys(content).join(", ")}`,...replaced.length>0?[`${replaced.join(" / ")} \u306F\u4E38\u3054\u3068\u7F6E\u304D\u63DB\u308F\u308A\u307E\u3059\uFF08\u9001\u3063\u305F\u8981\u7D20\u3060\u3051\u304C\u6B8B\u308A\u307E\u3059\uFF09`]:[]]},execute:async(input,ctx)=>({skeleton:input.flags.has(SKELETON_FLAG.name),body:await ctx.send(updatePlan(input))}),summarize(value){const result=writeResult(value);return result.
|
|
62
|
+
skeleton?updateSkeleton(recordOf(result.body)):pick(recordOf(result.body,`${LABEL}\u306E\u66F4\u65B0`),GET_COLUMNS)},raw(value){const result=writeResult(value);return result.skeleton?updateSkeleton(recordOf(result.body)):recordOf(result.body,`${LABEL}\u306E\u66F4\u65B0`)},notes(value){const result=writeResult(value);return result.skeleton?["\u4ECA\u306E\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\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 --content-file \u3067\u9001\u3063\u3066\u304F\u3060\u3055\u3044",
|
|
63
|
+
...fieldNotes()]:serverMessage(result.body)}};var deleteOperation={name:"delete",summary:`${LABEL}\u3092\u524A\u9664\u3059\u308B\uFF08\u8CA9\u58F2\u7BA1\u7406\u306E\u7BA1\u7406\u8005\u30FB--yes \u304C\u8981\u308B\uFF09`,usage:"twp estimate format delete <\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8ID> --yes",description:"DELETE /api/v2/sales/estimate-formats/{id}\uFF08\u8AD6\u7406\u524A\u9664\uFF09\u3002\u898B\u7A4D\u30FB\u8ACB\u6C42\u30FB\u81EA\u52D5\u8ACB\u6C42\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u4F7F\u3063\u3066\u3044\u3066\u3082\u3001\u30B5\u30FC\u30D0\u306F\u524A\u9664\u3092\u65AD\u308A\u307E\u305B\u3093\n\uFF08CLI \u3082\u4F7F\u7528\u4E2D\u304B\u3069\u3046\u304B\u3092\u78BA\u304B\u3081\u307E\u305B\u3093\uFF09\u3002\u26A0\uFE0F \u81EA\u52D5\u8ACB\u6C42\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u304C\u4F7F\u3063\u3066\u3044\u308B\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u6D88\u3059\u3068\u3001\u4EE5\u5F8C\u305D\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u81EA\u52D5\u767A\u884C\u306F\u6BCE\u56DE\u5931\u6557\u3057\u307E\u3059\n\uFF08twp invoice auto-templ\
|
|
64
|
+
ate list \u306E estimate_format_name \u3067\u78BA\u304B\u3081\u3066\u304F\u3060\u3055\u3044\uFF09\u3002\u9001\u308B\u524D\u306B\u5BFE\u8C61\u3092 stderr \u306B\u51FA\u3057\u307E\u3059\uFF08--dry-run \u3067\u3082\u51FA\u307E\u3059\uFF09\u3002",destructive:true,flags:[],forbidden:ADMIN_FORBIDDEN,prepare:async(input,ctx)=>withResolved(input,{current:JSON.stringify(await ctx.resolver.salesRecord("estimate-format",idArg(input,"delete"),"<\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8ID>"))}),plan:input=>({method:"\
|
|
65
|
+
DELETE",path:`${PATH}/${idArg(input,"delete")}`}),plannedNotes:input=>[`\u524A\u9664\u3059\u308B${LABEL}: ${describe(JSON.parse(requireResolved(input,"current")))}`],summarize:body=>acknowledgement(body,`${LABEL}\u524A\u9664`),raw:body=>acknowledgement(body,`${LABEL}\u524A\u9664`)};var estimateFormatResource={name:"format",summary:`${LABEL}\uFF08\u898B\u7A4D\u30FB\u5951\u7D04\u30FB\u8ACB\u6C42\u30FB\u4ED5\u5165\u3092\u4F5C\u308B\u3068\u304D\u306E\u65E2\u5B9A\u5024\u306E\u7D44\u3002\u4E00\u89A7\u30FB\u8A73\u7D30\u30FB\u4F5C\u6210\u30FB\u66F4\u65B0\u30FB\u524A\u9664\uFF09`,
|
|
66
|
+
operations:[listOperation,getOperation,createOperation,updateOperation,deleteOperation]};import fs from"fs";import path from"path";var PATH2=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_da\
|
|
67
|
+
te","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","clearan\
|
|
68
|
+
ce_rounding_method"];var RECIPIENT_KEYS=["customer_contact_id","recipient_type"];var FIELD_NOTES2=[["estimate_format_id","\u4F5C\u6210\u3067\u5FC5\u9808\u3002\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E ID\uFF08\u6574\u6570\u3002twp estimate format list \u306E id\uFF09"],["estimate_no_rule_id","\u4F5C\u6210\u306E\u307F\u3002\u898B\u7A4D\u756A\u53F7\u30EB\u30FC\u30EB\u306E ID\uFF08twp estimate no-rule list \u306E id\u3002\u6307\u5B9A\u3059\u308B\u3068\u756A\u53F7\u3092\u63A1\u756A\u3002\u7701\u3051\u3070\u756A\u53F7\u306A\u3057\uFF09"],
|
|
69
|
+
["title","\u4F5C\u6210\u3067\u5FC5\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"],
|
|
70
|
+
["business_place_id / seal_impression_id","\u4E8B\u696D\u6240\u30FB\u5370\u5F71\u306E ID\uFF08\u6574\u6570\u3002twp business-place / seal-impression list \u306E id\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"],
|
|
71
|
+
["project_category","contracted\uFF08\u53D7\u8A17\uFF09/ maintenance\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",
|
|
72
|
+
"\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"],["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",
|
|
73
|
+
"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"],["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 estimat\
|
|
74
|
+
e 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"],["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_n\
|
|
75
|
+
ame","\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"],["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[].descriptio\
|
|
76
|
+
n / 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[].clearance_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 / \
|
|
77
|
+
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_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"]];
|
|
78
|
+
var CONTENT_MAX_CHARS2=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","estimate_type","estimate_date","company_name","project_name","subtotal","tax_amount","total"];var CONTENT_FILE_FLAG2={name:"--content-file",summary:"\u898B\u7A4D\u306E\u5185\u5BB9\u306E JSON \u30D5\u30A1\u30A4\u30EB\uFF08- \u3067\u6A19\u6E96\u5165\u529B\uFF09",
|
|
79
|
+
takesValue:true,placeholder:"<\u30D1\u30B9>"};var SKELETON_FLAG2={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",takesValue:false};var CONTENT_HELP2="\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 \
|
|
80
|
+
\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";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\
|
|
81
|
+
\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}`,"\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")}
|
|
82
|
+
return id}function estimatePath(input,op){return`${PATH2}/${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){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\
|
|
83
|
+
\u3044\u3002`)}return data}function serverMessage2(body){const message=isRecord(body)?body["message"]:void 0;return typeof message==="string"&&message!==""?[message]:[]}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_HELP2);const problems=[];value.forEach((row,index)=>{if(!isRecord(row)){problems.push(
|
|
84
|
+
`${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}`)}});return problems}function parseEstimateContent(text2,source,mode){let parsed;try{parsed=JSON.parse(text2)}catch{throw new UsageError(`\u898B\u7A4D\u306E\u5185\u5BB9\u304C JSON \u3068\u3057\u3066\u8AAD\u3081\u307E\u305B\u3093\uFF08${source}\uFF09`,CONTENT_HELP2)}if(!isRecord(parsed))
|
|
85
|
+
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_HELP2);const allowed=mode==="create"?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":
|
|
86
|
+
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),...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}\
|
|
87
|
+
\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 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`,
|
|
88
|
+
usageOf2("update"))}return parsed}async function readContent(input,mode){const body=await readBody(input,{flag:"--content",fileFlag:CONTENT_FILE_FLAG2.name,label:"\u898B\u7A4D\u306E\u5185\u5BB9",maxChars:CONTENT_MAX_CHARS2,usage:usageOf2(mode)});return body===void 0?void 0:parseEstimateContent(body,`${CONTENT_FILE_FLAG2.name} ${input.flags.get(CONTENT_FILE_FLAG2.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\
|
|
89
|
+
\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")}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\
|
|
90
|
+
\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")}return notes}function todayJst(now=new Date){return new Intl.DateTimeFormat("en-CA",{timeZone:"Asia/Tokyo"}).format(now)}function fieldNotes2(mode){return[`\u9001\u308C\u308B\u9805\u76EE\uFF08${mode==="create"?"create":"updat\
|
|
91
|
+
e"}\uFF09\u3068\u5024\u306E\u6C7A\u307E\u308A\uFF08\u30B5\u30FC\u30D0\u306E\u691C\u67FB\u306E\u5199\u3057\uFF09:`,...FIELD_NOTES2.filter(([key])=>mode==="create"?key!=="approval_comment":key!=="estimate_no_rule_id").map(([key,text2])=>` ${key}: ${text2}`)]}function formatsOf(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\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")}
|
|
92
|
+
return list}var FORMATS_PLAN={method:"GET",path:"/api/v2/sales/estimate-formats",query:{page_limit:100,page_no:1}};function createSkeleton2(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,
|
|
93
|
+
business_place_id:pickDefault("default_business_place_id"),seal_impression_id:pickDefault("default_seal_impression_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 createSkeletonNotes2(body){const formats=formatsOf(body);const pageSum=isRecord(
|
|
94
|
+
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\u3002twp estimate format create\uFF08\u307E\u305F\u306F\u753B\u9762\uFF09\u3067\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u3092\u4F5C\u3063\u3066\u304B\u3089 estimate_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"])}\
|
|
95
|
+
\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(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 estimate format list --all\uFF09`]:
|
|
96
|
+
[]];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",...fieldNotes2("create")]}function updateSkeleton2(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).
|
|
97
|
+
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 twp estimate update <\u898B\u7A4DID> --content-file <\u30D1\u30B9> \u3067\u9001\u3063\u3066\u304F\u3060\u3055\u3044",
|
|
98
|
+
" \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",...fieldNotes2("update")]}function writeResult2(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 \u306E\u914D\u7DDA\u6F0F\u308C\uFF09")}
|
|
99
|
+
return value}function contentOf2(input){return JSON.parse(requireResolved(input,"body"))}function createPlan(input){if(input.flags.has(SKELETON_FLAG2.name))return FORMATS_PLAN;return{method:"POST",path:PATH2,body:contentOf2(input)}}function updatePlan2(input){const target=estimatePath(input,"update");if(input.flags.has(SKELETON_FLAG2.name))return{method:"GET",path:target};return{method:"PUT",path:target,body:contentOf2(input)}}async function prepareContent2(input,mode){const wantsSkeleton=input.
|
|
100
|
+
flags.has(SKELETON_FLAG2.name);if(wantsSkeleton&&input.flags.has(CONTENT_FILE_FLAG2.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",`\u3072\u306A\u5F62\u306F twp estimat\
|
|
101
|
+
e ${mode}${mode==="update"?" <\u898B\u7A4DID>":""} --generate-cli-skeleton \u3067\u51FA\u305B\u307E\u3059\u3002`)}return withResolved(input,{body:JSON.stringify(content)})}var createOperation2={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\u306F new\uFF08\u4F5C\u6210\u4E2D\uFF09\u304B create_completed\uFF08\u4F5C\u6210\u5B8C\u4E86\uFF09\u3060\u3051\
|
|
102
|
+
\u3067\u3059
|
|
103
|
+
\uFF08\u627F\u8A8D\u7533\u8ACB\u306F twp estimate update \u3067 status \u3092 in_progress \u306B\u3057\u307E\u3059\uFF09\u3002
|
|
104
|
+
|
|
105
|
+
${CONTENT_HELP2}
|
|
106
|
+
|
|
107
|
+
--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
|
|
108
|
+
\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
|
|
109
|
+
\u4F8B: twp estimate create --generate-cli-skeleton --output json > estimate.json
|
|
110
|
+
|
|
111
|
+
\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
|
|
112
|
+
\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_FLAG2,SKELETON_FLAG2],forbidden:SALES_FORBIDDEN,async prepare(input){noArgs2(input,"create");return prepareContent2(input,"create")},plan:createPlan,plannedNotes:input=>input.flags.has(SKELETON_FLAG2.name)?["\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\u306E\u4E00\u89A7\u3092\u8AAD\u3080\u3060\u3051\u3067\u3001\u898B\u7A4D\u306F\u4F5C\
|
|
113
|
+
\u308A\u307E\u305B\u3093"]:contentNotes(contentOf2(input),"create"),execute:async(input,ctx)=>({skeleton:input.flags.has(SKELETON_FLAG2.name),body:await ctx.send(createPlan(input))}),summarize(value){const result=writeResult2(value);return result.skeleton?createSkeleton2(result.body):pick(dataOf(result.body,"\u898B\u7A4D\u306E\u4F5C\u6210"),WRITE_COLUMNS)},raw(value){const result=writeResult2(value);return result.skeleton?createSkeleton2(result.body):dataOf(result.body,"\u898B\u7A4D\u306E\u4F5C\u6210")},
|
|
114
|
+
notes(value){const result=writeResult2(value);return result.skeleton?createSkeletonNotes2(result.body):serverMessage2(result.body)}};var updateOperation2={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\
|
|
115
|
+
\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
|
|
116
|
+
\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
|
|
117
|
+
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
|
|
118
|
+
\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
|
|
119
|
+
|
|
120
|
+
${CONTENT_HELP2}
|
|
121
|
+
|
|
122
|
+
--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
|
|
123
|
+
\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
|
|
124
|
+
\u4F8B: twp estimate update 123 --generate-cli-skeleton --output json > estimate.json`,flags:[CONTENT_FILE_FLAG2,SKELETON_FLAG2],forbidden:SALES_FORBIDDEN,async prepare(input){estimateIdArg(input,"update");return prepareContent2(input,"update")},plan:updatePlan2,plannedNotes:input=>input.flags.has(SKELETON_FLAG2.name)?["\u4ECA\u306E\u898B\u7A4D\u3092\u8AAD\u3080\u3060\u3051\u3067\u3001\u66F8\u304D\u63DB\u3048\u307E\u305B\u3093"]:contentNotes(contentOf2(input),"update"),execute:async(input,ctx)=>({
|
|
125
|
+
skeleton:input.flags.has(SKELETON_FLAG2.name),body:await ctx.send(updatePlan2(input))}),summarize(value){const result=writeResult2(value);return result.skeleton?updateSkeleton2(dataOf(result.body,"\u898B\u7A4D")):pick(dataOf(result.body,"\u898B\u7A4D\u306E\u66F4\u65B0"),WRITE_COLUMNS)},raw(value){const result=writeResult2(value);return result.skeleton?updateSkeleton2(dataOf(result.body,"\u898B\u7A4D")):dataOf(result.body,"\u898B\u7A4D\u306E\u66F4\u65B0")},notes(value){const result=writeResult2(value);
|
|
126
|
+
return result.skeleton?updateSkeletonNotes():serverMessage2(result.body)}};var deleteOperation2={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",
|
|
127
|
+
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",
|
|
128
|
+
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 text2=await readBody(input,{flag:"--text",fileFlag:"--text-file",label:"\u793E\u5185\u5171\u6709\u30E1\u30E2",maxChars:MEMO_MAX_CHARS,usage:usageOf2("memo")});if(clear&&text2!==void 0)throw new UsageError("--clear \u3068 --text / --text-file \u306F\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093",
|
|
129
|
+
usageOf2("memo"));if(!clear&&text2===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:text2})}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\
|
|
130
|
+
\uFF09",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
|
|
131
|
+
\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
|
|
132
|
+
\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,
|
|
133
|
+
"memoMode")==="clear"?null:requireResolved(input,"memo")}}),summarize:body=>pick(memoOf(body),["id","internal_memo","updated_at"]),raw:memoOf,notes:serverMessage2};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",
|
|
134
|
+
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\
|
|
135
|
+
\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?.["\
|
|
136
|
+
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`,
|
|
137
|
+
"\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\
|
|
138
|
+
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",
|
|
139
|
+
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(
|
|
140
|
+
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`];
|
|
141
|
+
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}\
|
|
142
|
+
\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:serverMessage2};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\
|
|
143
|
+
\u3057\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\
|
|
144
|
+
\u7406\u8005\u300D\u3067\u3042\u308B\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(
|
|
145
|
+
"\u8CA9\u58F2\u7BA1\u7406"):"\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",
|
|
146
|
+
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>"};
|
|
147
|
+
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=path.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)
|
|
148
|
+
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,
|
|
149
|
+
fileSize:String(size),contentType}))}function readHead(file,length){const head=Buffer.alloc(length);let read;try{const fd=fs.openSync(file,"r");try{read=fs.readSync(fd,head,0,length,0)}finally{fs.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 text2=head.toString(
|
|
150
|
+
"latin1");switch(contentType){case"application/pdf":return text2.startsWith("%PDF-");case"image/png":return text2.startsWith("\x89PNG\r\n\n");case"image/jpeg":return text2.startsWith("\xFF\xD8\xFF");case"image/gif":return text2.startsWith("GIF87a")||text2.startsWith("GIF89a");case"image/webp":return text2.startsWith("RIFF")&&text2.slice(8,12)==="WEBP";default:return false}}function scanUploadPlan(input){return{method:"POST",path:"/api/v2/attachments/upload-url",body:{file_name:requireResolved(input,
|
|
151
|
+
"fileName"),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")}
|
|
152
|
+
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=fs.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}\
|
|
153
|
+
\u2192 ${bytes.byteLength} \u30D0\u30A4\u30C8\uFF09: ${file}`)}await ctx.putSigned(uploadUrl,bytes,requireResolved(input,"contentType"));try{return await ctx.send({method:"POST",path:`${PATH2}/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}\
|
|
154
|
+
\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
|
|
155
|
+
`)}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\
|
|
156
|
+
\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",
|
|
157
|
+
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 ${PATH2}/order-form/scan \u3067\u8AAD\u307F\u53D6\u308A\u307E\u3059\
|
|
158
|
+
\uFF08\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"]:
|
|
159
|
+
["\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>",
|
|
160
|
+
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){
|
|
161
|
+
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.
|
|
162
|
+
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.
|
|
163
|
+
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\
|
|
164
|
+
\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`,
|
|
165
|
+
"\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\
|
|
166
|
+
\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.
|
|
167
|
+
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
|
|
168
|
+
--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",
|
|
169
|
+
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",
|
|
170
|
+
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:serverMessage2},
|
|
171
|
+
{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,
|
|
172
|
+
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=[createOperation2,updateOperation2,deleteOperation2,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\u30FB\u5E33\u7968 PDF\uFF08\u898B\u7A4D\u66F8\u30FB\u6CE8\u6587\u66F8\u30FB\u6CE8\u6587\u8ACB\u66F8\uFF09\u30FB\u756A\u53F7\u30EB\u30FC\u30EB\u30FB\u898B\u7A4D\u30D5\u30A9\u30FC\u30DE\u30C3\u30C8\uFF09",
|
|
173
|
+
operations:[...estimateReadOperations,...estimateWriteOperations,estimatePdfOperation],subresources:[allocationResource,estimateCaseDocumentResource,estimateNoRuleResource,estimateFormatResource]};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-BZAXQOLB.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";
|