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

Referans

Satın alma siparişleri

Procurement modülünde purchase_orders için başvuru; sipariş ve kalem alanları, durumlar, aksiyonlar, envantere mal girişi, geri alma ve teslimat adresi.

Bu sayfa src/cluster_erp/modules/procurement/purchase_orders/ içindeki purchase_orders alt modülünü ve ortak yardımcı src/cluster_erp/modules/procurement/delivery_address.py dosyasını anlatır. Bir satın alma siparişi (PurchaseOrder), bir tedarikçiye verilen sipariştir. Bir sipariş kaleminin kabulü, inventory modülünde EventBus üzerinden bir mal girişi işler.

Kapsam ve kaynak

  • Tanımlandığı yer: alt modülün models.py (PurchaseOrder, PurchaseOrderItem), services.py (PurchaseOrderService), routes.py, metadata.py ve item_metadata.py dosyaları.
  • Sayım: 2 tablo, 18 uç (routes.py içindeki @router. dekoratörleri), 6 ActionMeta girdisi (5'i siparişte, 1'i kalemde).

Sipariş alanları

Ad Anlam Kaynak
po_no purchase_order yıllık dizisinden gelen iş anahtarı src/cluster_erp/modules/procurement/purchase_orders/models.py:31, src/cluster_erp/modules/procurement/purchase_orders/services.py:245
vendor_id, vendor_name_cache Tedarikçi taraf ve önbelleğe alınmış adı src/cluster_erp/modules/procurement/purchase_orders/models.py:37-42
purchase_request_id, project_id Kaynak talep ve proje src/cluster_erp/modules/procurement/purchase_orders/models.py:46-52
status Varsayılan draft src/cluster_erp/modules/procurement/purchase_orders/models.py:56-62
order_date, eta_date, actual_arrival_date Tarihler src/cluster_erp/modules/procurement/purchase_orders/models.py:63-71
currency, total_amount Para birimi ve toplam Numeric(19, 4) src/cluster_erp/modules/procurement/purchase_orders/models.py:75-82
incoterm, payment_terms Ticari koşullar src/cluster_erp/modules/procurement/purchase_orders/models.py:85-89
delivery_party_id, delivery_address_id, delivery_address Yapılandırılmış teslimat adresi ve metin anlık görüntüsü src/cluster_erp/modules/procurement/purchase_orders/models.py:97-107
sent_at, sent_by, acknowledged_at Yaşam döngüsü kaydı src/cluster_erp/modules/procurement/purchase_orders/models.py:111-119
has_technical_attachment, cancel_reason, notes Gönderim kapısı bayrağı, neden, notlar src/cluster_erp/modules/procurement/purchase_orders/models.py:123-133

Kalem alanları

Ad Anlam Kaynak
product_id, product_model_id, product_version_id, description Kırılımlı katalog kalemi ya da yalnızca açıklamalı metin kalemi src/cluster_erp/modules/procurement/purchase_orders/models.py:159-174, src/cluster_erp/modules/procurement/purchase_orders/schemas.py:20-37
vendor_part_number Tedarikçinin parça numarası src/cluster_erp/modules/procurement/purchase_orders/models.py:175
qty_ordered, qty_received, qty_rejected Miktarlar Numeric(14, 4) src/cluster_erp/modules/procurement/purchase_orders/models.py:179-190
unit_price, line_total, unit_id Fiyat Numeric(18, 4), toplam Numeric(19, 4), birim src/cluster_erp/modules/procurement/purchase_orders/models.py:195-203
expected_date, actual_received_date, batch_id, heat_lot_id Kabul verileri src/cluster_erp/modules/procurement/purchase_orders/models.py:207-219
status Varsayılan open; sonra partial veya received src/cluster_erp/modules/procurement/purchase_orders/models.py:223-228, src/cluster_erp/modules/procurement/purchase_orders/services.py:759-762

Durumlar ve aksiyonlar

Servis şu geçişlere izin verir (src/cluster_erp/modules/procurement/purchase_orders/services.py:67-75):

