src/cluster_erp/modules/sales_orders/ içindeki sales_orders modülü bir müşteri satın alma siparişini (PO) satış siparişine dönüştürür ve teslime kadar izler. Müşteri PO'sunu gönderilmiş teklifle karşılaştırır, her PO revizyonunu dondurur, teklif kalemlerini sipariş kalemlerine kopyalar, tek tek birimleri (varlıklar) izler, bunları paketler ve taşıma verileriyle sevkiyatlarda gönderir; çeki listesini ve sevk irsaliyesini üretir. Bu sayfa genel bakıştır; alt konuların kendi sayfaları vardır.
Bir bakışta¶
| Öğe | Değer | Kaynak |
|---|---|---|
| Paket | src/cluster_erp/modules/sales_orders/ |
klasör |
| Modül sınıfı | Module |
src/cluster_erp/modules/sales_orders/module.py:18 |
name / version |
sales_orders / 0.1.0 |
src/cluster_erp/modules/sales_orders/module.py:20-25 |
| API öneki | /api/v1/sales_orders (ModuleBase.api_prefix) |
src/cluster_erp/core/module_base.py:37-38 |
| Alt modüller | 6: orders, order_lines, shipments, trade_documents, units, settings |
klasör listesi |
| Tablolar | 14 | altı models.py dosyasındaki __tablename__ |
| Metadata'daki varlıklar | entities içinde 13 anahtar |
src/cluster_erp/modules/sales_orders/module.py:371-385 |
| Uçlar | Pakette 68 uç dekoratörü | @...router.get/post/put/patch/delete için grep |
| Aksiyonlar | 21 ActionMeta girdisi |
pakette grep "ActionMeta(" |
| Göçler | 16 dosya | metni 14 tablo adından birini içeren migrations/versions/ dosyaları |
| Web uygulamasında yeri | Katalog uygulaması sales-orders |
src/cluster_erp/modules/app_store/catalog.json (sales-orders girdisi) |
| Masaüstünde yeri | yalnızca genel bileşenler | src/cluster_erp/desktop/modules/ içinde sales_orders klasörü yok |
Modül ne yapar¶
- Gönderilmiş veya kazanılmış bir teklife başvuran müşteri PO'sundan sipariş oluşturur ve teklifin açık kalemlerini kopyalar (
src/cluster_erp/modules/sales_orders/orders/services.py:174-341). - PO'yu teklifle alan alan karşılaştırır ve her denemeyi kaydeder (
src/cluster_erp/modules/sales_orders/orders/services.py:342-463). - Her PO sürümünü bir anlık görüntü revizyonu olarak dondurur (
src/cluster_erp/modules/sales_orders/orders/services.py:871-939). - Bir sipariş kaleminin tek tek birimlerini müşteri varlık numaraları ve seri numaralarıyla izler (
src/cluster_erp/modules/sales_orders/units/models.py:14-40). - Kalemleri ve birimleri paketler, taşıma verileri, olaylar ve teslim kanıtıyla sevkiyatlarda gönderir; sipariş durumunu sevk edilen miktarlardan toplar (
src/cluster_erp/modules/sales_orders/shipments/services.py:1253-1392). - Çeki listesini ve sevk irsaliyesini dondurulmuş bir anlık görüntüden PDF olarak üretir (
src/cluster_erp/modules/sales_orders/trade_documents/services.py:169-278).
Alt modüller¶
| Alt modül | Amaç | Ana varlıklar | Yönlendirici | Kaynak |
|---|---|---|---|---|
orders |
Siparişler, PO kontrolleri, PO revizyonları, kilometre taşları | SalesOrder, PoCheck, PoCheckLine, PoRevision, SalesOrderMilestone |
/sales-orders |
src/cluster_erp/modules/sales_orders/orders/routes.py:33-52 |
order_lines |
Sipariş kalemleri ve ürün ağacı aksiyonu | SalesOrderLine |
/sales-orders/.../lines |
src/cluster_erp/modules/sales_orders/order_lines/routes.py:24-27 |
units |
Kalem başına birimler (varlıklar) | SalesOrderUnit |
/sales-orders/units, /sales-orders/lines/{line_id}/units |
src/cluster_erp/modules/sales_orders/units/routes.py:21-24 |
shipments |
Sevkiyatlar, kalemler, birimler, paketler, olaylar | SalesOrderShipment, ShipmentLine, ShipmentUnit, ShipmentPackage, ShipmentEvent |
/sales-orders/shipments ve alt yollar |
src/cluster_erp/modules/sales_orders/shipments/routes.py:40-85 |
trade_documents |
Çeki listesi ve sevk irsaliyesi | TradeDocument |
/sales-orders/trade-documents |
src/cluster_erp/modules/sales_orders/trade_documents/routes.py:24-37 |
settings |
Kiracı başına bir ayar satırı | SalesOrderSettings |
/settings/chain |
src/cluster_erp/modules/sales_orders/settings/routes.py:16-19 |
Tüm yönlendiriciler modül önekinin altına require_app("sales_orders") ile bağlanır (src/cluster_erp/modules/sales_orders/module.py:64-71).
Veri modeli¶
Alanlar siparişler ve kalemler, sevkiyatlar, ihracat belgeleri ve birimler ve ayarlar sayfalarında listelenir. Sipariş kalemleri part_id, part_model_id ve part_version_id taşır; bir katalog kalemi her zaman modelini ve versiyonunu taşır (src/cluster_erp/modules/sales_orders/order_lines/models.py:22-62). Para Numeric türündedir: sipariş toplamı Numeric(19, 4), kalem fiyatı ve toplamı Numeric(18, 4) (src/cluster_erp/modules/sales_orders/orders/models.py:81-84, src/cluster_erp/modules/sales_orders/order_lines/models.py:71-79).
Ekranlar ve metadata¶
get_metadata şu bölümlerle bir Sipariş Yönetimi (İngilizce Order Management) kenar çubuğu grubu bildirir: Siparişler, Sevkiyatlar, Birimler (Asset), İhracat Belgeleri ve Ayarlar (src/cluster_erp/modules/sales_orders/module.py:321-368). Bkz. genel liste ve aksiyonlar ve aksiyon sayfası.
Durumlar ve aksiyonlar¶
Sipariş durumları ve aksiyonları siparişler ve kalemler, sevkiyat durumları sevkiyatlar sayfasındadır. Diyagram bir müşteri PO'sundan belgelere giden yolu gösterir.
flowchart LR Q["Teklif gönderildi"] --> SO["SalesOrder po_received"] SO --> CHK["run_po_check: matched veya mismatch"] CHK --> ACC["accept: opened"] ACC --> SH["SalesOrderShipment planned"] SH --> RDY["ready"] RDY --> SHIP["ship: shipped"] SHIP --> DEL["POD ile deliver: delivered"] SH --> TD["generate-documents"] TD --> PL["TradeDocument packing_list"] TD --> DN["TradeDocument delivery_note"] SHIP --> ROLL["siparişte _advance_order_status"] DEL --> ROLL
Düz anlatımla: bir PO'dan oluşturulan sipariş po_received olarak başlar (src/cluster_erp/modules/sales_orders/orders/models.py:72-77, src/cluster_erp/modules/sales_orders/orders/services.py:41-55). PO kontrolü matched veya mismatch ayarlar; accept eşleşmiş bir siparişi açar (src/cluster_erp/modules/sales_orders/orders/services.py:342-463, src/cluster_erp/modules/sales_orders/orders/services.py:588-648). Siparişin bir sevkiyatı hazırlanır, sevk edilir ve teslim edilir; her adım siparişi sevk edilen miktarlardan toplar (src/cluster_erp/modules/sales_orders/shipments/services.py:1085-1191, src/cluster_erp/modules/sales_orders/shipments/services.py:1253-1392). Belgeler sevkiyat başına üretilir (src/cluster_erp/modules/sales_orders/trade_documents/routes.py:102).
İş kuralları¶
Her alt konu sayfası kendi kurallarını listeler. Modül genelinde müşteriler, taraflar, ürünler, ölçü birimleri ve ülkeler gibi dış veriler EventBus sorgularıyla okunur; modül başka hiçbir modülü içe aktarmaz (src/cluster_erp/modules/sales_orders/trade_documents/builder.py:1-5).
Olaylar ve sorgular¶
Modül 7 sözleşme tüketir ve 33 sözleşme üretir; sayım parties modülü sayfasındaki gibi yapıldı. Tam liste sözleşmeler başvurusu sayfasındadır.
| Yön | Sözleşme sınıfı | İşleyici veya yayan | Kaynak |
|---|---|---|---|
| yayar | SalesOrderPoReceived, SalesOrderMatched, SalesOrderMismatchDetected, SalesOrderRevisionRequested, SalesOrderOpened, SalesOrderCancelled, SalesOrderClosed |
SalesOrderService |
src/cluster_erp/modules/sales_orders/orders/services.py:174-750 |
| yayar | SalesOrderShipped, SalesOrderPartiallyShipped, SalesOrderDelivered |
sevkiyatlardan sipariş toplaması | src/cluster_erp/modules/sales_orders/shipments/services.py:1253-1392 |
| sorgular | GetQuoteById, GetQuoteLineItems, ReferenceQuoteLines, ReleaseQuoteLineReferences, GetRfqById, GetCustomerById, GetOwnerWorkingDays, CreateBomForProduct |
sipariş ve kalem servisleri | src/cluster_erp/modules/sales_orders/orders/services.py:78-115, src/cluster_erp/modules/sales_orders/orders/services.py:174-341 |
| sorguyu yanıtlar | GetSalesOrderById, GetProjectSalesDelivery, GetOpenSalesOrderDemand |
module.py içindeki işleyiciler |
src/cluster_erp/modules/sales_orders/module.py:90-101 |
| abone olur | ProjectCreated |
projeyi siparişe geri yazan _on_project_created |
src/cluster_erp/modules/sales_orders/module.py:102-106, src/cluster_erp/modules/sales_orders/module.py:123-140 |
| abone olur | DescribeFieldConsumers, DescribeAnalyticsFacts, DescribeDisplaySwitches |
kiracı alanları, analitik, görüntü anahtarları | src/cluster_erp/modules/sales_orders/module.py:77, src/cluster_erp/modules/sales_orders/module.py:93, src/cluster_erp/modules/sales_orders/module.py:110 |
Yetkiler¶
Modül sales_order.*, po_revision.read, shipment.*, shipment_line.*, shipment_unit.*, shipment_package.*, shipment_event.*, trade_document.*, sales_order_unit.* ve sales_order_settings.* ailelerini denetler. Sipariş kalemi ürün ağacı ucu, CreateBomForProduct.REQUIRED_PERMISSION sözleşmesinin adlandırdığı izni kullanır (src/cluster_erp/modules/sales_orders/order_lines/routes.py:104-114). Her alt konu sayfası uç başına anahtarları listeler.
Gizlilik, saklama ve geçmiş¶
Modülün privacy_handlers.py dosyası yoktur. Kayıtlar yumuşak silinir; düzenlenmiş belgeler kaldırılmaz, yerlerine yenisi geçer (src/cluster_erp/modules/sales_orders/trade_documents/services.py:262-263). Değişiklikler değişiklik geçmişi tarafından kaydedilir.
Analitik olguları¶
analytics_facts.py, so_sales_orders üzerinde order_count, total_value, average_value, median_value ve total_quantity ölçülü, sales_order.read ile okunan sales_order olgu kümesini katar (src/cluster_erp/modules/sales_orders/analytics_facts.py:22-126). Bkz. analitik olguları.
Ayarlar ve başvuru verileri¶
Kiracı başına bir ayar satırı iç sipariş numarasını, belge numarası şablonlarını, teslim kanıtı kuralını, sevk kontrol düzeyini, varsayılan birimleri ve paket tipini ve belge dilini yönetir; bkz. birimler ve ayarlar.
Testler¶
tests/ içinde modules.sales_orders için ve web-client/_e2e_*.mjs içinde /sales_orders/ yolu için grep ile bulundu.
| Tür | Dosya | Kapsam |
|---|---|---|
| pytest | tests/test_order_shipment_chain.py |
siparişten sevkiyata ve belgeye zincir |
| pytest | tests/test_sales_delivery_day_party.py |
müşteri taraf takviminde çalışma gününe düşen teslim tarihi |
| e2e | web-client/_e2e_sales_orders_app.mjs |
satış siparişleri uygulaması |
| e2e | web-client/_e2e_order_shipment_chain.mjs |
tarayıcıda zincir |
| e2e | web-client/_e2e_soline_bom_action.mjs |
sipariş kalemi ürün ağacı aksiyonu |
| e2e | web-client/_e2e_quote_line_bom.mjs, web-client/_e2e_project_otd.mjs |
teklif başvuruları ve zamanında teslim |
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| sales order | SalesOrder |
Bir teklife başvuran müşteri satın alma siparişinden oluşturulan sipariş. | Satış siparişi | src/cluster_erp/modules/sales_orders/orders/models.py:23 |
| shipment | SalesOrderShipment |
Sipariş kalemlerinin ve birimlerinin paketler ve taşıma verileriyle bir gönderimi. | Sevkiyat | src/cluster_erp/modules/sales_orders/shipments/models.py:24 |
| trade document | TradeDocument |
Dondurulmuş anlık görüntüsüyle üretilmiş çeki listesi veya sevk irsaliyesi. | İhracat belgesi | src/cluster_erp/modules/sales_orders/trade_documents/models.py:19 |
İlgili sayfalar¶
- Modüller dizini
- Siparişler ve kalemler
- Sevkiyatlar
- İhracat belgeleri
- Birimler ve ayarlar
- Quotations modülü
- Bu modülün API başvurusu
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.