Quote (Báo giá)

I. Tổng quan

Lưu ý: Các thuộc tính, quy tắc phân quyền và tính năng chung của đối tượng này được kế thừa từ tài liệu Objects (Đối tượng CRM).

1. Vấn đề

  • Trước khi tiến hành đặt hàng/mua sản phẩm, khách hàng thường có nhu cầu nhận báo giá chi tiết về các sản phẩm/dịch vụ để phê duyệt ngân sách nội bộ.
  • Doanh nghiệp cần quản lý tập trung các báo giá đã gửi cho khách hàng, kiểm soát thời gian hiệu lực của báo giá, và cần có quy trình phê duyệt (approval) nội bộ để đảm bảo chính sách giá đưa ra cho khách hàng là chính xác và tuân thủ quy định kinh doanh.

2. Giải pháp

  • Xây dựng module Quote (Báo giá) tích hợp sâu với Contact CRM và danh mục sản phẩm.
  • Hỗ trợ tạo báo giá nhanh với giao diện thân thiện: tính toán chi tiết giá sản phẩm, áp dụng các điều chỉnh thuế, phí, chiết khấu.
  • Tích hợp quy trình phê duyệt nội bộ với các trạng thái rõ ràng và tính năng khóa dữ liệu khi chờ duyệt/đã duyệt.
  • Thiết lập thời gian hết hạn của báo giá và tự động hóa việc cập nhật trạng thái khi hết hiệu lực.

3. Đối tượng sử dụng

  • Nhân viên bán hàng (Sales Agent / Owner): Tạo báo giá, gửi yêu cầu phê duyệt và theo dõi trạng thái phản hồi từ cấp quản lý để gửi cho khách hàng.
  • Quản lý / Người phê duyệt (Approver / Manager): Duyệt hoặc Từ chối các yêu cầu báo giá của nhân viên gửi lên.
  • Kế toán / Admin: Theo dõi báo giá để hỗ trợ đối soát hoặc làm căn cứ lập đơn hàng sau này.

4. Tầm nhìn / Insight (Hướng phát triển tương lai)

  • Cho phép chuyển đổi trực tiếp 1-click từ Báo giá đã duyệt (Approved Quote) thành Đơn hàng chính thức (Order) để bỏ qua các bước nhập liệu trùng lặp.
  • Hỗ trợ xuất file báo giá định dạng PDF theo mẫu thiết kế tùy chỉnh của doanh nghiệp và gửi trực tiếp qua Email/Zalo cho khách hàng.

II. Yêu cầu chức năng

1. Danh sách tính năng

  • Quản lý thông tin liên hệ nhận báo giá.
  • Quản lý danh sách sản phẩm trong báo giá (không gán nhân viên phụ trách sản phẩm riêng lẻ).
  • Tính toán chi tiết giá trị tài chính (Tạm tính, Thuế, Phí, Giảm giá, Thành tiền) của báo giá.
  • Quản lý thông tin báo giá (Mã báo giá, Nhân viên phụ trách, Ngày hết hạn báo giá, Ghi chú nội dung, Custom Fields).
  • Quy trình gửi phê duyệt và duyệt báo giá (nút “Gửi phê duyệt” đầu trang và quy trình chuyển đổi trạng thái).

2. Đặc tả chi tiết