stateDiagram-v2
 [*] --> draft
 draft --> sent: send
 sent --> acknowledged: acknowledge
 acknowledged --> in_transit: in_transit
 acknowledged --> received: son kalem kabul edildi
 in_transit --> received: son kalem kabul edildi
 received --> in_transit: kabul geri alındı
 received --> closed: close
 draft --> cancelled: cancel
 sent --> cancelled: cancel
 acknowledged --> cancelled: cancel
 in_transit --> cancelled: cancel

Düz anlatımla: bir sipariş draft olarak başlar. send bir sipariş tarihi ve has_technical_attachment bayrağı ister (src/cluster_erp/modules/procurement/purchase_orders/services.py:620-641). Kabul acknowledged ve in_transit durumlarında yapılabilir; tüm canlı kalemler received olduğunda sipariş received olur (src/cluster_erp/modules/procurement/purchase_orders/services.py:705-774). Bir kabul geri alındığında received sipariş in_transit durumuna dönebilir (src/cluster_erp/modules/procurement/purchase_orders/services.py:854-891). close, received durumunu izler; cancel kabule kadar açıktır (src/cluster_erp/modules/procurement/purchase_orders/services.py:892-929).

Aksiyon Etiket Koşul Uç İzin Kaynak
send Gönder status değeri draft POST /purchase-orders/{id}/send purchase_order.send src/cluster_erp/modules/procurement/purchase_orders/metadata.py:92-108, src/cluster_erp/modules/procurement/purchase_orders/routes.py:201
acknowledge Onayla status değeri sent POST /purchase-orders/{id}/acknowledge purchase_order.update src/cluster_erp/modules/procurement/purchase_orders/metadata.py:109-125, src/cluster_erp/modules/procurement/purchase_orders/routes.py:213
in_transit Yolda Olarak İşaretle status değeri acknowledged POST /purchase-orders/{id}/in-transit purchase_order.update src/cluster_erp/modules/procurement/purchase_orders/metadata.py:126-143, src/cluster_erp/modules/procurement/purchase_orders/routes.py:225
close Kapat status değeri received POST /purchase-orders/{id}/close purchase_order.update src/cluster_erp/modules/procurement/purchase_orders/metadata.py:144-158, src/cluster_erp/modules/procurement/purchase_orders/routes.py:269
cancel İptal Et status değeri draft, sent, acknowledged veya in_transit POST /purchase-orders/{id}/cancel purchase_order.update src/cluster_erp/modules/procurement/purchase_orders/metadata.py:159-192, src/cluster_erp/modules/procurement/purchase_orders/routes.py:281
receive (kalem) Mal Kabul kalem status değeri open veya partial POST /purchase-orders/items/{id}/receive purchase_order.receive src/cluster_erp/modules/procurement/purchase_orders/item_metadata.py:57-125, src/cluster_erp/modules/procurement/purchase_orders/routes.py:254

Sipariş uçları

Yöntem ve yol İzin Kaynak
GET /purchase-orders/, GET /purchase-orders/{po_id} purchase_order.read src/cluster_erp/modules/procurement/purchase_orders/routes.py:58, src/cluster_erp/modules/procurement/purchase_orders/routes.py:147
POST /purchase-orders/, POST /purchase-orders/from-pr/{pr_id} purchase_order.create src/cluster_erp/modules/procurement/purchase_orders/routes.py:98-110
GET /purchase-orders/receivable-lines purchase_order.read src/cluster_erp/modules/procurement/purchase_orders/routes.py:129
PUT /purchase-orders/{po_id} purchase_order.update src/cluster_erp/modules/procurement/purchase_orders/routes.py:161
DELETE /purchase-orders/{po_id}, POST /purchase-orders/bulk-delete purchase_order.delete, purchase_order.bulk_delete src/cluster_erp/modules/procurement/purchase_orders/routes.py:174-186
POST /purchase-orders/{po_id}/items/{item_id}/receive purchase_order.receive src/cluster_erp/modules/procurement/purchase_orders/routes.py:237
POST /purchase-orders/{po_id}/items, PUT ve DELETE /purchase-orders/{po_id}/items/{item_id} purchase_order.update src/cluster_erp/modules/procurement/purchase_orders/routes.py:297-331

Mal kabul

