Chuyển tới nội dung chính

Cập nhật đơn nhập - xuất từ vận hành

PUT 

/v1/tms/order-requests/:shownCode

Cập nhật từng phần một đơn nhập - xuất ở trạng thái NEW hoặc CONFIRMED. Ngoài username, body phải chứa ít nhất một field cần thay đổi.

Field không được phép cập nhật:

Field cấmLý do
shown_code, typeĐịnh danh và loại dịch vụ cố định khi tạo (type chỉ dùng lookup)
zoneKhông đổi qua API cập nhật
route.descriptionKhông thuộc partial route update
workflowKhông thuộc phạm vi partial update
shipping_schedule.servicesKhông thuộc contract GOM khuyến nghị

Quy tắc route (partial):

  • Cho phép: pickup_place (ICD), warehouse XOR warehouses[], dropoff_place, code, name.
  • name: dùng khi tạo tuyến mới (find miss); tái sử dụng tuyến cũ thì giữ tên hiện có.
  • Mỗi place gửi lên cần code, name, address.street.
  • Đổi kho / dropoff / code → find hoặc tạo tuyến khớp (ordered warehouses + dropoff + code), gán OR và PLAN ngay.
  • Khi đã có ACTUAL → pending_updates (overwrite 0|1): payload giữ places để UI điều phối; stamp route.id để accept chỉ gán link tuyến.

Hủy qua PUT (status):

  • Giá trị cancel (không phân biệt hoa thường): CANCELED, CANCELLED, REJECTED, CC.
  • Bắt buộc reasons (mảng mã lý do khớp loại đơn).
  • Bắt buộc expenses[] có phần tử expense_type.key = allowance_fee (phí bồi thường).

Quy tắc expenses (partial):

  • Cùng shape create: expense_type.key (+ name tùy chọn), amount, note.
  • Chỉ upsert các loại phí được gửi; không gửi thì không đổi phí hiện có.
  • API find-or-create ExpenseType theo key, stamp id vào pending để trucking accept nhanh.

Quy tắc details:

  • Chỉ nhận đúng một phần tử và cập nhật dòng detail liên kết đầu tiên của đơn nhập - xuất (và đơn kế hoạch nếu có); không tìm theo container_number.
  • Không thêm hoặc xóa container. Nếu đơn chưa có dòng detail liên kết → 400.
  • container_pickup_date: Ngày đóng / trả hàng (ISO 8601).

Quy tắc khác:

  • materials, merchandise_typescontacts được thay thế bằng danh sách gửi lên.
  • reasons có thể gửi kèm cập nhật thường (lý do thay đổi); bắt buộc khi hủy.
  • Đơn thực tế (ACTUAL) ở trạng thái COMPLETED hoặc CANCELED không được cập nhật.
  • inventory_check nhận /Không; nếu gửi boolean thì được chuẩn hóa thành /Không.
  • route.return_warehouse chưa hỗ trợ trên PUT.

Request

Responses

HTTP 200: thành công (body status 200) hoặc lỗi xác thực trong body (status 401).