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

Referans

Satın alma teklif talepleri

Procurement modülünde purchase_rfqs için başvuru; talep, kalem, tedarikçi, teklif, kriter ve puan alanları, durumlar, puanlama, ihale ve tedarikçi portalı.

Bu sayfa src/cluster_erp/modules/procurement/purchase_rfqs/ içindeki purchase_rfqs alt modülünü anlatır. Bir satın alma teklif talebi (PurchaseRfq), aynı kalemler için birden çok tedarikçiden teklif ister. Satın almacı teklifleri kaydeder veya alır, karşılaştırır ve puanlar, kalemleri ihale eder; ihale satın alma siparişleri oluşturur. crm modülünün müşteri tarafındaki teklif talebi farklı bir kayıttır; bkz. CRM teklif talepleri.

Kapsam ve kaynak

  • Tanımlandığı yer: alt modülün models.py (yedi sınıf), services.py (PurchaseRfqService), routes.py, portal_routes.py ve metadata.py dosyaları.
  • Sayım: 7 tablo, 34 uç (routes.py içinde 32 ve portal_routes.py içinde 2, @router. için grep ile sayıldı), 6 ActionMeta girdisi.

Teklif talebi alanları

Grup Alanlar Kaynak
Kimlik code, title, rfq_type (rfi, rfq veya rfp, varsayılan rfq), status (varsayılan draft) src/cluster_erp/modules/procurement/purchase_rfqs/models.py:36-48, src/cluster_erp/modules/procurement/purchase_rfqs/schemas.py:10
Köken purchase_request_id, project_id, buyer_id src/cluster_erp/modules/procurement/purchase_rfqs/models.py:49-53
Koşullar quotation_deadline, validity_date, currency, target_incoterm, target_payment_terms src/cluster_erp/modules/procurement/purchase_rfqs/models.py:55-61
Teslimat delivery_party_id, delivery_address_id, delivery_address (metin anlık görüntüsü) src/cluster_erp/modules/procurement/purchase_rfqs/models.py:66-70
Değerlendirme award_policy (lowest_price, weighted_score veya manual), sealed_bid, round_no src/cluster_erp/modules/procurement/purchase_rfqs/models.py:72-83, src/cluster_erp/modules/procurement/purchase_rfqs/schemas.py:11
Yaşam döngüsü kaydı sent_at, sent_by, evaluation_started_at, awarded_at, awarded_by, closed_at, cancelled_at, cancelled_by, cancel_reason src/cluster_erp/modules/procurement/purchase_rfqs/models.py:87-97

Alt kayıtlar

Varlık Tablo Anahtar alanlar Kaynak
PurchaseRfqLine procurement_purchase_rfq_lines line_no, ürün kırılımı, description, qty, unit_id, required_by_date, target_unit_price, material_spec, source_pr_item_id src/cluster_erp/modules/procurement/purchase_rfqs/models.py:110-134
PurchaseRfqVendor procurement_purchase_rfq_vendors vendor_party_id, status (varsayılan invited), contact_email, invited_at, responded_at, decline_reason, rejection_reason, portal erişim alanları src/cluster_erp/modules/procurement/purchase_rfqs/models.py:137-188
PurchaseRfqQuotation procurement_purchase_rfq_quotations quotation_no, round_no, valid_until, currency, lead_time_days, total_amount, compliance_status, submitted_via src/cluster_erp/modules/procurement/purchase_rfqs/models.py:193-236
PurchaseRfqQuotationLine procurement_purchase_rfq_quotation_lines purchase_rfq_line_id, unit_price, qty, lead_time_days, delivery_date, moq, line_total, is_awarded src/cluster_erp/modules/procurement/purchase_rfqs/models.py:241-272
PurchaseRfqCriterion procurement_purchase_rfq_criteria key, label, weight, sort_order src/cluster_erp/modules/procurement/purchase_rfqs/models.py:316-335
PurchaseRfqQuotationScore procurement_purchase_rfq_scores quotation_id, criterion_id, score src/cluster_erp/modules/procurement/purchase_rfqs/models.py:279-313

Tedarikçi durumları invited, viewed, responded, declined, no_bid, awarded ve rejected'tir (src/cluster_erp/modules/procurement/purchase_rfqs/models.py:163-167). Teklif uygunluğu compliant, non_compliant veya pending olur (src/cluster_erp/modules/procurement/purchase_rfqs/models.py:221-224).

