e-fatura
v1.1.0
Published
e-Arşiv üzerinden fatura oluşturur, faturaları listeler, fatura(ları) imzalar ve daha fazlasını yapar.
Downloads
42
Maintainers
Readme
🧾 e-Fatura
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
yarn add e-fatura
veya
npm i e-fatura
Paket Yapısı
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
XsltRenderer, // Faturayı XSLT şablonu ile işler
EInvoiceCountry, // Ülkeler
EInvoiceApi, // e-Arşiv API servisi
EInvoiceTypeError, // Tür hata sınıfı
EInvoiceApiError, // API hata sınıfı
InvoiceType, // Fatura türü
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.
- Faturaları listeleme.
- Adınıza düzenlenen faturaları listeleme.
- Temel fatura bilgileri alma.
- Detaylı fatura bilgilerini alma.
- Fatura güncelleme.
- Faturanın HTML çıktısını alma.
- Faturanın PDF çıktısını alma.
- Faturanın ZIP çıktısını alma.
- Faturanın XML çıktısını alma.
- Faturanın indirme bağlantısını alma.
- XSLT şablonu ile fatura işleme. (Deneysel)
- Fatura silme.
- Fatura iptal etme.
- Kullanıcı (şirket) bilgilerini çekme.
- Kullanıcı (şirket) bilgilerini güncelleme.
- SMS ile Fatura doğrulama ve onaylama.
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;
Kullanım 1
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()
Kullanım 2
import EInvoice from 'e-fatura'
// Test modunu aktif/deaktif eder.
EInvoice.setTestMode(true) // varsayılan olarak false
// Anonim kullanıcı bilgileri atar.
await EInvoice.setAnonymousCredentials()
// e-Arşive bağlanır.
await EInvoice.connect() // veya EInvoice.getAccessToken()
// ... 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;
Kullanım 1
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()
Kullanım 2
import EInvoice from 'e-fatura'
// Muhasebecinizden aldığınız giriş bilgileri.
EInvoice.setCredentials({
username: 'kullanıcı kodu|adı',
password: 'şifre'
})
// e-Arşive bağlanır.
await EInvoice.connect() // veya EInvoice.getAccessToken()
// ... 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ı.
import axios from 'axios'
import EInvoice, {
EInvoiceApiError,
EInvoiceTypeError,
EInvoiceApiErrorCode
} from 'e-fatura'
try {
await EInvoice.createDraftInvoice({})
// veya EInvoice.*()
} catch (e) {
if (e instanceof EInvoiceTypeError) {
console.error('Tür hatası meydana geldi:', e)
} else if (e instanceof EInvoiceApiError) {
const response = e.getResponse()
switch (e.errorCode) {
case EInvoiceApiErrorCode.UNKNOWN_ERROR:
console.error('Bilinmeyen bir hata oluştu:', response)
break
case EInvoiceApiErrorCode.INVALID_RESPONSE:
console.error('Geçersiz API cevabı:', response)
break
case EInvoiceApiErrorCode.INVALID_ACCESS_TOKEN:
console.error('Geçersiz erişim jetonu:', response)
break
case EInvoiceApiErrorCode.BASIC_INVOICE_NOT_CREATED:
console.error('Basit fatura oluşturulamadı:', response)
// ...
}
} else if (axios.isAxiosError(e)) {
console.error('Axios hatası meydana geldi:', e)
} else {
console.error('Bilinmeyen bir hata meydana geldi:', e)
}
}
Not: Diğer API hata kodları için EInvoiceApiErrorCode.ts dosyasına bakabilirsiniz.
Ayrıca
Bu proje Furkan Kadıoğlu'nun efatura projesinden yola çıkılarak Node.js'e uyarlanmıştır.