gurmesoft/invoice

E-Fatura oluşturma vendor pakedi

dev-master 2022-04-25 10:35 UTC

This package is not auto-updated.

Last update: 2025-05-17 23:37:27 UTC


README

Gurmesoft için üretilmiş fatura entegrasyon pakedi. Mysoft, Paraşüt mevcuttur.

Adım 1

composer.json dosyası oluşturulur yada var olan dosyadaki uygun objelere ekleme yapılır.

{
  "require": {
    "gurmesoft/invoice": "dev-master"
  },
  "repositories": [
    {
      "type": "github",
      "url": "https://github.com/gurmesoft/gurmesoft-invoice"
    }
  ]
}

Adım 2

composer kullanılarak paket çağırılır

composer require gurmesoft/invoice:dev-master

Adım 3

Client

vendor/autoload.php dosyası dahil edilir ve firma türetilerek hazır hale getirilir.

<?php

require 'vendor/autoload.php';

$options = array(
    'live'      => false,                       // Test ortamı için gereklidir.
    'apiUser'   => 'XXXXXXXX',                  // Aracı firma tarafından verilen anahtar,kullanıcı vb.
    'apiPass'   => 'XXXXXXXX',                  // Aracı firma tarafından verilen şifre,gizli anahtar vb.
);

$mysoft = new \GurmesoftInvoice\Client('Mysoft', $options);

Adım 4

4.1 Fatura oluşturma

$document = new GurmesoftInvoice\Base\Invoice;

/**
 * Fatura eşsiz numara bilgisi
 * Max int32
 */
$document->setId(rand(1111111, 999999))

/**
 * Belge Tipi alanıdır.
 *
 * EARSIVFATURA
 * EFATURA
 * ESMM
 * EMM
 *
 * Atama yapılmaz ise EFATURA
 */
->setDocumentType('EARSIVFATURA')

/**
 * Fatura senaryo bilgisidir.
 * Mükellef GİB e-fatura mükellefi listesinde yer alıyor ise EARSIVFATURA gönderilmelidir.
 * Mükellef sorgusu dökümanda yer almaktadır. (Adım 4.2)
 *
 * TICARIFATURA
 * EARSIVFATURA
 * TEMELFATURA
 * YOLCUBERABERFATURA
 * IHRACAT
 * KAMU
 * HKS
 * EARSIVBELGE
 * OZELFATURA
 *
 * Atama yapılmaz ise TICARIFATURA
 */
->setScenario('EARSIVFATURA')

/**
 * Fatura tipi bilgisidir.
 * Fatura tipi İADE ise, senaryo değeri TEMELFATURA olmalıdır.
 *
 * SATIS
 * IADE
 * TEVKIFAT
 * ISTISNA
 * OZELMATRAH
 * IHRACKAYITLI
 * SGK
 * KOMISYONCU
 * HKSSATIS
 * HKSKOMISYONCU
 *
 * Atama yapılmaz ise SATIS
 */
->setType('SATIS')

/**
 * Ön ek bilgisidir.
 *
* Atama yapılmaz ise sistemdeki varsayılan ek baz alınır.
 */
->setPrefix('FTR')

/**
 * Fatura tarihi bilgisidir.
 *
 * Y/m/d H:i:s Formatinda gönderilmelidir.
 *
 * Atama yapılmaz ise anlık saat baz alınır.
 */
->setDate('28/04/2022 14:33:58')

/**
 * Vade tarihi bilgisidir.
 *
 * Y/m/d H:i:s Formatinda gönderilmelidir.
 */
->setDueDate('28/04/2022 14:33:58')

/**
 * Döviz tipi bilgisidir.
 *
 * TRY
 * USD
 * EUR
 * GBP
 *
 * Atama yapılmaz ise TRY
 */
->setCurrency('TRY')

/**
 * Döviz kuru bilgisidir.
 * TRY için atama yapılmayabilir
 */
->setCurrencyRate('1')

/**
 * İade fatura no bilgisidir.
 * Fatura tipi IADE olması durumunda zorunludur.
 */
