e-fatura
Version:
e-Arşiv üzerinden fatura oluşturur, faturaları listeler, faturaları imzalar ve daha fazlasını yapar.
162 lines (128 loc) • 5.74 kB
Markdown
# 🧾 e-Fatura
[](https://github.com/bilaleren/e-fatura/blob/master/LICENCE)
[](https://www.npmjs.com/package/e-fatura)
[](https://standardjs.com)
[](#kurulum)
Bu paket, Node.js aracılığıyla e-Arşiv üzerinden fatura oluşturma, düzenleme, imzalama gibi işlemleri yapabilmenize olanak sağlar.
🚨 Bu paket **vergiye tabî olan belge** oluşturur. Hiç bir sorumluluk kabul edilmez ve ne yaptığınızdan emin olana kadar **EInvoice.setTestMode(true)** kullanarak test modu açık şekilde test verileriyle işlem yapmanız önerilir.
## Kurulum
```shell
yarn add e-fatura
```
veya
```shell
npm i e-fatura
```
## Paket Yapısı
```typescript
import EInvoice, {
getDateFormat, // Tarih formatını alır (Gün/Ay/Yıl veya Saat:Dakika:Saniye)
paymentPriceToText, // Ödenecek tutarı metine dönüştürür
isEInvoiceApiResponseError, // e-Arşiv HTTP yanıtının hata içerip içermediğini kontrol eder
XsltRenderer, // Faturayı XSLT şablonu ile işler
EInvoiceApi, // Soyut hata sınıfı
EInvoiceError, // Tür hata sınıfı
EInvoiceTypeError, // Tür hata sınıfı
EInvoiceApiError, // API hata sınıfı
EInvoiceMissingTokenError, // Eksik veya hatalı erişim jetonu hata sınıfı
EInvoiceMissingCredentialsError, // Eksik veya hatalı giriş bilgileri hata sınıfı
InvoiceType, // Fatura türü
EInvoiceCountry, // Ülkeler
EInvoiceApiErrorCode, // API hata kodları
InvoiceApprovalStatus, // Fatura onay durumu
EInvoiceCurrencyType, // Param birimi
EInvoiceUnitType // Birim türü
// ... Typescript türleri
} from 'e-fatura'
```
## Özellikler
- [Fatura oluşturma.](docs/CREATE_DRAFT_INVOICE.md)
- [Faturaları listeleme.](docs/GET_BASIC_INVOICES.md)
- [Faturaları imzalama.](docs/SIGN_INVOICES.md)
- [Adınıza düzenlenen faturaları listeleme.](docs/GET_BASIC_INVOICES_ISSUED_TO_ME.md)
- [Temel fatura bilgileri alma.](docs/FIND_BASIC_INVOICE.md)
- [Detaylı fatura bilgilerini alma.](docs/GET_INVOICE.md)
- [Fatura güncelleme.](docs/UPDATE_DRAFT_INVOICE.md)
- [Faturanın HTML çıktısını alma.](docs/GET_INVOICE_HTML.md)
- [Faturanın PDF çıktısını alma.](docs/GET_INVOICE_PDF.md)
- [Faturanın ZIP çıktısını alma.](docs/GET_INVOICE_ZIP.md)
- [Faturanın XML çıktısını alma.](docs/GET_INVOICE_XML.md)
- [Faturanın indirme bağlantısını alma.](docs/GET_INVOICE_DOWNLOAD_URL.md)
- [Fatura silme.](docs/DELETE_DRAFT_INVOICE.md)
- [Fatura iptal etme.](docs/CREATE_CANCEL_REQUEST_FOR_INVOICE.md)
- [Kullanıcı (şirket) bilgilerini getirme.](docs/GET_USER_INFORMATION.md)
- [Kullanıcı (şirket) bilgilerini güncelleme.](docs/UPDATE_USER_INFORMATION.md)
- [XSLT şablonu ile fatura işleme. (Deneysel)](docs/INVOICE_XSLT_RENDERER.md)
- [Komut satırı arayüzü (CLI) uygulaması. (Yeni)](https://github.com/bilaleren/e-fatura/blob/master/packages/e-fatura-cli/README.md)
## Kullanım
**Kendi verileriniz ile test etmek için:**
https://earsivportal.efatura.gov.tr/intragiris.html
**Test hesaplarıyla test etmek için:**
https://earsivportaltest.efatura.gov.tr/login.jsp
### Test ortamı için kullanım;
```typescript
import EInvoice from 'e-fatura'
await EInvoice.connect({
anonymous: true
})
// ... Diğer işlemler. Fatura oluşturma, listeleme, düzenleme vb.
// e-Arşiv oturumunu sonlandırır.
await EInvoice.logout()
```
### Ürün ortamı için kullanım;
```typescript
import EInvoice from 'e-fatura'
// Muhasebecinizden aldığınız giriş bilgileri.
await EInvoice.connect({
username: 'kullanıcı kodu|adı',
password: 'şifre'
})
// ... Diğer işlemler. Fatura oluşturma, listeleme, düzenleme vb.
// e-Arşiv oturumunu sonlandırır.
await EInvoice.logout()
```
## Hata Ayıklama
API ve tür hatalarının ayıklanması.
```typescript
import axios from 'axios'
import EInvoice, {
EInvoiceApiError,
EInvoiceTypeError,
EInvoiceApiErrorCode,
EInvoiceMissingTokenError,
EInvoiceMissingCredentialsError
} from 'e-fatura'
try {
// EInvoice.*()
} catch (e) {
if (e instanceof EInvoiceTypeError) {
console.error('Tür hatası meydana geldi:', e)
} else if (e instanceof EInvoiceMissingTokenError) {
console.error('Erişim jetonu sağlanmadı.')
} else if (e instanceof EInvoiceMissingCredentialsError) {
console.error('Giriş bilgileri sağlanmadı veya eksik sağlandı:', e.credentials)
} else if (e instanceof EInvoiceApiError) {
switch (e.errorCode) {
case EInvoiceApiErrorCode.UNKNOWN_ERROR:
console.error('Bilinmeyen bir hata oluştu:', e.response)
break
case EInvoiceApiErrorCode.INVALID_RESPONSE:
console.error('Geçersiz API cevabı:', e.response)
break
case EInvoiceApiErrorCode.INVALID_ACCESS_TOKEN:
console.error('Geçersiz erişim jetonu:', e.response)
break
case EInvoiceApiErrorCode.BASIC_INVOICE_NOT_CREATED:
console.error('Basit fatura oluşturulamadı:', e.response)
// ...
}
} else if (axios.isAxiosError(e)) {
console.error('Axios hatası meydana geldi:', e)
} else {
console.error('Bilinmeyen bir hata meydana geldi:', e)
}
}
```
> Diğer API hata kodları için [EInvoiceApiErrorCode.ts](https://github.com/bilaleren/e-fatura/blob/master/packages/e-fatura/src/enums/EInvoiceApiErrorCode.ts) dosyasına bakabilirsiniz.
#### Ayrıca
Bu proje Furkan Kadıoğlu'nun [efatura](https://github.com/furkankadioglu/efatura) projesinden yola çıkılarak Node.js'e uyarlanmıştır.