1. Danh sách sản phẩm trong báo giá (Product List)

  • Mô tả: Cho phép người dùng tìm kiếm, chọn và quản lý các sản phẩm/dịch vụ trong bản báo giá.
  • Chi tiết các trường/thao tác:
    • Chọn sản phẩm: Dropdown tìm kiếm sản phẩm từ danh mục sản phẩm CRM.
    • Bảng danh sách sản phẩm:
      • Hình ảnh: Hiển thị thumbnail của sản phẩm.
      • Sản phẩm: Tên sản phẩm/dịch vụ.
      • Đơn vị tính (ĐVT): Đơn vị tính của sản phẩm.
      • Số lượng (SL): Trường nhập số lượng (mặc định là 1, cho phép chỉnh sửa).
      • Đơn giá: Giá bán lẻ của sản phẩm, mặc định lấy từ CRM nhưng cho phép chỉnh sửa trực tiếp.
      • Chiết khấu (CK): Cho phép nhập tỷ lệ % hoặc số tiền chiết khấu riêng cho từng sản phẩm.
      • Thuế (VAT): Tự động điền theo thông tin cấu hình sản phẩm từ danh mục. Người dùng chỉ được xem, không được chỉnh sửa trực tiếp tại đây.
      • Thành tiền: Được tính tự động theo công thức: SL * Đơn giá * (1 - CK) * (1 + VAT).
      • Nút xóa: Biểu tượng thùng rác màu đỏ để xóa sản phẩm khỏi báo giá.
    • Lưu ý khác biệt so với Đơn hàng: Bảng sản phẩm của báo giá không có trường chỉ định Nhân viên thực hiện ở từng dòng sản phẩm.

2. Chi tiết tính toán giá trị (Pricing Calculation)

  • Mô tả: Tính toán chi tiết các thông số tài chính của báo giá để gửi cho khách hàng (không bao gồm tính năng chia đợt thanh toán hay ghi nhận công nợ đã trả/còn thiếu).
  • Chi tiết các trường/thao tác:
    • Tạm tính: Tổng tiền sản phẩm trước khi áp dụng thuế, phí, giảm giá chung của báo giá (bằng tổng cột “Thành tiền” của danh sách sản phẩm).
    • Cấu hình Thuế, Phí, Giảm giá:
      • Mặc định hiển thị: Hệ thống hiển thị sẵn 3 dòng điều chỉnh mặc định bao gồm:
        • Thuế: Mặc định là “Thuế giá trị gia tăng (VAT)”, cho phép chọn tỷ lệ % hoặc nhập số tiền cụ thể để hệ thống tính ra số tiền thuế.
        • Phí: Mặc định là “Phí vận chuyển”, cho phép điền số tiền cụ thể.
        • Giảm giá: Mặc định là “Chiết khấu”, cho phép điền tỷ lệ % hoặc số tiền giảm giá cụ thể.
      • Thao tác Thêm mới: Bấm nút ”+ Thêm phí, thuế, giảm giá” -> Hiển thị dropdown để chọn một trong ba loại: Thuế, Phí hoặc Giảm giá. Người dùng điền tên loại điều chỉnh và nhập giá trị (số tiền cụ thể hoặc tỷ lệ %).
      • Thao tác Xóa: Mỗi dòng thuế, phí, giảm giá đều có biểu tượng thùng rác màu xám bên cạnh để xóa bỏ dòng đó.
    • Thành tiền: Tổng số tiền báo giá gửi cho khách hàng (bằng Tạm tính + Thuế + Phí - Giảm giá - tính toán lũy kế lần lượt từ trên xuống tương tự như Đơn hàng).

3. Thông tin liên hệ (Contact Info)

  • Mô tả: Ghi nhận thông tin của khách hàng nhận báo giá.
  • Chi tiết các trường/thao tác:
    • Liên hệ: Dropdown chọn liên hệ đã có trong CRM.
      • Lưu ý: Nếu người dùng tạo Báo giá từ màn hình Chi tiết Khách hàng (Contact Detail), hệ thống sẽ tự động điền (autofill) và cố định liên hệ đó.
    • Tên khách hàng: Nhập tên khách hàng (tự động điền nếu chọn Liên hệ, hoặc nhập tay mới).
    • Số điện thoại: Nhập số điện thoại khách hàng (tự động điền nếu chọn Liên hệ, hoặc nhập tay mới).
    • Email: Nhập email khách hàng (tự động điền nếu chọn Liên hệ, hoặc nhập tay mới).
    • Địa chỉ: Nhập địa chỉ khách hàng (tự động điền nếu chọn Liên hệ, hoặc nhập tay mới).

