# Akıllı Transfer
Bu fonksiyonun amacı farklı tutarlardaki tekrarlayan para transferlerini (Otomatik ödeme tanımlana**ma**yan) tek bir ekran üzerinden kullanıcının yapmasını sağlayacak toplu para transferi arabirimini sunmaktır.
## Kural ve Kısıtlar
* Sistem kullanıcının daha önce yaptığı transferleri tarayarak dinamik liste olarak öneride bulunur.
* Otomatik Ödeme talimatı sonucu oluşan hareketler listeye dahil edilmez.
* Kullanıcnın son 3 ay içerisinde 2 ve daha fazla yaptığı transferler dahil edilir.
* EFT, Fast, Havale ve Virman transfelerinin uygun olanları listeye dahil edilir.
* Liste en fazla 10 satır olabilir.
* Kullanıcı istediği transfer(ler)i yapmak yada yapmamak için seçebilir.
* Tüm transferler için açıklama ve ödeme(amaç) tipi ortaktır.
* İleri tarihli işlem kapsam dışıdır.
* İşlemler transactional gerçekleş**me**yecektir. Yapılamayan işlem bilgisi verilir.
## Servisler
### Dinamik Liste Alımı
Akıllı transfer ekranını doldurmak için kullanılacak temel verilerdir.
> GET /money-transfers/bulk/candidates
```json
{
"candidates": [
{
"last-transaction-no": "5a072f13-2999-417b-a36a-90f9ab6099ea",
"bank": "FinansBank",
"receiver": "Uğur Karataş",
"type": "EFT | Fast | Wire ..."
},
{
"last-transaction-no": "7a072f13-2999-417b-a36a-90f9ab6099ea",
"bank": "Denizbank",
"receiver": "Hatice Karataş",
"type": "EFT"
},
{
"last-transaction-no": "8a072f13-2999-417b-a36a-90f9ab6099ea",
"bank": "Garanti",
"receiver": "Hatice Karataş",
"type": "EFT"
},
{
"last-transaction-no": "9a072f13-2999-417b-a36a-90f9ab6099ea",
"bank": "İş Bank",
"receiver": "Uğur Karataş",
"type": "EFT"
}
]
}
```
### Transfer Emri
Kullanıcı gelen ekranda transfer yapmak istediği hareketleri seçip tutarları belirler ve genel ödeme tipi ve açıklama belirterek transferi başlatır.
> POST /money-transfers/bulk/order
#### Request
```json
{
"payment-type": "other",
"description": "giden paracıklar paracıklar",
"transfers": [
{
"last-transaction-no": "5a072f13-2999-417b-a36a-90f9ab6099ea",
"amount": "3850"
},
{
"last-transaction-no": "7a072f13-2999-417b-a36a-90f9ab6099ea",
"amount": "6000"
},
{
"last-transaction-no": "8a072f13-2999-417b-a36a-90f9ab6099ea",
"amount": "7500"
}
]
}
```
#### Response
Servis dönüş değeri olarak varsa komisyon ve gider tutarlarını ve transferin yapılıp yapılamayacağıo bilgisini dönerek özet geçer.
```json
{
"payment-type": "other",
"description": "giden paracıklar paracıklar",
"transfers": [
{
"status": "ready",
"last-transaction-no": "5a072f13-2999-417b-a36a-90f9ab6099ea",
"amount": "3850",
"expense": 0,
"total-amount": "3850"
},
{
"status": "ready",
"last-transaction-no": "7a072f13-2999-417b-a36a-90f9ab6099ea",
"amount": "6000",
"expense": 0,
"total-amount": "6000"
},
{
"status": "ready",
"last-transaction-no": "8a072f13-2999-417b-a36a-90f9ab6099ea",
"amount": "7500",
"expense": 100,
"total-amount": "7600"
}
]
}
```
### Transfer Onayı
Kullanıcı onay verdiğinde transfer paketi masrafları ve her bir işlem için anahtar içerecek şekilde oluşturulur ve onaya sunulur.
> POST /money-transfers/bulk/approve
#### Request
```json
{
"payment-type": "other",
"description": "giden paracıklar paracıklar",
"transfers": [
{
"last-transaction-no": "5a072f13-2999-417b-a36a-90f9ab6099ea",
"amount": "3850",
"expense": 0,
"id": "d6e6114c-bd8e-46b2-91f1-88b028082f78"
},
{
"status": "ready",
"last-transaction-no": "7a072f13-2999-417b-a36a-90f9ab6099ea",
"amount": "6000",
"expense": 0,
"id": "183ddeaa-51c4-4971-8f70-8f7dad261cca"
},
{
"status": "ready",
"last-transaction-no": "8a072f13-2999-417b-a36a-90f9ab6099ea",
"amount": "7500",
"expense": 100,
"id": "5bbd2cb8-a7b6-47d2-bdd3-0a5e4aee82c6"
}
]
}
```
#### Response
Servis transferleri yapar ve her bir transaction için işlem numarasını ekler. Böyleyece kullanıcıya dekont gösterme, detay sayfasına yönlendirme gibi işlemler için bu id kullanılır.
Yapılamayan işlemler ise işlemin status parametresinden anlaşılır.
```json
{
"payment-type": "other",
"description": "giden paracıklar paracıklar",
"transfers": [
{
"status": "completed",
"transaction-no": "ebdadas7585545",
"amount": "3850",
"expense": 0,
"id": "d6e6114c-bd8e-46b2-91f1-88b028082f78"
},
{
"status": "completed",
"transaction-no": "545",
"last-transaction-no": "7a072f13-2999-417b-a36a-90f9ab6099ea",
"amount": "6000",
"expense": 0,
"id": "183ddeaa-51c4-4971-8f70-8f7dad261cca"
},
{
"status": "Error",
"transaction-no": "",
"last-transaction-no": "8a072f13-2999-417b-a36a-90f9ab6099ea",
"amount": "7500",
"expense": 100,
"id": "5bbd2cb8-a7b6-47d2-bdd3-0a5e4aee82c6"
}
]
}
```