Centurio Documentación de sistemas y módulos
🏛️ Arquitectura de la plataforma 🔑 Login
🏠 Todos los módulos / portal_ecosystem / Portable de clientes B2B
🌐

Portable de clientes B2B

portal portal_ecosystem 🛡️ RLS Protected

Servicio automático de múltiples mandantes para clientes: pedidos de catálogo, facturación, informes de servicio y asistencia.

Fachliche Bestimmung: Portal exclusivo de clientes B2B para clientes clientes. Ofrece 14 módulos especializados integrados (productos, pedidos con conjuntos de campos de atributos, ofertas, pedidos, informes de servicio, facturas, fechas, devoluciones, instalaciones y boletos de soporte).

⚡ Flujos de trabajo y ciclos de vida

En el caso de los servicios de gestión de los clientes, el sistema de gestión de los clientes se puede utilizar para realizar los servicios de gestión de los clientes. portal_order_cascade

Desde la cesta de mercancías en el portal de clientes hasta el instalación automático de presupuesto y el pedido de entrega.

sequenceDiagram Kunde im Portal->>PortalAPI: POST /portal/{slug}/bestellung (Positionen & Fieldsets) PortalAPI->>PortalAPI: validate_attribute_values() PortalAPI->>DB: INSERT INTO quotes (source_type = 'SYSTEM') PortalAPI->>DB: INSERT INTO work_orders (order_type = 'delivery', status = 'SCHEDULED') PortalAPI-->>Kunde im Portal: Bestätigungsseite & Auftragsnummer
1. CATALOG
Selección de productos
cliente selecciona productos y completa conjuntos de campos de atributos dinámicos.
Aktionen: Revisado obligatorio en el navegador
2. SUBMIT
Transmisión de pedidos
POST a /portal/{slug}/orden con atributos semánticos validados por tipo.
Aktionen: ejecutar orden_subject
3. QUOTE_GEN
Infraestructura de oferta
Sistema genera cuota con source_type= 'SYSTEM' y 'portal_order'.
Aktionen: Adoptando atributos semánticos
4. WORKORDER_GEN
Instalación de encargo
Producción automática del pedido de ejecución (orden de trabajo) en el LVS/ERP.
Aktionen: Las medidas de seguridad de las personas afectadas

En el caso de los productos de la industria de la Unión, el importe de los productos de la industria de la Unión debe ser igual a la de los productos de la Unión. plan:command_customer_crud_subagent

Plan durable comprobado (durable_plan), inicio: manual_command.

1. customer_crud_subagent
customer_crud_subagent
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Aktionen: customer_crud_subagent

Benutzerbefehl: portal admin agent plan:command_portal_admin_agent

Geprüfter Durable-Plan (unreviewed_plan), Start: manual_command.

1. portal_admin_agent
portal_admin_agent
{"key": "execute_command", "label": "Befehl prüfen, ausführen oder zur Freigabe vorlegen", "adapter": "agent.execute", "agent": "portal_admin_agent", "condition_fact": null}
Aktionen: portal_admin_agent

Se ha recibido la solicitud del portal de clientes plan:portal_request_dispatch

Plan durable verificado (durable_plan), inicio: dominio_event.

1. portal_request_dispatch_agent
portal_request_dispatch_agent
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Aktionen: portal_request_dispatch_agent

🗄️ Modelos de datos y campos

Customers customers RLS Aktiv
59 Cálculos y columnas

Tabelle customers

Feldname Tipo de datos Obligado Schlüssel Importancia profesional
type VARCHAR(48) Ja * - Feld type
name VARCHAR(255) Ja * - Feld name
customer_number VARCHAR(64) Nein - Feld customer_number
company_name VARCHAR(255) Nein - Feld company_name
parent_customer_id UUID Nein FK ➔ customers.id Feld parent_customer_id
billing_recipient_customer_id UUID Nein FK ➔ customers.id Feld billing_recipient_customer_id
main_contact_id UUID Nein FK ➔ contacts.id Feld main_contact_id
email VARCHAR(320) Nein - Feld email
phone VARCHAR(64) Nein - Feld phone
mobile VARCHAR(64) Nein - Feld mobile
street VARCHAR(255) Nein - Feld street
postal_code VARCHAR(16) Nein - Feld postal_code
city VARCHAR(128) Nein - Feld city
country_code VARCHAR(2) Nein - Feld country_code
latitude NUMERIC(9, 6) Nein - Feld latitude
longitude NUMERIC(9, 6) Nein - Feld longitude
tax_id VARCHAR(32) Nein - Feld tax_id
vat_id VARCHAR(32) Nein - Feld vat_id
peppol_endpoint_id VARCHAR(64) Nein - Feld peppol_endpoint_id
peppol_endpoint_scheme VARCHAR(16) Nein - Feld peppol_endpoint_scheme
category VARCHAR(48) Ja * - Feld category
website VARCHAR(255) Nein - Feld website
fax VARCHAR(64) Nein - Feld fax
iban VARCHAR(34) Nein - Feld iban
bic VARCHAR(11) Nein - Feld bic
bank_name VARCHAR(128) Nein - Feld bank_name
account_holder VARCHAR(255) Nein - Feld account_holder
payment_terms VARCHAR(128) Nein - Feld payment_terms
payment_term_code VARCHAR(32) Nein - Feld payment_term_code
discount_days INTEGER Nein - Feld discount_days
discount_percent NUMERIC(5, 2) Nein - Feld discount_percent
default_pricelist_id UUID Nein FK ➔ pricelists.id Feld default_pricelist_id
credit_limit NUMERIC(12, 2) Nein - Feld credit_limit
default_currency VARCHAR(3) Nein - Feld default_currency
language VARCHAR(10) Nein - Feld language
birthday DATE Nein - Feld birthday
department VARCHAR(128) Nein - Feld department
job_title VARCHAR(128) Nein - Feld job_title
external_reference VARCHAR(128) Nein - Feld external_reference
receivable_account_code VARCHAR(32) Nein - Feld receivable_account_code
payable_account_code VARCHAR(32) Nein - Feld payable_account_code
default_location_id UUID Nein FK ➔ locations.id Feld default_location_id
preferred_shipping_method VARCHAR(128) Nein - Feld preferred_shipping_method
purchasing_discount_group VARCHAR(128) Nein - Feld purchasing_discount_group
notes TEXT Nein - Feld notes
portal_enabled BOOLEAN Ja * - Feld portal_enabled
portal_features JSONB Nein - Feld portal_features
status VARCHAR(48) Ja * - Feld status
detection_confidence NUMERIC(4, 3) Nein - Feld detection_confidence
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
deleted_at DATETIME Nein - Feld deleted_at

