Bu sayfa src/cluster_erp/modules/sales_orders/ içindeki trade_documents alt modülünü anlatır. Bir ihracat belgesi (TradeDocument), bir sevkiyat için çeki listesi veya sevk irsaliyesidir. Üretim, sevkiyatın verilerini bir JSON anlık görüntüsü olarak dondurur, belge dilinde ondan HTML çizer, bir PDF basar ve PDF'i kaydın eki olarak saklar. Sevkiyatın kendisi sevkiyatlar sayfasında anlatılır.
Kapsam ve kaynak¶
- Tanımlandığı yer:
trade_documents/models.py(TradeDocument,DOCUMENT_TYPES),services.py(TradeDocumentService,compose_number),builder.py(SnapshotBuilder),render.py(RENDERERS),i18n/en.jsonvei18n/tr.jsonilei18n/__init__.py,templates/document.css,routes.pyvemetadata.py. - Sayım: 1 tablo, 4 uç (
@router.dekoratörleri), 2 belge tipi.
Belge alanları¶
| Ad | Anlam | Kaynak |
|---|---|---|
shipment_id, sales_order_id |
Sevkiyat ve siparişi | src/cluster_erp/modules/sales_orders/trade_documents/models.py:40-48 |
doc_type |
packing_list veya delivery_note |
src/cluster_erp/modules/sales_orders/trade_documents/models.py:16, src/cluster_erp/modules/sales_orders/trade_documents/models.py:49 |
number, version_no |
Belge numarası ve sürümü; canlı satırlar arasında tip başına benzersiz | src/cluster_erp/modules/sales_orders/trade_documents/models.py:28-38, src/cluster_erp/modules/sales_orders/trade_documents/models.py:50-51 |
language |
Etiketlerin dil kodu | src/cluster_erp/modules/sales_orders/trade_documents/models.py:52 |
snapshot |
PDF'in bastığı her şey, para metin olarak | src/cluster_erp/modules/sales_orders/trade_documents/models.py:53-54 |
attachment_id |
Çekirdek eklerdeki çizilmiş PDF | src/cluster_erp/modules/sales_orders/trade_documents/models.py:55-56 |
stale, superseded_by_id |
Üretimden sonra kaynak değişti; daha yeni sürüm | src/cluster_erp/modules/sales_orders/trade_documents/models.py:57-67 |
generated_at, generated_by |
Üretim kaydı | src/cluster_erp/modules/sales_orders/trade_documents/models.py:68-69 |
Belge uçları¶
| Yöntem ve yol | İzin | Kaynak |
|---|---|---|
GET /sales-orders/trade-documents/ |
trade_document.read |
src/cluster_erp/modules/sales_orders/trade_documents/routes.py:37 |
GET /sales-orders/trade-documents/{document_id} |
trade_document.read |
src/cluster_erp/modules/sales_orders/trade_documents/routes.py:68 |
GET /sales-orders/trade-documents/{document_id}/download |
trade_document.read |
src/cluster_erp/modules/sales_orders/trade_documents/routes.py:84 |
POST /sales-orders/shipments/{shipment_id}/generate-documents |
trade_document.create |
src/cluster_erp/modules/sales_orders/trade_documents/routes.py:102 |
Üretim¶
Diyagram tek bir üretim çağrısını gösterir.
flowchart TD G["TradeDocumentService.generate"] --> C["export düzeyinde kontroller"] C --> L["document_language için doc_labels"] L --> S["EventBus üzerinden SnapshotBuilder.build"] S --> N["ayar şablonundan compose_number"] N --> R["RENDERERS: anlık görüntü ve etiketlerden HTML"] R --> P["PDF çizici"] P --> A["AttachmentService.create"] A --> V["önceki sürümde superseded_by_id"] V --> E["sevkiyat olayı"]
Düz anlatımla: üretim sevkiyatı kilitler ve kiracının sevk düzeyi ne olursa olsun sevk kontrollerini export düzeyinde çalıştırır; herhangi bir hata tüm çağrıyı reddeder (src/cluster_erp/modules/sales_orders/trade_documents/services.py:169-200). document_language ayarının etiketlerini yükler ve tüm belgeler için tek bir anlık görüntü kurar. Kurucu tarafları, adresleri, ürünleri, ölçü birimlerini, ülkeleri ve projeyi EventBus sorgularıyla okur (src/cluster_erp/modules/sales_orders/trade_documents/builder.py:1-30, src/cluster_erp/modules/sales_orders/trade_documents/services.py:201-205). Sevk irsaliyesi çeki listesinin numarasını anabilsin diye önce çeki listesi çizilir (src/cluster_erp/modules/sales_orders/trade_documents/services.py:209-210, src/cluster_erp/modules/sales_orders/trade_documents/services.py:264-265). Servis her tip için numarayı oluşturur, HTML çizer, PDF'i altbilgiyle basar, kaydı ve eki saklar ve önceki sürümü yerini almış olarak işaretler (src/cluster_erp/modules/sales_orders/trade_documents/services.py:211-263). Son olarak bir sevkiyat olayı yazar (src/cluster_erp/modules/sales_orders/trade_documents/services.py:267-278).
Numaralama¶
Numara packing_list_no_template (varsayılan PL-{shipment_code}) ve delivery_note_no_template (varsayılan DN-{shipment_code}) ayar şablonlarından gelir (src/cluster_erp/modules/sales_orders/settings/models.py:37-44, src/cluster_erp/modules/sales_orders/trade_documents/services.py:145-152). Yer tutucular {shipment_code}, {order_no}, {customer_po_no}, {project_no}, {year} ve {seq}'dir. {seq}, belge tipi başına bir dizinin sonraki değerini alır. Değeri boş olan bir yer tutucu, boşluk basmak yerine üretimi reddeder (src/cluster_erp/modules/sales_orders/trade_documents/services.py:42-85, src/cluster_erp/modules/sales_orders/trade_documents/services.py:213-226).
Diller ve şablonlar¶
Etiketler trade_documents/i18n/ içinde dil başına bir dosya olan JSON sözlükleridir. Bir dosya kendi adını _language altında verir; dil eklemek dosya eklemektir. Bilinmeyen bir kod en diline düşer (src/cluster_erp/modules/sales_orders/trade_documents/i18n/__init__.py:1-53). Çiziciler, templates/document.css biçem dosyası ve çekirdek yazı tipi CSS'iyle anlık görüntü ve etiketlerden HTML kuran saf işlevlerdir (src/cluster_erp/modules/sales_orders/trade_documents/render.py:1-20, src/cluster_erp/modules/sales_orders/trade_documents/render.py:302-375). PDF motoru PDF ve sistem postası sayfasında anlatılır.
Kısıtlar ve doğrulama¶
- Bir belge düzenlendikten sonra hiç değişmez; düzeltme kaynak kayıtta yapılır ve belge bir sonraki sürüm olarak yeniden üretilir (
src/cluster_erp/modules/sales_orders/trade_documents/models.py:19-26). - PO revizyonu veya fatura adresi değişikliği gibi sipariş değişiklikleri, siparişin tüm canlı ve güncel belgelerini bayat olarak işaretler (
src/cluster_erp/modules/sales_orders/trade_documents/services.py:279-295,src/cluster_erp/modules/sales_orders/orders/services.py:965-980). - İndirme dosyalanmış PDF'i döndürür; çizilmiş dosyası olmayan belge 404 döndürür (
src/cluster_erp/modules/sales_orders/trade_documents/services.py:130-142). - Yalnızca
DOCUMENT_TYPESiçindeki iki tip üretilir; bilinen tip içermeyen istek reddedilir (src/cluster_erp/modules/sales_orders/trade_documents/services.py:183-185).
Tanıtılan terimler¶
| Terim | Kod tanımlayıcısı | Tanım | Türkçe terim | Kaynak |
|---|---|---|---|---|
| packing list | packing_list |
Bir sevkiyatın paketlerini, ağırlıklarını ve içeriğini listeleyen belge. | Çeki listesi | src/cluster_erp/modules/sales_orders/trade_documents/metadata.py:20 |
| delivery note | delivery_note |
Malla birlikte alıcıya giden belge. | Sevk irsaliyesi | src/cluster_erp/modules/sales_orders/trade_documents/metadata.py:21 |
| document snapshot | snapshot |
Bir belgenin bastığı dondurulmuş JSON veri. | Belge anlık görüntüsü | src/cluster_erp/modules/sales_orders/trade_documents/models.py:53-54 |
| stale document | stale |
Üretildikten sonra kaynak verisi değişmiş belge. | Bayat belge | src/cluster_erp/modules/sales_orders/trade_documents/models.py:57-61 |
İlgili sayfalar¶
92f8051 numaralı commit ile 2026-11-13 tarihinde doğrulandı.