From 79cfa7ea8f21ae227dbb2843ae536fe876ba7c55 Mon Sep 17 00:00:00 2001 From: dujinkim Date: Thu, 27 Nov 2025 03:08:50 +0000 Subject: (최겸) 구매 입찰 수정 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../detail/general-contract-basic-info.tsx | 66 ++++++++++++++++------ .../detail/general-contract-items-table.tsx | 22 +++----- 2 files changed, 55 insertions(+), 33 deletions(-) (limited to 'lib/general-contracts/detail') diff --git a/lib/general-contracts/detail/general-contract-basic-info.tsx b/lib/general-contracts/detail/general-contract-basic-info.tsx index fc147b59..b0378912 100644 --- a/lib/general-contracts/detail/general-contract-basic-info.tsx +++ b/lib/general-contracts/detail/general-contract-basic-info.tsx @@ -26,6 +26,26 @@ interface ContractBasicInfoProps { contractId: number } +interface PaymentBeforeDelivery { + apBond?: boolean + apBondPercent?: string + drawingSubmission?: boolean + drawingSubmissionPercent?: string + materialPurchase?: boolean + materialPurchasePercent?: string + additionalCondition?: boolean + additionalConditionPercent?: string +} + +interface PaymentAfterDelivery { + commissioning?: boolean + commissioningPercent?: string + finalDocument?: boolean + finalDocumentPercent?: string + other?: boolean + otherText?: string +} + export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { const session = useSession() const [isLoading, setIsLoading] = useState(false) @@ -59,10 +79,10 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { linkedBidNumber: '', notes: '', // 개별 JSON 필드들 (스키마에 맞게) - paymentBeforeDelivery: {}, + paymentBeforeDelivery: {} as PaymentBeforeDelivery, paymentDelivery: '', // varchar 타입 paymentDeliveryAdditionalText: '', - paymentAfterDelivery: {}, + paymentAfterDelivery: {} as PaymentAfterDelivery, paymentTerm: '', taxType: '', liquidatedDamages: false, @@ -314,7 +334,7 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { if (formData.contractScope !== '단가' && formData.contractScope !== '물량(실적)' && !formData.currency) { validationErrors.push('계약통화') } - if (!formData.paymentTerm) validationErrors.push('지불조건') + // if (!formData.paymentTerm) validationErrors.push('지불조건') if (!formData.taxType) validationErrors.push('세금조건') if (validationErrors.length > 0) { @@ -1132,10 +1152,11 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { - {/* 지불조건 */} + {/* 지불조건 -> 세금조건 (지불조건 삭제됨) */}
- +
+ {/* 지불조건 필드 삭제됨
+ */}
setFormData(prev => ({ - ...prev, - liquidatedDamagesPercent: e.target.value - }))} - disabled={!formData.liquidatedDamages} - /> +
+ + + * 일반적인 계약조건: 지체일수당 계약금액의 0.3%, 최대치 10% + +
+
+ setFormData(prev => ({ + ...prev, + liquidatedDamagesPercent: e.target.value + }))} + disabled={!formData.liquidatedDamages} + /> + % +
diff --git a/lib/general-contracts/detail/general-contract-items-table.tsx b/lib/general-contracts/detail/general-contract-items-table.tsx index bda2901e..15e5c926 100644 --- a/lib/general-contracts/detail/general-contract-items-table.tsx +++ b/lib/general-contracts/detail/general-contract-items-table.tsx @@ -460,7 +460,11 @@ export function ContractItemsTable({ id="batch-unit-price" type="number" value={batchInputData.contractUnitPrice} - onChange={(e) => setBatchInputData(prev => ({ ...prev, contractUnitPrice: e.target.value }))} + onChange={(e) => { + // Leading zero removal + const val = e.target.value.replace(/^0+(?=[0-9])/, '') + setBatchInputData(prev => ({ ...prev, contractUnitPrice: val })) + }} placeholder="계약단가 입력 (선택사항)" /> @@ -507,32 +511,20 @@ export function ContractItemsTable({ {/* 요약 정보 */} -
+ {/*
{isTotalAmountDisabled ? '-' : formatCurrency(totalAmount, localItems[0]?.contractCurrency || 'KRW')}
-
- -
- {formatCurrency(availableBudget, localItems[0]?.contractCurrency || 'KRW')} -
-
-
- -
= 0 ? 'text-green-600' : 'text-red-600'}`}> - {formatCurrency(amountDifference, localItems[0]?.contractCurrency || 'KRW')} -
-
{budgetRatio.toFixed(1)}%
-
+
*/} -- cgit v1.2.3