Endpoint

Tek api isteğiyle tüm sipariş verisini gönderebilmek için kullanılan endpoint: https://api.propars.net/api/v1/core/sale/create_nested/

Örnek Veri

siparis_data = {
    'sale_code': 'sale-0123',
    'order_date': '2017-07-01T09:00:00+0300',
    'notes': 'Fatura notları serbest metin',
    'currency': 1,
    'box': 'SENTBOX',       # SENTBOX: Giden fatura, INBOX: Gelen fatura    (varsayilani SENTBOX)
    'einvoice_type': 'SATIS',
    'einvoice_profile': 'TEMELFATURA',
    'source': 'store',          # store veya website olabiliyor.
    'order_number': '012345678a',       # secmeli alandir, bos birakilabilir
    'payment_method_model': 'finance.virtualpos',          # secmeli alandir, bos birakilabilir
    'cargo_payment': 'h',
    'website_url': 'http://orneksiteadi.com',           # bos birakilabilir, kaynak website iken kullanilir
    'customer_detail': {
        "name": 'Test Müşteri',
        "integration_store_id": 'abc-12345',       # musteri kodu
        "email": "test@test.com",
        "telephone_number": "02120001122",
        "fax_number": "",
        "city_name": "İstanbul",
        "district": "Avcılar",
        "company_title": "Firma Ünvanı",
        "tax_office": "Avcılar",        # vergi dairesi
        "tax_number": "1234567890",     # kurumsal musteride bu alana 10 haneli vkn yazilacak
        "tc_identity_number": "",       # bireysel musteride bu alana 11 haneli vkn yazilacak
        "customer_type": "organizational"      # bireyselde individual, kurumsalda organizational
    },
    'billing_address_detail': {
        "name": "Fatura alıcı adı veya ünvan",
        "code": "xyz-1234",      # adres kodu
        "telephone_number": "02129998877",
        "fax_number": "",
        "city_name": "İstanbul",
        "district": "Avcılar",
        "address": "Test mahallesi. Test sokak. No: 1"
    },
    'items': [
        {
            'product_name': 'Test Ürünü 1',
            'product_code': 'abc-321---',       # stok kodudur. bos birakilabilir 
            'buyer_product_code': 'alici-kod-ornek-1',      # alici stok kodudur. bos birakilabilir
            'price': '123.45',          # decimal birim fiyat
            'quantity': '10.553',           # decimal miktar
            'vat_rate': '18',           # kdv orani
            'discount_rate': '10',      # iskonto orani,
            'unit': 1,
            'barcode': '8591111111111',         # bos birakilabilir
            'notes': 'Satır Açıklaması',        # bos birakilabilir
            'cargo_campaign_code': '1231212412312312321'            # bos birakilabilir

        },
        {
            'product_name': 'Test Ürünü 2',
            'product_code': 'abc-321-2---',     # stok kodudur. bos birakilabilir 
            'buyer_product_code': 'alici-kod-ornek-2',      # alici stok kodudur. bos birakilabilir
            'price': '10.00',          # decimal birim fiyat
            'quantity': '25.67',           # decimal miktar
            'vat_rate': '8',           # kdv orani
            'discount_rate': '0',      # decimal iskonto orani,
            'unit': 1,
            'barcode': '8591111111112',
            'notes': 'Satır Açıklaması',        # bos birakilabilir
            'cargo_campaign_code': '1231212412312312321'            # bos birakilabilir
        }
    ]
}

