Centurio Система и модульная документация
🏛️ Архитектура платформы 🔑 Login
🏠 Все модули / supply_chain / Возвратные и жалобы
↩️

Возвратные и жалобы

returns supply_chain 🛡️ RLS Protected

Управление возвратом для клиентов и поставщиков, проверка качества, хранение и оформление кредитов.

Fachliche Bestimmung: Общий процесс РМА (авторизация возвращения товаров). Клиенты или техники обслуживания сообщают о возвращениях. Система присваивает номер РМА, проводит проверку качества и ошибок рабочего склада, возвращает в склад товары без ошибок и автоматически инициирует создание кредитов или заменных поставок.

⚡ Рабочие процессы и жизненные циклы

Проверка возврата РМА и учет rma_workflow

От поступления взносов до технического осмотра до кредитования.

stateDiagram-v2 [*] --> REGISTER: RMA anlegen REGISTER --> RECEIVE: Ware trifft ein RECEIVE --> INSPECT: Qualitätsprüfung INSPECT --> RESTOCK: Ware einwandfrei -> Lagerzubuchung INSPECT --> SCRAP: Defekt -> Schrottbuchung RESTOCK --> SETTLE: Gutschrift auslösen SCRAP --> SETTLE: Kulanz- / Garantiegutschrift SETTLE --> [*]
1. REGISTER
Заявление о возвращении
клиент или внутренняя служба сообщает о возвращении с grounds.
Aktionen: Указанный номер РМА
2. RECEIVE
Вход и идентификация
Пакет входит в склад, сканирование штрих-кода RMA.
Aktionen: Проверка
3. INSPECT
Проверка состояния
Проверка: Новая, используемая, нуждающаяся в ремонте или отходовая.
Aktionen: Документирование результатов проверки
4. SETTLE
Оплата
Вновь вкладывать в склад или обесценивать, выкупая кредит.
Aktionen: Создание кредита

Возврат status:return_order

Осуществляемая машина (особенно наблюдаемое)

1. draft
Проект
Статус <unk>проект <unk> возвращения машины состояния.
2. requested
Продаваемое
Статус <unk>requested <unk> возвращение машины состояния.
3. approved
утвержден
Статус <unk>одобрил<unk> станции возвращения машины.
4. rejected
Отклоненные
Статус <unk>отклонен <unk> возвращение станции.
5. in_transit
in_transit
Статус <unk>in_transit<unk> возвращения машины состояния.
6. part_received
part_received
Статус <unk>part_received <unk> возвращение машины состояния.
7. received
Принятые
Статус <unk>принято <unk> возвращение станции.
8. inspected
Проведенный
Статус <unk>inspected<unk> станции машины возвращения.
9. resolved
Решенное
Статус <unk>орегулирован <unk> возвращение станции.
10. closed
закрытые
Статус <unk>закрыт<unk> возвращение машины состояния.
11. cancelled
отменены
Статус <unk>отменен <unk> возвращение станции.

🗄️ Модели данных & поля

ReturnLines return_lines RLS Aktiv
30 Поле / столбцы

Tabelle return_lines

Feldname Тип данных Обязательность Schlüssel Профессиональное значение
return_id UUID Ja * FK ➔ return_orders.id Feld return_id
position INTEGER Ja * - Feld position
stock_owner VARCHAR(16) Ja * - Feld stock_owner
product_id UUID Nein FK ➔ products.id Feld product_id
stored_article_id UUID Nein FK ➔ stored_articles.id Feld stored_article_id
asset_id UUID Nein FK ➔ assets.id Feld asset_id
invoice_item_id UUID Nein - Feld invoice_item_id
description VARCHAR(255) Ja * - Feld description
unit VARCHAR(32) Ja * - Feld unit
unit_price NUMERIC(14, 2) Nein - Feld unit_price
tax_rate NUMERIC(6, 3) Nein - Feld tax_rate
quantity_requested NUMERIC(14, 4) Ja * - Feld quantity_requested
quantity_received NUMERIC(14, 4) Ja * - Feld quantity_received
quantity_accepted NUMERIC(14, 4) Ja * - Feld quantity_accepted
from_location_id UUID Nein FK ➔ locations.id Feld from_location_id
tracking_codes JSONB Ja * - Feld tracking_codes
reason_id UUID Nein FK ➔ return_reasons.id Feld reason_id
condition_grade VARCHAR(1) Nein - Feld condition_grade
disposition VARCHAR(24) Nein - Feld disposition
disposition_location_id UUID Nein FK ➔ locations.id Feld disposition_location_id
disposed_at DATETIME Nein - Feld disposed_at
unit_cost NUMERIC(14, 2) Nein - Feld unit_cost
inspection_notes TEXT Nein - Feld inspection_notes
photo_document_ids JSONB Ja * - Feld photo_document_ids
child_return_id UUID Nein - Feld child_return_id
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ReturnNotes return_notes RLS Aktiv
9 Поле / столбцы

