# Task E.1: Quotation Stabilization Before Approval

## Goal

Stabilize Quotation foundation before starting Task F: Approval Production Module.

## Must Read

```txt
docs/implementation/task-a-template-audit.md
docs/implementation/task-b-template-audit.md
docs/implementation/task-b1-foundation-stabilization.md
docs/implementation/technical-debt.md
src/features/crm/quotations/**
src/features/foundation/**
src/db/schema.ts
```

## Scope

ทำเฉพาะ stabilization:

1. Review quotation master options
2. Seed missing options
3. Review quotation revision rule
4. Review quotation totals rule
5. Review approval readiness
6. Update technical debt / ADR notes if needed

## Part 1: Master Options Seed

ตรวจสอบและ seed เพิ่มถ้ายังไม่มี:

```txt
crm_quotation_type
crm_discount_type
crm_unit
crm_sent_via
crm_quotation_customer_role
crm_quotation_topic_type
```

ตัวอย่างค่า:

```txt
crm_quotation_type:
- crane
- dockdoor
- solarcell
- service
- other

crm_discount_type:
- percentage
- fixed

crm_unit:
- pcs
- set
- lot
- job

crm_sent_via:
- email
- manual
- system

crm_quotation_customer_role:
- owner
- consultant
- contractor
- billing

crm_quotation_topic_type:
- scope
- exclusion
- payment
```

Rules:

* seed idempotent
* ห้าม hardcode organizationId
* update `foundation.seed.ts` เท่านั้นถ้าเหมาะสม

## Part 2: Form Option Review

ตรวจสอบ quotation form ว่า:

* status มาจาก master options
* quotationType มาจาก master options
* currency มาจาก master options
* discountType มาจาก master options
* unit มาจาก master options ถ้ามี item form
* customer role/topic type ไม่ hardcode ถ้าดึง option ได้ง่าย

## Part 3: Revision Rule Review

ตรวจสอบและสรุป rule:

```txt
draft revise ได้ไหม
cancelled revise ได้ไหม
accepted revise ได้ไหม
rejected revise ได้ไหม
```

Recommendation:

```txt
draft: no
cancelled: no
accepted: yes
rejected: yes
sent: yes
approved: yes
```

ถ้า code ยังไม่ตรง ให้แก้เฉพาะ revision guard

## Part 4: Approval Readiness

ตรวจสอบว่า quotation status รองรับ:

```txt
draft
pending_approval
approved
rejected
sent
accepted
lost
cancelled
revised
```

ยังไม่ต้องสร้าง approval table

ให้เพิ่ม placeholder action ได้เท่านั้นถ้าจำเป็น:

```txt
Submit for approval
```

แต่ action นี้ยังไม่ต้องทำ workflow จริง

## Part 5: Documentation

อัปเดต:

```txt
docs/implementation/technical-debt.md
```

เพิ่ม/ยืนยันหัวข้อ:

* mixed tax rollup
* attachment storage
* revision snapshot
* CRM foreign keys
* approval workflow pending

ถ้ามี ADR folder ให้สร้าง note ได้:

```txt
docs/adr/0007-quotation-revision-strategy.md
docs/adr/0008-attachment-storage-strategy.md
```

## ห้ามทำ

```txt
Approval table
Approval workflow
PDF generation
Dashboard KPI
Report
Notification
```

## Output

สรุป:

1. Files Added
2. Files Modified
3. Options Seeded
4. Revision Rule Confirmed
5. Approval Readiness
6. Remaining Risks
7. Task F Readiness

## Definition of Done

Task E.1 ผ่านเมื่อ:

* quotation options seed ครบ
* quotation form ไม่ hardcode option สำคัญ
* revision guard ชัดเจน
* technical debt updated
* approval readiness confirmed
* ยังไม่สร้าง approval workflow จริง
