- 저장 · 읽기 · 복사 때 SC 안 SK 참조 줄 안 펼침(Library_Flat flat_doc sk=False) · 셈 = SK 1 단위 × 수량 - [로직 추가] M01 기초 = 그 층 SK 사본 참조(POST sangeun/from-logic · 같은 내용 물음) · 다른 층 SK = 이 층 사본 뒤 참조(Labor_SkPick) - 프로젝트 · 셈 주입 = 옛 로직 줄 그대로 - 옮기기 M02_Labor_SkRow — 층 SC · 구조물 조합 로직 줄 → SK + 참조 한 행 · 면적 칸 잇기 옮김 · 줄마다 금액 같을 때만 · 보기 = 임시 사본 - 낡은 시험 고침: test_740_1 넷(SC 안 SK 줄 펼침 단언 → 참조 한 행) · test_723 AlsoSk(808-1 에서 걷힌 단추 단언) - 새 시험 test_811_1_labor_ref Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
44 lines
2.0 KiB
TypeScript
44 lines
2.0 KiB
TypeScript
/* =============================================================================
|
|
* M02_MasterTemplete_Labor_SkPick.ts
|
|
* 일위대가 [+ 줄] 단가산출 = 그 층 SK 참조 한 행(PLAN 811-1 · 요구 707-1 · 681) — 일위대가 표(`Labor_Table`)가 부름.
|
|
* · M01 기초 고름 = 그 층에 SK 사본을 만듦(`POST …/sangeun/from-logic` · 같은 내용 SK 있으면 물음 = 그것을 씀 · 그래도 새로)
|
|
* · M02 단가산출 고름 = 같은 층 · 같은 주인 = 그대로 참조 · 다른 층(위 층 = 읽기 전용) = 이 층에 사본(`newLibrary` 본뜬) 뒤 참조
|
|
* · 답 = 넣을 참조 {층, 주인, 키} · 취소 = null(일위대가 문서는 화면 [저장] 때 바뀜)
|
|
* ========================================================================== */
|
|
|
|
import { call, newLibrary, type Layer } from "./M02_MasterTemplete_Api_Fetch";
|
|
import type { LaborRef } from "./M02_MasterTemplete_Labor_Calc";
|
|
import { withSameAsk } from "./M02_MasterTemplete_Library_SameAsk";
|
|
|
|
export interface SkPickScope {
|
|
layer: Layer;
|
|
owner: string | null;
|
|
}
|
|
|
|
const q = (s: SkPickScope): string =>
|
|
s.owner && s.layer !== "system" ? `?owner=${encodeURIComponent(s.owner)}` : "";
|
|
|
|
/** M01 기초 → 이 층 SK 사본 참조 */
|
|
export const skFromLogic = async (s: SkPickScope, code: string): Promise<LaborRef | null> =>
|
|
(
|
|
await withSameAsk((extra) =>
|
|
call<{ 이름: string; 참조: LaborRef }>(`/layers/${s.layer}/sangeun/from-logic${q(s)}`, {
|
|
method: "POST",
|
|
body: JSON.stringify({ 로직: code, ...extra }),
|
|
}),
|
|
)
|
|
)?.참조 ?? null;
|
|
|
|
/** 고른 SK — 이 층 것이면 그대로 · 다른 층이면 이 층 사본 */
|
|
export async function ownSk(s: SkPickScope, ref: LaborRef): Promise<LaborRef> {
|
|
const owner = s.layer === "system" ? null : s.owner;
|
|
if (ref.층 === s.layer && (ref.주인 ?? null) === owner) return ref;
|
|
const got = await newLibrary(
|
|
s.layer,
|
|
"sangeun",
|
|
{ 본뜬: { ...ref, 층: ref.층 as Layer } },
|
|
owner,
|
|
);
|
|
return { 층: s.layer, 주인: owner, 키: got.이름 };
|
|
}
|