Tabelle return_notes

Feldname Тип данных Обязательность Schlüssel Профессиональное значение
return_id UUID Ja * FK ➔ return_orders.id Feld return_id
author_id UUID Nein - Feld author_id
kind VARCHAR(16) Ja * - Feld kind
body TEXT Ja * - Feld body
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
metadata JSONB Ja * - Feld metadata
ReturnOrders return_orders RLS Aktiv
46 Поле / столбцы

Tabelle return_orders

Feldname Тип данных Обязательность Schlüssel Профессиональное значение
rma_number VARCHAR(64) Ja * - Feld rma_number
kind VARCHAR(24) Ja * - Feld kind
status VARCHAR(16) Ja * - Feld status
channel VARCHAR(16) Ja * - Feld channel
public_token UUID Ja * - Feld public_token
customer_id UUID Nein FK ➔ customers.id Feld customer_id
supplier_id UUID Nein FK ➔ suppliers.id Feld supplier_id
contract_id UUID Nein FK ➔ contracts.id Feld contract_id
invoice_id UUID Nein - Feld invoice_id
work_order_id UUID Nein - Feld work_order_id
project_id UUID Nein - Feld project_id
rental_booking_id UUID Nein FK ➔ rental_bookings.id Feld rental_booking_id
ticket_id UUID Nein FK ➔ tickets.id Feld ticket_id
parent_return_id UUID Nein - Feld parent_return_id
policy_id UUID Nein - Feld policy_id
reason_id UUID Nein FK ➔ return_reasons.id Feld reason_id
reason_text TEXT Nein - Feld reason_text
resolution VARCHAR(24) Nein - Feld resolution
restocking_fee_percent NUMERIC(5, 2) Ja * - Feld restocking_fee_percent
credit_note_id UUID Nein - Feld credit_note_id
replacement_ref VARCHAR(255) Nein - Feld replacement_ref
repair_work_order_id UUID Nein - Feld repair_work_order_id
charge_invoice_id UUID Nein - Feld charge_invoice_id
credit_amount NUMERIC(14, 2) Nein - Feld credit_amount
carrier VARCHAR(128) Nein - Feld carrier
tracking_number VARCHAR(128) Nein - Feld tracking_number
return_location_id UUID Nein FK ➔ locations.id Feld return_location_id
pickup_address TEXT Nein - Feld pickup_address
risk_score INTEGER Ja * - Feld risk_score
risk_flags JSONB Ja * - Feld risk_flags
requested_at DATETIME Nein - Feld requested_at
approved_at DATETIME Nein - Feld approved_at
shipped_at DATETIME Nein - Feld shipped_at
received_at DATETIME Nein - Feld received_at
inspected_at DATETIME Nein - Feld inspected_at
resolved_at DATETIME Nein - Feld resolved_at
notes TEXT Nein - Feld notes
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
ReturnPolicies return_policies RLS Aktiv
22 Поле / столбцы

Tabelle return_policies

