diff --git a/fe-admin/src/components/pe/PeDetailTabs.tsx b/fe-admin/src/components/pe/PeDetailTabs.tsx
index b0725ac..c6febc9 100644
--- a/fe-admin/src/components/pe/PeDetailTabs.tsx
+++ b/fe-admin/src/components/pe/PeDetailTabs.tsx
@@ -13,7 +13,6 @@ import { Input } from '@/components/ui/Input'
import { Label } from '@/components/ui/Label'
import { SearchableSelect } from '@/components/ui/SearchableSelect'
import { Select } from '@/components/ui/Select'
-import { Textarea } from '@/components/ui/Textarea'
import { api } from '@/lib/api'
import { getErrorMessage } from '@/lib/apiError'
import { cn } from '@/lib/cn'
@@ -722,16 +721,9 @@ function InfoTab({ ev, readOnly, autoEdit }: { ev: PeDetailBundle; readOnly: boo
placeholder="Phương án A: ..."
/>
-
-
- {/* S59 UAT "nhập tay chỉ được 1 dòng?" → Textarea đa dòng (render đã pre-wrap). */}
-
+ {/* S59 vòng 5: field "Điều khoản thanh toán" GỠ khỏi inline-edit (anh chốt
+ "bỏ nốt ra luôn tất cả các form"). State paymentTerms giữ — save giữ nguyên
+ data cũ; phiếu đã nhập vẫn hiển thị read-only ở header info. */}
-
-
-
+ {/* S59 vòng 5: field "Điều khoản thanh toán" GỠ khỏi form (anh chốt). State
+ paymentTerms giữ — load từ phiếu cũ + save giữ nguyên, data cũ KHÔNG mất. */}
{onCancel && (
diff --git a/fe-admin/src/components/pe/PeWorkspaceCreateView.tsx b/fe-admin/src/components/pe/PeWorkspaceCreateView.tsx
index c993fdf..717a0c6 100644
--- a/fe-admin/src/components/pe/PeWorkspaceCreateView.tsx
+++ b/fe-admin/src/components/pe/PeWorkspaceCreateView.tsx
@@ -15,7 +15,6 @@ import { Input } from '@/components/ui/Input'
import { Label } from '@/components/ui/Label'
import { SearchableSelect } from '@/components/ui/SearchableSelect'
import { Select } from '@/components/ui/Select'
-import { Textarea } from '@/components/ui/Textarea'
import { api } from '@/lib/api'
import { getErrorMessage } from '@/lib/apiError'
import { PurchaseEvaluationTypeLabel } from '@/types/purchaseEvaluation'
@@ -36,21 +35,10 @@ type WorkItemOption = {
isActive?: boolean
}
-// Preset điều khoản thanh toán phổ biến — user chọn 1 trong list, hoặc "Khác"
-// để nhập tay. Save as plain text (không JSON như cũ — code-style không phù
-// hợp UI cho end-user). User 2026-05-07 chỉnh.
-const PAYMENT_PRESETS = [
- '100% sau khi nghiệm thu',
- 'Tạm ứng 30% / Thanh toán 70% sau nghiệm thu',
- 'Tạm ứng 50% / Thanh toán 50% sau nghiệm thu',
- 'TGN-30 ngày (Thanh toán giao nhận 30 ngày)',
- 'TGN-45 ngày',
- 'TGN-60 ngày',
- 'Tiến độ theo từng đợt',
- 'Bảo hành 5% trong 12 tháng',
-] as const
-
-const PAYMENT_CUSTOM = '__custom__'
+// S59 UAT vòng 5 (anh chốt "điều khoản thanh toán bỏ nốt ra luôn tất cả các form"):
+// field Điều khoản TT phiếu-level GỠ khỏi mọi form (Create/HeaderForm/inline-edit).
+// PAYMENT_PRESETS + PAYMENT_CUSTOM drop. Cột "Điều khoản TT" per-NCC trong bảng
+// so sánh GIỮ (data của từng NCC, khác field). Phiếu cũ đã nhập → display read-only.
export function PeWorkspaceCreateView({
defaultType,
@@ -80,8 +68,6 @@ export function PeWorkspaceCreateView({
approvalWorkflowId: '',
})
// Payment terms: select preset OR "Khác" → text input
- const [paymentMode, setPaymentMode] = useState('') // '' / preset / __custom__
- const isPaymentCustom = paymentMode === PAYMENT_CUSTOM
const projects = useQuery({
queryKey: ['all-projects'],
@@ -142,7 +128,7 @@ export function PeWorkspaceCreateView({
workItemId: form.workItemId || null,
diaDiem: form.diaDiem || null,
moTa: form.moTa || null,
- paymentTerms: form.paymentTerms || null,
+ paymentTerms: null, // S59 vòng 5: field gỡ khỏi form
approvalWorkflowId: form.approvalWorkflowId || null,
...budgetPayload,
})
@@ -261,38 +247,6 @@ export function PeWorkspaceCreateView({
placeholder="Phương án A: ..."
/>
-
-
-
- {isPaymentCustom && (
- /* S59 UAT "nhập tay chỉ được 1 dòng?" → Textarea đa dòng (render
- detail đã whitespace-pre-wrap sẵn nên xuống dòng hiển thị đúng). */
-
diff --git a/fe-user/src/components/pe/PeDetailTabs.tsx b/fe-user/src/components/pe/PeDetailTabs.tsx
index b0725ac..c6febc9 100644
--- a/fe-user/src/components/pe/PeDetailTabs.tsx
+++ b/fe-user/src/components/pe/PeDetailTabs.tsx
@@ -13,7 +13,6 @@ import { Input } from '@/components/ui/Input'
import { Label } from '@/components/ui/Label'
import { SearchableSelect } from '@/components/ui/SearchableSelect'
import { Select } from '@/components/ui/Select'
-import { Textarea } from '@/components/ui/Textarea'
import { api } from '@/lib/api'
import { getErrorMessage } from '@/lib/apiError'
import { cn } from '@/lib/cn'
@@ -722,16 +721,9 @@ function InfoTab({ ev, readOnly, autoEdit }: { ev: PeDetailBundle; readOnly: boo
placeholder="Phương án A: ..."
/>
-
-
- {/* S59 UAT "nhập tay chỉ được 1 dòng?" → Textarea đa dòng (render đã pre-wrap). */}
-
+ {/* S59 vòng 5: field "Điều khoản thanh toán" GỠ khỏi inline-edit (anh chốt
+ "bỏ nốt ra luôn tất cả các form"). State paymentTerms giữ — save giữ nguyên
+ data cũ; phiếu đã nhập vẫn hiển thị read-only ở header info. */}
-
-
-
+ {/* S59 vòng 5: field "Điều khoản thanh toán" GỠ khỏi form (anh chốt). State
+ paymentTerms giữ — load từ phiếu cũ + save giữ nguyên, data cũ KHÔNG mất. */}
{onCancel && (
diff --git a/fe-user/src/components/pe/PeWorkspaceCreateView.tsx b/fe-user/src/components/pe/PeWorkspaceCreateView.tsx
index c993fdf..717a0c6 100644
--- a/fe-user/src/components/pe/PeWorkspaceCreateView.tsx
+++ b/fe-user/src/components/pe/PeWorkspaceCreateView.tsx
@@ -15,7 +15,6 @@ import { Input } from '@/components/ui/Input'
import { Label } from '@/components/ui/Label'
import { SearchableSelect } from '@/components/ui/SearchableSelect'
import { Select } from '@/components/ui/Select'
-import { Textarea } from '@/components/ui/Textarea'
import { api } from '@/lib/api'
import { getErrorMessage } from '@/lib/apiError'
import { PurchaseEvaluationTypeLabel } from '@/types/purchaseEvaluation'
@@ -36,21 +35,10 @@ type WorkItemOption = {
isActive?: boolean
}
-// Preset điều khoản thanh toán phổ biến — user chọn 1 trong list, hoặc "Khác"
-// để nhập tay. Save as plain text (không JSON như cũ — code-style không phù
-// hợp UI cho end-user). User 2026-05-07 chỉnh.
-const PAYMENT_PRESETS = [
- '100% sau khi nghiệm thu',
- 'Tạm ứng 30% / Thanh toán 70% sau nghiệm thu',
- 'Tạm ứng 50% / Thanh toán 50% sau nghiệm thu',
- 'TGN-30 ngày (Thanh toán giao nhận 30 ngày)',
- 'TGN-45 ngày',
- 'TGN-60 ngày',
- 'Tiến độ theo từng đợt',
- 'Bảo hành 5% trong 12 tháng',
-] as const
-
-const PAYMENT_CUSTOM = '__custom__'
+// S59 UAT vòng 5 (anh chốt "điều khoản thanh toán bỏ nốt ra luôn tất cả các form"):
+// field Điều khoản TT phiếu-level GỠ khỏi mọi form (Create/HeaderForm/inline-edit).
+// PAYMENT_PRESETS + PAYMENT_CUSTOM drop. Cột "Điều khoản TT" per-NCC trong bảng
+// so sánh GIỮ (data của từng NCC, khác field). Phiếu cũ đã nhập → display read-only.
export function PeWorkspaceCreateView({
defaultType,
@@ -80,8 +68,6 @@ export function PeWorkspaceCreateView({
approvalWorkflowId: '',
})
// Payment terms: select preset OR "Khác" → text input
- const [paymentMode, setPaymentMode] = useState('') // '' / preset / __custom__
- const isPaymentCustom = paymentMode === PAYMENT_CUSTOM
const projects = useQuery({
queryKey: ['all-projects'],
@@ -142,7 +128,7 @@ export function PeWorkspaceCreateView({
workItemId: form.workItemId || null,
diaDiem: form.diaDiem || null,
moTa: form.moTa || null,
- paymentTerms: form.paymentTerms || null,
+ paymentTerms: null, // S59 vòng 5: field gỡ khỏi form
approvalWorkflowId: form.approvalWorkflowId || null,
...budgetPayload,
})
@@ -261,38 +247,6 @@ export function PeWorkspaceCreateView({
placeholder="Phương án A: ..."
/>
-
-
-
- {isPaymentCustom && (
- /* S59 UAT "nhập tay chỉ được 1 dòng?" → Textarea đa dòng (render
- detail đã whitespace-pre-wrap sẵn nên xuống dòng hiển thị đúng). */
-