# Cari Hesap Kaydı

Uç noktalarında kullanılan verilerin türleri ve formatlarının tanımları sayfanın alt kısmında bulunabilir.

## Uç Noktaları

## Sayfayı Getir

<mark style="color:blue;">`GET`</mark> `https://cubicl.io/api/bookkeeping/page`

Cari hesap sayfası için gerekli cari hesap kaydı, aktivite ve istatistikleri getirir.

{% tabs %}
{% tab title="200: OK Sayfa verileri. Aktiviteler, Cari Hesap kayıtları, borçlar ve alacaklar. içerir." %}

```typescript
{
    activities : BookkeepingActivity[],
    entries : BookkeepingEntry[],
    payables : {
        total : number,
        outstanding : number,
        overdue : number,
        currency : string
    },
    receivables : {
        total : number,
        outstanding : number,
        overdue : number,
        currency : string
    }
}
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok." %}

```javascript
{ code : 4 }
```

{% endtab %}
{% endtabs %}

## Cari Hesap Kaydının Aktivitelerini Getir

<mark style="color:blue;">`GET`</mark> `https://cubicl.io/api/bookkeeping/activities`

#### Query Parameters

| Name                                    | Type   | Description               |
| --------------------------------------- | ------ | ------------------------- |
| entry<mark style="color:red;">\*</mark> | string | Cari Hesap kaydının ID'si |

{% tabs %}
{% tab title="200: OK Cari Hesap kaydının aktiviteleri" %}

