- Diantar
- 11 November 2026 pukul 10.41 UTC
- Pengarang
- Kamo
- Kommit
- b05a5db
RecordInvoiceController adalah pintu tab Invoice untuk rekaman apapun - daftar, Buat Invoice, baca, PDF, Rekaman Pembayaran, Batalkan Invoice, delivery, send, link - hanya dengan hak, id, panggilan buat dan periksa kepemilikan yang tersisa setiap rekaman. ServiceJobInvoiceController (rute yang sama, hak yang sama) menjadi satu; OrderInvoiceController di bawah **************** adalah yang lain (View / Create & Edit Orders). Void Invoice (POST .../{invoice}/void, hak manajemen rekaman, alasan yang diperlukan): InvoicingService menolak invoice with payments; pada sukses setiap tautan pelanggan ditempelkan berakhir di sini, seperti relay's void sudah melakukannya. Email Receipt: setelah invoice dibayar, send () emails commerce.invoice_receipt (jumlah dibayar, tanggal dibayar, tidak pernah 'jumlah due') daripada menolak, dengan PDF dan tautan baru; baris tautan mencatat email_kind INVOICE atau RECEIPT dan Sent dan Shared menunjukkan yang mana. Catatan anggota sekarang HTML-escaped di kedua surel (render tidak escape apa-apa). Retail order payments are the order's: Rekor Pembayaran pada invoice sebuah pesanan ditolak (409, 'use Take Payment'), dan OrderInvoiceSettlement meminta InvoicingService untuk menyelesaikan invoice setelah Take Payment dan membatalkannya setelah Cancel (dalam **************** best-effort), dan ketika tab Invoice pesanan dibuka pada pesanan yang dibayar atau dibatalkan.
