Bạn không được phép đặt thủ công trạng thái đơn hàng thành 'hoàn thành' và bạn sẽ nhận được ngoại lệ này khi bạn gọi setState
theo đơn đặt hàng với trạng thái 'hoàn thành':
Trạng thái Đặt hàng "hoàn thành" không được đặt thủ công.
Lý do cho điều này rất đơn giản: Trạng thái 'hoàn thành' (và trạng thái, vì đó là trạng thái duy nhất có trạng thái 'hoàn thành') nhằm chỉ ra rằng một đơn hàng đã được điền đầy đủ. Tức là nó đã được đặt, lập hóa đơn và vận chuyển cho khách hàng.
Khi đơn hàng đã được lập hóa đơn và giao hàng, Magento sẽ tự động đặt trạng thái này trên đơn đặt hàng.
Nếu hệ thống thanh toán của bạn "không cho phép" trạng thái 'hoàn thành', thì tôi sẽ không tin tưởng nó, đặc biệt là nó được mã hóa ionCube. Tuy nhiên, nếu đó là vì nó xử lý việc lập hóa đơn bên ngoài Magento, thì bạn sẽ cần phải tạo hóa đơn "Ngoại tuyến" theo cách thủ công cho đơn đặt hàng để Magento nhận ra rằng nó đã được thanh toán.
Đừng cố gắng thay đổi bản thân bằng cách giải quyết vấn đề đơn hàng không đạt trạng thái hoàn thành như bình thường. Thay vào đó, hãy khắc phục sự cố thực tế bằng cách đảm bảo rằng các đơn đặt hàng được lập hóa đơn và vận chuyển trong Magento để chúng được hệ thống đánh dấu là hoàn thành.