{"id":13609500,"url":"https://github.com/furkankadioglu/efatura","last_synced_at":"2025-05-14T20:04:21.328Z","repository":{"id":36993663,"uuid":"239196008","full_name":"furkankadioglu/efatura","owner":"furkankadioglu","description":"eArşiv üzerinden Fatura Oluşturucu","archived":false,"fork":false,"pushed_at":"2025-02-01T20:28:26.000Z","size":203,"stargazers_count":397,"open_issues_count":71,"forks_count":122,"subscribers_count":26,"default_branch":"master","last_synced_at":"2025-04-13T14:04:41.346Z","etag":null,"topics":["e-fatura","earsiv","edevlet","efatura","laravel","php"],"latest_commit_sha":null,"homepage":"https://furkankadioglu.github.io/efatura/","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/furkankadioglu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-02-08T19:56:56.000Z","updated_at":"2025-04-12T22:53:47.000Z","dependencies_parsed_at":"2023-01-17T12:01:20.875Z","dependency_job_id":"9028cbbd-d0f4-479b-a8c9-c679edfc3708","html_url":"https://github.com/furkankadioglu/efatura","commit_stats":{"total_commits":147,"total_committers":12,"mean_commits":12.25,"dds":0.2517006802721088,"last_synced_commit":"484a1ce6aec2965e58c860d165404b39dba45464"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkankadioglu%2Fefatura","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkankadioglu%2Fefatura/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkankadioglu%2Fefatura/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/furkankadioglu%2Fefatura/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/furkankadioglu","download_url":"https://codeload.github.com/furkankadioglu/efatura/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248724639,"owners_count":21151561,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["e-fatura","earsiv","edevlet","efatura","laravel","php"],"created_at":"2024-08-01T19:01:35.406Z","updated_at":"2025-04-13T14:05:05.533Z","avatar_url":"https://github.com/furkankadioglu.png","language":"PHP","funding_links":[],"categories":["PHP"],"sub_categories":[],"readme":"# 🧾 eFatura\n\nBu kütüphane, PHP aracılığıyla eArşiv üzerinden fatura oluşturma, düzenleme, imzalama gibi işlemleri yapabilmenize olanak sağlar. Tamamen ücretsizdir.\n\n[![Latest Version on Packagist](https://img.shields.io/packagist/v/furkankadioglu/efatura.svg?style=flat-square)](https://img.shields.io/packagist/v/furkankadioglu/efatura.svg?style=flat-square)\n![](https://github.com/furkankadioglu/efatura/workflows/Check%20Tests/badge.svg?branch=master)\n[![Total Downloads](https://img.shields.io/packagist/dt/furkankadioglu/efatura.svg?style=flat-square)](https://packagist.org/packages/furkankadioglu/efatura)\n[![License](https://poser.pugx.org/furkankadioglu/efatura/license.svg)](https://packagist.org/packages/furkankadioglu/efatura)\n[![Open issues](https://img.shields.io/github/issues-raw/furkankadioglu/efatura.svg)](https://github.com/furkankadioglu/efatura/issues)\n[![Open PR](https://img.shields.io/github/issues-pr-raw/furkankadioglu/efatura.svg)](https://github.com/furkankadioglu/efatura/pulls)\n[![GitHub stars](https://img.shields.io/github/stars/furkankadioglu/efatura.svg)](https://github.com/furkankadioglu/efatura/stargazers)\n[![GitHub forks](https://img.shields.io/github/forks/furkankadioglu/efatura.svg)](https://github.com/furkankadioglu/efatura/network/members)\n\n### 🚩Kurulum\n\n**Kendi verileriniz ile test etmek için:**\n\nhttps://earsivportal.efatura.gov.tr/intragiris.html\n\n**Test hesaplarıyla test etmek için:**\n\nhttps://earsivportaltest.efatura.gov.tr/login.jsp\n\n**Paket Kurulumu:**\n\n    composer require furkankadioglu/efatura\n    \n### 📲 Destek ve Sorular \n\nEğer bir sorun yaşıyorsanız veya proje hakkında bir sorunuz varsa lütfen [buradan](https://github.com/furkankadioglu/efatura/issues/new \"buradan\") bir kayıt oluşturun, yaşadığınız sorunu hep birlikte çözelim. \n\nProje tamamen açık kaynak olduğundan dolayı, projeninin devamlılığı/düzenlemeleri ve hata çözümleri de yine topluluk tarafından yapılmaktadır. Projeyi başlatan kişinin ücretli veya ücretsiz bir destek çözümü bulunmamaktadır, bu sebeple lütfen sosyal medyadan temasa geçmeyin. Anlayışınız ve saygınız için teşekkür ederiz.\n\n\n### 🚩Özellikler\n\n- eArşiv oturumunu açma ve sonlandırma.\n- Fatura oluşturma.\n- İki tarih arası fatura sorgulama.\n- Menü listesini görüntüleme.\n- Fatura detaylarını görüntüleme.\n- Türkçe veya İngilizce seçenekleriyle fatura modeli oluşturma.\n- Faturayı HTML olarak çıktı alma.\n- Faturanın indirme adresini alma.\n- Faturayı iptal etme.\n- Varolan bir faturayı sorgulama.\n- Kullanıcı bilgilerini çekme. (Şirketinizin temel bilgileri)\n- Kullanıcı bilgilerini güncelleme.\n- SMS ile Fatura doğrulama ve onaylama.\n- Faturayı PDF olarak çıktı alma.\n\n### 🚩Örnekler\n\n**Giriş**\n\nBir client oluşturarak genel yapıyı projemize dahil ediyoruz.\n```php\nuse furkankadioglu\\eFatura\\InvoiceManager;\n$client = new InvoiceManager();\n```\nGiriş bilgilerinizi chain fonksiyonlarla tanımlayabiliyorsunuz, bu production için geçerlidir.\n```php\n// Production environment\n$client-\u003esetUsername(\"XXX\")-\u003esetPassword(\"YYY\");\n// VEYA\n$client-\u003esetCredentials(\"XXX\", \"YYY\");\n```\n\nAlttaki kullanım ile **test modu**nda çalıştırabilir, firmanızın bilgileri olmadan otomatik test girişi yapabilirsiniz. Bu aşamadan sonraki tüm işlemleriniz test hesabıyla gerçekleşir.\n```php\n// Test Environment\n$client-\u003esetDebugMode(true)-\u003esetTestCredentials();\n```\nAyrıca bilgilerinizi görüntülemek isterseniz:\n```php\n$client-\u003egetCredentials();\n```\n\nBilgilerimizi tanımladıktan sonra giriş yapıp token almak içinse:\n(Bu işlem olmadan diğer adımlara geçilemez)\n```php\n$client-\u003econnect();\n```\n\n**Faturalandırma**\n\nFaturaların listelenmesi aşağıdaki şekilde yapılıyor:\n```php\n// Tüm faturaları listele\n$client-\u003egetInvoicesFromAPI(\"01/01/2020\", \"08/02/2020\");\n```\nYeni bir fatura oluşturmak isterseniz, bir kaç seçeneğiniz mevcut, kullanım alışkanlığı olarak ingilizceye alışmışlar için iki farklı yöntem var, ilk aşamada Türkçe'den gidelim.\n\nÖrnek olarak şu şekilde bir fatura oluşturabiliriz:\n```php\n$fatura_detaylari  = [\n\"belgeNumarasi\"  =\u003e  \"\", // Zorunlu değil\n\"faturaTarihi\"  =\u003e  \"08/02/2020\",\n\"saat\"  =\u003e  \"09:07:48\",\n\"paraBirimi\"  =\u003e  \"TRY\",\n\"dovzTLkur\"  =\u003e  \"0\",\n\"faturaTipi\"  =\u003e  \"SATIS\",\n\"hangiTip\"  =\u003e  \"5000/30000\",\n\"vknTckn\"  =\u003e  \"11111111111\",\n\"aliciUnvan\"  =\u003e  \"FURKAN KADIOGLU\",\n\"aliciAdi\"  =\u003e  \"FURKAN\",\n\"aliciSoyadi\"  =\u003e  \"KADIOGLU\",\n\"binaAdi\"  =\u003e  \"\", // Zorunlu değil\n\"binaNo\"  =\u003e  \"\", // Zorunlu değil\n\"kapiNo\"  =\u003e  \"\", // Zorunlu değil\n\"kasabaKoy\"  =\u003e  \"\", // Zorunlu değil\n\"vergiDairesi\"  =\u003e  \"MALTEPE\",\n\"ulke\"  =\u003e  \"Türkiye\",\n\"bulvarcaddesokak\"  =\u003e  \"DENEME SK. DENEME MAH.\",\n\"mahalleSemtIlce\"  =\u003e  \"\", // Zorunlu değil\n\"sehir\"  =\u003e  \" \",\n\"postaKodu\"  =\u003e  \"\", // Zorunlu değil\n\"tel\"  =\u003e  \"\", // Zorunlu değil\n\"fax\"  =\u003e  \"\", // Zorunlu değil\n\"eposta\"  =\u003e  \"\", // Zorunlu değil\n\"websitesi\"  =\u003e  \"\", // Zorunlu değil\n\"iadeTable\"  =\u003e [], // Zorunlu değil\n\"ozelMatrahTutari\"  =\u003e  \"0\", // Zorunlu değil\n\"ozelMatrahOrani\"  =\u003e  0, // Zorunlu değil\n\"ozelMatrahVergiTutari\"  =\u003e  \"0\", // Zorunlu değil\n\"vergiCesidi\"  =\u003e  \" \", // Zorunlu değil\n\"malHizmetTable\"  =\u003e [],\n\"tip\"  =\u003e  \"İskonto\",\n\"matrah\"  =\u003e  100,\n\"malhizmetToplamTutari\"  =\u003e  100,\n\"toplamIskonto\"  =\u003e  \"0\",\n\"hesaplanankdv\"  =\u003e  18,\n\"vergilerToplami\"  =\u003e  18,\n\"vergilerDahilToplamTutar\"  =\u003e  118,\n\"odenecekTutar\"  =\u003e  118,\n\"not\"  =\u003e  \"xxx\", // Zorunlu değil\n\"siparisNumarasi\"  =\u003e  \"\", // Zorunlu değil\n\"siparisTarihi\"  =\u003e  \"\", // Zorunlu değil\n\"irsaliyeNumarasi\"  =\u003e  \"\", // Zorunlu değil\n\"irsaliyeTarihi\"  =\u003e  \"\", // Zorunlu değil\n\"fisNo\"  =\u003e  \"\", // Zorunlu değil\n\"fisTarihi\"  =\u003e  \"\", // Zorunlu değil\n\"fisSaati\"  =\u003e  \" \", // Zorunlu değil\n\"fisTipi\"  =\u003e  \" \", // Zorunlu değil\n\"zRaporNo\"  =\u003e  \"\", // Zorunlu değil\n\"okcSeriNo\"  =\u003e  \"\" // Zorunlu değil\n];\n```\nFaturayı oluşturmak yetmez tabi, ürün veya hizmet de girmek lazım, oda şu şekilde oluyor.\n```php\n$fatura_detaylari[\"malHizmetTable\"][] = [\n\"malHizmet\"  =\u003e  \"Yazılım Geliştirme\",\n\"miktar\"  =\u003e  28,\n\"birim\"  =\u003e  \"DAY\",\n\"birimFiyat\"  =\u003e  \"3\",\n\"fiyat\"  =\u003e  \"84\",\n\"iskontoOrani\"  =\u003e  0,\n\"iskontoTutari\"  =\u003e  \"0\",\n\"iskontoNedeni\"  =\u003e  \"\",\n\"malHizmetTutari\"  =\u003e  \"99\",\n\"kdvOrani\"  =\u003e  18,\n\"vergiOrani\" =\u003e 0,\n\"kdvTutari\"  =\u003e  \"15.12\",\n\"vergininKdvTutari\"  =\u003e  \"0\",\n\"ozelMatrahTutari\" =\u003e \"0\", //zorunlu\n];\n```\nDeğişkenler Türkçe olduğundan dolayı **mapWithTurkishKeys** fonksiyonunu kullanıyoruz.\n```php\nuse furkankadioglu\\eFatura\\Models\\Invoice;\n$inv  =  new Invoice();\n$inv-\u003emapWithTurkishKeys($fatura_detaylari); // Key yapısı türkçe 🇹🇷\n// VEYA\n$inv-\u003emapWithEnglishKeys($invoice_details); // Key yapısı ingilizce 🇺🇸\n```\n\nSonrasında bunu InvoiceManager'a kayıt etmemiz gerekiyor. Oda bu şekilde:\n```php\n$client-\u003esetInvoice($inv);\n```\nSonrasında da taslak oluşturuyoruz:\n```php\n$client-\u003ecreateDraftBasicInvoice();\n```\nAdımıza Düzenlenen Faturaları Sorgulamak için\n```php\n$client-\u003egetInvoicesMeFromAPI(\"01/01/2021\", \"31/12/2022\");\n```\n\n\n\n**Kullanıcı Bilgileri**\n\nBu kısım firmanızın eArşiv'de kayıtlı olan bilgileridir. Bu bilgileri alabilir ve güncelleyebilirsiniz.\n\n👉Aynı zamanda bu bilgileri almak, fatura oluştururken ihtiyaç duyacağınız bir çok veri ihtiyacınızı da karşılar.\n\n```php\n$userInformations = $client-\u003egetUserInformationsData();\n```\nBu işlem size bir adet UserInformations sınıfı döndürür. Bu sınıftaki verilerinizin tamamını set ve get metodlarıyla değiştirebilirsiniz:\n\n```php\n// Sadece vknTckn değiştirilemez.\n$userInformations = $userInformations-\u003esetUnvan(\"FRKN Yazılım\")-\u003esetApartmanNo(\"4\");\n$apartmanNo = $userInformations-\u003egetApartmanNo(); // 4\n```\n\nAyrıca bu sınıfın verilerini toplu olarak almak isterseniz aşağıdaki kullanımı uygulayabilirsiniz, aynı fonksiyon Invoice sınıfı içinde geçerli:\n\n```php\n$userInformations-\u003eexport(); // Array olarak tüm değişkenleri döndürür.\n```\n\n\nAynı zamanda bu sınıfı kendiniz oluşturabilir ve array olarak veriyi sağlayabilirsiniz. Sonrasında da şu şekilde sunucuya göndeririz:\n\n```php\n$client-\u003esetUserInformations($userInformations); // Manager'a tanımla.\n$client-\u003esendUserInformationsData(); // Sunucuya gönder.\n```\n\n### 🚩Fonksiyonel Özellikler\n(İndirme/Onaylama/HTML Çıktısını Alma/İptal vb.)\n\n**HTML çıktısını almak için:**\n```php\n$client-\u003egetInvoiceHTML();\n```\n\n**PDF çıktısını almak için:**\n```php\n$client-\u003egetInvoicePDF();\n```\n\n**İndirme linkini almak için:**\n```php\n$client-\u003egetDownloadURL();\n```\n\n**Faturayı iptal etmek için:**\n```php\n$client-\u003ecancelInvoice();\n```\n\n**SMS doğrulaması yapmak için:**\n```php\n$client-\u003esendSMSVerification($telefon); // Operasyon id döndürür.\n```\n\n**SMS doğrulamasını onaylamak ve onaylanacak faturaları göndermek için:**\n```php\n$client-\u003everifySMSCode($kod, $operasyonId);\n```\n\n**Kişi veya kurumun bilgilerini çekmek için:**\n```php\n$client-\u003egetCompanyInfo($TCKimlikNoVeyaVergiNo);\n```\n\n**Çıkış yapıp, oturumu kapatmak için:**\n```php\n$client-\u003elogOutFromAPI();\n```\n\n**Varolan bir faturayı sorgulamak için:**\n```php\n$oldInvoice = new Invoice();\n$oldInvoice-\u003esetUuid(\"e8277cfa-4ac9-11ea-a5b5-acde48001122\");\n$client-\u003esetInvoice($oldInvoice)-\u003egetInvoiceFromAPI();\n// {\"faturaUuid\":\"8a4423bc-4aca-11ea-8c30-acde48001122\",\"faturaTarihi\":\"09\\/02\\/2020\"...\n```\n\n### 🚩Alternatif Kullanımlar\n\n**Kısaltılmış Kullanımlar:**\n\nUzun gelmiş olabilir. 😂 Gayet doğal, chain methodlar ile hayatımızı kolaylaştırıyoruz. Tek satırda işimizi halledelim:\n```php\n$client-\u003esetDebugMode(true) // Test urlsine geçtik \n-\u003esetTestCredentials() // Test bilgilerini aldık\n-\u003econnect() // Bilgilerle birlikte sunucuya bağlanıp token aldık.\n-\u003esetInvoice($inv) // Faturamızı sınıfa tanımladık (Invoice sınıfı kullanılmalı)\n-\u003ecreateDraftBasicInvoice() // Taslak faturamızı oluşturduk\n-\u003egetDownloadURL(); // İndirme adresini aldık\n\n// https://earsivportaltest.efatura.gov.tr/earsiv-services/download?token=b8b6c261c511a9b2757279c0111b538a2f02d98ae2df6205448d002687cab8cf74ce04d187bf0c6ce839dee40a6a8aad003aa6d5946ba02a0942ceb10bde327f\u0026ettn=85933f42-4ab1-11ea-922e-acde48001122\u0026belgeTip=FATURA\u0026onayDurumu=Onaylandı\u0026cmd=downloadResource\n```\n\n**Sabit Değişkenler:**\n\nBir çok farklı veri tipi olduğundan ve önceden bilinmediğinde sorunlar çıkabileceğini düşünerek, bazı ihtiyaç duyulan sabit seçenekler de mevcut. Tüm değişken isimleri eArşiv de görünenlerle birebir yapıldı. Örnekten bazılarını görebilirsiniz:\n\n```php\nuse furkankadioglu\\eFatura\\Models\\Country;\nuse furkankadioglu\\eFatura\\Models\\CurrencyType;\nuse furkankadioglu\\eFatura\\Models\\InvoiceType;\nuse furkankadioglu\\eFatura\\Models\\UnitType;\n\n$gunBirim = UnitType::GUN; // DAY\n$turkLirasi = CurrencyType::TURK_LIRASI; // TRY\n$satisFaturasi = InvoiceType::SATIS; // SATIŞ\n$gurcistanUlkesi = Country::GURCISTAN; // Gürcistan\n```\n\n**Anahtar Yapısını Değiştirme:**\n\n```php\nuse furkankadioglu\\eFatura\\Models\\Invoice;\n$inv  =  new Invoice();\n\n$invoice_details = [\n    \"uuid\" =\u003e $uuid,\n    \"documentNumber\" =\u003e $documentNumber,\n    \"date\" =\u003e $date,\n    \"time\" =\u003e $time,\n    \"currency\" =\u003e $currency,\n    \"currencyRate\" =\u003e $currencyRate,\n    \"invoiceType\" =\u003e $invoiceType,\n    \"taxOrIdentityNumber\" =\u003e $taxOrIdentityNumber,\n    \"invoiceAcceptorTitle\" =\u003e $invoiceAcceptorTitle,\n    \"invoiceAcceptorName\" =\u003e $invoiceAcceptorName,\n    \"invoiceAcceptorLastName\" =\u003e $invoiceAcceptorLastName,\n    \"buildingName\" =\u003e $buildingName,\n    \"buildingNumber\" =\u003e $buildingNumber,\n    \"doorNumber\" =\u003e $doorNumber,\n    \"town\" =\u003e $town,\n    \"taxAdministration\" =\u003e $taxAdministration,\n    \"country\" =\u003e $country,\n    \"avenueStreet\" =\u003e $avenueStreet,\n    \"district\" =\u003e $district,\n    \"city\" =\u003e $city,\n    \"postNumber\" =\u003e $postNumber,\n    \"telephoneNumber\" =\u003e $telephoneNumber,\n    \"faxNumber\" =\u003e $faxNumber,\n    \"email\" =\u003e $email,\n    \"website\" =\u003e $website,\n    \"refundTable\" =\u003e $refundTable,\n    \"specialBaseAmount\" =\u003e $specialBaseAmount,\n    \"specialBasePercent\" =\u003e $specialBasePercent,\n    \"specialBaseTaxAmount\" =\u003e $specialBaseTaxAmount,\n    \"taxType\" =\u003e $taxType,\n    \"itemOrServiceList\" =\u003e $itemOrServiceList,\n    \"type\" =\u003e $type,\n    \"base\" =\u003e $base,\n    \"itemOrServiceTotalPrice\" =\u003e $itemOrServiceTotalPrice,\n    \"totalDiscount\" =\u003e $totalDiscount,\n    \"calculatedVAT\" =\u003e $calculatedVAT,\n    \"taxTotalPrice\" =\u003e $taxTotalPrice,\n    \"includedTaxesTotalPrice\" =\u003e $includedTaxesTotalPrice,\n    \"paymentPrice\" =\u003e $paymentPrice,\n    \"note\" =\u003e $note,\n    \"orderNumber\" =\u003e $orderNumber,\n    \"orderData\" =\u003e $orderData,\n    \"waybillNumber\" =\u003e $waybillNumber,\n    \"waybillDate\" =\u003e $waybillDate,\n    \"receiptNumber\" =\u003e $receiptNumber,\n    \"voucherDate\" =\u003e $voucherDate,\n    \"voucherTime\" =\u003e $voucherTime,\n    \"voucherType\" =\u003e $voucherType,\n    \"zReportNumber\" =\u003e $zReportNumber,\n    \"okcSerialNumber\" =\u003e $okcSerialNumber\n];\n\n$inv-\u003emapWithEnglishKeys($invoice_details); // Key yapısı ingilizce\n```\n\nBu şekilde de map edebileceğiniz gibi ayrıyetten getter/setter methodları da mevcut, istediğiniz her veriyi düzenleyebilirsiniz:\n\n```php\n$inv-\u003esetUuid(\"Buraya kendi fatura idniz\") \n-\u003esetCountry(\"Türkiye\")\n-\u003egetCurrencyRate(); // TRY\n```\n\n**Toplu veri alımı ve çıkartımı:**\n\nFatura verisinin değişken değerlerini toplu olarak ekleyebilir veya çıkartabiliriz, şöyle:\n```php\n    $inv = new Invoice($data); // data arrayinden keylere göre tüm verileri alır.\n    $inv-\u003eexport(); // tüm verileri çıkartır.\n```\n\n### 🚩Diğer Konular\n\n**Testleri Çalıştırma:**\n\n```\ncomposer test\n```\n\n**Daha Fazla Örnek:**\n\nDaha fazla örneği [buradan](https://github.com/furkankadioglu/efatura/blob/master/example/index.php \"buradan\")` bulabilirsiniz.\n\n**Uyarı**\n\n🚨 Bu paket vergiye tabi olan belge oluşturur, hiç bir sorumluluk kabul edilmez ve ne yaptığınızdan emin olana kadar debugMode açık şekilde test verileriyle işlem yapmanız önerilir.\n\n**Ayrıca**\n\nBu proje Fatih Kadir Akın'ın  [fatura.js](https://github.com/f/fatura \"fatura\")` projesinden yola çıkılarak PHP diline uyarlanarak yapılmıştır. Arda Kılıçdağı'na da ayrıca teşekkürler.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurkankadioglu%2Fefatura","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffurkankadioglu%2Fefatura","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffurkankadioglu%2Fefatura/lists"}