Files
opensourcepos/app/Language/az/Items.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

126 lines
8.7 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_minus' => 'İnventar + Topla və ya - Çıx.',
'allow_alt_description' => 'Alternativ təsvirə icazə verin',
'amount_entry' => 'Məbləğ Əlavəsi',
'bulk_edit' => 'Kütləvi Redaktə',
'buy_price_required' => 'Alış qiyməti tələb olunan sahədir.',
'cannot_be_deleted' => 'Seçilmiş Mal (lar) silmək mükün deyil, bir və ya birdən çox Mallarda Satışlar var.',
'cannot_find_item' => 'Mal Tapılmadı.',
'categories' => '',
'category' => 'Bolmə',
'category_new' => '',
'category_required' => 'Bölmə sahəsi boş qala bilməz.',
'change_all_to_allow_alt_desc' => 'Hamısı üçün Alternativ Təsvirə İcazə Verin.',
'change_all_to_not_allow_allow_desc' => 'Hamısı üçün Alternativ Təsvirə İcazə Verməyin.',
'change_all_to_serialized' => 'Hamısını Seriyalaşdırılmışa görə dəyişin',
'change_all_to_unserialized' => 'Qeyri Seriyalara görə dəyiş',
'change_image' => 'Şəkili Dəyiş',
'confirm_bulk_edit' => 'Siz əminsinizmi ki işarələnmiş butun malları redaktə etmək istəyirsiniz?',
'confirm_bulk_edit_wipe_taxes' => 'Bütün Məhsul Vergisi məlumatları dəyişdiriləcək.',
'confirm_delete' => 'Seçilmiş element(ləri) silmək istədiyinizə əminsiniz?',
'confirm_restore' => 'Seçilmiş element (lər) bərpa etmək istədiyinizə əminsinizmi?',
'cost_price' => 'Topdan Satış qiyməti',
'cost_price_number' => 'Topdansatış qiyməti rəqəm olmalıdır.',
'cost_price_required' => 'Topdan satiış - doldurulması vacib sahə.',
'count' => 'inventorun yenilənməsi',
'csv_import_failed' => 'səhv csv import',
'csv_import_invalid_location' => '',
'csv_import_nodata_wrongformat' => 'Yüklənmiş faylda məlumat yoxdur və ya düzgün formatlanmır.',
'csv_import_partially_failed' => 'Xətlərdə {0} element idxalı uğursuzluq (lar) var: {1}. Heç bir sıra idxal edilmədi.',
'csv_import_success' => 'Malların İdxalı Uğurla Həyata Keçdi.',
'current_quantity' => 'indiki say',
'default_pack_name' => 'Hər biri',
'description' => 'təsvir',
'details_count' => 'detallı inventor sayı',
'do_nothing' => 'heç nə etməmək',
'edit' => '',
'edit_fields_you_want_to_update' => 'Seçilmiş məhsullar üçün tələb olunan sahələri redaktə edin.',
'edit_multiple_items' => 'bir neçə malın redaktəsi',
'empty_upc_items' => 'Boş Barkod Malları',
'error_adding_updating' => 'mal əlavə etməkdə və ya yeniləməkdə səhv var',
'error_updating_multiple' => 'malların yenilənməsində səhv var',
'generate_barcodes' => 'şifrə yarat',
'hsn_code' => 'Harmonize Sistem Nomenklaturası',
'image' => 'Avatar',
'import_items_csv' => 'CSVdən Malları İdxal Et',
'info_provided_by' => 'Məlumat təqdim olundu',
'inventory' => 'inventor',
'inventory_CSV_import_quantity' => 'Miqdarı CSV-dən idxal olunur',
'inventory_comments' => 'komentariyalar',
'inventory_data_tracking' => 'İnventarlaşdırma Üçün Məlumat İzləmə',
'inventory_date' => 'Tarix',
'inventory_employee' => 'Əmakdaş',
'inventory_in_out_quantity' => 'Daxili və Xarici Say',
'inventory_remarks' => 'Qeydlər',
'is_deleted' => 'Silindi',
'is_printed' => '',
'is_serialized' => 'Malın Seriya Nömrəsi var',
'item' => 'Mal',
'item_id' => '',
'item_number' => 'Barkod',
'item_number_duplicate' => 'Malın Nömrəsi artiq Məlumat bazasında var.',
'item_number_invalid' => 'Malın Nömrəsində icazə verilməyən simvollar var.',
'kit' => 'Dəst',
'location' => 'Yer',
'low_inventory_items' => 'Bitmış Mallar',
'low_sell_item' => 'Malların aşağı qiy. satışı',
'manually_editing_of_quantity' => 'Sayı Əl ilə Redeaktə Etmək',
'markup' => '',
'name' => 'Malın Adı',
'name_required' => 'Malın adı olan sahə boş qala bilməz.',
'new' => 'Yeni Mal',
'no_description_items' => 'Mallar haqqında Təsvir Yoxdur',
'no_items_to_display' => 'Mallar Göstərilmir.',
'none' => 'Heçnə',
'none_selected' => 'Siz redaktə etmək üçün hər hansı bir mal seçməmisiniz',
'nonstock' => 'Əldə Olmayan',
'number_information' => 'Malın Nömrəsi',
'number_required' => 'Barkod tələb olunan sahədir.',
'one_or_multiple' => 'Mal (lar)',
'pack_name' => 'Paket Adı',
'qty_per_pack' => 'Paketin miqdarı',
'quantity' => 'Sayı',
'quantity_number' => 'Miqdarı mütləq rəqəmlə olmalıdır.',
'quantity_required' => 'Miqyas tələb olunan sahədir.',
'receiving_quantity' => 'Qəbul Olunan Miqdar',
'remove_image' => 'Şəkili Sil',
'reorder_level' => 'Səviyyani yenidən düzəlt',
'reorder_level_number' => 'Yenidən sıralama səviyyəsi rəqəmlə olmalıdır.',
'reorder_level_required' => 'Düzəliş Səviyyəsi zəruri bir sahədir.',
'retrive_item_info' => 'Mal Haqqında Məlumat',
'sales_tax_1' => 'Satış Vergisi',
'sales_tax_2' => 'Satış Vergisi 2',
'search_attributes' => 'Atributları Axtar',
'select_image' => 'Şəkil Seç',
'serialized_items' => 'Seriyalı Mallar',
'standard' => 'Standart',
'stock' => 'Ehtiyyat',
'stock_location' => 'Ehtiyyatın Yerləşdiyi Yer',
'stock_type' => 'Ehtiyyatda olanın Növü',
'successful_adding' => 'Siz uğurla malı əlavə etdiniz',
'successful_bulk_edit' => 'Siz uğurla bütun mallari yenilədiniz',
'successful_deleted' => 'Siz uğurla sildiniz',
'successful_updating' => 'Siz uğurla malı yenilədiniz',
'supplier' => 'Təchizatcı',
'tax_1' => 'Vergi 1',
'tax_2' => 'Vergi 2',
'tax_3' => '',
'tax_category' => 'Vergi Bolməsi',
'tax_name_invalid' => 'Vergi adında icazə verilməyən simvollar var.',
'tax_percent' => 'Vergi Faizi',
'tax_percent_number' => 'Vergi Faizi rəqəmli dəyər vahidi olmalıdir',
'tax_percent_non_negative' => '',
'tax_percent_required' => 'Vergi Faizi tələb olunan sahədir.',
'tax_percents' => 'Vergi Faiz(lər) i',
'temp' => 'Müvəqqəti',
'type' => 'Malın Növü',
'unit_price' => 'Pərakəndə Satış',
'unit_price_number' => 'Vahid qiyməti rəqəmlə olmalıdır.',
'unit_price_required' => 'Pərakəndə qiymət - vacib sahədir.',
'upc_database' => 'Barkod Məlumat Bazası',
'update' => 'Malı Yenilə',
'use_inventory_menu' => 'İnvertizasiya Menyusundan İstifadə Et',
];