Bỏ qua để đến nội dung

Hoàn cọc (Deposit Refund)

Khi KH cancel Đặt cọc hoặc HĐ terminate → cần hoàn cọc 1 phần hoặc toàn bộ theo refund policy.

Đã setup ở Đặt cọc → Tab Refund Policy:

ChiềuÁp dụng khiOptions
Customer-sideKH chủ động huỷFull / Partial 50% / Nonrefund
Developer-sideChủ đầu tư đơn phương / vi phạmFull + interest 5% / Full / Partial / Nonrefund
  • KH gửi văn bản yêu cầu huỷ → Sales rep tạo Termination
  • Manager approve
  • State → cancelled / terminated

Wizard cancel auto-compute dựa trên policy:

customer_voluntary + partial(50%):
refund = deposit_paid_amount × 0.5
developer_unilateral + full+interest(5%):
days_held = (today - deposit_date).days
interest = deposit_paid_amount × 5% × (days_held / 365)
refund = deposit_paid_amount + interest
force_majeure + full:
refund = deposit_paid_amount (không interest)
  • Model: account.move, type = out_refund
  • Partner: KH
  • Amount: computed refund amount (âm)
  • Line: description “Hoàn cọc HĐ ZC-2026-XXX theo Điều 5.3”
  • State: Draft → FC review + Post
  • Verify amount
  • Reconcile với payment original Deposit (Odoo tự suggest)
  • Post → journal entry:
    • Debit: 138 (Phải trả KH — hoặc offset 131)
    • Credit: 111/112 (Cash/Bank sẽ chi)
  • Bank statement: chuyển từ TK công ty → TK KH
  • Amount: refund total
  • Reference: “Refund DA-2026-018”
  • Direction: “Send Money” (money out)
  • Journal: Bank
  • Amount: refund
  • Date: ngày chuyển tiền thực tế
  • Deposit / Contract chatter log “Refunded X VND on DD/MM/YYYY”
  • FC mark task done

Deposit DA-2026-018:

  • Deposit amount: 3,000,000,000 VND
  • Deposit paid: 3,000,000,000 VND (đã trả full)
  • Customer refund policy: Partial 50%
  • Developer refund policy: Full + 5% interest
  • Policy applied: Customer 50%
  • Refund = 3,000M × 50% = 1,500,000,000 VND
  • Giữ lại 1,500M (không refund)
  • Policy applied: Developer Full + 5% interest
  • Days held: 120 ngày
  • Interest = 3,000M × 5% × (120/365) = 49,315,068 VND
  • Refund = 3,000M + 49.3M = 3,049,315,068 VND

Nếu Đại muốn override policy compute:

  1. Wizard cancel Deposit → check “Override refund amount”
  2. Nhập custom amount + lý do
  3. Wizard tạo Credit Note với amount custom
  4. Manager có thể yêu cầu approve nếu vượt threshold

Trong tab Refund của Deposit / Contract:

FieldValue
Refund policy appliedcustomer_voluntary / partial(50%)
Refund amount computed1,500,000,000
Refund invoiceINV-CN-2026-042 (link)
Refund stateDraft / Posted / Paid
Refund date paid20/8/2026

Báo cáo → Deposit Refund Report (task #1 completed):

  • List tất cả deposits cancelled với refund amount
  • Tổng refund per KCN / per quarter
  • Trend refund rate qua thời gian

Nếu refund rate > 20% → có vấn đề trong Sales / Onboarding, Manager cần investigate.

  • Tính net settlement: refund - outstanding
  • Vd: refund 1.5B, outstanding 300M → net refund = 1.2B
  • FC compute + trả 1.2B (thay vì 1.5B rồi thu 300M riêng)
  • Ghi vào Chatter Deposit: “KH refused refund, no bank info provided”
  • Refund Invoice keep Draft (không post)
  • Sau 6 tháng, nếu KH vẫn không claim → có thể write off theo policy (Manager quyết)
  • Deposit gốc USD, KH muốn nhận VND
  • Compute VND theo tỷ giá hôm hoàn
  • Ghi exchange gain/loss nếu tỷ giá khác thời điểm Deposit

Theo HĐ. Thường:

  • Customer voluntary: 30 ngày kể từ ngày ký thoả thuận cancel
  • Developer unilateral: 15 ngày
  • Force majeure: 60 ngày

Đối trừ refund với HĐ khác (nếu KH có nhiều HĐ)

Phần tiêu đề “Đối trừ refund với HĐ khác (nếu KH có nhiều HĐ)”

Có. Reconcile Credit Note với các Invoices unpaid khác của cùng KH → giảm nợ thay vì chuyển tiền.

Manual reconcile trong Kế toán → Reconciliation.

Credit Note tự có VAT đối ứng (âm). Vd Deposit gốc có VAT 10% → Credit Note VAT -10%.

Nếu Deposit không VAT (rare, chỉ deposit thuần không dịch vụ) → Credit Note không VAT.

Chia sẻ: