diff options
| author | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-27 03:08:50 +0000 |
|---|---|---|
| committer | dujinkim <dujin.kim@dtsolution.co.kr> | 2025-11-27 03:08:50 +0000 |
| commit | 79cfa7ea8f21ae227dbb2843ae536fe876ba7c55 (patch) | |
| tree | f12efae72c62286c1a2e9a3f31d695ca22d83b6e /lib/general-contracts | |
| parent | e1da84ac863989b9f63b089c09aaa2bbcdc3d6cd (diff) | |
(최겸) 구매 입찰 수정
Diffstat (limited to 'lib/general-contracts')
| -rw-r--r-- | lib/general-contracts/detail/general-contract-basic-info.tsx | 66 | ||||
| -rw-r--r-- | lib/general-contracts/detail/general-contract-items-table.tsx | 22 |
2 files changed, 55 insertions, 33 deletions
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) { </div>
</div>
- {/* 지불조건 */}
+ {/* 지불조건 -> 세금조건 (지불조건 삭제됨) */}
<div className="space-y-2">
- <Label className="text-sm font-medium">지불조건</Label>
+ <Label className="text-sm font-medium">세금조건</Label>
<div className="space-y-2">
+ {/* 지불조건 필드 삭제됨
<div className="space-y-1">
<Label htmlFor="paymentTerm" className="text-xs">지불조건 *</Label>
<Select
@@ -1160,6 +1181,7 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { </SelectContent>
</Select>
</div>
+ */}
<div className="space-y-1">
<Label htmlFor="taxType" className="text-xs">세금조건 *</Label>
<Select
@@ -1196,19 +1218,27 @@ export function ContractBasicInfo({ contractId }: ContractBasicInfoProps) { }))}
className="rounded w-4 h-4"
/>
- <Label htmlFor="liquidatedDamages" className="text-xs">지체상금</Label>
- <Input
- type="number"
- min="0"
- placeholder="%"
- className="w-16 h-6 text-xs"
- value={formData.liquidatedDamagesPercent || ''}
- onChange={(e) => setFormData(prev => ({
- ...prev,
- liquidatedDamagesPercent: e.target.value
- }))}
- disabled={!formData.liquidatedDamages}
- />
+ <div className="flex flex-col">
+ <Label htmlFor="liquidatedDamages" className="text-xs">지체상금 (최대 징수 가능 비율)</Label>
+ <span className="text-[10px] text-muted-foreground">
+ * 일반적인 계약조건: 지체일수당 계약금액의 0.3%, 최대치 10%
+ </span>
+ </div>
+ <div className="flex items-center gap-1">
+ <Input
+ type="number"
+ min="0"
+ placeholder=""
+ className="w-16 h-6 text-xs text-right"
+ value={formData.liquidatedDamagesPercent || ''}
+ onChange={(e) => setFormData(prev => ({
+ ...prev,
+ liquidatedDamagesPercent: e.target.value
+ }))}
+ disabled={!formData.liquidatedDamages}
+ />
+ <span className="text-xs">%</span>
+ </div>
</div>
</div>
</div>
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="계약단가 입력 (선택사항)" /> </div> @@ -507,7 +511,7 @@ export function ContractItemsTable({ </div> {/* 요약 정보 */} - <div className="grid grid-cols-2 md:grid-cols-4 gap-4 mt-4"> + {/* <div className="grid grid-cols-2 md:grid-cols-4 gap-4 mt-4"> <div className="space-y-1"> <Label className="text-sm font-medium">총 계약금액</Label> <div className={`text-lg font-bold ${isTotalAmountDisabled ? 'text-gray-400' : 'text-primary'}`}> @@ -515,24 +519,12 @@ export function ContractItemsTable({ </div> </div> <div className="space-y-1"> - <Label className="text-sm font-medium">가용예산</Label> - <div className="text-lg font-bold"> - {formatCurrency(availableBudget, localItems[0]?.contractCurrency || 'KRW')} - </div> - </div> - <div className="space-y-1"> - <Label className="text-sm font-medium">가용예산 比 (금액차)</Label> - <div className={`text-lg font-bold ${amountDifference >= 0 ? 'text-green-600' : 'text-red-600'}`}> - {formatCurrency(amountDifference, localItems[0]?.contractCurrency || 'KRW')} - </div> - </div> - <div className="space-y-1"> <Label className="text-sm font-medium">가용예산 比 (비율)</Label> <div className={`text-lg font-bold ${budgetRatio <= 100 ? 'text-green-600' : 'text-red-600'}`}> {budgetRatio.toFixed(1)}% </div> </div> - </div> + </div> */} </CardHeader> <CardContent> |