Feldname Тип данных Обязательность Schlüssel Профессиональное значение
name VARCHAR(255) Ja * - Feld name
customer_id UUID Nein FK ➔ customers.id Feld customer_id
contract_id UUID Nein FK ➔ contracts.id Feld contract_id
is_default BOOLEAN Ja * - Feld is_default
window_days INTEGER Ja * - Feld window_days
auto_approve BOOLEAN Ja * - Feld auto_approve
restocking_fee_percent NUMERIC(5, 2) Ja * - Feld restocking_fee_percent
require_inspection BOOLEAN Ja * - Feld require_inspection
shipping_paid_by VARCHAR(16) Ja * - Feld shipping_paid_by
grade_credit_percent JSONB Ja * - Feld grade_credit_percent
condition_matrix JSONB Ja * - Feld condition_matrix
max_return_rate_percent NUMERIC(5, 2) Ja * - Feld max_return_rate_percent
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata
ReturnReasons return_reasons RLS Aktiv
16 Поле / столбцы

Tabelle return_reasons

Feldname Тип данных Обязательность Schlüssel Профессиональное значение
code VARCHAR(32) Ja * - Feld code
label VARCHAR(255) Ja * - Feld label
category VARCHAR(32) Ja * - Feld category
fault_party VARCHAR(16) Ja * - Feld fault_party
default_disposition VARCHAR(24) Nein - Feld default_disposition
default_resolution VARCHAR(24) Nein - Feld default_resolution
active BOOLEAN Ja * - Feld active
id UUID Nein PK Feld id
tenant_id UUID Ja * FK ➔ organizations.id Feld tenant_id
created_at DATETIME Ja * - Feld created_at
updated_at DATETIME Ja * - Feld updated_at
created_by UUID Nein - Feld created_by
updated_by UUID Nein - Feld updated_by
source_type VARCHAR(32) Nein - Feld source_type
source_id UUID Nein - Feld source_id
metadata JSONB Ja * - Feld metadata

🔌 Входные пункты (UI & API)

Art Метод Конечный пункт / путь Titel & Zweck Право на
⚡ REST API GET /api/v1/returns
list_returns
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /api/v1/returns/analytics
Аналитика
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /api/v1/returns/contract/{contract_id}/returnables
contract_returnables
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /api/v1/returns/invoice/{invoice_id}/items
invoice_items
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /api/v1/returns/meta
мета
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /api/v1/returns/party-context
party_context
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /api/v1/returns/policies
list_policies
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /api/v1/returns/reasons
list_reasons
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /api/v1/returns/{return_id}
get_return
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /api/v1/returns/{return_id}/credit-preview
credit_preview
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /portal/{slug}/retouren
returns_page
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /pub/retoure/status/{token}
return_status
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /pub/retoure/status/{token}/slip
return_slip
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /pub/retoure/{tenant_id}
return_form
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /returns
returns_list_page
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /returns/analytics
returns_analytics_page
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /returns/new
returns_new_page
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /returns/settings
returns_settings_page
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /returns/{return_id}
returns_detail_page
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API GET /returns/{return_id}/print
returns_print_page
Semantic binding: not_evaluated; mutation=False
returns
⚡ REST API PATCH /api/v1/returns/policies/{policy_id}
update_policy
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API PATCH /api/v1/returns/reasons/{reason_id}
update_reason
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns
create_return
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/collective-credit-note
create_collective_credit_note
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/policies
create_policy
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/reasons
create_reason
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/{return_id}/approve
утвердить
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/{return_id}/cancel
отменить
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/{return_id}/close
ближайшее
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/{return_id}/escalate-ticket
escalate_to_ticket
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/{return_id}/inspect
инспекция
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/{return_id}/lines/{line_id}/photos
add_photos
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/{return_id}/notes
add_note
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/{return_id}/receive
Прием
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/{return_id}/reject
Отказать
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/{return_id}/resolve
Регулирование
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /api/v1/returns/{return_id}/ship
судно
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /portal/{slug}/retouren/anfordern
return_request
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /pub/retoure/{tenant_id}
return_lookup
Semantic binding: not_evaluated; mutation=True
returns
⚡ REST API POST /pub/retoure/{tenant_id}/submit
return_submit
Semantic binding: not_evaluated; mutation=True
returns

🛡️ Регуляторство и соответствие

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • BGB Право на отмену (§355)
  • Право на гарантию (§ 437 BGB)
  • Доказательство кредитов
Связанные модули:
➔ inventory ➔ finance ➔ customers ➔ portal