Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Yazı Tipi BoyutlandırıcıAa
  • Anasayfa
  • Teknoloji
    • Siber Güvenlik
    • Yapay Zeka
    • Donanım
    • Bilim
  • Yazılım
  • Savunma & İstihbarat
  • Oyun
  • Yaşam
    • Finans
    • Sinema
    • Dünyadan Haberler
  • İş Birliği
Okuma: Ticari Kurallarınızı Sabit Kodlamayı Bırakın: Konfigürasyon Tabanlı Boş Koltuklar, Toplu Koltuklar ve Vergi
Paylaş
Yazı Tipi BoyutlandırıcıAa
Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Ara
Bizi Takip Et
  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti
© 2026 Teknomers. All Rights Reserved.

Anasayfa » Ticari Kurallarınızı Sabit Kodlamayı Bırakın: Konfigürasyon Tabanlı Boş Koltuklar, Toplu Koltuklar ve Vergi

Yazılım

Ticari Kurallarınızı Sabit Kodlamayı Bırakın: Konfigürasyon Tabanlı Boş Koltuklar, Toplu Koltuklar ve Vergi

teknomers
Son güncelleme: 27 Haziran 2026 14:56
teknomers
Paylaş
Paylaş

TL;DR

  • Kurumsal kurallar – bir planın kaç ücretsiz koltuk aldığı, toptan koltuk satın alıp almadığınız ve vergilerin nasıl uygulandığı gibi – sürekli değişim gösterir. Bunları kodda sabitlemek, Satış departmanı fikrini değiştirdiğinde her seferinde yeniden dağıtım yapmayı gerektirir.
  • Bu nedenle, bunları bir BillingProvider sözleşmesi ve yapılandırma/ayarlar arkasına taşıdım: sayı veri, davranış ise değiştirilebilir bir sürücü (manuel veya Stripe).
  • Öğüt: Eğer bir değer iş kararıysa, mühendislik kararı değilse, bu yapılandırma veya ayarlar içinde yer almalıdır – bir if ifadesinde değil.

Üç koltuk içeren “ücretsiz katman” masum görünebilir, ta ki biri 5 istemeye kadar. Sonra kod tabanını ararsınız, dört yerde 3‘ü bulur, birini atlar ve faturalandırma hatası ile gönderirsiniz. Bugünkü iş, bu sayının – ve birkaç arkadaşının – bir daha asla kodda yaşamaması için çalışmaktı.

The seam: one contract, two drivers

Faturalama iki modda işler: elle fatura kesme (erken/ağır ağır müşteriler) ve Stripe (kendi kendine hizmet). Arayanların hangisi olduğu umurlarında olmamalı. Her şey bir sözleşme üzerinden geçer:

interface BillingProvider
{
    public function freeSeatDefault(): int;
    public function purchaseSeats(Account $account, int $quantity): SeatPurchase;
    public function appliesTax(): bool;
    // ...
}

ManualBillingProvider ve StripeBillingProvider bunu uygular. “Bu hesabın bir koltuğu var mı?” sorusunu soran yetki kapısı, sözleşmeye hitap eder, asla doğrudan Stripe’a gitmez. Aynı Filesystem diski gibi – arayan “bunu depola” der, sürücü nereye depolayacağına karar verir.

The free-seat default is config, not a constant

// config/billing.php
'seats' => [
    'free_default' => env('BILLING_FREE_SEATS', 1),
    'bulk_enabled' => true,
],

Manuel sağlayıcı yapılandırmayı okur; Stripe sağlayıcı ise abonelik verilerinden plan başına geçersiz kılabilir. Müşteriyle ilgili değişiklikler (ücretsiz koltukları 5’e çıkaran bir promosyon) DB destekli ayarlara taşınır, bu sayede bir yönetici bunu, yeniden dağıtım yapmadan değiştirebilir. Kod tek bir yoldan okur; değerin kaynağı bir uygulama ayrıntısıdır.

Bulk seats: quantity is a first-class input

Koltukları tek tek eklemek sorun değil, ancak bir müşteri 40 kişilik bir onboard yapıyorsa durum farklıdır. Toplu, sadece purchaseSeats($account, 40) demektir, sağlayıcı fiyatlandırmayı ve kaydı nasıl yapacağına karar verir. Kazanç, kapı mantığının değişmemesidir – hala “kullanılan koltuklar” diye sorulur.

Tax belongs to the provider, not the checkout view

Vergi kuralları bölgeden bölgeye değişir ve hiçbir uyarı olmadan değişebilir. Vergi hesaplamasını bir Blade görünümünde veya denetleyicisinde koymak, faturalama kodunu denetlemekte zorlanmanıza yol açar. Bunun yerine vergi, bir sağlayıcının konusudur – Stripe sürücüsü Stripe Tax’a yönlendirir (müşterinin lokasyonunu ve mevcut oranları zaten biliyor), manuel sürücü ise “fatura üzerinde vergi işlenir” döner. Uygulama sadece appliesTax() ifadesini sorar.