4. Thông tin báo giá (Quote Info)

  • Mô tả: Các thông tin phụ trợ phục vụ mục đích quản lý báo giá.
  • Chi tiết các trường/thao tác:
    • Mã báo giá: Mã số định danh của báo giá (tự động sinh và không cho phép chỉnh sửa).
    • Nhân viên phụ trách: Chọn nhân viên chịu trách nhiệm chính về báo giá này.
      • Lưu ý: Nếu tạo Báo giá từ màn hình Chi tiết Khách hàng (Contact Detail), hệ thống tự động điền (autofill) nhân viên phụ trách bán hàng (Owner) của Contact đó vào đây.
    • Ngày hết hạn báo giá: Chọn thời điểm báo giá hết hiệu lực (Date picker).
    • Nội dung: Ô nhập văn bản ghi chú nội dung chi tiết hoặc lưu ý của báo giá.
    • Custom Field: Trường tùy chỉnh được cấu hình thêm (ví dụ: Custom field 1).
    • Lưu ý khác biệt so với Đơn hàng: Báo giá không có phần cấu hình Chia sẻ doanh thu (Revenue Sharing).

5. Quy trình phê duyệt (Approval Workflow)

  • Nút “Gửi phê duyệt”:
    • Vị trí: Hiển thị ở thanh công cụ góc trên bên phải (cạnh nút đóng X).
    • Trạng thái áp dụng: Chỉ hiển thị khi báo giá đang ở trạng thái Bản nháp.
    • Hoạt động: Khi bấm, hệ thống chuyển trạng thái báo giá sang Chờ duyệt và khóa form không cho phép nhân viên bán hàng sửa đổi thông tin.
  • Duyệt / Từ chối (Dành cho Quản lý / Admin):
    • Cấp quản lý có quyền chuyển đổi trạng thái của báo giá từ Chờ duyệt sang Đã duyệt (nếu thông tin hợp lệ) hoặc Không được duyệt (nếu cần điều chỉnh).
  • Tự động hết hạn:
    • Hệ thống tự động quét và chuyển trạng thái báo giá sang Đã hết hạn khi vượt quá Ngày hết hạn báo giá đã cấu hình.

6. Trạng thái báo giá (Quote Status Steps)

  • Mô tả: Thanh tiến trình biểu diễn vòng đời của báo giá.
  • Danh sách trạng thái:
    • Bản nháp (Mặc định khi tạo mới) -> Chờ duyệt -> Đã duyệt -> Đã hết hạn -> Không được duyệt.
  • Hành động góc dưới bên phải:
    • Nút Hủy (Đóng và không lưu).
    • Nút Lưu nháp (Lưu báo giá ở trạng thái Bản nháp để có thể tiếp tục chỉnh sửa sau).

7. Các hành động đầu trang (Header Actions)

  • Mô tả: Các biểu tượng công cụ nhanh hỗ trợ thao tác báo giá ở góc trên bên phải:
    • Nút “Gửi phê duyệt” (Màu xanh đậm): Gửi yêu cầu duyệt báo giá (chỉ có khi ở trạng thái Bản nháp).
    • Icon đóng modal (X): Đóng modal Báo giá.

