Factorizer/Cluster ERP WikiCluster ERP English
Ana sayfa / İş modülleri

Referans

Müşteri teklif talepleri

Crm içindeki rfqs, rfq_line_items ve rfq_line_materials için başvuru; teklif talebi alanları, durum makinesi, eksiksizlik denetimi, kalemler, malzemeler ve paketler.

Bu sayfa src/cluster_erp/modules/crm/ içindeki üç alt modülü anlatır: rfqs/, rfq_line_items/ ve rfq_line_materials/. Bir müşteri teklif talebi (Rfq), müşterinin şirketten fiyat istediği şeyi kaydeder: kalemlerini, her kalemin malzemelerini ve çizim ve dosya paketini. quotations modülündeki bir teklif onu yanıtlar. Şirketin kendi tedarikçilerine gönderdiği satın alma teklif talebi farklı bir kayıttır; bkz. satın alma teklif talepleri.

Kapsam ve kaynak

  • Tanımlandığı yer: rfqs/models.py (Rfq, RfqPackage), rfqs/services.py (RfqService, _ACTION_RULES), rfq_line_items ve rfq_line_materials alt modüllerinin aynı dosyaları ile routes.py ve metadata.py dosyaları.
  • Sayım: 4 tablo; 18 teklif talebi ucu, 6 kalem ucu ve 6 malzeme ucu (@router. dekoratörleri); 8 ActionMeta girdisi.

Teklif talebi alanları

Grup Alanlar Kaynak
Kimlik code (request_for_quotation yıllık dizisi), customer_id, subject, source (varsayılan manual) src/cluster_erp/modules/crm/rfqs/models.py:21-34, src/cluster_erp/modules/crm/rfqs/services.py:173
Zamanlama received_at, due_date, priority (varsayılan normal) src/cluster_erp/modules/crm/rfqs/models.py:35-48
Durum status (varsayılan new) src/cluster_erp/modules/crm/rfqs/models.py:49-55
Yaşam döngüsü kaydı assigned_to, assigned_at, assigned_by, quoted_at, quoted_by, won_at, won_by, lost_at, lost_by, lost_reason, expired_at, expired_by, declined_reason, declined_at, declined_by src/cluster_erp/modules/crm/rfqs/models.py:56-80
Portal başvurusu ariba_event_id src/cluster_erp/modules/crm/rfqs/models.py:81

Alt kayıtlar

Varlık Tablo Anahtar alanlar Kaynak
RfqPackage crm_rfq_packages code (rfq_package yıllık dizisi), rfq_id, name, folder_path, package_complete src/cluster_erp/modules/crm/rfqs/models.py:87-104, src/cluster_erp/modules/crm/rfqs/services.py:583
RfqLineItem crm_rfq_line_items rfq_id, line_no, part_no_customer, customer_part_id, description, qty (tamsayı), uom, material_spec, drawing_attachment_id, notes src/cluster_erp/modules/crm/rfq_line_items/models.py:12-42
RfqLineMaterial crm_rfq_line_materials rfq_line_item_id, seq, component_description, material_spec, notes src/cluster_erp/modules/crm/rfq_line_materials/models.py:12-30

Durumlar ve aksiyonlar

_ACTION_RULES her aksiyon için hedef durumu, izin verilen kaynak durumları ve bir neden gerekip gerekmediğini adlandırır (src/cluster_erp/modules/crm/rfqs/services.py:60-72).

stateDiagram-v2
 [*] --> new
 new --> in_review: assign
 in_review --> in_review: assign
 in_review --> quoted: quote
 new --> declined: decline
 in_review --> declined: decline
 new --> expired: expire
 in_review --> expired: expire
 quoted --> expired: expire
 quoted --> won: win
 quoted --> lost: lose
 declined --> in_review: reopen
 expired --> in_review: reopen
 lost --> in_review: reopen

Düz anlatımla: yeni bir teklif talebi atanır ve incelenir, sonra teklif verildi olarak işaretlenir. Teklif verilmiş bir talep kazanılır, kaybedilir veya süresi dolar. Yeni veya incelenen bir talep reddedilebilir veya süresi dolabilir. Reddedilmiş, süresi dolmuş veya kaybedilmiş bir talep yeniden açılabilir. decline ve lose bir neden ister. Her geçiş kayıt sürümünü denetler (src/cluster_erp/modules/crm/rfqs/services.py:278-304).