Alan Açıklamaları

  • sale_code: Sipariş Kodu alanıdır, boş bırakılabilir.
  • order_date: Sipariş Tarihi ( (Yıl)-(Ay)-(Gün)T(Saat):(Dakika):(Saniye)+0300 ) (+0300 saat dilimidir)
  • source: Sipariş Kaynağı store ve website değerlerini alabilir.
  • payment_method_model : Ödeme yöntemi tipi (Alabileceği değerler aşağıdadır.). Boş bırakılabilir.
  • cargo_payment: Kargo ödeyicisini belirten alandir. (Alabileceği değerler aşağıdadır.)
  • customer_detail: Müşteri bilgisini bulunduran bölümdür. Bu bilgilerle Customer objesi yaratılır.
  • customer_detail>integration_store_id: Müşteri kodudur. Boş bırakılabilir. Fatura müşterisi tayin edilirken bu alandaki bilgi ile eşleşen müşteri varsa o seçilir, yoksa yeni müşteri oluşturulur.
  • billing_address_detail: Fatura adresini bulunduran bölümdür. Bu bilgilerle Customer Address objesi yaratılır.
  • billing_address_detail>code: Fatura adres kodudur. Faturaya tayin edilen müşterinin verilen kodla eşleşen adresi varsa o adres kullanılır, yoksa müşteriye yeni adres oluşturulur.
  • items: Sipariş kalemleri listesidir. Sale Item objelerini oluşturur.

- Ödeme Yöntemleri

'finance.cash' => Nakit
'finance.payatthedoor' => Kapida odeme
'finance.creditcard' => Kredi karti
'finance.virtualpos' => Sanal pos
'finance.check' => Cek
'finance.eft' => EFT
'finance.voucher' => Senet
'finance.moneyorder' => Havale

- Kargo Ödeme Seçenekleri

's' => "Satıcı öder"
'b' => "Alıcı öder"
'h' => "Elden teslim"  (varsayilan deger budur. alan bos gonderilirse siparis elden teslim olarak kaydedilir.)

Fatura Bilgileri / Url Parametreleri

Yukarıdaki endpointe url parametreleri (query string) olarak bazı yönergeler ve siparişle birlikte yaratılmak istenen (isteğe bağlı) faturanın bazı bilgileri girilebilmektedir.

  • create_invoice: 1 veya true gönderilirse oluşturulacak olan sipariş için otomatik olarak fatura da oluşturulur. Zorunlu değildir

  • send_invoice: 1 veya true gönderilirse oluşturulacak olan sipariş için fatura karşı tarafa göre efatura veya earşiv olarak otomatik gönderilir. Zorunlu değildir. (Bu parametre kullanıldığında create_invoice parametresi dikkate alınmaz.)

  • invoice_date: Sipariş için fatura oluşturuluyorsa fatura tarihi bu parametre ile belirlenebilir. Zorunluluğu otomatik fatura tarihi ayarına bağlıdır.

  • invoice_uuid: Sipariş için fatura oluşturuluyorsa ve oluşacak olan faturanın uuid numarası (ETTN) client tarafından belirlenmek isteniyorsa bu parametre ile belirlenebilir. Formatı uuid version 4 olmalıdır. Zorunlu değildir

  • invoice_number: Sipariş için fatura oluşturuluyorsa ve oluşacak olan faturanın fatura numarası numarası (ETTN) client tarafından belirlenmek isteniyorsa bu parametre kullanılabilir. Zorunlu değildir

  • invoice_char_code: ??





Veri Gönderimi

Buradaki fonksiyonların kullanıldığı varsayılırsa üstteki sipariş verisinin sunucuya gönderilmesi aşağıdaki şekillerde olacaktır.

- Python

# token'in e-posta ve parola ile alinip bir cache mekanizmasi ile saklaniyor oldugu varsayilmakta
token = 'b61fd493d01cfb80d386171*****************'

endpoint = 'https://api.propars.net/api/v1/core/sale/create_nested/?create_invoice=true&invoice_number=ABC2018000000001'
sale = call_api(token, method='POST', endpoint=endpoint, data=siparis_data)
print(sale)

-Php

$token = 'b61fd493d01cfb80d386171*****************'

$endpoint = 'https://api.propars.net/api/v1/core/sale/create_nested/?create_invoice=true&invoice_number=ABC2018000000001'
$sale = api_request($token, $endpoint, $method='POST', $data=$siparis_data)
print_r($sale)