Diyagram tek bir kalemin kabulünü gösterir.

sequenceDiagram
 participant U as receive ucu
 participant S as PurchaseOrderService
 participant B as EventBus
 participant I as inventory
 U->>S: receive_item
 S->>S: durum, kırılım ve miktar denetimi
 S->>B: PoReceivedFull veya PoReceivedPartial yayar
 S->>B: PostGoodsReceipt sorgusu
 B->>I: _handle_post_goods_receipt
 I-->>S: hareket kimliği

Düz anlatımla: servis metin kalemini ve modeli ile versiyonu olmayan kalemi reddeder, çünkü stok kırılım başına işlenir (src/cluster_erp/modules/procurement/purchase_orders/services.py:718-731). Kabul edilen miktar sipariş miktarını aşamaz (src/cluster_erp/modules/procurement/purchase_orders/services.py:738-749). Servis kalem ve sipariş durumunu günceller, PoReceivedFull veya PoReceivedPartial yayar, ardından siparişi referans, kalem kimliğini ve siparişin projesini stok sahibi olarak vererek PostGoodsReceipt sorgular (src/cluster_erp/modules/procurement/purchase_orders/services.py:750-822). Envanterden gelen bir hata kabulü PO_GOODS_RECEIPT_FAILED ile başarısız kılar; envanter işleyicisi yoksa bu günlüğe yazılır ve kabul yalnızca bir satın alma kaydı olarak kalır (src/cluster_erp/modules/procurement/purchase_orders/services.py:823-837). İptal edilen bir mal hareketi açık miktarı ReconcilePoReceiptReversal sorgusuyla geri verir (src/cluster_erp/modules/procurement/module.py:192-202, src/cluster_erp/modules/procurement/module.py:885-916).

Kısıtlar ve doğrulama

  • Oluşturmada tedarikçi GetPartyById ile okunur; kara listedeki tedarikçi reddedilir (src/cluster_erp/modules/procurement/purchase_orders/services.py:215-243).
  • Her katalog kaleminin kırılımı ensure_product_breakdown ile denetlenir (src/cluster_erp/modules/procurement/purchase_orders/services.py:279, src/cluster_erp/modules/procurement/purchase_orders/services.py:507).
  • Birim fiyat dört basamağa, kalem toplamı sütun ölçeğine, ikisi de ROUND_HALF_EVEN ile yuvarlanır; başlık toplamı bunların toplamıdır (src/cluster_erp/modules/procurement/purchase_orders/services.py:112-123, src/cluster_erp/modules/procurement/purchase_orders/services.py:307-312).
  • Başlık ve kalemler yalnızca draft durumunda değişir; yalnızca taslak silinebilir (src/cluster_erp/modules/procurement/purchase_orders/services.py:415-468).
  • Teslimat adresi, teslimat tarafının bir sevkiyat adresi olmalıdır; metni anlık görüntü olarak saklanır (src/cluster_erp/modules/procurement/delivery_address.py:24-28, src/cluster_erp/modules/procurement/delivery_address.py:78, src/cluster_erp/modules/procurement/purchase_orders/services.py:251).
  • Olaylar: PoCreated, PoSent, PoAcknowledged, PoReceivedFull, PoReceivedPartial, PoCancelled (src/cluster_erp/modules/procurement/purchase_orders/services.py:338, src/cluster_erp/modules/procurement/purchase_orders/services.py:648, src/cluster_erp/modules/procurement/purchase_orders/services.py:672, src/cluster_erp/modules/procurement/purchase_orders/services.py:779-797, src/cluster_erp/modules/procurement/purchase_orders/services.py:921).

Tanıtılan terimler

Terim Kod tanımlayıcısı Tanım Türkçe terim Kaynak
purchase order PurchaseOrder Bir tedarikçiye verilen sipariş. Satın alma siparişi src/cluster_erp/modules/procurement/purchase_orders/models.py:24
text item product_id olmayan PurchaseOrderItem Açıklaması olan, ürünü olmayan sipariş kalemi; mal kabulü yapılmaz. Metin kalemi src/cluster_erp/modules/procurement/purchase_orders/services.py:718-724

İlgili sayfalar


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

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