Aksiyon Etiket Koşul Uç İzin Kaynak
assign Ata status değeri new veya in_review POST /rfqs/{id}/assign rfq.assign src/cluster_erp/modules/crm/rfqs/metadata.py:80-103, src/cluster_erp/modules/crm/rfqs/routes.py:170
quote Teklif Verildi Olarak İşaretle status değeri in_review POST /rfqs/{id}/quote rfq.quote src/cluster_erp/modules/crm/rfqs/metadata.py:104-114, src/cluster_erp/modules/crm/rfqs/routes.py:188
decline Reddet status değeri new veya in_review POST /rfqs/{id}/decline rfq.decline src/cluster_erp/modules/crm/rfqs/metadata.py:115-134, src/cluster_erp/modules/crm/rfqs/routes.py:201
expire Süresi Doldu Olarak İşaretle status değeri new, in_review veya quoted POST /rfqs/{id}/expire rfq.expire src/cluster_erp/modules/crm/rfqs/metadata.py:135-145, src/cluster_erp/modules/crm/rfqs/routes.py:214
win Kazanıldı Olarak İşaretle status değeri quoted POST /rfqs/{id}/win rfq.win src/cluster_erp/modules/crm/rfqs/metadata.py:146-156, src/cluster_erp/modules/crm/rfqs/routes.py:227
lose Kaybedildi Olarak İşaretle status değeri quoted POST /rfqs/{id}/lose rfq.lose src/cluster_erp/modules/crm/rfqs/metadata.py:157-176, src/cluster_erp/modules/crm/rfqs/routes.py:240
reopen Yeniden Aç status değeri declined, expired veya lost POST /rfqs/{id}/reopen rfq.reopen src/cluster_erp/modules/crm/rfqs/metadata.py:177-187, src/cluster_erp/modules/crm/rfqs/routes.py:253
from_bom (malzeme) BOM'dan Getir bir kalemde POST /line-items/{parent_id}/materials/from-bom rfq_line_material.create src/cluster_erp/modules/crm/rfq_line_materials/metadata.py:43-52, src/cluster_erp/modules/crm/rfq_line_materials/routes.py:65

Uçlar

Yöntem ve yol İzin Kaynak
GET, POST /rfqs/; GET, PUT, DELETE /rfqs/{rfq_id}; POST /rfqs/bulk-delete rfq.read, .create, .update, .delete, .bulk_delete src/cluster_erp/modules/crm/rfqs/routes.py:51-138
GET /rfqs/{rfq_id}/completeness rfq.read src/cluster_erp/modules/crm/rfqs/routes.py:153
GET, POST /rfqs/{rfq_id}/rfq-package; PUT, DELETE /rfq-packages/{package_id} rfq_package.read, .create, .update, .delete src/cluster_erp/modules/crm/rfqs/routes.py:269-318
GET, POST /rfqs/{rfq_id}/line-items; GET, PUT, DELETE /line-items/{line_item_id}; POST /line-items/bulk-delete rfq_line_item.read, .create, .update, .delete, .bulk_delete src/cluster_erp/modules/crm/rfq_line_items/routes.py:23-103
GET, POST /line-items/{line_item_id}/materials; PUT, DELETE /line-materials/{material_id}; POST /line-materials/bulk-delete rfq_line_material.read, .create, .update, .delete src/cluster_erp/modules/crm/rfq_line_materials/routes.py:29-123

Kısıtlar ve doğrulama

  • Oluşturma mevcut bir müşteri ister. Aynı müşteri için 7 gün içinde aynı konulu bir teklif talebi reddedilir (src/cluster_erp/modules/crm/rfqs/services.py:147-160, src/cluster_erp/modules/crm/rfqs/services.py:506-527).
  • PRIORITY_THRESHOLD_HOURS (48) içinde vadesi gelen normal bir talep high olur (src/cluster_erp/modules/crm/rfqs/services.py:82, src/cluster_erp/modules/crm/rfqs/services.py:165-172).
  • quote, eksiksizlik günlüğünde karşılanmamış öğe varken engellenir: bir vade tarihi, en az bir kalem ve CountPartyChannels ile sayılan bir müşteri e-postası veya iletişim kanalı (src/cluster_erp/modules/crm/rfqs/services.py:326-417).
  • Bir paket tamamlandığında RfqPackageCompleted yayılır (src/cluster_erp/modules/crm/rfqs/services.py:593-620).
  • from-bom, kalemin müşteri parçasının ürününü alır ve ayrık yaprak malzemeler için GetBomMaterials sorgular (src/cluster_erp/modules/crm/rfq_line_materials/services.py:95-130).
  • Olaylar: RfqReceived, RfqUpdated, RfqAssigned, RfqDeclined, RfqExpired, RfqWon, RfqLost (src/cluster_erp/modules/crm/rfqs/services.py:193, src/cluster_erp/modules/crm/rfqs/services.py:254, src/cluster_erp/modules/crm/rfqs/services.py:322, src/cluster_erp/modules/crm/rfqs/services.py:434, src/cluster_erp/modules/crm/rfqs/services.py:468, src/cluster_erp/modules/crm/rfqs/services.py:487).
  • Silme deleted_at alanını doldurur (src/cluster_erp/modules/crm/rfqs/services.py:263-269).

Tutarsızlıklar

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
RFQ package RfqPackage Bir müşteri teklif talebiyle gelen çizim ve dosya klasörü. Teklif talebi paketi src/cluster_erp/modules/crm/rfqs/models.py:87
RFQ line material RfqLineMaterial Bir teklif talebi kalemi için listelenen malzeme bileşeni. Teklif talebi kalem malzemesi src/cluster_erp/modules/crm/rfq_line_materials/models.py:12

İlgili sayfalar


92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.

Doğrulanan commit 92f8051 · 2026-11-13