🔌 Puntos de inicio (UI y API)

Art El método Punto final / camino Titel & Zweck Reacción
⚡ REST API DELETE /api/v1/customers/{customer_id}
delete_customer
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API DELETE /api/v1/customers/{customer_id}/contacts/{contact_id}
delete_contact
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API GET /api/v1/customers
list_customers
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/stats
customer_stats
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}
get_customer
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}/contacts
list_contacts
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}/invoice-recipient
get_invoice_recipient
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}/portal
customer_portal_state
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}/shop-rates
list_partner_shop_rates
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /api/v1/customers/{customer_id}/tree
get_customer_tree
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /customers
customers_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /customers/new
customer_create_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /customers/{customer_id}
customer_detail_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /customers/{customer_id}/edit
customer_detail_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /customers/{customer_id}/portal
customer_portal_admin_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API GET /portal/{slug}/profil
profile_page
Semantic binding: inventory_only; mutation=False
customers
⚡ REST API PATCH /api/v1/customers/{customer_id}
update_customer
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API PATCH /api/v1/customers/{customer_id}/contacts/{contact_id}
update_contact
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers
create_customer
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/contacts
create_contact
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/accounts
customer_portal_account_add
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/accounts/{account_id}/password
customer_portal_account_password
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/accounts/{account_id}/status
customer_portal_account_status
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/invites
customer_portal_invite
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/invites/{invite_id}/revoke
customer_portal_invite_revoke
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /api/v1/customers/{customer_id}/portal/toggle
customer_portal_toggle
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal
customer_portal_admin_save
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal/accounts
customer_portal_account_create
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal/accounts/{account_id}/password
customer_portal_account_password
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal/accounts/{account_id}/status
customer_portal_account_status
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal/invites
customer_portal_invite_create
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /customers/{customer_id}/portal/invites/{invite_id}/revoke
customer_portal_invite_revoke
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /portal/{slug}/profil
profile_submit
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /portal/{slug}/profil/kontakte
profile_contact_save
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /portal/{slug}/profil/kontakte/{contact_id}/loeschen
profile_contact_delete
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /portal/{slug}/profil/standorte
profile_location_save
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API POST /portal/{slug}/profil/standorte/{location_id}/deaktivieren
profile_location_deactivate
Semantic binding: operator_surface; mutation=True
customers
⚡ REST API PUT /api/v1/customers/{customer_id}/shop-rates
upsert_partner_shop_rate
Semantic binding: operator_surface; mutation=True
customers
🖥️ WEB-UI GET /portal/{slug}/
Página de inicio del portal
Dispositivos de control de la información y de control de datos
Standard
🖥️ WEB-UI GET /portal/{slug}/bestellung
Página de pedido del portal
Pedidos de catálogo con conjuntos de campo dinámicos
Standard
🖥️ WEB-UI GET /portal/{slug}/rechnungen
Las facturas del portal
Archivo de facturas y descarga de PDF
Standard
⚡ REST API POST /portal/{slug}/bestellung
Envío de pedidos
Valida conjuntos de campos y genera cuotas/orden de trabajo
Standard

🛡️ Regulación y cumplimiento

Dieses Modul unterliegt folgenden gesetzlichen, regulatorischen und Revisionsstandards:

  • Artículo 15 del RGPD (derecho a la información y a la accesibilidad a los datos)
  • Seguridad de datos B2B y aislamiento RLS
Modulos vinculados:
➔ customers ➔ finance ➔ workorders ➔ catalog ➔ returns