8. Xuất báo giá ra file (Export Quote)

  • Mô tả: Cho phép người dùng xuất thông tin báo giá thành file định dạng Excel (hoặc PDF) theo mẫu template chuẩn của hệ thống, sẵn sàng gửi cho khách hàng.
  • Cách kích hoạt: Từ danh sách báo giá, bấm Icon Tải xuống / Copy trên dòng báo giá cần xuất. Hoặc từ màn chi tiết báo giá bấm nút Xuất file.
  • Cấu trúc template file xuất:
    • Header công ty (Watermark danh tính doanh nghiệp): Phần đầu file hiển thị thông tin của công ty đang sử dụng hệ thống, bao gồm:
      • Tên công ty (in đậm, ví dụ: Công ty Cổ phần Giải pháp ETRON).
      • Số điện thoại, Email, Mã số thuế (MST) của công ty.
      • Thông tin này được lấy tự động từ cấu hình mẫu báo giá trong phần Cài đặt Báo giá, đóng vai trò là watermark định danh thương hiệu doanh nghiệp trên mỗi file báo giá xuất ra.
    • Tiêu đề tài liệu: Chữ “BÁO GIÁ” (in đậm, căn giữa) kèm Số báo giá (ví dụ: Số: ETRON1234).
    • Thông tin khách hàng & báo giá:
      • Kính gửi: Tên khách hàng.
      • Số điện thoại, Email, Địa chỉ của khách hàng.
      • Người báo giá: Tên nhân viên phụ trách kèm Email và Số điện thoại.
      • Ngày báo giá và Hiệu lực đến ngày (lấy từ trường Ngày hết hạn báo giá).
      • Dòng lời dẫn: “Chúng tôi xin gửi tới quý khách hàng bản báo giá cho các sản phẩm như bảng đính kèm theo đây.”
    • Bảng sản phẩm:

      STT Tên sản phẩm ĐVT SL Đơn giá VAT Thành tiền
      1 Mì chính ABC Gói 3 200.000 10% 200.000
      Tổng           600.000
      Chiết khấu         10% 60.000
      Phí vận chuyển         - 30.000
      Tổng cộng           630.000
      • Tổng và các dòng điều chỉnh (chiết khấu, phí…) hiển thị tương ứng với dữ liệu cấu hình trên form báo giá.
    • Nội dung, điều khoản đi kèm: Hiển thị nội dung ghi chú từ trường Nội dung của báo giá.
    • Ngày ký và chữ ký:
      • Ngày tháng năm (ví dụ: Hà Nội, ngày 03 tháng 06 năm 2025).
      • Chức danh và Tên người ký (ví dụ: Giám đốc / Nguyễn Văn A) — lấy từ cấu hình mẫu báo giá.
  • Lưu ý kỹ thuật:
    • Thông tin header công ty (tên công ty, số điện thoại, email, MST) phải được cấu hình sẵn trong Cài đặt > Cài đặt dữ liệu > Báo giá > Mẫu báo giá & chữ ký thì mới hiển thị trên file xuất.
    • Nếu chưa cấu hình, phần header công ty sẽ để trống hoặc hiển thị placeholder.

9. Cài đặt Báo giá (Quote Settings)

  • Mô tả: Trang cấu hình tập trung cho module Báo giá, truy cập từ Cài đặt > Cài đặt dữ liệu > Báo giá.
  • Bố cục trang: Có 2 tab ở góc trên bên phải:
    • Trường thông tin: Quản lý các trường dữ liệu tùy chỉnh của đối tượng Báo giá (tương tự các đối tượng CRM khác).
    • Cấu hình: Cài đặt các quy tắc nghiệp vụ và mẫu file xuất của module Báo giá (mô tả chi tiết bên dưới).

Tab Cấu hình

A. Mẫu báo giá & chữ ký

  • Danh sách các mẫu template file xuất đã được tạo (ví dụ: Mẫu báo giá 1, Mẫu báo giá 2…).
  • Mỗi mẫu có 2 hành động:
    • Chỉnh sửa (✏ Bút): Mở popup Tùy chỉnh mẫu báo giá để chỉnh sửa nội dung mẫu.
    • Xem (👁 Xem): Xem trước nội dung template trước khi áp dụng.
  • Có link “Hướng dẫn sử dụng mẫu báo giá” để người dùng xem tài liệu hướng dẫn cấu hình mẫu.

