Files
opensourcepos/app/Language/tr/Taxes.php
T
jekkosandobjecttothis 625bb3536a fix(taxes): reject negative tax rates and percentages (#4730)
* fix(taxes): reject negative tax rates and percentages

Reject negative tax values across all tax entry points so they can
never be persisted and produce inverted sales totals:

- Items::postSave / postBulkUpdate: validate tax_percents.* as
  nonNegativeDecimal (was unvalidated, persisted raw).
- Items::save_tax_data (CSV import): fail the row on a negative
  Tax N Percent instead of silently dropping the tax.
- Taxes::postSave: reject negative tax_rate before saving.
- Config::postSaveTax: reject negative default tax rates.

Adds non-negative regression tests for Items, Taxes and Config, plus
boundary tests proving a zero tax rate/percent is still accepted. New
language strings for the rejection messages.

* test: adopt test{Method}_{Purpose} naming convention for new tests

Align the negative-tax test method names with the convention established
in ConfigTest (testPostSave_RejectsNegativeTaxPercent, etc.), per review.

* fix(config): add language entries to all locales, extract TaxFixtureTrait

* fix(i18n): place tax_rate_non_negative in alphabetical order

Move the new tax_rate_non_negative entry to its correct alphabetical
position (after tax_rate_error_adding_updating) in all locale files.

---------

Co-authored-by: objecttothis <17935339+objecttothis@users.noreply.github.com>
2026-10-09 08:58:00 +02:00

85 lines
6.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
return [
"add_exception" => "İstisna Ekle",
"cascade" => "Kademeli",
"cascade_sequence" => "Kademeli Sıra",
"city" => "Şehir",
"code" => "Kod",
"confirm_delete" => "Bu Vergi Kodunu silmek istediğinize emin misiniz? Bu eylem geri alınamaz",
"confirm_restore" => "Seçili Vergi Kodlarını geri yüklemek istediğinizden emin misiniz?",
"default_tax_category" => "Öntanımlı Vergi Kategorisi",
"default_tax_rate" => "Öntanımlı Vergi Oranı",
"error_adding_updating" => "Vergi Kodu ekleme ya da güncelleme başarısız oldu",
"group_seq" => "Küme Sırası",
"jurisdiction_name" => "Yetki Adı",
"name" => "Ad",
"new" => "Yeni Vergi Kodu",
"no_taxes" => "",
"no_taxes_to_display" => "Görüntülenecek Vergi Kodu Yok",
"reporting_authority" => "Rapor Makamı",
"round_half_down" => "Yarım Aşağı",
"round_half_even" => "Yarım Çift",
"round_half_odd" => "Yarım Tek",
"round_half_up" => "Yarım Yukarı",
"rounding_code" => "Yuvarlama Kodu",
"sales_tax" => "Satış Vergisi",
"sales_tax_by_invoice" => "Fatura ile Satış Vergisi",
"sequence" => "Sıra",
"state" => "Eyalet",
"successful_deleted" => "Başarıyla sildiniz",
"tax_categories" => "Vergi Kategorileri",
"tax_categories_configuration" => "Vergi Kategorileri Yapılandırması",
"tax_categories_saved_successfully" => "Vergi Kategorileri değişiklikleri kaydedildi",
"tax_categories_saved_unsuccessfully" => "Vergi Kategorileri değişiklikleri kaydedilmedi",
"tax_category" => "Vergi Kategorisi",
"tax_category_code" => "Vergi Kategori Kodu",
"tax_category_duplicate" => "Yinelenen vergi kategorisi",
"tax_category_invalid_chars" => "Vergi kategorisi adında geçersiz karakterler",
"tax_category_name" => "Vergi Kategorisi Adı",
"tax_category_new" => "Yeni Vergi Kategorisi",
"tax_category_required" => "Vergi kategorisi gerekli",
"tax_code" => "Vergi Kodu",
"tax_code_cannot_be_deleted" => "Vergi Kodu silme işlemi başarısız oldu",
"tax_code_duplicate" => "Yinelenen vergi kodu",
"tax_code_invalid_chars" => "Vergi kodunda geçersiz karakterler",
"tax_code_name" => "Vergi Kodu Adı",
"tax_code_required" => "Vergi Kodu zorunlu bir alandır",
"tax_code_successful_deleted" => "Vergi Kodunu başarıyla sildiniz",
"tax_code_successful_updated" => "Başarıyla güncellediniz",
"tax_code_successful_updating" => "Vergi Kodunu başarıyla güncellediniz",
"tax_code_successfully_added" => "Başarıyla eklediniz",
"tax_code_type" => "Vergi Kodu Türü",
"tax_codes" => "Vergi Kodları",
"tax_codes_configuration" => "Vergi Kodları Yapılandırması",
"tax_codes_saved_successfully" => "Vergi Kodu değişiklikleri kaydedildi",
"tax_codes_saved_unsuccessfully" => "Vergi Kodu değişiklikleri kaydedilmedi",
"tax_excluded" => "Vergi hariç",
"tax_group" => "Vergi Kümesi",
"tax_group_not_unique" => "{0} Vergi Kümesi eşsiz değil",
"tax_group_sequence" => "Vergi Kümesi Sırası",
"tax_included" => "Vergi dahil",
"tax_jurisdiction" => "Vergi Yargı Yetkisi",
"tax_jurisdiction_duplicate" => "Yinelenen vergi yetkisi",
"tax_jurisdiction_invalid_chars" => "Yetki adında geçersiz karakterler",
"tax_jurisdiction_required" => "Vergi yargı yetkisi gerekiyor",
"tax_jurisdictions" => "Vergi Yargı Yetkisi",
"tax_jurisdictions_configuration" => "Vergi Yargı Yetkisi Yapılandırması",
"tax_jurisdictions_saved_successfully" => "Vergi Yargı yetkisi değişiklikleri kaydedildi",
"tax_jurisdictions_saved_unsuccessfully" => "Vergi Yargı yetkisi değişiklikleri kaydedilmedi",
"tax_rate" => "Vergi Oranı",
"tax_rate_configuration" => "Vergi Oranı Yapılandırması",
"tax_rate_error_adding_updating" => "Vergi Oranı ekleme veya güncelleme işlemi başarısız oldu",
"tax_rate_non_negative" => "",
"tax_rate_numeric" => "Vergi Oranı bir sayı olmalıdır",
"tax_rate_required" => "Vergi Oranı zorunlu bir alandır",
"tax_rate_successful_updated" => "Başarıyla güncellendi",
"tax_rate_successfully_added" => "Başarıyla ekledi",
"tax_rates" => "Vergi Oranları",
"tax_rates_configuration" => "Vergi Oranları Yapılandırması",
"tax_rounding" => "Vergi Yuvarlama",
"tax_type" => "Tür",
"update" => "Vergi Oranını Güncelle",
"vat_tax" => "KDV Vergisi",
];