https://github.com/fattihkoca/diawebservice
Cari, stok ve hizmet kartları ile sipariş fişlerini Dia sunucusuna göndermek için kullanılan PHP tabanlı servistir.
https://github.com/fattihkoca/diawebservice
Last synced: 4 months ago
JSON representation
Cari, stok ve hizmet kartları ile sipariş fişlerini Dia sunucusuna göndermek için kullanılan PHP tabanlı servistir.
- Host: GitHub
- URL: https://github.com/fattihkoca/diawebservice
- Owner: fattihkoca
- Created: 2017-12-21T14:17:31.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-12-30T09:59:12.000Z (over 7 years ago)
- Last Synced: 2025-01-01T12:14:04.422Z (6 months ago)
- Language: PHP
- Homepage:
- Size: 29.3 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Dia Web Servisi (PHP)
Cari, stok ve hizmet kartları ile sipariş fişlerini ``Dia`` sunucusuna göndermek için kullanılan ``PHP`` tabanlı servistir.## Hazırlıklar
Öncelikle ``DiaWebService`` sınıfını çağırıp oturum açma isteği göndermeniz gerekmektedir. Sonrasında ``account_name`` belirtmelisiniz. Yani kullanacağınız hesabı seçmelisiniz. Ayrıca oturum sınıf konfigürasyonlarında seçeceğiniz isimde bir hesap olmalıdır.
```php
// DiaWebService sınıfının dosyası dahil edilir
include_once 'src/DiaWebService.php';// Sınıf çağrılır
$dia = new DiaWebService;// Oturum açılır
$dia->login();// Hesap adı belirlenir
$dia->account_name = 'demo';
```## Genel Bakış
``DiaWebService`` sınıfında tüm metod sonuçları dizi (Array) formatında dönmektedir. Sonuç içerisinde aşağıdaki parametreler bulunmaktadır:
* ``success``: Sonucun başarılı olup olmadığını belirtir. (``true`` veya ``false`` değerleri döner)
* ``message``: Sonuç ile ilgili bilgi mesajı belirtir. Sonuç başarılı ise "``OK``" mesajı döner.
* ``result``: Sonuç verilerini belirtir. (Genellikle ``Array`` formatındadır.)Örneğin ``login()`` metodunda oturum açılmışsa ``result`` içerisinde ``session_id``, yani oturum ``id`` bilgisi döner.
## Verileri Getirme
Dia'daki ilgili servisten istenilen bilgileri ``fetch()`` metoduyla getirebilirsiniz.* İlk argüman servis türüdür. Bunlar:
* ``customer``: Cari
* ``stock``: Stok
* ``service``: Hizmet
* ``order``: Sipariş* İkinci argüman gönderilecek veri dizisidir (Array).
```php
$servis_turu = 'customer';$send = $dia->fetch($servis_turu, $data);
```Örnek kullanım:
```php
$data = [
'filters' => [
[
'field' => 'id',
'operator' => '=',
'value' => '123',
]
]
];// Cari kartları listeleme isteği gönderilir
$send = $dia->fetch('customer', $data);// Sonuç başarılı ise ekrana bastırılır
if($send['success']) {
var_dump($send['result']);
}
// Hata sonucu bastırılır
else {
echo $send['message'];
}
```#### 1. Filtreleme (filters)
``fetch()`` metodunda, veri içerisinde ``filters`` parametresi zorunludur ve altında en az 1 tane filtre parametre grubu (``field``, ``operator``, ``value``) göndermek zorunludur.* ``field``: Filtrelenecek alanın adı. (mysql'de sütun veya column adı.)
* ``operator``: Filtre türü. Şu operatörler kullanılır: '``<``', '``>``', '``<=``', '``>=``', '``!``', '``=``', '``IN``', '``NOT IN``'
* ``value``: Filtre değeri.```php
$data = [
'filters' => [
[
'field' => 'id',
'operator' => '=',
'value' => '123',
]
]
];// Stok kartlarını getirme isteği gönderilir
$send = $dia->fetch('stock', $data);
```Ayrıca "``id`` değerleri içinde 'ABC' geçenleri getir" demek istediğimizde şunu kullanabilirsiniz:
```php
$data = [
'filters' => [
[
'field' => 'id',
'value' => 'ABC',
]
]
];// Servis kartlarını getirme
$dia->fetch('service', $data);
```#### 2. Sıralama (sorts)
Listenin belirli bir sırada gelmesi isteniyorsa kullanılır. ``sorts`` parametresinin altında en az 1 tane sıralama grubu (``field``, ``sorttype``) göndermelisiniz.* ``field``: Sıralanması istenen alan adı.
* ``sorttype``: Sıralama türü (ASC: düz sıralı, DESC: ters sıralı)```php
$data = [
'filters' => [
[
'field' => 'id',
'sorttype' => 'DESC',
]
]
];
```### İstenen Bir Veriyi ``ID`` Üzerinden Getirme
Dia'daki ilgili servisten kendi veri tabanınızda ve Dia'da aynı id ile kayıtlı bir veriyi ``fetch_by_id()`` metoduyla getirebilirsiniz. Eğer bir işleminizde farklı filtre kombinasyonlarını kullanmayacaksanız bu metod oldukça kullanışlıdır.* İlk argüman servis türüdür. Bunlar:
* ``customer``: Cari
* ``stock``: Stok
* ``service``: Hizmet
* ``order``: Sipariş* İkinci argüman gönderilecek ``id`` değeridir.
```php
$id = 123;// Cari kartı id referansıyla getirme isteği gönderilir
$send = $dia->fetch_by_id('customer', $id);// Sonuç başarılı ise ekrana bastırılır
if($send['success']) {
var_dump($send['result']);
}
// Hata sonucu bastırılır
else {
echo $send['message'];
}
``````php
$id = 123;// Sipariş fişini "id" referansıyla getirme
$dia->fetch_by_id('order', $id);
```## Yeni Veri Ekleme
Dia'daki ilgili servise yeni veri eklemek için ``insert()`` metodu kullanılır.* İlk argüman servis türüdür. Bunlar:
* ``customer``: Cari
* ``stock``: Stok
* ``service``: Hizmet
* ``order``: Sipariş* İkinci argüman gönderilecek veri dizisidir (Array).
```php
// Cari kart ekleme
$dia->insert('customer', $data);// Stok kartı ekleme
$dia->insert('stock', $data);// Hizmet kartı ekleme
$dia->insert('service', $data);// Sipariş fişi ekleme
$dia->insert('order', $data);
```Şimdi tek tek servisleri eklerken göndereceğimiz verilere bakalım:
### 1. Cari kart ekleme
Aşağıdaki tüm parametrelerin örnekteki gibi gönderilmesi zorunludur.```php
$data = [
'id' => 123, // Kendi veritabanınızdaki müşteri (Üye) id numarası
'firstname' => 'Pelin',
'lastname' => 'Çalışkan',
'email' => '[email protected]',
'address' => 'Mahalle Sokak Numara Posta Kodu',
'city' => 'Eskişehir',
'phone' => "5321234567",
'tckn' => "12345678901" // TC kimlik numarası
];// Cari kart ekleme isteği gönderilir
$send = $dia->insert('customer', $data);// Sonuç başarılı ise ekrana bastırılır
if($send['success']) {
echo 'Cari kart eklendi: #123';
}
// Hata sonucu bastırılır
else {
echo $send['message'];
}
```### 2. Stok kartı ekleme
``barcode`` parametresi hariç geri kalan tüm parametrelerin örnekteki gibi gönderilmesi zorunludur.```php
$data = [
'id' => '123', // ürün id'si
'name' => 'Okul Çantası', // ürün adı
'price' => 100, // ürün fiyatı
'tax' => 8, // kdv oranı
'tax_included' => true, // kdv dahil mi
'is_promotion' => false, // hediye ürün mü
'barcode' => '123456789000000' // [ZORUNLU DEĞİL]
];// Stok kartı ekleme isteği gönderilir
$send = $dia->insert('stock', $data);// Sonuç başarılı ise ekrana bastırılır
if($send['success']) {
echo 'Stok kartı eklendi: #123';
}
// Hata sonucu bastırılır
else {
echo $send['message'];
}
```### 3. Hizmet kartı ekleme
Aşağıdaki tüm parametrelerin örnekteki gibi gönderilmesi zorunludur.```php
$data = [
'id' => '123', // hizmet id'si
'name' => 'Online Ders', // hizmet adı
'price' => 500, // hizmet fiyatı
'tax' => 8, // kdv oranı
'tax_included' => true, // kdv dahil mi
'is_promotion' => false, // hediye ürün mü
];// Hizmet kartı ekleme isteği gönderilir
$send = $dia->insert('service', $data);// Sonuç başarılı ise ekrana bastırılır
if($send['success']) {
echo 'Hizmet kartı eklendi: #123';
}
// Hata sonucu bastırılır
else {
echo $send['message'];
}
```### 4. Sipariş fişi ekleme
``note_*`` parametreleri ve ``address_2`` parametresi hariç geri kalan tüm parametrelerin örnekteki gibi gönderilmesi zorunludur.```php
$data = [
'id' => '123', // sipariş id'si
'customer_id' => '123', // müşteri id'si (Cari kart Dia'da kayıtlı olmalı)
'installment' => 1, // taksit sayısı
'date' => time(), // unix formatında sipariş tarihi
'address' => 'Mahalle Sokak Kapı 3', // sevk adresi
'address_2' => '', // [ZORUNLU DEĞİL]
'city' => 'Eskişehir',
'phone' => '05321234567', // alıcı telefon
'is_eft' => false, // eft/havale ödemesi mi
'currency' => 'TRY', // para birimi (TRY, USD, EUR)
'products' => array( // sipariş kalemleri tanımlanır (Ürünler Dia'da kayıtlı olmalı)// Örnek stok ürünü seçelim (Fiziksel ürün)
array(
'is_physical' => true, // fiziksel ürün (STOK - MALZEME)
'id' => '123', // 1. ürün id.si
'price' => 100, // 1. ürün için ödenen tutar
'tax' => 8, // kdv
'tax_included' => true, // kdv dahil mi
'quantity' => 1, // satılan ürün adedi
'discount' => 0, // indirim oranı (yüzde)
'note_1' => 'Ürün notu 1', // [ZORUNLU DEĞİL]
'note_2' => 'Ürün notu 2', // [ZORUNLU DEĞİL]
),// Örnek hizmet ürünü seçelim (Fiziksel ürün değil)
array(
'is_physical' => false, // fiziksel ürün değil (HİZMET)
'id' => '123', // 2. ürün id.si
'price' => 900, // 2. ürün için ödenen tutar
'tax' => 8, // kdv
'tax_included' => true, // kdv dahil mi
'quantity' => 1, // satılan ürün adedi
'discount' => 5, // indirim oranı (yüzde)
'note_1' => 'Hizmet notu 1', // [ZORUNLU DEĞİL]
'note_2' => 'Hizmet notu 2', // [ZORUNLU DEĞİL]
)
),// Dilerseniz sipariş notlarını gönderebilirsiniz
'note_1' => 'Sipariş notu 1', // [ZORUNLU DEĞİL]
'note_2' => 'Sipariş notu 2', // [ZORUNLU DEĞİL]
'note_3' => 'Sipariş notu 3', // [ZORUNLU DEĞİL]
];// Sipariş fişi ekleme isteği gönderilir
$send = $dia->insert('order', $data);// Sonuç başarılı ise ekrana bastırılır
if($send['success']) {
echo 'Sipariş kartı eklendi: #123';
}
// Hata sonucu bastırılır
else {
echo $send['message'];
}
```## Dia'daki Hesap Bilgilerini Özelleştirme
Bu işlem için ``DiaWebService`` sınıfında yer alan ``$configurations`` değişkenindeki bazı parametreleri değiştirmelisiniz.```php
.
.
.
'accounts' => array(
.
.
'hesabim' => array(
'account' => 'sunucu_kodu', // tanımlanan sunucu kodu
'company' => 1, // firma kodu
'branch' => 1234, // şube kodu
'depository' => 4321, // depo kodu
'username' => 'ws',
'password' => '123456',
'lang' => 'tr',
'disconnect_same_user' => true, // önceki oturumları kapatır
),
.
.
),
.
.
.
```## Dia İçin ``ID`` Formatlarını Özelleştirme
``Dia`` için verdiğiniz ``id`` değerine önek, sonek ve karakter sabitleme yapabilirsiniz.
Bu işlem için ``DiaWebService`` sınıfında yer alan ``$configurations`` değişkenindeki bazı parametreleri değiştirebilirsiniz.#### 1. Cari kart kodu için;
```php
'customer' => array(
'prefix' => 'CK', // önek
'suffix' => '', // sonek
'length' => 15 // karakter sayısı
)
```#### 2. Stok kart kodu için;
```php
'stock' => array(
'prefix' => 'CK', // önek
'suffix' => '', // sonek
'length' => 15 // karakter sayısı
)
```#### 3. Servis kart kodu için;
```php
'service' => array(
'prefix' => 'CK', // önek
'suffix' => '', // sonek
'length' => 15 // karakter sayısı
)
```#### 4. Sipariş fiş kodu için;
```php
'order' => array(
'prefix' => 'CK', // önek
'suffix' => '', // sonek
'length' => 15 // karakter sayısı
)
```## Konfigürasyonları Farklı Bir Yere Taşıma
``DiaWebService`` sınıfında yer alan ``$configurations`` değişkenini farklı bir yere taşıyabilir. Örneğin Laravel'de env dosyası içerisine yerleştirmek isteyebilirsiniz.Bu değişkenin değerlerini taşıdıktan sonra ``__construct()`` metodunda ``$this->conf`` değişkeninin değerini taşıdığınız konfigürasyonların verilerini çağırarak değiştirebilirsiniz.
Örneğin: (DiaWebService.php)
```php
public function __construct()
{
.
.
$this->conf = \config('DiaWebService');
.
.
}
```