->setReferenceNo('XXXXXXXX')

/**
 * Faturaya ait mükellef bilgileri.
 * Ayrıntılar için dökümanın devamını inceleyiniz.
 */
->setTaxpayer($taxpayer)

/**
 * Fatura satırları
 * Ayrıntılar için dökümanın devamını inceleyiniz.
 */
->addLine($line);

$response = $mysoft->sendInvoice($document);

/**
 * Apiden dönen tüm cevap
*/
$response->getResponse();

if ($response->isSuccess()) {
    /**
     * Benzersiz fatura referans no
    */
    $response->getReference();
    /**
     * MX, KLF, FTR vb. ile başlayan döküman no
    */
    $response->getDocumentNo();
} else {
    /**
     * Hata kodu ve mesajı
    */
    $response->getErrorCode();
    $response->getErrorMessage();
}

4.2 Mükellef sorgulama

/**
 * $taxNumber Mükellefin vergi kimlik numarası
 */
$response = $mysoft->checkTaxpayerStatus($taxNumber);

/**
 * Bool true yada false dönecektir
 */
$response->isEFatura()

4.3 Fatura için mükellef oluşturma

$taxpayer = new GurmesoftInvoice\Base\Taxpayer;

/**
 * Alıcı Vergi Kimlik No yada Tc Kimlik bilgisi.
 */
$taxpayer->setTaxNumber('XXXXXXXXXX')

/**
 * Alıcı Vergi dairesi bilgisi.
 */
->setTaxOffice('Nilüfer')

/**
 * Şahıs için
 */
->setFirstName('Fikret')
->setLastName('Çin')

/**
 * Firma için
 */
->setCompany('Gurmesoft')

/**
 * Adres bilgileri
 */
->setAddress('Üçevler Mh. Ertuğrul Cd.')
->setDistrict('Nilüfer')
->setCity('Bursa')
->setCountry('Türkiye')

/**
 * İletişim bilgileri
 */
->setPhone('5555555555')
->setEmail('mail@gurmesoft.com');

4.4 Fatura için satır oluşturma

/**
 * Sınıf tekrar türetilerek birden fazla satır ekleyebilirsiniz.
 */
$line = new GurmesoftInvoice\Base\Line;

/**
 * Ürün stok kodu
 */
$line->setStockCode('TRLK203845')

/**
 * Ürün adı
 */
->setName('Terlik')

/**
 * Ürün adedi
 */
->setQuantity(1)

/**
 * Ürün birim fiyatı
 */
->setUnitPrice(100)

/**
 * Ürün vergi oranı
 */
->setVatRate(18);

Adım 5

Fatura durum sorgulama ve iptali

/**
 * $referenceNo Fatura oluşturulduğunda benzersiz numara
*/

$response = $mysoft->checkInvoiceStatus($referenceNo);
$response->getStatus();

/**
 * İptal Nedeni ($message)
 *
 * Atama yapılmaz ise İptal Edildi
 *
 * İptal Tipi ($type)
 *
 * GIB
 * NOTER
 * KEP
 * TAAHHUTLUMEKTUP
 * PORTAL
 *
 * Atama yapılmaz ise GIB
*/
$response = $mysoft->cancelInvoice($referenceNo, $message, $type);

Extra

/**
 * Sistem üzerindeki tüm müekkeleflerinizi döndürür.
 *
 * $start başlangıç numarası varsayılan 0
 * $limit limit adedi varsayılan 100
*/

$response = $mysoft->getTaxpayerList($start, $limit);
$response->getList();

/**
 * Sistem üzerindeki giden faturala listesi döndürür.
 *
 * $startDate liste başlangıç tarihi  '01-01-2022'
 * $endDate   liste bitiş tarihi      '26-04-2022'
*/

$response = $mysoft->getInvoiceList($startDate, $endDate);
$response->getList();

/**
 * Faturanın PDF ini indirmenizi sağlar.
 * Bu özelliği kullanabilmek için Php allow_url_fopen = 1 olmalıdır.
 *
*/

$mysoft->getInvoicePdf($referenceNo);