Compare commits

..

52 Commits

Author SHA1 Message Date
andriux1990
b64a93e483 Merging the postRequisitionComplete and complete functions 2025-01-18 20:58:26 -06:00
andriux1990
7f073bce8f Requisition (transfers) and payment methods in Receivings 2025-01-18 16:39:25 -06:00
jekkos
6ab72ce5c2 Fix for requisitions (#4147) 2025-01-15 23:47:32 +01:00
jekkos
ac90c07c90 Remove support for PHP7.4 for now 2025-01-13 01:13:28 +01:00
jekkos
c81c546286 Remove prepare_decimal and filter_var 2025-01-13 01:13:28 +01:00
Derek Christman
a87b6eebb2 Removed PSR12 reformatting 2025-01-13 01:13:28 +01:00
Derek Christman
487e7dc0bd Revert "Fixed cast to int and inadvertant cast of false to double when parsing locale values to float"
This reverts commit 3e4c987894e3790f671e49398c9db7820bc3378d.
2025-01-13 01:13:28 +01:00
Derek Christman
467144f884 Fixed cast to int and inadvertant cast of false to double when parsing locale values to float 2025-01-13 01:13:28 +01:00
jekkos
2f365dce91 Parse prices directly using numberformatter (#4107) 2025-01-13 01:13:28 +01:00
jekkos
5bee124965 Add php linter (#3708) 2025-01-10 19:15:38 +01:00
jekkos
6195368dfc Fix person suggestion (#4142) 2025-01-06 23:47:48 +01:00
jekkos
deb9d1e65d Fix item kits addition (#4142) 2025-01-06 23:37:07 +01:00
jekkos
b541d473cf Fix requisitions (#4142) 2025-01-06 22:33:32 +01:00
jekkos
ff6ec1bd4e Fix image inclusion in gulp compress (#3916) 2025-01-05 17:41:43 +01:00
khao_lek
6b48078b44 Translated using Weblate (Thai)
Currently translated at 100.0% (55 of 55 strings)

Translation: opensourcepos/receivings
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/receivings/th/
2024-12-31 22:05:15 +01:00
jekkos
3e63b99aef Add reference to unstable in INSTALL.md (#4136) 2024-12-27 00:34:21 +01:00
jekkos
0f3175bc19 Add delete unstable release after push (#4136) 2024-12-27 00:23:32 +01:00
jekkos
ebc923801b Fix gulp compress dir layout (#3916) 2024-12-26 15:58:12 +01:00
jekkos
6128924723 Use github releases for unstable (#2814) 2024-12-22 21:42:08 +01:00
jekkos
3faa48330a Fix category as dropdown save (#4134) 2024-12-22 17:12:47 +01:00
Aril Apria Susanto
86763e460c Translated using Weblate (Indonesian)
Currently translated at 100.0% (38 of 38 strings)

Translation: opensourcepos/item_kits
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/item_kits/id/
2024-12-16 12:46:53 +01:00
Aril Apria Susanto
1463151f64 Translated using Weblate (Indonesian)
Currently translated at 100.0% (222 of 222 strings)

Translation: opensourcepos/sales
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/sales/id/
2024-12-16 12:46:53 +01:00
Aril Apria Susanto
ae83b47b5b Translated using Weblate (Indonesian)
Currently translated at 100.0% (53 of 53 strings)

Translation: opensourcepos/customers
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/customers/id/
2024-12-16 12:46:52 +01:00
Aril Apria Susanto
a925cb3f22 Translated using Weblate (Indonesian)
Currently translated at 100.0% (41 of 41 strings)

Translation: opensourcepos/employees
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/employees/id/
2024-12-16 12:46:52 +01:00
Aril Apria Susanto
564df8aff0 Translated using Weblate (Indonesian)
Currently translated at 100.0% (55 of 55 strings)

Translation: opensourcepos/receivings
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/receivings/id/
2024-12-16 12:46:52 +01:00
Aril Apria Susanto
8aee7350ae Translated using Weblate (Indonesian)
Currently translated at 100.0% (79 of 79 strings)

Translation: opensourcepos/taxes
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/taxes/id/
2024-12-16 12:46:51 +01:00
Aril Apria Susanto
91f1863617 Translated using Weblate (Indonesian)
Currently translated at 100.0% (145 of 145 strings)

Translation: opensourcepos/reports
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/reports/id/
2024-12-16 12:46:51 +01:00
Aril Apria Susanto
ae18737c6b Translated using Weblate (Indonesian)
Currently translated at 100.0% (68 of 68 strings)

Translation: opensourcepos/giftcards
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/giftcards/id/
2024-12-16 12:46:51 +01:00
Aril Apria Susanto
bf6ef090e7 Translated using Weblate (Indonesian)
Currently translated at 100.0% (117 of 117 strings)

Translation: opensourcepos/items
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/items/id/
2024-12-16 12:46:51 +01:00
Aril Apria Susanto
b8883954a4 Translated using Weblate (Indonesian)
Currently translated at 100.0% (21 of 21 strings)

Translation: opensourcepos/suppliers
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/suppliers/id/
2024-12-16 12:46:50 +01:00
Aril Apria Susanto
618c942529 Translated using Weblate (Indonesian)
Currently translated at 100.0% (327 of 327 strings)

Translation: opensourcepos/config
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/config/id/
2024-12-16 12:46:50 +01:00
Munibullah Shah
16d3a8bab1 Translated using Weblate (Urdu)
Currently translated at 5.0% (1 of 20 strings)

Translation: opensourcepos/datepicker
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/datepicker/ur/
2024-12-13 20:37:41 +01:00
Munibullah Shah
8b2d0b5208 Translated using Weblate (Urdu)
Currently translated at 15.7% (35 of 222 strings)

Translation: opensourcepos/sales
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/sales/ur/
2024-12-13 20:37:41 +01:00
Munibullah Shah
e4d5ba70eb Translated using Weblate (Urdu)
Currently translated at 10.6% (5 of 47 strings)

Translation: opensourcepos/expenses
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/expenses/ur/
2024-12-13 20:37:40 +01:00
Munibullah Shah
507b2b3cf3 Translated using Weblate (Urdu)
Currently translated at 17.6% (15 of 85 strings)

Translation: opensourcepos/common
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/common/ur/
2024-12-13 20:37:40 +01:00
Munibullah Shah
a848fbe432 Translated using Weblate (Urdu)
Currently translated at 3.7% (2 of 53 strings)

Translation: opensourcepos/customers
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/customers/ur/
2024-12-13 20:37:40 +01:00
Munibullah Shah
05ec5f2e7a Translated using Weblate (Urdu)
Currently translated at 23.9% (11 of 46 strings)

Translation: opensourcepos/cashups
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/cashups/ur/
2024-12-13 20:37:40 +01:00
Munibullah Shah
4fd1c64c61 Translated using Weblate (Urdu)
Currently translated at 12.5% (1 of 8 strings)

Translation: opensourcepos/bootstrap_tables
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/bootstrap_tables/ur/
2024-12-13 20:37:39 +01:00
Munibullah Shah
55cba0c30d Translated using Weblate (Urdu)
Currently translated at 36.8% (7 of 19 strings)

Translation: opensourcepos/expenses_categories
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/expenses_categories/ur/
2024-12-13 20:37:39 +01:00
Munibullah Shah
ffd957ba2f Translated using Weblate (Urdu)
Currently translated at 100.0% (2 of 2 strings)

Translation: opensourcepos/error
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/error/ur/
2024-12-13 20:37:39 +01:00
objecttothis
aeee79c494 Translated using Weblate (Azerbaijani)
Currently translated at 99.3% (144 of 145 strings)

Translation: opensourcepos/reports
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/reports/az/
2024-12-09 22:53:57 +01:00
odiea
4d65bd6c92 Fix sticky header issue in reports (#3854) 2024-12-05 21:08:59 +01:00
jekkos
248299521b Revert IntlFormatter refactor (#4126) 2024-12-03 00:15:06 +01:00
jekkos
cea8717378 Fix disappearing avatar (#4128) 2024-12-02 00:50:39 +01:00
jekkos
6eade2eed6 Add DigitalOcean credits (#4122) 2024-12-02 00:11:46 +01:00
jekkos
3cac58965a Remove html space in headers (#4125) 2024-11-29 00:25:33 +01:00
jekkos
255968f5ea Remove sticky headers offset (#3854) 2024-11-29 00:19:12 +01:00
jekkos
150210cee3 Add code of conduct 2024-11-15 22:53:10 +01:00
jekkos
6d106d69d2 Use npmv2 deploy (#2834) 2024-11-15 00:13:18 +01:00
jekkos
555a00d385 Apply decimal rule to receivings (#4117) 2024-11-13 23:46:12 +01:00
objecttothis
71d6502929 Use custom rule to account for all locales (#4117)
Signed-off-by: objecttothis <objecttothis@gmail.com>
2024-11-13 23:22:33 +01:00
Ludwittge
46e14a3642 Fixed translation error (#4119) 2024-11-13 23:00:29 +01:00
57 changed files with 2532 additions and 1920 deletions

View File

@@ -0,0 +1,22 @@
name: "Delete Unstable Release"
on:
push:
branches:
- master
jobs:
delete_unstable_release:
runs-on: ubuntu-latest
steps:
- name: "Delete last unstable release"
uses: sgpublic/delete-release-action@v1.2
env:
GITHUB_TOKEN: ${{ secrets.TOKEN }}
with:
release-drop: false
release-drop-tag: false
pre-release-drop: true
pre-release-keep-count: -1
pre-release-drop-tag: true

30
.github/workflows/php-linter.yml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: PHP Linting
on: push
jobs:
phplint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: PHP Lint 8.0
uses: dbfx/github-phplint/8.0@master
with:
folder-to-exclude: "! -path \"./vendor/*\" ! -path \"./folder/excluded/*\""
- name: PHP Lint 8.1
uses: dbfx/github-phplint/8.1@master
with:
folder-to-exclude: "! -path \"./vendor/*\" ! -path \"./folder/excluded/*\""
- name: PHP Lint 8.2
uses: dbfx/github-phplint/8.2@master
with:
folder-to-exclude: "! -path \"./vendor/*\" ! -path \"./folder/excluded/*\""
- name: PHP Lint 8.3
uses: dbfx/github-phplint/8.3@master
with:
folder-to-exclude: "! -path \"./vendor/*\" ! -path \"./folder/excluded/*\""

View File

@@ -2,6 +2,7 @@ sudo: required
branches:
except:
- unstable
- weblate
services:
- docker
@@ -17,6 +18,7 @@ script:
- sed -i "s/commit_sha1 = 'dev'/commit_sha1 = '$rev'/g" app/Config/OSPOS.php
- echo "$version-$branch-$rev"
- npm version "$version-$branch-$rev" --force || true
- sed -i 's/opensourcepos.tar.gz/opensourcepos.$version.tgz/g' package.json
- npm ci && npm install -g gulp && npm run build
- docker build . --target ospos -t ospos
- docker build app/Database/ -t "jekkos/opensourcepos:sql-$TAG"
@@ -32,16 +34,21 @@ after_success:
- mv dist/opensourcepos.tar.gz "dist/opensourcepos.$version.$rev.tgz"
- mv dist/opensourcepos.zip "dist/opensourcepos.$version.$rev.zip"
deploy:
- provider: npm
- provider: releases
edge: true
src: dist/opensourcepos.$version.$rev.tgz
registry: https://npm.pkg.github.com
email: jeroen@steganos.dev
file: dist/opensourcepos.$version.$rev.zip
name: "Unstable OpensourcePos"
overwrite: true
release_notes: "This is a build of the latest master which might contain bugs. Use at your own risk. Check releases section for the latest official release"
prerelease: true
tag_name: unstable
user: jekkos
api_key:
secure: "DNPJOrT51wdO0BAbkX2hKowdXYh7x8d43xvAw7eVfOslyBPiv6Bb/1QdC2Bpnlqe0WiJVS5hvBTMrJ+vSDK5i/l8jA+ZoI6ms1+P1DQ6sBBMBQI2fuvRCrJj+Fp3WnaduZb/N7R+FqdKQwD/ZORyhzJ4whtHkrO8uC7cY/wlacU="
secure: "KOukL8IFf/uL/BjMyCSKjf2vylydjcWqgEx0eMqFCg3nZ4ybMaOwPORRthIfyT72/FvGX/aoxxEn0uR/AEtb+hYQXHmNS+kZdX72JCe8LpGuZ7FJ5X+Eo9mhJcsmS+smd1sC95DySSc/GolKPo+0WtJYONY/xGCLxm+9Ay4HREg="
on:
all_branches: true
branch: master
- provider: releases
edge: true
file: dist/opensourcepos.$version.$rev.zip
@@ -52,8 +59,12 @@ deploy:
user: jekkos
overwrite: true
api_key:
secure: "DNPJOrT51wdO0BAbkX2hKowdXYh7x8d43xvAw7eVfOslyBPiv6Bb/1QdC2Bpnlqe0WiJVS5hvBTMrJ+vSDK5i/l8jA+ZoI6ms1+P1DQ6sBBMBQI2fuvRCrJj+Fp3WnaduZb/N7R+FqdKQwD/ZORyhzJ4whtHkrO8uC7cY/wlacU="
secure: "KOukL8IFf/uL/BjMyCSKjf2vylydjcWqgEx0eMqFCg3nZ4ybMaOwPORRthIfyT72/FvGX/aoxxEn0uR/AEtb+hYQXHmNS+kZdX72JCe8LpGuZ7FJ5X+Eo9mhJcsmS+smd1sC95DySSc/GolKPo+0WtJYONY/xGCLxm+9Ay4HREg="
branches:
except:
- unstable
- /unstable.*/
on:
tags: true
branch: master

98
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,98 @@
Contributor Covenant Code of Conduct
Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official email address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[INSERT CONTACT METHOD].
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
1. Correction
Community Impact: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
Consequence: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
2. Warning
Community Impact: A violation through a single incident or series of
actions.
Consequence: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
3. Temporary Ban
Community Impact: A serious violation of community standards, including
sustained inappropriate behavior.
Consequence: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
4. Permanent Ban
Community Impact: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
Consequence: A permanent ban from any sort of public interaction within the
community.
Attribution
This Code of Conduct is adapted from the Contributor Covenant,
version 2.1, available at
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
Community Impact Guidelines were inspired by
Mozillas code of conduct enforcement ladder.
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.

View File

@@ -1,6 +1,6 @@
## Server Requirements
- PHP version `7.4` is supported, PHP version `≤7.3` is NOT supported. Please note that PHP needs to have the extensions `php-gd`, `php-bcmath`, `php-intl`, `php-openssl`, `php-mbstring` , `php-curl` and `php-xml` installed and enabled. PHP version `8.x` is only supported by the code that is still under development in master branch.
- PHP version `7.4` is supported, PHP version `≤7.3` is NOT supported. Please note that PHP needs to have the extensions `php-gd`, `php-bcmath`, `php-intl`, `php-openssl`, `php-mbstring` , `php-curl` and `php-xml` installed and enabled. PHP version `8.x` is only supported by the code that is still under development in master branch. An unstable build can be downloaded in the releases section.
- MySQL `5.6` and `5.7` are supported, also MariaDB replacement `10.x` is supported and might offer better performance.
- Apache `2.4` is supported. Nginx should work fine too, see [wiki page here](https://github.com/opensourcepos/opensourcepos/wiki/Local-Deployment-using-LEMP).
- Raspberry PI based installations proved to work, see [wiki page here](<https://github.com/opensourcepos/opensourcepos/wiki/Installing-on-Raspberry-PI---Orange-PI-(Headless-OSPOS)>).

View File

@@ -137,7 +137,7 @@ Any person or company found breaching the license agreement might find a bunch o
## 🙏 Credits
| <div align="center">JetBrains</div> | <div align="center">Travis CI</div> |
|--- | --- |
| <div align="center"><a href="https://www.jetbrains.com/idea/" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/assets/12870258/187f9bbe-4484-475c-9b58-5e5d5f931f09" alt="IntelliJ IDEA Logo" height="50"></a></div> | <div align="center"><a href="https://www.travis-ci.com/" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/assets/12870258/71cc2b44-83af-4510-a543-6358285f43c6" alt="Travis CI Logo" height="50"></a></div> |
| Many thanks to [JetBrains](https://www.jetbrains.com/) for providing a free license of [IntelliJ IDEA](https://www.jetbrains.com/idea/) to kindly support the development of OSPOS. | Many thanks to [Travis CI](https://www.travis-ci.com/) for providing a free continuous integration service for open source projects. |
| <div align="center">DigitalOcean</div> | <div align="center">JetBrains</div> | <div align="center">Travis CI</div> |
|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --- | --- |
| <div align="center"><a href="https://www.digitalocean.com?utm_medium=opensource&utm_source=opensourcepos" target="_blank"><img src="https://opensource.nyc3.cdn.digitaloceanspaces.com/attribution/assets/SVG/DO_Logo_horizontal_blue.svg" alt="DigitalOcean Logo" height="50"></a></div> | <div align="center"><a href="https://www.jetbrains.com/idea/" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/assets/12870258/187f9bbe-4484-475c-9b58-5e5d5f931f09" alt="IntelliJ IDEA Logo" height="50"></a></div> | <div align="center"><a href="https://www.travis-ci.com/" target="_blank"><img src="https://github.com/opensourcepos/opensourcepos/assets/12870258/71cc2b44-83af-4510-a543-6358285f43c6" alt="Travis CI Logo" height="50"></a></div> |
| Many thanks to [Digital Ocean](https://www.digitalocean.com) for providing the project with hosting credits | Many thanks to [JetBrains](https://www.jetbrains.com/) for providing a free license of [IntelliJ IDEA](https://www.jetbrains.com/idea/) to kindly support the development of OSPOS. | Many thanks to [Travis CI](https://www.travis-ci.com/) for providing a free continuous integration service for open source projects. |

View File

@@ -140,7 +140,6 @@ class OSPOSRules
*/
public function decimal_locale(string $candidate, ?string &$error = null): bool
{
$candidate = prepare_decimal($candidate);
$validation = Services::validation();
$validation->setRules([

View File

@@ -228,24 +228,16 @@ class Cashups extends Secure_Controller
$close_date = $this->request->getPost('close_date');
$close_date_formatter = date_create_from_format($this->config['dateformat'] . ' ' . $this->config['timeformat'], $close_date);
$open_amount_cash = prepare_decimal($this->request->getPost('open_amount_cash'));
$transfer_amount_cash = prepare_decimal($this->request->getPost('transfer_amount_cash'));
$closed_amount_cash = prepare_decimal($this->request->getPost('closed_amount_cash'));
$closed_amount_due = prepare_decimal($this->request->getPost('closed_amount_due'));
$closed_amount_card = prepare_decimal($this->request->getPost('closed_amount_card'));
$closed_amount_check = prepare_decimal($this->request->getPost('closed_amount_check'));
$closed_amount_total = prepare_decimal($this->request->getPost('closed_amount_total'));
$cash_up_data = [
'open_date' => $open_date_formatter->format('Y-m-d H:i:s'),
'close_date' => $close_date_formatter->format('Y-m-d H:i:s'),
'open_amount_cash' => parse_decimals(filter_var($open_amount_cash, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),
'transfer_amount_cash' => parse_decimals(filter_var($transfer_amount_cash, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),
'closed_amount_cash' => parse_decimals(filter_var($closed_amount_cash, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),
'closed_amount_due' => parse_decimals(filter_var($closed_amount_due, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),
'closed_amount_card' => parse_decimals(filter_var($closed_amount_card, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),
'closed_amount_check' => parse_decimals(filter_var($closed_amount_check, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),
'closed_amount_total' => parse_decimals(filter_var($closed_amount_total, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),
'open_amount_cash' => parse_decimals($this->request->getPost('open_amount_cash')),
'transfer_amount_cash' => parse_decimals($this->request->getPost('transfer_amount_cash')),
'closed_amount_cash' => parse_decimals($this->request->getPost('closed_amount_cash')),
'closed_amount_due' => parse_decimals($this->request->getPost('closed_amount_due')),
'closed_amount_card' => parse_decimals($this->request->getPost('closed_amount_card')),
'closed_amount_check' => parse_decimals($this->request->getPost('closed_amount_check')),
'closed_amount_total' => parse_decimals($this->request->getPost('closed_amount_total')),
'note' => $this->request->getPost('note') != null,
'description' => $this->request->getPost('description', FILTER_SANITIZE_FULL_SPECIAL_CHARS),
'open_employee_id' => $this->request->getPost('open_employee_id', FILTER_SANITIZE_NUMBER_INT),
@@ -296,19 +288,12 @@ class Cashups extends Secure_Controller
*/
public function ajax_cashup_total(): void
{
$raw_open_amount_cash = $this->request->getPost('open_amount_cash');
$raw_transfer_amount_cash = $this->request->getPost('transfer_amount_cash');
$raw_closed_amount_cash = $this->request->getPost('closed_amount_cash');
$raw_closed_amount_due = $this->request->getPost('closed_amount_due');
$raw_closed_amount_card = $this->request->getPost('closed_amount_card');
$raw_closed_amount_check = $this->request->getPost('closed_amount_check');
$open_amount_cash = parse_decimals(filter_var(prepare_decimal($raw_open_amount_cash), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$transfer_amount_cash = parse_decimals(filter_var(prepare_decimal($raw_transfer_amount_cash), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$closed_amount_cash = parse_decimals(filter_var(prepare_decimal($raw_closed_amount_cash), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$closed_amount_due = parse_decimals(filter_var(prepare_decimal($raw_closed_amount_due), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$closed_amount_card = parse_decimals(filter_var(prepare_decimal($raw_closed_amount_card), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$closed_amount_check = parse_decimals(filter_var(prepare_decimal($raw_closed_amount_check), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$open_amount_cash = parse_decimals($this->request->getPost('open_amount_cash'));
$transfer_amount_cash = parse_decimals($this->request->getPost('transfer_amount_cash'));
$closed_amount_cash = parse_decimals($this->request->getPost('closed_amount_cash'));
$closed_amount_due = parse_decimals($this->request->getPost('closed_amount_due'));
$closed_amount_card = parse_decimals($this->request->getPost('closed_amount_card'));
$closed_amount_check = parse_decimals($this->request->getPost('closed_amount_check'));
$total = $this->_calculate_total($open_amount_cash, $transfer_amount_cash, $closed_amount_due, $closed_amount_cash, $closed_amount_card, $closed_amount_check); //TODO: hungarian notation

View File

@@ -360,16 +360,13 @@ class Config extends Secure_Controller
*/
public function postSaveGeneral(): void
{
$default_sales_discount = prepare_decimal($this->request->getPost('default_sales_discount'));
$default_receivings_discount = prepare_decimal($this->request->getPost('default_receivings_discount'));
$batch_save_data = [
'theme' => $this->request->getPost('theme'),
'login_form' => $this->request->getPost('login_form'),
'default_sales_discount_type' => $this->request->getPost('default_sales_discount_type') != null,
'default_sales_discount' => filter_var($default_sales_discount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION),
'default_sales_discount' => parse_decimals($this->request->getPost('default_sales_discount')),
'default_receivings_discount_type' => $this->request->getPost('default_receivings_discount_type') != null,
'default_receivings_discount' => filter_var($default_receivings_discount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION),
'default_receivings_discount' => parse_decimals($this->request->getPost('default_receivings_discount')),
'enforce_privacy' => $this->request->getPost('enforce_privacy') != null,
'receiving_calculate_average_price' => $this->request->getPost('receiving_calculate_average_price') != null,
'lines_per_page' => $this->request->getPost('lines_per_page', FILTER_SANITIZE_NUMBER_INT),
@@ -772,8 +769,8 @@ class Config extends Secure_Controller
*/
public function postSaveTax(): void
{
$default_tax_1_rate = prepare_decimal($this->request->getPost('default_tax_1_rate'));
$default_tax_2_rate = prepare_decimal($this->request->getPost('default_tax_2_rate'));
$default_tax_1_rate = $this->request->getPost('default_tax_1_rate');
$default_tax_2_rate = $this->request->getPost('default_tax_2_rate');
$batch_save_data = [
'default_tax_1_rate' => parse_tax(filter_var($default_tax_1_rate, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),

View File

@@ -286,14 +286,12 @@ class Customers extends Persons
$date_formatter = date_create_from_format($this->config['dateformat'] . ' ' . $this->config['timeformat'], $this->request->getPost('date'));
$discount = prepare_decimal($this->request->getPost('discount'));
$customer_data = [
'consent' => $this->request->getPost('consent') != null,
'account_number' => $this->request->getPost('account_number') == '' ? null : $this->request->getPost('account_number'),
'tax_id' => $this->request->getPost('tax_id'),
'company_name' => $this->request->getPost('company_name') == '' ? null : $this->request->getPost('company_name'),
'discount' => $this->request->getPost('discount') == '' ? 0.00 : filter_var($discount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION),
'discount' => $this->request->getPost('discount') == '' ? 0.00 : parse_decimals($this->request->getPost('discount')),
'discount_type' => $this->request->getPost('discount_type') == null ? PERCENT : $this->request->getPost('discount_type', FILTER_SANITIZE_NUMBER_INT),
'package_id' => $this->request->getPost('package_id') == '' ? null : $this->request->getPost('package_id'),
'taxable' => $this->request->getPost('taxable') != null,

View File

@@ -158,15 +158,13 @@ class Expenses extends Secure_Controller
$newdate = $this->request->getPost('date', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$date_formatter = date_create_from_format($config['dateformat'] . ' ' . $config['timeformat'], $newdate);
$amount = prepare_decimal($this->request->getPost('amount'));
$tax_amount = prepare_decimal($this->request->getPost('tax_amount'));
$expense_data = [
'date' => $date_formatter->format('Y-m-d H:i:s'),
'supplier_id' => $this->request->getPost('supplier_id') == '' ? null : $this->request->getPost('supplier_id', FILTER_SANITIZE_NUMBER_INT),
'supplier_tax_code' => $this->request->getPost('supplier_tax_code', FILTER_SANITIZE_FULL_SPECIAL_CHARS),
'amount' => filter_var($amount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION),
'tax_amount' => filter_var($tax_amount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION),
'amount' => parse_decimals($this->request->getPost('amount')),
'tax_amount' => parse_decimals($this->request->getPost('tax_amount')),
'payment_type' => $this->request->getPost('payment_type', FILTER_SANITIZE_FULL_SPECIAL_CHARS),
'expense_category_id' => $this->request->getPost('expense_category_id', FILTER_SANITIZE_NUMBER_INT),
'description' => $this->request->getPost('description', FILTER_SANITIZE_FULL_SPECIAL_CHARS),

View File

@@ -120,17 +120,16 @@ class Giftcards extends Secure_Controller
public function postSave(int $giftcard_id = NEW_ENTRY): void
{
$giftcard_number = $this->request->getPost('giftcard_number', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$giftcard_amount = prepare_decimal($this->request->getPost('giftcard_amount'));
if($giftcard_id == NEW_ENTRY && trim($giftcard_number) == '')
{
$giftcard_number = $this->giftcard->generate_unique_giftcard_name(filter_var($giftcard_amount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$giftcard_number = $this->giftcard->generate_unique_giftcard_name($giftcard_number);
}
$giftcard_data = [
'record_time' => date('Y-m-d H:i:s'),
'giftcard_number' => $giftcard_number,
'value' => filter_var($giftcard_amount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION),
'value' => parse_decimals($this->request->getPost('giftcard_amount')),
'person_id' => $this->request->getPost('person_id') == '' ? null : $this->request->getPost('person_id', FILTER_SANITIZE_NUMBER_INT)
];

View File

@@ -169,13 +169,11 @@ class Item_kits extends Secure_Controller
*/
public function postSave(int $item_kit_id = NEW_ENTRY): void
{
$kit_discount = prepare_decimal($this->request->getPost('kit_discount'));
$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')),
'kit_discount' => filter_var($kit_discount,FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION),
'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')),
'print_option' => $this->request->getPost('print_option') === null ? PRINT_ALL : intval($this->request->getPost('print_option')),

View File

@@ -195,7 +195,7 @@ class Items extends Secure_Controller
*/
public function getSuggest(): void
{
$search = $this->request->getPost('term');
$search = $this->request->getGet('term');
$suggestions = $this->item->get_search_suggestions($search, ['search_custom' => false, 'is_deleted' => false], true);
echo json_encode($suggestions);
@@ -205,9 +205,9 @@ class Items extends Secure_Controller
* @return void
* @noinspection PhpUnused
*/
public function suggest_low_sell(): void
public function getSuggestLowSell(): void
{
$suggestions = $this->item->get_low_sell_suggestions($this->request->getPostGet('name'));
$suggestions = $this->item->get_low_sell_suggestions($this->request->getPo1stGet('name'));
echo json_encode($suggestions);
}
@@ -631,9 +631,9 @@ class Items extends Secure_Controller
$upload_data = $this->upload_image();
$upload_success = empty($upload_data['error']);
$raw_receiving_quantity = prepare_decimal($this->request->getPost('receiving_quantity'));
$raw_receiving_quantity = $this->request->getPost('receiving_quantity');
$receiving_quantity = parse_quantity(filter_var($raw_receiving_quantity, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$receiving_quantity = parse_quantity($raw_receiving_quantity);
$item_type = $this->request->getPost('item_type') === null ? ITEM : intval($this->request->getPost('item_type'));
if($receiving_quantity === 0.0 && $item_type !== ITEM_TEMP)
@@ -643,10 +643,10 @@ class Items extends Secure_Controller
$default_pack_name = lang('Items.default_pack_name');
$cost_price = prepare_decimal($this->request->getPost('cost_price'));
$unit_price = prepare_decimal($this->request->getPost('unit_price'));
$reorder_level = prepare_decimal($this->request->getPost('reorder_level'));
$qty_per_pack = prepare_decimal($this->request->getPost('qty_per_pack') ?? '');
$cost_price = parse_decimals($this->request->getPost('cost_price'));
$unit_price = parse_decimals($this->request->getPost('unit_price'));
$reorder_level = parse_quantity($this->request->getPost('reorder_level'));
$qty_per_pack = parse_quantity($this->request->getPost('qty_per_pack') ?? '');
//Save item data
$item_data = [
@@ -657,13 +657,13 @@ class Items extends Secure_Controller
'stock_type' => $this->request->getPost('stock_type') === null ? HAS_STOCK : intval($this->request->getPost('stock_type')),
'supplier_id' => empty($this->request->getPost('supplier_id')) ? null : intval($this->request->getPost('supplier_id')),
'item_number' => empty($this->request->getPost('item_number')) ? null : $this->request->getPost('item_number'),
'cost_price' => parse_decimals(filter_var($cost_price, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),
'unit_price' => parse_decimals(filter_var($unit_price, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),
'reorder_level' => parse_quantity(filter_var($reorder_level, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),
'cost_price' => $cost_price,
'unit_price' => $unit_price,
'reorder_level' => $reorder_level,
'receiving_quantity' => $receiving_quantity,
'allow_alt_description' => $this->request->getPost('allow_alt_description') != null,
'is_serialized' => $this->request->getPost('is_serialized') != null,
'qty_per_pack' => $this->request->getPost('qty_per_pack') == null ? 1 : parse_quantity(filter_var($qty_per_pack, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)),
'qty_per_pack' => $this->request->getPost('qty_per_pack') == null ? 1 : parse_quantity($qty_per_pack),
'pack_name' => $this->request->getPost('pack_name') == null ? $default_pack_name : $this->request->getPost('pack_name'),
'low_sell_item_id' => $this->request->getPost('low_sell_item_id') === null ? $item_id : intval($this->request->getPost('low_sell_item_id')),
'deleted' => $this->request->getPost('is_deleted') != null,
@@ -688,9 +688,9 @@ class Items extends Secure_Controller
$item_data['tax_category_id'] = empty($this->request->getPost('tax_category_id')) ? null : intval($this->request->getPost('tax_category_id'));
}
$item_data['pic_filename'] = !empty($upload_data['orig_name']) && $upload_data['raw_name']
? $upload_data['raw_name'] . '.' . $upload_data['file_ext']
: null;
if (!empty($upload_data['orig_name']) && $upload_data['raw_name']) {
$item_data['pic_filename'] = $upload_data['raw_name'] . '.' . $upload_data['file_ext'];
}
$employee_id = $this->employee->get_logged_in_employee_info()->person_id;
@@ -733,8 +733,7 @@ class Items extends Secure_Controller
$stock_locations = $this->stock_location->get_undeleted_all()->getResultArray();
foreach($stock_locations as $location)
{
$stock_quantity = prepare_decimal($this->request->getPost('quantity_' . $location['location_id']));
$updated_quantity = parse_quantity(filter_var($stock_quantity, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$updated_quantity = parse_quantity($this->request->getPost('quantity_' . $location['location_id']));
if($item_data['item_type'] == ITEM_TEMP)
{
@@ -887,14 +886,14 @@ class Items extends Secure_Controller
$employee_id = $this->employee->get_logged_in_employee_info()->person_id;
$cur_item_info = $this->item->get_info($item_id);
$location_id = $this->request->getPost('stock_location');
$new_quantity = prepare_decimal($this->request->getPost('newquantity'));
$new_quantity = $this->request->getPost('newquantity');
$inv_data = [
'trans_date' => date('Y-m-d H:i:s'),
'trans_items' => $item_id,
'trans_user' => $employee_id,
'trans_location' => $location_id,
'trans_comment' => $this->request->getPost('trans_comment'),
'trans_inventory' => parse_quantity(filter_var($new_quantity, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION))
'trans_inventory' => parse_quantity($new_quantity)
];
$this->inventory->insert($inv_data, false);
@@ -1447,7 +1446,7 @@ class Items extends Secure_Controller
$attributeId = $attributeValue;
break;
case DECIMAL:
$attributeValue = prepare_decimal($attributeValue);
$attributeValue = parse_decimals($attributeValue);
//Fall through to save the attribute value
default:
$attributeId = $this->attribute->saveAttributeValue($attributeValue, $definitionId, $itemId, $attributeIds[$definitionId], $definitionType);

View File

@@ -35,7 +35,7 @@ abstract class Persons extends Secure_Controller
*/
public function getSuggest(): void
{
$search = $this->request->getPost('term');
$search = $this->request->getGet('term');
$suggestions = $this->person->get_search_suggestions($search);
echo json_encode($suggestions);

View File

@@ -206,24 +206,24 @@ class Receivings extends Secure_Controller
$data = [];
$validation_rule = [
'price' => 'trim|required|numeric',
'quantity' => 'trim|required|numeric',
'discount' => 'trim|required|numeric',
'price' => 'trim|required|decimal_locale',
'quantity' => 'trim|required|decimal_locale',
'discount' => 'trim|permit_empty|decimal_locale',
];
$raw_price = prepare_decimal($this->request->getPost('price'));
$raw_quantity = prepare_decimal($this->request->getPost('quantity'));
$raw_discount = prepare_decimal($this->request->getPost('discount'));
$raw_receiving_quantity = prepare_decimal($this->request->getPost('receiving_quantity'));
$price = parse_decimals($this->request->getPost('price'));
$quantity = parse_quantity($this->request->getPost('quantity'));
$discount = parse_decimals($this->request->getPost('discount'));
$raw_receiving_quantity = parse_quantity($this->request->getPost('receiving_quantity'));
$description = $this->request->getPost('description', FILTER_SANITIZE_FULL_SPECIAL_CHARS); //TODO: Duplicated code
$serialnumber = $this->request->getPost('serialnumber', FILTER_SANITIZE_FULL_SPECIAL_CHARS) ?? '';
$price = filter_var($raw_price, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$quantity = filter_var($raw_quantity, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$price = filter_var($price, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$quantity = filter_var($quantity, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$discount_type = $this->request->getPost('discount_type', FILTER_SANITIZE_NUMBER_INT);
$discount = $discount_type
? parse_quantity(filter_var($raw_discount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION))
: parse_decimals(filter_var($raw_discount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
? parse_quantity(filter_var($this->request->getPost('discount'), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION))
: parse_decimals(filter_var($this->request->getPost('discount'), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$receiving_quantity = filter_var($raw_receiving_quantity, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
@@ -266,6 +266,7 @@ class Receivings extends Secure_Controller
$data['selected_supplier_name'] = !empty($receiving_info['supplier_id']) ? $receiving_info['company_name'] : '';
$data['selected_supplier_id'] = $receiving_info['supplier_id'];
$data['receiving_info'] = $receiving_info;
$balance_due = round($receiving_info['amount_due'] - $receiving_info['amount_tendered'] + $receiving_info['cash_refund'], totals_decimals(), PHP_ROUND_HALF_UP);
echo view('receivings/form', $data);
}
@@ -327,22 +328,26 @@ class Receivings extends Secure_Controller
*/
public function postComplete(): void
{
$amount_tendered = prepare_decimal($this->request->getPost('amount_tendered'));
$amount_tendered = parse_decimals($this->request->getPost('amount_tendered'));
$data = [];
$data['cart'] = $this->receiving_lib->get_cart();
$data['total'] = $this->receiving_lib->get_total();
$data['transaction_time'] = to_datetime(time());
$data['transaction_time'] = date('Y-m-d H:i:s'); // Fecha y hora actuales
$data['mode'] = $this->receiving_lib->get_mode();
$data['comment'] = $this->receiving_lib->get_comment();
$data['reference'] = $this->receiving_lib->get_reference();
$data['term_days'] = $this->receiving_lib->get_term_days();
$data['payment_type'] = $this->request->getPost('payment_type', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$data['payments'] = $this->receiving_lib->get_payments(); // Obtener pagos del carrito
$data['show_stock_locations'] = $this->stock_location->show_locations('receivings');
$data['stock_location'] = $this->receiving_lib->get_stock_source();
if($this->request->getPost('amount_tendered') != null)
{
if ($this->request->getPost('amount_tendered') != null) {
$data['amount_tendered'] = filter_var($amount_tendered, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$data['amount_change'] = to_currency($data['amount_tendered'] - $data['total']);
$data['amount_change'] = $data['amount_tendered'] - $data['total'];
} else {
$data['amount_change'] = 0;
}
$employee_id = $this->employee->get_logged_in_employee_info()->person_id;
@@ -350,40 +355,62 @@ class Receivings extends Secure_Controller
$data['employee'] = $employee_info->first_name . ' ' . $employee_info->last_name;
$supplier_id = $this->receiving_lib->get_supplier();
if($supplier_id != -1)
{
if ($supplier_id != -1) {
$supplier_info = $this->supplier->get_info($supplier_id);
$data['supplier'] = $supplier_info->company_name; //TODO: duplicated code
$data['supplier'] = $supplier_info->company_name;
$data['first_name'] = $supplier_info->first_name;
$data['last_name'] = $supplier_info->last_name;
$data['supplier_email'] = $supplier_info->email;
$data['supplier_address'] = $supplier_info->address_1;
if(!empty($supplier_info->zip) or !empty($supplier_info->city))
{
if (!empty($supplier_info->zip) || !empty($supplier_info->city)) {
$data['supplier_location'] = $supplier_info->zip . ' ' . $supplier_info->city;
}
else
{
} else {
$data['supplier_location'] = '';
}
}
//SAVE receiving to database
$data['receiving_id'] = 'RECV ' . $this->receiving->save_value($data['cart'], $supplier_id, $employee_id, $data['comment'], $data['reference'], $data['payment_type'], $data['stock_location']);
// Guardar el registro de compra en la base de datos
$receiving_id = $this->receiving->save_value(
$data['cart'],
$supplier_id,
$employee_id,
$data['comment'],
$data['reference'],
$data['term_days'],
$data['payment_type']
);
if($data['receiving_id'] == 'RECV -1')
{
if ($receiving_id == -1) {
$data['error_message'] = lang('Receivings.transaction_failed');
}
else
{
$data['barcode'] = $this->barcode_lib->generate_receipt_barcode($data['receiving_id']);
} else {
$data['receiving_id'] = $receiving_id;
// Calcular el cambio (cash_refund)
$total_payments = array_sum(array_column($data['payments'], 'payment_amount'));
$cash_refund = max(0, $total_payments - $data['total']);
// Guardar los pagos en la base de datos
foreach ($data['payments'] as $payment) {
$this->receiving->save_payment([
'receiving_id' => $receiving_id, // Utiliza el ID generado
'payment_type' => $payment['payment_type'],
'payment_amount' => $payment['payment_amount'],
'cash_refund' => ($payment['payment_type'] === lang('Sales.cash')) ? $cash_refund : 0,
'employee_id' => $employee_id,
'payment_time' => $data['transaction_time'], // Fecha y hora actuales
]);
}
$data['barcode'] = $this->barcode_lib->generate_receipt_barcode($receiving_id);
}
$data['print_after_sale'] = $this->receiving_lib->is_print_after_sale();
echo view("receivings/receipt",$data);
echo view("receivings/receipt", $data);
// Limpiar pagos y otros datos
$this->receiving_lib->clear_payments(); // Limpia los pagos
$this->receiving_lib->clear_all();
}
@@ -395,23 +422,58 @@ class Receivings extends Secure_Controller
*/
public function postRequisitionComplete(): void
{
if($this->receiving_lib->get_stock_source() != $this->receiving_lib->get_stock_destination())
{
foreach($this->receiving_lib->get_cart() as $item)
{
$this->receiving_lib->delete_item($item['line']);
$this->receiving_lib->add_item($item['item_id'], $item['quantity'], $this->receiving_lib->get_stock_destination(), $item['discount_type']);
$this->receiving_lib->add_item($item['item_id'], -$item['quantity'], $this->receiving_lib->get_stock_source(), $item['discount_type']);
}
$data = [];
$this->complete();
}
else
{
$data['error'] = lang('Receivings.error_requisition');
// Check if stock locations are different
if ($this->receiving_lib->get_stock_source() != $this->receiving_lib->get_stock_destination()) {
// Process items in the cart
foreach ($this->receiving_lib->get_cart() as $item) {
$this->receiving_lib->delete_item($item['line']);
$this->receiving_lib->add_item($item['item_id'], $item['quantity'], $this->receiving_lib->get_stock_destination(), $item['discount_type']);
$this->receiving_lib->add_item($item['item_id'], -$item['quantity'], $this->receiving_lib->get_stock_source(), $item['discount_type']);
}
$this->_reload($data); //TODO: Hungarian notation
}
// Prepare data to complete the requisition
$data['cart'] = $this->receiving_lib->get_cart();
$data['total'] = $this->receiving_lib->get_total();
$data['transaction_time'] = to_datetime(time());
$data['mode'] = $this->receiving_lib->get_mode();
$data['comment'] = $this->receiving_lib->get_comment();
$data['term_days'] = $this->receiving_lib->get_term_days();
$data['reference'] = $this->receiving_lib->get_reference();
$data['show_stock_locations'] = $this->stock_location->show_locations('receivings');
$data['stock_location_source'] = $this->receiving_lib->get_stock_source();
$data['stock_location_destination'] = $this->receiving_lib->get_stock_destination();
$employee_id = $this->employee->get_logged_in_employee_info()->person_id;
$employee_info = $this->employee->get_info($employee_id);
$data['employee'] = $employee_info->first_name . ' ' . $employee_info->last_name;
// Save the requisition in the database
$data['receiving_id'] = 'REQ ' . $this->receiving->save_requisition(
$data['cart'],
$employee_id,
$data['comment'],
$data['reference'],
$data['stock_location_source'],
$data['stock_location_destination']
);
if ($data['receiving_id'] == 'REQ -1') {
$data['error_message'] = lang('Receivings.transaction_failed');
} else {
$data['barcode'] = $this->barcode_lib->generate_receipt_barcode($data['receiving_id']);
}
$data['print_after_sale'] = $this->receiving_lib->is_print_after_sale();
echo view("receivings/receipt", $data);
$this->receiving_lib->clear_all();
} else {
$data['error'] = lang('Receivings.error_requisition');
$this->_reload($data);
}
}
/**
@@ -467,7 +529,7 @@ class Receivings extends Secure_Controller
* @param array $data
* @return void
*/
private function _reload(array $data = []): void //TODO: Hungarian notation
private function _reload(array $data = []): void
{
$data['cart'] = $this->receiving_lib->get_cart();
$data['modes'] = ['receive' => lang('Receivings.receiving'), 'return' => lang('Receivings.return')];
@@ -484,15 +546,26 @@ class Receivings extends Secure_Controller
$data['total'] = $this->receiving_lib->get_total();
$data['items_module_allowed'] = $this->employee->has_grant('items', $this->employee->get_logged_in_employee_info()->person_id);
$data['comment'] = $this->receiving_lib->get_comment();
$data['term_days'] = $this->receiving_lib->get_term_days();
$data['reference'] = $this->receiving_lib->get_reference();
$data['payment_options'] = $this->receiving->get_payment_options();
$data['selected_payment_type'] = $this->receiving_lib->get_payment_type();
$data['amount_due'] = $this->receiving_lib->get_total() - $this->receiving_lib->get_payments_total();
// Agregar pagos al arreglo de datos
$data['payments'] = $this->receiving_lib->get_payments();
// Inicializar tabindex
$data['tabindex'] = 0;
$supplier_id = $this->receiving_lib->get_supplier();
if($supplier_id != -1) //TODO: Duplicated Code... replace -1 with a constant
if($supplier_id != -1)
{
$supplier_info = $this->supplier->get_info($supplier_id);
$data['supplier'] = $supplier_info->company_name;
$data['avatar'] = $supplier_info->avatar;
$data['gender'] = $supplier_info->gender;
$data['first_name'] = $supplier_info->first_name;
$data['last_name'] = $supplier_info->last_name;
$data['supplier_email'] = $supplier_info->email;
@@ -515,9 +588,9 @@ class Receivings extends Secure_Controller
/**
* @throws ReflectionException
*/
public function save(int $receiving_id = -1): void //TODO: Replace -1 with a constant
public function save(int $receiving_id = -1): void
{
$newdate = $this->request->getPost('date', FILTER_SANITIZE_FULL_SPECIAL_CHARS); //TODO: newdate does not follow naming conventions
$newdate = $this->request->getPost('date', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$date_formatter = date_create_from_format($this->config['dateformat'] . ' ' . $this->config['timeformat'], $newdate);
$receiving_time = $date_formatter->format('Y-m-d H:i:s');
@@ -557,8 +630,77 @@ class Receivings extends Secure_Controller
*/
public function postCancelReceiving(): void
{
// Limpiar los pagos
$this->receiving_lib->clear_payments();
// Limpiar todos los datos relacionados con la transacción
$this->receiving_lib->clear_all();
$this->_reload(); //TODO: Hungarian Notation
// Recargar la vista
$this->_reload();
}
public function postAddPayment(): void
{
$data = [];
$payment_type = $this->request->getPost('payment_type', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
// Validar el tipo de pago
if ($payment_type !== lang('Sales.giftcard')) {
$rules = ['amount_tendered' => 'trim|required|decimal_locale'];
$messages = ['amount_tendered' => lang('Sales.must_enter_numeric')];
} else {
$rules = ['amount_tendered' => 'trim|required'];
$messages = ['amount_tendered' => lang('Sales.must_enter_numeric_giftcard')];
}
if (!$this->validate($rules, $messages)) {
$data['error'] = $payment_type === lang('Sales.giftcard')
? lang('Sales.must_enter_numeric_giftcard')
: lang('Sales.must_enter_numeric');
} else {
if ($payment_type === lang('Sales.giftcard')) {
$amount_tendered = parse_decimals($this->request->getPost('amount_tendered'));
$giftcard_num = filter_var($amount_tendered, FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_FLAG_ALLOW_FRACTION);
$payments = $this->receiving_lib->get_payments();
$payment_type = $payment_type . ':' . $giftcard_num;
$current_payments_with_giftcard = isset($payments[$payment_type]) ? $payments[$payment_type]['payment_amount'] : 0;
$giftcard = model(Giftcard::class);
$cur_giftcard_value = $giftcard->get_giftcard_value($giftcard_num);
if (($cur_giftcard_value - $current_payments_with_giftcard) <= 0) {
$data['error'] = lang('Giftcards.remaining_balance', [$giftcard_num, $cur_giftcard_value]);
} else {
$amount_tendered = min($this->receiving_lib->get_amount_due(), $cur_giftcard_value);
$this->receiving_lib->add_payment($payment_type, $amount_tendered);
}
} elseif ($payment_type === lang('Sales.cash')) {
$raw_amount_tendered = parse_decimals($this->request->getPost('amount_tendered'));
$amount_tendered = filter_var($raw_amount_tendered, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$this->receiving_lib->add_payment($payment_type, $amount_tendered);
} else {
$raw_amount_tendered = parse_decimals($this->request->getPost('amount_tendered'));
$amount_tendered = filter_var($raw_amount_tendered, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$this->receiving_lib->add_payment($payment_type, $amount_tendered);
}
}
$this->_reload($data);
}
/**
* Multiple Payments. Used in app/Views/sales/register.php
*
* @param string $payment_id
* @return void
* @noinspection PhpUnused
*/
public function getDeletePayment(string $payment_id): void
{
$this->receiving_lib->delete_payment($payment_id);
$this->_reload();
}
}

View File

@@ -371,8 +371,8 @@ class Sales extends Secure_Controller
*/
public function postSetPriceWorkOrders(): void
{
$price_work_orders = prepare_decimal($this->request->getPost('price_work_orders'));
$this->sale_lib->set_price_work_orders(filter_var($price_work_orders, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$price_work_orders = parse_decimals($this->request->getPost('price_work_orders'));
$this->sale_lib->set_price_work_orders($price_work_orders);
}
/**
@@ -420,8 +420,8 @@ class Sales extends Secure_Controller
if($payment_type === lang('Sales.giftcard'))
{
//In the case of giftcard payment the register input amount_tendered becomes the giftcard number
$amount_tendered = prepare_decimal($this->request->getPost('amount_tendered'));
$giftcard_num = filter_var($amount_tendered, FILTER_SANITIZE_FULL_SPECIAL_CHARS, FILTER_FLAG_ALLOW_FRACTION);
$amount_tendered = parse_decimals($this->request->getPost('amount_tendered'));
$giftcard_num = $amount_tendered;
$payments = $this->sale_lib->get_payments();
$payment_type = $payment_type . ':' . $giftcard_num;
@@ -485,8 +485,7 @@ class Sales extends Secure_Controller
{
$amount_due = $this->sale_lib->get_total();
$sales_total = $this->sale_lib->get_total(false);
$raw_amount_tendered = prepare_decimal($this->request->getPost('amount_tendered'));
$amount_tendered = filter_var($raw_amount_tendered, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$amount_tendered = parse_decimals($this->request->getPost('amount_tendered'));
$this->sale_lib->add_payment($payment_type, $amount_tendered);
$cash_adjustment_amount = $amount_due - $sales_total;
if($cash_adjustment_amount <> 0)
@@ -497,8 +496,7 @@ class Sales extends Secure_Controller
}
else
{
$raw_amount_tendered = prepare_decimal($this->request->getPost('amount_tendered'));
$amount_tendered = filter_var($raw_amount_tendered, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$amount_tendered = parse_decimals($this->request->getPost('amount_tendered'));
$this->sale_lib->add_payment($payment_type, $amount_tendered);
}
}
@@ -640,23 +638,18 @@ class Sales extends Secure_Controller
if($this->validate($rules))
{
$raw_price = prepare_decimal($this->request->getPost('price'));
$raw_quantity = prepare_decimal($this->request->getPost('quantity'));
$raw_discount = prepare_decimal($this->request->getPost('discount'));
$raw_discounted_total = prepare_decimal($this->request->getPost('discounted_total') ?? '');
$description = $this->request->getPost('description', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$serialnumber = $this->request->getPost('serialnumber', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$price = filter_var($raw_price, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$quantity = filter_var($raw_quantity, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$price = parse_decimals($this->request->getPost('price'));
$quantity = parse_decimals($this->request->getPost('quantity'));
$discount_type = $this->request->getPost('discount_type', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$discount = $discount_type
? parse_quantity(filter_var($raw_discount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION))
: parse_decimals(filter_var($raw_discount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
? parse_quantity($this->request->getPost('discount'))
: parse_decimals($this->request->getPost('discount'));
$item_location = $this->request->getPost('location', FILTER_SANITIZE_NUMBER_INT);
$discounted_total = $this->request->getPost('discounted_total') != ''
? filter_var($raw_discounted_total, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION)
? parse_decimals($this->request->getPost('discounted_total') ?? '')
: null;
@@ -1553,14 +1546,11 @@ class Sales extends Secure_Controller
$number_of_payments = $this->request->getPost('number_of_payments', FILTER_SANITIZE_NUMBER_INT);
for($i = 0; $i < $number_of_payments; ++$i)
{
$raw_payment_amount = prepare_decimal($this->request->getPost("payment_amount_$i"));
$raw_refund_amount = prepare_decimal($this->request->getPost("refund_amount_$i"));
$payment_id = $this->request->getPost("payment_id_$i", FILTER_SANITIZE_NUMBER_INT);
$payment_type = $this->request->getPost("payment_type_$i", FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$payment_amount = filter_var($raw_payment_amount , FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$payment_amount = parse_decimals($this->request->getPost("payment_amount_$i"));
$refund_type = $this->request->getPost("refund_type_$i", FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$cash_refund = filter_var($raw_refund_amount, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$cash_refund = parse_decimals($this->request->getPost("refund_amount_$i"));
$cash_adjustment = $payment_type == lang('Sales.cash_adjustment') ? CASH_ADJUSTMENT_TRUE : CASH_ADJUSTMENT_FALSE;
@@ -1594,7 +1584,7 @@ class Sales extends Secure_Controller
if($payment_type != PAYMENT_TYPE_UNASSIGNED && !empty($payment_amount_new))
{
$payment_amount = filter_var(prepare_decimal($payment_amount_new), FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$payment_amount = parse_decimals($payment_amount_new);
$cash_refund = 0;
if($payment_type == lang('Sales.cash_adjustment'))
{

View File

@@ -94,7 +94,7 @@ class Secure_Controller extends BaseController
*/
public function getCheckNumeric(): void
{
foreach($this->request->getGet(null, FILTER_SANITIZE_FULL_SPECIAL_CHARS) as $value)
foreach($this->request->getGet() as $value)
{
if (parse_decimals($value) === false)
{

View File

@@ -402,10 +402,8 @@ class Taxes extends Secure_Controller
*/
public function postSave(int $tax_rate_id = NEW_ENTRY): void
{
$raw_tax_rate = prepare_decimal($this->request->getPost('tax_rate'));
$tax_category_id = $this->request->getPost('rate_tax_category_id', FILTER_SANITIZE_NUMBER_INT);
$tax_rate = parse_tax(filter_var($raw_tax_rate, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION));
$tax_rate = parse_tax($this->request->getPost('tax_rate'));
if ($tax_rate == 0) //TODO: Replace 0 with constant?
{
@@ -414,7 +412,7 @@ class Taxes extends Secure_Controller
$tax_rate_data = [
'rate_tax_code_id' => $this->request->getPost('rate_tax_code_id', FILTER_SANITIZE_NUMBER_INT),
'rate_tax_category_id' => $this->request->getPost('rate_tax_category_id', FILTER_SANITIZE_NUMBER_INT),
'rate_tax_category_id' => $tax_category_id,
'rate_jurisdiction_id' => $this->request->getPost('rate_jurisdiction_id', FILTER_SANITIZE_NUMBER_INT),
'tax_rate' => $tax_rate,
'tax_rounding_code' => $this->request->getPost('tax_rounding_code', FILTER_SANITIZE_NUMBER_INT)

View File

@@ -6,9 +6,6 @@ use CodeIgniter\Database\Migration;
use Config\Database;
class Migration_fix_keys_for_db_upgrade extends Migration {
private array $constraints;
/**
* Perform a migration step.
*/
@@ -63,15 +60,10 @@ class Migration_fix_keys_for_db_upgrade extends Migration {
if ( ! $result->getRowArray())
{
$constraintsDropped = $this->delete_index($table, $index);
$this->delete_index($table, $index);
$forge = Database::forge();
$forge->addPrimaryKey($table, '');
if($constraintsDropped)
{
$this->recreateConstraints($table, $index);
}
}
}
@@ -82,81 +74,13 @@ class Migration_fix_keys_for_db_upgrade extends Migration {
return $row_array && $row_array['COUNT(*)'] > 0;
}
private function delete_index(string $table, string $index): bool
private function delete_index(string $table, string $index): void
{
$constraintsDropped = false;
if ($this->index_exists($table, $index))
{
$constraintsDropped = $this->dropConstraints($table, $index);
$forge = Database::forge();
$forge->dropKey($table, $index, FALSE);
}
return $constraintsDropped;
}
/**
* Checks to see if a foreign key constraint exists and drops it if it does.
* @param string $table The table name to check for the constraint
* @param string $index The index name to check for the constraint
* @return void
*/
private function dropConstraints(string $table, string $index): bool
{
$sql = "SELECT
kcu.CONSTRAINT_NAME,
kcu.COLUMN_NAME,
kcu.TABLE_NAME,
kcu.REFERENCED_COLUMN_NAME,
kcu.REFERENCED_TABLE_NAME,
rc.UPDATE_RULE,
rc.DELETE_RULE
FROM information_schema.KEY_COLUMN_USAGE kcu
JOIN information_schema.REFERENTIAL_CONSTRAINTS rc
ON kcu.CONSTRAINT_NAME = rc.CONSTRAINT_NAME
WHERE kcu.TABLE_SCHEMA = DATABASE()
AND (kcu.REFERENCED_TABLE_NAME = '" . $this->db->getPrefix() . "$table'
AND kcu.REFERENCED_COLUMN_NAME = '$index'
OR kcu.TABLE_NAME = '" . $this->db->getPrefix() . "$table'
AND kcu.COLUMN_NAME = '$index')
";
$query = $this->db->query($sql);
$this->constraints = $query->getResult();
$constraintsDropped = false;
foreach($this->constraints as $constraint)
{
$constraintName = $constraint->CONSTRAINT_NAME;
$referencingTable = str_replace($this->db->getPrefix(), '', $constraint->TABLE_NAME);
$forge = Database::forge();
if($forge->dropForeignKey($referencingTable, $constraintName))
{
$constraintsDropped = true;
}
}
return $constraintsDropped;
}
/**
* Re-creates the missing foreign key constraint which needed to be dropped in order to add the Primary Key
* @return void
*/
private function recreateConstraints(): void
{
$forge = Database::forge();
foreach($this->constraints as $constraint)
{
$index = $constraint->COLUMN_NAME;
$table = str_replace($this->db->getPrefix(), '', $constraint->TABLE_NAME);
$referencedTable = $constraint->REFERENCED_TABLE_NAME;
$constraintName = $constraint->CONSTRAINT_NAME;
$onUpdate = $constraint->UPDATE_RULE;
$onDelete = $constraint->DELETE_RULE;
$forge->addForeignKey($index, $referencedTable, $index, $onUpdate, $onDelete, $constraintName);
$forge->processIndexes($table);
}
}
}

View File

@@ -485,17 +485,6 @@ function parse_decimals(string $number, int $decimals = null): mixed
return $number;
}
$locale_safe_number = prepare_decimal($number);
if ($locale_safe_number > MAX_PRECISION)
{
return false;
}
if($locale_safe_number > 1.e14)
{
return false;
}
$config = config(OSPOS::class)->settings;
@@ -503,11 +492,10 @@ function parse_decimals(string $number, int $decimals = null): mixed
if(!$decimals)
{
$decimals = $config['currency_decimals'];
$decimals = intVal($config['currency_decimals']);
$fmt->setAttribute(NumberFormatter::FRACTION_DIGITS, $decimals);
}
$fmt->setAttribute(NumberFormatter::FRACTION_DIGITS, $decimals);
if(empty($config['thousands_separator']))
{
$fmt->setTextAttribute(NumberFormatter::GROUPING_SEPARATOR_SYMBOL, '');
@@ -515,7 +503,18 @@ function parse_decimals(string $number, int $decimals = null): mixed
try
{
return $fmt->parse($number);
$locale_safe_number = $fmt->parse($number);
if (
$locale_safe_number === false
|| $locale_safe_number > MAX_PRECISION
|| $locale_safe_number > 1.e14
)
{
return false;
}
return (float) $locale_safe_number;
}
catch(Exception $e)
{
@@ -704,23 +703,3 @@ function decode_array(array $data): array
return $data;
}
/**
* Determines if the current locale uses a comma for decimal separator and reformats the decimal to use a period.
*
* @param string $decimal The decimal to reformat.
* @return string The reformatted decimal.
*/
function prepare_decimal(string $decimal): string
{
$config = config(OSPOS::class)->settings;
$fmt = new NumberFormatter($config['number_locale'], NumberFormatter::DECIMAL);
$decimal_separator = $fmt->getSymbol(NumberFormatter::DECIMAL_SEPARATOR_SYMBOL);
if($decimal_separator === ',' && str_contains($decimal, ','))
{
$decimal = str_replace('.', '', $decimal); //Remove thousands separator
$decimal = str_replace(',', '.', $decimal); //Replace decimal separator
}
return $decimal;
}

View File

@@ -84,10 +84,10 @@ function get_sales_manage_table_headers(): string
if($config['invoice_enable'])
{
$headers[] = ['invoice_number' => lang('Sales.invoice_number')];
$headers[] = ['invoice' => '&nbsp', 'sortable' => false, 'escape' => false];
$headers[] = ['invoice' => '', 'sortable' => false, 'escape' => false];
}
$headers[] = ['receipt' => '&nbsp', 'sortable' => false, 'escape' => false];
$headers[] = ['receipt' => '', 'sortable' => false, 'escape' => false];
return transform_headers($headers);
}
@@ -116,7 +116,7 @@ function get_sale_data_row(object $sale): array
{
$row['invoice_number'] = $sale->invoice_number;
$row['invoice'] = empty($sale->invoice_number)
? ''
? '-'
: anchor(
"$controller/invoice/$sale->sale_id",
'<span class="glyphicon glyphicon-list-alt"></span>',

View File

@@ -1,148 +1,149 @@
<?php
return [
"all" => "hamısı",
"authority" => "Səlahiyyət",
"canceled" => "Ləğv Edilmiş",
"categories" => "Kateqoriyalar",
"categories_summary_report" => "komentariyalar",
"category" => "Kategoriya",
"code_canceled" => "CNL",
"code_invoice" => "INV",
"code_pos" => "POS",
"code_quote" => "Q",
"code_return" => "RET",
"code_type" => "Növ",
"code_work_order" => "W/O",
"comments" => "bütün qiymət",
"commission" => "",
"complete" => "Tamamlanmış Satış və Geri Qaytarılanlar",
"completed_sales" => "Tamamlanmış Satışlar",
"confirm_delete" => "Seçdiyiniz giriş (lər) silmək istədiyinizə əminsinizmi?",
"confirm_restore" => "Seçilmiş giriş (lər) bərpa etmək istədiyinizə əminsinizmi?",
"cost" => "hesab",
"cost_price" => "müştəri",
"count" => "müştərilər",
"customer" => "müştərilərin hesabatı",
"customers" => "Müştərilər",
"customers_summary_report" => "gün",
"date" => "təsvir",
"date_range" => "detallı göndərilən hesabatlar",
"description" => "detallı hesabatlar",
"detailed_receivings_report" => "Ətraflı satınalma hesabatı",
"detailed_receivings_report_input" => "",
"detailed_reports" => "etraflı məlumat",
"detailed_requisition_report" => "endirimler",
"detailed_sales_report" => "Ətraflı satış hesabatı",
"discount" => "endirimlər",
"discount_fixed" => "Sabit endirim",
"discount_percent" => "endirim hesabları",
"discount_type" => "Endirim növü",
"discounts" => "Endirimlər",
"discounts_summary_report" => "əməkdaş",
"earned" => "əməkdaş",
"employee" => "əməkdaşın hesabatı",
"employees" => "İşçilər",
"employees_summary_report" => "İşçilərin Xülasəsi Hesabatı",
"expenses" => "Xərclər",
"expenses_amount" => "Məbləğ",
"expenses_categories" => "Xərclər",
"expenses_categories_summary_report" => "Xərc kateqoriyasında Son Hesabat",
"expenses_category" => "Kategoriya",
"expenses_payment_amount" => "",
"expenses_tax_amount" => "Vergi",
"expenses_total_amount" => "Ümumi Məbləğ",
"expenses_total_tax_amount" => "Ümumi Vergi",
"graphical_reports" => "Qrafik Hesabatlar",
"inventory" => "İnvertizasiya",
"inventory_low" => "inventor hesabatları",
"inventory_low_report" => "mal adı",
"inventory_reports" => "malın nomrəsi",
"inventory_summary" => "mallar",
"inventory_summary_report" => "alınan mallar",
"item" => "gondərilən mallar",
"item_count" => "mal hesabatı",
"item_name" => "aşağı hesabatlar",
"item_number" => "aşağı inventor hesabat",
"items" => "Mallar",
"items_purchased" => "ad",
"items_received" => "Qəbul Olunan Mallar",
"items_summary_report" => "ödəniş tipi",
"jurisdiction" => "Yurisdiksiya",
"low_inventory" => "ödənişlər",
"low_inventory_report" => "inventor hesabatı",
"low_sell_quantity" => "Satış miqdarı",
"more_than_zero" => "gəlir",
"name" => "Qty On Hand",
"no_reports_to_display" => "Göstərmək üçün məhsul yoxdur.",
"payment_type" => "Ödəmə Növü",
"payments" => "kim tərəfindən",
"payments_summary_report" => "Ödəmələr Yekun Hesabatı",
"profit" => "Qazanc",
"quantity" => "qəbul olunanlar",
"quantity_purchased" => "aşağı səviyyə",
"quotes" => "hesabat",
"received_by" => "çıxış hesabatı",
"receiving_id" => "Hesabatlar",
"receiving_type" => "Qəbul Növü",
"receivings" => "Qəbul olunanlar",
"reorder_level" => "Səviyyəni Yenidən Düzəlt",
"report" => "Hesabat",
"report_input" => "Hesabatı daxil edin",
"reports" => "Hesabatlar",
"requisition" => "",
"requisition_by" => "",
"requisition_id" => "",
"requisition_item" => "geri qaytarılanlar",
"requisition_item_quantity" => "gəlir",
"requisition_related_item" => "ID satışı",
"requisition_related_item_total_quantity" => "endirim tipi",
"requisition_related_item_unit_quantity" => "satışlar",
"requisitions" => "Satış qiyməti",
"returns" => "endirim hesabatları",
"revenue" => "Gəlir",
"sale_id" => "satılıb kim tərəfindən",
"sale_type" => "satılıb kimə",
"sales" => "Əməliyyatlar",
"sales_amount" => "Əməliyyatların Məbləği",
"sales_summary_report" => "toplam",
"sales_taxes" => "Satışdan Vergi",
"sales_taxes_summary_report" => "Satışdan vergilərə dair yekun hesabat",
"serial_number" => "hesabatlar",
"service_charge" => "",
"sold_by" => "kim tərəfindən qoyulub",
"sold_items" => "",
"sold_to" => "təchizatçı",
"stock_location" => "təchizatçılar",
"sub_total_value" => "təchizatci hesabatı",
"subtotal" => "vergi",
"summary_reports" => "vergi faizi",
"supplied_by" => "vergilər",
"supplier" => "vergi hesabatı",
"suppliers" => "toplam",
"suppliers_summary_report" => "Təchizatçıların Yekun Hesabatı",
"tax" => "tip",
"tax_category" => "Vergi Bolməsi",
"tax_name" => "",
"tax_percent" => "Retail Price",
"tax_rate" => "Vergi dərəcəsi",
"taxes" => "Vergilər",
"taxes_summary_report" => "Vergi Yekun Hesabatı",
"total" => "Cəm",
"total_inventory_value" => "Ümumi İnvanter Qiyməti",
"total_low_sell_quantity" => "Ümumi aşağı satışların sayı",
"total_quantity" => "Ümumi Miqdarı",
"total_retail" => "Toplam inv. Pərakəndə dəyəri",
"trans_amount" => "Əməliyyat məbləği",
"trans_due" => "Buna görə",
"trans_group" => "Əməliyyat Qrupu",
"trans_nopay_sales" => "Ödənişsiz satış",
"trans_payments" => "Ödəmələr",
"trans_refunded" => "Geri qaytarıldı",
"trans_sales" => "Satışlar",
"trans_type" => "Əməliyyat növü",
"type" => "Növ",
"unit_price" => "Pərakəndə Qiyməti",
"used" => "İstifadə edilən ballar",
"work_orders" => "İstifadə Olunan Ballar",
"zero_and_less" => "Sıfır və Aşağı",
'all' => "hamısı",
'authority' => "Səlahiyyət",
'canceled' => "Ləğv Edilmiş",
'categories' => "Kateqoriyalar",
'categories_summary_report' => "komentariyalar",
'category' => "Kategoriya",
'code_canceled' => "CNL",
'code_invoice' => "INV",
'code_pos' => "POS",
'code_quote' => "Q",
'code_return' => "RET",
'code_type' => "Növ",
'code_work_order' => "W/O",
'comments' => "bütün qiymət",
'commission' => "",
'complete' => "Tamamlanmış Satış və Geri Qaytarılanlar",
'completed_sales' => "Tamamlanmış Satışlar",
'confirm_delete' => "Seçdiyiniz giriş (lər) silmək istədiyinizə əminsinizmi?",
'confirm_restore' => "Seçilmiş giriş (lər) bərpa etmək istədiyinizə əminsinizmi?",
'cost' => "hesab",
'cost_price' => "müştəri",
'count' => "müştərilər",
'customer' => "müştərilərin hesabatı",
'customers' => "Müştərilər",
'customers_summary_report' => "gün",
'date' => "təsvir",
'date_range' => "detallı göndərilən hesabatlar",
'description' => "detallı hesabatlar",
'detailed_receivings_report' => "Ətraflı satınalma hesabatı",
'detailed_receivings_report_input' => "",
'detailed_reports' => "etraflı məlumat",
'detailed_requisition_report' => "endirimler",
'detailed_sales_report' => "Ətraflı satış hesabatı",
'discount' => "endirimlər",
'discount_fixed' => "Sabit endirim",
'discount_percent' => "endirim hesabları",
'discount_type' => "Endirim növü",
'discounts' => "Endirimlər",
'discounts_summary_report' => "əməkdaş",
'earned' => "əməkdaş",
'employee' => "əməkdaşın hesabatı",
'employees' => "İşçilər",
'employees_summary_report' => "İşçilərin Xülasəsi Hesabatı",
'expenses' => "Xərclər",
'expenses_amount' => "Məbləğ",
'expenses_categories' => "Xərclər",
'expenses_categories_summary_report' => "Xərc kateqoriyasında Son Hesabat",
'expenses_category' => "Kategoriya",
'expenses_payment_amount' => "",
'expenses_tax_amount' => "Vergi",
'expenses_total_amount' => "Ümumi Məbləğ",
'expenses_total_tax_amount' => "Ümumi Vergi",
'graphical_reports' => "Qrafik Hesabatlar",
'inventory' => "İnvertizasiya",
'inventory_low' => "inventor hesabatları",
'inventory_low_report' => "mal adı",
'inventory_reports' => "malın nomrəsi",
'inventory_summary' => "mallar",
'inventory_summary_report' => "alınan mallar",
'item' => "gondərilən mallar",
'item_count' => "mal hesabatı",
'item_name' => "aşağı hesabatlar",
'item_number' => "aşağı inventor hesabat",
'items' => "Mallar",
'items_purchased' => "ad",
'items_received' => "Qəbul Olunan Mallar",
'items_summary_report' => "ödəniş tipi",
'jurisdiction' => "Yurisdiksiya",
'low_inventory' => "ödənişlər",
'low_inventory_report' => "inventor hesabatı",
'low_sell_quantity' => "Satış miqdarı",
'more_than_zero' => "gəlir",
'name' => "Qty On Hand",
'no_reports_to_display' => "Göstərmək üçün məhsul yoxdur.",
'payment_type' => "Ödəmə Növü",
'payments' => "kim tərəfindən",
'payments_summary_report' => "Ödəmələr Yekun Hesabatı",
'profit' => "Qazanc",
'quantity' => "qəbul olunanlar",
'quantity_purchased' => "aşağı səviyyə",
'quotes' => "hesabat",
'received_by' => "çıxış hesabatı",
'receiving_id' => "Hesabatlar",
'receiving_type' => "Qəbul Növü",
'receivings' => "Qəbul olunanlar",
'reorder_level' => "Səviyyəni Yenidən Düzəlt",
'report' => "Hesabat",
'report_input' => "Hesabatı daxil edin",
'reports' => "Hesabatlar",
'requisition' => "",
'requisition_by' => "",
'requisition_id' => "",
'requisition_item' => "geri qaytarılanlar",
'requisition_item_quantity' => "gəlir",
'requisition_related_item' => "ID satışı",
'requisition_related_item_total_quantity' => "endirim tipi",
'requisition_related_item_unit_quantity' => "satışlar",
'requisitions' => "Satış qiyməti",
'returns' => "endirim hesabatları",
'revenue' => "Gəlir",
'sale_id' => "satılıb kim tərəfindən",
'sale_type' => "satılıb kimə",
'sales' => "Əməliyyatlar",
'sales_amount' => "Əməliyyatların Məbləği",
'sales_summary_report' => "toplam",
'sales_taxes' => "Satışdan Vergi",
'sales_taxes_summary_report' => "Satışdan vergilərə dair yekun hesabat",
'serial_number' => "hesabatlar",
'service_charge' => "",
'sold_by' => "kim tərəfindən qoyulub",
'sold_items' => "",
'sold_to' => "təchizatçı",
'stock_location' => "təchizatçılar",
'sub_total_value' => "təchizatci hesabatı",
'subtotal' => "vergi",
'summary_reports' => "Yekun Hesabatı",
'supplied_by' => "vergilər",
'supplier' => "vergi hesabatı",
'suppliers' => "toplam",
'suppliers_summary_report' => "Təchizatçıların Yekun Hesabatı",
'tax' => "tip",
'tax_category' => "Vergi Bolməsi",
'tax_name' => "",
'tax_percent' => "Retail Price",
'tax_rate' => "Vergi dərəcəsi",
'taxes' => "Vergilər",
'taxes_summary_report' => "Vergi Yekun Hesabatı",
'total' => "Cəm",
'total_inventory_value' => "Ümumi İnvanter Qiyməti",
'total_low_sell_quantity' => "Ümumi aşağı satışların sayı",
'total_quantity' => "Ümumi Miqdarı",
'total_retail' => "Toplam inv. Pərakəndə dəyəri",
'trans_amount' => "Əməliyyat məbləği",
'trans_due' => "Buna görə",
'trans_group' => "Əməliyyat Qrupu",
'trans_nopay_sales' => "Ödənişsiz satış",
'trans_payments' => "Ödəmələr",
'trans_refunded' => "Geri qaytarıldı",
'trans_sales' => "Satışlar",
'trans_type' => "Əməliyyat növü",
'type' => "Növ",
'unit_price' => "Pərakəndə Qiyməti",
'used' => "İstifadə edilən ballar",
'work_orders' => "İstifadə Olunan Ballar",
'zero_and_less' => "Sıfır və Aşağı",
];

View File

@@ -1,330 +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 Gift Card",
"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' => "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",
];

View File

@@ -1,56 +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" => "Impor dari CSV gagal",
"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" => "Anda telah berhasil menghapus pelanggan",
"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 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",
];

View File

@@ -1,44 +1,45 @@
<?php
return [
"administrator" => "",
"basic_information" => "Informasi Karyawan",
"cannot_be_deleted" => "Karyawan terpilih tidak bisa dihapus satu atau lebih dari para pekerja telah memproses penjualan atau Anda mencoba untuk menghapus diri Anda sendiri.",
"change_employee" => "",
"change_password" => "Ubah kata kunci",
"clerk" => "",
"commission" => "",
"confirm_delete" => "Apakah Anda yakin ingin menghapus karyawan yang dipilih?",
"confirm_restore" => "Anda yakin ingin mengembalikan karyawan terpilih?",
"current_password" => "Kata kunci sekarang",
"current_password_invalid" => "Kata kunci sekarang salah.",
"employee" => "Karyawan",
"error_adding_updating" => "Kesalahan menambah / memperbarui karyawan.",
"error_deleting_demo_admin" => "Anda tidak dapat menghapus Demo admin user.",
"error_updating_demo_admin" => "Anda tidak dapat mengubah Demo admin user.",
"language" => "Bahasa",
"login_info" => "Info Login Karyawan",
"manager" => "",
"new" => "Karyawan Baru",
"none_selected" => "Anda belum memilih karyawan untuk dihapus.",
"one_or_multiple" => "Karyawan",
"password" => "Kata Sandi",
"password_minlength" => "Kata kunci minimal terdiri dari 8 karakter.",
"password_must_match" => "Kata Sandi tidak cocok.",
"password_not_must_match" => "Kata kunci sekarang dan kata kunci baru harus unik.",
"password_required" => "Kata Sandi wajib diisi.",
"permission_desc" => "Tandai kotak di bawah ini untuk memberikan akses ke Modul.",
"permission_info" => "Hak Akses Karyawan",
"repeat_password" => "Ulang Kata Sandi",
"subpermission_required" => "Paling tidak tambahkan satu hak akses untuk setiap modul.",
"successful_adding" => "Anda telah berhasil menambahkan karyawan.",
"successful_change_password" => "Kata kunci berhasil diubah.",
"successful_deleted" => "Anda telah berhasil menghapus",
"successful_updating" => "Anda telah berhasil memperbarui karyawan",
"system_language" => "Bahasa Sistem",
"unsuccessful_change_password" => "Gagal mengubah kata sandi.",
"update" => "Ubah Karyawan",
"username" => "Nama Pengguna",
"username_duplicate" => "Nama pengguna karyawan sudah digunakan. Silakan pilih yang lain.",
"username_minlength" => "Nama Pengguna minimal 5 huruf.",
"username_required" => "Nama Pengguna wajib diisi.",
'administrator' => "",
'basic_information' => "Informasi Karyawan",
'cannot_be_deleted' => "Karyawan terpilih tidak bisa dihapus satu atau lebih dari para pekerja telah memproses penjualan atau Anda mencoba untuk menghapus diri Anda sendiri.",
'change_employee' => "",
'change_password' => "Ubah kata kunci",
'clerk' => "",
'commission' => "",
'confirm_delete' => "Apakah Anda yakin ingin menghapus karyawan yang dipilih?",
'confirm_restore' => "Anda yakin ingin mengembalikan karyawan terpilih?",
'current_password' => "Kata kunci sekarang",
'current_password_invalid' => "Kata kunci sekarang salah.",
'employee' => "Karyawan",
'error_adding_updating' => "Kesalahan menambah / memperbarui karyawan.",
'error_deleting_demo_admin' => "Anda tidak dapat menghapus Demo admin user.",
'error_updating_demo_admin' => "Anda tidak dapat mengubah Demo admin user.",
'language' => "Bahasa",
'login_info' => "Info Login Karyawan",
'manager' => "",
'new' => "Karyawan Baru",
'none_selected' => "Anda belum memilih karyawan untuk dihapus.",
'one_or_multiple' => "Karyawan",
'password' => "Kata Sandi",
'password_minlength' => "Kata kunci minimal terdiri dari 8 karakter.",
'password_must_match' => "Kata Sandi tidak cocok.",
'password_not_must_match' => "Kata kunci sekarang dan kata kunci baru harus unik.",
'password_required' => "Kata Sandi wajib diisi.",
'permission_desc' => "Tandai kotak di bawah ini untuk memberikan akses ke Modul.",
'permission_info' => "Hak Akses Karyawan",
'repeat_password' => "Ulang Kata Sandi",
'subpermission_required' => "Paling tidak tambahkan satu hak akses untuk setiap modul.",
'successful_adding' => "Anda telah berhasil menambahkan karyawan.",
'successful_change_password' => "Kata kunci berhasil diubah.",
'successful_deleted' => "Berhasil menghapus Kartu Hadiah",
'successful_updating' => "Anda telah berhasil memperbarui karyawan",
'system_language' => "Bahasa Sistem",
'unsuccessful_change_password' => "Gagal mengubah kata sandi.",
'update' => "Ubah Karyawan",
'username' => "Nama Pengguna",
'username_duplicate' => "Nama pengguna karyawan sudah digunakan. Silakan pilih yang lain.",
'username_minlength' => "Nama Pengguna minimal 5 huruf.",
'username_required' => "Nama Pengguna wajib diisi.",
];

View File

@@ -1,71 +1,72 @@
<?php
return [
"add_minus" => "Penambahan atau pengurangan inventory.",
"allow_alt_description" => "Deskripsi Alternatif dimungkinkan",
"bulk_edit" => "Ubah Massal",
"cannot_be_deleted" => "Tidak dapat menghapus GiftCard terpilih, Satu atau lebih GiftCard yang dipilih memiliki Penjualan.",
"cannot_find_giftcard" => "Informasi GiftCard tidak ditemukan.",
"cannot_use" => "Giftcard {0} tidak dapat digunakan: Pelanggan tidak valid.",
"card_value" => "Nilai",
"category" => "Kategori",
"change_all_to_allow_alt_desc" => "Diijinkan deskripsi alternatif untuk semua.",
"change_all_to_not_allow_allow_desc" => "Tidak diijinkan deskripsi alternatif untuk semua.",
"change_all_to_serialized" => "Ubah semua menggunakan nomor serial",
"change_all_to_unserialized" => "Ubah semua tanpa nomor serial",
"confirm_bulk_edit" => "Apakah Anda yakin ingin merubah semua GiftCard yang dipilih?",
"confirm_delete" => "Apakah anda yakin ingin menghapus GiftCard yang dipilih?",
"confirm_restore" => "Apakah Anda yakin akan mengembalikan Gift Card terpilih?",
"cost_price" => "Harga Pokok",
"count" => "Mutasi/Penyesuaian Inventori",
"csv_import_failed" => "Impor dari CSV gagal.",
"current_quantity" => "Jumlah saat ini",
"description" => "Deskripsi",
"details_count" => "Jumlah Detail Inventori",
"do_nothing" => "Tidak ada Perubahan",
"edit_fields_you_want_to_update" => "Ubah bagian yang ingin Anda edit untuk SEMUA GiftCard yang dipilih.",
"edit_multiple_giftcards" => "Ubah beberapa GiftCard.",
"error_adding_updating" => "Kesalahan ketika menambahkan/memperbaharui GiftCard.",
"error_updating_multiple" => "Gagal memperbaharui Giftcard.",
"generate_barcodes" => "Buat Barcode",
"giftcard" => "GiftCard",
"giftcard_number" => "Nomor GiftCard",
"info_provided_by" => "Informasi disediakan oleh",
"inventory_comments" => "Keterangan",
"is_serialized" => "GiftCard Memiliki Nomor Serial",
"low_inventory_giftcards" => "GiftCard Inventori Rendah",
"manually_editing_of_quantity" => "Perubahan jumlah Stok secara manual",
"must_select_giftcard_for_barcode" => "Anda harus memilih minimal satu (1) GiftCard untuk membuat Barcode.",
"new" => "GiftCard Baru",
"no_description_giftcards" => "Tidak ada Deskripsi Gift Card",
"no_giftcards_to_display" => "Tidak ada GiftCard yang ditampilkan.",
"none" => "Tidak Ada",
"none_selected" => "Anda belum memilih GiftCard untuk diubah.",
"number" => "Nomor GiftCard harus angka.",
"number_information" => "Nomor GiftCard",
"number_required" => "Nomor GiftCard wajib diisi.",
"one_or_multiple" => "GiftCard",
"person_id" => "Nomor Pelanggan",
"quantity" => "Jumlah",
"quantity_required" => "Jumlah wajib diisi. Silahkan tutup ( X ) untuk batal.",
"remaining_balance" => "Giftcard {0} tersisa {1}!",
"reorder_level" => "Level Pesan Ulang",
"retrive_giftcard_info" => "Informasi GiftCard",
"sales_tax_1" => "Pajak Penjualan",
"sales_tax_2" => "Pajak Penjualan 2",
"serialized_giftcards" => "Serial GiftCard",
"successful_adding" => "GiftCard telah berhasil ditambahkan",
"successful_bulk_edit" => "Anda telah berhasil memperbarui GiftCard yang dipilih",
"successful_deleted" => "GiftCard telah berhasil dihapus",
"successful_updating" => "GiftCard telah berhasil diperbarui",
"supplier" => "Pemasok",
"tax_1" => "Pajak 1",
"tax_2" => "Pajak 2",
"tax_percent" => "Persen Pajak",
"tax_percents" => "Persentase Pajak",
"unit_price" => "Harga Jual",
"upc_database" => "Database UPC",
"update" => "Ubah GiftCard",
"use_inventory_menu" => "Gunakan Inv. Menu",
"value" => "Nilai GiftCard harus angka.",
"value_required" => "Nilai GiftCard wajib diisi.",
'add_minus' => "Tambah atau kurangi Inventori.",
'allow_alt_description' => "Izinkan Deskripsi Alternatif",
'bulk_edit' => "Ubah Massal",
'cannot_be_deleted' => "Kartu Hadiah tidak dapat dihapus, satu atau beberapa di antaranya memiliki penjualan.",
'cannot_find_giftcard' => "Kartu Hadiah tidak ditemukan.",
'cannot_use' => "Kartu Hadiah {0} tidak dapat digunakan: Pelanggan tidak valid.",
'card_value' => "Nilai",
'category' => "Kategori",
'change_all_to_allow_alt_desc' => "Izinkan deskripsi alternatif untuk semua.",
'change_all_to_not_allow_allow_desc' => "Tidak diizinkan deskripsi alternatif untuk semua.",
'change_all_to_serialized' => "Ubah semua jadi berseri",
'change_all_to_unserialized' => "Ubah semua menjadi tidak berseri",
'confirm_bulk_edit' => "Apakah Anda ingin edit Kartu Hadiah terpilih?",
'confirm_delete' => "Anda yakin ingin menghapus Kartu Hadiah terpilih?",
'confirm_restore' => "Anda yakin ingin memulihkan Kartu Hadiah terpilih?",
'cost_price' => "Harga Beli",
'count' => "Mutasi Inventori",
'csv_import_failed' => "Impor dari CSV gagal.",
'current_quantity' => "Jumlah saat ini",
'description' => "Deskripsi",
'details_count' => "Jumlah Detail Inventori",
'do_nothing' => "Tidak ada Perubahan",
'edit_fields_you_want_to_update' => "Edit kolom yang diinginkan pada Kartu Hadiah terpilih.",
'edit_multiple_giftcards' => "Edit beberapa Kartu Hadiah.",
'error_adding_updating' => "Gagal menambah atau memperbarui Kartu Hadiah.",
'error_updating_multiple' => "Gagal memperbaharui Kartu Hadiah.",
'generate_barcodes' => "Buat Barcode",
'giftcard' => "Kartu Hadiah",
'giftcard_number' => "Nomor Kartu Hadiah",
'info_provided_by' => "Info disediakan oleh",
'inventory_comments' => "Keterangan",
'is_serialized' => "Kartu Hadiah memiliki nomor seri",
'low_inventory_giftcards' => "Kartu Hadiah Inventori Rendah",
'manually_editing_of_quantity' => "Edit manual kuantitas",
'must_select_giftcard_for_barcode' => "Anda harus pilih setidaknya satu (1) Kartu Hadiah untuk membuat barcode.",
'new' => "Kartu Hadiah baru",
'no_description_giftcards' => "Tidak ada deskripsi Kartu Hadiah",
'no_giftcards_to_display' => "Tidak ada Kartu Hadiah yang ditampilkan.",
'none' => "Tidak Ada",
'none_selected' => "Belum ada Kartu Hadiah terpilih untuk diedit.",
'number' => "Nomor Kartu Hadiah harus angka.",
'number_information' => "Nomor Kartu Hadiah",
'number_required' => "Nomor Kartu Hadiah wajib diisi.",
'one_or_multiple' => "Kartu Hadiah",
'person_id' => "Pelanggan",
'quantity' => "Jumlah",
'quantity_required' => "Jumlah wajib diisi. Silahkan tutup ( X ) untuk batal.",
'remaining_balance' => "Kartu Hadiah {0} tersisa {1}!",
'reorder_level' => "Level pesan ulang",
'retrive_giftcard_info' => "Informasi Kartu Hadiah",
'sales_tax_1' => "Pajak Penjualan",
'sales_tax_2' => "Pajak Penjualan 2",
'serialized_giftcards' => "Kartu Hadiah berseri",
'successful_adding' => "Berhasil menambahkan Kartu Hadiah",
'successful_bulk_edit' => "Berhasil memperbarui Kartu Hadiah terpilih",
'successful_deleted' => "Berhasil menghapus Kartu Hadiah",
'successful_updating' => "Berhasil perbarui Kartu Hadiah",
'supplier' => "Pemasok",
'tax_1' => "Pajak 1",
'tax_2' => "Pajak 2",
'tax_percent' => "Persentasi Pajak",
'tax_percents' => "Persentase Pajak",
'unit_price' => "Harga Jual",
'upc_database' => "Basis data Barcode",
'update' => "Perbarui Kartu Hadiah",
'use_inventory_menu' => "Gunakan Inv. Menu",
'value' => "Nilai Kartu Hadiah harus angka.",
'value_required' => "Nilai Kartu Hadiah wajib diisi.",
];

View File

@@ -1,41 +1,42 @@
<?php
return [
"add_item" => "Tambah Item Barang",
"all" => "Semua",
"cannot_be_deleted" => "Item Paket tidak dapat dihapus.",
"confirm_delete" => "Apakah Anda yakin ingin menghapus Item Paket dipilih?",
"confirm_restore" => "Apakah Anda yakin untuk mengembalikan Kit Item yang terpilih?",
"description" => "Deskripsi Item Paket",
"discount" => "Diskon",
"discount_fixed" => "Diskon Tetap",
"discount_percent" => "Persentase Diskon",
"discount_type" => "Jenis Diskon",
"error_adding_updating" => "Tambah/Ubah Item Paket tidak berhasil.",
"find_kit_item" => "Paket Item",
"info" => "Item Paket Info",
"item" => "Item Barang",
"item_kit_number" => "Kode bar",
"item_kit_number_duplicate" => "Nomor Paket Item telah ada di basis data.",
"item_number" => "",
"item_number_duplicate" => "",
"items" => "Item Barang",
"kit" => "ID Paket",
"kit_and_components" => "Kit dan komponen",
"kit_and_stock" => "Kit dan Stok",
"kit_only" => "Hanya Kit",
"name" => "Nama Item Paket",
"new" => "Item Paket Baru",
"no_item_kits_to_display" => "Tidak ada Item Paket yang ditampilkan.",
"none_selected" => "Anda belum memilih satupun Item Paket.",
"one_or_multiple" => "Item Paket",
"price_option" => "Opsi Harga",
"priced_only" => "Hanya Harga",
"print_option" => "Opsi Cetak",
"quantity" => "Jumlah",
"sequence" => "Urutan",
"successful_adding" => "Item Paket Baru berhasil ditambahkan",
"successful_deleted" => "Item Paket berhasil dihapus",
"successful_updating" => "Item Paket berhasil dirubah",
"unit_price" => "",
"update" => "Ubah Item Paket",
'add_item' => "Tambah Item Barang",
'all' => "Semua",
'cannot_be_deleted' => "Item Paket tidak dapat dihapus.",
'confirm_delete' => "Apakah Anda yakin ingin menghapus Item Paket dipilih?",
'confirm_restore' => "Apakah Anda yakin untuk mengembalikan Kit Item yang terpilih?",
'description' => "Deskripsi Item Paket",
'discount' => "Diskon",
'discount_fixed' => "Diskon Tetap",
'discount_percent' => "Persentase Diskon",
'discount_type' => "Jenis Diskon",
'error_adding_updating' => "Tambah/Ubah Item Paket tidak berhasil.",
'find_kit_item' => "Paket Item",
'info' => "Item Paket Info",
'item' => "Item Barang",
'item_kit_number' => "Kode bar",
'item_kit_number_duplicate' => "Nomor Paket Item telah ada di basis data.",
'item_number' => "",
'item_number_duplicate' => "",
'items' => "Item Barang",
'kit' => "ID Paket",
'kit_and_components' => "Kit dan komponen",
'kit_and_stock' => "Kit dan Stok",
'kit_only' => "Hanya Kit",
'name' => "Nama Item Paket",
'new' => "Item Paket Baru",
'no_item_kits_to_display' => "Tidak ada Item Paket yang ditampilkan.",
'none_selected' => "Anda belum memilih satupun Item Paket.",
'one_or_multiple' => "Item Paket",
'price_option' => "Opsi Harga",
'priced_only' => "Hanya Harga",
'print_option' => "Opsi Cetak",
'quantity' => "Jumlah",
'sequence' => "Urutan",
'successful_adding' => "Item Paket Baru berhasil ditambahkan",
'successful_deleted' => "Berhasil menghapus Kartu Hadiah",
'successful_updating' => "Item Paket berhasil dirubah",
'unit_price' => "",
'update' => "Ubah Item Paket",
];

View File

@@ -1,7 +1,8 @@
<?php
return [
'add_minus' => "Menambah atau mengurangi Inventori.",
'allow_alt_description' => "Deskripsi Alternatif dimungkinkan",
return [
'add_minus' => "Tambah atau kurangi Inventori.",
'allow_alt_description' => "Izinkan Deskripsi Alternatif",
'amount_entry' => "Jumlah entri",
'bulk_edit' => "Ubah Massal",
'buy_price_required' => "Harga Beli wajib diisi.",
@@ -13,22 +14,22 @@
'category_required' => "Kategori wajib diisi.",
'change_all_to_allow_alt_desc' => "Izinkan deskripsi alternatif untuk semua.",
'change_all_to_not_allow_allow_desc' => "Tidak diizinkan deskripsi alternatif untuk semua.",
'change_all_to_serialized' => "Ubah semua menggunakan nomor serial",
'change_all_to_unserialized' => "Ubah semua tanpa nomor serial",
'change_all_to_serialized' => "Ubah semua jadi berseri",
'change_all_to_unserialized' => "Ubah semua menjadi tidak berseri",
'change_image' => "Ubah Gambar",
'confirm_bulk_edit' => "Apakah Anda yakin ingin merubah semua item yang dipilih?",
'confirm_bulk_edit' => "Anda yakin ingin mengubah semua item terpilih?",
'confirm_bulk_edit_wipe_taxes' => "Semua item informasi pajak akan diganti.",
'confirm_delete' => "Apakah Anda yakin ingin menghapus item yang dipilih?",
'confirm_delete' => "Anda yakin ingin menghapus item terpilih?",
'confirm_restore' => "Anda yakin ingin mengembalikan item terpilih?",
'cost_price' => "Harga Beli",
'cost_price_number' => "Harga beli harus berupa angka.",
'cost_price_required' => "Harga beli harus diisi.",
'count' => "Mutasi/Penyesuaian Inventori",
'csv_import_failed' => "Impor dari CSV tidak berhasil dilakukan",
'csv_import_nodata_wrongformat' => "Berkas unggahan tidak berisi data atau format salah.",
'csv_import_partially_failed' => "Terdapat {0} item yang gagal diimpor pada baris: {1}. Tidak ada kolom yang diimpor.",
'csv_import_success' => "Impor item berhasil.",
'current_quantity' => "Jumlah Saat ini",
'count' => "Mutasi Inventori",
'csv_import_failed' => "Gagal impor CSV",
'csv_import_nodata_wrongformat' => "Berkas CSV terunggah tidak berisi data atau formatnya salah.",
'csv_import_partially_failed' => "Terdapat {0} item gagal impor pada baris: {1}. Tidak ada baris yang diimpor.",
'csv_import_success' => "Impor item CSV berhasil.",
'current_quantity' => "Jumlah saat ini",
'default_pack_name' => "Setiap",
'description' => "Deskripsi",
'details_count' => "Jumlah Detail Inventori",
@@ -63,7 +64,7 @@
'location' => "Lokasi Barang",
'low_inventory_items' => "Daftar Stock Rendah",
'low_sell_item' => "Produk dengan Penjualan yang Rendah",
'manually_editing_of_quantity' => "Perubahan jumlah Stok secara manual",
'manually_editing_of_quantity' => "Edit manual kuantitas",
'markup' => "",
'name' => "Nama Barang",
'name_required' => "Nama item wajib diisi.",
@@ -83,7 +84,7 @@
'quantity_required' => "Jumlah wajib diisi.",
'receiving_quantity' => "Jumlah per penerimaan",
'remove_image' => "Hapus gambar",
'reorder_level' => "Batas pesan ulang",
'reorder_level' => "Level pesan ulang",
'reorder_level_number' => "Batas pesan ulang harus berupa angka.",
'reorder_level_required' => "Batas pesan ulang wajib diisi.",
'retrive_item_info' => "Dapatkan Info Barang",
@@ -98,7 +99,7 @@
'stock_type' => "Jenis Stok",
'successful_adding' => "Item Barang telah berhasil ditambahkan",
'successful_bulk_edit' => "Anda telah berhasil memperbarui item yang dipilih",
'successful_deleted' => "Item Barang telah berhasil dihapus",
'successful_deleted' => "Berhasil menghapus Kartu Hadiah",
'successful_updating' => "Item Barang telah berhasil diperbarui",
'supplier' => "Pemasok",
'tax_1' => "Pajak 1",
@@ -114,7 +115,7 @@
'unit_price' => "Harga Jual",
'unit_price_number' => "Harga satuan harus berupa angka.",
'unit_price_required' => "Harga Jual wajib diisi.",
'upc_database' => "Database UPC",
'upc_database' => "Basis data Barcode",
'update' => "Ubah",
'use_inventory_menu' => "Gunakan Inv. Menu",
];

View File

@@ -1,58 +1,59 @@
<?php
return [
"amount_due" => "",
"cancel_receiving" => "Batal",
"cannot_be_deleted" => "Tidak bisa dihapus.",
"comments" => "Keterangan",
"complete_receiving" => "Selesai",
"confirm_cancel_receiving" => "Apakah anda yakin untuk menghapus Pembelian Barang masuk ini? Semua item Akan dihapus.",
"confirm_delete" => "Apakah Anda yakin akan hapus penerimaan ini? Tindakan ini tidak bisa dibatalkan.",
"confirm_finish_receiving" => "Apakah anda yakin untuk memproses Pembelian Barang masuk ini? Proses ini tidak dapat dibatalkan.",
"confirm_restore" => "",
"cost" => "Harga",
"daily" => "",
"date" => "Tanggal",
"date_required" => "Tanggal harus diisi.",
"date_type" => "Kolom tanggal harus diisi.",
"delete_entire_sale" => "Hapus Semua Penjualan",
"discount" => "Diskon",
"edit" => "Ubah",
"edit_sale" => "Ubah Pembelian",
"employee" => "Karyawan",
"error_editing_item" => "Ubah Item barang gagal.",
"error_requisition" => "Tidak dapat memindahkan Persediaan dari atau ke Lokasi yang Sama.",
"find_or_scan_item" => "Cari/Scan Item",
"find_or_scan_item_or_receipt" => "Cari/Scan Item atau Faktur",
"id" => "ID Pembelian",
"item_name" => "Nama Item",
"mode" => "Jenis Pembelian",
"new_supplier" => "Pemasok Baru",
"one_or_multiple" => "penerimaan",
"print_after_sale" => "Cetak Faktur setelah penjualan",
"quantity" => "Jumlah",
"receipt" => "Faktur Pembelian",
"receipt_number" => "No. Faktur Pembelian",
"receiving" => "Barang Masuk",
"reference" => "Referensi",
"register" => "Pembelian Barang Masuk",
"requisition" => "Daftar Permintaan",
"return" => "Retur",
"select_supplier" => "Pilih Pemasok (Opsional)",
"ship_pack" => "Paket Pengiriman",
"start_typing_supplier_name" => "Ketik nama pemasok ...",
"stock" => "Stok",
"stock_destination" => "Tujuan Stok",
"stock_locaiton" => "Lokasi Stok",
"stock_source" => "Asal Stok",
"successfully_deleted" => "Berhasil Dihapus",
"successfully_updated" => "Berhasil Diperbaharui",
"supplier" => "Pemasok",
"supplier_address" => "Alamat",
"supplier_email" => "Email",
"supplier_location" => "Lokasi",
"total" => "Total",
"transaction_failed" => "Transaksi Pembelian gagal.",
"unable_to_add_item" => "Penambahan Item kedalam Pembelian Barang gagal.",
"unsuccessfully_updated" => "Pembelian barang gagal Diperbaharui.",
"update" => "Memperbarui",
'amount_due' => "",
'cancel_receiving' => "Batal",
'cannot_be_deleted' => "Tidak bisa dihapus.",
'comments' => "Keterangan",
'complete_receiving' => "Selesai",
'confirm_cancel_receiving' => "Apakah anda yakin untuk menghapus Pembelian Barang masuk ini? Semua item Akan dihapus.",
'confirm_delete' => "Apakah Anda yakin akan hapus penerimaan ini? Tindakan ini tidak bisa dibatalkan.",
'confirm_finish_receiving' => "Apakah anda yakin untuk memproses Pembelian Barang masuk ini? Proses ini tidak dapat dibatalkan.",
'confirm_restore' => "",
'cost' => "Harga",
'daily' => "",
'date' => "Tanggal",
'date_required' => "Tanggal harus diisi.",
'date_type' => "Kolom tanggal harus diisi.",
'delete_entire_sale' => "Hapus Semua Penjualan",
'discount' => "Diskon",
'edit' => "Ubah",
'edit_sale' => "Ubah Pembelian",
'employee' => "Karyawan",
'error_editing_item' => "Ubah Item barang gagal.",
'error_requisition' => "Tidak dapat memindahkan Persediaan dari atau ke Lokasi yang Sama.",
'find_or_scan_item' => "Cari/Scan Item",
'find_or_scan_item_or_receipt' => "Temukan atau pindai Item atau Faktur",
'id' => "ID Pembelian",
'item_name' => "Nama Item",
'mode' => "Jenis Pembelian",
'new_supplier' => "Pemasok Baru",
'one_or_multiple' => "penerimaan",
'print_after_sale' => "Cetak Faktur setelah penjualan",
'quantity' => "Jumlah",
'receipt' => "Faktur Pembelian",
'receipt_number' => "No. Faktur Pembelian",
'receiving' => "Barang Masuk",
'reference' => "Referensi",
'register' => "Pembelian Barang Masuk",
'requisition' => "Daftar Permintaan",
'return' => "Retur",
'select_supplier' => "Pilih Pemasok (Opsional)",
'ship_pack' => "Paket Pengiriman",
'start_typing_supplier_name' => "Ketik nama pemasok ...",
'stock' => "Stok",
'stock_destination' => "Tujuan Stok",
'stock_locaiton' => "Lokasi Stok",
'stock_source' => "Asal Stok",
'successfully_deleted' => "Berhasil Dihapus",
'successfully_updated' => "Berhasil Diperbaharui",
'supplier' => "Pemasok",
'supplier_address' => "Alamat",
'supplier_email' => "Email",
'supplier_location' => "Lokasi",
'total' => "Total",
'transaction_failed' => "Transaksi Pembelian gagal.",
'unable_to_add_item' => "Penambahan Item kedalam Pembelian Barang gagal.",
'unsuccessfully_updated' => "Pembelian barang gagal Diperbaharui.",
'update' => "Memperbarui",
];

View File

@@ -1,148 +1,149 @@
<?php
return [
"all" => "Semua",
"authority" => "Otoritas",
"canceled" => "Dibatalkan",
"categories" => "Kategori",
"categories_summary_report" => "Laporan Ringkasan Kategori",
"category" => "Kategori",
"code_canceled" => "CNL",
"code_invoice" => "INV",
"code_pos" => "POS",
"code_quote" => "Q",
"code_return" => "RET",
"code_type" => "Tipe",
"code_work_order" => "W/O",
"comments" => "Catatan",
"commission" => "",
"complete" => "Penjualan dan Retur yang sukses",
"completed_sales" => "Penjualan yang Sukses",
"confirm_delete" => "Anda yakin ingin menghapus masukan terpilih?",
"confirm_restore" => "Anda yakin ingin mengembalikan entri terpilih?",
"cost" => "Grosir",
"cost_price" => "Harga Beli",
"count" => "Jumlah",
"customer" => "Pelanggan",
"customers" => "Pelanggan",
"customers_summary_report" => "Laporan Ringkasan Pelanggan",
"date" => "Tanggal",
"date_range" => "Rentang Tanggal",
"description" => "Deskripsi",
"detailed_receivings_report" => "Laporan Detail Barang Masuk",
"detailed_receivings_report_input" => "",
"detailed_reports" => "Perincian Laporan",
"detailed_requisition_report" => "Rincian Daftar Laporan Permintaan",
"detailed_sales_report" => "Laporan Perincian Penjualan",
"discount" => "Diskon",
"discount_fixed" => "Diskon Tetap",
"discount_percent" => "Persen Diskon",
"discount_type" => "Tipe Diskon",
"discounts" => "Diskon",
"discounts_summary_report" => "Laporan Ringkasan Diskon",
"earned" => "Poin yang diperoleh",
"employee" => "Karyawan",
"employees" => "Karyawan",
"employees_summary_report" => "Laporan Ringkasan Karyawan",
"expenses" => "Biaya",
"expenses_amount" => "Jumlah",
"expenses_categories" => "Biaya",
"expenses_categories_summary_report" => "Laporan RIngkasan Kategori Biaya",
"expenses_category" => "Kategori",
"expenses_payment_amount" => "",
"expenses_tax_amount" => "Pajak",
"expenses_total_amount" => "Jumlah Total",
"expenses_total_tax_amount" => "Total Pajak",
"graphical_reports" => "Laporan Dalam Bentuk Grafis",
"inventory" => "Laporan Persediaan",
"inventory_low" => "Laporan Persediaan Rendah",
"inventory_low_report" => "Laporan Persediaan Rendah",
"inventory_reports" => "Laporan Persediaan",
"inventory_summary" => "Laporan Ringkasan Persediaan",
"inventory_summary_report" => "Laporan Ringkasan Persediaan",
"item" => "Produk/Item",
"item_count" => "Filter Jumlah Item",
"item_name" => "Nama Barang",
"item_number" => "Kode batang",
"items" => "Produk/Item",
"items_purchased" => "Produk Dibeli",
"items_received" => "Barang Masuk",
"items_summary_report" => "Laporan Ringkasan Produk/Item",
"jurisdiction" => "Ranah hukum",
"low_inventory" => "Kurang Persediaan",
"low_inventory_report" => "Laporan Persediaan Kurang",
"low_sell_quantity" => "Jumlah penjualan yang rendah",
"more_than_zero" => "Stok belum habis",
"name" => "Nama",
"no_reports_to_display" => "Tidak ada item untuk ditampilkan.",
"payment_type" => "Tipe Pembayaran",
"payments" => "Pembayaran",
"payments_summary_report" => "Laporan Ringkasan Pembayaran",
"profit" => "Keuntungan/Laba",
"quantity" => "Jumlah",
"quantity_purchased" => "Jumlah Dibeli",
"quotes" => "Penawaran",
"received_by" => "Diterima Oleh",
"receiving_id" => "Id Penerima",
"receiving_type" => "Type Diterima",
"receivings" => "Barang Masuk",
"reorder_level" => "Level Pesan Ulang",
"report" => "Laporan",
"report_input" => "Input data Laporan",
"reports" => "Lihat dan Cetak Laporan",
"requisition" => "Daftar Permintaan",
"requisition_by" => "Daftar Permintaan Oleh",
"requisition_id" => "Identitas Peminta",
"requisition_item" => "Jenis Permintaan",
"requisition_item_quantity" => "Jumlah Permintaan",
"requisition_related_item" => "",
"requisition_related_item_total_quantity" => "Jumlah Item Barang",
"requisition_related_item_unit_quantity" => "Unit Item Barang",
"requisitions" => "Laporan Permintaan",
"returns" => "Retur",
"revenue" => "Pendapatan",
"sale_id" => "ID Penjualan",
"sale_type" => "Jenis Penjualan",
"sales" => "Penjualan",
"sales_amount" => "Jumlah Penjualan",
"sales_summary_report" => "Laporan Ringkasan Penjualan",
"sales_taxes" => "Pajak Penjualan",
"sales_taxes_summary_report" => "Laporan Ringkasan Pajak Penjualan",
"serial_number" => "No. Seri #",
"service_charge" => "",
"sold_by" => "Dijual Oleh",
"sold_items" => "",
"sold_to" => "Dijual Kepada",
"stock_location" => "Lokasi Stock",
"sub_total_value" => "Sub-total",
"subtotal" => "SubTotal",
"summary_reports" => "Laporan Ringkas",
"supplied_by" => "Pemasok",
"supplier" => "Pemasok",
"suppliers" => "Pemasok",
"suppliers_summary_report" => "Laporan Ringkasan Pemasok",
"tax" => "Pajak",
"tax_category" => "Kategori Pajak",
"tax_name" => "Nama Pajak",
"tax_percent" => "Persentase Pajak",
"tax_rate" => "Tarif Pajak",
"taxes" => "Pajak",
"taxes_summary_report" => "Laporan Ringkasan Pajak",
"total" => "Total",
"total_inventory_value" => "Total Nilai Persediaan",
"total_low_sell_quantity" => "Total Jumlah Penjualan yang Rendah",
"total_quantity" => "Total Kuantitas",
"total_retail" => "Total Faktur Eceran Nilai",
"trans_amount" => "Jumlah Transaksi",
"trans_due" => "Hutang",
"trans_group" => "Kelompok Transaksi",
"trans_nopay_sales" => "Penjualan tanpa pembayaran",
"trans_payments" => "Pembayaran",
"trans_refunded" => "Dikembalikan",
"trans_sales" => "Penjualan",
"trans_type" => "Tipe Transaksi",
"type" => "Tipe",
"unit_price" => "Harga Jual",
"used" => "Poin yang telah digunakan",
"work_orders" => "Perintah Kerja",
"zero_and_less" => "Stok habis dan minus",
'all' => "Semua",
'authority' => "Otoritas",
'canceled' => "Dibatalkan",
'categories' => "Kategori",
'categories_summary_report' => "Laporan Ringkasan Kategori",
'category' => "Kategori",
'code_canceled' => "BTL",
'code_invoice' => "INV",
'code_pos' => "POS",
'code_quote' => "Q",
'code_return' => "RET",
'code_type' => "Tipe",
'code_work_order' => "W/O",
'comments' => "Catatan",
'commission' => "",
'complete' => "Penjualan dan Retur yang sukses",
'completed_sales' => "Penjualan yang Sukses",
'confirm_delete' => "Anda yakin ingin menghapus masukan terpilih?",
'confirm_restore' => "Anda yakin ingin mengembalikan entri terpilih?",
'cost' => "Grosir",
'cost_price' => "Harga Beli",
'count' => "Jumlah",
'customer' => "Pelanggan",
'customers' => "Pelanggan",
'customers_summary_report' => "Laporan Ringkasan Pelanggan",
'date' => "Tanggal",
'date_range' => "Rentang Tanggal",
'description' => "Deskripsi",
'detailed_receivings_report' => "Laporan Detail Barang Masuk",
'detailed_receivings_report_input' => "",
'detailed_reports' => "Perincian Laporan",
'detailed_requisition_report' => "Rincian Daftar Laporan Permintaan",
'detailed_sales_report' => "Laporan Perincian Penjualan",
'discount' => "Diskon",
'discount_fixed' => "Diskon Tetap",
'discount_percent' => "Persen Diskon",
'discount_type' => "Tipe Diskon",
'discounts' => "Diskon",
'discounts_summary_report' => "Laporan Ringkasan Diskon",
'earned' => "Poin yang diperoleh",
'employee' => "Karyawan",
'employees' => "Karyawan",
'employees_summary_report' => "Laporan Ringkasan Karyawan",
'expenses' => "Biaya",
'expenses_amount' => "Jumlah",
'expenses_categories' => "Biaya",
'expenses_categories_summary_report' => "Laporan RIngkasan Kategori Biaya",
'expenses_category' => "Kategori",
'expenses_payment_amount' => "",
'expenses_tax_amount' => "Pajak",
'expenses_total_amount' => "Jumlah Total",
'expenses_total_tax_amount' => "Total Pajak",
'graphical_reports' => "Laporan Dalam Bentuk Grafis",
'inventory' => "Laporan Persediaan",
'inventory_low' => "Laporan Persediaan Rendah",
'inventory_low_report' => "Laporan Persediaan Rendah",
'inventory_reports' => "Laporan Persediaan",
'inventory_summary' => "Laporan Ringkasan Persediaan",
'inventory_summary_report' => "Laporan Ringkasan Persediaan",
'item' => "Produk/Item",
'item_count' => "Filter Jumlah Item",
'item_name' => "Nama Barang",
'item_number' => "Kode batang",
'items' => "Produk/Item",
'items_purchased' => "Produk Dibeli",
'items_received' => "Barang Masuk",
'items_summary_report' => "Laporan Ringkasan Produk/Item",
'jurisdiction' => "Ranah hukum",
'low_inventory' => "Kurang Persediaan",
'low_inventory_report' => "Laporan Persediaan Kurang",
'low_sell_quantity' => "Jumlah penjualan yang rendah",
'more_than_zero' => "Stok belum habis",
'name' => "Nama",
'no_reports_to_display' => "Tidak ada item untuk ditampilkan.",
'payment_type' => "Tipe Pembayaran",
'payments' => "Pembayaran",
'payments_summary_report' => "Laporan Ringkasan Pembayaran",
'profit' => "Keuntungan/Laba",
'quantity' => "Jumlah",
'quantity_purchased' => "Jumlah Dibeli",
'quotes' => "Penawaran",
'received_by' => "Diterima Oleh",
'receiving_id' => "Id Penerima",
'receiving_type' => "Type Diterima",
'receivings' => "Barang Masuk",
'reorder_level' => "Level pesan ulang",
'report' => "Laporan",
'report_input' => "Input data Laporan",
'reports' => "Lihat dan Cetak Laporan",
'requisition' => "Daftar Permintaan",
'requisition_by' => "Daftar Permintaan Oleh",
'requisition_id' => "Identitas Peminta",
'requisition_item' => "Jenis Permintaan",
'requisition_item_quantity' => "Jumlah Permintaan",
'requisition_related_item' => "",
'requisition_related_item_total_quantity' => "Jumlah Item Barang",
'requisition_related_item_unit_quantity' => "Unit Item Barang",
'requisitions' => "Laporan Permintaan",
'returns' => "Retur",
'revenue' => "Pendapatan",
'sale_id' => "ID Penjualan",
'sale_type' => "Jenis Penjualan",
'sales' => "Penjualan",
'sales_amount' => "Jumlah Penjualan",
'sales_summary_report' => "Laporan Ringkasan Penjualan",
'sales_taxes' => "Pajak Penjualan",
'sales_taxes_summary_report' => "Laporan Ringkasan Pajak Penjualan",
'serial_number' => "No. Seri #",
'service_charge' => "",
'sold_by' => "Dijual Oleh",
'sold_items' => "",
'sold_to' => "Dijual Kepada",
'stock_location' => "Lokasi Stock",
'sub_total_value' => "Sub-total",
'subtotal' => "SubTotal",
'summary_reports' => "Laporan Ringkas",
'supplied_by' => "Pemasok",
'supplier' => "Pemasok",
'suppliers' => "Pemasok",
'suppliers_summary_report' => "Laporan Ringkasan Pemasok",
'tax' => "Pajak",
'tax_category' => "Kategori Pajak",
'tax_name' => "Nama Pajak",
'tax_percent' => "Persentasi Pajak",
'tax_rate' => "Tarif Pajak",
'taxes' => "Pajak",
'taxes_summary_report' => "Laporan Ringkasan Pajak",
'total' => "Total",
'total_inventory_value' => "Total Nilai Persediaan",
'total_low_sell_quantity' => "Total Jumlah Penjualan yang Rendah",
'total_quantity' => "Total Kuantitas",
'total_retail' => "Total Faktur Eceran Nilai",
'trans_amount' => "Jumlah Transaksi",
'trans_due' => "Hutang",
'trans_group' => "Kelompok Transaksi",
'trans_nopay_sales' => "Penjualan tanpa pembayaran",
'trans_payments' => "Pembayaran",
'trans_refunded' => "Dikembalikan",
'trans_sales' => "Penjualan",
'trans_type' => "Tipe Transaksi",
'type' => "Tipe",
'unit_price' => "Harga Jual",
'used' => "Poin yang telah digunakan",
'work_orders' => "Perintah Kerja",
'zero_and_less' => "Stok habis dan minus",
];

View File

@@ -1,5 +1,6 @@
<?php
return [
return [
'customers_available_points' => "Poin tersedia",
'rewards_package' => "Hadiah",
'rewards_remaining_balance' => "Poin hadiah yang tersisa adalah ",
@@ -73,11 +74,11 @@
'entry' => "Entri",
'error_editing_item' => "mengubah item salah",
'find_or_scan_item' => "Cari/Scan Item",
'find_or_scan_item_or_receipt' => "Cari atau Scan Item atau Faktur",
'giftcard' => "Kupon Bonus",
'find_or_scan_item_or_receipt' => "Temukan atau pindai Item atau Faktur",
'giftcard' => "Kartu Hadiah",
'giftcard_balance' => "Nilai Kupon Bonus",
'giftcard_filter' => "",
'giftcard_number' => "Nomor Kartu Bonus",
'giftcard_number' => "Nomor Kartu Hadiah",
'group_by_category' => "Dikelompokkan berdasarkan Kategori",
'group_by_type' => "Dikelompokkan berdasarkan Jenis",
'hsn' => "HSN",
@@ -85,7 +86,7 @@
'include_prices' => "Termasuk Harga?",
'invoice' => "Faktur",
'invoice_confirm' => "Faktur ini akan dikirim ke",
'invoice_enable' => "Buat Faktur",
'invoice_enable' => "Nomor Faktur",
'invoice_filter' => "Faktur",
'invoice_no_email' => "Pelanggan ini tidak memiliki alamat email yang valid.",
'invoice_number' => "Nomor Nota",

View File

@@ -1,24 +1,25 @@
<?php
return [
"account_number" => "Nomor Akun Pemasok",
"agency_name" => "Nama",
"cannot_be_deleted" => "Tidak bisa dihapus pemasok yang dipilih, satu atau lebih dari pemasok yang dipilih memiliki penjualan.",
"category" => "Kategori",
"company_name" => "Nama Perusahaan",
"company_name_required" => "Nama Perusahaan wajib diisi.",
"confirm_delete" => "Apakah Anda yakin ingin menghapus pemasok yang dipilih?",
"confirm_restore" => "Anda yakin ingin mengembalikan Pemasok terpilih?",
"cost" => "Biaya Pemasok",
"error_adding_updating" => "Kesalahan Menambah / memperbarui data pemasok.",
"goods" => "Pemasok Barang",
"new" => "Pemasok Baru",
"none_selected" => "Anda belum memilih pemasok untuk dihapus.",
"one_or_multiple" => "Pemasok",
"successful_adding" => "Anda telah berhasil menambahkan data pemasok",
"successful_deleted" => "Anda telah berhasil menghapus data pemasok",
"successful_updating" => "Anda telah berhasil memperbarui data pemasok",
"supplier" => "Pemasok",
"supplier_id" => "ID",
"tax_id" => "ID Pajak",
"update" => "Ubah data Pemasok",
'account_number' => "Nomor Akun Pemasok",
'agency_name' => "Nama",
'cannot_be_deleted' => "Tidak bisa dihapus pemasok yang dipilih, satu atau lebih dari pemasok yang dipilih memiliki penjualan.",
'category' => "Kategori",
'company_name' => "Nama Perusahaan",
'company_name_required' => "Nama Perusahaan wajib diisi.",
'confirm_delete' => "Apakah Anda yakin ingin menghapus pemasok yang dipilih?",
'confirm_restore' => "Anda yakin ingin mengembalikan Pemasok terpilih?",
'cost' => "Biaya Pemasok",
'error_adding_updating' => "Kesalahan Menambah / memperbarui data pemasok.",
'goods' => "Pemasok Barang",
'new' => "Pemasok Baru",
'none_selected' => "Anda belum memilih pemasok untuk dihapus.",
'one_or_multiple' => "Pemasok",
'successful_adding' => "Anda telah berhasil menambahkan data pemasok",
'successful_deleted' => "Berhasil menghapus Kartu Hadiah",
'successful_updating' => "Anda telah berhasil memperbarui data pemasok",
'supplier' => "Pemasok",
'supplier_id' => "ID",
'tax_id' => "ID Pajak",
'update' => "Ubah data Pemasok",
];

View File

@@ -1,82 +1,83 @@
<?php
return [
"add_exception" => "Tambah pengecualian",
"cascade" => "Menurunkan",
"cascade_sequence" => "Urutan Penurunan",
"city" => "Kota",
"code" => "Kode",
"confirm_delete" => "Anda yakin ingin menghapus Kode Pajak ini? Aksi ini tidak dapat dibatalkan",
"confirm_restore" => "Anda yakin ingin mengembalikan Kode Pajak terpilih?",
"default_tax_category" => "Kategori Pajak Default",
"default_tax_rate" => "Taruf Pajak Default",
"error_adding_updating" => "Penambahan atau pembaharuan Kode Pajak gagal",
"group_seq" => "Urutan grup",
"jurisdiction_name" => "Nama Yuridiksi",
"name" => "Nama",
"new" => "Pajak baru",
"no_taxes" => "",
"no_taxes_to_display" => "Tidak ada Kode Pajak yang dapat ditampilkan",
"reporting_authority" => "Otoritas Pelaporan",
"round_half_down" => "Turun setengah",
"round_half_even" => "Setengah Genap",
"round_half_odd" => "Setengah Ganjil",
"round_half_up" => "Naikkan Setengah",
"rounding_code" => "Kode Pembulatan",
"sales_tax" => "Pajak Penjualan",
"sales_tax_by_invoice" => "Pajak Penjualan berdasarkan faktur",
"sequence" => "Urutan",
"state" => "Status",
"successful_deleted" => "Anda berhasil dihapus",
"tax_categories" => "Kategori Pajak",
"tax_categories_configuration" => "Konfigurasi Kategori Pajak",
"tax_categories_saved_successfully" => "Perubahan Ketegori Pajak berhasil disimpan",
"tax_categories_saved_unsuccessfully" => "Perubahan Kategori Pajak tidak tersimpan",
"tax_category" => "Kategori pajak",
"tax_category_code" => "Kode Kategori Pajak",
"tax_category_duplicate" => "Kategori pajak ganda",
"tax_category_invalid_chars" => "terdapat karakter yang salah dalam nama kategori pajak",
"tax_category_name" => "Nama Kategori Pajak",
"tax_category_new" => "Kategori Pajak baru",
"tax_category_required" => "Kategori Pajak dibutuhkan",
"tax_code" => "Kode Pajak",
"tax_code_cannot_be_deleted" => "Gagal menghapus Kode Pajak",
"tax_code_duplicate" => "Kode Pajak ganda",
"tax_code_invalid_chars" => "Terdapat karakter yang salah dalam Kode Pajak",
"tax_code_name" => "Nama Kode Pajak",
"tax_code_required" => "Kode pajak harus diisi",
"tax_code_successful_deleted" => "Anda berhasil menghapus Kode Pajak",
"tax_code_successful_updated" => "Anda berhasil memperbaharui",
"tax_code_successful_updating" => "Anda berhasil memperbaharui Kode Pajak",
"tax_code_successfully_added" => "Anda berhasil menambahkan",
"tax_code_type" => "jenis Kode Pajak",
"tax_codes" => "Kode Pajak",
"tax_codes_configuration" => "Konfigurasi Kode Pajak",
"tax_codes_saved_successfully" => "Perubahan Kode Pajak berhasil disimpan",
"tax_codes_saved_unsuccessfully" => "Perubahan Kode Pajak tidak tersimpan",
"tax_excluded" => "Pengecualian Pajak",
"tax_group" => "Grup Pajak",
"tax_group_not_unique" => "Grup Pajak {0} tidak unik",
"tax_group_sequence" => "Urutan Grup Pajak",
"tax_included" => "Termasuk pajak",
"tax_jurisdiction" => "Yuridiksi Pajak",
"tax_jurisdiction_duplicate" => "Yuridiksi Pajak ganda",
"tax_jurisdiction_invalid_chars" => "Karakter yang salah pada Nama Yuridiksi",
"tax_jurisdiction_required" => "Diperlukan yurisdiksi Pajak",
"tax_jurisdictions" => "Yurisdiksi Pajak",
"tax_jurisdictions_configuration" => "Konfigurasi Yurisdiksi Pajak",
"tax_jurisdictions_saved_successfully" => "Perubahan Yurisdiksi Pajak berhasil disimpan",
"tax_jurisdictions_saved_unsuccessfully" => "Perubahan Yurisdiksi Pajak tidak tersimpan",
"tax_rate" => "Tarif Pajak",
"tax_rate_configuration" => "Konfigurasi Tarif Pajak",
"tax_rate_error_adding_updating" => "Gagal menambahkan atau memperbaharui Tarif Pajak",
"tax_rate_numeric" => "Tarif Pajak harus berupa angka",
"tax_rate_required" => "Tarif Pajak harus diisi",
"tax_rate_successful_updated" => "Anda berhasil melakukan perubahan",
"tax_rate_successfully_added" => "Anda berhasil menambahkan",
"tax_rates" => "Tarif Pajak",
"tax_rates_configuration" => "Konfigurasi Tarif Pajak",
"tax_rounding" => "Pembulatan Pajak",
"tax_type" => "Jenis Pajak",
"update" => "Perbaharui Tarif Pajak",
"vat_tax" => "PPN",
'add_exception' => "Tambah pengecualian",
'cascade' => "Menurunkan",
'cascade_sequence' => "Urutan Penurunan",
'city' => "Kota",
'code' => "Kode",
'confirm_delete' => "Anda yakin ingin menghapus Kode Pajak ini? Aksi ini tidak dapat dibatalkan",
'confirm_restore' => "Anda yakin ingin mengembalikan Kode Pajak terpilih?",
'default_tax_category' => "Kategori Pajak Default",
'default_tax_rate' => "Taruf Pajak Default",
'error_adding_updating' => "Penambahan atau pembaharuan Kode Pajak gagal",
'group_seq' => "Urutan grup",
'jurisdiction_name' => "Nama Yuridiksi",
'name' => "Nama",
'new' => "Pajak baru",
'no_taxes' => "",
'no_taxes_to_display' => "Tidak ada Kode Pajak yang dapat ditampilkan",
'reporting_authority' => "Otoritas Pelaporan",
'round_half_down' => "Turun setengah",
'round_half_even' => "Setengah Genap",
'round_half_odd' => "Setengah Ganjil",
'round_half_up' => "Naikkan Setengah",
'rounding_code' => "Kode Pembulatan",
'sales_tax' => "Pajak Penjualan",
'sales_tax_by_invoice' => "Pajak Penjualan berdasarkan faktur",
'sequence' => "Urutan",
'state' => "Status",
'successful_deleted' => "Berhasil menghapus Kartu Hadiah",
'tax_categories' => "Kategori Pajak",
'tax_categories_configuration' => "Konfigurasi Kategori Pajak",
'tax_categories_saved_successfully' => "Perubahan Ketegori Pajak berhasil disimpan",
'tax_categories_saved_unsuccessfully' => "Perubahan Kategori Pajak tidak tersimpan",
'tax_category' => "Kategori pajak",
'tax_category_code' => "Kode Kategori Pajak",
'tax_category_duplicate' => "Kategori pajak ganda",
'tax_category_invalid_chars' => "terdapat karakter yang salah dalam nama kategori pajak",
'tax_category_name' => "Nama Kategori Pajak",
'tax_category_new' => "Kategori Pajak baru",
'tax_category_required' => "Kategori Pajak dibutuhkan",
'tax_code' => "Kode Pajak",
'tax_code_cannot_be_deleted' => "Gagal menghapus Kode Pajak",
'tax_code_duplicate' => "Kode Pajak ganda",
'tax_code_invalid_chars' => "Terdapat karakter yang salah dalam Kode Pajak",
'tax_code_name' => "Nama Kode Pajak",
'tax_code_required' => "Kode pajak harus diisi",
'tax_code_successful_deleted' => "Anda berhasil menghapus Kode Pajak",
'tax_code_successful_updated' => "Anda berhasil memperbaharui",
'tax_code_successful_updating' => "Anda berhasil memperbaharui Kode Pajak",
'tax_code_successfully_added' => "Anda berhasil menambahkan",
'tax_code_type' => "jenis Kode Pajak",
'tax_codes' => "Kode Pajak",
'tax_codes_configuration' => "Konfigurasi Kode Pajak",
'tax_codes_saved_successfully' => "Perubahan Kode Pajak berhasil disimpan",
'tax_codes_saved_unsuccessfully' => "Perubahan Kode Pajak tidak tersimpan",
'tax_excluded' => "Pengecualian Pajak",
'tax_group' => "Grup Pajak",
'tax_group_not_unique' => "Grup Pajak {0} tidak unik",
'tax_group_sequence' => "Urutan Grup Pajak",
'tax_included' => "Termasuk pajak",
'tax_jurisdiction' => "Yuridiksi Pajak",
'tax_jurisdiction_duplicate' => "Yuridiksi Pajak ganda",
'tax_jurisdiction_invalid_chars' => "Karakter yang salah pada Nama Yuridiksi",
'tax_jurisdiction_required' => "Diperlukan yurisdiksi Pajak",
'tax_jurisdictions' => "Yurisdiksi Pajak",
'tax_jurisdictions_configuration' => "Konfigurasi Yurisdiksi Pajak",
'tax_jurisdictions_saved_successfully' => "Perubahan Yurisdiksi Pajak berhasil disimpan",
'tax_jurisdictions_saved_unsuccessfully' => "Perubahan Yurisdiksi Pajak tidak tersimpan",
'tax_rate' => "Tarif Pajak",
'tax_rate_configuration' => "Konfigurasi Tarif Pajak",
'tax_rate_error_adding_updating' => "Gagal menambahkan atau memperbaharui Tarif Pajak",
'tax_rate_numeric' => "Tarif Pajak harus berupa angka",
'tax_rate_required' => "Tarif Pajak harus diisi",
'tax_rate_successful_updated' => "Anda berhasil melakukan perubahan",
'tax_rate_successfully_added' => "Anda berhasil menambahkan",
'tax_rates' => "Tarif Pajak",
'tax_rates_configuration' => "Konfigurasi Tarif Pajak",
'tax_rounding' => "Pembulatan Pajak",
'tax_type' => "Jenis Pajak",
'update' => "Perbaharui Tarif Pajak",
'vat_tax' => "PPN",
];

View File

@@ -52,7 +52,7 @@ return [
"expenses_tax_amount" => "Imposte",
"expenses_total_amount" => "Totale Importo",
"expenses_total_tax_amount" => "Totale Imposte",
"graphical_reports" => "Resoconto Geografico",
"graphical_reports" => "Resoconto Grafico",
"inventory" => "Inventario",
"inventory_low" => "Inventario Basso",
"inventory_low_report" => "Resoconto Inventario Basso",

View File

@@ -1,58 +1,59 @@
<?php
return [
"amount_due" => "",
"cancel_receiving" => "ยกเลิก",
"cannot_be_deleted" => "ไม่สามารถลบใบรับสินค้าได้",
"comments" => "ความคิดเห็น",
"complete_receiving" => "เสร็จสิ้น",
"confirm_cancel_receiving" => "คุณแน่ใจที่ต้องการล้างค่าใบรับสินค้าใช่หรือไม่? เมื่อล้างค่าแล้วทุกรายการจะถูกล้างออก",
"confirm_delete" => "คุณต้องการลบใบรับสินค้าใช่หรือไม่? หากลบแล้วจะไม่สามารถเรียกคืนได้อีก",
"confirm_finish_receiving" => "คุณต้องการบันทึกใบรับสินค้าใช่หรือไม่? เมื่อบันทึกแล้วไม่สามารถยกเลิกได้",
"confirm_restore" => "",
"cost" => "ต้นทุน",
"daily" => "",
"date" => "วันที่ใบรับสินค้า",
"date_required" => "ต้องบันทึกวันที่ที่ถูกต้อง",
"date_type" => "ต้องระบุวันที่",
"delete_entire_sale" => "ลบรายการขายทั้งหมด",
"discount" => "ส่วนลด %",
"edit" => "แก้ไข",
"edit_sale" => "แก้ไขรายการรับ",
"employee" => "พนักงาน",
"error_editing_item" => "แก้ไขสินค้าล้มเหลว",
"error_requisition" => "ไม่สามารถย้ายสินค้าคงคลังจากหรือไปยังที่เก็บสินค้าเดียวกัน",
"find_or_scan_item" => "ค้นหาสินค้า",
"find_or_scan_item_or_receipt" => "ค้นหาสินค้าหรือบิล",
"id" => "รายการสินค้าเข้า ID",
"item_name" => "ชื่อสินคัา",
"mode" => "ประเภทธุรกรรม",
"new_supplier" => "ผู้ผลิตรายใหม่",
"one_or_multiple" => "ใบรับสินค้า",
"print_after_sale" => "พิมพ์บิลหลังการขาย",
"quantity" => "จำนวน.",
"receipt" => "บิลสินค้าเข้า",
"receipt_number" => "ใบรับสินค้า #",
"receiving" => "รับสินค้า",
"reference" => "อ้างอิง",
"register" => "รับสินค้า",
"requisition" => "เบิกสินค้า",
"return" => "คืนสินค้า",
"select_supplier" => "เลือกคู่ค้า (ไม่ระบุก็ได้)",
"ship_pack" => "แพคการขนส่ง",
"start_typing_supplier_name" => "เริ่มต้นพิมพ์ชื่อผู้ผลิต...",
"stock" => "คลังสินค้า",
"stock_destination" => "คลังสินค้าปลายทาง",
"stock_locaiton" => "สถานที่เก็บสินค้า",
"stock_source" => "คลังสินค้าต้นทาง",
"successfully_deleted" => "คุณได้ทำการลบเรียบร้อยแล้ว",
"successfully_updated" => "ปรับปรุงใบรับสินค้าเรียบร้อยแล้ว",
"supplier" => "ผู้ผลิต",
"supplier_address" => "ที่อยู่",
"supplier_email" => "อีเมล์",
"supplier_location" => "ที่อยู่",
"total" => "รวม",
"transaction_failed" => "ทำรายการใบรับสินค้าล้มเหลว",
"unable_to_add_item" => "ไม่สามารถเพิ่มสินค้าได้",
"unsuccessfully_updated" => "ทำการปรับปรุง Receiving ไม่ได้",
"update" => "ปรับปรุง",
'amount_due' => "",
'cancel_receiving' => "ยกเลิก",
'cannot_be_deleted' => "ไม่สามารถลบใบรับสินค้าได้",
'comments' => "ความคิดเห็น",
'complete_receiving' => "เสร็จสิ้น",
'confirm_cancel_receiving' => "คุณแน่ใจที่ต้องการล้างค่าใบรับสินค้าใช่หรือไม่? เมื่อล้างค่าแล้วทุกรายการจะถูกล้างออก",
'confirm_delete' => "คุณต้องการลบใบรับสินค้าใช่หรือไม่? หากลบแล้วจะไม่สามารถเรียกคืนได้อีก",
'confirm_finish_receiving' => "คุณต้องการบันทึกใบรับสินค้าใช่หรือไม่? เมื่อบันทึกแล้วไม่สามารถยกเลิกได้",
'confirm_restore' => "",
'cost' => "ต้นทุน",
'daily' => "",
'date' => "วันที่ใบรับสินค้า",
'date_required' => "ต้องบันทึกวันที่ที่ถูกต้อง",
'date_type' => "ต้องระบุวันที่",
'delete_entire_sale' => "ลบรายการขายทั้งหมด",
'discount' => "ส่วนลด %",
'edit' => "แก้ไข",
'edit_sale' => "แก้ไขรายการรับ",
'employee' => "พนักงาน",
'error_editing_item' => "แก้ไขสินค้าล้มเหลว",
'error_requisition' => "ไม่สามารถย้ายสินค้าคงคลังจากหรือไปยังที่เก็บสินค้าเดียวกัน",
'find_or_scan_item' => "ค้นหาสินค้า",
'find_or_scan_item_or_receipt' => "ค้นหา หรือ แสกนรายการ หรือ ใบเสร็จ",
'id' => "รายการสินค้าเข้า ID",
'item_name' => "ชื่อสินคัา",
'mode' => "ประเภทธุรกรรม",
'new_supplier' => "ผู้ผลิตรายใหม่",
'one_or_multiple' => "ใบรับสินค้า",
'print_after_sale' => "พิมพ์บิลหลังการขาย",
'quantity' => "จำนวน.",
'receipt' => "บิลสินค้าเข้า",
'receipt_number' => "ใบรับสินค้า #",
'receiving' => "รับสินค้า",
'reference' => "อ้างอิง",
'register' => "รับสินค้า",
'requisition' => "เบิกสินค้า",
'return' => "คืนสินค้า",
'select_supplier' => "เลือกคู่ค้า (ไม่ระบุก็ได้)",
'ship_pack' => "แพคการขนส่ง",
'start_typing_supplier_name' => "เริ่มต้นพิมพ์ชื่อผู้ผลิต...",
'stock' => "คลังสินค้า",
'stock_destination' => "คลังสินค้าปลายทาง",
'stock_locaiton' => "สถานที่เก็บสินค้า",
'stock_source' => "คลังสินค้าต้นทาง",
'successfully_deleted' => "คุณได้ทำการลบเรียบร้อยแล้ว",
'successfully_updated' => "ปรับปรุงใบรับสินค้าเรียบร้อยแล้ว",
'supplier' => "ผู้ผลิต",
'supplier_address' => "ที่อยู่",
'supplier_email' => "อีเมล์",
'supplier_location' => "ที่อยู่",
'total' => "รวม",
'transaction_failed' => "ทำรายการใบรับสินค้าล้มเหลว",
'unable_to_add_item' => "ไม่สามารถเพิ่มสินค้าได้",
'unsuccessfully_updated' => "ทำการปรับปรุง Receiving ไม่ได้",
'update' => "ปรับปรุง",
];

View File

@@ -1,11 +1,12 @@
<?php
return [
"all" => "",
"columns" => "",
"hide_show_pagination" => "",
"loading" => "",
"page_from_to" => "",
"refresh" => "",
"rows_per_page" => "",
"toggle" => "",
'all' => "سب",
'columns' => "",
'hide_show_pagination' => "",
'loading' => "",
'page_from_to' => "",
'refresh' => "",
'rows_per_page' => "",
'toggle' => "",
];

View File

@@ -1,49 +1,50 @@
<?php
return [
"amount" => "",
"amount_number" => "",
"amount_required" => "",
"cancel_cashups" => "",
"cancel_cashups_enter" => "",
"cannot_be_deleted" => "",
"cash_difference" => "",
"close_date" => "",
"close_employee" => "",
"closed_amount_card" => "",
"closed_amount_cash" => "",
"closed_amount_check" => "",
"closed_amount_due" => "",
"closed_amount_giftcard" => "",
"closed_amount_total" => "",
"closed_date" => "",
"confirm_delete" => "",
"confirm_restore" => "",
"confirm_submit" => "",
"date_number" => "",
"date_required" => "",
"description" => "",
"enable_expected" => "",
"error_adding_updating" => "",
"giftcard" => "",
"id" => "",
"info" => "",
"info_employee" => "",
"is_deleted" => "",
"new" => "",
"no_cashups_to_display" => "",
"none_selected" => "",
"note" => "",
"one_or_multiple" => "",
"open_amount_cash" => "",
"open_date" => "",
"open_employee" => "",
"opened_date" => "",
"successful_adding" => "",
"successful_deleted" => "",
"successful_updating" => "",
"total" => "",
"transfer_amount_cash" => "",
"transfer_amount_cash_minus" => "",
"update" => "",
"warning" => "",
'amount' => "رقم",
'amount_number' => "",
'amount_required' => "",
'cancel_cashups' => "",
'cancel_cashups_enter' => "",
'cannot_be_deleted' => "",
'cash_difference' => "",
'close_date' => "",
'close_employee' => "",
'closed_amount_card' => "",
'closed_amount_cash' => "",
'closed_amount_check' => "",
'closed_amount_due' => "",
'closed_amount_giftcard' => "",
'closed_amount_total' => "",
'closed_date' => "",
'confirm_delete' => "",
'confirm_restore' => "",
'confirm_submit' => "",
'date_number' => "",
'date_required' => "",
'description' => "",
'enable_expected' => "",
'error_adding_updating' => "",
'giftcard' => "",
'id' => "",
'info' => "",
'info_employee' => "",
'is_deleted' => "",
'new' => "",
'no_cashups_to_display' => "",
'none_selected' => "",
'note' => "",
'one_or_multiple' => "",
'open_amount_cash' => "",
'open_date' => "",
'open_employee' => "",
'opened_date' => "",
'successful_adding' => "",
'successful_deleted' => "",
'successful_updating' => "",
'total' => "",
'transfer_amount_cash' => "",
'transfer_amount_cash_minus' => "",
'update' => "",
'warning' => "",
];

View File

@@ -1,88 +1,89 @@
<?php
return [
"address_1" => "",
"address_2" => "",
"admin" => "",
"city" => "",
"clerk" => "",
"close" => "",
"color" => "",
"comments" => "",
"common" => "",
"confirm_search" => "",
"copyrights" => "© 2010 - {0}",
"correct_errors" => "",
"country" => "",
"dashboard" => "",
"date" => "",
"delete" => "",
"det" => "",
"download_import_template" => "",
"edit" => "",
"email" => "",
"email_invalid_format" => "",
"export_csv" => "",
"export_csv_no" => "",
"export_csv_yes" => "",
"fields_required_message" => "",
"fields_required_message_unique" => "",
"first_name" => "",
"first_name_required" => "",
"first_page" => "",
"gender" => "",
"gender_female" => "",
"gender_male" => "",
"gender_undefined" => "",
"icon" => "",
"id" => "",
"import" => "",
"import_change_file" => "",
"import_csv" => "",
"import_full_path" => "",
"import_remove_file" => "",
"import_select_file" => "",
"inv" => "",
"last_name" => "",
"last_name_required" => "",
"last_page" => "",
"learn_about_project" => "",
"list_of" => "",
"logo" => "",
"logo_mark" => "",
"logout" => "",
"manager" => "",
"migration_needed" => "",
"new" => "",
"no" => "",
"no_persons_to_display" => "",
"none_selected_text" => "",
"or" => "",
"people" => "",
"phone_number" => "",
"phone_number_required" => "",
"please_visit_my" => "",
"position" => "",
"powered_by" => "",
"price" => "",
"print" => "",
"remove" => "",
"required" => "",
"restore" => "",
"return_policy" => "",
"search" => "",
"search_options" => "",
"searched_for" => "",
"software_short" => "",
"software_title" => "",
"state" => "",
"submit" => "",
"total_spent" => "",
"unknown" => "",
"view_recent_sales" => "",
"website" => "",
"welcome" => "",
"welcome_message" => "",
"yes" => "",
"you_are_using_ospos" => "",
"zip" => "",
'address_1' => "گھر کا پتہ",
'address_2' => "",
'admin' => "",
'city' => "",
'clerk' => "",
'close' => "",
'color' => "",
'comments' => "",
'common' => "",
'confirm_search' => "",
'copyrights' => "© 2010 - {0}",
'correct_errors' => "",
'country' => "",
'dashboard' => "",
'date' => "",
'delete' => "",
'det' => "",
'download_import_template' => "",
'edit' => "",
'email' => "",
'email_invalid_format' => "",
'export_csv' => "",
'export_csv_no' => "",
'export_csv_yes' => "",
'fields_required_message' => "",
'fields_required_message_unique' => "",
'first_name' => "",
'first_name_required' => "",
'first_page' => "",
'gender' => "",
'gender_female' => "",
'gender_male' => "",
'gender_undefined' => "",
'icon' => "",
'id' => "",
'import' => "",
'import_change_file' => "",
'import_csv' => "",
'import_full_path' => "",
'import_remove_file' => "",
'import_select_file' => "",
'inv' => "",
'last_name' => "",
'last_name_required' => "",
'last_page' => "",
'learn_about_project' => "",
'list_of' => "",
'logo' => "",
'logo_mark' => "",
'logout' => "",
'manager' => "",
'migration_needed' => "",
'new' => "",
'no' => "",
'no_persons_to_display' => "",
'none_selected_text' => "",
'or' => "",
'people' => "",
'phone_number' => "",
'phone_number_required' => "",
'please_visit_my' => "",
'position' => "",
'powered_by' => "",
'price' => "",
'print' => "",
'remove' => "",
'required' => "",
'restore' => "",
'return_policy' => "",
'search' => "",
'search_options' => "",
'searched_for' => "",
'software_short' => "",
'software_title' => "",
'state' => "",
'submit' => "",
'total_spent' => "",
'unknown' => "",
'view_recent_sales' => "",
'website' => "",
'welcome' => "",
'welcome_message' => "",
'yes' => "",
'you_are_using_ospos' => "",
'zip' => "",
];

View File

@@ -1,56 +1,57 @@
<?php
return [
"account_number" => "",
"account_number_duplicate" => "",
"available_points" => "",
"available_points_value" => "",
"average" => "",
"avg_discount" => "",
"basic_information" => "",
"cannot_be_deleted" => "",
"company_name" => "",
"confirm_delete" => "",
"confirm_restore" => "",
"consent" => "",
"consent_required" => "",
"csv_import_failed" => "",
"csv_import_nodata_wrongformat" => "",
"csv_import_partially_failed" => "",
"csv_import_success" => "",
"customer" => "",
"date" => "",
"discount" => "",
"discount_fixed" => "",
"discount_percent" => "",
"discount_type" => "",
"email_duplicate" => "",
"employee" => "",
"error_adding_updating" => "",
"import_items_csv" => "",
"mailchimp_activity_click" => "",
"mailchimp_activity_lastopen" => "",
"mailchimp_activity_open" => "",
"mailchimp_activity_total" => "",
"mailchimp_activity_unopen" => "",
"mailchimp_email_client" => "",
"mailchimp_info" => "",
"mailchimp_member_rating" => "",
"mailchimp_status" => "",
"mailchimp_vip" => "",
"max" => "",
"min" => "",
"new" => "",
"none_selected" => "",
"one_or_multiple" => "",
"quantity" => "",
"stats_info" => "",
"successful_adding" => "",
"successful_deleted" => "",
"successful_updating" => "",
"tax_code" => "",
"tax_id" => "",
"taxable" => "",
"total" => "",
"update" => "",
"rewards_package" => "",
'account_number' => "اکاوٗنٹ",
'account_number_duplicate' => "",
'available_points' => "",
'available_points_value' => "",
'average' => "",
'avg_discount' => "",
'basic_information' => "",
'cannot_be_deleted' => "",
'company_name' => "",
'confirm_delete' => "",
'confirm_restore' => "",
'consent' => "",
'consent_required' => "",
'csv_import_failed' => "",
'csv_import_nodata_wrongformat' => "",
'csv_import_partially_failed' => "",
'csv_import_success' => "",
'customer' => "",
'date' => "",
'discount' => "",
'discount_fixed' => "",
'discount_percent' => "",
'discount_type' => "",
'email_duplicate' => "",
'employee' => "",
'error_adding_updating' => "",
'import_items_csv' => "",
'mailchimp_activity_click' => "",
'mailchimp_activity_lastopen' => "",
'mailchimp_activity_open' => "",
'mailchimp_activity_total' => "",
'mailchimp_activity_unopen' => "",
'mailchimp_email_client' => "",
'mailchimp_info' => "",
'mailchimp_member_rating' => "",
'mailchimp_status' => "",
'mailchimp_vip' => "",
'max' => "",
'min' => "",
'new' => "",
'none_selected' => "",
'one_or_multiple' => "",
'quantity' => "",
'stats_info' => "",
'successful_adding' => "",
'successful_deleted' => "",
'successful_updating' => "",
'tax_code' => "",
'tax_id' => "",
'taxable' => "",
'total' => "",
'update' => "",
'rewards_package' => "",
];

View File

@@ -1,23 +1,24 @@
<?php
return [
"all_time" => "",
"apply" => "",
"cancel" => "",
"custom" => "",
"from" => "",
"last_30" => "",
"last_7" => "",
"last_financial_year" => "",
"last_month" => "",
"last_year" => "",
"same_month_last_year" => "",
"same_month_to_same_day_last_year" => "",
"this_financial_year" => "",
"this_month" => "",
"this_year" => "",
"to" => "",
"today" => "",
"today_last_year" => "",
"weekstart" => "",
"yesterday" => "",
'all_time' => "ہمیشہ",
'apply' => "",
'cancel' => "",
'custom' => "",
'from' => "",
'last_30' => "",
'last_7' => "",
'last_financial_year' => "",
'last_month' => "",
'last_year' => "",
'same_month_last_year' => "",
'same_month_to_same_day_last_year' => "",
'this_financial_year' => "",
'this_month' => "",
'this_year' => "",
'to' => "",
'today' => "",
'today_last_year' => "",
'weekstart' => "",
'yesterday' => "",
];

View File

@@ -1,5 +1,6 @@
<?php
return [
"no_permission_module" => "",
"unknown" => "",
'no_permission_module' => "آپ کو اس ماڈیول تک رسائی کی اجازت نہیں ہے",
'unknown' => "غیر متوقع رکاوٹ",
];

View File

@@ -1,50 +1,51 @@
<?php
return [
"add_item" => "",
"amount" => "",
"amount_number" => "",
"amount_required" => "",
"by_category" => "",
"cannot_be_deleted" => "",
"cash" => "",
"cash_filter" => "",
"categories_name" => "",
"category_required" => "",
"check" => "",
"check_filter" => "",
"confirm_delete" => "",
"confirm_restore" => "",
"credit" => "",
"credit_filter" => "",
"date" => "",
"date_number" => "",
"date_required" => "",
"debit" => "",
"debit_filter" => "",
"description" => "",
"due" => "",
"due_filter" => "",
"employee" => "",
"error_adding_updating" => "",
"expense_id" => "",
"expenses_employee" => "",
"info" => "",
"ip_address" => "",
"is_deleted" => "",
"name_required" => "",
"new" => "",
"new_supplier" => "",
"no_expenses_to_display" => "",
"none_selected" => "",
"one_or_multiple" => "",
"payment" => "",
"start_typing_supplier_name" => "",
"successful_adding" => "",
"successful_deleted" => "",
"successful_updating" => "",
"supplier_name" => "",
"supplier_tax_code" => "",
"tax_amount" => "",
"tax_amount_number" => "",
"update" => "",
'add_item' => "",
'amount' => "رقم",
'amount_number' => "",
'amount_required' => "",
'by_category' => "",
'cannot_be_deleted' => "زمرہ کے اخراجات کو حذف نہیں کیا جا سکا",
'cash' => "",
'cash_filter' => "",
'categories_name' => "",
'category_required' => "",
'check' => "",
'check_filter' => "",
'confirm_delete' => "",
'confirm_restore' => "",
'credit' => "",
'credit_filter' => "",
'date' => "",
'date_number' => "",
'date_required' => "",
'debit' => "",
'debit_filter' => "",
'description' => "",
'due' => "",
'due_filter' => "",
'employee' => "",
'error_adding_updating' => "",
'expense_id' => "",
'expenses_employee' => "",
'info' => "",
'ip_address' => "",
'is_deleted' => "",
'name_required' => "",
'new' => "",
'new_supplier' => "",
'no_expenses_to_display' => "",
'none_selected' => "",
'one_or_multiple' => "",
'payment' => "",
'start_typing_supplier_name' => "",
'successful_adding' => "",
'successful_deleted' => "",
'successful_updating' => "",
'supplier_name' => "",
'supplier_tax_code' => "",
'tax_amount' => "",
'tax_amount_number' => "",
'update' => "",
];

View File

@@ -1,22 +1,23 @@
<?php
return [
"category_name_required" => "",
"add_item" => "",
"cannot_be_deleted" => "",
"category_id" => "",
"confirm_delete" => "",
"confirm_restore" => "",
"description" => "",
"error_adding_updating" => "",
"info" => "",
"name" => "",
"new" => "",
"no_expenses_categories_to_display" => "",
"none_selected" => "",
"one_or_multiple" => "",
"quantity" => "",
"successful_adding" => "",
"successful_deleted" => "",
"successful_updating" => "",
"update" => "",
'category_name_required' => "اخراجات کے زمرے کا نام درکار ہے",
'add_item' => "زمرہ شامل کریں",
'cannot_be_deleted' => "زمرہ کے اخراجات کو حذف نہیں کیا جا سکا",
'category_id' => "شناخت",
'confirm_delete' => "کیا آپ واقعی منتخب کردہ اخراجات کے زمرے کو حذف کرنا چاہتے ہیں؟",
'confirm_restore' => "کیا آپ واقعی منتخب کردہ اخراجات کے زمرے کو بحال کرنا چاہتے ہیں؟",
'description' => "زمرے کے تفصیلات",
'error_adding_updating' => "",
'info' => "",
'name' => "",
'new' => "",
'no_expenses_categories_to_display' => "",
'none_selected' => "",
'one_or_multiple' => "",
'quantity' => "",
'successful_adding' => "",
'successful_deleted' => "",
'successful_updating' => "",
'update' => "",
];

View File

@@ -1,224 +1,225 @@
<?php
return [
"customers_available_points" => "",
"rewards_package" => "",
"rewards_remaining_balance" => "",
"account_number" => "",
"add_payment" => "",
"amount_due" => "",
"amount_tendered" => "",
"authorized_signature" => "",
"cancel_sale" => "",
"cash" => "",
"cash_1" => "",
"cash_2" => "",
"cash_3" => "",
"cash_4" => "",
"cash_adjustment" => "",
"cash_deposit" => "",
"cash_filter" => "",
"change_due" => "",
"change_price" => "",
"check" => "",
"check_balance" => "",
"check_filter" => "",
"close" => "",
"comment" => "",
"comments" => "",
"company_name" => "",
"complete" => "",
"complete_sale" => "",
"confirm_cancel_sale" => "",
"confirm_delete" => "",
"confirm_restore" => "",
"credit" => "",
"credit_deposit" => "",
"credit_filter" => "",
"current_table" => "",
"customer" => "",
"customer_address" => "",
"customer_discount" => "",
"customer_email" => "",
"customer_location" => "",
"customer_mailchimp_status" => "",
"customer_optional" => "",
"customer_required" => "",
"customer_total" => "",
"customer_total_spent" => "",
"daily_sales" => "",
"date" => "",
"date_range" => "",
"date_required" => "",
"date_type" => "",
"debit" => "",
"debit_filter" => "",
"delete" => "",
"delete_confirmation" => "",
"delete_entire_sale" => "",
"delete_successful" => "",
"delete_unsuccessful" => "",
"description_abbrv" => "",
"discard" => "",
"discard_quote" => "",
"discount" => "",
"discount_included" => "",
"discount_short" => "",
"due" => "",
"due_filter" => "",
"edit" => "",
"edit_item" => "",
"edit_sale" => "",
"email_receipt" => "",
"employee" => "",
"entry" => "",
"error_editing_item" => "",
"find_or_scan_item" => "",
"find_or_scan_item_or_receipt" => "",
"giftcard" => "",
"giftcard_balance" => "",
"giftcard_filter" => "",
"giftcard_number" => "",
"group_by_category" => "",
"group_by_type" => "",
"hsn" => "",
"id" => "",
"include_prices" => "",
"invoice" => "",
"invoice_confirm" => "",
"invoice_enable" => "",
"invoice_filter" => "",
"invoice_no_email" => "",
"invoice_number" => "",
"invoice_number_duplicate" => "",
"invoice_sent" => "",
"invoice_total" => "",
"invoice_type_custom_invoice" => "",
"invoice_type_custom_tax_invoice" => "",
"invoice_type_invoice" => "",
"invoice_type_tax_invoice" => "",
"invoice_unsent" => "",
"invoice_update" => "",
"item_insufficient_of_stock" => "",
"item_name" => "",
"item_number" => "",
"item_out_of_stock" => "",
"key_browser" => "",
"key_cancel" => "Cancels Current Quote/Invoice/Sale",
"key_customer_search" => "Customer Search",
"key_finish_quote" => "Finish Quote/Invoice witdout payment",
"key_finish_sale" => "Add Payment and Complete Invoice/Sale",
"key_full" => "",
"key_function" => "Function",
"key_help" => "Shortcuts",
"key_help_modal" => "Open Shortcuts Window",
"key_in" => "",
"key_item_search" => "Item Search",
"key_out" => "",
"key_payment" => "Add Payment",
"key_print" => "",
"key_restore" => "",
"key_search" => "",
"key_suspend" => "Suspend Current Sale",
"key_suspended" => "Show Suspended Sales",
"key_system" => "",
"key_tendered" => "Edit Amount Tendered",
"key_title" => "Sales Keyboard Shortcuts",
"mc" => "",
"mode" => "",
"must_enter_numeric" => "",
"must_enter_numeric_giftcard" => "",
"new_customer" => "",
"new_item" => "",
"no_description" => "",
"no_filter" => "",
"no_items_in_cart" => "",
"no_sales_to_display" => "",
"none_selected" => "",
"nontaxed_ind" => "",
"not_authorized" => "",
"one_or_multiple" => "",
"payment" => "",
"payment_amount" => "",
"payment_not_cover_total" => "",
"payment_type" => "",
"payments" => "",
"payments_total" => "",
"price" => "",
"print_after_sale" => "",
"quantity" => "",
"quantity_less_than_reorder_level" => "",
"quantity_less_than_zero" => "",
"quantity_of_items" => "",
"quote" => "",
"quote_number" => "",
"quote_number_duplicate" => "",
"quote_sent" => "",
"quote_unsent" => "",
"receipt" => "",
"receipt_no_email" => "",
"receipt_number" => "",
"receipt_sent" => "",
"receipt_unsent" => "",
"refund" => "",
"register" => "",
"remove_customer" => "",
"remove_discount" => "",
"return" => "",
"rewards" => "",
"rewards_balance" => "",
"sale" => "",
"sale_by_invoice" => "",
"sale_for_customer" => "",
"sale_time" => "",
"sales_tax" => "",
"sales_total" => "",
"select_customer" => "",
"send_invoice" => "",
"send_quote" => "",
"send_receipt" => "",
"send_work_order" => "",
"serial" => "",
"service_charge" => "",
"show_due" => "",
"show_invoice" => "",
"show_receipt" => "",
"start_typing_customer_name" => "",
"start_typing_item_name" => "",
"stock" => "",
"stock_location" => "",
"sub_total" => "",
"successfully_deleted" => "",
"successfully_restored" => "",
"successfully_suspended_sale" => "",
"successfully_updated" => "",
"suspend_sale" => "",
"suspended_doc_id" => "",
"suspended_sale_id" => "",
"suspended_sales" => "",
"table" => "",
"takings" => "",
"tax" => "",
"tax_id" => "",
"tax_invoice" => "",
"tax_percent" => "",
"taxed_ind" => "",
"total" => "",
"total_tax_exclusive" => "",
"transaction_failed" => "",
"unable_to_add_item" => "",
"unsuccessfully_deleted" => "",
"unsuccessfully_restored" => "",
"unsuccessfully_suspended_sale" => "",
"unsuccessfully_updated" => "",
"unsuspend" => "",
"unsuspend_and_delete" => "",
"update" => "",
"upi" => "",
"visa" => "",
"wholesale" => "",
"work_order" => "",
"work_order_number" => "",
"work_order_number_duplicate" => "",
"work_order_sent" => "",
"work_order_unsent" => "",
'customers_available_points' => "",
'rewards_package' => "",
'rewards_remaining_balance' => "",
'account_number' => "اکاوٗنٹ",
'add_payment' => "",
'amount_due' => "",
'amount_tendered' => "",
'authorized_signature' => "",
'cancel_sale' => "",
'cash' => "",
'cash_1' => "",
'cash_2' => "",
'cash_3' => "",
'cash_4' => "",
'cash_adjustment' => "",
'cash_deposit' => "",
'cash_filter' => "",
'change_due' => "",
'change_price' => "",
'check' => "",
'check_balance' => "",
'check_filter' => "",
'close' => "",
'comment' => "",
'comments' => "",
'company_name' => "",
'complete' => "",
'complete_sale' => "",
'confirm_cancel_sale' => "",
'confirm_delete' => "",
'confirm_restore' => "",
'credit' => "",
'credit_deposit' => "",
'credit_filter' => "",
'current_table' => "",
'customer' => "",
'customer_address' => "",
'customer_discount' => "",
'customer_email' => "",
'customer_location' => "",
'customer_mailchimp_status' => "",
'customer_optional' => "",
'customer_required' => "",
'customer_total' => "",
'customer_total_spent' => "",
'daily_sales' => "",
'date' => "",
'date_range' => "",
'date_required' => "",
'date_type' => "",
'debit' => "",
'debit_filter' => "",
'delete' => "",
'delete_confirmation' => "",
'delete_entire_sale' => "",
'delete_successful' => "",
'delete_unsuccessful' => "",
'description_abbrv' => "",
'discard' => "",
'discard_quote' => "",
'discount' => "",
'discount_included' => "",
'discount_short' => "",
'due' => "",
'due_filter' => "",
'edit' => "",
'edit_item' => "",
'edit_sale' => "",
'email_receipt' => "",
'employee' => "",
'entry' => "",
'error_editing_item' => "",
'find_or_scan_item' => "",
'find_or_scan_item_or_receipt' => "",
'giftcard' => "",
'giftcard_balance' => "",
'giftcard_filter' => "",
'giftcard_number' => "",
'group_by_category' => "",
'group_by_type' => "",
'hsn' => "",
'id' => "",
'include_prices' => "",
'invoice' => "",
'invoice_confirm' => "",
'invoice_enable' => "",
'invoice_filter' => "",
'invoice_no_email' => "",
'invoice_number' => "",
'invoice_number_duplicate' => "",
'invoice_sent' => "",
'invoice_total' => "",
'invoice_type_custom_invoice' => "",
'invoice_type_custom_tax_invoice' => "",
'invoice_type_invoice' => "",
'invoice_type_tax_invoice' => "",
'invoice_unsent' => "",
'invoice_update' => "",
'item_insufficient_of_stock' => "",
'item_name' => "",
'item_number' => "",
'item_out_of_stock' => "",
'key_browser' => "",
'key_cancel' => "Cancels Current Quote/Invoice/Sale",
'key_customer_search' => "Customer Search",
'key_finish_quote' => "Finish Quote/Invoice witdout payment",
'key_finish_sale' => "Add Payment and Complete Invoice/Sale",
'key_full' => "",
'key_function' => "Function",
'key_help' => "Shortcuts",
'key_help_modal' => "Open Shortcuts Window",
'key_in' => "",
'key_item_search' => "Item Search",
'key_out' => "",
'key_payment' => "Add Payment",
'key_print' => "",
'key_restore' => "",
'key_search' => "",
'key_suspend' => "Suspend Current Sale",
'key_suspended' => "Show Suspended Sales",
'key_system' => "",
'key_tendered' => "Edit Amount Tendered",
'key_title' => "Sales Keyboard Shortcuts",
'mc' => "",
'mode' => "",
'must_enter_numeric' => "",
'must_enter_numeric_giftcard' => "",
'new_customer' => "",
'new_item' => "",
'no_description' => "",
'no_filter' => "",
'no_items_in_cart' => "",
'no_sales_to_display' => "",
'none_selected' => "",
'nontaxed_ind' => "",
'not_authorized' => "",
'one_or_multiple' => "",
'payment' => "",
'payment_amount' => "",
'payment_not_cover_total' => "",
'payment_type' => "",
'payments' => "",
'payments_total' => "",
'price' => "",
'print_after_sale' => "",
'quantity' => "",
'quantity_less_than_reorder_level' => "",
'quantity_less_than_zero' => "",
'quantity_of_items' => "",
'quote' => "",
'quote_number' => "",
'quote_number_duplicate' => "",
'quote_sent' => "",
'quote_unsent' => "",
'receipt' => "",
'receipt_no_email' => "",
'receipt_number' => "",
'receipt_sent' => "",
'receipt_unsent' => "",
'refund' => "",
'register' => "",
'remove_customer' => "",
'remove_discount' => "",
'return' => "",
'rewards' => "",
'rewards_balance' => "",
'sale' => "",
'sale_by_invoice' => "",
'sale_for_customer' => "",
'sale_time' => "",
'sales_tax' => "",
'sales_total' => "",
'select_customer' => "",
'send_invoice' => "",
'send_quote' => "",
'send_receipt' => "",
'send_work_order' => "",
'serial' => "",
'service_charge' => "",
'show_due' => "",
'show_invoice' => "",
'show_receipt' => "",
'start_typing_customer_name' => "",
'start_typing_item_name' => "",
'stock' => "",
'stock_location' => "",
'sub_total' => "",
'successfully_deleted' => "",
'successfully_restored' => "",
'successfully_suspended_sale' => "",
'successfully_updated' => "",
'suspend_sale' => "",
'suspended_doc_id' => "",
'suspended_sale_id' => "",
'suspended_sales' => "",
'table' => "",
'takings' => "",
'tax' => "",
'tax_id' => "",
'tax_invoice' => "",
'tax_percent' => "",
'taxed_ind' => "",
'total' => "",
'total_tax_exclusive' => "",
'transaction_failed' => "",
'unable_to_add_item' => "",
'unsuccessfully_deleted' => "",
'unsuccessfully_restored' => "",
'unsuccessfully_suspended_sale' => "",
'unsuccessfully_updated' => "",
'unsuspend' => "",
'unsuspend_and_delete' => "",
'update' => "",
'upi' => "",
'visa' => "",
'wholesale' => "",
'work_order' => "",
'work_order_number' => "",
'work_order_number_duplicate' => "",
'work_order_sent' => "",
'work_order_unsent' => "",
];

View File

@@ -6,11 +6,13 @@ use App\Models\Attribute;
use App\Models\Item;
use App\Models\Item_kit_items;
use App\Models\Item_quantity;
use App\Models\Enums\Rounding_mode;
use App\Models\Receiving;
use App\Models\Stock_location;
use CodeIgniter\Session\Session;
use Config\OSPOS;
use ReflectionException;
/**
* Receiving library
@@ -26,6 +28,7 @@ class Receiving_lib
private Receiving $receiving;
private Stock_location $stock_location;
private Session $session;
private array $config;
public function __construct()
{
@@ -35,6 +38,7 @@ class Receiving_lib
$this->item_quantity = model(Item_quantity::class);
$this->receiving = model(Receiving::class);
$this->stock_location = model(Stock_location::class);
$this->config = config(OSPOS::class)->settings;
$this->session = session();
}
@@ -194,6 +198,31 @@ class Receiving_lib
$this->session->remove('recv_reference');
}
/**
* @return string
*/
public function get_term_days(): string
{
return $this->session->get('recv_term_days') ?? '';
}
/**
* @param string $term_days
* @return void
*/
public function set_term_days(string $term_days): void
{
$this->session->set('recv_term_days', $term_days);
}
/**
* @return void
*/
public function clear_term_days(): void //TODO: This function verb is inconsistent from the others. Consider refactoring to remove_reference()
{
$this->session->remove('recv_term_days');
}
/**
* @return bool
*/
@@ -516,6 +545,7 @@ class Receiving_lib
$this->remove_supplier();
$this->clear_comment();
$this->clear_reference();
$this->clear_term_days();
}
/**
@@ -554,4 +584,200 @@ class Receiving_lib
return $total;
}
/**
* @param string $payment_type
* @return void
*/
public function set_payment_type(string $payment_type): void
{
$this->session->set('payment_type', $payment_type);
}
/**
* @return string|null
*/
public function get_payment_type(): ?string
{
return $this->session->get('payment_type');
}
public function get_total_due(): float
{
return $this->get_total() - $this->get_payments_total();
}
public function get_payments_total(): string
{
$subtotal = '0.0';
$cash_mode_eligible = CASH_MODE_TRUE;
foreach($this->get_payments() as $payments)
{
if(!$payments['cash_adjustment'])
{
$subtotal = bcadd($payments['payment_amount'], $subtotal);
}
if(lang('Sales.cash') != $payments['payment_type'] && lang('Sales.cash_adjustment') != $payments['payment_type'])
{
$cash_mode_eligible = CASH_MODE_FALSE;
}
}
if($cash_mode_eligible && $this->session->get('cash_rounding'))
{
$this->session->set('cash_mode', CASH_MODE_TRUE);
}
return $subtotal;
}
/**
* Multiple Payments
*/
public function get_payments(): array
{
if(!$this->session->get('sales_payments'))
{
$this->set_payments ([]);
}
return $this->session->get('sales_payments');
}
/**
* Multiple Payments
*/
public function set_payments(array $payments_data): void
{
$this->session->set('sales_payments', $payments_data);
}
/**
* Adds a new payment to the payments array or updates an existing one.
* It will also disable cash_mode if a non-qualifying payment type is added.
* @param string $payment_id
* @param string $payment_amount
* @param int $cash_adjustment
*/
public function add_payment(string $payment_id, string $payment_amount, int $cash_adjustment = CASH_ADJUSTMENT_FALSE): void
{
$payments = $this->get_payments();
if(isset($payments[$payment_id]))
{
//payment_method already exists, add to payment_amount
$payments[$payment_id]['payment_amount'] = bcadd($payments[$payment_id]['payment_amount'], $payment_amount);
}
else
{
//add to existing array
$payment = [
$payment_id => [
'payment_type' => $payment_id,
'payment_amount' => $payment_amount,
'cash_refund' => 0,
'cash_adjustment' => $cash_adjustment
]
];
$payments += $payment;
}
if($this->session->get('cash_mode'))
{
if($this->session->get('cash_rounding') && $payment_id != lang('Sales.cash') && $payment_id != lang('Sales.cash_adjustment'))
{
$this->session->set('cash_mode', CASH_MODE_FALSE);
}
}
$this->set_payments($payments);
}
/**
* Multiple Payments
*/
public function edit_payment(string $payment_id, float $payment_amount): bool
{
$payments = $this->get_payments();
if(isset($payments[$payment_id]))
{
$payments[$payment_id]['payment_type'] = $payment_id;
$payments[$payment_id]['payment_amount'] = $payment_amount;
$this->set_payments($payments);
return true;
}
return false;
}
/**
* Delete the selected payment from the payment array and if cash rounding is enabled
* and the payment type is one of the cash types then automatically delete the other
* @param string $payment_id
*/
public function delete_payment(string $payment_id): void
{
$payments = $this->get_payments();
$decoded_payment_id = urldecode($payment_id);
unset($payments[$decoded_payment_id]);
$cash_rounding = $this->reset_cash_rounding();
if($cash_rounding)
{
if($decoded_payment_id == lang('Sales.cash'))
{
unset($payments[lang('Sales.cash_adjustment')]);
}
if($decoded_payment_id == lang('Sales.cash_adjustment'))
{
unset($payments[lang('Sales.cash')]);
}
}
$this->set_payments($payments);
}
/**
* Determines if cash rounding should be a consideration for this site
* It also set resets the cash mode to disabled which will then be re-evaluated when
* retrieving payments.
*/
public function reset_cash_rounding(): int
{
$cash_rounding_code = $this->config['cash_rounding_code'];
if(cash_decimals() < totals_decimals() || $cash_rounding_code == Rounding_mode::HALF_FIVE)
{
$cash_rounding = 1;
}
else
{
$cash_rounding = 0;
}
$this->session->set('cash_rounding', $cash_rounding);
$this->session->set('cash_mode', CASH_MODE_FALSE);
return $cash_rounding;
}
/**
* @param string $total
* @return string
*/
public function check_for_cash_rounding(string $total): string
{
$cash_decimals = cash_decimals();
$cash_rounding_code = $this->config['cash_rounding_code'];
return Rounding_mode::round_number($cash_rounding_code, (float)$total, $cash_decimals);
}
public function clear_payments(): void
{
$this->set_payments([]);
}
}

View File

@@ -19,26 +19,25 @@ class Token_lib
*/
public function render(string $tokened_text, array $tokens = [], $save = true): string
{
$config = config(OSPOS::class)->settings;
$formatter = new IntlDateFormatter(
$config['number_locale'], // Locale
IntlDateFormatter::FULL, // Date type
IntlDateFormatter::FULL // Time type
);
//Apply the transformation for the "%" tokens if any are used
if(str_contains($tokened_text, '%'))
// Apply the transformation for the "%" tokens if any are used
if(strpos($tokened_text, '%') !== false)
{
$tokened_text = $formatter->format(new DateTime());
$tokened_text = strftime($tokened_text); //TODO: these need to be converted to IntlDateFormatter::format()
}
//Call scan to build an array of all tokens used in the text to be transformed
// Call scan to build an array of all of the tokens used in the text to be transformed
$token_tree = $this->scan($tokened_text);
if(empty($token_tree))
{
return str_contains($tokened_text, '%') ? $formatter->format(new DateTime()) : $tokened_text;
if(strpos($tokened_text, '%') !== false)
{
return strftime($tokened_text);
}
else
{
return $tokened_text;
}
}
$token_values = [];

View File

@@ -547,7 +547,7 @@ class Attribute extends Model
{
$builder = $this->db->table('attribute_definitions');
$success = $builder->insert($definition_data);
$definition_data['definition_id'] = $this->db->insertID();
$definition_data['definition_id'] = $this->getInsertID();
}
}
@@ -875,7 +875,7 @@ class Attribute extends Model
$builder->set(["attribute_$data_type" => $attribute_value]);
$builder->insert();
$attribute_id = $this->db->insertID();
$attribute_id = $this->getInsertID();
}
$data = [

View File

@@ -43,6 +43,7 @@ class Item extends Model
'hsn_code'
];
/**
* Determines if a given item_id is an item
*/

View File

@@ -104,7 +104,7 @@ class Receiving extends Model
/**
* @throws ReflectionException
*/
public function save_value(array $items, int $supplier_id, int $employee_id, string $comment, string $reference, string $payment_type, int $receiving_id = NEW_ENTRY): int //TODO: $receiving_id gets overwritten before it's evaluated. It doesn't make sense to pass this here.
public function save_value(array $items, int $supplier_id, int $employee_id, string $comment, string $reference, string $term_days, string $payment_type, int $receiving_id = NEW_ENTRY): int //TODO: $receiving_id gets overwritten before it's evaluated. It doesn't make sense to pass this here.
{
$attribute = model(Attribute::class);
$inventory = model('Inventory');
@@ -123,7 +123,8 @@ class Receiving extends Model
'employee_id' => $employee_id,
'payment_type' => $payment_type,
'comment' => $comment,
'reference' => $reference
'reference' => $reference,
'term_days' => $term_days
];
//Run these queries as a transaction, we want to make sure we do all or nothing
@@ -187,7 +188,7 @@ class Receiving extends Model
$inventory->insert($inv_data, false);
$attribute->copy_attribute_links($item_data['item_id'], 'receiving_id', $receiving_id);
$supplier = $supplier->get_info($supplier_id); //TODO: supplier is never used after this.
// $supplier = $supplier->get_info($supplier_id); //TODO: supplier is never used after this.
}
$this->db->transComplete();
@@ -195,6 +196,153 @@ class Receiving extends Model
return $this->db->transStatus() ? $receiving_id : -1;
}
/**
* Save a requisition to the `ospos_receivings` and `ospos_receivings_items` tables
* and update stock quantities in the respective locations.
*
* @throws ReflectionException
*/
public function save_requisition(array $items, int $employee_id, string $comment, string $reference, int $stock_source, int $stock_destination): int
{
$inventory = model('Inventory');
$item_quantity_model = model(Item_quantity::class);
if (count($items) == 0) {
return -1; // No items to save
}
// Prepare the receiving data
$receivings_data = [
'receiving_time' => date('Y-m-d H:i:s'),
'employee_id' => $employee_id,
'comment' => $comment,
'reference' => $reference,
'total' => 0, // This will be updated later
'amount_change' => 0,
'amount_tendered' => 0,
'operation_type' => 'Requisition',
];
// Run these queries as a transaction
$this->db->transStart();
// Insert into `ospos_receivings`
$builder = $this->db->table('ospos_receivings');
$builder->insert($receivings_data);
$receiving_id = $this->db->insertID();
if (!$receiving_id) {
log_message('error', 'Failed to insert requisition header: ' . print_r($receivings_data, true));
$this->db->transRollback();
return -1;
}
// Insert items into `ospos_receivings_items`
$builder = $this->db->table('ospos_receivings_items');
$total_cost = 0;
foreach ($items as $item_data) {
$receivings_items_data = [
'receiving_id' => $receiving_id,
'item_id' => $item_data['item_id'],
'line' => $item_data['line'],
'description' => $item_data['description'] ?? '',
'serialnumber' => $item_data['serialnumber'] ?? '',
'quantity_purchased' => $item_data['quantity'],
'item_cost_price' => $item_data['price'],
'item_unit_price' => $item_data['price'],
'discount' => $item_data['discount'] ?? 0,
'discount_type' => $item_data['discount_type'] ?? 0,
'item_location' => $item_data['item_location'] ?? 1,
'receiving_quantity' => $item_data['receiving_quantity'] ?? 1,
];
$builder->insert($receivings_items_data);
if (!$this->db->affectedRows()) {
log_message('error', 'Failed to insert requisition item: ' . print_r($receivings_items_data, true));
$this->db->transRollback();
return -1;
}
// Calculate the total cost
$total_cost += ($item_data['price'] * $item_data['quantity']) - ($item_data['discount'] ?? 0);
// Update stock quantities
$item_id = $item_data['item_id'] > 0 ? $item_data['item_id'] : 0;
$quantity = $item_data['quantity'] > 0 ? $item_data['quantity'] : 0;
if ($item_id === 0 || $quantity === 0) {
continue; // Skip if item or quantity is invalid
}
// Subtract from stock at the source
$source_quantity = $item_quantity_model->get_item_quantity($item_id, $stock_source);
$item_quantity_model->save_value([
'quantity' => $source_quantity->quantity - $quantity,
'item_id' => $item_id,
'location_id' => $stock_source,
], $item_id, $stock_source);
// Add to stock at the destination
$destination_quantity = $item_quantity_model->get_item_quantity($item_id, $stock_destination);
$item_quantity_model->save_value([
'quantity' => $destination_quantity->quantity + $quantity,
'item_id' => $item_id,
'location_id' => $stock_destination,
], $item_id, $stock_destination);
// Register inventory for the outgoing location (only if not already registered)
$recv_remarks = 'REQ ' . $receiving_id;
$inv_data_source = [
'trans_date' => date('Y-m-d H:i:s'),
'trans_items' => $item_id,
'trans_user' => $employee_id,
'trans_location' => $stock_source,
'trans_comment' => $recv_remarks . ' OUT',
'trans_inventory' => -$quantity,
];
$existing_source = $inventory->where([
'trans_items' => $item_id,
'trans_location' => $stock_source,
'trans_comment' => $recv_remarks . ' OUT'
])->countAllResults();
if ($existing_source === 0) {
$inventory->insert($inv_data_source, false);
}
// Register inventory for the incoming location (only if not already registered)
$inv_data_destination = [
'trans_date' => date('Y-m-d H:i:s'),
'trans_items' => $item_id,
'trans_user' => $employee_id,
'trans_location' => $stock_destination,
'trans_comment' => $recv_remarks . ' IN',
'trans_inventory' => $quantity,
];
$existing_destination = $inventory->where([
'trans_items' => $item_id,
'trans_location' => $stock_destination,
'trans_comment' => $recv_remarks . ' IN'
])->countAllResults();
if ($existing_destination === 0) {
$inventory->insert($inv_data_destination, false);
}
}
// Update the total cost in ospos_receivings
$this->db->table('ospos_receivings')
->where('receiving_id', $receiving_id)
->update(['total' => $total_cost]);
if (!$this->db->transComplete()) {
log_message('error', 'Transaction failed for requisition: ' . print_r($receivings_data, true));
return -1;
}
return $receiving_id;
}
/**
* @throws ReflectionException
@@ -364,4 +512,9 @@ class Receiving extends Model
$this->db->query($sql);
}
public function save_payment(array $payment_data): bool
{
return $this->db->table('ospos_receivings_payments')->insert($payment_data);
}
}

View File

@@ -143,7 +143,7 @@
?>
<tr>
<td colspan="3" style='text-align:right;'><?= lang('Sales.amount_tendered') ?></td>
<td><div class="total-value"><?= to_currency($amount_tendered) ?></div></td>
<td><div class="total-value">0.00</div></td>
</tr>
<tr>

View File

@@ -155,77 +155,76 @@ if (isset($success))
<td><?= anchor("$controller_name/deleteItem/$line", '<span class="glyphicon glyphicon-trash"></span>') ?></td>
<td><?= esc($item['item_number']) ?></td>
<td style="text-align:center;">
<?= esc($item['name'] . ' '. implode(' ', [$item['attribute_values'], $item['attribute_dtvalues']])) ?><br /> <?= '[' . to_quantity_decimals($item['in_stock']) . ' in ' . $item['stock_name'] . ']' ?>
<?= esc($item['name'] . ' ' . implode(' ', [$item['attribute_values'], $item['attribute_dtvalues']])) ?><br />
<?= '[' . to_quantity_decimals($item['in_stock']) . ' in ' . $item['stock_name'] . ']' ?>
<?= form_hidden('location', (string)$item['item_location']) ?>
</td>
<?php
if ($items_module_allowed && $mode != 'requisition')
{
?>
<td><?= form_input ([
<?php if ($items_module_allowed && $mode != 'requisition') { ?>
<td><?= form_input([
'name' => 'price',
'class' => 'form-control input-sm',
'value' => to_currency_no_money($item['price']),
'value' => (string)to_currency_no_money($item['price']),
'onClick' => 'this.select();'
]) ?></td>
<?php
}
else
{
?>
<?php } else { ?>
<td>
<?= $item['price'] ?>
<?= form_hidden('price', to_currency_no_money($item['price'])) ?>
<?= (string)$item['price'] ?>
<?= form_hidden('price', (string)to_currency_no_money($item['price'])) ?>
</td>
<?php
}
?>
<?php } ?>
<td><?= form_input (['name' => 'quantity', 'class' => 'form-control input-sm', 'value' => to_quantity_decimals($item['quantity']),'onClick' => 'this.select();']) ?></td>
<td><?= form_input([
'name' => 'quantity',
'class' => 'form-control input-sm',
'value' => (string)to_quantity_decimals($item['quantity']),
'onClick' => 'this.select();'
]) ?></td>
<td><?= form_dropdown(
'receiving_quantity',
$item['receiving_quantity_choices'],
$item['receiving_quantity'],
['class' => 'form-control input-sm']
) ?></td>
'receiving_quantity',
$item['receiving_quantity_choices'],
(string)$item['receiving_quantity'],
['class' => 'form-control input-sm']
) ?></td>
<?php
if ($items_module_allowed && $mode != 'requisition')
{
?>
<?php if ($items_module_allowed && $mode != 'requisition') { ?>
<td>
<div class="input-group">
<?= form_input (['name' => 'discount', 'class' => 'form-control input-sm', 'value' => $item['discount_type'] ? to_currency_no_money($item['discount']) : to_decimals($item['discount']), 'onClick' => 'this.select();']) ?>
<span class="input-group-btn">
<?= form_checkbox ([
'id' => 'discount_toggle',
'name' => 'discount_toggle',
'value' => 1,
'data-toggle' => "toggle",
'data-size' => 'small',
'data-onstyle' => 'success',
'data-on' => '<b>' . $config['currency_symbol'] .'</b>',
'data-off' => '<b>%</b>',
'data-line' => $line,
'checked' => $item['discount_type'] == 1
<div class="input-group">
<?= form_input([
'name' => 'discount',
'class' => 'form-control input-sm',
'value' => (string)($item['discount_type'] ? to_currency_no_money($item['discount']) : to_decimals($item['discount'])),
'onClick' => 'this.select();'
]) ?>
</span>
</div>
</td>
<?php
}
else
{
?>
<td><?= $item['discount'] ?></td>
<?= form_hidden('discount', $item['discount']) ?>
<?php
}
?>
<span class="input-group-btn">
<?= form_checkbox([
'id' => 'discount_toggle',
'name' => 'discount_toggle',
'value' => 1,
'data-toggle' => "toggle",
'data-size' => 'small',
'data-onstyle' => 'success',
'data-on' => '<b>' . $config['currency_symbol'] . '</b>',
'data-off' => '<b>%</b>',
'data-line' => $line,
'checked' => $item['discount_type'] == 1
]) ?>
</span>
</div>
</td>
<?php } else { ?>
<td><?= (string)$item['discount'] ?></td>
<?= form_hidden('discount', (string)$item['discount']) ?>
<?php } ?>
<td>
<?= to_currency(($item['discount_type'] == PERCENT) ? $item['price']*$item['quantity']*$item['receiving_quantity'] - $item['price'] * $item['quantity'] * $item['receiving_quantity'] * $item['discount'] / 100 : $item['price']*$item['quantity']*$item['receiving_quantity'] - $item['discount']) ?></td>
<td><a href="javascript:$('#<?= esc("cart_$line", 'js') ?>').submit();" title=<?= lang(ucfirst($controller_name) .'.update') ?> ><span class="glyphicon glyphicon-refresh"></span></a></td>
<?= to_currency(
($item['discount_type'] == PERCENT)
? $item['price'] * $item['quantity'] * $item['receiving_quantity'] - $item['price'] * $item['quantity'] * $item['receiving_quantity'] * $item['discount'] / 100
: $item['price'] * $item['quantity'] * $item['receiving_quantity'] - $item['discount']
) ?>
</td>
<td><a href="javascript:$('#<?= esc("cart_$line", 'js') ?>').submit();" title=<?= lang(ucfirst($controller_name) . '.update') ?>><span class="glyphicon glyphicon-refresh"></span></a></td>
</tr>
<tr>
<?php
@@ -375,6 +374,53 @@ if (isset($success))
</tr>
</table>
<?= form_open("$controller_name/addPayment", ['id' => 'add_payment_form', 'class' => 'form-horizontal']) ?>
<section class="mainContent">
<div class="formContainer">
<form action="">
<fieldset class="fieldInput">
<div class="dropdown">
<?= form_dropdown('payment_type', $payment_options, $selected_payment_type, ['id' => 'payment_types', 'class' => 'dropdown-toggle', 'data-style' => 'btn-default btn-sm', 'data-width' => 'fit']) ?>
</div>
<?= form_input (['name' => 'amount_tendered', 'id' => 'amount_tendered', 'class' => 'form-input', 'value' => to_currency_no_money($amount_due), 'size' => '5', 'tabindex' => ++$tabindex, 'onClick' => 'this.select();']) ?>
<?= form_input (['name' => 'amount_tendered', 'id' => 'amount_tendered', 'class' => 'form-input', 'disabled' => true, 'value' => to_currency_no_money($amount_due), 'size' => '5', 'tabindex' => ++$tabindex]) ?>
<button type="submit" class="form-submit" id='add_payment_button' tabindex="<?= ++$tabindex ?>"><i class="bi bi-credit-card-fill"></i> Pagar</button>
</fieldset>
</form>
</div>
</section>
<?= form_close() ?>
<table class="sales_table_100" id="registersss">
<thead>
<tr>
<th style="width: 10%;"><?= lang('Common.delete') ?></th>
<th style="width: 60%;"><?= lang(ucfirst($controller_name) .'.payment_type') ?></th>
<th style="width: 20%;"><?= lang(ucfirst($controller_name) .'.payment_amount') ?></th>
</tr>
</thead>
<tbody id="payment_contents">
<?php
$payment_types = [];
foreach($payments as $payment_id => $payment)
{
$payment_types[] = $payment['payment_type'];
?>
<tr>
<td><?= anchor("$controller_name/deletePayment/$payment_id", '<span class="glyphicon glyphicon-trash"></span>') ?></td>
<td><?= esc($payment['payment_type']) ?></td>
<td style="text-align: right;"><?= to_currency($payment['payment_amount']) ?></td>
</tr>
<?php
}
$payment_types_string = implode(', ', $payment_types);
?>
</tbody>
</table>
<?php
if(count($cart) > 0)
{

View File

@@ -53,8 +53,6 @@
.bootstrapTable({
columns: <?= transform_headers(esc($headers), true, false) ?>,
stickyHeader: true,
stickyHeaderOffsetLeft: $('#table').offset().left + 'px',
stickyHeaderOffsetRight: $('#table').offset().right + 'px',
pageSize: <?= $config['lines_per_page'] ?>,
sortable: true,
showExport: true,

View File

@@ -62,8 +62,6 @@
.bootstrapTable({
columns: <?= transform_headers(esc($headers['summary']), true) ?>,
stickyHeader: true,
stickyHeaderOffsetLeft: $('#table').offset().left + 'px',
stickyHeaderOffsetRight: $('#table').offset().right + 'px',
pageSize: <?= $config['lines_per_page'] ?>,
pagination: true,
sortable: true,

View File

@@ -31,9 +31,9 @@ gulp.task('clean', function () {
});
gulp.task('compress', function() {
const sources = ['public/**', 'vendor/**', '*.md', 'LICENSE', 'docker*', 'docker/**', 'Dockerfile', '**/.htaccess', 'writable/*'] ;
gulp.src(sources).pipe(tar('opensourcepos.tar')).pipe(gzip()).pipe(gulp.dest('dist'));
return gulp.src(sources).pipe(zip('opensourcepos.zip')).pipe(gulp.dest('dist'));
const sources = ['app*/**/*', 'public*/**/*', 'vendor*/**/*', '*.md', 'LICENSE', 'docker*', 'Dockerfile', '**/.htaccess', 'writable*/**/*'] ;
gulp.src(sources, {encoding: false}).pipe(tar('opensourcepos.tar')).pipe(gulp.dest('dist'));
return gulp.src(sources, {encoding: false}).pipe(zip('opensourcepos.zip')).pipe(gulp.dest('dist'));
});
// Copy the bootswatch styles into their own folder so OSPOS can select one from the collection

View File

@@ -1,5 +1,5 @@
{
"name": "opensourcepos",
"name": "@opensourcepos/opensourcepos",
"version": "3.4.0",
"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.",
"main": "index.php",
@@ -10,6 +10,7 @@
"objecttothis <objecttothis - at - gmail.com>",
"SteveIreland <stevei - at - ruledomain.com>"
],
"files": ["dist/opensourcepos.$version.tgz"],
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
},
@@ -17,6 +18,10 @@
"point-of-sale",
"POS"
],
"repository": {
"type": "git",
"url": "https://github.com/opensourcepos/opensourcepos"
},
"scripts": {
"build": "gulp default",
"gulp": "gulp"

View File

@@ -21,8 +21,7 @@
if (button_id == 'submit' && (!submitted && btn_id != "btnNew")) {
form.submit();
validator.valid() && $('#submit').prop('disabled', true).css('opacity', 0.5);
$('#submit').prop('disabled', true).css('opacity', 0.5);
}
return false;
}
@@ -215,8 +214,6 @@
.bootstrapTable($.extend(options, {
columns: options.headers,
stickyHeader: true,
stickyHeaderOffsetLeft: $('#table').offset().left + 'px',
stickyHeaderOffsetRight: $('#table').offset().right + 'px',
url: options.resource + '/search',
sidePagination: 'server',
selectItemName: 'btSelectItem',