Sunucu Yanıtı

{
    "id": 41407,
    "despatch_number": null,
    "source_xml": null,
    "cargo_payment": "h",
    "invoice_has_failed": false,
    "currency": 1,
    "debit_tx": 50252,
    "box": "SENTBOX",
    "status": "ST_NEW",
    "items": [
        {
            "vat_amount": 20.536,
            "unit": 1,
            "notes": "Satır Açıklaması",
            "cargo_campaign_code": "1231212412312312321",
            "liquid_stock": null,
            "discount_rate": "0",
            "barcode": "8591111111112",
            "item": null,
            "variant_property_str": null,
            "id": 46004,
            "vat_rate": "8",
            "image_url": null,
            "item_detail": null,
            "quantity": "25.67",
            "shelf": null,
            "item_shelf": null,
            "price": "10",
            "integration_sale_id": null,
            "product_name": "Test Ürünü 2",
            "integration_sale_model": null,
            "tax_inclusive_total": 277.236,
            "discount_amount": 0
        },
        {
            "vat_amount": 211.047813,
            "unit": 1,
            "notes": "Satır Açıklaması",
            "cargo_campaign_code": "1231212412312312321",
            "liquid_stock": null,
            "discount_rate": "10",
            "barcode": "8591111111111",
            "item": null,
            "variant_property_str": null,
            "id": 46003,
            "vat_rate": "18",
            "image_url": null,
            "item_detail": null,
            "quantity": "10.553",
            "shelf": null,
            "item_shelf": null,
            "price": "123.45",
            "integration_sale_id": null,
            "product_name": "Test Ürünü 1",
            "integration_sale_model": null,
            "tax_inclusive_total": 1383.535663,
            "discount_amount": 130.28
        }
    ],
    "einvoice_template": null,
    "despatch_date": null,
    "billing_address": 116146,
    "payment_method_model": "finance.virtualpos",
    "order_number": "012345678a",
    "city_name": "İstanbul",
    "payment_method_id": null,
    "payment_tx": 50253,
    "customer": 462128,
    "notes": "Fatura notları serbest metin",
    "invoice_char_code": null,
    "shipping_address": null,
    "payment_date": null,
    "order_date": "2017-07-01T09:00:00+03:00",
    "common_status": "COMMON_ST_PENDING",
    "default_invoice_number": null,
    "name": null,
    "customer_detail": {
        "shipping_address_text": null,
        "shipping_address": null,
        "addresses": [
            {
            "district": "Avcılar",
            "address": "Test mahallesi. Test sokak. No: 1",
            "code": "xyz-1234",
            "id": 116146,
            "city_name": "İstanbul",
            "name": "Fatura alıcı adı veya ünvan",
            "telephone_number": "02129998877",
            "fax_number": ""
            }
        ],
        "billing_address": null,
        "city_name": "İstanbul",
        "email": "test@test.com",
        "customer_type": "organizational",
        "shipping_address_district": null,
        "tc_identity_number": "",
        "integration_username": null,
        "billing_address_text": null,
        "name": "Test Müşteri",
        "website_url": null,
        "id": 462128,
        "fax_number": "",
        "district": "Avcılar",
        "company": 10,
        "company_title": "Firma Ünvanı",
        "tax_number": "1234567890",
        "source": "store",
        "billing_address_city": null,
        "billing_address_district": null,
        "repr_name": "Test Müşteri",
        "tax_office": "Avcılar",
        "shipping_address_city": null,
        "source_xml": null,
        "is_einvoice_user": false,
        "telephone_number": "02120001122",
        "integration_store_id": "abc-12345"
    },
    "website_url": "http://orneksiteadi.com",
    "shipping_address_detail": null,
    "einvoice_profile": "TEMELFATURA",
    "invoice_has_sent": false,
    "source": "store",
    "invoice_number": "TST2018000000002",
    "default_payment_method": null,
    "pending_amount": 1660.77,
    "grand_total": 1660.77,
    "invoice": 36272,
    "sale_code": null,
    "billing_address_detail": {
        "district": "Avcılar",
        "address": "Test mahallesi. Test sokak. No: 1",
        "code": "xyz-1234",
        "id": 116146,
        "city_name": "İstanbul",
        "name": "Fatura alıcı adı veya ünvan",
        "telephone_number": "02129998877",
        "fax_number": ""
    },
    "einvoice_type": "SATIS",
    "marketplace_paid_cargo": false,
    "invoice_detail": {
        "einvoice_xml": null,
        "einvoice_template": null,
        "earchive_failure": null,
        "einvoice_sending_status_code": null,
        "einvoice_total_amount": null,
        "related_sale": 41407,
        "earchive_token": null,
        "earchive_email": null,
        "notes": "Fatura notları serbest metin",
        "einvoice_failure": null,
        "earchive_signed": false,
        "currency": 1,
        "einvoice_approval_status": null,
        "uuid": "659f3c42-33b1-4912-a1c1-5eb720e6c84f",
        "box": "SENTBOX",
        "earchive_id": null,
        "client": 462128,
        "einvoice_total_vat_amount": null,
        "id": 36272,
        "company": 10,
        "char_code": 12,
        "einvoice_profile": "TEMELFATURA",
        "earchive_url": null,
        "invoice_number": "TST2018000000002",
        "earchive_cancelled": false,
        "einvoice_status": "PENDING",
        "einvoice_total_tax_amount": null,
        "invoice_date": "2018-05-02T09:00:00+03:00",
        "earchive_mail_sent": false,
        "due_date": "2018-05-02",
        "einvoice_uuid": null,
        "einvoice_type": "SATIS",
        "einvoice_approval_status_code": "KABUL",
        "einvoice_response_sent": false,
        "cancelled": false,
        "einvoice_sending_status": null,
        "can_respond_einvoice": false,
        "einvoice_tax_exclusive_amount": null,
        "earchive_status": "PENDING",
        "einvoice_number": null
    }
}


