# Muhasebe ve ERP

> Paraşüt, BizimHesap, DİA, Logo, Netsis, Mikro, SAP Business One, SAP S/4HANA Cloud, Business Central ve Odoo bağlantıları — cari eşleşmesi, bakiye ve risk, satış faturaları, anlık stok, ERP'ye satış siparişi; Solk ERP API ve Excel.

**Ayarlar → Muhasebe ve ERP** (Çalışma alanı, yönetici) muhasebe programınızı ya da ERP'nizi CRM'e bağlar. Kural basit: **finans ve stok ERP'de yaşar, satış CRM'de**. Solk satış ekibinin işine yarayan veriyi ERP'den okur — müşterinin bakiyesi, vadesi geçen tutarı, faturaları, ürünün stoğu — ve ERP'ye yalnız satışın ürettiğini yazar: **satış siparişi** ve gerekiyorsa **yeni cari**. Muhasebe kaydı CRM'de açılmaz, ERP'deki veri CRM'den değiştirilmez.

Bölüm **Ayarlar → Uygulamalar** kataloğunda da *Muhasebe ve ERP* kategorisi olarak görünür. Paket sınırı yoktur; bağlantıları yalnız yöneticiler açar.

## Ne okunur, ne yazılır {#scope}

| | Veri | Nerede görünür |
|---|---|---|
| **ERP'den okunur** | Cari eşleşmesi (vergi no → unvan) | Firmanın ERP carisi; eşleşen firmaya vergi no / dairesi |
| | Bakiye, vadesi geçen tutar, kredi limiti | Firma kartında finans şeridi, risk oranı |
| | Satış ve iade faturaları, ödeme durumu | Firma kartında açık / vadesi geçen faturalar, son 12 ay ciro, ortalama vade |
| | Ürün kodu, liste fiyatı, anlık stok | Ürün eşleşmesi, siparişte ve ürün listesinde *Stok* |
| | Gönderilen siparişin durumu | Siparişler listesinde ERP çipi (açık · sevk edildi · faturalandı · iptal) |
| **ERP'ye yazılır** | Satış siparişi | Müşterinin PO numarası, ERP cari kodu, ürün kodu, miktar, fiyat, döviz, termin |
| | Yeni cari | Sipariş gönderilirken firma ERP'de yoksa (unvan, vergi dairesi / no, adres, telefon, e-posta) |
| **Alınmaz** | Alış faturaları, bizim satınalma siparişlerimiz, muhasebe fişleri, banka / çek / senet, maliyet, personel ve bordro | — |

