Uretim Planlama

ERPNext

Install Uretim Planlama

bench get-app https://github.com/Junius-Soft/uretim_planlama

Add the Frappe Gems badge to your README

Maintain Uretim Planlama? Paste this into your README:

[![Listed on Frappe Gems](https://frappegems.com/api/method/frappe_gems.seo.badge?app=Junius-Soft%2Furetim_planlama)](https://frappegems.com/gems/apps/Junius-Soft/uretim_planlama)

About Uretim Planlama

Üretim Planlama (Uretim Planlama)

ERPNext tabanlı üretim planlama uygulaması

🚀 YENİ ÖZELLİKLER 🆕

1. MALZEME TALEBİ KALEM SEÇİMİ (Material Request Item Selection)

Genel Bakış

Material Request'ten Stock Entry veya Purchase Order oluştururken belirli itemları seçerek ekleme imkanı sağlar. Artık tüm MR'yi değil, sadece ihtiyacınız olan itemları seçip aktarabilirsiniz!

Temel Özellikler

  • Item Bazında Seçim: MR'deki itemlardan sadece istediğinizi seçin
  • Çoklu MR Desteği: Birden fazla MR'den farklı itemlar seçebilirsiniz
  • Filtreleme: Item Code, Item Group gibi alanlara göre filtreleyin
  • Otomatik Statü: Kısmi transfer edilen MR'lar "Partially Received" olur
  • ERPNext Uyumlu: Çekirdek fonksiyonlara dokunmadan çalışır

Kullanım

Stock Entry İçin:
1. Stock Entry oluştur
2. "Öğeleri Burdan Al" → "Malzeme Talebi"
3. ☑️ "Malzeme Talebi Kalemi Seçimi" kutusunu işaretle
4. Bir veya birden fazla MR seç
5. Tablo açılır - istediğiniz itemları seçin
6. "Ürünleri Getir" butonu
7. ✅ Sadece seçili itemlar Stock Entry'e eklenir
Purchase Order İçin:
1. Purchase Order oluştur
2. "Get Items From" → "Material Request"
3. ☑️ "Malzeme Talebi Kalemi Seçimi" kutusunu işaretle
4. MR seç → Item seç → "Get Items"
5. ✅ Sadece seçili itemlar PO'ya eklenir

Teknik Detaylar

  • Frontend: Custom Client Script - ERPNext'in map_current_doc fonksiyonunu wrap eder
  • Backend:
    • stock_entry_material_request.py: Stock Entry için custom mapping
    • purchase_order_material_request.py: Purchase Order için custom mapping
  • Mantık: filtered_children parametresi ile seçili item name'leri backend'e gönderilir

2. BİRLEŞTİRİLMİŞ MALZEME TALEBİ SİSTEMİ

Genel Bakış

Birden fazla Material Request'i tek bir Stock Entry, Purchase Order veya Purchase Receipt belgesinde birleştirerek işleme imkanı sağlar. Aynı ürünler tek satırda toplanır ve tüm MR referansları kaydedilir.

Temel Özellikler

  • Otomatik Merge: Aynı ürünler tek satırda toplanır
  • Referans Saklama: Tüm MR referansları custom_material_request_references field'ında saklanır
  • Otomatik Statü Güncelleme: Tüm birleştirilmiş MR'ların statüsü doğru şekilde güncellenir
  • Material Transfer: İki MR → Tek Stock Entry → Her ikisi "Transferred"
  • Purchase Flow: İki MR → Tek PO → Tek PR → Her ikisi "Ordered" → "Received"
  • Cancel Desteği: Cancel işleminde tüm MR'lar "Pending"e döner

Kullanım Senaryoları

Material Transfer (Stok Hareketi)

1. İki Material Request oluştur (Material Transfer tipi)
   - MAT-MR-001: Item ABC, 20 adet
   - MAT-MR-002: Item ABC, 30 adet

2. Stock Entry oluştur
   - Get Items From → Material Request → MAT-MR-001 seç
   - Get Items From → Material Request → MAT-MR-002 seç
   - Otomatik merge: 50 adet (tek satır)
   - Material Request References: "MAT-MR-001, MAT-MR-002"

3. Submit et
   - MAT-MR-001: "Transferred" ✅
   - MAT-MR-002: "Transferred" ✅

Purchase Flow (Satınalma Akışı)

1. İki Material Request oluştur (Purchase tipi)
   - MAT-MR-001: Item XYZ, 100 adet
   - MAT-MR-002: Item XYZ, 150 adet

2. Purchase Order oluştur
   - Get Items From → Material Request → İki MR'ı seç
   - Otomatik merge: 250 adet (tek satır)
   - Material Request References: "MAT-MR-001, MAT-MR-002"
   - Submit: Her ikisi "Ordered" ✅

3. Purchase Receipt oluştur
   - Make → Purchase Receipt (From Purchase Order)
   - Custom field otomatik kopyalanır
   - Submit: Her ikisi "Received" ✅

Teknik Detaylar

Custom Fields

  • custom_material_request_references (Small Text)
    • Purchase Order Item
    • Stock Entry Detail
    • Purchase Receipt Item

Frontend Merge (get_items_merge.js)

  • Aynı ürünleri tek satırda toplar
  • MR referanslarını birleştirir
  • Purchase Order, Stock Entry, Purchase Receipt için çalışır

Backend Hooks

  • stock_entry_events.py: Material Transfer statü güncellemeleri
  • purchase_order_events.py: Purchase Order statü güncellemeleri
  • purchase_receipt_events.py: Purchase Receipt statü güncellemeleri

🚀 PROFESYONEL PROFİL STOK YÖNETİMİ

Genel Bakış

Bu uygulama, profil ürünlerinin hem ERPNext orijinal stok takibinde (mtül) hem de özel boy bazında stok takibinde senkronize olarak yönetilmesini sağlar.

Temel Özellikler

  • Merkezi Profil Stok Yönetimi: Tüm profil stok işlemleri tek yerden yönetilir
  • ERPNext Stok Senkronizasyonu: Orijinal ERPNext stok sistemi ile tam uyumlu
  • Boy Bazında Detaylı Takip: Her profil boy için ayrı stok takibi
  • Çoklu Doküman Desteği: Tüm ERPNext dokümanlarında profil stok yönetimi
  • Otomatik Stok Güncelleme: Giriş/çıkış işlemlerinde otomatik stok güncelleme
  • Hata Yönetimi ve Loglama: Kapsamlı hata takibi ve loglama sistemi

Desteklenen Dokümanlar

Doküman Türü Stok Girişi Stok Çıkışı Rezervasyon Doğrulama
Alış İrsaliyesi ✅ (İptal) -
Satınalma Faturası - -
Stok Girişi - -
Satış Siparişi - -
Sevk İrsaliyesi ✅ (İptal) -
Satış Faturası ✅ (İptal) -
Stok Çıkışı ✅ (İptal) -
Malzeme Talebi - -

Teknik Mimari

1. Merkezi Profil Stok Yönetici (profile_stock_manager.py)

  • Profil ürün kontrolü
  • MTÜL hesaplama
  • ERPNext stok güncelleme
  • Profile Stock Ledger güncelleme
  • Hata yönetimi ve loglama

2. Event Handler'lar (doctype_events.py)

  • Tüm dokümanlar için profil stok event'leri
  • Giriş/çıkış işlemleri
  • İptal işlemleri
  • Doğrulama işlemleri

3. API Fonksiyonları (profile_stock_api.py)

  • Stok özeti
  • Boy bazında stok bilgisi
  • Stok yeterlilik kontrolü
  • Hareket geçmişi
  • Stok uyarıları

Kullanım Senaryoları

Alış İşlemi (Stok Girişi)

  1. Alış irsaliyesi oluşturulur
  2. Profil ürünler için custom_is_profile işaretlenir
  3. custom_profile_length_m (boy) ve custom_profile_length_qty (adet) girilir
  4. Doküman onaylandığında:
    • ERPNext stok sistemi güncellenir (mtül)
    • Profile Stock Ledger güncellenir (boy bazında)
    • Her iki sistem senkronize olur

Satış İşlemi (Stok Çıkışı)

  1. Sevk irsaliyesi oluşturulur
  2. Profil ürünler için boy ve adet bilgileri girilir
  3. Doküman onaylandığında:
    • ERPNext stok sistemi güncellenir (mtül)
    • Profile Stock Ledger güncellenir (boy bazında)
    • Stok yeterliliği kontrol edilir

Stok Kontrolü

  • API fonksiyonları ile gerçek zamanlı stok kontrolü
  • Boy bazında stok yeterliliği
  • Düşük stok uyarıları
  • Hareket geçmişi takibi

Jaluzi İşlemleri

  1. İlgili dokümanda (SO, DN, PR, vb.) satır eklenir
  2. custom_is_jalousie işaretlenir (otomatik olarak profil alanları devre dışı kalır)
  3. custom_jalousie_width (en) ve custom_jalousie_height (boy) girilir
  4. "Miktarı Hesapla" butonuna basılır
  5. Sistem otomatik olarak alan hesabını yapar: En × Boy = Alan (m²)
  6. Hesaplanan değer qty ve stock_qty alanlarına yazılır

Örnek: 2.5m × 1.8m = 4.5 m²

Yazdırma Formatı

Yazdırma formatında (Print Format) sadece boyut alanları görüntülenir:

Görünen Alanlar: - ✅ Profile Length (m) - Profil boyu - ✅ Profile Length Qty - Profil adedi
- ✅ Jalousie Width (m) - Jaluzi eni - ✅ Jalousie Height (m) - Jaluzi boyu

Gizlenen Alanlar: - ❌ Is Profile checkbox - ❌ Is Jaluzi checkbox - ❌ Calculate Quantity butonları

Otomatik Description Güncellemesi: - Item description alanına teknik detaylar eklenir - Profil: "Profil: 6.0m × 5 adet" - Jaluzi: "Jaluzi: 2.5m (En) × 1.8m (Boy) = 4.50 m²"

İrsaliye Çıktıları

Delivery Note (Sevk İrsaliyesi) ve Purchase Receipt (Alış İrsaliyesi) print format'ında fiyat bilgileri tamamen gizlidir:

Gizlenen Fiyat Alanları (Item Seviyesi): - ❌ Rate - Birim Fiyat - ❌ Amount - Tutar - ❌ Discount Amount - İndirim Tutarı - ❌ Distributed Discount Amount - Dağıtılmış İndirim Tutarı - ❌ Rate and Amount - Fiyat ve Tutar - ❌ Stock UOM Rate - Stok Birim Fiyatı - ❌ Base Rate With Margin - Marjlı Fiyat (Şirket Para Birimi)

Gizlenen Toplam Alanları (Belge Seviyesi): - ❌ Total - Toplam - ❌ Grand Total - Genel Toplam - ❌ Rounded Total - Yuvarlatılmış Toplam - ❌ In Words - Yazıyla Tutar - ❌ Tax Withholding Net Total - Vergi Tevkifatı Net Toplamı (Purchase Receipt) - ❌ Amount Eligible for Commission - Komisyona Uygun Tutar (Delivery Note)

Gizlenen Diğer Alanlar: - ❌ Use Serial No / Batch Fields - Seri No / Parti Alanlarını Kullanın - ❌ Grant Commission - Komisyona İzin ver (Delivery Note)

Görünen Alanlar: - ✅ Item Code, Description, Quantity, UOM - ✅ Profil/Jaluzi boyut bilgileri (varsa) - ✅ Tedarikçi/Müşteri, tarih, adres bilgileri

Bu sayede irsaliye çıktılarında sadece miktar ve ürün bilgileri görünür, tüm fiyat detayları gizli kalır.

Kurulum ve Konfigürasyon

1. Custom Field'lar

Profil Ürünler İçin:
  • custom_is_profile: Profil ürün kontrolü
  • custom_profile_length_m: Boy bilgisi
  • custom_profile_length_qty: Adet bilgisi
Jaluzi Ürünler İçin:
  • custom_is_jalousie: Jaluzi ürün kontrolü
  • custom_jalousie_width: En bilgisi (m)
  • custom_jalousie_height: Boy bilgisi (m)

Not: Profil ve Jaluzi alanları birbirini dışlar. Bir satır ya profil ya da jaluzi olarak işaretlenebilir.

2. Event Hook'ları

hooks.py dosyasında tüm gerekli event hook'ları tanımlanmıştır.

3. Profil Ürün Grupları

Varsayılan olarak PVC ve Camlar ürün grupları profil olarak kabul edilir.

API Kullanımı

Stok Özeti

import frappe
result = frappe.call('uretim_planlama.uretim_planlama.profile_stock_api.get_profile_stock_overview')

Stok Yeterlilik Kontrolü

result = frappe.call('uretim_planlama.uretim_planlama.profile_stock_api.check_profile_availability', 
                    item_code='PROFIL-001', 
                    required_length=5.0, 
                    required_qty=10)

Hareket Geçmişi

result = frappe.call('uretim_planlama.uretim_planlama.profile_stock_api.get_profile_transaction_history',
                    profile_type='PROFIL-001',
                    from_date='2025-01-01',
                    to_date='2025-12-31')

Hata Yönetimi

  • Tüm işlemler try-catch blokları ile korunur
  • Hatalar frappe.log_error ile loglanır
  • Kullanıcıya anlaşılır hata mesajları gösterilir
  • İşlem başarısı/başarısızlığı detaylı olarak raporlanır

Performans Optimizasyonu

  • Gereksiz veritabanı sorguları minimize edilir
  • Batch işlemler için optimize edilmiş fonksiyonlar
  • Cache mekanizmaları ile hızlı erişim (Profil grupları 5 dakika cache)
  • Asenkron işlem desteği
  • Otomatik cache invalidation (Item Group değişikliklerinde)

Güvenlik

  • Tüm API fonksiyonları @frappe.whitelist() ile korunur
  • Kullanıcı yetki kontrolü
  • SQL injection koruması
  • Veri doğrulama ve sanitizasyon

Test ve Doğrulama

  • Her doküman türü için ayrı test senaryoları
  • Stok tutarlılığı kontrolü
  • Hata durumları test edilir
  • Performans testleri

Yardımcı Araçlar (Utilities)

Toplu Profil Stok İçe Aktarma

# CSV dosyasından toplu profil stok içe aktarma
bench --site sitename execute uretim_planlama.api.bulk_profile_import.process_bulk_import \
    --args "{'file_path': '/path/to/file.csv', 'create_profile_entries': True, 'submit_entries': True}"

Özellikler: - Toplu CSV import desteği - Otomatik Profile Entry oluşturma - Tarih bazında gruplama - Import özet raporu

Duplicate Kayıt Birleştirme

```bash

Duplicate profil stok kayıtlarını birleştirme (Dry Run)

bench --site sitename execute uretimplanlama.api.consolidateprofilestock.consolidateduplicates \ --args "{'dry_run': Tru

Related Other apps for Frappe & ERPNext

  • Erpnext — Free and Open Source Enterprise Resource Planning (ERP)
  • Helpdesk — Modern, Streamlined, Free and Open Source Customer Service Software
  • Print Designer — Visual print designer for Frappe / ERPNext
  • Ctr — CTR模型代码和学习笔记总结
  • Whitelabel — Whitelabel ERPNext
  • Fossunited — fossunited.org
  • Helm — Helm Chart Repository for Frappe/ERPNext
  • Frappe Attachments S3 — A frappe app to upload file attachments in doctypes to s3.