Popup Tùy chỉnh mẫu báo giá:

  • Logo công ty: Upload file ảnh logo (định dạng PNG/JPG). Hiển thị link file đã upload (ví dụ: xxx.png). Logo sẽ xuất hiện ở phần header của file báo giá xuất ra.
  • Tên công ty (bắt buộc): Tên doanh nghiệp hiển thị trên file báo giá (ví dụ: Công ty Cổ phần Giải pháp ETRON).
  • Số điện thoại: Số điện thoại công ty hiển thị trên file báo giá.
  • Email: Email công ty hiển thị trên file báo giá.
  • Mã số thuế (MST): Mã số thuế doanh nghiệp hiển thị trên file báo giá.
  • Địa chỉ: Dropdown chọn tỉnh/thành phố.
  • Mẫu chữ ký: Upload file ảnh chữ ký (định dạng PNG/JPG). Hiển thị link file đã upload (ví dụ: xxx.png). Chữ ký sẽ xuất hiện ở phần ký tên cuối file báo giá.
  • Họ và tên người ký: Tên người có thẩm quyền ký báo giá (ví dụ: Nguyễn Văn A).
  • Chức vụ người ký: Chức danh của người ký (ví dụ: Giám đốc).
  • Nút Hủy / Lưu lại: Hủy thay đổi hoặc lưu cấu hình mẫu.

B. Cấu hình mặc định

  • Đặt mặc định thời gian hiệu lực của báo giá (Checkbox bật/tắt):
    • Khi bật: Hiển thị thêm trường Thời gian hiệu lực (nhập số ngày, ví dụ: 60 ngày).
    • Khi tạo báo giá mới, hệ thống sẽ tự động điền (autofill) trường Ngày hết hạn báo giá = Ngày tạo + Số ngày hiệu lực cấu hình.
  • Báo giá có yêu cầu phê duyệt (Checkbox bật/tắt):
    • Khi bật: Hiển thị thêm dropdown chọn Người duyệt mặc định (ví dụ: Nguyễn Văn A).
    • Khi bật tính năng này, nhân viên bán hàng phải bấm “Gửi phê duyệt” và chờ Quản lý duyệt trước khi báo giá có hiệu lực gửi khách.
  • Chỉ cần duyệt khi có chiết khấu, thuế, phí bổ sung (Checkbox bật/tắt):
    • Phụ thuộc vào cấu hình “Báo giá có yêu cầu phê duyệt” ở trên.
    • Khi bật: Hệ thống chỉ yêu cầu gửi phê duyệt nếu trên báo giá có thêm các dòng chiết khấu, thuế, hoặc phí bổ sung. Báo giá chỉ có đơn giá sản phẩm gốc sẽ không cần duyệt.
  • Nút Lưu lại: Lưu toàn bộ cấu hình mặc định.

3. Danh sách nghiệp vụ

  • Quy tắc tính toán Thuế, Phí, Giảm giá chung (Tính lũy kế lần lượt từ trên xuống):
    • Tương tự như Đơn hàng, khi áp dụng nhiều Thuế, Phí, Giảm giá cùng lúc, hệ thống tính toán lũy kế lần lượt theo thứ tự hiển thị từ trên xuống dưới.
  • Quy tắc khóa dữ liệu:
    • Khi báo giá chuyển sang các trạng thái Chờ duyệt, Đã duyệt, Đã hết hạn, hoặc Không được duyệt, hệ thống sẽ khóa toàn bộ dữ liệu trên form (read-only), không cho phép chỉnh sửa sản phẩm hay thông tin liên quan (trừ Admin hoặc người có quyền quản trị tối cao).

4. Giao diện

  • Giao diện Tạo báo giá mới: Xem hình ảnh đính kèm.
  • Bố cục form tạo/sửa: Chia làm 2 phần:
    • Bên trái: Bảng danh sách sản phẩm, Bảng tính toán thanh toán (Thuế, phí, giảm giá, thành tiền), và các bước trạng thái dưới cùng.
    • Bên phải: Thông tin liên hệ và Thông tin báo giá (Mã báo giá, Nhân viên phụ trách, Ngày hết hạn, Nội dung, Custom field).