Durumlar ve aksiyonlar

Servis her aksiyonu bir hedef duruma ve izin verilen kaynak durumlara eşler (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:61-69).

stateDiagram-v2
 [*] --> draft
 draft --> sent: send
 sent --> under_evaluation: start_evaluation
 under_evaluation --> sent: reopen_bidding
 under_evaluation --> awarded: award
 awarded --> closed: close
 draft --> cancelled: cancel
 sent --> cancelled: cancel
 under_evaluation --> cancelled: cancel
 cancelled --> draft: reopen

Düz anlatımla: send eksiksiz bir taslak ister; eksiksizlik denetimi en az bir kalem, en az iki tedarikçi, bir teklif son tarihi ve weighted_score için toplamı 100 olan kriter ağırlıkları arar (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:287-313, src/cluster_erp/modules/procurement/purchase_rfqs/services.py:386-450). reopen_bidding, round_no değerini artırır ve yanıt vermiş veya görüntülemiş tedarikçileri yeniden invited yapar (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:326-344). award için bir uç vardır ama ActionMeta yoktur; web uygulaması ihaleyi purchase_rfq_comparison özel bileşeninden yapar (src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:221, gated_apps/procurement/app.js:1655).

Aksiyon Etiket Koşul Uç İzin Kaynak
send Tedarikçilere Gönder status değeri draft POST /purchase-rfqs/{id}/send purchase_rfq.send src/cluster_erp/modules/procurement/purchase_rfqs/metadata.py:524-537, src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:181
start-evaluation Değerlendirmeyi Başlat status değeri sent POST /purchase-rfqs/{id}/start-evaluation purchase_rfq.evaluate src/cluster_erp/modules/procurement/purchase_rfqs/metadata.py:538-551, src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:193
reopen-bidding Teklifi Yeniden Aç status değeri under_evaluation POST /purchase-rfqs/{id}/reopen-bidding purchase_rfq.evaluate src/cluster_erp/modules/procurement/purchase_rfqs/metadata.py:552-565, src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:207
close Kapat status değeri awarded POST /purchase-rfqs/{id}/close purchase_rfq.evaluate src/cluster_erp/modules/procurement/purchase_rfqs/metadata.py:566-577, src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:240
cancel İptal Et status değeri draft, sent veya under_evaluation POST /purchase-rfqs/{id}/cancel purchase_rfq.cancel src/cluster_erp/modules/procurement/purchase_rfqs/metadata.py:578-604, src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:252
reopen Yeniden Aç status değeri cancelled POST /purchase-rfqs/{id}/reopen purchase_rfq.update src/cluster_erp/modules/procurement/purchase_rfqs/metadata.py:605-616, src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:266

Teklif talebi uçları

Yöntem ve yol İzin Kaynak
GET, POST /purchase-rfqs/; GET, PUT, DELETE /purchase-rfqs/{rfq_id}; POST /purchase-rfqs/bulk-delete purchase_rfq.read, .create, .update, .delete src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:66-151
GET /purchase-rfqs/{rfq_id}/completeness purchase_rfq.read src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:166
POST /purchase-rfqs/{rfq_id}/award purchase_rfq.award src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:221
Kalemler: GET, POST /purchase-rfqs/{rfq_id}/lines; PUT, DELETE /purchase-rfq-lines/{line_id} purchase_rfq.read, purchase_rfq.update src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:279-317
Tedarikçiler: GET, POST /purchase-rfqs/{rfq_id}/vendors; DELETE /purchase-rfq-vendors/{vendor_id}; GET /purchase-rfq-vendors/{vendor_id}/portal-token purchase_rfq.read, purchase_rfq.update src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:329-368
Teklifler: GET, POST /purchase-rfqs/{rfq_id}/quotations; DELETE /purchase-rfq-quotations/{quotation_id} purchase_rfq.read, purchase_rfq.update src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:398-428
Kriterler: GET, POST /purchase-rfqs/{rfq_id}/criteria; PUT, DELETE /purchase-rfq-criteria/{criterion_id} purchase_rfq.read, purchase_rfq.update src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:440-485
PUT /purchase-rfqs/{rfq_id}/quotations/{quotation_id}/score, GET .../scoring, GET .../comparison purchase_rfq.evaluate, purchase_rfq.read src/cluster_erp/modules/procurement/purchase_rfqs/routes.py:496-519
GET /portal/rfqs/{token}, POST /portal/rfqs/{token}/quotation tedarikçi portalı erişim belirteci src/cluster_erp/modules/procurement/purchase_rfqs/portal_routes.py:27-53

