Factorizer/Cluster ERP WikiCluster ERP Türkçe
Home / Business modules

Reference

RFQ inbox

Reference for the inbox sub-module of crm, which stores inbound RFQ e-mails and matches them to customer RFQs or marks them as spam.

This page describes the inbox sub-module of src/cluster_erp/modules/crm/. An inbox message (RfqInboxMessage) is an inbound e-mail about a customer RFQ, stored with its headers, bodies, and a match status. A message is matched to an RFQ automatically at creation or by hand, or marked as spam. Customer RFQs are described on RFQs.

Scope and source

  • Defined in: src/cluster_erp/modules/crm/inbox/models.py (RfqInboxMessage), services.py, routes.py, and metadata.py.
  • Count: 1 table, 8 routes (@router. decorators), 2 ActionMeta entries.

Message fields

Name Meaning Source
rfq_id The matched RFQ; a database foreign key to crm_rfqs src/cluster_erp/modules/crm/inbox/models.py:16-21
from_email, to_email, subject Mail headers src/cluster_erp/modules/crm/inbox/models.py:22-24
body_text, body_html Mail bodies src/cluster_erp/modules/crm/inbox/models.py:25-26
received_at Receipt time src/cluster_erp/modules/crm/inbox/models.py:27
raw_eml_file_id, attachments_count The stored raw message and its attachment count src/cluster_erp/modules/crm/inbox/models.py:31-40
match_status unmatched (default), auto_matched, manual_matched, or spam src/cluster_erp/modules/crm/inbox/models.py:41-47, src/cluster_erp/modules/crm/inbox/services.py:78-126
in_reply_to, references_header Threading headers src/cluster_erp/modules/crm/inbox/models.py:48-49

Actions

Action Label Condition Endpoint Permission Source
match Match to RFQ none POST /inbox/{id}/match inbox_message.match src/cluster_erp/modules/crm/inbox/metadata.py:55-64, src/cluster_erp/modules/crm/inbox/routes.py:119
spam Mark as Spam none POST /inbox/{id}/spam inbox_message.spam src/cluster_erp/modules/crm/inbox/metadata.py:65-74, src/cluster_erp/modules/crm/inbox/routes.py:134

Inbox routes

Method and path Permission Source
GET /inbox/, GET /inbox/{message_id} inbox_message.read src/cluster_erp/modules/crm/inbox/routes.py:25, src/cluster_erp/modules/crm/inbox/routes.py:63
POST /inbox/ inbox_message.create src/cluster_erp/modules/crm/inbox/routes.py:51
PUT /inbox/{message_id} inbox_message.update src/cluster_erp/modules/crm/inbox/routes.py:77
DELETE /inbox/{message_id}, POST /inbox/bulk-delete inbox_message.delete, inbox_message.bulk_delete src/cluster_erp/modules/crm/inbox/routes.py:92-104

Constraints and validation

  • A message created with an rfq_id must point at a live RFQ and is stored as auto_matched (src/cluster_erp/modules/crm/inbox/services.py:67-81).
  • Manual matching checks that the RFQ is live and sets manual_matched (src/cluster_erp/modules/crm/inbox/services.py:97-118).
  • spam sets match_status to spam (src/cluster_erp/modules/crm/inbox/services.py:119-131).
  • The list can filter by match status (src/cluster_erp/modules/crm/inbox/services.py:29-45).
  • Messages enter through POST /inbox/; a grep for RfqInboxMessage and crm_rfq_inbox_messages outside src/cluster_erp/modules/crm/ finds no other writer.
  • The module's privacy_handlers.py covers customer facets; a grep for inbox in it finds no handling of inbox messages (src/cluster_erp/modules/crm/privacy_handlers.py:1-12).

Terms introduced

Term Code identifier Definition Turkish term Source
inbox message RfqInboxMessage An inbound e-mail about a customer RFQ, with its match status. Gelen kutusu mesajı src/cluster_erp/modules/crm/inbox/models.py:13
match status match_status Whether a message is linked to an RFQ, and how, or marked spam. Eşleşme durumu src/cluster_erp/modules/crm/inbox/models.py:41-47

Verified against commit 92f8051 on 2026-11-13.

Verified against commit 92f8051 · 2026-11-13