checkout ──► BillingProvider (contract)
                     ├─ ManualBillingProvider ─► invoice handles tax
                     └─ StripeBillingProvider ─► Stripe Tax computes it

Test the rule, not the vendor

Bir politika‘yı kanıtlamak için canlı bir Stripe çağrısına ihtiyacınız yok. Sahte bir sağlayıcı bağlayarak davranışı doğrulayın:

it(, function () {
            config([=> 3]);
            $account = Account::factory()->create();
            expect(app(BillingProvider::class)->freeSeatDefault())->toBe(3);
            expect($account->availableSeats())->toBe(3);
        });

Sözleşme hem dikiş noktası hem de test sınırıdır – manuel sağlayıcıyı değiştirin, yetki kapısının koltukları doğru saydığını doğrulayın, tamam. Ağ yok, belirsizlik yok.

Decision rule

Eğer değer…Şuraya koyun…
Asla değişmez, mühendislik içindirbir sabit
Ortama/gönderime göre değişir config() + .env
Bir müşteri veya yönetici canlı olarak değiştirmelidirDB destekli ayarlar
Değiştirilebilir bir davranış isebir sözleşme arkasındaki sürücü

Ücretsiz koltuklar, toplu fiyatlandırma, vergi yönetimi – bunların her biri, kod değerleri şeklinde giydirilmiş bir iş kararıdır. Bunları dışarı taşıyın, “5 yapabilir miyiz?” sorusu bir ayar geçişi olsun, bir sürüm değil.

Kaynak: Orijinal Makale

Contents
  • TL;DR
  • The seam: one contract, two drivers
  • The free-seat default is config, not a constant
  • Bulk seats: quantity is a first-class input
  • Tax belongs to the provider, not the checkout view
  • Test the rule, not the vendor
  • Decision rule
Bir web sitesi geri bildirim widget’ı geliştirdim, işte neden ve nasıl yaptım
Billmora ile Tanışın: WHMCS ve Blesta için modern, açık kaynak bir alternatif
Laravel’de CMS Özelliklerini Yeniden İnşa Etmekten Yorulduğum için FalconCMS’i Geliştirdim
Laravel Fast2SMS v2.0.0 — WhatsApp Desteği, Bildirim Kanalları ve Daha Akıllı Kullanıcı Deneyimi
Veritabanı Dar Boğazlarını Önleyin: Laravel’de Redis Cache Etiketlerini Usta Çalışan Yapın
Bu Makaleyi Paylaş
Facebook Bağlantıyı Kopyala Yazdır
Paylaş
Önceki Makale Duer’in Her Yerde Giyilebilecek Pantolonları Bu Hafta Sonu İndirimde!
Sonraki Makale Payday 2 Güncellemesi ile FPS Deneyimi Yeniden Şekilleniyor

Sanal Medya

FacebookBeğen
452Takip Et
PinterestSabitle
237Takip Et

Son Eklenenler

Temmuz’da Yürürlüğe Girecek Gürültülü Yayın Reklamlarına Yasa Getirildi
Genel
Suno, Bağımsız Sanatçıları AI Makinesine Besleyecek Spark Kuluçka Programını Başlattı
Liste
Monkey Soccer için heyecan verici güncellemeler geliyor!
Oyun
Ford Çalışanlarını Yeniden İstihdam Ediyor: AI Beklentileri Karşılamadı
Genel
PlayStation, İngiltere’deki 500’den fazla filmi siliyor
Donanım
Dünyanın En Hızlı Süper Bilgisayarı Çin’den Geldi
Liste
//

Siber güvenlik, yapay zeka ve savunma sanayiinden; finans ve sinema dünyasına uzanan geniş bir yelpaze. Teknomers; teknoloji, strateji ve yazılım dünyasını sade bir dille sizlerle buluşturuyor.

Kurumsal

  • Hakkımızda
  • Gizlilik politikası
  • Tanıtım Yazısı ve Backlink Hizmeti

Kategoriler

  • Teknoloji
  • Oyun
  • Sinema
  • Siber Güvenlik
  • Bilim
  • Finans
  • Dünyadan Güncel Haberler

Populer

  • TV'de Ücretsiz İzlenebilen Şifresiz Erotik Kanallar (2025 Güncel Frekans Listesi)

  • The Last of Us PC Kontrolleri: Hızlı Silah Değiştirme ve Tüm Tuşlar (2025)

  • Hogwarts Legacy'de Odaklanma İksiri Nasıl Yapılır?

Teknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor HaberleriTeknomers | Dünyadan Güncel Teknoloji | Oyun | Müzik | Film | Spor Haberleri
Bizi Takip Et
© 2026 Teknomers. All Rights Reserved.
Welcome Back!

Sign in to your account

Kullanıcı Adı veya E-posta Adresi
Şifre

Şifrenizi mi unuttunuz?