Puanlama ve ihale

  • Kriterler yalnızca teklif talebi draft iken değişebilir (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:1010-1021).
  • price ve delivery kriterleri otomatik puanlanır; diğerleri elle girilen puanı alır (src/cluster_erp/modules/procurement/purchase_rfqs/models.py:276, src/cluster_erp/modules/procurement/purchase_rfqs/services.py:1152-1157).
  • Otomatik fiyat puanı, en düşük uygun toplamın teklif toplamına bölümü çarpı 100'dür. Teslim puanı teslim sürelerini aynı biçimde kullanır. Uygun olmayan teklif 0 alır (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:1125-1149).
  • Ağırlıklı puan, ağırlık bölü 100 çarpı puanların toplamıdır. Uygun teklifler her zaman uygun olmayanların üstünde sıralanır (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:1150-1214).
  • Kapalı teklifte karşılaştırma, talep sent iken yalnızca bir özet döndürür (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:255-258, src/cluster_erp/modules/procurement/purchase_rfqs/services.py:840-848).
  • award, teklif talebi kalemi ile teklif kalemi çiftlerini alır, bunları is_awarded olarak işaretler, kazanan tedarikçileri awarded, katılan diğerlerini rejected yapar ve kazanan her tedarikçi için PurchaseOrderService üzerinden bir satın alma siparişi oluşturur (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:1215-1292, src/cluster_erp/modules/procurement/purchase_rfqs/services.py:1293-1338).

Tedarikçi portalı

Davet edilen bir tedarikçi, kullanıcı oturumu olmadan /portal/rfqs/{token} üzerinden teklif talebini görebilir ve teklif gönderebilir. Belirteç davet anında tedarikçi başına üretilir, bir özet olarak saklanır ve PORTAL_TOKEN_TTL_DAYS (30) gün sonra geçersiz olur (src/cluster_erp/modules/procurement/purchase_rfqs/portal_routes.py:1-10, src/cluster_erp/modules/procurement/purchase_rfqs/services.py:605-618). Gönderim yalnızca talep sent iken ve son tarihten önce kabul edilir (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:1505-1530).

Kısıtlar ve doğrulama

  • Kalemler ve tedarikçiler yalnızca teklif talebi draft veya sent iken değişebilir (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:452-458).
  • Satın almacının girdiği teklif yalnızca talep sent veya under_evaluation iken kabul edilir; o anki turu kaydeder ve tedarikçiyi responded yapar (src/cluster_erp/modules/procurement/purchase_rfqs/services.py:705-748).
  • Para ve puanlar Numeric türündedir: birim fiyat Numeric(18, 4), ağırlık ve puan Numeric(6, 2) (src/cluster_erp/modules/procurement/purchase_rfqs/models.py:260, src/cluster_erp/modules/procurement/purchase_rfqs/models.py:313, src/cluster_erp/modules/procurement/purchase_rfqs/models.py:332).

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
purchasing RFQ PurchaseRfq Aynı kalemler için birden çok tedarikçiden teklif isteği. Satın alma teklif talebi src/cluster_erp/modules/procurement/purchase_rfqs/models.py:26
sealed bid sealed_bid Teklif toplama sürerken tekliflerin satın almacıdan gizli kaldığı talep. Kapalı teklif src/cluster_erp/modules/procurement/purchase_rfqs/models.py:78-80
bidding round round_no Bir teklif talebinin pazarlık turu; teklifi yeniden açmak onu artırır. Teklif turu src/cluster_erp/modules/procurement/purchase_rfqs/models.py:83
award policy award_policy Kazananın nasıl seçildiği: en düşük fiyat, ağırlıklı puan veya elle. İhale politikası src/cluster_erp/modules/procurement/purchase_rfqs/models.py:72-77

İlgili sayfalar


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

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