- Sipariş ID

Sipariş oluşturma isteğinde birinci seviyedeki id değeridir (örnekte "id": 41407 şeklinde).

'/api/v1/core/sale/' endpointi ve bunun kapsadığı endpointlere yapılan GET, POST, PATCH gibi isteklere dönülen objelerdeki id verisi de bu kapsamda sipariş id'dir.

Kullanıcı panelinde bu örnekteki siparişin adresi wit.propars.net/orders/details/41407 olacaktır.



- Fatura ID

Eğer sipariş ile birlikte fatura oluşturulmuş ise (create_invoice veya send_invoice true gönderildi ise) sipariş oluşturma isteğinde invoice_detail > id olarak gelen değer (örnekte "id": 36272) fatura id olarak kullanılacaktır. Bu obje sistemde Sale Invoice objesi olarak bulunmaktadır ve siparişe ait bir alt objedir.

Bir siparişin aktif faturası var ise sipariş üzerinde invoice olarak bulunan alanda fatura id'si bulunacaktır (yukarıda "invoice": 36272). Fakat fatura iptal edilir ise sale objesi üzerindeki invoice alanı null değer dönecektir ama fatura Sale Invoice objesi olarak sistemde kalacaktır.

Bir siparişin birden fazla faturası olabilmektedir ancak o faturalardan en fazla 1 tanesi geçerli fatura olarak siparişe bağlı (siparişteki 'invoice' alanı ile) kalmakta, diğerleri ise siparişin iptal edilmiş olan faturaları olarak ele alınmaktadır. Faturaların hangi siparişe ait olduğunu belirtmek için fatura objesinde related_sale alanı kullanılmaktadır.



- Sipariş Kodu

Bir siparişe client uygulama tarafından belirlenen benzersiz bir kimlik vermek amacıyla kullanılabilecek alanıdır. Bazı kullanım alanları ve kullanılma şekilleri: