mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-09-13 13:57:34 -04:00
bugfix(items, validation): reject unsafe tax names and fix payments temp table collision - Add unicode_alpha_numeric_punct rule (OSPOSRules) to allow accented/CJK chars in text fields while blocking HTML-unsafe chars (<, >) as defense-in-depth against injection - Items controller: extract validateItemFields/validateBulkUpdateFields, validate tax_names on save and bulk update using new rule; add shared validateFields helper in Secure_Controller to DRY up validation + JSON error response - Escape tax_group output in sales/quote.php and receipt_email.php views to harden output encoding at render time - Rename sales_payments_temp -> sales_report_payments_temp (Summary_report) and -> sales_search_payments_temp (Sale model) to avoid name collision between concurrently-created temp tables - AGENTS.md: document alignment rule for => columns when inserting new language keys Tests: - Add ItemsControllerTest covering postSave/bulkupdate tax_names validation - Reject <, > in tax_names on /items/save and /items/bulkupdate - Verify unicode and apostrophe-containing tax names are accepted - Cover CSV import helpers: header generation (basic, multiple locations, attributes), stock-location/attribute header builders, get_csv_file parsing (plain, BOM-prefixed, multi-row) - Validate required-header detection for import templates - Remove outdated tax name test from SalesControllerTest - Simplify Database class references in SalesControllerTest i18n: - Add tax_name_invalid translation to Items.php for 20+ locales, inserted alphabetically after tax_category in each file - Normalize quote style in ar-EG/Items.php to single quotes - Add ka/Items.php Georgian locale scaffold Signed-off-by: objecttothis <17935339+objecttothis@users.noreply.github.com>
125 lines
8.9 KiB
PHP
125 lines
8.9 KiB
PHP
<?php
|
|
|
|
return [
|
|
'add_minus' => 'Hàng tồn kho để thêm hay bớt.',
|
|
'allow_alt_description' => 'Cho phép Mô tả thay thế',
|
|
'amount_entry' => 'Đầu mục tổng số',
|
|
'bulk_edit' => 'Sửa hàng loạt',
|
|
'buy_price_required' => 'Trường Giá đặt mua là bắt buộc.',
|
|
'cannot_be_deleted' => 'Không thể xóa các Hàng hóa đã chọn, một hay nhiều cái đã chọn đã từng được bán.',
|
|
'cannot_find_item' => 'Không tìm thấy hàng hóa.',
|
|
'categories' => '',
|
|
'category' => 'Thể loại',
|
|
'category_new' => '',
|
|
'category_required' => 'Trường thể loại là bắt buộc.',
|
|
'change_all_to_allow_alt_desc' => 'Cho phép Mô tả thay thế cho tất cả.',
|
|
'change_all_to_not_allow_allow_desc' => 'Không cho phép Mô tả thay thế cho tất cả.',
|
|
'change_all_to_serialized' => 'Đổi tất cả sang sêri hóa',
|
|
'change_all_to_unserialized' => 'Đổi tất cả sang không sêri',
|
|
'change_image' => 'Đổi ảnh',
|
|
'confirm_bulk_edit' => 'Bạn chắc chắn muốn sửa lại các Hàng hóa được chọn không?',
|
|
'confirm_bulk_edit_wipe_taxes' => 'Mọi thông tin Thuế Hàng hóa sẽ bị thay thế.',
|
|
'confirm_delete' => 'Bạn chắc chắn muốn xóa các hàng hóa được chọn không?',
|
|
'confirm_restore' => 'Bạn chắc chắn muốn hoàn lại các hàng hóa được chọn không?',
|
|
'cost_price' => 'Giá bán buôn',
|
|
'cost_price_number' => 'Giá bán buôn phải là dạng số.',
|
|
'cost_price_required' => 'Trường Giá bán buôn là bắt buộc.',
|
|
'count' => 'Cập hàng tồn kho',
|
|
'csv_import_failed' => 'Gặp lỗi khi nhập từ CSV',
|
|
'csv_import_invalid_location' => '',
|
|
'csv_import_nodata_wrongformat' => 'Tập tin tải lên không có dữ liệu hoặc là nó có định dạng không đúng.',
|
|
'csv_import_partially_failed' => 'Có {0} mục tin gặp lỗi khi nhập trên dòng: {1}. Không có hàng nào được nhập vào.',
|
|
'csv_import_success' => 'Nhập hàng hóa thành công.',
|
|
'current_quantity' => 'Số lượng hiện tại',
|
|
'default_pack_name' => 'Mỗi',
|
|
'description' => 'Mô tả',
|
|
'details_count' => 'Chi tiết số lượng tồn kho',
|
|
'do_nothing' => 'Không làm gì',
|
|
'edit' => '',
|
|
'edit_fields_you_want_to_update' => 'Sửa các trường mong muốn cho các hàng hóa được chọn.',
|
|
'edit_multiple_items' => 'Sửa nhiều hàng hóa cùng lúc',
|
|
'empty_upc_items' => 'Mã vạch hàng hóa để trống',
|
|
'error_adding_updating' => 'Lỗi thêm/cập nhật hàng hóa',
|
|
'error_updating_multiple' => 'Có lỗi khi cập nhật hàng hóa',
|
|
'generate_barcodes' => 'Tạo mã vạch',
|
|
'hsn_code' => 'Tuân theo hệ thống hài hòa',
|
|
'image' => 'Avatar',
|
|
'import_items_csv' => 'Nhập hàng hóa từ CSV',
|
|
'info_provided_by' => 'Thông tin được cung cấp bởi',
|
|
'inventory' => 'Tồn kho',
|
|
'inventory_CSV_import_quantity' => 'Số lượng đã được nhập từ CSV',
|
|
'inventory_comments' => 'Ghi chú',
|
|
'inventory_data_tracking' => 'Theo dõi dữ liệu tồn kho',
|
|
'inventory_date' => 'Ngày tháng',
|
|
'inventory_employee' => 'Nhân viên',
|
|
'inventory_in_out_quantity' => 'Số lượng Vào/Ra',
|
|
'inventory_remarks' => 'Lưu ý',
|
|
'is_deleted' => 'Đã xoá',
|
|
'is_printed' => '',
|
|
'is_serialized' => 'Hàng hóa có số sêri',
|
|
'item' => 'Hàng hóa',
|
|
'item_id' => '',
|
|
'item_number' => 'Mã vạch',
|
|
'item_number_duplicate' => 'Số hàng hóa đã sẵn có trong cơ sở dữ liệu rồi.',
|
|
'item_number_invalid' => 'Số hàng hóa chứa ký tự không được phép.',
|
|
'kit' => 'Kít',
|
|
'location' => 'Vị trí',
|
|
'low_inventory_items' => 'Hàng hóa hết hàng trong kho',
|
|
'low_sell_item' => 'Hàng hóa bán kém',
|
|
'manually_editing_of_quantity' => 'Sửa số lượng bằng tay',
|
|
'markup' => '',
|
|
'name' => 'Tên Hàng hóa',
|
|
'name_required' => 'Trường Tên Hàng hóa là bắt buộc.',
|
|
'new' => 'Hàng hóa mới',
|
|
'no_description_items' => 'Hàng hóa không có mô tả',
|
|
'no_items_to_display' => 'Không có hàng hóa để hiển thị.',
|
|
'none' => 'Không',
|
|
'none_selected' => 'Bạn chưa chọn bất kỳ một Hàng hóa nào để mà sửa',
|
|
'nonstock' => 'Hết hàng',
|
|
'number_information' => 'Số hàng hóa',
|
|
'number_required' => 'Trường Mã vạch là bắt buộc.',
|
|
'one_or_multiple' => 'hàng hóa',
|
|
'pack_name' => 'Tên gói',
|
|
'qty_per_pack' => 'Số lượng mỗi gói',
|
|
'quantity' => 'Số lượng',
|
|
'quantity_number' => 'Số lượng phải là dạng số.',
|
|
'quantity_required' => 'Trường số lượng là bắt buộc.',
|
|
'receiving_quantity' => 'Số lượng nhập hàng',
|
|
'remove_image' => 'Gỡ bỏ ảnh',
|
|
'reorder_level' => 'Mức đặt mua bổ xung',
|
|
'reorder_level_number' => 'Mức đặt mua bổ xung phải là con số.',
|
|
'reorder_level_required' => 'Trường Mức đặt mua bổ xung là bắt buộc.',
|
|
'retrive_item_info' => 'Thông tin Nhập hàng',
|
|
'sales_tax_1' => 'Thuế bán hàng',
|
|
'sales_tax_2' => 'Thuế bán hàng 2',
|
|
'search_attributes' => 'Tìm kiếm các thuộc tính',
|
|
'select_image' => 'Chọn ảnh',
|
|
'serialized_items' => 'Các hàng hóa có sêri',
|
|
'standard' => 'Tiêu chuẩn',
|
|
'stock' => 'Có hàng',
|
|
'stock_location' => 'Vị trí kho',
|
|
'stock_type' => 'Kiểu kho',
|
|
'successful_adding' => 'Bạn đã thêm Hàng hóa thành công',
|
|
'successful_bulk_edit' => 'Bạn đã cập nhật các hàng hóa đã chọn thành công',
|
|
'successful_deleted' => 'Bạn đã xóa thành công',
|
|
'successful_updating' => 'Bạn đã cập nhật hàng hóa thành công',
|
|
'supplier' => 'Nhà cung cấp',
|
|
'tax_1' => 'Thuế 1',
|
|
'tax_2' => 'Thuế 2',
|
|
'tax_3' => '',
|
|
'tax_category' => 'Thể loại thuế',
|
|
'tax_name_invalid' => 'Tên thuế chứa ký tự không được phép.',
|
|
'tax_percent' => 'Phần trăm Thuế',
|
|
'tax_percent_number' => 'Phần trăm Thuế phải dạng số',
|
|
'tax_percent_required' => 'Trường Phần trăm Thuế là bắt buộc.',
|
|
'tax_percents' => 'Phần trăm Thuế',
|
|
'temp' => 'Tạm thời',
|
|
'type' => 'Kiểu Hàng hóa',
|
|
'unit_price' => 'Giá bán lẻ',
|
|
'unit_price_number' => 'Giá bán lẻ mỗi đơn vị phải là dạng số.',
|
|
'unit_price_required' => 'Trường giá bán lẻ là bắt buộc.',
|
|
'upc_database' => 'Cơ sở dữ liệu mã vạch',
|
|
'update' => 'Cập nhật Hàng hóa',
|
|
'use_inventory_menu' => 'Dùng trình đơn Tồn kho',
|
|
];
|