Files
jekkos 28755dfd50 fix(tests): resolve all phpunit failures — clean-DB suite green (#4626) (#4691)
* fix(tests): resolve all phpunit failures (#4626)

Bring the phpunit suite from 153 failures to 0 (281 tests passing):

- Employee: decouple grants block from save_value success; restructure
  save_employee new-employee + disallowed-grants early return
- Sale: unify sales_payments_temp schema (add sale_cash_refund,
  reference_code) so both creators produce an identical superset table
- Employees controller: provide placeholder password/hash in testing env
  so new-employee insert succeeds and grant logic is testable
- TestDatabaseBootstrapSeeder: reset shared connection table-name cache
  after bootstrap reset to avoid stale listTables()/tableExists() results
- Config: fix postSaveLocale validation rule syntax
- Test data: use unique employee usernames to avoid UNIQUE constraint
  collisions latching strict-mode transStatus=false on the shared conn
- Various test-file and language-string corrections

* test: consolidate employee fixtures in shared trait

Route test employee creation through a single EmployeeFixtureTrait
that delegates to Employee::save_employee(), so fixtures exercise the
same production code path instead of raw DB inserts. Removes six
near-duplicate helpers across EmployeeTest, SalesControllerTest, and
EmployeesControllerTest while preserving each test's specific grant
set.

Closes a piece of the fixture-scattering flagged in #4626.

Closes #4626

* test: add global DROP/CREATE grant and commit theme fixtures

* fix(ci): remove redundant symlink step, set working encryption key

* fix(ci): run phpunit with --no-coverage to avoid no-driver warning

* fix: address code review findings

- Config: restore strict locale validation (min required|integer|>0) and
  fix max cross-field check with a new gte_field rule (CI4's
  greater_than_equal_to[field] does not resolve the field value)
- Tests: assert rejection for non-numeric/zero/negative/min>max limits
- .env.example: remove shared hard-coded encryption.key (auto-generates);
  document Docker env-var usage
- phpunit.yml: scope CREATE/DROP grant to ospos_test.* and provision a
  per-run encryption key as an env var

* feat: support ENCRYPTION_KEY env var for encryption key

Read ENCRYPTION_KEY as a fallback for the encryption key when the
config value is empty. This is a supported, reliable path for Docker /
container deploys and CI, avoiding reliance on the raw dotted
encryption.key env var.

* fix: align Summary_report temp tables with Sale temp table schema

Summary_report created sales_items_taxes_temp and sales_payments_temp with fewer columns than the canonical create_temp_table() in Sale.php. A later reader expecting those columns hit a schema-mismatch SQL error on the shared temp tables. Add internal_tax/sales_tax (sales_items_taxes_temp) and reference_code (sales_payments_temp) so all creators emit the identical column set.
2026-09-08 21:49:28 +02:00

58 lines
3.3 KiB
PHP

<?php
return [
"account_number" => "Account #",
"account_number_duplicate" => "Account Number is already present in the database.",
"available_points" => "Points Available",
"available_points_value" => "",
"average" => "Average spent",
"avg_discount" => "Average discount",
"basic_information" => "Information",
"cannot_be_deleted" => "Could not delete selected customers, one or more of the selected customers has sales.",
"company_name" => "Company",
"confirm_delete" => "Are you sure you want to delete the selected customer(s)?",
"confirm_restore" => "Are you sure you want to restore selected customers(s)?",
"consent" => "Registration consent",
"consent_required" => "Registration consent is a required field.",
"csv_import_failed" => "CSV import failed",
"csv_import_nodata_wrongformat" => "The uploaded file has no data or is incorrectly formatted.",
"csv_import_partially_failed" => "{0} customer(s) failed to import on line(s): {1}.",
"csv_import_success" => "Customer import successful.",
"customer" => "Customer",
"date" => "Date",
"discount" => "Discount",
"discount_fixed" => "Fixed Discount",
"discount_percent" => "Percentage Discount",
"discount_type" => "Discount Type",
"email_duplicate" => "Email Address is already present in the database.",
"employee" => "Employee",
"error_adding_updating" => "Customer add or update failed.",
"import_items_csv" => "Customer Import from CSV",
"mailchimp_activity_click" => "Email click",
"mailchimp_activity_lastopen" => "Last open email",
"mailchimp_activity_open" => "Email open",
"mailchimp_activity_total" => "Email sent",
"mailchimp_activity_unopen" => "Email unopen",
"mailchimp_email_client" => "Email client",
"mailchimp_info" => "MailChimp",
"mailchimp_member_rating" => "Rating",
"mailchimp_status" => "Status",
"mailchimp_vip" => "VIP",
"max" => "Max. spent",
"min" => "Min. spent",
"new" => "New Customer",
"none_selected" => "You have not selected any customer(s) to delete.",
"one_or_multiple" => "Customer(s)",
"quantity" => "Quantity",
"stats_info" => "Stats",
"successful_adding" => "You have successfully added customer",
"successful_deleted" => "You have successfully deleted",
"successful_updating" => "You have successfully updated customer",
"tax_code" => "Tax Code",
"tax_id" => "Tax Id",
"taxable" => "Taxable",
"total" => "Total spent",
"update" => "Update Customer",
"rewards_package" => "Rewards Package",
];