Màn hình Danh sách Báo giá (Quote List)

  • Mô tả: Màn hình quản lý toàn bộ danh sách báo giá của workspace, hỗ trợ lọc, tìm kiếm và thao tác hàng loạt.
  • Thanh công cụ phía trên (Toolbar):
    • Multiple Views (Tab): Cho phép người dùng lưu và chuyển đổi giữa các cấu hình view khác nhau (View 1, View 2, View 3, View 4, View 5…) và nút + để tạo view mới. Nút Tất cả để hiển thị toàn bộ không lọc.
    • Tải lên: Nút nhập dữ liệu báo giá từ file.
    • Thêm báo : Nút tạo báo giá mới (nút xanh đậm, góc trên bên phải).
  • Bộ lọc (Filter Bar):
    • Trạng thái: Lọc theo trạng thái báo giá (Bản nháp, Chờ duyệt, Đã duyệt, Đã hết hạn, Không được duyệt).
    • Nhân viên: Lọc theo nhân viên phụ trách.
    • Thời gian khởi tạo: Lọc theo khoảng thời gian tạo báo giá.
    • Sản phẩm: Lọc theo sản phẩm có trong báo giá.
    • Lọc nâng cao: Mở panel bộ lọc nâng cao với các điều kiện tùy chỉnh.
    • Ô tìm kiếm: Tìm kiếm nhanh báo giá theo mã báo giá, tên khách hàng…
  • Thanh hành động hàng loạt (Bulk Actions): Hiển thị khi chọn ít nhất 1 dòng:
    • Hiển thị số lượng đã chọn (ví dụ: Đã chọn 10 liên hệ. Chọn tất cả).
    • Sửa: Chỉnh sửa hàng loạt các báo giá đã chọn.
    • Xóa: Xóa hàng loạt.
    • … (Thêm): Các hành động bổ sung (ví dụ: Xuất dữ liệu).
  • Bảng dữ liệu (Data Table):
    • Cột Checkbox: Chọn 1 hoặc nhiều dòng để thao tác hàng loạt.
    • Cột Báo giá: Hiển thị mã báo giá (ví dụ: #BG1234), là link bấm vào để mở modal chi tiết báo giá.
    • Cột Khách hàng: Hiển thị avatar và tên khách hàng được báo giá.
    • Cột Trạng thái: Hiển thị trạng thái hiện tại của báo giá với màu sắc phân biệt:
      • Bản nháp — màu xanh lá.
      • Chờ duyệt — màu cam.
      • Đã duyệt — màu xanh lá đậm.
      • Đã hết hạn — màu xám.
      • Không được duyệt — màu đỏ.
    • Cột Nhân viên phụ trách: Hiển thị avatar và tên nhân viên phụ trách báo giá.
    • Cột Tổng tiền: Hiển thị giá trị Thành tiền của báo giá (ví dụ: 123,000,000,000 đ).
    • Cột Thời gian khởi tạo: Hiển thị ngày giờ tạo báo giá (ví dụ: 12/12/2025 12:12).
    • Cột Thời gian hết hạn: Hiển thị ngày giờ hết hạn của báo giá.
    • Cột Hành động (Actions): Các biểu tượng hành động nhanh ở cuối mỗi dòng:
      • Icon Tải xuống / Copy: Sao chép hoặc tải báo giá ra file.
      • Icon Chỉnh sửa (Bút): Mở modal chỉnh sửa báo giá (chỉ hoạt động với trạng thái Bản nháp).
      • Icon Xóa (Thùng rác đỏ): Xóa báo giá.
  • Phân trang (Pagination): Hiển thị các nút chuyển trang và bộ chọn số bản ghi mỗi trang (10/page).

III. Yêu cầu phi chức năng

[TODO: Hiệu năng, bảo mật, giới hạn…]


IV. Dependency (liên quan & phụ thuộc)

[TODO: Các tính năng hoặc service khác liên quan]


V. API Contract (dev viết)


VI. Test case (BA hoặc tester viết)

[TODO: Luồng Test Case (Happy/Exception)]