**Satınalma siparişi (PO) neden yok?** CRM satış tarafını yönetir; tedarikçiye verdiğiniz siparişler ve alış faturaları satış ekibinin kararını değiştirmez, ERP'de kalır. Satış için önemli olan **müşterinin PO numarasıdır**: siparişte *Müşteri PO no* alanına yazılır, ERP'ye siparişle gider (SAP'de `NumAtCard`, Business Central'da `externalDocumentNumber`, Odoo'da `client_order_ref`) ve faturadaki PO ile eşleşir.

## Desteklenen programlar {#providers}

| Program | Yol | Okunan | Yazılan |
|---|---|---|---|
| **Paraşüt** | Bulut API (OAuth) | Cari, bakiye, satış faturaları, ürünler, stok | Yeni cari |
| **BizimHesap** | B2B API anahtarı | Ürünler, depo stokları | Sipariş → satış faturası taslağı |
| **DİA** <small>beta</small> | Web servis anahtarı | Cari, vade bakiyesi, faturalar, stok kartları, depo miktarı, sipariş durumu | Sipariş, yeni cari |
| **Logo** (Tiger · Go · j-Platform) <small>beta</small> | Logo REST Servisi | Cari, bakiye, satış faturaları, malzeme kartları, stok, sipariş durumu | Sipariş, yeni cari |
| **Netsis** (NetOpenX) <small>beta</small> | NetOpenX REST | Cari, faturalar, stok kartları, stok | Sipariş, yeni cari |
| **Mikro** (Jump · Fly) <small>beta</small> | Mikro API v2 | Cari ve bakiye, stok kartları, depo miktarı | Sipariş |
| **SAP Business One** | Service Layer | İş ortakları, bakiye / kredi limiti, A/R faturaları ve alacak dekontları, kalemler, depo stoğu, sipariş durumu | Sipariş, yeni iş ortağı |
| **SAP S/4HANA Cloud** <small>beta</small> | Standart OData API'leri | Müşteriler, faturalama belgeleri, ürünler, malzeme stoğu, sipariş durumu | Sipariş |
| **Microsoft Dynamics 365 Business Central** | API v2.0 | Müşteriler (bakiye, kredi limiti), satış faturaları ve alacak dekontları, kalemler (stok), sipariş durumu | Sipariş, yeni müşteri |
| **Odoo** | JSON-RPC | İş ortakları (alacak, kredi limiti), müşteri faturaları, ürünler (eldeki miktar), sipariş durumu | Sipariş, yeni iş ortağı |
| **Solk ERP API** | Ara katman / bağlantı ajanı | Hepsi (siz gönderirsiniz) | Hepsi (siparişleri siz alırsınız) |
| **Excel / CSV** | Dosya yükleme | Cari / bakiye listesi, fatura listesi, stok listesi | — |

- **Paraşüt**'te satış siparişi belgesi yoktur — sipariş CRM'de kalır, faturası Paraşüt'ten okunur.
- **BizimHesap** B2B API'si cari listesi ve bakiye vermez; sipariş satış faturası taslağı olarak açılır (BizimHesap'ta onaylayın).
- **beta** işaretli sağlayıcılarda alan ve uç adları ERP sürümüne göre değişebilir; bağlantının **Bağlantı** sekmesindeki **Gelişmiş** alanından JSON ile eşlenir. Kendi sisteminizle bir kez **Bağlantıyı dene** ile doğrulayın.
- Listede olmayan programlar (Uyumsoft, Nebim, Eta, Zirve, Akınsoft, Canias…) [Solk ERP API](#api) ile bağlanır.

## Bağlantı kurmak {#setup}

1. **Ayarlar → Muhasebe ve ERP → Bağlantı ekle** altında programınızı seçin. Sayfa o programın adımlarını yazar.
2. Kimlik bilgilerini girin ve **Bağla ve dene**'ye basın. Deneme örnek cari / ürün kayıtlarını gösterir. Şifre ve anahtarlar şifrelenerek saklanır, ekranda bir daha gösterilmez; değiştirmek istemediğiniz gizli alanı boş bırakın.
3. **Veriler** sekmesinde hangi verinin akacağını seçin (aşağıda) ve **Otomatik eşitleme** sıklığını belirleyin (15 dakika – günde bir, ya da yalnız elle).
4. **Özet** sekmesinde **Şimdi eşitle** ile ilk eşitlemeyi başlatın; sonra **Eşleştirme** sekmesinden eşleşmeyen carilere bakın.

**Şirket sunucusundaki ERP** (Logo, Netsis, Mikro, SAP Business One): ERP'nin REST servisi internete **HTTPS** ile açılmalı ve güvenlik duvarında **yalnız kurulumunuzun sunucusuna** izin verilmelidir (sunucu adresi bağlantı sayfasında yazar). Servisi dışarı açmak istemiyorsanız şirket ağında çalışan bir **bağlantı ajanı** veriyi [Solk ERP API](#api) ile gönderir. Solk yalnız HTTPS ile ve yalnız herkese açık adreslere bağlanır.

Bir kurulumda en çok **6 bağlantı** açılabilir (ör. iki şirket, bir Excel). Birden çok bağlantı varsa siparişler **ana bağlantıya** gider — Veriler sekmesinde *Siparişler bu bağlantıya gider*.

## Bağlantı sayfası {#connection}

| Sekme | İçerik |
|---|---|
| **Özet** | Durum ve son eşitleme, **Şimdi eşitle** / **Bağlantıyı dene**; cari (eşleşen / bekleyen), fatura (açık, vadesi geçen), ürün ve gönderilen sipariş sayıları; en yüksek bakiyeli firmalar. |
| **Veriler** | Veri kümeleri ve seçenekleri, otomatik eşitleme, finans bilgisini kimin göreceği, ana bağlantı, bağlantıyı kapat / sil. |
| **Eşleştirme** | Cariler ve ürünler: eşleşen / eşleşmeyen / yok sayılan süzgeci, arama, firma seç, firma olarak aç, yok say. |
| **Siparişler** | ERP'ye gönderilen siparişler: durum, ERP numarası, hata ve **Yeniden dene**. |
| **Günlük** | Her eşitleme, deneme, gönderim ve yüklemenin sonucu ve süresi. |
| **Bağlantı** | Kimlik bilgileri (**Kaydet ve dene**), **Gelişmiş** eşleme; Solk ERP API'de anahtar ve uç noktalar. |
| **Dosya yükle** | Yalnız Excel / CSV bağlantısında. |

## Veriler {#datasets}

| Veri | Seçenekler |
|---|---|
| **Cari hesaplar** | *Eşleşmeyen cariler*: yalnız eşleştir (varsayılan) · son 12 ayda faturası olanları firma olarak aç · hepsini firma olarak aç. *Eşleşen firmaya vergi no / dairesini yaz*. |
| **Bakiye ve risk** | Firma kartında bakiye, vadesi geçen tutar, kredi limiti ve risk oranı. Firmaya bağlanması için Cari hesaplar açık olmalı. |
| **Satış faturaları** | İlk eşitlemede geriye: 3 ay – 3 yıl (varsayılan 1 yıl); sonra yalnız değişenler. İade faturaları ayrı işaretlenir. |
| **Ürünler ve fiyat** | Stok kartları CRM ürünleriyle koddan eşleşir. *Eşleşen ürünün liste fiyatını ERP fiyatıyla güncelle* (varsayılan kapalı). |
| **Anlık stok** | Siparişte ve ürün listesinde **Stok**: o anki miktar ve depo kırılımı; 10 dakika önbellekte tutulur. |
| **Sipariş durumu** | Gönderilen siparişin ERP'deki durumu. *ERP'de sevk edilince / faturalanınca CRM siparişini kapat* (varsayılan açık). |
| **Yeni cari aç** <small>ERP'ye yazar</small> | Sipariş gönderilirken firma ERP'de yoksa cari açılır. Kapalıyken eşleşmeyen firmanın siparişi gönderilmez (*Eşleştirme*'den cari seçin). |
| **Satış siparişi gönder** <small>ERP'ye yazar</small> | *Elle* — siparişte **ERP'ye gönder** · *Kendiliğinden* — sipariş açılınca. |

Sağlayıcının desteklemediği veri *bu sağlayıcıda yok* olarak soluk görünür. **Finans bilgisini kim görür?** — *Firmayı görebilen herkes* (varsayılan) · *Firmanın sorumlusu ve yöneticiler* · *Yalnız yöneticiler*; tüm bağlantılar için geçerlidir ve REST API'de de uygulanır.

## Cari eşleşmesi {#matching}

Her ERP carisi önce **vergi numarasıyla** (VKN / TCKN), bulunamazsa **unvanla** CRM firmasına bağlanır. Unvan karşılaştırmasında Türkçe harf farkı, büyük / küçük harf ve şirket türü (*A.Ş.*, *Ltd. Şti.*, *San. ve Tic.*) yok sayılır; aynı ada birden çok firma uyuyorsa eşleşme yapılmaz. Eşleşme nedeni satırda yazar: *Vergi no*, *Unvan*, *Elle*, *ERP'den açıldı*, *Siparişte açıldı*, *Ara katman*.

**Eşleştirme** sekmesinde eşleşmeyen cari için **Firma seç** (arama), **firma olarak aç** ya da **yok say** (tedarikçi, personel cari hesapları); eşleşenin bağını kaldırabilir ya da başka firmaya taşıyabilirsiniz. Elle yapılan eşleşmeyi ya da kaldırdığınız bağı eşitleme değiştirmez. *Hepsini firma olarak aç* eşleşmeyen tüm carileri tek seferde açar (aynı adlı firma varsa ona bağlar). Bir firmaya birden çok cari bağlanabilir (ör. iki şirketteki hesap) — finans özeti hepsini toplar.

Firma formunda **Vergi no** ve **Vergi dairesi** alanları vardır; doluysa eşleşme kesinleşir ve ERP'de cari açılırken bu bilgiler gider.

## Firma kartında finans {#finance}

Eşleşen firmanın kartında başlığın altında **finans şeridi**: **Bakiye**, **Vadesi geçen**, **Kredi limiti** (doluluk çubuğu ve risk oranı), **Açık faturalar** (sayı ve tutar), **Son 12 ay** ciro ve **Son fatura**. Şeride tıklayınca firmanın **Faturalar** sayfası açılır: *Tümü · Açık · Vadesi geçen · Ödenmiş* (varsa *İade*) süzgeci; fatura no, tarih, vade, tutar, kalan, durum, PO no — iade faturaları eksi tutarla.

Tutarlar ERP'nin dövizinde gösterilir (ciro ana dövize çevrilir). ERP bakiye vermiyorsa (ör. fatura listesi yüklendiyse) vadesi geçen tutar faturaların kalanından hesaplanır. Firma hiçbir cariyle eşleşmemişse yöneticiye kartta *bu firma bir ERP carisiyle eşleşmedi · Eşleştir* satırı çıkar.

## Siparişi ERP'ye göndermek {#orders}

**Siparişler** sayfasındaki yeni sipariş satırında **Müşteri PO no** alanı vardır; PO firmanın altında görünür. ERP bağlıyken listede:

- Ürünün yanında **stok** — tıklayınca ERP'den o anki miktar ve depo kırılımı açılır (*önbellekten* ya da canlı; `Shift` ile tıklamak yeniler).
- **ERP'ye gönder** (gönder simgesi) — sipariş ana bağlantıya satış siparişi olarak yazılır. Firma ERP'de yoksa ve *Yeni cari aç* açıksa önce cari açılır. Ürünün ERP kodu olmalıdır (ürün kodu ERP stok koduyla aynıysa kendiliğinden eşleşir; değilse **Eşleştirme → Ürünler**).
- Gönderilen siparişin yanında **ERP çipi**: *Sırada* · *Gönderiliyor* · *ERP'ye gönderildi* · *ERP'de açık* · *Sevk edildi* · *Faturalandı* · *ERP'de kapandı* · *ERP'de iptal* · *Gönderilemedi*; çipte ERP belge numarası, ipucunda hata ya da ERP'nin durum metni.

*Kendiliğinden* gönderimde yalnız CRM'de yeni açılan siparişler gider (Hızlı Giriş, sipariş formu, tekliften sipariş, mobil, API) — Excel'den içe aktarılan geçmiş siparişler ve örnek veri gönderilmez. Hata veren gönderim artan aralıklarla (5 dk – 12 saat) yeniden denenir; hata metni **Siparişler** sekmesinde yazar. Sevk edildi / faturalandı / kapandı durumu gelince CRM siparişi kapanır, ERP'de iptal edilirse siparişin sahibine bildirim gider. Aynı sipariş ikinci kez gönderilmez.

## Solk ERP API {#api}

Listede olmayan ya da şirket ağında kalması gereken ERP'ler için: kendi ara katmanınız, entegratörünüz ya da şirket ağındaki bir **bağlantı ajanı** veriyi Solk'a **gönderir** ve ERP'ye yazılacak siparişleri **alır**. **Bağlantı ekle → Solk ERP API** bir anahtar (`erp_…`) üretir; anahtar **yalnız bir kez** gösterilir, **Bağlantı** sekmesinde yenilenir (eski anahtar hemen geçersiz olur).

```bash
curl -X POST https://<firma>.solk.app/api/erp/v1/customers \
  -H "Authorization: Bearer $SOLK_ERP_KEY" -H "Content-Type: application/json" \
  -d '{"items": [{"ext_id": "120.01.045", "code": "120.01.045", "name": "Kumsal Plastik A.Ş.", "tax_no": "4810123456"}]}'
```

| Uç | İş |
|---|---|
| `GET /api/erp/v1/ping` | Anahtarı ve açık veri kümelerini doğrular. |
| `POST /api/erp/v1/customers` | Cariler (eşleşme + isteğe bağlı firma açma). |
| `POST /api/erp/v1/balances` | Bakiye, vadesi geçen, kredi limiti. |
| `POST /api/erp/v1/invoices` | Satış / iade faturaları. |
| `POST /api/erp/v1/products` | Stok kartları (kod, ad, birim, fiyat). |
| `POST /api/erp/v1/stock` | Eldeki miktar ve depo kırılımı. |
| `GET /api/erp/v1/orders?claim=1` | ERP'ye yazılacak siparişleri alır (sahiplenir). |
| `POST /api/erp/v1/orders/{id}` | Siparişin ERP'deki sonucunu bildirir (`ext_no`, durum). |

Gövde `{"items": [...]}` biçimindedir, tek istekte en çok **2.000 kayıt**; bağlantı başına dakikada 600 istek. Aynı `ext_id` yeniden gelince kayıt güncellenir, çoğalmaz — ajan tüm listeyi her seferinde gönderebilir. Alanlar ve örnek yanıtlar: [Solk ERP API başvurusu](/rest-api/erp/ping).

Sipariş döngüsü: CRM'de **ERP'ye gönder** siparişi sıraya koyar (*Sırada*) → ajan `GET /orders?claim=1` ile alır (30 dakika boyunca tekrar dönmez) → ERP'ye yazar → `POST /orders/{id}` ile `{"status": "open", "ext_no": "SS-2026-0193"}` bildirir. Cari ERP'de yeni açıldıysa `customer_ext_id` ile gönderin, firma eşleşmesi kaydedilir. Hata olursa `{"status": "error", "error": "…"}` — CRM'de **Yeniden dene** çıkar.

## Excel / CSV {#file}

API'si olmayan programlardan cari bakiye listesi, fatura listesi ve stok listesi dosyayla yüklenir: **Bağlantı ekle → Excel / CSV → Dosya yükle**. Sütunlar başlıktan tanınır (Türkçe ya da İngilizce: *Cari kodu, Unvan, Vergi no, Bakiye, Borç, Alacak, Vadesi geçen, Risk limiti · Fatura no, Tarih, Vade, Tutar, Kalan, PO no · Stok kodu, Stok adı, Birim, Fiyat, Miktar*); her liste için **Şablon** indirilebilir. Borç ve Alacak ayrı sütunlardaysa bakiye = borç − alacak. Aynı dosyayı yeniden yüklemek kayıtları günceller, çoğaltmaz. Excel bağlantısında stok, son yüklenen miktardır.

## Telefonda ve API'de {#api-mobile}

REST API'de firma kartı (`GET /api/v1/customers/{id}`) `tax_no`, `tax_office` ve `finance` alanlarını verir; ayrıca [Firmanın finansı](/rest-api/finance/customer-finance), [Ürünün anlık stoğu](/rest-api/finance/product-stock) ve [Siparişi ERP'ye gönder](/rest-api/finance/order-send). `/me` → `api` 54, `caps.erp`, `caps.erp_push`, `caps.erp_stock`. Dışa aktarmada `erp_cariler`, `erp_faturalar`, `erp_urunler`, `erp_siparis_gonderimleri` tabloları.

## Güvenlik {#security}

- Bağlantıları yalnız yöneticiler açar, değiştirir ve siler; her işlem denetim günlüğüne yazılır.
- Şifre, istemci gizli anahtarı ve belirteçler şifrelenmiş saklanır; Solk ERP API anahtarının yalnız özeti tutulur.
- ERP'ye giden istekler yalnız HTTPS ve yalnız herkese açık adreslere; yönlendirmeler de denetlenir.
- Solk ERP'deki muhasebe kayıtlarını değiştirmez — yazılan yalnız satış siparişi ve (açıksa) yeni cari.
- Finans bilgisinin görünürlüğü ayardan daraltılır; kayıt görünürlüğü (takım modu) ERP verisine de uygulanır.