```javascript
activities : BookkeepingActivity[]
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok" %}

```javascript
{ code : 4 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Kayıt bulunamadı" %}

```javascript
{ code : 1501 }
```

{% endtab %}
{% endtabs %}

## Cari Hesap Kaydının Detaylarını Getir

<mark style="color:blue;">`GET`</mark> `https://cubicl.io/api/bookkeeping/entries/{entry}`

#### Path Parameters

| Name                                    | Type   | Description               |
| --------------------------------------- | ------ | ------------------------- |
| entry<mark style="color:red;">\*</mark> | string | Cari Hesap kaydının ID'si |

{% tabs %}
{% tab title="200: OK Cari Hesap kaydının detayları" %}

```javascript
entry : BookkeepingEntry
```

{% endtab %}

{% tab title="404: Not Found Kayıt bulunamadı" %}

```javascript
{ code : 1501 }
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok" %}

```javascript
{ code : 4 }
```

{% endtab %}
{% endtabs %}

## Cari Hesap Kaydı Ekle

<mark style="color:green;">`POST`</mark> `https://cubicl.io/api/bookkeeping/entries`

Bir müşteriyle ilgili alacak veya borç kaydı ekler.

#### Request Body

| Name                                       | Type   | Description                                                                                                                                                                                                                                         |   |                                                                                                                                                                                                                                                                                 |
| ------------------------------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| customer<mark style="color:red;">\*</mark> | string | Müşteri ID'si                                                                                                                                                                                                                                       |   |                                                                                                                                                                                                                                                                                 |
| dueAt                                      | number | Son ödeme tarihi. Bu tarihten önce ödeme yapılması bekleniyor.                                                                                                                                                                                      |   |                                                                                                                                                                                                                                                                                 |
| paidAmount                                 | number | <p>Toplamın ne kadarı ödeniyor?</p><p></p><p>0'dan büyük ve toplam tutardan küçük olmalıdır.</p>                                                                                                                                                    |   |                                                                                                                                                                                                                                                                                 |
| desc                                       | string | Alacak veya borç kaydı açıklaması                                                                                                                                                                                                                   |   |                                                                                                                                                                                                                                                                                 |
| name<mark style="color:red;">\*</mark>     | string | Alacak veya borç kaydı adı                                                                                                                                                                                                                          |   |                                                                                                                                                                                                                                                                                 |
| currency<mark style="color:red;">\*</mark> | string | <p>Para birimi. Aşağıdaki değerlerden birini içermelidir:</p><p></p><p>TRY, USD, EUR, GBP, AUD, CAD, CHF, CNY, HKD, NZD, SEK, KRW, SGD, NOK, MXN, INR, ZAR, RUB, BRL, JPY, TWD, DKK, PLN, THB, IDR, HUF, CZK, ILS, PHP, AED, COP, SAR, MYR, RON</p> |   |                                                                                                                                                                                                                                                                                 |
| amount<mark style="color:red;">\*</mark>   | number | Cari hesap bakiyesi. 0'dan büyük olmalıdır.                                                                                                                                                                                                         |   |                                                                                                                                                                                                                                                                                 |
| type<mark style="color:red;">\*</mark>     | string | <p>receivable                                                                                                                                                                                                                                       |   | payable<br><br>receivable: Cari hesap alacak bakiyesi. Cubicl kullanıcısının bir ürün veya hizmet karşılığında müşterilerinden aldığı ödeme.<br><br>payable: Cari hesap borç bakiyesi. Cubicl kullanıcısının bir müşteriye bir ürün veya hizmet karşılığında yaptığı ödeme.</p> |

{% tabs %}
{% tab title="200: OK Etkinlik, ödeme ve ödeme etkinliği ile yeni kayıt" %}

```javascript
{
    entry : BookkeepingEntry
    entryActivity : BookkeepingActivity,
    payment? : BookkeepingPayment // Exists if paidAmount is given
    paymentActivity? : BookkeepingActivity // Exists if paidAmount is given
}
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok" %}

```javascript
{ code : 4 }
```

{% endtab %}

{% tab title="404: Not Found Müşteri bulunamadı" %}

```javascript
{ code : 303 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Kurumunuzun mevcut planı yetersiz. Paketinizi yükseltmelisiniz." %}

```javascript
{ code : 1201 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Para birimi desteklenmiyor" %}

```javascript
{ code : 1504 }
```

{% endtab %}
{% endtabs %}

## Cari Hesap Kaydını Güncelle

<mark style="color:orange;">`PUT`</mark> `https://cubicl.io/api/bookkeeping/entries/{entry}`

#### Path Parameters

| Name                                    | Type   | Description               |
| --------------------------------------- | ------ | ------------------------- |
| entry<mark style="color:red;">\*</mark> | string | Cari Hesap kaydının ID'si |

#### Request Body

| Name                                       | Type   | Description                                                                                                                                                                                                                                         |   |                                                                                                                                                                                                                                                                                 |
| ------------------------------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| type<mark style="color:red;">\*</mark>     | string | <p>receivable                                                                                                                                                                                                                                       |   | payable<br><br>receivable: Cari hesap alacak bakiyesi. Cubicl kullanıcısının bir ürün veya hizmet karşılığında müşterilerinden aldığı ödeme.<br><br>payable: Cari hesap borç bakiyesi. Cubicl kullanıcısının bir müşteriye bir ürün veya hizmet karşılığında yaptığı ödeme.</p> |
| dueAt                                      | number | Son ödeme tarihi. Bu tarihten önce ödeme yapılması bekleniyor.                                                                                                                                                                                      |   |                                                                                                                                                                                                                                                                                 |
| desc                                       | string | Alacak veya borç kaydı açıklaması                                                                                                                                                                                                                   |   |                                                                                                                                                                                                                                                                                 |
| name<mark style="color:red;">\*</mark>     | string | Alacak veya borç kaydı adı                                                                                                                                                                                                                          |   |                                                                                                                                                                                                                                                                                 |
| currency<mark style="color:red;">\*</mark> | string | <p>Para birimi. Aşağıdaki değerlerden birini içermelidir:</p><p></p><p>TRY, USD, EUR, GBP, AUD, CAD, CHF, CNY, HKD, NZD, SEK, KRW, SGD, NOK, MXN, INR, ZAR, RUB, BRL, JPY, TWD, DKK, PLN, THB, IDR, HUF, CZK, ILS, PHP, AED, COP, SAR, MYR, RON</p> |   |                                                                                                                                                                                                                                                                                 |

{% tabs %}
{% tab title="200: OK Güncellenmiş kayıt" %}

```javascript
entry : BookkeepingEntry
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok" %}

```javascript
{ code : 4 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Ödenen tutar, kayıt tutarından fazla olamaz" %}

```javascript
{ code : 1503 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Kurumunuzun mevcut planı yetersiz. Paketinizi yükseltmelisiniz." %}

```javascript
{ code : 1201 }
```

{% endtab %}

{% tab title="404: Not Found Kayıt bulunamadı" %}

```javascript
{ code: 1501 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Para birimi desteklenmiyor" %}

```javascript
{ code: 1504 }
```

{% endtab %}
{% endtabs %}

## Cari Hesap Kaydını Sil

<mark style="color:red;">`DELETE`</mark> `https://cubicl.io/api/bookkeeping/entries/{entry}`

Bu cari hesap kaydına ilişkin tüm aktivite ve ödeme kayıtları silinir.

#### Path Parameters

| Name                                    | Type   | Description               |
| --------------------------------------- | ------ | ------------------------- |
| entry<mark style="color:red;">\*</mark> | string | Cari Hesap kaydının ID'si |

{% tabs %}
{% tab title="200: OK Boş yanıt" %}

```javascript
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok" %}

```javascript
{ code : 4 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Kayıt bulunamadı" %}

```javascript
{ code : 1501 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Kurumunuzun mevcut planı yetersiz. Paketinizi yükseltmelisiniz." %}

```javascript
{ code : 1201 }
```

{% endtab %}
{% endtabs %}

## Ödeme Ekle

<mark style="color:green;">`POST`</mark> `https://cubicl.io/api/bookkeeping/payment`

#### Path Parameters

| Name                                    | Type   | Description               |
| --------------------------------------- | ------ | ------------------------- |
| entry<mark style="color:red;">\*</mark> | string | Cari Hesap kaydının ID'si |

#### Request Body

| Name                                         | Type   | Description                                                                                      |
| -------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------ |
| paidAmount<mark style="color:red;">\*</mark> | number | <p>Toplamın ne kadarı ödeniyor?</p><p></p><p>0'dan büyük ve toplam tutardan küçük olmalıdır.</p> |
| note                                         | string |                                                                                                  |

{% tabs %}
{% tab title="200: OK Yeni ödeme ve aktivite" %}

```javascript
{
    payment : BookkeepingPayment,
    activity : BookkeepingActivity
}
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok" %}

```javascript
{ code : 4 }
```

{% endtab %}

{% tab title="404: Not Found Kayıt bulunamadı" %}

```javascript
{ code : 1501 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Ödenen tutar, kayıt tutarından fazla olamaz" %}

```javascript
{ code: 1503 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Kurumunuzun mevcut planı yetersiz. Paketinizi yükseltmelisiniz." %}

```javascript
{ code : 1201 }
```

{% endtab %}
{% endtabs %}

## Ödeme Sil

<mark style="color:red;">`DELETE`</mark> `https://cubicl.io/api/bookkeeping/payments/{payment}`

#### Path Parameters

| Name                                      | Type   | Description |
| ----------------------------------------- | ------ | ----------- |
| payment<mark style="color:red;">\*</mark> | string | Ödeme ID'si |

{% tabs %}
{% tab title="200: OK Cari hesap aktivitesi" %}

```javascript
activity : BookkeepingActivity
```

{% endtab %}

{% tab title="403: Forbidden İzniniz yok" %}

```javascript
{ code : 4 }
```

{% endtab %}

{% tab title="404: Not Found Ödeme bulunamadı" %}

```javascript
{ code : 1502 }
```

{% endtab %}

{% tab title="422: Unprocessable Entity Kurumunuzun mevcut planı yetersiz. Paketinizi yükseltmelisiniz." %}

```javascript
{ code : 1201 }
```

{% endtab %}
{% endtabs %}

## Veriler

### BookkeepingEntry

```typescript
{
    org : string, // Kurum ID'si
    customer : string, // Müşteri ID'si
    /* receivable: Cari hesap alacak bakiyesi. Cubicl kullanıcısının
     * bir ürün veya hizmet karşılığında müşterilerinden aldığı ödeme.
     * 
     * payable: Cari hesap borç bakiyesi. Cubicl kullanıcısının
     * bir müşteriye bir ürün veya hizmet karşılığında yaptığı ödeme.
     */
    type : 'receivable' | 'payable',
    amount : number, // Cari hesap bakiyesi. 0'dan büyük olmalıdır.
    /* Para birimi. Aşağıdaki değerleri içerebilir:
     * TRY, USD, EUR, GBP, AUD, CAD, CHF, CNY, HKD, NZD, SEK,
     * KRW, SGD, NOK, MXN, INR, ZAR, RUB, BRL, JPY, TWD, DKK,
     * THB, IDR, HUF, CZK, ILS, PHP, AED, COP, SAR, MYR, RON
     */
    currency : string,
    name : string,
    desc : string | null,
    // Toplamın ne kadarı ödeniyor? 0'dan büyük ve toplam tutardan küçük olmalıdır.
    paidAmount : number,
    // Tamamen ödendi mi?
    isPaid : boolean,
    // Son ödeme tarihi. Bu tarihten önce ödeme yapılması bekleniyor.
    dueAt : number | null,
    // Kaydı oluşturan kullanıcının ID'si
    createdBy : string,
    createdAt : number,
}
```

### BookkeepingPayment

```typescript
{
    org : string, // Kurum ID'si
    customer : string, // Müşteri ID'si
    amount : number, // Cari hesap bakiyesi. 0'dan büyük olmalıdır.
    entry : string, // Cari hesap kayıt ID'si
    note : string | null, // Ödeme hakkında isteğe bağlı not
    createdBy : string, // Kaydı oluşturan kullanıcının ID'si
    createdAt : number
}
```

### BookkeepingActivity

```typescript
{
    org : string, // Kurum ID'si
    customer : string, // Müşteri ID'si
    entry : string, // // Cari hesap kayıt ID'si. Her zaman gereklidir.
    // Tip 'payment-received', 'payment-sent' veya 'payment-deleted' ise gereklidir.
    payment? : string,
    type : 'receivable-created' | 'payable-created' | 'payment-received' | 'payment-sent' | 'payment-deleted',
    data : {
        entryName : string,
        entryDueAt? : number, // 'dueAt' tanımlanmışsa gereklidir.
        amount : number, // Cari hesap bakiyesi. 0'dan büyük olmalıdır.
        /* Para birimi. Aşağıdaki değerleri içerebilir:
         * TRY, USD, EUR, GBP, AUD, CAD, CHF, CNY, HKD, NZD, SEK,
         * KRW, SGD, NOK, MXN, INR, ZAR, RUB, BRL, JPY, TWD, DKK,
         * THB, IDR, HUF, CZK, ILS, PHP, AED, COP, SAR, MYR, RON
         */
        currency : string,
        // Tip 'payment-received', 'payment-sent' veya 'payment-deleted' ise gereklidir.
        // Toplamın ne kadarı ödeniyor? 0'dan büyük ve toplam tutardan küçük olmalıdır.
        paidAmount? : number,
    createdBy : string // Kaydı oluşturan kullanıcının ID'si
    createdAt : number,
}
```
