mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-06-01 20:26:50 -04:00
Compare commits
20 Commits
apply-ci4-
...
feature-ad
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
43ebe2169a | ||
|
|
3f82ac179a | ||
|
|
73dab4f347 | ||
|
|
b1f6ae6d35 | ||
|
|
4153c69ccd | ||
|
|
87fbd72478 | ||
|
|
a4ac42b4ad | ||
|
|
2eff79a8b6 | ||
|
|
880fb8faef | ||
|
|
4d2347173b | ||
|
|
82d36d01fb | ||
|
|
13314b7da1 | ||
|
|
43808c5970 | ||
|
|
1615ef3832 | ||
|
|
e089dc5e2c | ||
|
|
4cf70a95e6 | ||
|
|
e08367aaae | ||
|
|
9cd2f685ff | ||
|
|
6800f338e7 | ||
|
|
d4ab56b742 |
@@ -1,4 +1,5 @@
|
||||
[unreleased]: https://github.com/opensourcepos/opensourcepos/compare/3.4.0...HEAD
|
||||
[3.4.2]: https://github.com/opensourcepos/opensourcepos/compare/3.4.1...3.4.2
|
||||
[3.4.1]: https://github.com/opensourcepos/opensourcepos/compare/3.4.0...3.4.1
|
||||
[3.4.0]: https://github.com/opensourcepos/opensourcepos/compare/3.3.9...3.4.0
|
||||
[3.3.9]: https://github.com/opensourcepos/opensourcepos/compare/3.3.8...3.3.9
|
||||
|
||||
@@ -21,4 +21,4 @@ We release patches for security vulnerabilities. Which versions are eligible to
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please report (suspected) security vulnerabilities to **[jekkos@opensourcepos.org](mailto:jekkos@opensourcepos.org)**. You will receive a response from us within 48 hours. If the issue is confirmed, we will release a patch as soon as possible depending on complexity but historically within a few days.
|
||||
Please report (suspected) security vulnerabilities to **[jekkos@steganos.dev](mailto:jekkos@steganos.dev)**. You will receive a response from us within 48 hours. If the issue is confirmed, we will release a patch as soon as possible depending on complexity but historically within a few days.
|
||||
|
||||
@@ -12,7 +12,7 @@ class App extends BaseConfig
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public string $application_version = '3.4.1';
|
||||
public string $application_version = '3.4.2';
|
||||
|
||||
/**
|
||||
* This is the commit hash for the version you are currently using.
|
||||
|
||||
@@ -165,7 +165,7 @@ class Item_kits extends Secure_Controller
|
||||
$item_kit_data = [
|
||||
'name' => $this->request->getPost('name'),
|
||||
'item_kit_number' => $this->request->getPost('item_kit_number'),
|
||||
'item_id' => $this->request->getPost('kit_item_id') ? null : intval($this->request->getPost('kit_item_id')),
|
||||
'item_id' => $this->request->getPost('kit_item_id') ? intval($this->request->getPost('kit_item_id')) : null,
|
||||
'kit_discount' => parse_decimals($this->request->getPost('kit_discount')),
|
||||
'kit_discount_type' => $this->request->getPost('kit_discount_type') === null ? PERCENT : intval($this->request->getPost('kit_discount_type')),
|
||||
'price_option' => $this->request->getPost('price_option') === null ? PRICE_ALL : intval($this->request->getPost('price_option')),
|
||||
|
||||
@@ -19,6 +19,7 @@ use CodeIgniter\Images\Handlers\BaseHandler;
|
||||
use CodeIgniter\HTTP\DownloadResponse;
|
||||
use Config\OSPOS;
|
||||
use Config\Services;
|
||||
use Exception;
|
||||
use ReflectionException;
|
||||
|
||||
require_once('Secure_Controller.php');
|
||||
@@ -635,10 +636,10 @@ class Items extends Secure_Controller
|
||||
$item_data['reorder_level'] = 0;
|
||||
}
|
||||
|
||||
$tax_category_id = intval($this->request->getPost('tax_category_id'));
|
||||
$tax_category_id = $this->request->getPost('tax_category_id');
|
||||
|
||||
if (!isset($tax_category_id)) {
|
||||
$item_data['tax_category_id'] = '';
|
||||
$item_data['tax_category_id'] = null;
|
||||
} else {
|
||||
$item_data['tax_category_id'] = empty($this->request->getPost('tax_category_id')) ? null : intval($this->request->getPost('tax_category_id'));
|
||||
}
|
||||
@@ -944,107 +945,113 @@ class Items extends Secure_Controller
|
||||
public function postImportCsvFile(): void
|
||||
{
|
||||
helper('importfile_helper');
|
||||
if ($_FILES['file_path']['error'] !== UPLOAD_ERR_OK) {
|
||||
echo json_encode(['success' => false, 'message' => lang('Items.csv_import_failed')]);
|
||||
} else {
|
||||
if (file_exists($_FILES['file_path']['tmp_name'])) {
|
||||
set_time_limit(240);
|
||||
try {
|
||||
if ($_FILES['file_path']['error'] !== UPLOAD_ERR_OK) {
|
||||
echo json_encode(['success' => false, 'message' => lang('Items.csv_import_failed')]);
|
||||
} else {
|
||||
if (file_exists($_FILES['file_path']['tmp_name'])) {
|
||||
set_time_limit(240);
|
||||
|
||||
$failCodes = [];
|
||||
$csv_rows = get_csv_file($_FILES['file_path']['tmp_name']);
|
||||
$employee_id = $this->employee->get_logged_in_employee_info()->person_id;
|
||||
$allowed_stock_locations = $this->stock_location->get_allowed_locations();
|
||||
$attribute_definition_names = $this->attribute->get_definition_names();
|
||||
$failCodes = [];
|
||||
$csv_rows = get_csv_file($_FILES['file_path']['tmp_name']);
|
||||
$employee_id = $this->employee->get_logged_in_employee_info()->person_id;
|
||||
$allowed_stock_locations = $this->stock_location->get_allowed_locations();
|
||||
$attribute_definition_names = $this->attribute->get_definition_names();
|
||||
|
||||
unset($attribute_definition_names[NEW_ENTRY]); // Removes the common_none_selected_text from the array
|
||||
unset($attribute_definition_names[NEW_ENTRY]); // Removes the common_none_selected_text from the array
|
||||
|
||||
$attribute_data = [];
|
||||
$attribute_data = [];
|
||||
|
||||
foreach ($attribute_definition_names as $definition_name) {
|
||||
$attribute_data[$definition_name] = $this->attribute->get_definition_by_name($definition_name)[0];
|
||||
foreach ($attribute_definition_names as $definition_name) {
|
||||
$attribute_data[$definition_name] = $this->attribute->get_definition_by_name($definition_name)[0];
|
||||
|
||||
if ($attribute_data[$definition_name]['definition_type'] === DROPDOWN) {
|
||||
$attribute_data[$definition_name]['dropdown_values'] = $this->attribute->get_definition_values($attribute_data[$definition_name]['definition_id']);
|
||||
if ($attribute_data[$definition_name]['definition_type'] === DROPDOWN) {
|
||||
$attribute_data[$definition_name]['dropdown_values'] = $this->attribute->get_definition_values($attribute_data[$definition_name]['definition_id']);
|
||||
}
|
||||
}
|
||||
}
|
||||
$db = db_connect();
|
||||
$db->transBegin(); // TODO: This section needs to be reworked so that the data array is being created then passed to the Item model because $db doesn't exist in the controller without being instantiated, but database operations should be restricted to the model
|
||||
$db = db_connect();
|
||||
$db->transBegin(); // TODO: This section needs to be reworked so that the data array is being created then passed to the Item model because $db doesn't exist in the controller without being instantiated, but database operations should be restricted to the model
|
||||
|
||||
foreach ($csv_rows as $key => $row) {
|
||||
$is_failed_row = false;
|
||||
$item_id = (int)$row['Id'];
|
||||
$is_update = ($item_id > 0);
|
||||
$item_data = [
|
||||
'item_id' => $item_id,
|
||||
'name' => $row['Item Name'],
|
||||
'description' => $row['Description'],
|
||||
'category' => $row['Category'],
|
||||
'cost_price' => $row['Cost Price'],
|
||||
'unit_price' => $row['Unit Price'],
|
||||
'reorder_level' => $row['Reorder Level'],
|
||||
'deleted' => false,
|
||||
'hsn_code' => $row['HSN'],
|
||||
'pic_filename' => $row['Image']
|
||||
];
|
||||
foreach ($csv_rows as $key => $row) {
|
||||
$is_failed_row = false;
|
||||
$item_id = (int)$row['Id'];
|
||||
$is_update = ($item_id > 0);
|
||||
$item_data = [
|
||||
'item_id' => $item_id,
|
||||
'name' => $row['Item Name'],
|
||||
'description' => $row['Description'],
|
||||
'category' => $row['Category'],
|
||||
'cost_price' => $row['Cost Price'],
|
||||
'unit_price' => $row['Unit Price'],
|
||||
'reorder_level' => $row['Reorder Level'],
|
||||
'deleted' => false,
|
||||
'hsn_code' => $row['HSN'],
|
||||
'pic_filename' => $row['Image']
|
||||
];
|
||||
|
||||
if (!empty($row['supplier ID'])) {
|
||||
$item_data['supplier_id'] = $this->supplier->exists($row['Supplier ID']) ? $row['Supplier ID'] : null;
|
||||
}
|
||||
|
||||
if ($is_update) {
|
||||
$item_data['allow_alt_description'] = empty($row['Allow Alt Description']) ? null : $row['Allow Alt Description'];
|
||||
$item_data['is_serialized'] = empty($row['Item has Serial Number']) ? null : $row['Item has Serial Number'];
|
||||
} else {
|
||||
$item_data['allow_alt_description'] = empty($row['Allow Alt Description']) ? '0' : '1';
|
||||
$item_data['is_serialized'] = empty($row['Item has Serial Number']) ? '0' : '1';
|
||||
}
|
||||
|
||||
if (!empty($row['Barcode']) && !$is_update) {
|
||||
$item_data['item_number'] = $row['Barcode'];
|
||||
$is_failed_row = $this->item->item_number_exists($item_data['item_number']);
|
||||
}
|
||||
|
||||
if (!$is_failed_row) {
|
||||
$is_failed_row = $this->data_error_check($row, $item_data, $allowed_stock_locations, $attribute_definition_names, $attribute_data);
|
||||
}
|
||||
|
||||
// Remove false, null, '' and empty strings but keep 0
|
||||
$item_data = array_filter($item_data, function ($value) {
|
||||
return $value !== null && strlen($value);
|
||||
});
|
||||
|
||||
if (!$is_failed_row && $this->item->save_value($item_data, $item_id)) {
|
||||
$this->save_tax_data($row, $item_data);
|
||||
$this->save_inventory_quantities($row, $item_data, $allowed_stock_locations, $employee_id);
|
||||
$is_failed_row = $this->save_attribute_data($row, $item_data, $attribute_data); // TODO: $is_failed_row never gets used after this.
|
||||
if (!empty($row['supplier ID'])) {
|
||||
$item_data['supplier_id'] = $this->supplier->exists($row['Supplier ID']) ? $row['Supplier ID'] : null;
|
||||
}
|
||||
|
||||
if ($is_update) {
|
||||
$item_data = array_merge($item_data, get_object_vars($this->item->get_info_by_id_or_number($item_id)));
|
||||
$item_data['allow_alt_description'] = empty($row['Allow Alt Description']) ? null : $row['Allow Alt Description'];
|
||||
$item_data['is_serialized'] = empty($row['Item has Serial Number']) ? null : $row['Item has Serial Number'];
|
||||
} else {
|
||||
$item_data['allow_alt_description'] = empty($row['Allow Alt Description']) ? '0' : '1';
|
||||
$item_data['is_serialized'] = empty($row['Item has Serial Number']) ? '0' : '1';
|
||||
}
|
||||
} else {
|
||||
$failed_row = $key + 2;
|
||||
$failCodes[] = $failed_row;
|
||||
log_message('error', "CSV Item import failed on line $failed_row. This item was not imported.");
|
||||
|
||||
if (!empty($row['Barcode']) && !$is_update) {
|
||||
$item_data['item_number'] = $row['Barcode'];
|
||||
$is_failed_row = $this->item->item_number_exists($item_data['item_number']);
|
||||
}
|
||||
|
||||
if (!$is_failed_row) {
|
||||
$is_failed_row = $this->data_error_check($row, $item_data, $allowed_stock_locations, $attribute_definition_names, $attribute_data);
|
||||
}
|
||||
|
||||
// Remove false, null, '' and empty strings but keep 0
|
||||
$item_data = array_filter($item_data, function ($value) {
|
||||
return $value !== null && strlen($value);
|
||||
});
|
||||
|
||||
if (!$is_failed_row && $this->item->save_value($item_data, $item_id)) {
|
||||
$this->save_tax_data($row, $item_data);
|
||||
$this->save_inventory_quantities($row, $item_data, $allowed_stock_locations, $employee_id);
|
||||
$is_failed_row = $this->save_attribute_data($row, $item_data, $attribute_data); // TODO: $is_failed_row never gets used after this.
|
||||
|
||||
if ($is_update) {
|
||||
$item_data = array_merge($item_data, get_object_vars($this->item->get_info_by_id_or_number($item_id)));
|
||||
}
|
||||
} else {
|
||||
$failed_row = $key + 2;
|
||||
$failCodes[] = $failed_row;
|
||||
log_message('error', "CSV Item import failed on line $failed_row. This item was not imported.");
|
||||
}
|
||||
|
||||
unset($csv_rows[$key]);
|
||||
}
|
||||
|
||||
unset($csv_rows[$key]);
|
||||
}
|
||||
$csv_rows = null;
|
||||
|
||||
$csv_rows = null;
|
||||
if (count($failCodes) > 0) {
|
||||
$message = lang('Items.csv_import_partially_failed', [count($failCodes), implode(', ', $failCodes)]);
|
||||
$db->transRollback();
|
||||
echo json_encode(['success' => false, 'message' => $message]);
|
||||
} else {
|
||||
$db->transCommit();
|
||||
|
||||
if (count($failCodes) > 0) {
|
||||
$message = lang('Items.csv_import_partially_failed', [count($failCodes), implode(', ', $failCodes)]);
|
||||
$db->transRollback();
|
||||
echo json_encode(['success' => false, 'message' => $message]);
|
||||
echo json_encode(['success' => true, 'message' => lang('Items.csv_import_success')]);
|
||||
}
|
||||
} else {
|
||||
$db->transCommit();
|
||||
|
||||
echo json_encode(['success' => true, 'message' => lang('Items.csv_import_success')]);
|
||||
echo json_encode(['success' => false, 'message' => lang('Items.csv_import_nodata_wrongformat')]);
|
||||
}
|
||||
} else {
|
||||
echo json_encode(['success' => false, 'message' => lang('Items.csv_import_nodata_wrongformat')]);
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo json_encode(['success' => false, 'message' => $e->getMessage()]);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,6 +13,14 @@ class AttributeLinksUniqueConstraint extends Migration
|
||||
public function up(): void
|
||||
{
|
||||
error_log('Migrating attribute_links unique constraint started');
|
||||
helper('migration');
|
||||
$foreignKeys = [
|
||||
'ospos_attribute_links_ibfk_1',
|
||||
'ospos_attribute_links_ibfk_2',
|
||||
];
|
||||
|
||||
dropForeignKeyConstraints($foreignKeys, 'attribute_links');
|
||||
dropColumnIfExists('ospos_attribute_links', 'generated_unique_column');
|
||||
|
||||
execute_script(APPPATH . 'Database/Migrations/sqlscripts/3.4.1_attribute_links_unique_constraint.sql');
|
||||
}
|
||||
|
||||
38
app/Database/Migrations/20250716170000_MissingConfigKeys.php
Normal file
38
app/Database/Migrations/20250716170000_MissingConfigKeys.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Migrations;
|
||||
|
||||
use CodeIgniter\Database\Migration;
|
||||
|
||||
class Migration_MissingConfigKeys extends Migration
|
||||
{
|
||||
/**
|
||||
* Perform a migration step.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
error_log('Starting transaction...');
|
||||
$db = db_connect();
|
||||
$db->transStart();
|
||||
|
||||
helper('migration');
|
||||
|
||||
// execute_script returns whether everything executed successfully
|
||||
if (execute_script(APPPATH . 'Database/Migrations/sqlscripts/3.4.2_missing_config_keys.sql')) {
|
||||
error_log('Migrated config table.');
|
||||
}
|
||||
else {
|
||||
error_log('Failed to migrate config table.');
|
||||
}
|
||||
|
||||
error_log('Transaction completed.');
|
||||
$db->transComplete();
|
||||
}
|
||||
|
||||
/**
|
||||
* Revert a migration step.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
|
||||
namespace App\Database\Migrations;
|
||||
|
||||
use CodeIgniter\Database\Migration;
|
||||
|
||||
class Migration_NullableTaxCategoryId extends Migration
|
||||
{
|
||||
/**
|
||||
* Perform a migration step.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
error_log('Migrating nullable tax category ID');
|
||||
|
||||
helper('migration');
|
||||
execute_script(APPPATH . 'Database/Migrations/sqlscripts/3.4.2_nullable_tax_category_id.sql');
|
||||
|
||||
error_log('Migrated nullable tax category ID');
|
||||
}
|
||||
|
||||
/**
|
||||
* Revert a migration step.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,6 @@
|
||||
ALTER TABLE `ospos_attribute_links` DROP CONSTRAINT `ospos_attribute_links_ibfk_1`;
|
||||
ALTER TABLE `ospos_attribute_links` DROP CONSTRAINT `ospos_attribute_links_ibfk_2`;
|
||||
|
||||
# Prevents duplicate attribute links with the same definition_id and item_id.
|
||||
# This accounts for dropdown rows (null item_id) and rows associated with sales or receivings.
|
||||
|
||||
ALTER TABLE `ospos_attribute_links`
|
||||
ADD COLUMN `generated_unique_column` VARCHAR(255) GENERATED ALWAYS AS (
|
||||
CASE
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
INSERT INTO ospos_app_config (`key`, `value`)
|
||||
SELECT 'msg_msg', ''
|
||||
WHERE NOT EXISTS (SELECT 1 FROM ospos_app_config WHERE `key` = 'msg_msg');
|
||||
|
||||
INSERT INTO ospos_app_config (`key`, `value`)
|
||||
SELECT 'msg_pwd', ''
|
||||
WHERE NOT EXISTS (SELECT 1 FROM ospos_app_config WHERE `key` = 'msg_pwd');
|
||||
|
||||
INSERT INTO ospos_app_config (`key`, `value`)
|
||||
SELECT 'msg_uid', ''
|
||||
WHERE NOT EXISTS (SELECT 1 FROM ospos_app_config WHERE `key` = 'msg_uid');
|
||||
|
||||
INSERT INTO ospos_app_config (`key`, `value`)
|
||||
SELECT 'msg_src', ''
|
||||
WHERE NOT EXISTS (SELECT 1 FROM ospos_app_config WHERE `key` = 'msg_src');
|
||||
|
||||
INSERT INTO ospos_app_config (`key`, `value`)
|
||||
SELECT 'smtp_timeout', 5000
|
||||
WHERE NOT EXISTS (SELECT 1 FROM ospos_app_config WHERE `key` = 'smtp_timeout');
|
||||
|
||||
INSERT INTO ospos_app_config (`key`, `value`)
|
||||
SELECT 'smtp_crypto', 'tls'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM ospos_app_config WHERE `key` = 'smtp_crypto');
|
||||
|
||||
INSERT INTO ospos_app_config (`key`, `value`)
|
||||
SELECT 'smtp_port', 587
|
||||
WHERE NOT EXISTS (SELECT 1 FROM ospos_app_config WHERE `key` = 'smtp_port');
|
||||
|
||||
INSERT INTO ospos_app_config (`key`, `value`)
|
||||
SELECT 'mailpath', '/usr/bin/sendmail'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM ospos_app_config WHERE `key` = 'mailpath');
|
||||
|
||||
INSERT INTO ospos_app_config (`key`, `value`)
|
||||
SELECT 'protocol', 'sendmail'
|
||||
WHERE NOT EXISTS (SELECT 1 FROM ospos_app_config WHERE `key` = 'protocol');
|
||||
@@ -0,0 +1,3 @@
|
||||
-- Migration to make tax_category_id nullable in ospos_items
|
||||
ALTER TABLE ospos_items
|
||||
MODIFY COLUMN tax_category_id INT NULL;
|
||||
@@ -3,9 +3,11 @@
|
||||
use Config\Database;
|
||||
|
||||
/**
|
||||
* Migration helper
|
||||
* Migration helper.
|
||||
* @param string $path Path to migration script.
|
||||
* @return bool Whether the migration executed successfully.
|
||||
*/
|
||||
function execute_script(string $path): void
|
||||
function execute_script(string $path): bool
|
||||
{
|
||||
$version = preg_replace("/(.*_)?(.*).sql/", "$2", $path);
|
||||
error_log("Migrating to $version (file: $path)");
|
||||
@@ -16,17 +18,27 @@ function execute_script(string $path): void
|
||||
|
||||
$db = Database::connect();
|
||||
|
||||
$success = true; // whether *all* queries succeeded
|
||||
foreach ($sqls as $statement) {
|
||||
$statement = "$statement;";
|
||||
$hadError = !$db->simpleQuery($statement);
|
||||
|
||||
if (!$db->simpleQuery($statement)) {
|
||||
if ($hadError) {
|
||||
$success = false;
|
||||
foreach ($db->error() as $error) {
|
||||
error_log("error: $error");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
error_log("Migrated to $version");
|
||||
if ($success) {
|
||||
error_log("Successfully migrated to $version");
|
||||
}
|
||||
else {
|
||||
error_log("Could not migrate to $version.");
|
||||
}
|
||||
|
||||
return $success;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -212,6 +224,36 @@ function foreignKeyExists(string $constraintName, string $tableName): bool {
|
||||
return $query->getNumRows() > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Drops a column from a table if it exists.
|
||||
*
|
||||
* @param string $table The name of the table.
|
||||
* @param string $column The name of the column to drop.
|
||||
* @return void
|
||||
*/
|
||||
function dropColumnIfExists(string $table, string $column): void
|
||||
{
|
||||
$prefix = overridePrefix();
|
||||
|
||||
$db = Database::connect();
|
||||
$builder = $db->table('information_schema.COLUMNS');
|
||||
|
||||
// Check if the column exists in the table
|
||||
$builder->select('COLUMN_NAME')
|
||||
->where('TABLE_SCHEMA', $db->database)
|
||||
->where('TABLE_NAME', $prefix . $table)
|
||||
->where('COLUMN_NAME', $column);
|
||||
|
||||
$query = $builder->get();
|
||||
|
||||
if ($query->getNumRows() > 0)
|
||||
{
|
||||
// Drop the column if it exists
|
||||
$db->query("ALTER TABLE `" . $prefix . "$table` DROP COLUMN `$column`");
|
||||
}
|
||||
overridePrefix($prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the current database is MariaDB.
|
||||
*
|
||||
|
||||
@@ -1,89 +1,89 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"address_1" => "Alamat 1",
|
||||
"address_2" => "Alamat 2",
|
||||
"admin" => "",
|
||||
"city" => "Kota",
|
||||
"clerk" => "",
|
||||
"close" => "Tutup",
|
||||
"color" => "",
|
||||
"comments" => "Komentar",
|
||||
"common" => "umum",
|
||||
"confirm_search" => "Anda telah memilih satu atau beberapa baris, ini tidak akan dipilih lagi setelah pencarian Anda. Apakah Anda yakin ingin mengirimkan pencarian ini?",
|
||||
"copyrights" => "© 2010 - {0}",
|
||||
"correct_errors" => "Silahkan perbaiki kesalahan sebelum menyimpan",
|
||||
"country" => "Negara",
|
||||
"dashboard" => "",
|
||||
"date" => "Tanggal",
|
||||
"delete" => "Hapus",
|
||||
"det" => "detil",
|
||||
"download_import_template" => "Unduh yang Diimpor dalam format CSV (CSV)",
|
||||
"edit" => "ubah",
|
||||
"email" => "Email",
|
||||
"email_invalid_format" => "Alamat email tidak dalam format yang benar.",
|
||||
"export_csv" => "Ekspor ke CSV",
|
||||
"export_csv_no" => "Tidak",
|
||||
"export_csv_yes" => "Ya",
|
||||
"fields_required_message" => "Bagian yang berwarna merah harus diisi",
|
||||
"fields_required_message_unique" => "",
|
||||
"first_name" => "Nama Depan",
|
||||
"first_name_required" => "Nama Depan harus diisi.",
|
||||
"first_page" => "Pertama",
|
||||
"gender" => "Jenis Kelamin",
|
||||
"gender_female" => "P",
|
||||
"gender_male" => "L",
|
||||
"gender_undefined" => "",
|
||||
"icon" => "ikon",
|
||||
"id" => "Nomor ID",
|
||||
"import" => "Impor",
|
||||
"import_change_file" => "Ubah",
|
||||
"import_csv" => "Impor dari CSV",
|
||||
"import_full_path" => "Diperlukan alamat lengkap file CSV",
|
||||
"import_remove_file" => "Hapus",
|
||||
"import_select_file" => "Pilih file",
|
||||
"inv" => "Persediaan",
|
||||
"last_name" => "Nama Belakang",
|
||||
"last_name_required" => "Nama belakang harus diisi.",
|
||||
"last_page" => "Akhir",
|
||||
"learn_about_project" => "Untuk mempelajari informasi terbaru tentang proyek ini.",
|
||||
"list_of" => "Daftar",
|
||||
"logo" => "Logo",
|
||||
"logo_mark" => "Tanda",
|
||||
"logout" => "Keluar",
|
||||
"manager" => "",
|
||||
"migration_needed" => "Migrasi data ke {0} akan dimulai setelah masuk.",
|
||||
"new" => "Baru",
|
||||
"no" => "Tidak",
|
||||
"no_persons_to_display" => "Tidak ada orang yang ditampilkan.",
|
||||
"none_selected_text" => "[Pilih]",
|
||||
"or" => "ATAU",
|
||||
"people" => "",
|
||||
"phone_number" => "Nomor Telepon",
|
||||
"phone_number_required" => "Nomer Telepon Wajib Diisi",
|
||||
"please_visit_my" => "Silahkan kunjungi",
|
||||
"position" => "",
|
||||
"powered_by" => "Diberdayakan oleh",
|
||||
"price" => "Harga",
|
||||
"print" => "Cetak",
|
||||
"remove" => "Hapus",
|
||||
"required" => "Diperlukan",
|
||||
"restore" => "Kembalikan",
|
||||
"return_policy" => "Kebijakan Retur",
|
||||
"search" => "Cari",
|
||||
"search_options" => "Pilihan pencarian",
|
||||
"searched_for" => "Mencari untuk",
|
||||
"software_short" => "OSPOS",
|
||||
"software_title" => "Sumber Terbuka Titik Penjualan",
|
||||
"state" => "Provinsi",
|
||||
"submit" => "Kirim",
|
||||
"total_spent" => "Total",
|
||||
"unknown" => "Tidak diketahui",
|
||||
"view_recent_sales" => "Lihat Penjualan Terkini",
|
||||
"website" => "Situs",
|
||||
"welcome" => "Selamat Datang",
|
||||
"welcome_message" => "Selamat Datang di OSPOS, klik modul di bawah ini untuk memulai.",
|
||||
"yes" => "Iya",
|
||||
"you_are_using_ospos" => "Anda menggunakan Open Source Point Of Sale Versi",
|
||||
"zip" => "Kode POS",
|
||||
'address_1' => "Alamat 1",
|
||||
'address_2' => "Alamat 2",
|
||||
'admin' => "",
|
||||
'city' => "Kota",
|
||||
'clerk' => "",
|
||||
'close' => "Tutup",
|
||||
'color' => "",
|
||||
'comments' => "Komentar",
|
||||
'common' => "umum",
|
||||
'confirm_search' => "Anda telah memilih satu atau beberapa baris, ini tidak akan dipilih lagi setelah pencarian Anda. Apakah Anda yakin ingin mengirimkan pencarian ini?",
|
||||
'copyrights' => "© 2010 - {0}",
|
||||
'correct_errors' => "Silahkan perbaiki kesalahan sebelum menyimpan",
|
||||
'country' => "Negara",
|
||||
'dashboard' => "",
|
||||
'date' => "Tanggal",
|
||||
'delete' => "Hapus",
|
||||
'det' => "detail",
|
||||
'download_import_template' => "Unduh yang Diimpor dalam format CSV (CSV)",
|
||||
'edit' => "ubah",
|
||||
'email' => "Surel",
|
||||
'email_invalid_format' => "Alamat surel tidak dalam format yang benar.",
|
||||
'export_csv' => "Ekspor ke CSV",
|
||||
'export_csv_no' => "Tidak",
|
||||
'export_csv_yes' => "Ya",
|
||||
'fields_required_message' => "Bagian yang berwarna merah harus diisi",
|
||||
'fields_required_message_unique' => "",
|
||||
'first_name' => "Nama Depan",
|
||||
'first_name_required' => "Nama Depan harus diisi.",
|
||||
'first_page' => "Pertama",
|
||||
'gender' => "Jenis Kelamin",
|
||||
'gender_female' => "P",
|
||||
'gender_male' => "L",
|
||||
'gender_undefined' => "",
|
||||
'icon' => "Ikon",
|
||||
'id' => "ID",
|
||||
'import' => "Impor",
|
||||
'import_change_file' => "Ubah",
|
||||
'import_csv' => "Impor dari CSV",
|
||||
'import_full_path' => "Diperlukan alamat lengkap file CSV",
|
||||
'import_remove_file' => "Hapus",
|
||||
'import_select_file' => "Pilih file",
|
||||
'inv' => "Persediaan",
|
||||
'last_name' => "Nama Belakang",
|
||||
'last_name_required' => "Nama belakang harus diisi.",
|
||||
'last_page' => "Akhir",
|
||||
'learn_about_project' => "Untuk mempelajari informasi terbaru tentang proyek ini.",
|
||||
'list_of' => "Daftar",
|
||||
'logo' => "Logo",
|
||||
'logo_mark' => "Tanda",
|
||||
'logout' => "Keluar",
|
||||
'manager' => "",
|
||||
'migration_needed' => "Migrasi data ke {0} akan dimulai setelah masuk.",
|
||||
'new' => "Baru",
|
||||
'no' => "Tidak",
|
||||
'no_persons_to_display' => "Tidak ada orang yang ditampilkan.",
|
||||
'none_selected_text' => "[Pilih]",
|
||||
'or' => "ATAU",
|
||||
'people' => "",
|
||||
'phone_number' => "Nomor Telepon",
|
||||
'phone_number_required' => "Nomer Telepon Wajib Diisi",
|
||||
'please_visit_my' => "Silahkan kunjungi",
|
||||
'position' => "",
|
||||
'powered_by' => "Diberdayakan oleh",
|
||||
'price' => "Harga",
|
||||
'print' => "Cetak",
|
||||
'remove' => "Hapus",
|
||||
'required' => "Diperlukan",
|
||||
'restore' => "Kembalikan",
|
||||
'return_policy' => "Kebijakan Retur",
|
||||
'search' => "Cari",
|
||||
'search_options' => "Pilihan pencarian",
|
||||
'searched_for' => "Mencari untuk",
|
||||
'software_short' => "OSPOS",
|
||||
'software_title' => "Sumber Terbuka Titik Penjualan",
|
||||
'state' => "Provinsi",
|
||||
'submit' => "Kirim",
|
||||
'total_spent' => "Total",
|
||||
'unknown' => "Tidak diketahui",
|
||||
'view_recent_sales' => "Lihat Penjualan Terkini",
|
||||
'website' => "Situs",
|
||||
'welcome' => "Selamat Datang",
|
||||
'welcome_message' => "Selamat Datang di OSPOS, klik modul di bawah ini untuk memulai.",
|
||||
'yes' => "Iya",
|
||||
'you_are_using_ospos' => "Anda menggunakan Open Source Point Of Sale Versi",
|
||||
'zip' => "Kode POS",
|
||||
];
|
||||
|
||||
@@ -1,331 +1,331 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"address" => "Alamat Perusahaan",
|
||||
"address_required" => "Alamat Perusahaan wajib diisi.",
|
||||
"all_set" => "Semua perizinan file diatur dengan benar!",
|
||||
"allow_duplicate_barcodes" => "Ijinkan kode batang ganda",
|
||||
"apostrophe" => "Tanda petik (')",
|
||||
"backup_button" => "Cadangkan",
|
||||
"backup_database" => "Cadangkan basis data",
|
||||
"barcode" => "Kode batang",
|
||||
"barcode_company" => "Nama Perusahaan",
|
||||
"barcode_configuration" => "Pengaturan kode batang",
|
||||
"barcode_content" => "Isi kode batang",
|
||||
"barcode_first_row" => "Baris 1",
|
||||
"barcode_font" => "Jenis huruf",
|
||||
"barcode_formats" => "Format masukan",
|
||||
"barcode_generate_if_empty" => "Buatkan kode batang otomatis jika kosong.",
|
||||
"barcode_height" => "Tinggi (px)",
|
||||
"barcode_id" => "Item Id/Nama",
|
||||
"barcode_info" => "Informasi pengaturan kode batang",
|
||||
"barcode_layout" => "Tata letak kode batang",
|
||||
"barcode_name" => "Nama",
|
||||
"barcode_number" => "Kode batang",
|
||||
"barcode_number_in_row" => "Jumlah baris",
|
||||
"barcode_page_cellspacing" => "Tampilkan jarak antar sel pada halaman.",
|
||||
"barcode_page_width" => "Lebar halaman",
|
||||
"barcode_price" => "Harga",
|
||||
"barcode_second_row" => "Baris 2",
|
||||
"barcode_third_row" => "Baris 3",
|
||||
"barcode_tooltip" => "Peringatan: Fitur ini dapat meyebabkan duplikasi item yang diimpor atau dibuat. Jangan digunakan jika Anda tidak ingin menggandakan kode batang.",
|
||||
"barcode_type" => "Jenis kode batang",
|
||||
"barcode_width" => "Lebar (px)",
|
||||
"bottom" => "Bawah",
|
||||
"cash_button" => "",
|
||||
"cash_button_1" => "",
|
||||
"cash_button_2" => "",
|
||||
"cash_button_3" => "",
|
||||
"cash_button_4" => "",
|
||||
"cash_button_5" => "",
|
||||
"cash_button_6" => "",
|
||||
"cash_decimals" => "Desimal Tunai",
|
||||
"cash_decimals_tooltip" => "Jika Desimal Tunai dan Desimal Mata Uang sama, maka pembulatan uang tidak akan dilakukan.",
|
||||
"cash_rounding" => "Pembulatan tunai",
|
||||
"category_dropdown" => "Tampilkan menu tarik turun untuk Kategori",
|
||||
"center" => "Tengah",
|
||||
"change_apperance_tooltip" => "",
|
||||
"comma" => "koma",
|
||||
"company" => "Nama Perusahaan",
|
||||
"company_avatar" => "",
|
||||
"company_change_image" => "Ubah gambar",
|
||||
"company_logo" => "Logo perusahaan",
|
||||
"company_remove_image" => "Hapus gambar",
|
||||
"company_required" => "Nama Perusahaan wajib diisi",
|
||||
"company_select_image" => "Pilih gambar",
|
||||
"company_website_url" => "Situs Perusahaan bukan URL yang benar(http://...).",
|
||||
"country_codes" => "Kode negara",
|
||||
"country_codes_tooltip" => "Daftar kode negara format CSV untuk lookup alamat.",
|
||||
"currency_code" => "Kode Mata uang",
|
||||
"currency_decimals" => "Angka desimal",
|
||||
"currency_symbol" => "Simbol Mata Uang",
|
||||
"current_employee_only" => "",
|
||||
"customer_reward" => "Hadiah",
|
||||
"customer_reward_duplicate" => "Masukkan nama unik untuk hadiah.",
|
||||
"customer_reward_enable" => "Aktifkan Hadiah Konsumen",
|
||||
"customer_reward_invalid_chars" => "Nama hadiah tidak boleh berisi '_'",
|
||||
"customer_reward_required" => "Kolom hadiah tidak boleh kosong",
|
||||
"customer_sales_tax_support" => "Dukungan Pajak Penjualan Pelanggan",
|
||||
"date_or_time_format" => "Penyaring tanggal dan waktu",
|
||||
"datetimeformat" => "Format tanggal dan waktu",
|
||||
"decimal_point" => "Titik Desimal",
|
||||
"default_barcode_font_size_number" => "Pengaturan ukuran kode batang default harus berupa angka.",
|
||||
"default_barcode_font_size_required" => "Pengaturan ukuran kode batang default harus diisi.",
|
||||
"default_barcode_height_number" => "Pengaturan tinggi kode batang harus berupa angka.",
|
||||
"default_barcode_height_required" => "Pengaturan tinggi kode batang harus diisi.",
|
||||
"default_barcode_num_in_row_number" => "Kode batang harus berupa angka.",
|
||||
"default_barcode_num_in_row_required" => "Kode batang harus diisi.",
|
||||
"default_barcode_page_cellspacing_number" => "Pengaturan spasi sel kode batang harus berupa angka.",
|
||||
"default_barcode_page_cellspacing_required" => "Pengaturan spasi sel kode batang harus diisi.",
|
||||
"default_barcode_page_width_number" => "Lebar halaman kode batang harus berupa angka.",
|
||||
"default_barcode_page_width_required" => "Lebar halaman kode batang harus diisi.",
|
||||
"default_barcode_width_number" => "Lebar kode batang harus berupa angka.",
|
||||
"default_barcode_width_required" => "Lebar kode batang harus diisi.",
|
||||
"default_item_columns" => "Kolom item terlihat bawaan",
|
||||
"default_origin_tax_code" => "Kode Pajak Asal Default",
|
||||
"default_receivings_discount" => "Diskon pembelian bawaan",
|
||||
"default_receivings_discount_number" => "Diskon pembelian bawaaan harus berupa angka.",
|
||||
"default_receivings_discount_required" => "Diskon oembelian harus diisi.",
|
||||
"default_sales_discount" => "Diskon penjualan bawaan",
|
||||
"default_sales_discount_number" => "Diskon penjualan harus berupa angka.",
|
||||
"default_sales_discount_required" => "Diskon penjualan harus diisi.",
|
||||
"default_tax_category" => "Kategori pajak bawaan",
|
||||
"default_tax_code" => "Kode pajak bawaan",
|
||||
"default_tax_jurisdiction" => "Yuridiksi Pajak bawaan",
|
||||
"default_tax_name_number" => "Nama Pajak Default harus berupa string.",
|
||||
"default_tax_name_required" => "Jenis pajak harus diisi.",
|
||||
"default_tax_rate" => "Tarif Pajak %",
|
||||
"default_tax_rate_1" => "Tarif Pajak 1",
|
||||
"default_tax_rate_2" => "Tarif Pajak 2",
|
||||
"default_tax_rate_3" => "",
|
||||
"default_tax_rate_number" => "Tarif Pajak harus berupa angkat.",
|
||||
"default_tax_rate_required" => "Tarif Pajak Biasa harus diisi.",
|
||||
"derive_sale_quantity" => "Ijinkan Kuantitas Penjulan Diturunkan",
|
||||
"derive_sale_quantity_tooltip" => "Jika dicentang maka jenis barang baru akan disediakan untuk barang yang dipesan dengan jumlah yang diperpanjang",
|
||||
"dinner_table" => "Meja",
|
||||
"dinner_table_duplicate" => "Masukkan nama meja (harus unik).",
|
||||
"dinner_table_enable" => "Aktifkan meja",
|
||||
"dinner_table_invalid_chars" => "Nama meja tidak dapat berisi karater '_'.",
|
||||
"dinner_table_required" => "Meja adalah kolom yang harus diisi.",
|
||||
"dot" => "titik",
|
||||
"email" => "Email",
|
||||
"email_configuration" => "Konfigurasi Email",
|
||||
"email_mailpath" => "Direktori untuk Sendmail",
|
||||
"email_protocol" => "Protocol",
|
||||
"email_receipt_check_behaviour" => "Kotak centang Penerimaan Email",
|
||||
"email_receipt_check_behaviour_always" => "Selalu dicentang",
|
||||
"email_receipt_check_behaviour_last" => "Ingat pilihan terakhir",
|
||||
"email_receipt_check_behaviour_never" => "Selalu tidak tercentang",
|
||||
"email_smtp_crypto" => "Enkripsi SMTP",
|
||||
"email_smtp_host" => "Server SMTP",
|
||||
"email_smtp_pass" => "Kata Sandi SMTP",
|
||||
"email_smtp_port" => "Port SMTP",
|
||||
"email_smtp_timeout" => "Masa Aktif SMTP",
|
||||
"email_smtp_user" => "Nama Pengguna SMTP",
|
||||
"enable_avatar" => "",
|
||||
"enable_avatar_tooltip" => "",
|
||||
"enable_dropdown_tooltip" => "",
|
||||
"enable_new_look" => "",
|
||||
"enable_right_bar" => "",
|
||||
"enable_right_bar_tooltip" => "",
|
||||
"enforce_privacy" => "Berlakukan privasi",
|
||||
"enforce_privacy_tooltip" => "Lindungi privasi Pelanggan yang menegakkan data dalam hal data mereka dihapus",
|
||||
"fax" => "Fax",
|
||||
"file_perm" => "Perizinan berkas bermasalah, Silakan perbaiki dan muat ulang halaman ini.",
|
||||
"financial_year" => "Tahun Awal Fiskal",
|
||||
"financial_year_apr" => "1 April",
|
||||
"financial_year_aug" => "1 Agustus",
|
||||
"financial_year_dec" => "1 Desember",
|
||||
"financial_year_feb" => "1 Februari",
|
||||
"financial_year_jan" => "1 Januari",
|
||||
"financial_year_jul" => "1 Juli",
|
||||
"financial_year_jun" => "1 Juni",
|
||||
"financial_year_mar" => "1 Maret",
|
||||
"financial_year_may" => "1 Mei",
|
||||
"financial_year_nov" => "1 November",
|
||||
"financial_year_oct" => "1 Oktober",
|
||||
"financial_year_sep" => "1 September",
|
||||
"floating_labels" => "Label mengambang",
|
||||
"gcaptcha_enable" => "Halaman login reCHAPTCHA",
|
||||
"gcaptcha_secret_key" => "Kunci Rahasia reCHAPTCHA",
|
||||
"gcaptcha_secret_key_required" => "Kunci Rahasia reCHAPTCHA adalah bidang yang harus diisi",
|
||||
"gcaptcha_site_key" => "Kunci Situs reCHAPTCHA",
|
||||
"gcaptcha_site_key_required" => "Kunci Situs reCHAPTCHA adalah bidang yang dibutuhkan",
|
||||
"gcaptcha_tooltip" => "Lindungi Halaman Login dengan reCAPTCHA Google, klik pada ikon untuk pasangan kunci API.",
|
||||
"general" => "Umum",
|
||||
"general_configuration" => "Pengaturan Umum",
|
||||
"giftcard_number" => "Nomor Kartu Hadiah",
|
||||
"giftcard_random" => "Hasilkan acak",
|
||||
"giftcard_series" => "Hasilkan dalam seri",
|
||||
"image_allowed_file_types" => "Jenis berkas yang diizinkan",
|
||||
"image_max_height_tooltip" => "Tinggi maksimum unggahan gambar yang diizinkan dalam piksel (px).",
|
||||
"image_max_size_tooltip" => "ukuran berkas maksimum yang diijinkan untuk mengunggah gambar dalam kilobyte (kb).",
|
||||
"image_max_width_tooltip" => "Lebar maksimum yang diunggah dari pengunggahan gambar dalam piksel (px).",
|
||||
"image_restrictions" => "Pembatasan Pengunggahan Gambar",
|
||||
"include_hsn" => "Termasuk dukungan kode HSN",
|
||||
"info" => "Informasi",
|
||||
"info_configuration" => "Informasi Toko",
|
||||
"input_groups" => "Grup masukan",
|
||||
"integrations" => "Integrasi",
|
||||
"integrations_configuration" => "Integrasi pihak ketiga",
|
||||
"invoice" => "Faktur",
|
||||
"invoice_configuration" => "Pengaturan cetak faktur",
|
||||
"invoice_default_comments" => "Komentar faktur",
|
||||
"invoice_email_message" => "Templat email faktur",
|
||||
"invoice_enable" => "Mengaktifkan faktur",
|
||||
"invoice_printer" => "Pencetak Faktur",
|
||||
"invoice_type" => "Tipe Faktur",
|
||||
"is_readable" => "dapat dibaca, tetapi izin tidak disetel dengan benar. Setel ke 640 atau 660, kemudian segarkan.",
|
||||
"is_writable" => "bisa ditulis, tetapi izin tidak disetel dengan benar. Setel ke 750 dan segarkan.",
|
||||
"item_markup" => "",
|
||||
"jsprintsetup_required" => "Perhatian! Fungsi ini hanya berjalan jika anda menggunakan Firefox yang memiliki tambahan jsPrintSetup. Tetap simpan?",
|
||||
"language" => "Bahasa",
|
||||
"last_used_invoice_number" => "Nomor terakhir faktur",
|
||||
"last_used_quote_number" => "Nomor Penawaran yang terakhir digunakan",
|
||||
"last_used_work_order_number" => "Nomor W/O yang terakhir dipakai",
|
||||
"left" => "Kiri",
|
||||
"license" => "Lisensi",
|
||||
"license_configuration" => "Pernyataan Lisensi",
|
||||
"line_sequence" => "Urutan baris",
|
||||
"lines_per_page" => "Baris per halaman",
|
||||
"lines_per_page_number" => "Baris per halaman harus berupa angka.",
|
||||
"lines_per_page_required" => "Baris per halaman tidak boleh kosong.",
|
||||
"locale" => "Terjemahan",
|
||||
"locale_configuration" => "Konfigurasi Terjemahan",
|
||||
"locale_info" => "Informasi Konfigurasi Terjemahan",
|
||||
"location" => "Lokasi Stock",
|
||||
"location_configuration" => "Lokasi Stock",
|
||||
"location_info" => "Informasi konfigurasi lokasi stock",
|
||||
"login_form" => "Gaya Formulir Log Masuk",
|
||||
"logout" => "Apakah Anda akan membuat cadangan sebelum anda keluar? Klik [OK] untuk pencadangan, [Batal] untuk keluar.",
|
||||
"mailchimp" => "MailChimp",
|
||||
"mailchimp_api_key" => "Kunci API MailChimp",
|
||||
"mailchimp_configuration" => "Pengaturan MailChimp",
|
||||
"mailchimp_key_successfully" => "Kunci API benar.",
|
||||
"mailchimp_key_unsuccessfully" => "Kunci API tidak valid.",
|
||||
"mailchimp_lists" => "Daftar MailChimp",
|
||||
"mailchimp_tooltip" => "Klik pada ikon untuk KUnci API.",
|
||||
"message" => "Pesan",
|
||||
"message_configuration" => "Pengaturan Pesan",
|
||||
"msg_msg" => "Pesan teks tersimpan",
|
||||
"msg_msg_placeholder" => "Apakah Anda ingin menggunakan template SMS menyimpan pesan Anda disini? Jika tidak, biarkan kosong.",
|
||||
"msg_pwd" => "SMS-API Password",
|
||||
"msg_pwd_required" => "SMS-API Password harus diisi",
|
||||
"msg_src" => "ID pengirim SMS-API",
|
||||
"msg_src_required" => "SMS-API Sender ID harus diisi",
|
||||
"msg_uid" => "SMS-API User Name",
|
||||
"msg_uid_required" => "SMS-API Username harus diisi",
|
||||
"multi_pack_enabled" => "Multi paket per item",
|
||||
"no_risk" => "Tidak ada risiko keamanan / kerentanan.",
|
||||
"none" => "none",
|
||||
"notify_alignment" => "Posisi notifikasi Popup",
|
||||
"number_format" => "Format Nomor",
|
||||
"number_locale" => "Terjemahan",
|
||||
"number_locale_invalid" => "Kode bahasa salah. Cek tautan pada tooltip untuk mendapatkan kode bahasa yang benar.",
|
||||
"number_locale_required" => "Kode Lokal wajib diisi.",
|
||||
"number_locale_tooltip" => "Menemukan kode lokal melalui link ini.",
|
||||
"os_timezone" => "Zona waktu OSPOS:",
|
||||
"ospos_info" => "Info pemasangan OSPOS",
|
||||
"payment_options_order" => "Urutan pilihan pembayaran",
|
||||
"perm_risk" => "Setelan izin yang salah berbahaya bagi keamanan perangkat lunak.",
|
||||
"phone" => "Telepon Perusahaan",
|
||||
"phone_required" => "Telepon Perusahaan wajib diisi.",
|
||||
"print_bottom_margin" => "Margin Bawah",
|
||||
"print_bottom_margin_number" => "Default margin bawah harus angka.",
|
||||
"print_bottom_margin_required" => "Default margin Bawah harus di isi.",
|
||||
"print_delay_autoreturn" => "Otomatis Retur pada penundaan Penjualan",
|
||||
"print_delay_autoreturn_number" => "Kolom Otomatis Retur pada Penundaan Penjualan harus diisi.",
|
||||
"print_delay_autoreturn_required" => "Pengembalian otomatis untuk Penjualan tertunda harus berupa angka.",
|
||||
"print_footer" => "Mencetak Footer Browser",
|
||||
"print_header" => "Mencetak Browser Header",
|
||||
"print_left_margin" => "Margin Kiri",
|
||||
"print_left_margin_number" => "Margin kiri harus berupa angka.",
|
||||
"print_left_margin_required" => "Margin kiri wajib di isi.",
|
||||
"print_receipt_check_behaviour" => "Centang Cetak Struk",
|
||||
"print_receipt_check_behaviour_always" => "Selalu dicentang",
|
||||
"print_receipt_check_behaviour_last" => "Ingat pilihan terakhir",
|
||||
"print_receipt_check_behaviour_never" => "Selalu tidak dicentang",
|
||||
"print_right_margin" => "Margin kanan",
|
||||
"print_right_margin_number" => "Margin kiri harus berupa angka.",
|
||||
"print_right_margin_required" => "Margin kanan wajib di isi.",
|
||||
"print_silently" => "Tampilkan Print Dialog",
|
||||
"print_top_margin" => "Margin atas",
|
||||
"print_top_margin_number" => "Nilai margin atas harus di isi angka.",
|
||||
"print_top_margin_required" => "Margin atas wajib di isi.",
|
||||
"quantity_decimals" => "Desimal untuk Jumlah",
|
||||
"quick_cash_enable" => "",
|
||||
"quote_default_comments" => "Komentar faktur",
|
||||
"receipt" => "Struk Penerimaan",
|
||||
"receipt_category" => "",
|
||||
"receipt_configuration" => "Struk Print Settings",
|
||||
"receipt_default" => "Default",
|
||||
"receipt_font_size" => "Ukuran Font",
|
||||
"receipt_font_size_number" => "Ukuran font harus berupa angka.",
|
||||
"receipt_font_size_required" => "Ukuran font harus diisi.",
|
||||
"receipt_info" => "Struk Konfigurasi Informasi",
|
||||
"receipt_printer" => "Tiket Printer",
|
||||
"receipt_short" => "Ringkas",
|
||||
"receipt_show_company_name" => "Tampilkan nama perusahaan",
|
||||
"receipt_show_description" => "Tampilkan deskripsi",
|
||||
"receipt_show_serialnumber" => "Tampilkan nomor seri",
|
||||
"receipt_show_tax_ind" => "Tampilkan Indikator Pajak",
|
||||
"receipt_show_taxes" => "Tampilkan pajak",
|
||||
"receipt_show_total_discount" => "Tampilkan total diskon",
|
||||
"receipt_template" => "Template struk",
|
||||
"receiving_calculate_average_price" => "Menghitung harga rata-rata (Penerimaan)",
|
||||
"recv_invoice_format" => "Format Faktur",
|
||||
"register_mode_default" => "Default register mode",
|
||||
"report_an_issue" => "Laporkan masalah",
|
||||
"return_policy_required" => "Kebijakan retur wajib diisi.",
|
||||
"reward" => "Hadiah",
|
||||
"reward_configuration" => "Konfigurasi Hadiah",
|
||||
"right" => "Kanan",
|
||||
"sales_invoice_format" => "Format Faktur Penjualan",
|
||||
"sales_quote_format" => "Format Penawaran Penjualan",
|
||||
"saved_successfully" => "Konfigurasi berhasil disimpan.",
|
||||
"saved_unsuccessfully" => "Konfigurasi tidak berhasil disimpan.",
|
||||
"security_issue" => "Peringatan Kerentanan Keamanan",
|
||||
"server_notice" => "Silakan gunakan info di bawah ini untuk pelaporan masalah.",
|
||||
"service_charge" => "",
|
||||
"show_due_enable" => "",
|
||||
"show_office_group" => "Tampilkan ikon kantor",
|
||||
"statistics" => "Kirim statistik",
|
||||
"statistics_tooltip" => "Kirim statistik untuk pengembangan dan peningkatan fitur.",
|
||||
"stock_location" => "Lokasi Stock",
|
||||
"stock_location_duplicate" => "Gunakan nama yang unik untuk lokasi stock.",
|
||||
"stock_location_invalid_chars" => "Nama lokasi tidak boleh berisi karakter '_'.",
|
||||
"stock_location_required" => "Nomor lokasi stock harus diisi.",
|
||||
"suggestions_fifth_column" => "",
|
||||
"suggestions_first_column" => "Kolom 1",
|
||||
"suggestions_fourth_column" => "",
|
||||
"suggestions_layout" => "Tampilan Saran Pencarian",
|
||||
"suggestions_second_column" => "Kolom 2",
|
||||
"suggestions_third_column" => "Kolom 3",
|
||||
"system_conf" => "Setting & Conf",
|
||||
"system_info" => "System Info",
|
||||
"table" => "Meja",
|
||||
"table_configuration" => "Konfigurasi Meja",
|
||||
"takings_printer" => "Struk Printer",
|
||||
"tax" => "Pajak",
|
||||
"tax_category" => "Kategori Pajak",
|
||||
"tax_category_duplicate" => "Kategori pajak yang dimasukkan sudah ada.",
|
||||
"tax_category_invalid_chars" => "Kategori pajak yang dimasukkan tidak valid.",
|
||||
"tax_category_required" => "Kategori pajak dibutuhkan.",
|
||||
"tax_category_used" => "Kategori pajak tidak bisa dihapus karena sedang digunakan.",
|
||||
"tax_configuration" => "Konfigurasi Pajak",
|
||||
"tax_decimals" => "Pajak Decimals",
|
||||
"tax_id" => "Id Pajak",
|
||||
"tax_included" => "Dikenakan Pajak",
|
||||
"theme" => "Tema",
|
||||
"theme_preview" => "Pratinjau Tema:",
|
||||
"thousands_separator" => "Pemisah Ribuan",
|
||||
"timezone" => "Zona Waktu",
|
||||
"timezone_error" => "Zona Waktu OSPOS berbeda dari Zona Waktu Anda.",
|
||||
"top" => "Atas",
|
||||
"use_destination_based_tax" => "Gunakan Pajak Berdasarkan Tujuan",
|
||||
"user_timezone" => "Zona waktu lokal:",
|
||||
"website" => "Situs Perusahaan",
|
||||
"wholesale_markup" => "",
|
||||
"work_order_enable" => "Dukungan Work Order",
|
||||
"work_order_format" => "Format Work Order",
|
||||
'address' => "Alamat Perusahaan",
|
||||
'address_required' => "Alamat Perusahaan wajib diisi.",
|
||||
'all_set' => "Semua perizinan file diatur dengan benar!",
|
||||
'allow_duplicate_barcodes' => "Ijinkan kode batang ganda",
|
||||
'apostrophe' => "Tanda petik (')",
|
||||
'backup_button' => "Cadangkan",
|
||||
'backup_database' => "Cadangkan basis data",
|
||||
'barcode' => "Kode batang",
|
||||
'barcode_company' => "Nama Perusahaan",
|
||||
'barcode_configuration' => "Pengaturan kode batang",
|
||||
'barcode_content' => "Isi kode batang",
|
||||
'barcode_first_row' => "Baris 1",
|
||||
'barcode_font' => "Jenis huruf",
|
||||
'barcode_formats' => "Format masukan",
|
||||
'barcode_generate_if_empty' => "Buatkan kode batang otomatis jika kosong.",
|
||||
'barcode_height' => "Tinggi (px)",
|
||||
'barcode_id' => "Item Id/Nama",
|
||||
'barcode_info' => "Informasi pengaturan kode batang",
|
||||
'barcode_layout' => "Tata letak kode batang",
|
||||
'barcode_name' => "Nama",
|
||||
'barcode_number' => "Kode batang",
|
||||
'barcode_number_in_row' => "Jumlah baris",
|
||||
'barcode_page_cellspacing' => "Tampilkan jarak antar sel pada halaman.",
|
||||
'barcode_page_width' => "Lebar halaman",
|
||||
'barcode_price' => "Harga",
|
||||
'barcode_second_row' => "Baris 2",
|
||||
'barcode_third_row' => "Baris 3",
|
||||
'barcode_tooltip' => "Peringatan: Fitur ini dapat meyebabkan duplikasi item yang diimpor atau dibuat. Jangan digunakan jika Anda tidak ingin menggandakan kode batang.",
|
||||
'barcode_type' => "Jenis kode batang",
|
||||
'barcode_width' => "Lebar (px)",
|
||||
'bottom' => "Bawah",
|
||||
'cash_button' => "",
|
||||
'cash_button_1' => "",
|
||||
'cash_button_2' => "",
|
||||
'cash_button_3' => "",
|
||||
'cash_button_4' => "",
|
||||
'cash_button_5' => "",
|
||||
'cash_button_6' => "",
|
||||
'cash_decimals' => "Desimal Tunai",
|
||||
'cash_decimals_tooltip' => "Jika Desimal Tunai dan Desimal Mata Uang sama, maka pembulatan uang tidak akan dilakukan.",
|
||||
'cash_rounding' => "Pembulatan tunai",
|
||||
'category_dropdown' => "Tampilkan menu tarik turun untuk Kategori",
|
||||
'center' => "Tengah",
|
||||
'change_apperance_tooltip' => "",
|
||||
'comma' => "koma",
|
||||
'company' => "Nama Perusahaan",
|
||||
'company_avatar' => "",
|
||||
'company_change_image' => "Ubah gambar",
|
||||
'company_logo' => "Logo perusahaan",
|
||||
'company_remove_image' => "Hapus gambar",
|
||||
'company_required' => "Nama Perusahaan wajib diisi",
|
||||
'company_select_image' => "Pilih gambar",
|
||||
'company_website_url' => "Situs Perusahaan bukan URL yang benar(http://...).",
|
||||
'country_codes' => "Kode negara",
|
||||
'country_codes_tooltip' => "Daftar kode negara format CSV untuk lookup alamat.",
|
||||
'currency_code' => "Kode Mata uang",
|
||||
'currency_decimals' => "Angka desimal",
|
||||
'currency_symbol' => "Simbol Mata Uang",
|
||||
'current_employee_only' => "",
|
||||
'customer_reward' => "Hadiah",
|
||||
'customer_reward_duplicate' => "Masukkan nama unik untuk hadiah.",
|
||||
'customer_reward_enable' => "Aktifkan Hadiah Konsumen",
|
||||
'customer_reward_invalid_chars' => "Nama hadiah tidak boleh berisi '_'",
|
||||
'customer_reward_required' => "Kolom hadiah tidak boleh kosong",
|
||||
'customer_sales_tax_support' => "Dukungan Pajak Penjualan Pelanggan",
|
||||
'date_or_time_format' => "Penyaring tanggal dan waktu",
|
||||
'datetimeformat' => "Format tanggal dan waktu",
|
||||
'decimal_point' => "Titik Desimal",
|
||||
'default_barcode_font_size_number' => "Pengaturan ukuran kode batang default harus berupa angka.",
|
||||
'default_barcode_font_size_required' => "Pengaturan ukuran kode batang default harus diisi.",
|
||||
'default_barcode_height_number' => "Pengaturan tinggi kode batang harus berupa angka.",
|
||||
'default_barcode_height_required' => "Pengaturan tinggi kode batang harus diisi.",
|
||||
'default_barcode_num_in_row_number' => "Kode batang harus berupa angka.",
|
||||
'default_barcode_num_in_row_required' => "Kode batang harus diisi.",
|
||||
'default_barcode_page_cellspacing_number' => "Pengaturan spasi sel kode batang harus berupa angka.",
|
||||
'default_barcode_page_cellspacing_required' => "Pengaturan spasi sel kode batang harus diisi.",
|
||||
'default_barcode_page_width_number' => "Lebar halaman kode batang harus berupa angka.",
|
||||
'default_barcode_page_width_required' => "Lebar halaman kode batang harus diisi.",
|
||||
'default_barcode_width_number' => "Lebar kode batang harus berupa angka.",
|
||||
'default_barcode_width_required' => "Lebar kode batang harus diisi.",
|
||||
'default_item_columns' => "Kolom item terlihat bawaan",
|
||||
'default_origin_tax_code' => "Kode Pajak Asal Default",
|
||||
'default_receivings_discount' => "Diskon pembelian bawaan",
|
||||
'default_receivings_discount_number' => "Diskon pembelian bawaaan harus berupa angka.",
|
||||
'default_receivings_discount_required' => "Diskon oembelian harus diisi.",
|
||||
'default_sales_discount' => "Diskon penjualan bawaan",
|
||||
'default_sales_discount_number' => "Diskon penjualan harus berupa angka.",
|
||||
'default_sales_discount_required' => "Diskon penjualan harus diisi.",
|
||||
'default_tax_category' => "Kategori pajak bawaan",
|
||||
'default_tax_code' => "Kode pajak bawaan",
|
||||
'default_tax_jurisdiction' => "Yuridiksi Pajak bawaan",
|
||||
'default_tax_name_number' => "Nama Pajak Default harus berupa string.",
|
||||
'default_tax_name_required' => "Jenis pajak harus diisi.",
|
||||
'default_tax_rate' => "Tarif Pajak %",
|
||||
'default_tax_rate_1' => "Tarif Pajak 1",
|
||||
'default_tax_rate_2' => "Tarif Pajak 2",
|
||||
'default_tax_rate_3' => "",
|
||||
'default_tax_rate_number' => "Tarif Pajak harus berupa angkat.",
|
||||
'default_tax_rate_required' => "Tarif Pajak Biasa harus diisi.",
|
||||
'derive_sale_quantity' => "Ijinkan Kuantitas Penjulan Diturunkan",
|
||||
'derive_sale_quantity_tooltip' => "Jika dicentang maka jenis barang baru akan disediakan untuk barang yang dipesan dengan jumlah yang diperpanjang",
|
||||
'dinner_table' => "Meja",
|
||||
'dinner_table_duplicate' => "Masukkan nama meja (harus unik).",
|
||||
'dinner_table_enable' => "Aktifkan meja",
|
||||
'dinner_table_invalid_chars' => "Nama meja tidak dapat berisi karater '_'.",
|
||||
'dinner_table_required' => "Meja adalah kolom yang harus diisi.",
|
||||
'dot' => "titik",
|
||||
'email' => "Surel",
|
||||
'email_configuration' => "Konfigurasi Email",
|
||||
'email_mailpath' => "Direktori untuk Sendmail",
|
||||
'email_protocol' => "Protocol",
|
||||
'email_receipt_check_behaviour' => "Kotak centang Penerimaan Email",
|
||||
'email_receipt_check_behaviour_always' => "Selalu dicentang",
|
||||
'email_receipt_check_behaviour_last' => "Ingat pilihan terakhir",
|
||||
'email_receipt_check_behaviour_never' => "Selalu tidak tercentang",
|
||||
'email_smtp_crypto' => "Enkripsi SMTP",
|
||||
'email_smtp_host' => "Server SMTP",
|
||||
'email_smtp_pass' => "Kata Sandi SMTP",
|
||||
'email_smtp_port' => "Port SMTP",
|
||||
'email_smtp_timeout' => "Masa Aktif SMTP",
|
||||
'email_smtp_user' => "Nama Pengguna SMTP",
|
||||
'enable_avatar' => "",
|
||||
'enable_avatar_tooltip' => "",
|
||||
'enable_dropdown_tooltip' => "",
|
||||
'enable_new_look' => "",
|
||||
'enable_right_bar' => "",
|
||||
'enable_right_bar_tooltip' => "",
|
||||
'enforce_privacy' => "Berlakukan privasi",
|
||||
'enforce_privacy_tooltip' => "Lindungi privasi Pelanggan yang menegakkan data dalam hal data mereka dihapus",
|
||||
'fax' => "Fax",
|
||||
'file_perm' => "Perizinan berkas bermasalah, Silakan perbaiki dan muat ulang halaman ini.",
|
||||
'financial_year' => "Tahun Awal Fiskal",
|
||||
'financial_year_apr' => "1 April",
|
||||
'financial_year_aug' => "1 Agustus",
|
||||
'financial_year_dec' => "1 Desember",
|
||||
'financial_year_feb' => "1 Februari",
|
||||
'financial_year_jan' => "1 Januari",
|
||||
'financial_year_jul' => "1 Juli",
|
||||
'financial_year_jun' => "1 Juni",
|
||||
'financial_year_mar' => "1 Maret",
|
||||
'financial_year_may' => "1 Mei",
|
||||
'financial_year_nov' => "1 November",
|
||||
'financial_year_oct' => "1 Oktober",
|
||||
'financial_year_sep' => "1 September",
|
||||
'floating_labels' => "Label mengambang",
|
||||
'gcaptcha_enable' => "Halaman login reCHAPTCHA",
|
||||
'gcaptcha_secret_key' => "Kunci Rahasia reCHAPTCHA",
|
||||
'gcaptcha_secret_key_required' => "Kunci Rahasia reCHAPTCHA adalah bidang yang harus diisi",
|
||||
'gcaptcha_site_key' => "Kunci Situs reCHAPTCHA",
|
||||
'gcaptcha_site_key_required' => "Kunci Situs reCHAPTCHA adalah bidang yang dibutuhkan",
|
||||
'gcaptcha_tooltip' => "Lindungi Halaman Login dengan reCAPTCHA Google, klik pada ikon untuk pasangan kunci API.",
|
||||
'general' => "Umum",
|
||||
'general_configuration' => "Pengaturan Umum",
|
||||
'giftcard_number' => "Nomor Kartu Hadiah",
|
||||
'giftcard_random' => "Hasilkan acak",
|
||||
'giftcard_series' => "Hasilkan dalam seri",
|
||||
'image_allowed_file_types' => "Jenis berkas yang diizinkan",
|
||||
'image_max_height_tooltip' => "Tinggi maksimum unggahan gambar yang diizinkan dalam piksel (px).",
|
||||
'image_max_size_tooltip' => "ukuran berkas maksimum yang diijinkan untuk mengunggah gambar dalam kilobyte (kb).",
|
||||
'image_max_width_tooltip' => "Lebar maksimum yang diunggah dari pengunggahan gambar dalam piksel (px).",
|
||||
'image_restrictions' => "Pembatasan Pengunggahan Gambar",
|
||||
'include_hsn' => "Termasuk dukungan kode HSN",
|
||||
'info' => "Informasi",
|
||||
'info_configuration' => "Informasi Toko",
|
||||
'input_groups' => "Grup masukan",
|
||||
'integrations' => "Integrasi",
|
||||
'integrations_configuration' => "Integrasi pihak ketiga",
|
||||
'invoice' => "Faktur",
|
||||
'invoice_configuration' => "Pengaturan cetak faktur",
|
||||
'invoice_default_comments' => "Komentar faktur",
|
||||
'invoice_email_message' => "Templat email faktur",
|
||||
'invoice_enable' => "Mengaktifkan faktur",
|
||||
'invoice_printer' => "Pencetak Faktur",
|
||||
'invoice_type' => "Tipe Faktur",
|
||||
'is_readable' => "dapat dibaca, tetapi izin tidak disetel dengan benar. Setel ke 640 atau 660, kemudian segarkan.",
|
||||
'is_writable' => "bisa ditulis, tetapi izin tidak disetel dengan benar. Setel ke 750 dan segarkan.",
|
||||
'item_markup' => "",
|
||||
'jsprintsetup_required' => "Perhatian! Fungsi ini hanya berjalan jika anda menggunakan Firefox yang memiliki tambahan jsPrintSetup. Tetap simpan?",
|
||||
'language' => "Bahasa",
|
||||
'last_used_invoice_number' => "Nomor terakhir faktur",
|
||||
'last_used_quote_number' => "Nomor Penawaran yang terakhir digunakan",
|
||||
'last_used_work_order_number' => "Nomor W/O yang terakhir dipakai",
|
||||
'left' => "Kiri",
|
||||
'license' => "Lisensi",
|
||||
'license_configuration' => "Pernyataan Lisensi",
|
||||
'line_sequence' => "Urutan baris",
|
||||
'lines_per_page' => "Baris per halaman",
|
||||
'lines_per_page_number' => "Baris per halaman harus berupa angka.",
|
||||
'lines_per_page_required' => "Baris per halaman tidak boleh kosong.",
|
||||
'locale' => "Terjemahan",
|
||||
'locale_configuration' => "Konfigurasi Terjemahan",
|
||||
'locale_info' => "Informasi Konfigurasi Terjemahan",
|
||||
'location' => "Lokasi Stock",
|
||||
'location_configuration' => "Lokasi Stock",
|
||||
'location_info' => "Informasi konfigurasi lokasi stock",
|
||||
'login_form' => "Gaya Formulir Log Masuk",
|
||||
'logout' => "Apakah Anda akan membuat cadangan sebelum anda keluar? Klik [OK] untuk pencadangan, [Batal] untuk keluar.",
|
||||
'mailchimp' => "MailChimp",
|
||||
'mailchimp_api_key' => "Kunci API MailChimp",
|
||||
'mailchimp_configuration' => "Pengaturan MailChimp",
|
||||
'mailchimp_key_successfully' => "Kunci API benar.",
|
||||
'mailchimp_key_unsuccessfully' => "Kunci API tidak valid.",
|
||||
'mailchimp_lists' => "Daftar MailChimp",
|
||||
'mailchimp_tooltip' => "Klik pada ikon untuk KUnci API.",
|
||||
'message' => "Pesan",
|
||||
'message_configuration' => "Pengaturan Pesan",
|
||||
'msg_msg' => "Pesan teks tersimpan",
|
||||
'msg_msg_placeholder' => "Apakah Anda ingin menggunakan template SMS menyimpan pesan Anda disini? Jika tidak, biarkan kosong.",
|
||||
'msg_pwd' => "SMS-API Password",
|
||||
'msg_pwd_required' => "SMS-API Password harus diisi",
|
||||
'msg_src' => "ID pengirim SMS-API",
|
||||
'msg_src_required' => "SMS-API Sender ID harus diisi",
|
||||
'msg_uid' => "SMS-API User Name",
|
||||
'msg_uid_required' => "SMS-API Username harus diisi",
|
||||
'multi_pack_enabled' => "Multi paket per item",
|
||||
'no_risk' => "Tidak ada risiko keamanan / kerentanan.",
|
||||
'none' => "none",
|
||||
'notify_alignment' => "Posisi notifikasi Popup",
|
||||
'number_format' => "Format Nomor",
|
||||
'number_locale' => "Terjemahan",
|
||||
'number_locale_invalid' => "Kode bahasa salah. Cek tautan pada tooltip untuk mendapatkan kode bahasa yang benar.",
|
||||
'number_locale_required' => "Kode Lokal wajib diisi.",
|
||||
'number_locale_tooltip' => "Menemukan kode lokal melalui link ini.",
|
||||
'os_timezone' => "Zona waktu OSPOS:",
|
||||
'ospos_info' => "Info pemasangan OSPOS",
|
||||
'payment_options_order' => "Urutan pilihan pembayaran",
|
||||
'perm_risk' => "Setelan izin yang salah berbahaya bagi keamanan perangkat lunak.",
|
||||
'phone' => "Telepon Perusahaan",
|
||||
'phone_required' => "Telepon Perusahaan wajib diisi.",
|
||||
'print_bottom_margin' => "Margin Bawah",
|
||||
'print_bottom_margin_number' => "Default margin bawah harus angka.",
|
||||
'print_bottom_margin_required' => "Default margin Bawah harus di isi.",
|
||||
'print_delay_autoreturn' => "Otomatis Retur pada penundaan Penjualan",
|
||||
'print_delay_autoreturn_number' => "Kolom Otomatis Retur pada Penundaan Penjualan harus diisi.",
|
||||
'print_delay_autoreturn_required' => "Pengembalian otomatis untuk Penjualan tertunda harus berupa angka.",
|
||||
'print_footer' => "Mencetak Footer Browser",
|
||||
'print_header' => "Mencetak Browser Header",
|
||||
'print_left_margin' => "Margin Kiri",
|
||||
'print_left_margin_number' => "Margin kiri harus berupa angka.",
|
||||
'print_left_margin_required' => "Margin kiri wajib di isi.",
|
||||
'print_receipt_check_behaviour' => "Centang Cetak Struk",
|
||||
'print_receipt_check_behaviour_always' => "Selalu dicentang",
|
||||
'print_receipt_check_behaviour_last' => "Ingat pilihan terakhir",
|
||||
'print_receipt_check_behaviour_never' => "Selalu tidak dicentang",
|
||||
'print_right_margin' => "Margin kanan",
|
||||
'print_right_margin_number' => "Margin kiri harus berupa angka.",
|
||||
'print_right_margin_required' => "Margin kanan wajib di isi.",
|
||||
'print_silently' => "Tampilkan Print Dialog",
|
||||
'print_top_margin' => "Margin atas",
|
||||
'print_top_margin_number' => "Nilai margin atas harus di isi angka.",
|
||||
'print_top_margin_required' => "Margin atas wajib di isi.",
|
||||
'quantity_decimals' => "Desimal untuk Jumlah",
|
||||
'quick_cash_enable' => "",
|
||||
'quote_default_comments' => "Komentar faktur",
|
||||
'receipt' => "Struk Penerimaan",
|
||||
'receipt_category' => "",
|
||||
'receipt_configuration' => "Struk Print Settings",
|
||||
'receipt_default' => "Default",
|
||||
'receipt_font_size' => "Ukuran Font",
|
||||
'receipt_font_size_number' => "Ukuran font harus berupa angka.",
|
||||
'receipt_font_size_required' => "Ukuran font harus diisi.",
|
||||
'receipt_info' => "Struk Konfigurasi Informasi",
|
||||
'receipt_printer' => "Tiket Printer",
|
||||
'receipt_short' => "Ringkas",
|
||||
'receipt_show_company_name' => "Tampilkan nama perusahaan",
|
||||
'receipt_show_description' => "Tampilkan deskripsi",
|
||||
'receipt_show_serialnumber' => "Tampilkan nomor seri",
|
||||
'receipt_show_tax_ind' => "Tampilkan Indikator Pajak",
|
||||
'receipt_show_taxes' => "Tampilkan pajak",
|
||||
'receipt_show_total_discount' => "Tampilkan total diskon",
|
||||
'receipt_template' => "Template struk",
|
||||
'receiving_calculate_average_price' => "Menghitung harga rata-rata (Penerimaan)",
|
||||
'recv_invoice_format' => "Format Faktur",
|
||||
'register_mode_default' => "Default register mode",
|
||||
'report_an_issue' => "Laporkan masalah",
|
||||
'return_policy_required' => "Kebijakan retur wajib diisi.",
|
||||
'reward' => "Hadiah",
|
||||
'reward_configuration' => "Konfigurasi Hadiah",
|
||||
'right' => "Kanan",
|
||||
'sales_invoice_format' => "Format Faktur Penjualan",
|
||||
'sales_quote_format' => "Format Penawaran Penjualan",
|
||||
'saved_successfully' => "Konfigurasi berhasil disimpan.",
|
||||
'saved_unsuccessfully' => "Konfigurasi tidak berhasil disimpan.",
|
||||
'security_issue' => "Peringatan Kerentanan Keamanan",
|
||||
'server_notice' => "Silakan gunakan info di bawah ini untuk pelaporan masalah.",
|
||||
'service_charge' => "",
|
||||
'show_due_enable' => "",
|
||||
'show_office_group' => "Tampilkan ikon kantor",
|
||||
'statistics' => "Kirim statistik",
|
||||
'statistics_tooltip' => "Kirim statistik untuk pengembangan dan peningkatan fitur.",
|
||||
'stock_location' => "Lokasi Stock",
|
||||
'stock_location_duplicate' => "Gunakan nama yang unik untuk lokasi stock.",
|
||||
'stock_location_invalid_chars' => "Nama lokasi tidak boleh berisi karakter '_'.",
|
||||
'stock_location_required' => "Nomor lokasi stock harus diisi.",
|
||||
'suggestions_fifth_column' => "",
|
||||
'suggestions_first_column' => "Kolom 1",
|
||||
'suggestions_fourth_column' => "",
|
||||
'suggestions_layout' => "Tampilan Saran Pencarian",
|
||||
'suggestions_second_column' => "Kolom 2",
|
||||
'suggestions_third_column' => "Kolom 3",
|
||||
'system_conf' => "Setting & Conf",
|
||||
'system_info' => "System Info",
|
||||
'table' => "Meja",
|
||||
'table_configuration' => "Konfigurasi Meja",
|
||||
'takings_printer' => "Struk Printer",
|
||||
'tax' => "Pajak",
|
||||
'tax_category' => "Kategori Pajak",
|
||||
'tax_category_duplicate' => "Kategori pajak yang dimasukkan sudah ada.",
|
||||
'tax_category_invalid_chars' => "Kategori pajak yang dimasukkan tidak valid.",
|
||||
'tax_category_required' => "Kategori pajak dibutuhkan.",
|
||||
'tax_category_used' => "Kategori pajak tidak bisa dihapus karena sedang digunakan.",
|
||||
'tax_configuration' => "Konfigurasi Pajak",
|
||||
'tax_decimals' => "Pajak Decimals",
|
||||
'tax_id' => "Id Pajak",
|
||||
'tax_included' => "Dikenakan Pajak",
|
||||
'theme' => "Tema",
|
||||
'theme_preview' => "Pratinjau Tema:",
|
||||
'thousands_separator' => "Pemisah Ribuan",
|
||||
'timezone' => "Zona Waktu",
|
||||
'timezone_error' => "Zona Waktu OSPOS berbeda dari Zona Waktu Anda.",
|
||||
'top' => "Atas",
|
||||
'use_destination_based_tax' => "Gunakan Pajak Berdasarkan Tujuan",
|
||||
'user_timezone' => "Zona waktu lokal:",
|
||||
'website' => "Situs Perusahaan",
|
||||
'wholesale_markup' => "",
|
||||
'work_order_enable' => "Dukungan Work Order",
|
||||
'work_order_format' => "Format Work Order",
|
||||
];
|
||||
|
||||
@@ -1,57 +1,57 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"account_number" => "Akun #",
|
||||
"account_number_duplicate" => "Nomor akun ini telah ada di basis data.",
|
||||
"available_points" => "Poin tersedia",
|
||||
"available_points_value" => "",
|
||||
"average" => "Rata-rata yang dihabiskan",
|
||||
"avg_discount" => "Rata-rata diskon",
|
||||
"basic_information" => "Informasi",
|
||||
"cannot_be_deleted" => "Pelanggan terpilih tidak bisa dihapus. satu atau lebih dari pelanggan yang dipilih memiliki penjualan.",
|
||||
"company_name" => "Perusahaan",
|
||||
"confirm_delete" => "Apakah Anda yakin ingin menghapus pelanggan yang dipilih?",
|
||||
"confirm_restore" => "Anda yakin akan mengembalikan pelanggan terpilih?",
|
||||
"consent" => "Persetujuan pendaftaran",
|
||||
"consent_required" => "Persetujuan pendaftaran adalah bidang yang harus diisi.",
|
||||
"csv_import_failed" => "Gagal impor CSV",
|
||||
"csv_import_nodata_wrongformat" => "Berkas yang Anda unggah tidak berisi data atau salah format.",
|
||||
"csv_import_partially_failed" => "Impor pelanggan berhasil dwngan beberapa kesalahan:",
|
||||
"csv_import_success" => "Impor pelanggan berhasil.",
|
||||
"customer" => "Pelanggan",
|
||||
"date" => "Tanggal",
|
||||
"discount" => "Diskon",
|
||||
"discount_fixed" => "Diskon Tetap",
|
||||
"discount_percent" => "Persentase Diskon",
|
||||
"discount_type" => "Jenis Diskon",
|
||||
"email_duplicate" => "Alamat email telah digunakan.",
|
||||
"employee" => "Karyawan",
|
||||
"error_adding_updating" => "Kesalahan ketika menambah atau memperbaharui pelanggan.",
|
||||
"import_items_csv" => "Impor pelanggan dari CSV",
|
||||
"mailchimp_activity_click" => "Klik Email",
|
||||
"mailchimp_activity_lastopen" => "Email yang terakhir dibuka",
|
||||
"mailchimp_activity_open" => "Buka email",
|
||||
"mailchimp_activity_total" => "Email terkirim",
|
||||
"mailchimp_activity_unopen" => "Email belum dibuka",
|
||||
"mailchimp_email_client" => "Klien email",
|
||||
"mailchimp_info" => "MailChimp",
|
||||
"mailchimp_member_rating" => "Peringkat",
|
||||
"mailchimp_status" => "Status",
|
||||
"mailchimp_vip" => "VIP",
|
||||
"max" => "Max. dihabiskan",
|
||||
"min" => "Min. dihabiskan",
|
||||
"new" => "Pelanggan Baru",
|
||||
"none_selected" => "Anda belum memilih pelanggan untuk dihapus.",
|
||||
"one_or_multiple" => "Pelanggan",
|
||||
"quantity" => "Kuantitas",
|
||||
"stats_info" => "Statistik",
|
||||
"successful_adding" => "Anda telah berhasil menambah pelanggan",
|
||||
"successful_deleted" => "Berhasil menghapus Kartu Hadiah",
|
||||
"successful_updating" => "Anda telah berhasil memperbarui pelanggan",
|
||||
"tax_code" => "Kode pajak",
|
||||
"tax_id" => "ID Pajak",
|
||||
"taxable" => "Dikenakan pajak",
|
||||
"total" => "Total",
|
||||
"update" => "Ubah Pelanggan",
|
||||
"rewards_package" => "Paket Hadiah",
|
||||
'account_number' => "Akun #",
|
||||
'account_number_duplicate' => "Nomor akun ini telah ada di basis data.",
|
||||
'available_points' => "Poin tersedia",
|
||||
'available_points_value' => "",
|
||||
'average' => "Rata-rata yang dihabiskan",
|
||||
'avg_discount' => "Rata-rata diskon",
|
||||
'basic_information' => "Informasi",
|
||||
'cannot_be_deleted' => "Pelanggan terpilih tidak bisa dihapus. satu atau lebih dari pelanggan yang dipilih memiliki penjualan.",
|
||||
'company_name' => "Perusahaan",
|
||||
'confirm_delete' => "Apakah Anda yakin ingin menghapus pelanggan yang dipilih?",
|
||||
'confirm_restore' => "Anda yakin akan mengembalikan pelanggan terpilih?",
|
||||
'consent' => "Persetujuan pendaftaran",
|
||||
'consent_required' => "Persetujuan pendaftaran adalah bidang yang harus diisi.",
|
||||
'csv_import_failed' => "Gagal impor CSV",
|
||||
'csv_import_nodata_wrongformat' => "Berkas yang Anda unggah tidak berisi data atau salah format.",
|
||||
'csv_import_partially_failed' => "Impor pelanggan berhasil dengan beberapa kesalahan:",
|
||||
'csv_import_success' => "Impor pelanggan berhasil.",
|
||||
'customer' => "Pelanggan",
|
||||
'date' => "Tanggal",
|
||||
'discount' => "Diskon",
|
||||
'discount_fixed' => "Diskon Tetap",
|
||||
'discount_percent' => "Persentase Diskon",
|
||||
'discount_type' => "Jenis Diskon",
|
||||
'email_duplicate' => "Alamat email telah digunakan.",
|
||||
'employee' => "Karyawan",
|
||||
'error_adding_updating' => "Kesalahan ketika menambah atau memperbaharui pelanggan.",
|
||||
'import_items_csv' => "Impor pelanggan dari CSV",
|
||||
'mailchimp_activity_click' => "Klik Email",
|
||||
'mailchimp_activity_lastopen' => "Email yang terakhir dibuka",
|
||||
'mailchimp_activity_open' => "Buka email",
|
||||
'mailchimp_activity_total' => "Email terkirim",
|
||||
'mailchimp_activity_unopen' => "Email belum dibuka",
|
||||
'mailchimp_email_client' => "Klien email",
|
||||
'mailchimp_info' => "MailChimp",
|
||||
'mailchimp_member_rating' => "Peringkat",
|
||||
'mailchimp_status' => "Status",
|
||||
'mailchimp_vip' => "VIP",
|
||||
'max' => "Max. dihabiskan",
|
||||
'min' => "Min. dihabiskan",
|
||||
'new' => "Pelanggan Baru",
|
||||
'none_selected' => "Anda belum memilih pelanggan untuk dihapus.",
|
||||
'one_or_multiple' => "Pelanggan",
|
||||
'quantity' => "Kuantitas",
|
||||
'stats_info' => "Statistik",
|
||||
'successful_adding' => "Anda telah berhasil menambah pelanggan",
|
||||
'successful_deleted' => "Berhasil menghapus Kartu Hadiah",
|
||||
'successful_updating' => "Anda telah berhasil memperbarui pelanggan",
|
||||
'tax_code' => "Kode pajak",
|
||||
'tax_id' => "ID Pajak",
|
||||
'taxable' => "Dikenakan pajak",
|
||||
'total' => "Total",
|
||||
'update' => "Ubah Pelanggan",
|
||||
'rewards_package' => "Paket Hadiah",
|
||||
];
|
||||
|
||||
@@ -1,49 +1,49 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
"admin_cashups" => "",
|
||||
"admin_cashups_desc" => "",
|
||||
"attributes" => "Atribut",
|
||||
"attributes_desc" => "Tambah, Perbaharui, Hapus dan Cari atribut.",
|
||||
"both" => "Keduanya",
|
||||
"cashups" => "Kasir",
|
||||
"cashups_desc" => "Tambah, Perbaharui, Hapus dan Cari Uang Tunai.",
|
||||
"config" => "Konfigurasi",
|
||||
"config_desc" => "Ubah Konfigurasi Toko.",
|
||||
"customers" => "Pelanggan",
|
||||
"customers_desc" => "Tambah, ubah, hapus, dan cari Pelanggan.",
|
||||
"employees" => "Karyawan",
|
||||
"employees_desc" => "Tambah, ubah, hapus, dan cari Karyawan.",
|
||||
"expenses" => "Biaya",
|
||||
"expenses_categories" => "Kategori Biaya",
|
||||
"expenses_categories_desc" => "Tambah, Edit, dan Hapus Kategori Biaya.",
|
||||
"expenses_desc" => "Tambah, ubah, hapus, dan cari Biaya.",
|
||||
"giftcards" => "Gift Card",
|
||||
"giftcards_desc" => "Tambah, ubah, hapus dan cari Gift Card.",
|
||||
"home" => "Beranda",
|
||||
"home_desc" => "Daftar modul menu Beranda.",
|
||||
"item_kits" => "Item Paket",
|
||||
"item_kits_desc" => "Tambah, ubah, hapus, dan cari Item Paket.",
|
||||
"items" => "Item Barang",
|
||||
"items_desc" => "Tambah, ubah, hapus, dan cari Item.",
|
||||
"messages" => "Messages",
|
||||
"messages_desc" => "Kirim pesan pada Pelanggan, Pemasok, dan Karyawan.",
|
||||
"migrate" => "Migrasi",
|
||||
"migrate_desc" => "Perbaharui basis data OSPOS.",
|
||||
"office" => "Kantor",
|
||||
"office_desc" => "Daftar modul menu Kantor.",
|
||||
"receivings" => "Penerimaan",
|
||||
"receivings_desc" => "Proses Pesanan Pembelian.",
|
||||
"reports" => "Laporan",
|
||||
"reports_desc" => "Lihat dan Cetak Laporan.",
|
||||
"sales" => "Penjualan",
|
||||
"sales_desc" => "Proses Penjualan dan Retur.",
|
||||
"suppliers" => "Pemasok",
|
||||
"suppliers_desc" => "Tambah, ubah, hapus dan cari Pemasok.",
|
||||
"taxes" => "Pajak",
|
||||
"taxes_desc" => "Konfigurasi Pajak Penjualan.",
|
||||
"timeclocks" => "",
|
||||
"timeclocks_categories" => "",
|
||||
"timeclocks_categories_desc" => "",
|
||||
"timeclocks_desc" => "",
|
||||
'admin_cashups' => "",
|
||||
'admin_cashups_desc' => "",
|
||||
'attributes' => "Atribut",
|
||||
'attributes_desc' => "Tambah, Perbaharui, Hapus dan Cari atribut.",
|
||||
'both' => "Keduanya",
|
||||
'cashups' => "Kasir",
|
||||
'cashups_desc' => "Tambah, Perbaharui, Hapus dan Cari Uang Tunai.",
|
||||
'config' => "Konfigurasi",
|
||||
'config_desc' => "Ubah Konfigurasi Toko.",
|
||||
'customers' => "Pelanggan",
|
||||
'customers_desc' => "Tambah, ubah, hapus, dan cari Pelanggan.",
|
||||
'employees' => "Karyawan",
|
||||
'employees_desc' => "Tambah, ubah, hapus, dan cari Karyawan.",
|
||||
'expenses' => "Biaya",
|
||||
'expenses_categories' => "Kategori Biaya",
|
||||
'expenses_categories_desc' => "Tambah, Edit, dan Hapus Kategori Biaya.",
|
||||
'expenses_desc' => "Tambah, ubah, hapus, dan cari Biaya.",
|
||||
'giftcards' => "Kartu Hadiah",
|
||||
'giftcards_desc' => "Tambah, ubah, hapus dan cari Gift Card.",
|
||||
'home' => "Beranda",
|
||||
'home_desc' => "Daftar modul menu Beranda.",
|
||||
'item_kits' => "Item Paket",
|
||||
'item_kits_desc' => "Tambah, ubah, hapus, dan cari Item Paket.",
|
||||
'items' => "Item Barang",
|
||||
'items_desc' => "Tambah, ubah, hapus, dan cari Item.",
|
||||
'messages' => "Pesan",
|
||||
'messages_desc' => "Kirim pesan pada Pelanggan, Pemasok, dan Karyawan.",
|
||||
'migrate' => "Migrasi",
|
||||
'migrate_desc' => "Perbaharui basis data OSPOS.",
|
||||
'office' => "Kantor",
|
||||
'office_desc' => "Daftar modul menu Kantor.",
|
||||
'receivings' => "Penerimaan",
|
||||
'receivings_desc' => "Proses Pesanan Pembelian.",
|
||||
'reports' => "Laporan",
|
||||
'reports_desc' => "Lihat dan Cetak Laporan.",
|
||||
'sales' => "Penjualan",
|
||||
'sales_desc' => "Proses Penjualan dan Retur.",
|
||||
'suppliers' => "Pemasok",
|
||||
'suppliers_desc' => "Tambah, ubah, hapus dan cari Pemasok.",
|
||||
'taxes' => "Pajak",
|
||||
'taxes_desc' => "Konfigurasi Pajak Penjualan.",
|
||||
'timeclocks' => "",
|
||||
'timeclocks_categories' => "",
|
||||
'timeclocks_categories_desc' => "",
|
||||
'timeclocks_desc' => "",
|
||||
];
|
||||
|
||||
@@ -147,7 +147,7 @@ class Barcode_lib
|
||||
$barcode = $this->generate_barcode($item, $barcode_config);
|
||||
$display_table = '<table>';
|
||||
$display_table .= '<tr><td style="text-align: center;">' . $this->manage_display_layout($barcode_config['barcode_first_row'], $item, $barcode_config) . '</td></tr>';
|
||||
$display_table .= '<tr><td style="text-align: center;"><div class="barcode">$barcode</div></td></tr>';
|
||||
$display_table .= '<tr><td style="text-align: center;"><div class="barcode">'.$barcode.'</div></td></tr>';
|
||||
$display_table .= '<tr><td style="text-align: center;">' . $this->manage_display_layout($barcode_config['barcode_second_row'], $item, $barcode_config) . '</td></tr>';
|
||||
$display_table .= '<tr><td style="text-align: center;">' . $this->manage_display_layout($barcode_config['barcode_third_row'], $item, $barcode_config) . '</td></tr>';
|
||||
$display_table .= '</table>';
|
||||
|
||||
@@ -75,7 +75,7 @@ class Dinner_table extends Model
|
||||
* @param int $dinner_table_id
|
||||
* @return string
|
||||
*/
|
||||
public function get_name(int $dinner_table_id): string
|
||||
public function get_name(?string $dinner_table_id): string
|
||||
{
|
||||
if (empty($dinner_table_id)) {
|
||||
return '';
|
||||
|
||||
@@ -90,8 +90,8 @@ use Config\OSPOS;
|
||||
File Permissions:<br>
|
||||
» [writable/logs:]
|
||||
<?php $logs = WRITEPATH . 'logs/';
|
||||
$uploads = WRITEPATH . 'uploads/';
|
||||
$images = WRITEPATH . 'uploads/item_pics/';
|
||||
$uploads = FCPATH. 'uploads/';
|
||||
$images = FCPATH. 'uploads/item_pics/';
|
||||
$importCustomers = WRITEPATH . '/uploads/importCustomers.csv'; // TODO: This variable does not follow naming conventions for the project.
|
||||
|
||||
if (is_writable($logs)) {
|
||||
@@ -109,7 +109,7 @@ use Config\OSPOS;
|
||||
clearstatcache();
|
||||
?>
|
||||
<br>
|
||||
» [writable/uploads:]
|
||||
» [public/uploads:]
|
||||
<?php
|
||||
if (is_writable($uploads)) {
|
||||
echo ' - ' . substr(sprintf("%o", fileperms($uploads)), -4) . ' | ' . '<span style="color: green;"> Writable ✓ </span>';
|
||||
@@ -128,7 +128,7 @@ use Config\OSPOS;
|
||||
clearstatcache();
|
||||
?>
|
||||
<br>
|
||||
» [writable/uploads/item_pics:]
|
||||
» [public/uploads/item_pics:]
|
||||
<?php
|
||||
if (is_writable($images)) {
|
||||
echo ' - ' . substr(sprintf("%o", fileperms($images)), -4) . ' | ' . '<span style="color: green;"> Writable ✓ </span>';
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
use App\Models\Employee;
|
||||
use App\Models\Customer;
|
||||
|
||||
$this->dinner_table = model(Dinner_table::class);
|
||||
?>
|
||||
|
||||
<style>
|
||||
@@ -37,7 +37,7 @@ use App\Models\Customer;
|
||||
<td><?= $suspended_sale['doc_id'] ?></td>
|
||||
<td><?= date($config['dateformat'], strtotime($suspended_sale['sale_time'])) ?></td>
|
||||
<?php if ($config['dinner_table_enable']) { ?>
|
||||
<td><?= esc($this->Dinner_table->get_name($suspended_sale['dinner_table_id'])) ?></td>
|
||||
<td><?= esc($this->dinner_table->get_name($suspended_sale['dinner_table_id'])) ?></td>
|
||||
<?php } ?>
|
||||
<td>
|
||||
<?php
|
||||
|
||||
@@ -33,25 +33,23 @@
|
||||
"require": {
|
||||
"ext-intl": "*",
|
||||
"php": "^8.1",
|
||||
"codeigniter4/framework": "4.6.0",
|
||||
"codeigniter4/framework": "4.6.2",
|
||||
"dompdf/dompdf": "^2.0.3",
|
||||
"ezyang/htmlpurifier": "^4.17",
|
||||
"laminas/laminas-escaper": "2.16.0",
|
||||
"laminas/laminas-escaper": "2.17.0",
|
||||
"paragonie/random_compat": "^2.0.21",
|
||||
"picqer/php-barcode-generator": "^2.4.0",
|
||||
"tamtamchik/namecase": "^3.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"codeigniter/coding-standard": "^1.8",
|
||||
"codeigniter4/devkit": "^1.3",
|
||||
"fakerphp/faker": "^1.23.0",
|
||||
"friendsofphp/php-cs-fixer": "^3.47.1",
|
||||
"kint-php/kint": "^5.0.4",
|
||||
"mikey179/vfsstream": "^1.6",
|
||||
"nexusphp/cs-config": "^3.6",
|
||||
"phpunit/phpunit": "^10.5.16 || ^11.2",
|
||||
"predis/predis": "^1.1 || ^2.0",
|
||||
"roave/security-advisories": "dev-latest"
|
||||
"predis/predis": "^1.1 || ^2.0"
|
||||
},
|
||||
"replace": {
|
||||
"psr/log": "*"
|
||||
|
||||
3720
composer.lock
generated
3720
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -1,79 +1,14 @@
|
||||
version: '2.2'
|
||||
|
||||
volumes:
|
||||
uploads:
|
||||
driver: local
|
||||
logs:
|
||||
driver: local
|
||||
mysql:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
app_net:
|
||||
db_net:
|
||||
|
||||
include:
|
||||
- docker-compose.yaml
|
||||
|
||||
services:
|
||||
ospos:
|
||||
image: jekkos/opensourcepos:3.4.1
|
||||
restart: always
|
||||
depends_on:
|
||||
- mysql
|
||||
expose:
|
||||
- "80"
|
||||
networks:
|
||||
- app_net
|
||||
volumes:
|
||||
- uploads:/app/writable/uploads
|
||||
- logs:/app/writable/logs
|
||||
environment:
|
||||
- CI_ENVIRONMENT=${OSPOS_CI_ENV}
|
||||
- FORCE_HTTPS=true
|
||||
- PHP_TIMEZONE=UTC
|
||||
- MYSQL_USERNAME=${OSPOS_MYSQL_USERNAME}
|
||||
- MYSQL_PASSWORD=${OSPOS_MYSQL_PASSWORD}
|
||||
- MYSQL_DB_NAME=ospos
|
||||
- MYSQL_HOST_NAME=mysql
|
||||
|
||||
mysql:
|
||||
image: mariadb:10.5
|
||||
container_name: mysql
|
||||
restart: always
|
||||
expose:
|
||||
- "3306"
|
||||
networks:
|
||||
- db_net
|
||||
volumes:
|
||||
- ./database/database.sql:/docker-entrypoint-initdb.d/database.sql
|
||||
- mysql:/var/lib/mysql:rw
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=${OSPOS_MYSQL_ROOT_PASSWORD}
|
||||
- MYSQL_DATABASE=ospos
|
||||
- MYSQL_USER=${OSPOS_MYSQL_USERNAME}
|
||||
- MYSQL_PASSWORD=${OSPOS_MYSQL_PASSWORD}
|
||||
|
||||
phpmyadmin:
|
||||
image: phpmyadmin/phpmyadmin
|
||||
container_name: phpmyadmin
|
||||
restart: always
|
||||
depends_on:
|
||||
- mysql
|
||||
expose:
|
||||
- "80"
|
||||
networks:
|
||||
- app_net
|
||||
environment:
|
||||
- MYSQL_USERNAME=${OSPOS_MYSQL_USERNAME}
|
||||
- MYSQL_ROOT_PASSWORD=${OSPOS_MYSQL_ROOT_PASSWORD}
|
||||
- PMA_HOST=mysql
|
||||
|
||||
nginx:
|
||||
image: nginx:1.19-alpine
|
||||
container_name: nginx
|
||||
restart: always
|
||||
depends_on:
|
||||
- ospos
|
||||
- phpmyadmin
|
||||
- certbot
|
||||
volumes:
|
||||
- ./docker/data/nginx/nginx.tmpl:/etc/nginx/nginx.tmpl:ro
|
||||
|
||||
@@ -15,7 +15,7 @@ services:
|
||||
networks:
|
||||
- app_net
|
||||
volumes:
|
||||
- uploads:/app/writable/uploads
|
||||
- uploads:/app/public/uploads
|
||||
- logs:/app/writable/logs
|
||||
environment:
|
||||
- CI_ENVIRONMENT=production
|
||||
|
||||
68
package-lock.json
generated
68
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@opensourcepos/opensourcepos",
|
||||
"version": "3.4.1",
|
||||
"version": "3.4.2",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@opensourcepos/opensourcepos",
|
||||
"version": "3.4.1",
|
||||
"version": "3.4.2",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"bootstrap": "^3.4.1",
|
||||
@@ -38,7 +38,7 @@
|
||||
"jquery-ui-dist": "^1.12.1",
|
||||
"jquery-validation": "^1.19.5",
|
||||
"js-cookie": "^2.2.1",
|
||||
"jspdf": "^3.0.1",
|
||||
"jspdf": "^3.0.2",
|
||||
"jspdf-autotable": "^5.0.2",
|
||||
"tableexport.jquery.plugin": "^1.30.0"
|
||||
},
|
||||
@@ -176,6 +176,12 @@
|
||||
"undici-types": "~5.26.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/pako": {
|
||||
"version": "2.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@types/pako/-/pako-2.0.4.tgz",
|
||||
"integrity": "sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/@types/raf": {
|
||||
"version": "3.4.3",
|
||||
"resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz",
|
||||
@@ -539,17 +545,6 @@
|
||||
"node": ">= 10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/atob": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
|
||||
"integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
|
||||
"bin": {
|
||||
"atob": "bin/atob.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 4.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/available-typed-arrays": {
|
||||
"version": "1.0.7",
|
||||
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
|
||||
@@ -794,17 +789,6 @@
|
||||
"base64-js": "^1.1.2"
|
||||
}
|
||||
},
|
||||
"node_modules/btoa": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
|
||||
"integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==",
|
||||
"bin": {
|
||||
"btoa": "bin/btoa.js"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 0.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/buffer": {
|
||||
"version": "6.0.3",
|
||||
"resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
|
||||
@@ -1747,6 +1731,23 @@
|
||||
"fastest-levenshtein": "^1.0.7"
|
||||
}
|
||||
},
|
||||
"node_modules/fast-png": {
|
||||
"version": "6.4.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-png/-/fast-png-6.4.0.tgz",
|
||||
"integrity": "sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@types/pako": "^2.0.3",
|
||||
"iobuffer": "^5.3.2",
|
||||
"pako": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"node_modules/fast-png/node_modules/pako": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz",
|
||||
"integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==",
|
||||
"license": "(MIT AND Zlib)"
|
||||
},
|
||||
"node_modules/fastest-levenshtein": {
|
||||
"version": "1.0.16",
|
||||
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
|
||||
@@ -3237,6 +3238,12 @@
|
||||
"node": ">=10.13.0"
|
||||
}
|
||||
},
|
||||
"node_modules/iobuffer": {
|
||||
"version": "5.4.0",
|
||||
"resolved": "https://registry.npmjs.org/iobuffer/-/iobuffer-5.4.0.tgz",
|
||||
"integrity": "sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/irregular-plurals": {
|
||||
"version": "3.5.0",
|
||||
"resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz",
|
||||
@@ -3729,14 +3736,13 @@
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/jspdf": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/jspdf/-/jspdf-3.0.1.tgz",
|
||||
"integrity": "sha512-qaGIxqxetdoNnFQQXxTKUD9/Z7AloLaw94fFsOiJMxbfYdBbrBuhWmbzI8TVjrw7s3jBY1PFHofBKMV/wZPapg==",
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/jspdf/-/jspdf-3.0.2.tgz",
|
||||
"integrity": "sha512-G0fQDJ5fAm6UW78HG6lNXyq09l0PrA1rpNY5i+ly17Zb1fMMFSmS+3lw4cnrAPGyouv2Y0ylujbY2Ieq3DSlKA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.26.7",
|
||||
"atob": "^2.1.2",
|
||||
"btoa": "^1.2.1",
|
||||
"@babel/runtime": "^7.26.9",
|
||||
"fast-png": "^6.2.0",
|
||||
"fflate": "^0.8.1"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@opensourcepos/opensourcepos",
|
||||
"version": "3.4.1",
|
||||
"description": "Open Source Point of Sale is a web based point of sale system written in the PHP language. It uses MySQL as the data storage back-end and has a simple user interface.",
|
||||
"version": "3.4.2",
|
||||
"description": "pen Source Point of Sale is a web based point of sale system written in the PHP language. It uses MySQL as the data storage back-end and has a simple user interface.",
|
||||
"main": "index.php",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
@@ -59,7 +59,7 @@
|
||||
"jquery-ui-dist": "^1.12.1",
|
||||
"jquery-validation": "^1.19.5",
|
||||
"js-cookie": "^2.2.1",
|
||||
"jspdf": "^3.0.1",
|
||||
"jspdf": "^3.0.2",
|
||||
"jspdf-autotable": "^5.0.2",
|
||||
"tableexport.jquery.plugin": "^1.30.0"
|
||||
},
|
||||
|
||||
@@ -284,7 +284,7 @@
|
||||
return function (resource, response) {
|
||||
var id = response.id !== undefined ? response.id.toString() : "";
|
||||
if (!response.success) {
|
||||
$.notify($.text(response.message).html(), { type: 'danger' });
|
||||
$.notify(response.message, { type: 'danger' });
|
||||
} else {
|
||||
var message = response.message;
|
||||
var selector = rows_selector(response.id);
|
||||
|
||||
Reference in New Issue
Block a user