Compare commits

...

85 Commits

Author SHA1 Message Date
jekkos
f3fae110d6 Update install instructions + remove build on tag 2025-03-23 22:49:27 +01:00
jekkos
e9e82e4e50 Set release version to 3.4 2025-03-11 21:08:11 +01:00
Chathura Dilushanka
2bd38737e1 Update locale_config.php 2025-03-04 21:36:39 +01:00
JoseLuisKukMagana
2a789bb583 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (145 of 145 strings)

Translation: opensourcepos/reports
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/reports/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
e8a79910fe Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (53 of 53 strings)

Translation: opensourcepos/customers
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/customers/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
9bfe6c7c4e Translated using Weblate (Spanish (Mexico))
Currently translated at 98.8% (84 of 85 strings)

Translation: opensourcepos/common
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/common/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
bc0e2c6833 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (21 of 21 strings)

Translation: opensourcepos/suppliers
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/suppliers/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
196375d594 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (327 of 327 strings)

Translation: opensourcepos/config
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/config/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
fafba87894 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (12 of 12 strings)

Translation: opensourcepos/login
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/login/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
66a097d9f2 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (38 of 38 strings)

Translation: opensourcepos/item_kits
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/item_kits/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
f3931577be Translated using Weblate (Spanish (Mexico))
Currently translated at 69.1% (47 of 68 strings)

Translation: opensourcepos/giftcards
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/giftcards/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
f125960fe2 Translated using Weblate (Spanish (Mexico))
Currently translated at 99.5% (221 of 222 strings)

Translation: opensourcepos/sales
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/sales/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
787977ed3e Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (79 of 79 strings)

Translation: opensourcepos/taxes
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/taxes/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
502b5fd6b9 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (41 of 41 strings)

Translation: opensourcepos/employees
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/employees/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
ec2b941f3f Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (55 of 55 strings)

Translation: opensourcepos/receivings
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/receivings/es_MX/
2025-03-03 00:22:29 +01:00
JoseLuisKukMagana
8723274418 Translated using Weblate (Spanish (Mexico))
Currently translated at 55.5% (65 of 117 strings)

Translation: opensourcepos/items
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/items/es_MX/
2025-03-03 00:22:29 +01:00
jekkos
cf73ffa825 Fix attribute dropdown delete (#4176) 2025-03-01 00:37:23 +01:00
jekkos
eeaa693ede Fix for giftcard numbering (#4182) 2025-02-15 01:12:35 +01:00
jekkos
1378794e7e Revert "Use app language for current_lang (#4175)"
This reverts commit 19974bc8e0.
2025-02-15 01:10:16 +01:00
jekkos
d1d8aa0401 Fix greyed out submit after validation (#4174) 2025-02-15 01:09:53 +01:00
jekkos
882f3b4522 Fix table header translations (#4175) 2025-02-15 01:08:19 +01:00
jekkos
19974bc8e0 Use app language for current_lang (#4175) 2025-02-10 08:53:11 +01:00
SONKO ABDOU
d0b2b3e80b Translated using Weblate (French)
Currently translated at 100.0% (12 of 12 strings)

Translation: opensourcepos/login
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/login/fr/
2025-02-09 20:35:46 +01:00
BudsieBuds
57c36e7ba7 Fixes for CHANGELOG 2025-02-08 00:00:56 +01:00
jekkos
8516ffe216 Add php-json to dependency list (#4168) 2025-02-07 23:59:59 +01:00
jekkos
534f7361d6 Update CHANGELOG 2025-02-06 23:25:39 +01:00
jekkos
5609859fdf Fix attribute dropdown creation (#4171) 2025-02-05 22:24:33 +01:00
jekkos
c6c5fcac26 Fix sales tax summary with time filter (#4166) 2025-02-05 22:01:59 +01:00
BudsieBuds
4d9cd80f8b Random fixes #2
- change old directories to new (ci4)
- updated documentation for clarity
2025-02-05 21:58:28 +01:00
jekkos
2924a889c7 Remove localhost in port mapping (#4168) 2025-02-04 12:11:54 +01:00
BudsieBuds
beb18ff96b Random fixes (#4144)
Random fixes in time for the 3.4.0 release.
- corrects typo in the items controller
- small update to login view
- removes deprecated code from header view
- ospos license updated to end 2024
- moved gulp packages to dev dependencies
- updated gulp-zip and npm-check-updates to latest version
- updated readme for consistency
- makes ospos license in config fully readable
- fixes composer libraries license view in config
- gulp now updates composer libraries license and ospos license
- updated other license views in config
2025-01-28 23:48:45 +01:00
El_Coloso
7ad1bfa0fb Fix requisitions (#4147)
* Fix data types on null values
* Fix receiving receipt image tag
* Fix error on Receiving Model
2025-01-28 23:32:05 +01:00
El_Coloso
9cc24f0c70 Send receipt by email as PDF (#2682) 2025-01-26 22:13:27 +01:00
jekkos
b86e5ca6ef Use parse_decimal in decimal validation (#4152) 2025-01-24 00:17:57 +01:00
jekkos
4879fe2cf3 Show error when hitting enter in sales (#4155) 2025-01-24 00:17:57 +01:00
El_Coloso
a5b2b5f771 Fixes for receipt + invoice (#2682)
* Email invoice bar code
* Send invoice by email
* Remove default comment on invoice if comment was set
2025-01-24 00:17:25 +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
104 changed files with 4244 additions and 7187 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,28 +34,18 @@ after_success:
- mv dist/opensourcepos.tar.gz "dist/opensourcepos.$version.$rev.tgz"
- mv dist/opensourcepos.zip "dist/opensourcepos.$version.$rev.zip"
deploy:
- provider: npm
edge: true
src: dist/opensourcepos.$version.$rev.tgz
registry: https://npm.pkg.github.com
email: jeroen@steganos.dev
api_key:
secure: "DNPJOrT51wdO0BAbkX2hKowdXYh7x8d43xvAw7eVfOslyBPiv6Bb/1QdC2Bpnlqe0WiJVS5hvBTMrJ+vSDK5i/l8jA+ZoI6ms1+P1DQ6sBBMBQI2fuvRCrJj+Fp3WnaduZb/N7R+FqdKQwD/ZORyhzJ4whtHkrO8uC7cY/wlacU="
on:
all_branches: true
- provider: releases
edge: true
file: dist/opensourcepos.$version.$rev.zip
name: "OpensourcePos $version"
release_notes_file: CHANGELOG.md
prerelease: true
user: jekkos
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:
tags: true
branch: master

View File

@@ -1,4 +1,5 @@
[unreleased]: https://github.com/opensourcepos/opensourcepos/compare/3.3.9...HEAD
[unreleased]: https://github.com/opensourcepos/opensourcepos/compare/3.4.0...HEAD
[3.4.0]: https://github.com/opensourcepos/opensourcepos/compare/3.3.9...3.4.0
[3.3.9]: https://github.com/opensourcepos/opensourcepos/compare/3.3.8...3.3.9
[3.3.8]: https://github.com/opensourcepos/opensourcepos/compare/3.3.7...3.3.8
[3.3.7]: https://github.com/opensourcepos/opensourcepos/compare/3.3.6...3.3.7
@@ -31,6 +32,16 @@ All notable changes to this project will be documented in this file.
## [Unreleased]
## [3.4.0] - 2025-02-06
- Translation updates (Spanish, Indonesian, Swedish, Urdu, Chinese, Thai, French, Dutch)
- PHP 8.x support
- Security fixes (XSS, SQLi)
- Migration to Gulp as buildsystem
- Decimal validation fix
- Sticky header fix
- Receipt sent as attachment
- Barcode generation library upgrade
- Bump framework to CodeIgniter `4.x.x`
- Improve security performance against bots

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,21 +1,20 @@
## 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.
- MySQL `5.6` and `5.7` are supported, also MariaDB replacement `10.x` is supported and might offer better performance.
- PHP version `8.1` to `8.3` are supported, PHP version `≤7.4` is NOT supported. Please note that PHP needs to have the extensions `php-json`, `php-gd`, `php-bcmath`, `php-intl`, `php-openssl`, `php-mbstring` , `php-curl` and `php-xml` installed and enabled. An unstable master build can be downloaded in the releases section.
- MySQL `5.7` is 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)>).
- For Windows based installations please read [the wiki](https://github.com/opensourcepos/opensourcepos/wiki). There are closed issues about this subject, as this topic has been covered a lot.
## Local install
First of all, if you're seeing the message `system folder missing` after launching your browser, or cannot find `database.php`, that most likely means you have cloned the repository and have not built the project. To build the project from a source commit point instead of from an official release check out [Building OSPOS](BUILD.md). Otherwise, continue with the following steps.
First of all, if you're seeing the message `system folder missing` after launching your browser, or cannot find `database.sql`, that most likely means you have cloned the repository and have not built the project. To build the project from a source commit point instead of from an official release check out [Building OSPOS](BUILD.md). Otherwise, continue with the following steps.
1. Download the a [pre-release for a specific branch](https://github.com/opensourcepos/opensourcepos/packages/1047637) or the latest stable [from GitHub here](https://github.com/opensourcepos/opensourcepos/releases). A repository clone will not work unless know how to build the project.
1. Download the a [pre-release for a specific branch](https://github.com/opensourcepos/opensourcepos/releases) or the latest stable [from GitHub here](https://github.com/opensourcepos/opensourcepos/releases). A repository clone will not work unless know how to build the project.
2. Create/locate a new MySQL database to install Open Source Point of Sale into.
3. Execute the file `database/database.sql` to create the tables needed.
4. Unzip and upload Open Source Point of Sale files to the web-server.
5. Open `app/Config/database.php` and modify credentials to connect to your database if needed.
6. Open `app/Config/config.php` and swap the encryption key with your own.
7. Go to your install `public` dir via the browser.
8. Log in using
- Username: admin

26
LICENSE
View File

@@ -1,30 +1,30 @@
MIT License
Copyright (c) 2013-2023 jekkos
Copyright (c) 2013-2025 jekkos
Copyright (c) 2017-2025 objecttothis
Copyright (c) 2017-2024 Steve Ireland
Copyright (c) 2017-2025 odiea
Copyright (c) 2018-2024 WebShells
Copyright (c) 2021-2025 BudsieBuds
Copyright (c) 2015-2023 FrancescoUK (aka daN4cat)
Copyright (c) 2017-2023 Steve Ireland
Copyright (c) 2017-2023 objecttothis
Copyright (c) 2017-2023 odiea
Copyright (c) 2017-2023 WebShells
Copyright (c) 2020-2021 Andriux1990
Copyright (c) 2021 BudsieBuds
Copyright (c) 2015-2022 Aamir Shahzad (aka asakpke), RoshanTech, eSite.pk
Copyright (c) 2019-2020 Andriux1990
Copyright (c) 2018-2019 Erasto Marroquin (aka Erastus)
Copyright (c) 2019 Loyd Jayme (aka loydjayme25)
Copyright (c) 2018 Erasto Marroquin (aka Erastus)
Copyright (c) 2018 Nathan Sas (aka nathanzky)
Copyright (c) 2018 Emilio Silva (aka emi-silva)
Copyright (c) 2017 Jesus Guerrero Botella (aka i92guboj)
Copyright (c) 2016-2017 Ramkrishna Mondal (aka RamkrishnaMondal)
Copyright (c) 2016-2017 Jorge Colmenarez (aka jlctmaster), frontuari.com
Copyright (c) 2016-2017 Jesus Guerrero Botella (aka i92guboj)
Copyright (c) 2017 Deep Shah (aka deepshah)
Copyright (c) 2017 Joshua Fernandez (aka joshua1234511)
Copyright (c) 2017 asadjaved63
Copyright (c) 2016-2017 Ramkrishna Mondal (aka RamkrishnaMondal)
Copyright (c) 2016-2017 Jorge Colmenarez (aka jlctmaster), frontuari.com
Copyright (c) 2016 Rinaldy@dbarber (aka rnld26)
Copyright (c) 2015-2022 Aamir Shahzad (aka asakpke), RoshanTech, eSite.pk
Copyright (c) 2015 Toni Haryanto (aka yllumi)
Copyright (c) 2012-2014 pappastech
Copyright (c) 2013 Rob Garrison
Copyright (c) 2013 Parq
Copyright (c) 2013 Ramel
Copyright (c) 2012-2014 pappastech
Copyright (c) 2012 Alain
Permission is hereby granted, free of charge, to any person obtaining a copy

View File

@@ -94,11 +94,11 @@ NOTE: If you're running non-release code, please make sure you always run the la
- Apache server configurations are SysAdmin issues and not strictly related to OSPOS. Please make sure you can show a "Hello world" HTML page before pointing to OSPOS public directory. Make sure `.htaccess` is correctly configured.
- If the avatar pictures are not shown in items or at item save you get an error, please make sure your `public` and subdirs are assigned to the correct owner and the access permission is set to `750`.
- If the avatar pictures are not shown in items or at item save you get an error, please make sure your `writable` and subdirs are assigned to the correct owner and the access permission is set to `750`.
- If you install OSPOS in Docker behind a proxy that performs `ssloffloading`, you can enable the URL generated to be HTTPS instead of HTTP, by activating the environment variable `FORCE_HTTPS = 1`.
- If you install OSPOS behind a proxy and OSPOS constantly drops your session, consider whitelisting the proxy IP address by setting `$config['proxy_ips'] = '<proxy ip>';` in the [main PHP config file](https://github.com/opensourcepos/opensourcepos/blob/master/application/config/config.php). In extreme instances, changing `$config['sess_match_ip'] = true;` to `FALSE` may also help.
- If you install OSPOS behind a proxy and OSPOS constantly drops your session, consider whitelisting the proxy IP address by setting `public array $proxyIPs = [];` in the [main PHP config file](https://github.com/opensourcepos/opensourcepos/blob/master/app/Config/App.php).
- If you have suhosin installed and face an issue with CSRF, please make sure you read [issue #1492](https://github.com/opensourcepos/opensourcepos/issues/1492).
@@ -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://github.com/user-attachments/assets/fbbf7433-ed35-407d-8946-fd03d236d350" 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 [DigitalOcean](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

@@ -1,5 +1,8 @@
## How to Upgrade
> [!WARNING]
> Not updated for upcoming CodeIgniter4 release (3.4.0 and subsequent versions).
1. Back up all your current database and OSPOS code.
2. Make sure you have a copy of `application/config/config.php` and `application/config/database.php`.
3. Remove all directories.

View File

@@ -12,7 +12,7 @@ class App extends BaseConfig
*
* @var string
*/
public string $application_version = '3.4.0-dev';
public string $application_version = '3.4.0';
/**
* This is the commit hash for the version you are currently using.

View File

@@ -109,7 +109,7 @@ class OSPOSRules
private function installation_check(): bool
{
$installed_extensions = implode(', ', get_loaded_extensions());
$required_extensions = ['bcmath', 'intl', 'gd', 'openssl', 'mbstring', 'curl'];
$required_extensions = ['bcmath', 'intl', 'gd', 'openssl', 'mbstring', 'curl', 'xml', 'json'];
$pattern = '/';
foreach($required_extensions as $extension)
@@ -140,23 +140,6 @@ class OSPOSRules
*/
public function decimal_locale(string $candidate, ?string &$error = null): bool
{
$candidate = prepare_decimal($candidate);
$validation = Services::validation();
$validation->setRules([
'candidate' => 'decimal'
]);
$data = [
'candidate' => $candidate
];
if (!$validation->run($data))
{
$error = $validation->getErrors();
return false;
}
return true;
return parse_decimals($candidate) !== false;
}
}

View File

@@ -41,7 +41,7 @@ class Attributes extends Secure_Controller
$search = $this->request->getGet('search');
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
$sort = $this->sanitizeSortColumn(ATTRIBUTE_DEFINITION_HEADERS, $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'definition_id');
$sort = $this->sanitizeSortColumn(attribute_definition_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'definition_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$attributes = $this->attribute->search($search, $limit, $offset, $sort, $order);
@@ -67,8 +67,8 @@ class Attributes extends Secure_Controller
$success = $this->attribute->saveAttributeValue(
html_entity_decode($this->request->getPost('attribute_value')),
$this->request->getPost('definition_id', FILTER_SANITIZE_NUMBER_INT),
$this->request->getPost('item_id', FILTER_SANITIZE_NUMBER_INT),
$this->request->getPost('attribute_id', FILTER_SANITIZE_NUMBER_INT)
$this->request->getPost('item_id', FILTER_SANITIZE_NUMBER_INT) ?? false,
$this->request->getPost('attribute_id', FILTER_SANITIZE_NUMBER_INT) ?? false
);
echo json_encode(['success' => $success != 0]);
@@ -231,14 +231,15 @@ class Attributes extends Secure_Controller
}
/**
* AJAX called function to delete an attribute value. This is never called in the code. Perhaps it was boiler plate code that just isn't needed?
* @param int $attribute_id
* AJAX called function to delete an attribute value. This is called when a dropdown item is removed.
*
* @param string $attribute_value
* @return bool
* @noinspection PhpUnused
*/
public function delete_value(int $attribute_id): bool //TODO: This function appears to never be used in the codebase. Is it needed?
public function delete_value(string $attribute_value): bool
{
return $this->attribute->delete_value($attribute_id, NO_DEFINITION_ID);
return $this->attribute->delete_value($attribute_value, NO_DEFINITION_ID);
}
/**

View File

@@ -46,7 +46,7 @@ class Cashups extends Secure_Controller
$search = $this->request->getGet('search');
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
$sort = $this->sanitizeSortColumn(CASHUPS_HEADERS, $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'cashup_id');
$sort = $this->sanitizeSortColumn(cashup_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'cashup_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$filters = [
'start_date' => $this->request->getGet('start_date', FILTER_SANITIZE_FULL_SPECIAL_CHARS), //TODO: Is this the best way to filter dates
@@ -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

@@ -82,7 +82,7 @@ class Config extends Secure_Controller
$license[$i]['title'] = 'Open Source Point Of Sale ' . config('App')->application_version;
if (file_exists('license/LICENSE')) {
$license[$i]['text'] = file_get_contents('license/LICENSE', false, null, 0, 2000);
$license[$i]['text'] = file_get_contents('license/LICENSE', false, null, 0, 3000);
} else {
$license[$i]['text'] = 'LICENSE file must be in OSPOS license directory. You are not allowed to use OSPOS application until the distribution copy of LICENSE file is present.';
}
@@ -139,13 +139,13 @@ class Config extends Secure_Controller
$license[$i]['text'] .= "$val3 ";
}
$license[$i]['text'] .= '\n';
$license[$i]['text'] .= "\n";
} else {
$license[$i]['text'] .= "$key2: $val2\n";
}
}
$license[$i]['text'] .= '\n';
$license[$i]['text'] .= "\n";
} else {
$license[$i]['text'] .= "$key1: $val1\n";
}
@@ -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

@@ -90,7 +90,7 @@ class Customers extends Persons
$search = $this->request->getGet('search');
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
$sort = $this->sanitizeSortColumn(CUSTOMER_HEADERS, $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'people.person_id');
$sort = $this->sanitizeSortColumn(customer_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'people.person_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$customers = $this->customer->search($search, $limit, $offset, $sort, $order);
@@ -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

@@ -30,7 +30,7 @@ class Employees extends Persons
$search = $this->request->getGet('search');
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
$sort = $this->sanitizeSortColumn(PERSON_HEADERS, $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'people.person_id');
$sort = $this->sanitizeSortColumn(person_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'people.person_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$employees = $this->employee->search($search, $limit, $offset, $sort, $order);

View File

@@ -48,7 +48,7 @@ class Expenses extends Secure_Controller
$search = $this->request->getGet('search');
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
$sort = $this->sanitizeSortColumn(EXPENSE_HEADERS, $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'expense_id');
$sort = $this->sanitizeSortColumn(expense_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'expense_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$filters = [
'start_date' => $this->request->getGet('start_date', FILTER_SANITIZE_FULL_SPECIAL_CHARS),
@@ -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

@@ -34,7 +34,7 @@ class Expenses_categories extends Secure_Controller //TODO: Is this class ever u
$search = $this->request->getGet('search');
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
$sort = $this->sanitizeSortColumn(EXPENSE_CATEGORY_HEADERS, $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'expense_category_id');
$sort = $this->sanitizeSortColumn(expense_category_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'expense_category_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$expense_categories = $this->expense_category->search($search, $limit, $offset, $sort, $order);

View File

@@ -35,7 +35,7 @@ class Giftcards extends Secure_Controller
$search = $this->request->getGet('search');
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
$sort = $this->sanitizeSortColumn(GIFTCARD_HEADERS, $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'giftcard_id');
$sort = $this->sanitizeSortColumn(giftcard_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'giftcard_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$giftcards = $this->giftcard->search($search, $limit, $offset, $sort, $order);
@@ -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

@@ -79,7 +79,7 @@ class Item_kits extends Secure_Controller
$search = $this->request->getGet('search') ?? '';
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
$sort = $this->sanitizeSortColumn(ITEM_KIT_HEADERS, $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'item_kit_id');
$sort = $this->sanitizeSortColumn(item_kit_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'item_kit_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$item_kits = $this->item_kit->search($search, $limit, $offset, $sort, $order);
@@ -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

@@ -97,7 +97,7 @@ class Items extends Secure_Controller
$search = $this->request->getGet('search');
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
$sort = $this->sanitizeSortColumn(ITEM_HEADERS, $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'item_id');
$sort = $this->sanitizeSortColumn(item_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'item_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$this->item_lib->set_item_location($this->request->getGet('stock_location'));
@@ -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,7 +205,7 @@ 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'));
@@ -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,21 @@ 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'));
$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);
$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);
@@ -327,7 +324,7 @@ class Receivings extends Secure_Controller
*/
public function postComplete(): void
{
$amount_tendered = prepare_decimal($this->request->getPost('amount_tendered'));
$data = [];
$data['cart'] = $this->receiving_lib->get_cart();
@@ -341,7 +338,7 @@ class Receivings extends Secure_Controller
$data['stock_location'] = $this->receiving_lib->get_stock_source();
if($this->request->getPost('amount_tendered') != null)
{
$data['amount_tendered'] = filter_var($amount_tendered, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);
$data['amount_tendered'] = parse_decimals($this->request->getPost('amount_tendered'));
$data['amount_change'] = to_currency($data['amount_tendered'] - $data['total']);
}
@@ -404,7 +401,7 @@ class Receivings extends Secure_Controller
$this->receiving_lib->add_item($item['item_id'], -$item['quantity'], $this->receiving_lib->get_stock_source(), $item['discount_type']);
}
$this->complete();
$this->postComplete();
}
else
{

View File

@@ -136,7 +136,7 @@ class Sales extends Secure_Controller
$search = $this->request->getGet('search', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
$sort = $this->sanitizeSortColumn(SALES_HEADERS, $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'sale_id');
$sort = $this->sanitizeSortColumn(sales_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'sale_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$filters = [
@@ -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);
}
}
@@ -608,7 +606,7 @@ class Sales extends Secure_Controller
}
else
{
if(!$this->sale_lib->add_item($item_id_or_number_or_item_kit_or_receipt, $item_location, $quantity, $discount, $discount_type, PRICE_MODE_STANDARD, null, null, $price))
if($item_id_or_number_or_item_kit_or_receipt == '' || !$this->sale_lib->add_item($item_id_or_number_or_item_kit_or_receipt, $item_location, $quantity, $discount, $discount_type, PRICE_MODE_STANDARD, null, null, $price))
{
$data['error'] = lang('Sales.unable_to_add_item');
}
@@ -633,30 +631,25 @@ class Sales extends Secure_Controller
$data = [];
$rules = [
'price' => 'trim|required|numeric',
'quantity' => 'trim|required|numeric',
'discount' => 'trim|permit_empty|numeric',
'price' => 'trim|required|decimal_locale',
'quantity' => 'trim|required|decimal_locale',
'discount' => 'trim|permit_empty|decimal_locale',
];
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;
@@ -991,21 +984,21 @@ class Sales extends Secure_Controller
if(!empty($sale_data['customer_email']))
{
$to = $sale_data['customer_email'];
$number = $sale_data[$type."_number"];
$number = array_key_exists($type."_number", $sale_data) ? $sale_data[$type."_number"] : "";
$subject = lang('Sales.' . $type) . ' ' . $number;
$text = $this->config['invoice_email_message'];
$tokens = [
new Token_invoice_sequence($sale_data['invoice_number']),
new Token_invoice_count('POS ' . $sale_data['sale_id']),
new Token_customer((object)$sale_data)
new Token_customer((array)$sale_data)
];
$text = $this->token_lib->render($text, $tokens);
$sale_data['mimetype'] = mime_content_type(FCPATH . 'uploads/' . $this->config['company_logo']);
// generate email attachment: invoice in pdf format
$view = Services::renderer();
$html = $view->render("sales/$type" . '_email', $sale_data);
$html = $view->setData($sale_data)->render("sales/$type" . '_email', $sale_data);
// load pdf helper
helper (['dompdf', 'file']);
@@ -1047,7 +1040,7 @@ class Sales extends Secure_Controller
$subject = lang('Sales.receipt');
$view = Services::renderer();
$text = $view->render('sales/receipt_email', $sale_data);
$text = $view->setData($sale_data)->render('sales/receipt_email');
$result = $this->email_lib->sendEmail($to, $subject, $text);
@@ -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

@@ -48,7 +48,7 @@ class Suppliers extends Persons
$search = $this->request->getGet('search');
$limit = $this->request->getGet('limit', FILTER_SANITIZE_NUMBER_INT);
$offset = $this->request->getGet('offset', FILTER_SANITIZE_NUMBER_INT);
$sort = $this->sanitizeSortColumn(SUPPLIER_HEADERS, $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'people.person_id');
$sort = $this->sanitizeSortColumn(supplier_headers(), $this->request->getGet('sort', FILTER_SANITIZE_FULL_SPECIAL_CHARS), 'people.person_id');
$order = $this->request->getGet('order', FILTER_SANITIZE_FULL_SPECIAL_CHARS);
$suppliers = $this->supplier->search($search, $limit, $offset, $sort, $order);

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

@@ -18,7 +18,15 @@ class fix_duplicate_attributes extends Migration
helper('migration');
$this->drop_foreign_key_constraints();
$foreignKeys = [
'ospos_attribute_links_ibfk_1',
'ospos_attribute_links_ibfk_2',
'ospos_attribute_links_ibfk_3',
'ospos_attribute_links_ibfk_4',
'ospos_attribute_links_ibfk_5'
];
drop_foreign_key_constraints($foreignKeys, 'ospos_attribute_links');
execute_script(APPPATH . 'Database/Migrations/sqlscripts/3.4.0_attribute_links_unique_constraint.sql');
}
@@ -57,44 +65,6 @@ class fix_duplicate_attributes extends Migration
}
}
/**
* Drops the foreign key constraints from the attribute_links table.
* This is required to successfully create the generated unique constraint.
*
* @return void
*/
private function drop_foreign_key_constraints(): void
{
$foreignKeys = [
'ospos_attribute_links_ibfk_1',
'ospos_attribute_links_ibfk_2',
'ospos_attribute_links_ibfk_3',
'ospos_attribute_links_ibfk_4',
'ospos_attribute_links_ibfk_5'
];
$current_prefix = $this->db->getPrefix();
$this->db->setPrefix('');
$database_name = $this->db->database;
foreach ($foreignKeys as $fk)
{
$builder = $this->db->table('INFORMATION_SCHEMA.TABLE_CONSTRAINTS');
$builder->select('CONSTRAINT_NAME');
$builder->where('TABLE_SCHEMA', $database_name);
$builder->where('TABLE_NAME', 'ospos_attribute_links');
$builder->where('CONSTRAINT_TYPE', 'FOREIGN KEY');
$builder->where('CONSTRAINT_NAME', $fk);
$query = $builder->get();
if($query->getNumRows() > 0)
{
$this->db->query("ALTER TABLE `ospos_attribute_links` DROP FOREIGN KEY `$fk`");
}
}
$this->db->setPrefix($current_prefix);
}
/**
* Revert a migration step.

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Database\Migrations;
use CodeIgniter\Database\Migration;
use App\Models\Attribute;
use CodeIgniter\Database\ResultInterface;
class Migration_Attributes_fix_cascading_delete extends Migration
{
/**
* Perform a migration step.
*/
public function up(): void
{
helper('migration');
drop_foreign_key_constraints(['ospos_attribute_links_ibfk_1', 'ospos_attribute_links_ibfk_2'], 'ospos_attribute_links');
$this->db->query("ALTER TABLE `ospos_attribute_links` ADD CONSTRAINT `ospos_attribute_links_ibfk_1` FOREIGN KEY (`definition_id`) REFERENCES `ospos_attribute_definitions` (`definition_id`) ON DELETE CASCADE;");
$this->db->query("ALTER TABLE `ospos_attribute_links` ADD CONSTRAINT `ospos_attribute_links_ibfk_2` FOREIGN KEY (`attribute_id`) REFERENCES `ospos_attribute_values` (`attribute_id`) ON DELETE CASCADE;");
}
/**
* Revert a migration step.
*/
public function down(): void
{
}
}

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

@@ -30,4 +30,37 @@ function execute_script(string $path): void
}
error_log("Migrated to $version");
}
}
/**
* Drops the foreign key constraints from the attribute_links table.
* This is required to successfully create the generated unique constraint.
*
* @return void
*/
function drop_foreign_key_constraints(array $foreignKeys, string $table): void
{
$db = Database::connect();
$current_prefix = $db->getPrefix();
$db->setPrefix('');
$database_name = $db->database;
foreach ($foreignKeys as $fk)
{
$builder = $db->table('INFORMATION_SCHEMA.TABLE_CONSTRAINTS');
$builder->select('CONSTRAINT_NAME');
$builder->where('TABLE_SCHEMA', $database_name);
$builder->where('TABLE_NAME', $table);
$builder->where('CONSTRAINT_TYPE', 'FOREIGN KEY');
$builder->where('CONSTRAINT_NAME', $fk);
$query = $builder->get();
if($query->getNumRows() > 0)
{
$db->query("ALTER TABLE `$table` DROP FOREIGN KEY `$fk`");
}
}
$db->setPrefix($current_prefix);
}

View File

@@ -63,31 +63,35 @@ function transform_headers(array $headers, bool $readonly = false, bool $editabl
return json_encode($result);
}
define("SALES_HEADERS", [
['sale_id' => lang('Common.id')],
['sale_time' => lang('Sales.sale_time')],
['customer_name' => lang('Customers.customer')],
['amount_due' => lang('Sales.amount_due')],
['amount_tendered' => lang('Sales.amount_tendered')],
['change_due' => lang('Sales.change_due')],
['payment_type' => lang('Sales.payment_type')]
]);
function sales_headers(): array
{
return [
['sale_id' => lang('Common.id')],
['sale_time' => lang('Sales.sale_time')],
['customer_name' => lang('Customers.customer')],
['amount_due' => lang('Sales.amount_due')],
['amount_tendered' => lang('Sales.amount_tendered')],
['change_due' => lang('Sales.change_due')],
['payment_type' => lang('Sales.payment_type')]
];
}
/**
* Get the header for the sales tabular view
*/
function get_sales_manage_table_headers(): string
{
$headers = SALES_HEADERS;
$headers = sales_headers();
$config = config(OSPOS::class)->settings;
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 +120,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>',
@@ -189,20 +193,24 @@ function get_sales_manage_payments_summary(array $payments): string
return $table;
}
define('PERSON_HEADERS', [
['people.person_id' => lang('Common.id')],
['last_name' => lang('Common.last_name')],
['first_name' => lang('Common.first_name')],
['email' => lang('Common.email')],
['phone_number' => lang('Common.phone_number')]
]);
function person_headers(): array
{
return [
['people.person_id' => lang('Common.id')],
['last_name' => lang('Common.last_name')],
['first_name' => lang('Common.first_name')],
['email' => lang('Common.email')],
['phone_number' => lang('Common.phone_number')]
];
}
/**
* Get the header for the people tabular view
*/
function get_people_manage_table_headers(): string
{
$headers = PERSON_HEADERS;
$headers = person_headers();
$employee = model(Employee::class);
$session = session();
@@ -251,21 +259,25 @@ function get_person_data_row(object $person): array
];
}
define('CUSTOMER_HEADERS', [
['people.person_id' => lang('Common.id')],
['last_name' => lang('Common.last_name')],
['first_name' => lang('Common.first_name')],
['email' => lang('Common.email')],
['phone_number' => lang('Common.phone_number')],
['total' => lang('Common.total_spent'), 'sortable' => false]
]);
function customer_headers(): array
{
return [
['people.person_id' => lang('Common.id')],
['last_name' => lang('Common.last_name')],
['first_name' => lang('Common.first_name')],
['email' => lang('Common.email')],
['phone_number' => lang('Common.phone_number')],
['total' => lang('Common.total_spent'), 'sortable' => false]
];
}
/**
* Get the header for the customer tabular view
*/
function get_customer_manage_table_headers(): string
{
$headers = CUSTOMER_HEADERS;
$headers = customer_headers();
$employee = model(Employee::class);
$session = session();
@@ -315,23 +327,26 @@ function get_customer_data_row(object $person, object $stats): array
];
}
define('SUPPLIER_HEADERS', [
['people.person_id' => lang('Common.id')],
['company_name' => lang('Suppliers.company_name')],
['agency_name' => lang('Suppliers.agency_name')],
['category' => lang('Suppliers.category')],
['last_name' => lang('Common.last_name')],
['first_name' => lang('Common.first_name')],
['email' => lang('Common.email')],
['phone_number' => lang('Common.phone_number')]
]);
function supplier_headers(): array
{
return [
['people.person_id' => lang('Common.id')],
['company_name' => lang('Suppliers.company_name')],
['agency_name' => lang('Suppliers.agency_name')],
['category' => lang('Suppliers.category')],
['last_name' => lang('Common.last_name')],
['first_name' => lang('Common.first_name')],
['email' => lang('Common.email')],
['phone_number' => lang('Common.phone_number')]
];
}
/**
* Get the header for the suppliers tabular view
*/
function get_suppliers_manage_table_headers(): string
{
$headers = SUPPLIER_HEADERS;
$headers = supplier_headers();
$employee = model(Employee::class);
$session = session();
@@ -383,16 +398,19 @@ function get_supplier_data_row(object $supplier): array
];
}
define('ITEM_HEADERS', [
['items.item_id' => lang('Common.id')],
['item_number' => lang('Items.item_number')],
['name' => lang('Items.name')],
['category' => lang('Items.category')],
['company_name' => lang('Suppliers.company_name')],
['cost_price' => lang('Items.cost_price')],
['unit_price' => lang('Items.unit_price')],
['quantity' => lang('Items.quantity')]
]);
function item_headers(): array
{
return [
['items.item_id' => lang('Common.id')],
['item_number' => lang('Items.item_number')],
['name' => lang('Items.name')],
['category' => lang('Items.category')],
['company_name' => lang('Suppliers.company_name')],
['cost_price' => lang('Items.cost_price')],
['unit_price' => lang('Items.unit_price')],
['quantity' => lang('Items.quantity')]
];
}
/**
* Get the header for the items tabular view
@@ -403,7 +421,7 @@ function get_items_manage_table_headers(): string
$config = config(OSPOS::class)->settings;
$definition_names = $attribute->get_definitions_by_flags($attribute::SHOW_IN_ITEMS); //TODO: this should be made into a constant in constants.php
$headers = ITEM_HEADERS;
$headers = item_headers();
if($config['use_destination_based_tax'])
{
@@ -533,20 +551,23 @@ function get_item_data_row(object $item): array
return $columns + expand_attribute_values($definition_names, (array) $item) + $icons;
}
define('GIFTCARD_HEADERS', [
['giftcard_id' => lang('Common.id')],
['last_name' => lang('Common.last_name')],
['first_name' => lang('Common.first_name')],
['giftcard_number' => lang('Giftcards.giftcard_number')],
['value' => lang('Giftcards.card_value')]
]);
function giftcard_headers(): array
{
return [
['giftcard_id' => lang('Common.id')],
['last_name' => lang('Common.last_name')],
['first_name' => lang('Common.first_name')],
['giftcard_number' => lang('Giftcards.giftcard_number')],
['value' => lang('Giftcards.card_value')]
];
}
/**
* Get the header for the giftcard tabular view
*/
function get_giftcards_manage_table_headers(): string
{
return transform_headers(GIFTCARD_HEADERS);
return transform_headers(giftcard_headers());
}
/**
@@ -574,21 +595,24 @@ function get_giftcard_data_row(object $giftcard): array
];
}
define('ITEM_KIT_HEADERS', [
['item_kit_id' => lang('Item_kits.kit')],
['item_kit_number' => lang('Item_kits.item_kit_number')],
['name' => lang('Item_kits.name')],
['description' => lang('Item_kits.description')],
['total_cost_price' => lang('Items.cost_price'), 'sortable' => false],
['total_unit_price' => lang('Items.unit_price'), 'sortable' => false]
]);
function item_kit_headers(): array
{
return [
['item_kit_id' => lang('Item_kits.kit')],
['item_kit_number' => lang('Item_kits.item_kit_number')],
['name' => lang('Item_kits.name')],
['description' => lang('Item_kits.description')],
['total_cost_price' => lang('Items.cost_price'), 'sortable' => FALSE],
['total_unit_price' => lang('Items.unit_price'), 'sortable' => FALSE]
];
}
/**
* Get the header for the item kits tabular view
*/
function get_item_kits_manage_table_headers(): string
{
return transform_headers(ITEM_KIT_HEADERS);
return transform_headers(item_kit_headers());
}
/**
@@ -672,20 +696,23 @@ function expand_attribute_values(array $definition_names, array $row): array
return $attribute_values;
}
define('ATTRIBUTE_DEFINITION_HEADERS', [
['definition_id' => lang('Attributes.definition_id')],
['definition_name' => lang('Attributes.definition_name')],
['definition_type' => lang('Attributes.definition_type')],
['definition_flags' => lang('Attributes.definition_flags')],
['definition_group' => lang('Attributes.definition_group')],
]);
function attribute_definition_headers(): array
{
return [
['definition_id' => lang('Attributes.definition_id')],
['definition_name' => lang('Attributes.definition_name')],
['definition_type' => lang('Attributes.definition_type')],
['definition_flags' => lang('Attributes.definition_flags')],
['definition_group' => lang('Attributes.definition_group')],
];
}
/**
* @return string
*/
function get_attribute_definition_manage_table_headers(): string
{
return transform_headers(ATTRIBUTE_DEFINITION_HEADERS);
return transform_headers(attribute_definition_headers());
}
/**
@@ -729,18 +756,21 @@ function get_attribute_definition_data_row(object $attribute_row): array
];
}
define('EXPENSE_CATEGORY_HEADERS', [
['expense_category_id' => lang('Expenses_categories.category_id')],
['category_name' => lang('Expenses_categories.name')],
['category_description' => lang('Expenses_categories.description')]
]);
function expense_category_headers(): array
{
return [
['expense_category_id' => lang('Expenses_categories.category_id')],
['category_name' => lang('Expenses_categories.name')],
['category_description' => lang('Expenses_categories.description')]
];
}
/**
* Get the header for the expense categories tabular view
*/
function get_expense_category_manage_table_headers(): string
{
return transform_headers(EXPENSE_CATEGORY_HEADERS);
return transform_headers(expense_category_headers());
}
/**
@@ -766,25 +796,28 @@ function get_expense_category_data_row(object $expense_category): array
];
}
define('EXPENSE_HEADERS', [
['expense_id' => lang('Expenses.expense_id')],
['date' => lang('Expenses.date')],
['supplier_name' => lang('Expenses.supplier_name')],
['supplier_tax_code' => lang('Expenses.supplier_tax_code')],
['amount' => lang('Expenses.amount')],
['tax_amount' => lang('Expenses.tax_amount')],
['payment_type' => lang('Expenses.payment')],
['category_name' => lang('Expenses_categories.name')],
['description' => lang('Expenses.description')],
['created_by' => lang('Expenses.employee')]
]);
function expense_headers(): array
{
return [
['expense_id' => lang('Expenses.expense_id')],
['date' => lang('Expenses.date')],
['supplier_name' => lang('Expenses.supplier_name')],
['supplier_tax_code' => lang('Expenses.supplier_tax_code')],
['amount' => lang('Expenses.amount')],
['tax_amount' => lang('Expenses.tax_amount')],
['payment_type' => lang('Expenses.payment')],
['category_name' => lang('Expenses_categories.name')],
['description' => lang('Expenses.description')],
['created_by' => lang('Expenses.employee')]
];
}
/**
* Get the header for the expenses tabular view
*/
function get_expenses_manage_table_headers(): string
{
return transform_headers(EXPENSE_HEADERS);
return transform_headers(expense_headers());
}
/**
@@ -858,7 +891,9 @@ function get_expenses_manage_payments_summary(array $payments, ResultInterface $
return $table;
}
define('CASHUPS_HEADERS', [
function cashup_headers(): array
{
return [
['cashup_id' => lang('Cashups.id')],
['open_date' => lang('Cashups.opened_date')],
['open_employee_id' => lang('Cashups.open_employee')],
@@ -872,8 +907,8 @@ define('CASHUPS_HEADERS', [
['closed_amount_card' => lang('Cashups.closed_amount_card')],
['closed_amount_check' => lang('Cashups.closed_amount_check')],
['closed_amount_total' => lang('Cashups.closed_amount_total')]
]
);
];
}
/**
@@ -881,7 +916,7 @@ define('CASHUPS_HEADERS', [
*/
function get_cashups_manage_table_headers(): string
{
$headers = CASHUPS_HEADERS;
$headers = cashup_headers();
return transform_headers($headers);
}

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,88 +1,89 @@
<?php
return [
"address_1" => "Dirección 1",
"address_2" => "Dirección 2",
"admin" => "",
"city" => "Ciudad",
"clerk" => "",
"close" => "Cerrar",
"color" => "",
"comments" => "Comentarios",
"common" => "común",
"confirm_search" => "Ha seleccionado una o más filas, éstas no estarán seleccionadas después de su búsqueda. ¿Está seguro(a) de enviar su búsqueda?",
"copyrights" => "© 2010 - {0}",
"correct_errors" => "Por favor verifique que no hay errores antes de guardar",
"country" => "País",
"dashboard" => "",
"date" => "Fecha",
"delete" => "Eliminar",
"det" => "detalles",
"download_import_template" => "Descargar Plantilla para Importar desde CSV (CSV)",
"edit" => "editar",
"email" => "Correo-e",
"email_invalid_format" => "La dirección de correo-e no tiene el formato correcto.",
"export_csv" => "Exportar a CSV",
"export_csv_no" => "No",
"export_csv_yes" => "Si",
"fields_required_message" => "Los campos en rojo son requeridos",
"fields_required_message_unique" => "",
"first_name" => "Nombre",
"first_name_required" => "El nombre es un campo requerido.",
"first_page" => "Primero",
"gender" => "Género",
"gender_female" => "M",
"gender_male" => "H",
"gender_undefined" => "",
"icon" => "Ícono",
"id" => "Id",
"import" => "Importar",
"import_change_file" => "Cambiar",
"import_csv" => "Importar de CSV",
"import_full_path" => "Se requiere la ruta completa del archivo de CSV",
"import_remove_file" => "Eliminar",
"import_select_file" => "Seleccionar archivo",
"inv" => "Inv",
"last_name" => "Apellido(s)",
"last_name_required" => "El/Los Apellido(s) es un campo requerido.",
"last_page" => "Último",
"learn_about_project" => "para conocer la última información sobre el proyecto.",
"list_of" => "Lista de",
"logo" => "Logo",
"logo_mark" => "Marca",
"logout" => "Cerrar Sesión",
"manager" => "",
"migration_needed" => "La migración de la base de datos a {0} comenzará luego de acceder.",
"new" => "Nuevo(a)",
"no" => "",
"no_persons_to_display" => "No existen personas para mostrar.",
"none_selected_text" => "[Seleccionar]",
"or" => "O",
"people" => "",
"phone_number" => "Número Tel",
"phone_number_required" => "",
"please_visit_my" => "Por favor visite",
"position" => "",
"powered_by" => "Ejecutando sobre",
"price" => "Precio",
"print" => "Imprimir",
"remove" => "Elliminar",
"required" => "Requerido",
"restore" => "Restaurar",
"return_policy" => "Política de Devoluciones",
"search" => "Buscar",
"search_options" => "Opciones de búsqueda",
"searched_for" => "Buscado por",
"software_short" => "OSPOS",
"software_title" => "Punto de Venta de Código Abierto (Open Source Point of Sale)",
"state" => "Estado",
"submit" => "Enviar",
"total_spent" => "Total Gastado",
"unknown" => "Desconocido",
"view_recent_sales" => "Ver Ventas Recientes",
"website" => "sitio web",
"welcome" => "Bienvenido(a)",
"welcome_message" => "Bienvenido(a) a OSPOS, haga clic en un módulo para comenzar.",
"yes" => "",
"you_are_using_ospos" => "Está utilizando la versión de Código Abierto de Punto de Venta",
"zip" => "CP",
'address_1' => "Dirección 1",
'address_2' => "Dirección 2",
'admin' => "",
'city' => "Ciudad",
'clerk' => "",
'close' => "Cerrar",
'color' => "",
'comments' => "Comentarios",
'common' => "común",
'confirm_search' => "Ha seleccionado una o más filas, éstas no estarán seleccionadas después de su búsqueda. ¿Está seguro(a) de enviar su búsqueda?",
'copyrights' => "© 2010 - {0}",
'correct_errors' => "Por favor verifique que no hay errores antes de guardar",
'country' => "País",
'dashboard' => "",
'date' => "Fecha",
'delete' => "Eliminar",
'det' => "detalles",
'download_import_template' => "Descargar Plantilla para Importar desde CSV (CSV)",
'edit' => "editar",
'email' => "Correo-e",
'email_invalid_format' => "La dirección de correo-e no tiene el formato correcto.",
'export_csv' => "Exportar a CSV",
'export_csv_no' => "No",
'export_csv_yes' => "Si",
'fields_required_message' => "Los campos en rojo son requeridos",
'fields_required_message_unique' => "",
'first_name' => "Nombre",
'first_name_required' => "El nombre es un campo requerido.",
'first_page' => "Primero",
'gender' => "Género",
'gender_female' => "M",
'gender_male' => "H",
'gender_undefined' => "",
'icon' => "Ícono",
'id' => "Id",
'import' => "Importar",
'import_change_file' => "Cambiar",
'import_csv' => "Importar de CSV",
'import_full_path' => "Se requiere la ruta completa del archivo de CSV",
'import_remove_file' => "Eliminar",
'import_select_file' => "Seleccionar archivo",
'inv' => "Inv",
'last_name' => "Apellido(s)",
'last_name_required' => "El/Los Apellido(s) es un campo requerido.",
'last_page' => "Último",
'learn_about_project' => "para conocer la última información sobre el proyecto.",
'list_of' => "Lista de",
'logo' => "Logo",
'logo_mark' => "Marca",
'logout' => "Cerrar Sesión",
'manager' => "",
'migration_needed' => "La migración de la base de datos a {0} comenzará luego de acceder.",
'new' => "Nuevo(a)",
'no' => "",
'no_persons_to_display' => "No existen personas para mostrar.",
'none_selected_text' => "[Seleccionar]",
'or' => "O",
'people' => "",
'phone_number' => "Número Tel",
'phone_number_required' => "",
'please_visit_my' => "Por favor visite",
'position' => "",
'powered_by' => "Ejecutando sobre",
'price' => "Precio",
'print' => "Imprimir",
'remove' => "Elliminar",
'required' => "Requerido",
'restore' => "Restaurar",
'return_policy' => "Política de Devoluciones",
'search' => "Buscar",
'search_options' => "Opciones de búsqueda",
'searched_for' => "Buscado por",
'software_short' => "OSPOS",
'software_title' => "Punto de Venta de Código Abierto (Open Source Point of Sale)",
'state' => "Estado",
'submit' => "Enviar",
'total_spent' => "Total Gastado",
'unknown' => "Desconocido",
'view_recent_sales' => "Ver Ventas Recientes",
'website' => "sitio web",
'welcome' => "Bienvenido(a)",
'welcome_message' => "Bienvenido(a) a OSPOS, haga clic en un módulo para comenzar.",
'yes' => "Si",
'you_are_using_ospos' => "Está utilizando la versión de Código Abierto de Punto de Venta",
'zip' => "CP",
];

View File

@@ -1,330 +1,331 @@
<?php
return [
"address" => "Dirección de la Empresa",
"address_required" => "La Dirección de la Empresa es un campo requerido.",
"all_set" => "Todos los permisos han sido establecidos correctamente!",
"allow_duplicate_barcodes" => "Permitir Códigos de Barra Duplicados",
"apostrophe" => "apostrofé",
"backup_button" => "Respaldar",
"backup_database" => "Respaldar Base de Datos",
"barcode" => "Código de Barras",
"barcode_company" => "Nombre de la Empresa",
"barcode_configuration" => "Configuración del Código de Barras",
"barcode_content" => "Contenido del Código de Barras",
"barcode_first_row" => "Fila 1",
"barcode_font" => "Tipo de Letra",
"barcode_formats" => "Formatos de Entrada",
"barcode_generate_if_empty" => "Generar si está vacío.",
"barcode_height" => "Alto (px)",
"barcode_id" => "Id Artículo/Nombre",
"barcode_info" => "Información de Configuración para Códigos de Barras",
"barcode_layout" => "Formato Código de Barras",
"barcode_name" => "Nombre",
"barcode_number" => "Código de Barras",
"barcode_number_in_row" => "Número en renglón",
"barcode_page_cellspacing" => "Mostrar espaciado de celda de la página.",
"barcode_page_width" => "Ancho de página",
"barcode_price" => "Precio",
"barcode_second_row" => "Renglón 2",
"barcode_third_row" => "Renglón 3",
"barcode_tooltip" => "Advertencia: Esta función puede hacer que se importen o creen elementos duplicados. No lo use si no desea códigos de barras duplicados.",
"barcode_type" => "Tipo de código de barras",
"barcode_width" => "Ancho (px)",
"bottom" => "Final",
"cash_button" => "",
"cash_button_1" => "",
"cash_button_2" => "",
"cash_button_3" => "",
"cash_button_4" => "",
"cash_button_5" => "",
"cash_button_6" => "",
"cash_decimals" => "decimales en efectivo",
"cash_decimals_tooltip" => "Si los decimales son iguales entonces no tendrá redondeo.",
"cash_rounding" => "Redondeo de efectivo",
"category_dropdown" => "Mostrar categoría como un menú desplegable",
"center" => "Centro",
"change_apperance_tooltip" => "",
"comma" => "coma",
"company" => "Nombre de la Compañía",
"company_avatar" => "",
"company_change_image" => "Cambiar Imagen",
"company_logo" => "Logo de la Compañía",
"company_remove_image" => "Eliminar Imagen",
"company_required" => "Nombre de la compañia es un campo requerido",
"company_select_image" => "Seleccionar Imagen",
"company_website_url" => "Website de la compañía no es una URL valida (http://...).",
"country_codes" => "Códigos de Países",
"country_codes_tooltip" => "Lista separada por comas de códigos de países para la búsqueda de direcciones nominatim.",
"currency_code" => "código de moneda",
"currency_decimals" => "Decimales de moneda",
"currency_symbol" => "Símbolo de moneda",
"current_employee_only" => "",
"customer_reward" => "Recompensa",
"customer_reward_duplicate" => "Recompensa debe ser única.",
"customer_reward_enable" => "Habilita recompensas para los clientes",
"customer_reward_invalid_chars" => "Recompensa no debe tener '_'",
"customer_reward_required" => "Recompensa es un campo requerido",
"customer_sales_tax_support" => "",
"date_or_time_format" => "Filtro Fecha y Hora",
"datetimeformat" => "Formato de Fecha y Hora",
"decimal_point" => "Punto Decimal",
"default_barcode_font_size_number" => "El tamaño de fuente del código de barras predeterminado debe ser un número.",
"default_barcode_font_size_required" => "El tamaño de fuente predeterminado del código de barras es un campo obligatorio.",
"default_barcode_height_number" => "La altura predeterminada del código de barras debe ser un número.",
"default_barcode_height_required" => "La altura predeterminada del código de barras es un campo obligatorio.",
"default_barcode_num_in_row_number" => "El número de código de barras predeterminado en la fila debe ser un número.",
"default_barcode_num_in_row_required" => "El número de código de barras predeterminado en la fila es un campo obligatorio.",
"default_barcode_page_cellspacing_number" => "El espacio entre celdas predeterminado de la página de código de barras debe ser un número.",
"default_barcode_page_cellspacing_required" => "El espaciado entre celdas de página de código de barras predeterminado es un campo obligatorio.",
"default_barcode_page_width_number" => "La anchura del código de barras debe ser un número.",
"default_barcode_page_width_required" => "El ancho predeterminado del código de barras es un campo obligatorio.",
"default_barcode_width_number" => "El Ancho del código de barra debe ser un número.",
"default_barcode_width_required" => "El ancho predeterminado del código de barras es un campo obligatorio.",
"default_item_columns" => "Número de artículos por columna predeterminado",
"default_origin_tax_code" => "Código de Impuesto predeterminado",
"default_receivings_discount" => "Descuentos de recibos predeterminados",
"default_receivings_discount_number" => "Descuentos de recibos deben ser números.",
"default_receivings_discount_required" => "Descuentos de recibos es un campo requerido.",
"default_sales_discount" => "% Descuentos en ventas",
"default_sales_discount_number" => "El descuento predeterminado debe ser un número.",
"default_sales_discount_required" => "Descuento de Ventas por Defecto es un campo requerido.",
"default_tax_category" => "Categoría de Impuesto Predeterminada",
"default_tax_code" => "Código de Impuesto Predeterminado",
"default_tax_jurisdiction" => "Jurisdicción de Impuesto Predeterminada",
"default_tax_name_number" => "Nombre de Impuesto Predeterminado debe ser una cadena de texto.",
"default_tax_name_required" => "Nombre de Impuesto Predeterminado es un campo requerido.",
"default_tax_rate" => "Tasa impositiva predeterminada %",
"default_tax_rate_1" => "Tasa de Impuestos 1",
"default_tax_rate_2" => "Tasa de Impuestos 2",
"default_tax_rate_3" => "",
"default_tax_rate_number" => "La tasa impositiva predeterminada debe ser un número.",
"default_tax_rate_required" => "Tasa de impuestos predeterminada es un campo obligatorio.",
"derive_sale_quantity" => "Permitir cantidad de venta derivada",
"derive_sale_quantity_tooltip" => "Si se marca, se proporcionará un nuevo tipo de artículo para los artículos pedidos por cantidad extendida",
"dinner_table" => "Mesa",
"dinner_table_duplicate" => "La tabla debe ser única.",
"dinner_table_enable" => "Habilitar Mesa de Alimentos",
"dinner_table_invalid_chars" => "El nombre de la tabla no puede llevar '_'.",
"dinner_table_required" => "Tabla es requerida.",
"dot" => "punto(.)",
"email" => "Email",
"email_configuration" => "Configuración Email",
"email_mailpath" => "Ruta a Sendmail",
"email_protocol" => "Protocolo",
"email_receipt_check_behaviour" => "Email Receipt checkbox",
"email_receipt_check_behaviour_always" => "Siempre selecionado",
"email_receipt_check_behaviour_last" => "Recuerda la última selección",
"email_receipt_check_behaviour_never" => "Núnca seleccionado",
"email_smtp_crypto" => "Encriptación SMTP",
"email_smtp_host" => "Servidor SMTP",
"email_smtp_pass" => "Contraseña del Servidor SMTP",
"email_smtp_port" => "Puerto del Servidor SMTP",
"email_smtp_timeout" => "Expiró Tiempo de Espera del Servidor SMTP",
"email_smtp_user" => "Nombre de Usuario del Servidor SMTP",
"enable_avatar" => "",
"enable_avatar_tooltip" => "",
"enable_dropdown_tooltip" => "",
"enable_new_look" => "",
"enable_right_bar" => "",
"enable_right_bar_tooltip" => "",
"enforce_privacy" => "Enforce privacy",
"enforce_privacy_tooltip" => "Protect Customers privacy enforcing data scrambling in case of their data being deleted",
"fax" => "Fax",
"file_perm" => "Hay problemas con los permisos de archivo, por favor corríjalos y recargue esta página.",
"financial_year" => "Inicio del Año Fiscal",
"financial_year_apr" => "1.º de Abril",
"financial_year_aug" => "1.º de Agosto",
"financial_year_dec" => "1.º de Diciembre",
"financial_year_feb" => "1.º de Febrero",
"financial_year_jan" => "1.º de Enero",
"financial_year_jul" => "1.º de Julio",
"financial_year_jun" => "1.º de Junio",
"financial_year_mar" => "1.º de Marzo",
"financial_year_may" => "1.º de Mayo",
"financial_year_nov" => "1.º de Noviembre",
"financial_year_oct" => "1.º de Octubre",
"financial_year_sep" => "1º. de Septiembre",
"floating_labels" => "Etiquetas Flotantes",
"gcaptcha_enable" => "reCAPTCHA de Página de Ingreso",
"gcaptcha_secret_key" => "reCAPTCHA Secret Key",
"gcaptcha_secret_key_required" => "reCAPTCHA Llave Secreta es un campo requerido",
"gcaptcha_site_key" => "reCAPTCHA Site Key",
"gcaptcha_site_key_required" => "reCAPTCHA Site Key is a required field",
"gcaptcha_tooltip" => "Protect the Login page with Google reCAPTCHA, click the icon for an API key pair.",
"general" => "General",
"general_configuration" => "General Configuration",
"giftcard_number" => "Gift Card Number",
"giftcard_random" => "Generate Random",
"giftcard_series" => "Generate in Series",
"image_allowed_file_types" => "Tipo de archivos permitidos",
"image_max_height_tooltip" => "Altura máxima permitida de imágenes en píxeles (px).",
"image_max_size_tooltip" => "Tamaño máximo permitido de archivo de imágenes en kilobytes (kb).",
"image_max_width_tooltip" => "Ancho máximo permitido para imágenes en píxeles (px).",
"image_restrictions" => "Restricciones de carga de imágenes",
"include_hsn" => "Include Support for HSN Codes",
"info" => "Information",
"info_configuration" => "Store Information",
"input_groups" => "Grupos de Entrada",
"integrations" => "Integraciones",
"integrations_configuration" => "Integraciones Externas",
"invoice" => "Invoice",
"invoice_configuration" => "Invoice Print Settings",
"invoice_default_comments" => "Default Invoice Comments",
"invoice_email_message" => "Invoice Email Template",
"invoice_enable" => "Enable Invoicing",
"invoice_printer" => "Invoice Printer",
"invoice_type" => "Invoice Type",
"is_readable" => "es legible, pero los permisos están configurados incorrectamente. Configúrelo en 640 o 660 y actualice.",
"is_writable" => "se puede escribir, pero los permisos están configurados incorrectamente. Configúrelo en 750 y actualice.",
"item_markup" => "",
"jsprintsetup_required" => "Warning: This functionality will only work if you have the FireFox jsPrintSetup addon installed. Save anyway?",
"language" => "Language",
"last_used_invoice_number" => "Last used Invoice Number",
"last_used_quote_number" => "Last used Quote Number",
"last_used_work_order_number" => "Last used W/O Number",
"left" => "Left",
"license" => "License",
"license_configuration" => "License Statement",
"line_sequence" => "Line Sequence",
"lines_per_page" => "Lines per Page",
"lines_per_page_number" => "Lines per Page must be a number.",
"lines_per_page_required" => "Lines per Page is a required field.",
"locale" => "Localization",
"locale_configuration" => "Localization Configuration",
"locale_info" => "Localization Configuration Information",
"location" => "Stock",
"location_configuration" => "Stock Locations",
"location_info" => "Location Configuration Information",
"login_form" => "Estilo de formulario de inicio de sesión",
"logout" => "Do you want to make a backup before logging out? Click [OK] to backup or [Cancel] to logout.",
"mailchimp" => "Mailchimp",
"mailchimp_api_key" => "Mailchimp Clave API",
"mailchimp_configuration" => "Configuración de MailChimp",
"mailchimp_key_successfully" => "API Key is valid.",
"mailchimp_key_unsuccessfully" => "API Key is invalid.",
"mailchimp_lists" => "Lista (s) de MailChimp",
"mailchimp_tooltip" => "Click the icon for an API Key.",
"message" => "Message",
"message_configuration" => "Message Configuration",
"msg_msg" => "Saved Text Message",
"msg_msg_placeholder" => "If you wish to use a SMS template save your message here, otherwise leave the box blank.",
"msg_pwd" => "SMS-API Password",
"msg_pwd_required" => "SMS-API Password is a required field",
"msg_src" => "SMS-API Sender ID",
"msg_src_required" => "SMS-API Sender ID is a required field",
"msg_uid" => "SMS-API Username",
"msg_uid_required" => "SMS-API Username is a required field",
"multi_pack_enabled" => "Multiple Packages per Item",
"no_risk" => "No security/vulnerability risks.",
"none" => "none",
"notify_alignment" => "Notification Popup Position",
"number_format" => "Number Format",
"number_locale" => "Localization",
"number_locale_invalid" => "The entered locale is invalid. Check the link in the tooltip to find a valid locale.",
"number_locale_required" => "Number Locale is a required field.",
"number_locale_tooltip" => "Find a suitable locale through this link.",
"os_timezone" => "Zona horaria OSPOS:",
"ospos_info" => "Información de instalación OSPOS",
"payment_options_order" => "Payment Options Order",
"perm_risk" => "Los permisos incorrectos ponen en riesgo este software.",
"phone" => "Company Phone",
"phone_required" => "Company Phone is a required field.",
"print_bottom_margin" => "Margin Bottom",
"print_bottom_margin_number" => "Margin Bottom must be a number.",
"print_bottom_margin_required" => "Margin Bottom is a required field.",
"print_delay_autoreturn" => "Autoreturn to Sale delay",
"print_delay_autoreturn_number" => "Autoreturn to Sale delay is a required field.",
"print_delay_autoreturn_required" => "Autoreturn to Sale delay must be a number.",
"print_footer" => "Print Browser Footer",
"print_header" => "Print Browser Header",
"print_left_margin" => "Margin Left",
"print_left_margin_number" => "Margin Left must be a number.",
"print_left_margin_required" => "Margin Left is a required field.",
"print_receipt_check_behaviour" => "Print Receipt checkbox",
"print_receipt_check_behaviour_always" => "Always checked",
"print_receipt_check_behaviour_last" => "Remember last selection",
"print_receipt_check_behaviour_never" => "Always unchecked",
"print_right_margin" => "Margin Right",
"print_right_margin_number" => "Margin Right must be a number.",
"print_right_margin_required" => "Margin Right is a required field.",
"print_silently" => "Show Print Dialog",
"print_top_margin" => "Margin Top",
"print_top_margin_number" => "Margin Top must be a number.",
"print_top_margin_required" => "Margin Top is a required field.",
"quantity_decimals" => "Quantity Decimals",
"quick_cash_enable" => "",
"quote_default_comments" => "Default Quote Comments",
"receipt" => "Receipt",
"receipt_category" => "",
"receipt_configuration" => "Receipt Print Settings",
"receipt_default" => "Default",
"receipt_font_size" => "Font Size",
"receipt_font_size_number" => "Font Size must be a number.",
"receipt_font_size_required" => "Font Size is a required field.",
"receipt_info" => "Receipt Configuration Information",
"receipt_printer" => "Ticket Printer",
"receipt_short" => "Short",
"receipt_show_company_name" => "Show Company Name",
"receipt_show_description" => "Show Description",
"receipt_show_serialnumber" => "Show Serial Number",
"receipt_show_tax_ind" => "Mostrar indicador de impuestos",
"receipt_show_taxes" => "Show Taxes",
"receipt_show_total_discount" => "Show Total Discount",
"receipt_template" => "Receipt Template",
"receiving_calculate_average_price" => "Calcular promedio, Precio (Recepción)",
"recv_invoice_format" => "Receivings Invoice Format",
"register_mode_default" => "Default Register Mode",
"report_an_issue" => "Reportar un problema",
"return_policy_required" => "Return policy is a required field.",
"reward" => "Reward",
"reward_configuration" => "Reward Configuration",
"right" => "Right",
"sales_invoice_format" => "Sales Invoice Format",
"sales_quote_format" => "Sales Quote Format",
"saved_successfully" => "Configuration save successful.",
"saved_unsuccessfully" => "Configuration save failed.",
"security_issue" => "Security Vulnerability Warning",
"server_notice" => "Please use the below info for issue reporting.",
"service_charge" => "",
"show_due_enable" => "",
"show_office_group" => "Show office icon",
"statistics" => "Send Statistics",
"statistics_tooltip" => "Send statistics for development and feature improvement purposes.",
"stock_location" => "Stock location",
"stock_location_duplicate" => "Stock Location must be unique.",
"stock_location_invalid_chars" => "Stock Location can not contain '_'.",
"stock_location_required" => "Stock location is a required field.",
"suggestions_fifth_column" => "",
"suggestions_first_column" => "Column 1",
"suggestions_fourth_column" => "",
"suggestions_layout" => "Search Suggestions Layout",
"suggestions_second_column" => "Column 2",
"suggestions_third_column" => "Column 3",
"system_conf" => "Setup & Conf",
"system_info" => "System Info",
"table" => "Table",
"table_configuration" => "Table Configuration",
"takings_printer" => "Receipt Printer",
"tax" => "Tax",
"tax_category" => "Tax Category",
"tax_category_duplicate" => "The entered tax category already exists.",
"tax_category_invalid_chars" => "The entered tax category is invalid.",
"tax_category_required" => "The tax category is required.",
"tax_category_used" => "Tax category cannot be deleted because it is being used.",
"tax_configuration" => "Tax Configuration",
"tax_decimals" => "Tax Decimals",
"tax_id" => "Tax Id",
"tax_included" => "Tax Included",
"theme" => "Theme",
"theme_preview" => "Vista Previa del Tema:",
"thousands_separator" => "Thousands Separator",
"timezone" => "Timezone",
"timezone_error" => "La zona horaria de OSPOS es diferente a su zona horaria local.",
"top" => "Top",
"use_destination_based_tax" => "Use Destination Based Tax",
"user_timezone" => "Zona horaria local:",
"website" => "Website",
"wholesale_markup" => "",
"work_order_enable" => "Work Order Support",
"work_order_format" => "Work Order Format",
'address' => "Dirección de la Empresa",
'address_required' => "La Dirección de la Empresa es un campo requerido.",
'all_set' => "Todos los permisos han sido establecidos correctamente!",
'allow_duplicate_barcodes' => "Permitir Códigos de Barra Duplicados",
'apostrophe' => "apostrofé",
'backup_button' => "Respaldar",
'backup_database' => "Respaldar Base de Datos",
'barcode' => "Código de Barras",
'barcode_company' => "Nombre de la Empresa",
'barcode_configuration' => "Configuración del Código de Barras",
'barcode_content' => "Contenido del Código de Barras",
'barcode_first_row' => "Fila 1",
'barcode_font' => "Tipo de Letra",
'barcode_formats' => "Formatos de Entrada",
'barcode_generate_if_empty' => "Generar si está vacío.",
'barcode_height' => "Alto (px)",
'barcode_id' => "Id Artículo/Nombre",
'barcode_info' => "Información de Configuración para Códigos de Barras",
'barcode_layout' => "Formato Código de Barras",
'barcode_name' => "Nombre",
'barcode_number' => "Código de Barras",
'barcode_number_in_row' => "Número en renglón",
'barcode_page_cellspacing' => "Mostrar espaciado de celda de la página.",
'barcode_page_width' => "Ancho de página",
'barcode_price' => "Precio",
'barcode_second_row' => "Renglón 2",
'barcode_third_row' => "Renglón 3",
'barcode_tooltip' => "Advertencia: Esta función puede hacer que se importen o creen elementos duplicados. No lo use si no desea códigos de barras duplicados.",
'barcode_type' => "Tipo de código de barras",
'barcode_width' => "Ancho (px)",
'bottom' => "Final",
'cash_button' => "",
'cash_button_1' => "",
'cash_button_2' => "",
'cash_button_3' => "",
'cash_button_4' => "",
'cash_button_5' => "",
'cash_button_6' => "",
'cash_decimals' => "decimales en efectivo",
'cash_decimals_tooltip' => "Si los decimales son iguales entonces no tendrá redondeo.",
'cash_rounding' => "Redondeo de efectivo",
'category_dropdown' => "Mostrar categoría como un menú desplegable",
'center' => "Centro",
'change_apperance_tooltip' => "",
'comma' => "coma",
'company' => "Nombre de la Compañía",
'company_avatar' => "",
'company_change_image' => "Cambiar Imagen",
'company_logo' => "Logo de la Compañía",
'company_remove_image' => "Eliminar Imagen",
'company_required' => "Nombre de la compañia es un campo requerido",
'company_select_image' => "Seleccionar Imagen",
'company_website_url' => "Website de la compañía no es una URL valida (http://...).",
'country_codes' => "Códigos de Países",
'country_codes_tooltip' => "Lista separada por comas de códigos de países para la búsqueda de direcciones nominatim.",
'currency_code' => "código de moneda",
'currency_decimals' => "Decimales de moneda",
'currency_symbol' => "Símbolo de moneda",
'current_employee_only' => "",
'customer_reward' => "Recompensa",
'customer_reward_duplicate' => "Recompensa debe ser única.",
'customer_reward_enable' => "Habilita recompensas para los clientes",
'customer_reward_invalid_chars' => "Recompensa no debe tener '_'",
'customer_reward_required' => "Recompensa es un campo requerido",
'customer_sales_tax_support' => "",
'date_or_time_format' => "Filtro Fecha y Hora",
'datetimeformat' => "Formato de Fecha y Hora",
'decimal_point' => "Punto Decimal",
'default_barcode_font_size_number' => "El tamaño de fuente del código de barras predeterminado debe ser un número.",
'default_barcode_font_size_required' => "El tamaño de fuente predeterminado del código de barras es un campo obligatorio.",
'default_barcode_height_number' => "La altura predeterminada del código de barras debe ser un número.",
'default_barcode_height_required' => "La altura predeterminada del código de barras es un campo obligatorio.",
'default_barcode_num_in_row_number' => "El número de código de barras predeterminado en la fila debe ser un número.",
'default_barcode_num_in_row_required' => "El número de código de barras predeterminado en la fila es un campo obligatorio.",
'default_barcode_page_cellspacing_number' => "El espacio entre celdas predeterminado de la página de código de barras debe ser un número.",
'default_barcode_page_cellspacing_required' => "El espaciado entre celdas de página de código de barras predeterminado es un campo obligatorio.",
'default_barcode_page_width_number' => "La anchura del código de barras debe ser un número.",
'default_barcode_page_width_required' => "El ancho predeterminado del código de barras es un campo obligatorio.",
'default_barcode_width_number' => "El Ancho del código de barra debe ser un número.",
'default_barcode_width_required' => "El ancho predeterminado del código de barras es un campo obligatorio.",
'default_item_columns' => "Número de artículos por columna predeterminado",
'default_origin_tax_code' => "Código de Impuesto predeterminado",
'default_receivings_discount' => "Descuentos de recibos predeterminados",
'default_receivings_discount_number' => "Descuentos de recibos deben ser números.",
'default_receivings_discount_required' => "Descuentos de recibos es un campo requerido.",
'default_sales_discount' => "% Descuentos en ventas",
'default_sales_discount_number' => "El descuento predeterminado debe ser un número.",
'default_sales_discount_required' => "Descuento de Ventas por Defecto es un campo requerido.",
'default_tax_category' => "Categoría de Impuesto Predeterminada",
'default_tax_code' => "Código de Impuesto Predeterminado",
'default_tax_jurisdiction' => "Jurisdicción de Impuesto Predeterminada",
'default_tax_name_number' => "Nombre de Impuesto Predeterminado debe ser una cadena de texto.",
'default_tax_name_required' => "Nombre de Impuesto Predeterminado es un campo requerido.",
'default_tax_rate' => "Tasa impositiva predeterminada %",
'default_tax_rate_1' => "Tasa de Impuestos 1",
'default_tax_rate_2' => "Tasa de Impuestos 2",
'default_tax_rate_3' => "",
'default_tax_rate_number' => "La tasa impositiva predeterminada debe ser un número.",
'default_tax_rate_required' => "Tasa de impuestos predeterminada es un campo obligatorio.",
'derive_sale_quantity' => "Permitir cantidad de venta derivada",
'derive_sale_quantity_tooltip' => "Si se marca, se proporcionará un nuevo tipo de artículo para los artículos pedidos por cantidad extendida",
'dinner_table' => "Mesa",
'dinner_table_duplicate' => "La tabla debe ser única.",
'dinner_table_enable' => "Habilitar Mesa de Alimentos",
'dinner_table_invalid_chars' => "El nombre de la tabla no puede llevar '_'.",
'dinner_table_required' => "Tabla es requerida.",
'dot' => "punto(.)",
'email' => "Email",
'email_configuration' => "Configuración Email",
'email_mailpath' => "Ruta a Sendmail",
'email_protocol' => "Protocolo",
'email_receipt_check_behaviour' => "Email Receipt checkbox",
'email_receipt_check_behaviour_always' => "Siempre selecionado",
'email_receipt_check_behaviour_last' => "Recuerda la última selección",
'email_receipt_check_behaviour_never' => "Núnca seleccionado",
'email_smtp_crypto' => "Encriptación SMTP",
'email_smtp_host' => "Servidor SMTP",
'email_smtp_pass' => "Contraseña del Servidor SMTP",
'email_smtp_port' => "Puerto del Servidor SMTP",
'email_smtp_timeout' => "Expiró Tiempo de Espera del Servidor SMTP",
'email_smtp_user' => "Nombre de Usuario del Servidor SMTP",
'enable_avatar' => "",
'enable_avatar_tooltip' => "",
'enable_dropdown_tooltip' => "",
'enable_new_look' => "",
'enable_right_bar' => "",
'enable_right_bar_tooltip' => "",
'enforce_privacy' => "Enforce privacy",
'enforce_privacy_tooltip' => "Protect Customers privacy enforcing data scrambling in case of their data being deleted",
'fax' => "Fax",
'file_perm' => "Hay problemas con los permisos de archivo, por favor corríjalos y recargue esta página.",
'financial_year' => "Inicio del Año Fiscal",
'financial_year_apr' => "1.º de Abril",
'financial_year_aug' => "1.º de Agosto",
'financial_year_dec' => "1.º de Diciembre",
'financial_year_feb' => "1.º de Febrero",
'financial_year_jan' => "1.º de Enero",
'financial_year_jul' => "1.º de Julio",
'financial_year_jun' => "1.º de Junio",
'financial_year_mar' => "1.º de Marzo",
'financial_year_may' => "1.º de Mayo",
'financial_year_nov' => "1.º de Noviembre",
'financial_year_oct' => "1.º de Octubre",
'financial_year_sep' => "1º. de Septiembre",
'floating_labels' => "Etiquetas Flotantes",
'gcaptcha_enable' => "reCAPTCHA de Página de Ingreso",
'gcaptcha_secret_key' => "reCAPTCHA Secret Key",
'gcaptcha_secret_key_required' => "reCAPTCHA Llave Secreta es un campo requerido",
'gcaptcha_site_key' => "reCAPTCHA Site Key",
'gcaptcha_site_key_required' => "reCAPTCHA Site Key is a required field",
'gcaptcha_tooltip' => "Protect the Login page with Google reCAPTCHA, click the icon for an API key pair.",
'general' => "General",
'general_configuration' => "General Configuration",
'giftcard_number' => "Gift Card Number",
'giftcard_random' => "Generate Random",
'giftcard_series' => "Generate in Series",
'image_allowed_file_types' => "Tipo de archivos permitidos",
'image_max_height_tooltip' => "Altura máxima permitida de imágenes en píxeles (px).",
'image_max_size_tooltip' => "Tamaño máximo permitido de archivo de imágenes en kilobytes (kb).",
'image_max_width_tooltip' => "Ancho máximo permitido para imágenes en píxeles (px).",
'image_restrictions' => "Restricciones de carga de imágenes",
'include_hsn' => "Include Support for HSN Codes",
'info' => "Information",
'info_configuration' => "Store Information",
'input_groups' => "Grupos de Entrada",
'integrations' => "Integraciones",
'integrations_configuration' => "Integraciones Externas",
'invoice' => "Invoice",
'invoice_configuration' => "Invoice Print Settings",
'invoice_default_comments' => "Default Invoice Comments",
'invoice_email_message' => "Invoice Email Template",
'invoice_enable' => "Enable Invoicing",
'invoice_printer' => "Invoice Printer",
'invoice_type' => "Invoice Type",
'is_readable' => "es legible, pero los permisos están configurados incorrectamente. Configúrelo en 640 o 660 y actualice.",
'is_writable' => "se puede escribir, pero los permisos están configurados incorrectamente. Configúrelo en 750 y actualice.",
'item_markup' => "",
'jsprintsetup_required' => "Warning: This functionality will only work if you have the FireFox jsPrintSetup addon installed. Save anyway?",
'language' => "Language",
'last_used_invoice_number' => "Last used Invoice Number",
'last_used_quote_number' => "Last used Quote Number",
'last_used_work_order_number' => "Last used W/O Number",
'left' => "Left",
'license' => "License",
'license_configuration' => "License Statement",
'line_sequence' => "Line Sequence",
'lines_per_page' => "Lines per Page",
'lines_per_page_number' => "Lines per Page must be a number.",
'lines_per_page_required' => "Lines per Page is a required field.",
'locale' => "Localization",
'locale_configuration' => "Localization Configuration",
'locale_info' => "Localization Configuration Information",
'location' => "Stock",
'location_configuration' => "Stock Locations",
'location_info' => "Location Configuration Information",
'login_form' => "Estilo de formulario de inicio de sesión",
'logout' => "Do you want to make a backup before logging out? Click [OK] to backup or [Cancel] to logout.",
'mailchimp' => "Mailchimp",
'mailchimp_api_key' => "Mailchimp Clave API",
'mailchimp_configuration' => "Configuración de MailChimp",
'mailchimp_key_successfully' => "API Key is valid.",
'mailchimp_key_unsuccessfully' => "API Key is invalid.",
'mailchimp_lists' => "Lista (s) de MailChimp",
'mailchimp_tooltip' => "Click the icon for an API Key.",
'message' => "Message",
'message_configuration' => "Message Configuration",
'msg_msg' => "Saved Text Message",
'msg_msg_placeholder' => "If you wish to use a SMS template save your message here, otherwise leave the box blank.",
'msg_pwd' => "SMS-API Password",
'msg_pwd_required' => "SMS-API Password is a required field",
'msg_src' => "SMS-API Sender ID",
'msg_src_required' => "SMS-API Sender ID is a required field",
'msg_uid' => "SMS-API Username",
'msg_uid_required' => "SMS-API Username is a required field",
'multi_pack_enabled' => "Multiple Packages per Item",
'no_risk' => "No security/vulnerability risks.",
'none' => "none",
'notify_alignment' => "Notification Popup Position",
'number_format' => "Number Format",
'number_locale' => "Localization",
'number_locale_invalid' => "The entered locale is invalid. Check the link in the tooltip to find a valid locale.",
'number_locale_required' => "Number Locale is a required field.",
'number_locale_tooltip' => "Find a suitable locale through this link.",
'os_timezone' => "Zona horaria OSPOS:",
'ospos_info' => "Información de instalación OSPOS",
'payment_options_order' => "Payment Options Order",
'perm_risk' => "Los permisos incorrectos ponen en riesgo este software.",
'phone' => "Company Phone",
'phone_required' => "Company Phone is a required field.",
'print_bottom_margin' => "Margin Bottom",
'print_bottom_margin_number' => "Margin Bottom must be a number.",
'print_bottom_margin_required' => "Margin Bottom is a required field.",
'print_delay_autoreturn' => "Autoreturn to Sale delay",
'print_delay_autoreturn_number' => "Autoreturn to Sale delay is a required field.",
'print_delay_autoreturn_required' => "Autoreturn to Sale delay must be a number.",
'print_footer' => "Print Browser Footer",
'print_header' => "Print Browser Header",
'print_left_margin' => "Margin Left",
'print_left_margin_number' => "Margin Left must be a number.",
'print_left_margin_required' => "Margin Left is a required field.",
'print_receipt_check_behaviour' => "Print Receipt checkbox",
'print_receipt_check_behaviour_always' => "Always checked",
'print_receipt_check_behaviour_last' => "Remember last selection",
'print_receipt_check_behaviour_never' => "Always unchecked",
'print_right_margin' => "Margin Right",
'print_right_margin_number' => "Margin Right must be a number.",
'print_right_margin_required' => "Margin Right is a required field.",
'print_silently' => "Show Print Dialog",
'print_top_margin' => "Margin Top",
'print_top_margin_number' => "Margin Top must be a number.",
'print_top_margin_required' => "Margin Top is a required field.",
'quantity_decimals' => "Quantity Decimals",
'quick_cash_enable' => "",
'quote_default_comments' => "Default Quote Comments",
'receipt' => "Receipt",
'receipt_category' => "",
'receipt_configuration' => "Receipt Print Settings",
'receipt_default' => "Default",
'receipt_font_size' => "Font Size",
'receipt_font_size_number' => "Font Size must be a number.",
'receipt_font_size_required' => "Font Size is a required field.",
'receipt_info' => "Receipt Configuration Information",
'receipt_printer' => "Ticket Printer",
'receipt_short' => "Short",
'receipt_show_company_name' => "Show Company Name",
'receipt_show_description' => "Show Description",
'receipt_show_serialnumber' => "Show Serial Number",
'receipt_show_tax_ind' => "Mostrar indicador de impuestos",
'receipt_show_taxes' => "Show Taxes",
'receipt_show_total_discount' => "Show Total Discount",
'receipt_template' => "Receipt Template",
'receiving_calculate_average_price' => "Calcular promedio, Precio (Recepción)",
'recv_invoice_format' => "Receivings Invoice Format",
'register_mode_default' => "Default Register Mode",
'report_an_issue' => "Reportar un problema",
'return_policy_required' => "Return policy is a required field.",
'reward' => "Reward",
'reward_configuration' => "Reward Configuration",
'right' => "Right",
'sales_invoice_format' => "Sales Invoice Format",
'sales_quote_format' => "Sales Quote Format",
'saved_successfully' => "Configuration save successful.",
'saved_unsuccessfully' => "Configuration save failed.",
'security_issue' => "Security Vulnerability Warning",
'server_notice' => "Please use the below info for issue reporting.",
'service_charge' => "",
'show_due_enable' => "",
'show_office_group' => "Show office icon",
'statistics' => "Send Statistics",
'statistics_tooltip' => "Send statistics for development and feature improvement purposes.",
'stock_location' => "Ubicación del inventario",
'stock_location_duplicate' => "Stock Location must be unique.",
'stock_location_invalid_chars' => "Stock Location can not contain '_'.",
'stock_location_required' => "Stock location is a required field.",
'suggestions_fifth_column' => "",
'suggestions_first_column' => "Column 1",
'suggestions_fourth_column' => "",
'suggestions_layout' => "Search Suggestions Layout",
'suggestions_second_column' => "Column 2",
'suggestions_third_column' => "Column 3",
'system_conf' => "Setup & Conf",
'system_info' => "System Info",
'table' => "Table",
'table_configuration' => "Table Configuration",
'takings_printer' => "Receipt Printer",
'tax' => "Tax",
'tax_category' => "Tax Category",
'tax_category_duplicate' => "The entered tax category already exists.",
'tax_category_invalid_chars' => "The entered tax category is invalid.",
'tax_category_required' => "The tax category is required.",
'tax_category_used' => "Tax category cannot be deleted because it is being used.",
'tax_configuration' => "Tax Configuration",
'tax_decimals' => "Tax Decimals",
'tax_id' => "Tax Id",
'tax_included' => "Tax Included",
'theme' => "Theme",
'theme_preview' => "Vista Previa del Tema:",
'thousands_separator' => "Thousands Separator",
'timezone' => "Timezone",
'timezone_error' => "La zona horaria de OSPOS es diferente a su zona horaria local.",
'top' => "Top",
'use_destination_based_tax' => "Use Destination Based Tax",
'user_timezone' => "Zona horaria local:",
'website' => "Website",
'wholesale_markup' => "",
'work_order_enable' => "Work Order Support",
'work_order_format' => "Work Order Format",
];

View File

@@ -1,56 +1,57 @@
<?php
return [
"account_number" => "Cuenta #",
"account_number_duplicate" => "El Número de Cuenta ya se encuentra en la base de datos.",
"available_points" => "Puntos Disponibles",
"available_points_value" => "",
"average" => "Gasto Promedio",
"avg_discount" => "Descuento Promedio",
"basic_information" => "Información",
"cannot_be_deleted" => "No se pueden borrar los Clientes seleccionados, uno o más tienen ventas.",
"company_name" => "Compañia",
"confirm_delete" => "¿Está seguro que quiere borrar los Clientes seleccionados?",
"confirm_restore" => "¿Está seguro que quiere restaurar los clientes seleccionados?",
"consent" => "Consentimiento de registro",
"consent_required" => "Consentimiento de registro es un campo requerido.",
"csv_import_failed" => "Fallo al importar a CSV",
"csv_import_nodata_wrongformat" => "El archivo subido no contiene datos o no está formado correctamente.",
"csv_import_partially_failed" => "La importación del Cliente fue exitosa pero con algunos errores:",
"csv_import_success" => "Cliente importado exitosamente.",
"customer" => "Cliente",
"date" => "Fecha",
"discount" => "Descuento",
"discount_fixed" => "Descuento Fijo",
"discount_percent" => "Porcentaje de Descuento",
"discount_type" => "Tipo de Descuento",
"email_duplicate" => "El correo electrónico ya se encuentra en la base de datos.",
"employee" => "Empleado",
"error_adding_updating" => "Fallo al agregar o actualizar el Cliente.",
"import_items_csv" => "Importar Cliente desde CSV",
"mailchimp_activity_click" => "Click Correo Electrónico",
"mailchimp_activity_lastopen" => "Último correo electrónico abierto",
"mailchimp_activity_open" => "Correo electrónico abierto",
"mailchimp_activity_total" => "Correo electrónico enviado",
"mailchimp_activity_unopen" => "Correo electrónico sin abrir",
"mailchimp_email_client" => "cliente de correo electrónico",
"mailchimp_info" => "Mailchimp",
"mailchimp_member_rating" => "Puntaje",
"mailchimp_status" => "Estado",
"mailchimp_vip" => "VIP",
"max" => "Gasto Máximo",
"min" => "Gasto Mínimo",
"new" => "Nuevo Cliente",
"none_selected" => "No ha seleccionado un Cliente para borrar.",
"one_or_multiple" => "Cliente(s)",
"quantity" => "Cantidad",
"stats_info" => "Estadísticas",
"successful_adding" => "Ha agregado un Cliente con éxito",
"successful_deleted" => "Lo ha borrado exitosamente",
"successful_updating" => "Ha actualizado un Cliente exitosamente",
"tax_code" => "Código de Impuesto",
"tax_id" => "Id Impuesto",
"taxable" => "Impuestable",
"total" => "Gasto total",
"update" => "Actualizar Cliente",
"rewards_package" => "Paquete de Recompensas",
'account_number' => "Cuenta #",
'account_number_duplicate' => "El Número de Cuenta ya se encuentra en la base de datos.",
'available_points' => "Puntos Disponibles",
'available_points_value' => "",
'average' => "Gasto Promedio",
'avg_discount' => "Descuento Promedio",
'basic_information' => "Información",
'cannot_be_deleted' => "No se pueden borrar los Clientes seleccionados, uno o más tienen ventas.",
'company_name' => "Compañia",
'confirm_delete' => "¿Está seguro que quiere borrar los Clientes seleccionados?",
'confirm_restore' => "¿Está seguro que quiere restaurar los clientes seleccionados?",
'consent' => "Consentimiento de registro",
'consent_required' => "Consentimiento de registro es un campo requerido.",
'csv_import_failed' => "Fallo al importar a CSV",
'csv_import_nodata_wrongformat' => "El archivo subido no contiene datos o no está formado correctamente.",
'csv_import_partially_failed' => "La importación del Cliente fue exitosa pero con algunos errores:",
'csv_import_success' => "Cliente importado exitosamente.",
'customer' => "Cliente",
'date' => "Fecha",
'discount' => "Descuento",
'discount_fixed' => "Descuento Fijo",
'discount_percent' => "Porcentaje de Descuento",
'discount_type' => "Tipo de Descuento",
'email_duplicate' => "El correo electrónico ya se encuentra en la base de datos.",
'employee' => "Empleado",
'error_adding_updating' => "Fallo al agregar o actualizar el Cliente.",
'import_items_csv' => "Importar Cliente desde CSV",
'mailchimp_activity_click' => "Click Correo Electrónico",
'mailchimp_activity_lastopen' => "Último correo electrónico abierto",
'mailchimp_activity_open' => "Correo electrónico abierto",
'mailchimp_activity_total' => "Correo electrónico enviado",
'mailchimp_activity_unopen' => "Correo electrónico sin abrir",
'mailchimp_email_client' => "cliente de correo electrónico",
'mailchimp_info' => "Mailchimp",
'mailchimp_member_rating' => "Puntaje",
'mailchimp_status' => "Estado",
'mailchimp_vip' => "VIP",
'max' => "Gasto Máximo",
'min' => "Gasto Mínimo",
'new' => "Nuevo Cliente",
'none_selected' => "No ha seleccionado un Cliente para borrar.",
'one_or_multiple' => "Cliente(s)",
'quantity' => "Cantidad",
'stats_info' => "Estadísticas",
'successful_adding' => "Ha agregado un Cliente con éxito",
'successful_deleted' => "Se ha borrado correctamente",
'successful_updating' => "Ha actualizado un Cliente exitosamente",
'tax_code' => "Código de Impuesto",
'tax_id' => "Id Impuesto",
'taxable' => "Impuestable",
'total' => "Gasto total",
'update' => "Actualizar Cliente",
'rewards_package' => "Paquete de Recompensas",
];

View File

@@ -1,44 +1,45 @@
<?php
return [
"administrator" => "",
"basic_information" => "Información",
"cannot_be_deleted" => "No se puede borrar los empleados seleccionados, uno o más de ellos tienen ventas registradas ó intentas borrar tu propia cuenta.",
"change_employee" => "",
"change_password" => "Cambiar contraseña",
"clerk" => "",
"commission" => "",
"confirm_delete" => "¿Estás seguro que deseas borrar los empleados seleccionados?",
"confirm_restore" => "¿Estás seguro que deseas restaurar los empleados seleccionados?",
"current_password" => "Contraseña Actual",
"current_password_invalid" => "La contraseña actual es inválida.",
"employee" => "Empleado",
"error_adding_updating" => "Agregar ó Actualizar empleado ha fallado.",
"error_deleting_demo_admin" => "No puede borrar el usuario demo de administrador.",
"error_updating_demo_admin" => "No puede cambiar el usuario demo de administrador.",
"language" => "Idioma",
"login_info" => "Iniciar sesión",
"manager" => "",
"new" => "Nuevo Empleado",
"none_selected" => "No ha seleccionado empleados a borrar.",
"one_or_multiple" => "Empleado(s)",
"password" => "Contraseña",
"password_minlength" => "La contraseña debe tener por lo menos 8 letras.",
"password_must_match" => "Las contraseñas no coinciden.",
"password_not_must_match" => "La contraseña actual y nueva contraseña deben ser distintas.",
"password_required" => "Se requiere contraseña.",
"permission_desc" => "Selecciona las casillas para otorgar acceso a los módulos.",
"permission_info" => "Permisos",
"repeat_password" => "Contraseña otra vez",
"subpermission_required" => "Concede por lo menos un permiso para cada módulo.",
"successful_adding" => "Empleado agregado exitosamente.",
"successful_change_password" => "Cambio de contraseña exitoso.",
"successful_deleted" => "Eliminado Satisfactoriamente",
"successful_updating" => "Empleado actualizado exitosamente",
"system_language" => "Idioma del sistema",
"unsuccessful_change_password" => "El cambio de contraseña ha fallado.",
"update" => "Actualizar Empleado",
"username" => "Nombre de Usuario",
"username_duplicate" => "El usuario del empleado ya esta en uso. Favor de escoger otro.",
"username_minlength" => "Nombre de usuario debe tener por lo menos 5 letras.",
"username_required" => "Es necesario el nombre de usuario.",
'administrator' => "",
'basic_information' => "Información",
'cannot_be_deleted' => "No se puede borrar los empleados seleccionados, uno o más de ellos tienen ventas registradas ó intentas borrar tu propia cuenta.",
'change_employee' => "",
'change_password' => "Cambiar contraseña",
'clerk' => "",
'commission' => "",
'confirm_delete' => "¿Estás seguro que deseas borrar los empleados seleccionados?",
'confirm_restore' => "¿Estás seguro que deseas restaurar los empleados seleccionados?",
'current_password' => "Contraseña Actual",
'current_password_invalid' => "La contraseña actual es inválida.",
'employee' => "Empleado",
'error_adding_updating' => "Agregar ó Actualizar empleado ha fallado.",
'error_deleting_demo_admin' => "No puede borrar el usuario demo de administrador.",
'error_updating_demo_admin' => "No puede cambiar el usuario demo de administrador.",
'language' => "Idioma",
'login_info' => "Iniciar sesión",
'manager' => "",
'new' => "Nuevo Empleado",
'none_selected' => "No ha seleccionado empleados a borrar.",
'one_or_multiple' => "Empleado(s)",
'password' => "Contraseña",
'password_minlength' => "La contraseña debe tener por lo menos 8 letras.",
'password_must_match' => "Las contraseñas no coinciden.",
'password_not_must_match' => "La contraseña actual y nueva contraseña deben ser distintas.",
'password_required' => "Se requiere contraseña.",
'permission_desc' => "Selecciona las casillas para otorgar acceso a los módulos.",
'permission_info' => "Permisos",
'repeat_password' => "Contraseña otra vez",
'subpermission_required' => "Concede por lo menos un permiso para cada módulo.",
'successful_adding' => "Empleado agregado exitosamente.",
'successful_change_password' => "Cambio de contraseña exitoso.",
'successful_deleted' => "Se ha borrado correctamente",
'successful_updating' => "Empleado actualizado exitosamente",
'system_language' => "Idioma del sistema",
'unsuccessful_change_password' => "El cambio de contraseña ha fallado.",
'update' => "Actualizar Empleado",
'username' => "Nombre de Usuario",
'username_duplicate' => "El usuario del empleado ya esta en uso. Favor de escoger otro.",
'username_minlength' => "Nombre de usuario debe tener por lo menos 5 letras.",
'username_required' => "Es necesario el nombre de usuario.",
];

View File

@@ -1,71 +1,72 @@
<?php
return [
"add_minus" => "Inventario para agregar o restar.",
"allow_alt_description" => "Permitir Descripción Alterna",
"bulk_edit" => "Editor Masivo",
"cannot_be_deleted" => "No se puede borrar la tarjeta (s) de regalo seleccionada(s), una o mas de las Tarjetas de Regalo ya tuvo ventas.",
"cannot_find_giftcard" => "Tarjeta de Regalo no encontrada.",
"cannot_use" => "Tarjeta de Regalo {0} no puede ser usada para esta venta: Cliente incorrecto.",
"card_value" => "Valor",
"category" => "Categoría",
"change_all_to_allow_alt_desc" => "Permitir descripción alternativa para todos.",
"change_all_to_not_allow_allow_desc" => "No permitir descripción alternativa para todos.",
"change_all_to_serialized" => "Cambiar Todos a Serializados",
"change_all_to_unserialized" => "Cambiar Todos a Sin Serializar",
"confirm_bulk_edit" => "¿Estas seguro que deseas editar las Tarjeta(s) de regalo seleccionadas?",
"confirm_delete" => "¿Estas seguro que deseas borrar las Tarjetas(s) de regalo seleccionadas?",
"confirm_restore" => "¿Estas seguro que deseas restaurar las Tarjeta(s) de regalo seleccionadas?",
"cost_price" => "Precio de Mayoreo",
"count" => "Actualizar Inventario",
"csv_import_failed" => "Fallo en la importación de CSV.",
"current_quantity" => "Cantidad Actual",
"description" => "Descripción",
"details_count" => "Detalles del Inventario",
"do_nothing" => "No hacer Nada",
"edit_fields_you_want_to_update" => "Editar campos para las Tarjeta(s) de regalo seleccionadas.",
"edit_multiple_giftcards" => "Editar Multiples Tarjetas de regalo.",
"error_adding_updating" => "Error al agregar o actualizar la Tarjeta de Regalo.",
"error_updating_multiple" => "Fallo en la actualización de la(s) Tarjeta(s) de regalo.",
"generate_barcodes" => "Generar Códigos de Barra",
"giftcard" => "Tarjeta de Regalo",
"giftcard_number" => "Numero de la Tarjeta de Regalo",
"info_provided_by" => "Información provista por",
"inventory_comments" => "Comentarios",
"is_serialized" => "La Tarjeta de Regalo tiene Numero de Serie",
"low_inventory_giftcards" => "Tarjetas de Regalo con Inventario Bajo",
"manually_editing_of_quantity" => "Editor Manual de Cantidad",
"must_select_giftcard_for_barcode" => "Debes seleccionar al menos (1) Tarjeta de Regalo para generar Códigos de Barra.",
"new" => "Nueva Tarjeta de Regalo",
"no_description_giftcards" => "Gif Cards sin Descripción",
"no_giftcards_to_display" => "No hay Gift Cards para mostrar.",
"none" => "Ninguno",
"none_selected" => "",
"number" => "",
"number_information" => "",
"number_required" => "",
"one_or_multiple" => "",
"person_id" => "",
"quantity" => "",
"quantity_required" => "",
"remaining_balance" => "",
"reorder_level" => "",
"retrive_giftcard_info" => "",
"sales_tax_1" => "",
"sales_tax_2" => "",
"serialized_giftcards" => "",
"successful_adding" => "",
"successful_bulk_edit" => "",
"successful_deleted" => "",
"successful_updating" => "",
"supplier" => "",
"tax_1" => "",
"tax_2" => "",
"tax_percent" => "",
"tax_percents" => "",
"unit_price" => "",
"upc_database" => "",
"update" => "",
"use_inventory_menu" => "",
"value" => "",
"value_required" => "",
'add_minus' => "Inventario para agregar o restar.",
'allow_alt_description' => "Permitir Descripción Alterna",
'bulk_edit' => "Editor Masivo",
'cannot_be_deleted' => "No se puede borrar la tarjeta (s) de regalo seleccionada(s), una o mas de las Tarjetas de Regalo ya tuvo ventas.",
'cannot_find_giftcard' => "Tarjeta de Regalo no encontrada.",
'cannot_use' => "Tarjeta de Regalo {0} no puede ser usada para esta venta: Cliente incorrecto.",
'card_value' => "Valor",
'category' => "Categoría",
'change_all_to_allow_alt_desc' => "Permitir descripción alternativa para todos.",
'change_all_to_not_allow_allow_desc' => "No permitir descripción alternativa para todos.",
'change_all_to_serialized' => "Cambiar Todos a Serializados",
'change_all_to_unserialized' => "Cambiar Todos a Sin Serializar",
'confirm_bulk_edit' => "¿Estas seguro que deseas editar las Tarjeta(s) de regalo seleccionadas?",
'confirm_delete' => "¿Estas seguro que deseas borrar las Tarjetas(s) de regalo seleccionadas?",
'confirm_restore' => "¿Estas seguro que deseas restaurar las Tarjeta(s) de regalo seleccionadas?",
'cost_price' => "Precio mayoreo.",
'count' => "Actualizar inventario",
'csv_import_failed' => "Fallo en la importación de CSV.",
'current_quantity' => "Cantidad actual",
'description' => "Descripción",
'details_count' => "Detalles del Inventario",
'do_nothing' => "No hacer Nada",
'edit_fields_you_want_to_update' => "Editar campos para las Tarjeta(s) de regalo seleccionadas.",
'edit_multiple_giftcards' => "Editar Multiples Tarjetas de regalo.",
'error_adding_updating' => "Error al agregar o actualizar la Tarjeta de Regalo.",
'error_updating_multiple' => "Fallo en la actualización de la(s) Tarjeta(s) de regalo.",
'generate_barcodes' => "Generar Códigos de Barra",
'giftcard' => "Tarjeta de Regalo",
'giftcard_number' => "Numero de la Tarjeta de Regalo",
'info_provided_by' => "Información provista por",
'inventory_comments' => "Comentarios",
'is_serialized' => "La Tarjeta de Regalo tiene Numero de Serie",
'low_inventory_giftcards' => "Tarjetas de Regalo con Inventario Bajo",
'manually_editing_of_quantity' => "Editor Manual de Cantidad",
'must_select_giftcard_for_barcode' => "Debes seleccionar al menos (1) Tarjeta de Regalo para generar Códigos de Barra.",
'new' => "Nueva Tarjeta de Regalo",
'no_description_giftcards' => "Gif Cards sin Descripción",
'no_giftcards_to_display' => "No hay Gift Cards para mostrar.",
'none' => "Ninguno",
'none_selected' => "",
'number' => "",
'number_information' => "Numero de tarjeta de regalo",
'number_required' => "",
'one_or_multiple' => "Tarjeta de regalo",
'person_id' => "",
'quantity' => "Cantidad",
'quantity_required' => "",
'remaining_balance' => "",
'reorder_level' => "Cantidad minima",
'retrive_giftcard_info' => "",
'sales_tax_1' => "Impuesto de Ventas 1",
'sales_tax_2' => "Impuesto de Ventas 2",
'serialized_giftcards' => "",
'successful_adding' => "",
'successful_bulk_edit' => "La tarjeta de regalo seleccionada ha sido actualizada",
'successful_deleted' => "Se ha borrado correctamente",
'successful_updating' => "",
'supplier' => "",
'tax_1' => "",
'tax_2' => "",
'tax_percent' => "",
'tax_percents' => "",
'unit_price' => "",
'upc_database' => "",
'update' => "",
'use_inventory_menu' => "",
'value' => "",
'value_required' => "",
];

View File

@@ -1,41 +1,42 @@
<?php
return [
"add_item" => "Agregar Artículo",
"all" => "Todo",
"cannot_be_deleted" => "Borrado de Kit(s) de Artículos fallido.",
"confirm_delete" => "¿Estás seguro(a) de querer borrar los kits seleccionados?",
"confirm_restore" => "¿Está seguro de querer restaurar lo(s) kit(s) seleccionado(s)?",
"description" => "Descripción del Kit de Artículos",
"discount" => "Descuento",
"discount_fixed" => "Descuento Fijo",
"discount_percent" => "Porcentaje de descuento",
"discount_type" => "Tipo de Descuento",
"error_adding_updating" => "Error agregando/actualizando Kit de Artículos.",
"find_kit_item" => "Kit de Artículos",
"info" => "Información del kit de artículos",
"item" => "Artículo",
"item_kit_number" => "Código de barras",
"item_kit_number_duplicate" => "El Número del Kit de Artículo ya está presente en la base de datos.",
"item_number" => "",
"item_number_duplicate" => "",
"items" => "Artículos",
"kit" => "ID del Kit",
"kit_and_components" => "Kits y Componentes",
"kit_and_stock" => "Kit y Stock",
"kit_only" => "Sólo kit",
"name" => "Nombre del Kit de Artículos",
"new" => "Nuevo Kit de Artículos",
"no_item_kits_to_display" => "Sin kit de artículos para mostrar.",
"none_selected" => "No ha seleccionado ningún kit de artículos.",
"one_or_multiple" => "Kit(s) de Artículos",
"price_option" => "Opciones de precio",
"priced_only" => "Sólo precio",
"print_option" => "Opciones de impresión",
"quantity" => "Cantidad",
"sequence" => "Secuencia",
"successful_adding" => "Has agregado un kit de artículos",
"successful_deleted" => "Borrado completo",
"successful_updating" => "Kit de Artículos actualizado",
"unit_price" => "",
"update" => "Actualizar Kit de Artículos",
'add_item' => "Agregar Artículo",
'all' => "Todo",
'cannot_be_deleted' => "Borrado de Kit(s) de Artículos fallido.",
'confirm_delete' => "¿Estás seguro(a) de querer borrar los kits seleccionados?",
'confirm_restore' => "¿Está seguro de querer restaurar lo(s) kit(s) seleccionado(s)?",
'description' => "Descripción del Kit de Artículos",
'discount' => "Descuento",
'discount_fixed' => "Descuento Fijo",
'discount_percent' => "Porcentaje de descuento",
'discount_type' => "Tipo de Descuento",
'error_adding_updating' => "Error agregando/actualizando Kit de Artículos.",
'find_kit_item' => "Kit de Artículos",
'info' => "Información del kit de artículos",
'item' => "Articulo",
'item_kit_number' => "Código de barras",
'item_kit_number_duplicate' => "El Número del Kit de Artículo ya está presente en la base de datos.",
'item_number' => "",
'item_number_duplicate' => "",
'items' => "Artículos",
'kit' => "ID del Kit",
'kit_and_components' => "Kits y Componentes",
'kit_and_stock' => "Kit y Stock",
'kit_only' => "Sólo kit",
'name' => "Nombre del Kit de Artículos",
'new' => "Nuevo Kit de Artículos",
'no_item_kits_to_display' => "Sin kit de artículos para mostrar.",
'none_selected' => "No ha seleccionado ningún kit de artículos.",
'one_or_multiple' => "Kit(s) de Artículos",
'price_option' => "Opciones de precio",
'priced_only' => "Sólo precio",
'print_option' => "Opciones de impresión",
'quantity' => "Cantidad",
'sequence' => "Secuencia",
'successful_adding' => "Has agregado un kit de artículos",
'successful_deleted' => "Se ha borrado correctamente",
'successful_updating' => "Kit de Artículos actualizado",
'unit_price' => "",
'update' => "Actualizar Kit de Artículos",
];

View File

@@ -1,120 +1,121 @@
<?php
return [
"add_minus" => "Inventario a agregar o disminuir.",
"allow_alt_description" => "Permitir Descripción Alternativa",
"amount_entry" => "Ingrese Cantidad",
"bulk_edit" => "Edición Masiva",
"buy_price_required" => "Precio de Compra es un campo requerido.",
"cannot_be_deleted" => "No se puede borrar el item(s) seleccionado, uno a mas de los items seleccionados tienen ventas.",
"cannot_find_item" => "Articulo no encontrado.",
"categories" => "",
"category" => "Categoría",
"category_new" => "",
"category_required" => "Categoría es un campo requerido.",
"change_all_to_allow_alt_desc" => "Permitir Descripción Alternativa para todo.",
"change_all_to_not_allow_allow_desc" => "No permitir Descripción Alternativa para todo.",
"change_all_to_serialized" => "Cambiar todo a Serializado",
"change_all_to_unserialized" => "Cambiar todo a No-Serializado",
"change_image" => "Cambiar Imagen",
"confirm_bulk_edit" => "¿Esta seguro que quiere editar los artículos seleccionados?",
"confirm_bulk_edit_wipe_taxes" => "Toda la información de Impuestos de los Artículos será reemplazada.",
"confirm_delete" => "¿Esta seguro que quiere eliminar los artículos seleccionados?",
"confirm_restore" => "¿Esta seguro de restaurar los articulos seleccionado?",
"cost_price" => "",
"cost_price_number" => "",
"cost_price_required" => "",
"count" => "",
"csv_import_failed" => "",
"csv_import_nodata_wrongformat" => "",
"csv_import_partially_failed" => "",
"csv_import_success" => "",
"current_quantity" => "",
"default_pack_name" => "",
"description" => "",
"details_count" => "",
"do_nothing" => "",
"edit" => "",
"edit_fields_you_want_to_update" => "",
"edit_multiple_items" => "",
"empty_upc_items" => "",
"error_adding_updating" => "",
"error_updating_multiple" => "",
"generate_barcodes" => "",
"hsn_code" => "",
"image" => "",
"import_items_csv" => "",
"info_provided_by" => "",
"inventory" => "",
"inventory_CSV_import_quantity" => "",
"inventory_comments" => "",
"inventory_data_tracking" => "",
"inventory_date" => "",
"inventory_employee" => "",
"inventory_in_out_quantity" => "",
"inventory_remarks" => "",
"is_deleted" => "",
"is_printed" => "",
"is_serialized" => "",
"item" => "",
"item_id" => "",
"item_number" => "",
"item_number_duplicate" => "",
"kit" => "",
"location" => "",
"low_inventory_items" => "",
"low_sell_item" => "",
"manually_editing_of_quantity" => "",
"markup" => "",
"name" => "",
"name_required" => "",
"new" => "",
"no_description_items" => "",
"no_items_to_display" => "",
"none" => "",
"none_selected" => "",
"nonstock" => "",
"number_information" => "",
"number_required" => "",
"one_or_multiple" => "",
"pack_name" => "",
"qty_per_pack" => "",
"quantity" => "",
"quantity_number" => "",
"quantity_required" => "",
"receiving_quantity" => "",
"remove_image" => "",
"reorder_level" => "",
"reorder_level_number" => "",
"reorder_level_required" => "",
"retrive_item_info" => "",
"sales_tax_1" => "",
"sales_tax_2" => "",
"search_attributes" => "",
"select_image" => "",
"serialized_items" => "",
"standard" => "",
"stock" => "",
"stock_location" => "",
"stock_type" => "",
"successful_adding" => "",
"successful_bulk_edit" => "",
"successful_deleted" => "",
"successful_updating" => "",
"supplier" => "",
"tax_1" => "",
"tax_2" => "",
"tax_3" => "",
"tax_category" => "",
"tax_percent" => "",
"tax_percent_number" => "",
"tax_percent_required" => "",
"tax_percents" => "",
"temp" => "",
"type" => "",
"unit_price" => "",
"unit_price_number" => "",
"unit_price_required" => "",
"upc_database" => "",
"update" => "",
"use_inventory_menu" => "",
'add_minus' => "Inventario a agregar o disminuir.",
'allow_alt_description' => "Permitir Descripción Alternativa",
'amount_entry' => "Ingrese Cantidad",
'bulk_edit' => "Edición Masiva",
'buy_price_required' => "Precio de Compra es un campo requerido.",
'cannot_be_deleted' => "No se puede borrar el item(s) seleccionado, uno a mas de los items seleccionados tienen ventas.",
'cannot_find_item' => "Articulo no encontrado.",
'categories' => "",
'category' => "Categoría",
'category_new' => "",
'category_required' => "Categoría es un campo requerido.",
'change_all_to_allow_alt_desc' => "Permitir Descripción Alternativa para todo.",
'change_all_to_not_allow_allow_desc' => "No permitir Descripción Alternativa para todo.",
'change_all_to_serialized' => "Cambiar todo a Serializado",
'change_all_to_unserialized' => "Cambiar todo a No-Serializado",
'change_image' => "Cambiar Imagen",
'confirm_bulk_edit' => "¿Esta seguro que quiere editar los artículos seleccionados?",
'confirm_bulk_edit_wipe_taxes' => "Toda la información de Impuestos de los Artículos será reemplazada.",
'confirm_delete' => "¿Esta seguro que quiere eliminar los artículos seleccionados?",
'confirm_restore' => "¿Esta seguro de restaurar los articulos seleccionado?",
'cost_price' => "Precio mayoreo.",
'cost_price_number' => "El precio de mayoreo debe ser números.",
'cost_price_required' => "El precio de mayoreo es requerido.",
'count' => "Actualizar inventario",
'csv_import_failed' => "",
'csv_import_nodata_wrongformat' => "",
'csv_import_partially_failed' => "",
'csv_import_success' => "",
'current_quantity' => "Cantidad actual",
'default_pack_name' => "",
'description' => "Descripción",
'details_count' => "",
'do_nothing' => "",
'edit' => "",
'edit_fields_you_want_to_update' => "",
'edit_multiple_items' => "Edición de varios elementos",
'empty_upc_items' => "",
'error_adding_updating' => "",
'error_updating_multiple' => "",
'generate_barcodes' => "",
'hsn_code' => "",
'image' => "",
'import_items_csv' => "",
'info_provided_by' => "",
'inventory' => "Inventario",
'inventory_CSV_import_quantity' => "",
'inventory_comments' => "Comentarios",
'inventory_data_tracking' => "",
'inventory_date' => "Fecha",
'inventory_employee' => "Empleado",
'inventory_in_out_quantity' => "",
'inventory_remarks' => "",
'is_deleted' => "",
'is_printed' => "",
'is_serialized' => "el articulo tiene número de serie",
'item' => "Articulo",
'item_id' => "",
'item_number' => "Código de barras",
'item_number_duplicate' => "El código del artículo ya está presente en la base de datos.",
'kit' => "Kit",
'location' => "Ubicación",
'low_inventory_items' => "",
'low_sell_item' => "",
'manually_editing_of_quantity' => "",
'markup' => "",
'name' => "",
'name_required' => "",
'new' => "Nuevo articulo",
'no_description_items' => "",
'no_items_to_display' => "Sin artículos.",
'none' => "",
'none_selected' => "Debe elegir algún articulo para poder modificarlo",
'nonstock' => "",
'number_information' => "",
'number_required' => "",
'one_or_multiple' => "Articulos",
'pack_name' => "",
'qty_per_pack' => "Cantidad por paquete",
'quantity' => "Cantidad",
'quantity_number' => "Cantidad debe ser número.",
'quantity_required' => "Especifique la cantidad.",
'receiving_quantity' => "Cantidad recibida",
'remove_image' => "Quitar imagen",
'reorder_level' => "Cantidad minima",
'reorder_level_number' => "Cantidad minima deber ser numero.",
'reorder_level_required' => "Cantidad minima no puede estar vacío.",
'retrive_item_info' => "Obtener información del articulo",
'sales_tax_1' => "Impuesto de Ventas 1",
'sales_tax_2' => "Impuesto de Ventas 2",
'search_attributes' => "Atributos de Búsqueda",
'select_image' => "Seleccionar imagen",
'serialized_items' => "Artículos con número de serie",
'standard' => "Estándar",
'stock' => "Existencia",
'stock_location' => "Ubicación del inventario",
'stock_type' => "",
'successful_adding' => "",
'successful_bulk_edit' => "",
'successful_deleted' => "Se ha borrado correctamente",
'successful_updating' => "",
'supplier' => "",
'tax_1' => "",
'tax_2' => "",
'tax_3' => "",
'tax_category' => "",
'tax_percent' => "",
'tax_percent_number' => "",
'tax_percent_required' => "",
'tax_percents' => "",
'temp' => "",
'type' => "",
'unit_price' => "",
'unit_price_number' => "",
'unit_price_required' => "",
'upc_database' => "",
'update' => "",
'use_inventory_menu' => "",
];

View File

@@ -1,15 +1,16 @@
<?php
return [
"gcaptcha" => "No soy un robot.",
"go" => "Entrar",
"invalid_gcaptcha" => "Por favor compruebe que usted no es un robot.",
"invalid_installation" => "La instalacion no es correcta, revise el archivo php.ini.",
"invalid_username_and_password" => "Usuario y/o Password Invalido.",
"login" => "Login",
"logout" => "Salir",
"migration_needed" => "Una migración de base de datos a {0} empezara después de entrar.",
"password" => "Contraseña",
"required_username" => "",
"username" => "Usuario",
"welcome" => "Bienvenido a {0}!",
'gcaptcha' => "No soy un robot.",
'go' => "Entrar",
'invalid_gcaptcha' => "Por favor compruebe que usted no es un robot.",
'invalid_installation' => "La instalacion no es correcta, revise el archivo php.ini.",
'invalid_username_and_password' => "Usuario y/o Password Invalido.",
'login' => "Login",
'logout' => "Salir",
'migration_needed' => "Una migración de base de datos a {0} empezara después de entrar.",
'password' => "Contraseña",
'required_username' => "El nombre de usuario es obligatorio.",
'username' => "Usuario",
'welcome' => "Bienvenido a {0}!",
];

View File

@@ -1,58 +1,59 @@
<?php
return [
"amount_due" => "",
"cancel_receiving" => "Cancelar",
"cannot_be_deleted" => "Falló al borrar Entrada(s).",
"comments" => "Comentarios",
"complete_receiving" => "Completado",
"confirm_cancel_receiving" => "Esta seguro que quiere eliminar esta recepción? Todos los items se borraran.",
"confirm_delete" => "Esta seguro que quiere borrar esta recepción? Esta acción no se puede deshacer.",
"confirm_finish_receiving" => "Esta seguro que quiere enviar esta recepción? Esto no se puede deshacer.",
"confirm_restore" => "",
"cost" => "Costo",
"daily" => "",
"date" => "Fecha de Recibido",
"date_required" => "Se debe de agregar la fecha correcta.",
"date_type" => "Fecha es un campo obligatorio.",
"delete_entire_sale" => "Borrar Venta Completa",
"discount" => "Descuento",
"edit" => "Editar",
"edit_sale" => "Editar Recepción",
"employee" => "Empleado",
"error_editing_item" => "Fallo la edición del item.",
"error_requisition" => "No se puede mover el inventario desde o hacia la misma Ubicación.",
"find_or_scan_item" => "Encontrar o Escanear Articulo",
"find_or_scan_item_or_receipt" => "Encontrar o Escanear Articulo o Recibo",
"id" => "ID de Recepción",
"item_name" => "Nombre del Articulo",
"mode" => "Modo de Recepción",
"new_supplier" => "Nuevo Proveedor",
"one_or_multiple" => "recepción(es)",
"print_after_sale" => "Imprimir después de la Venta",
"quantity" => "Cant.",
"receipt" => "Recibo de Recepcion",
"receipt_number" => "Recepción #",
"receiving" => "Recibir",
"reference" => "Referencia",
"register" => "Recepción de Artículos",
"requisition" => "Requisición",
"return" => "Devolución",
"select_supplier" => "Seleccionar Proveedor (Opcional)",
"ship_pack" => "Empaque de Envio",
"start_typing_supplier_name" => "Empiece a escribir el nombre del Proveedor...",
"stock" => "Inventario",
"stock_destination" => "Destino del Inventario",
"stock_locaiton" => "Ubicación del Inventario",
"stock_source" => "Origen del Inventario",
"successfully_deleted" => "Se ha borrado exitosamente",
"successfully_updated" => "Recepción actualizada exitosamente",
"supplier" => "Proveedor",
"supplier_address" => "Dirección",
"supplier_email" => "Email",
"supplier_location" => "Ubicación",
"total" => "Total",
"transaction_failed" => "Transacción de Recepción falló.",
"unable_to_add_item" => "Agregar Articulo a Recepción falló.",
"unsuccessfully_updated" => "Actualización de Recepción falló.",
"update" => "Actualizar",
'amount_due' => "",
'cancel_receiving' => "Cancelar",
'cannot_be_deleted' => "Falló al borrar Entrada(s).",
'comments' => "Comentarios",
'complete_receiving' => "Completado",
'confirm_cancel_receiving' => "Esta seguro que quiere eliminar esta recepción? Todos los items se borraran.",
'confirm_delete' => "Esta seguro que quiere borrar esta recepción? Esta acción no se puede deshacer.",
'confirm_finish_receiving' => "Esta seguro que quiere enviar esta recepción? Esto no se puede deshacer.",
'confirm_restore' => "",
'cost' => "Costo",
'daily' => "",
'date' => "Fecha de Recibido",
'date_required' => "Se debe de agregar la fecha correcta.",
'date_type' => "Fecha es un campo obligatorio.",
'delete_entire_sale' => "Borrar Venta Completa",
'discount' => "Descuento",
'edit' => "Editar",
'edit_sale' => "Editar Recepción",
'employee' => "Empleado",
'error_editing_item' => "Fallo la edición del item.",
'error_requisition' => "No se puede mover el inventario desde o hacia la misma Ubicación.",
'find_or_scan_item' => "Encontrar o Escanear Articulo",
'find_or_scan_item_or_receipt' => "Encontrar o Escanear Articulo o Recibo",
'id' => "ID de Recepción",
'item_name' => "Nombre del Articulo",
'mode' => "Modo de Recepción",
'new_supplier' => "Nuevo Proveedor",
'one_or_multiple' => "recepción(es)",
'print_after_sale' => "Imprimir después de la Venta",
'quantity' => "Cant.",
'receipt' => "Recibo de Recepcion",
'receipt_number' => "Recepción #",
'receiving' => "Recibir",
'reference' => "Referencia",
'register' => "Recepción de Artículos",
'requisition' => "Requisición",
'return' => "Devolución",
'select_supplier' => "Seleccionar Proveedor (Opcional)",
'ship_pack' => "Empaque de Envio",
'start_typing_supplier_name' => "Empiece a escribir el nombre del Proveedor...",
'stock' => "Existencia",
'stock_destination' => "Destino del Inventario",
'stock_locaiton' => "Ubicación del Inventario",
'stock_source' => "Origen del Inventario",
'successfully_deleted' => "Se ha borrado exitosamente",
'successfully_updated' => "Recepción actualizada exitosamente",
'supplier' => "Proveedor",
'supplier_address' => "Dirección",
'supplier_email' => "Email",
'supplier_location' => "Ubicación",
'total' => "Total",
'transaction_failed' => "Transacción de Recepción falló.",
'unable_to_add_item' => "Agregar Articulo a Recepción falló.",
'unsuccessfully_updated' => "Actualización de Recepción falló.",
'update' => "Actualizar",
];

View File

@@ -1,148 +1,149 @@
<?php
return [
"all" => "Todas",
"authority" => "Autoridad",
"canceled" => "Cancelado",
"categories" => "Categorías",
"categories_summary_report" => "Informe resumido de categorías",
"category" => "Categoría",
"code_canceled" => "CNL",
"code_invoice" => "INV",
"code_pos" => "POS",
"code_quote" => "Q",
"code_return" => "RET",
"code_type" => "Tipo",
"code_work_order" => "OT",
"comments" => "Comentarios",
"commission" => "",
"complete" => "Ventas y Devoluciones Completadas",
"completed_sales" => "Ventas Completadas",
"confirm_delete" => "Está seguro que quiere borrar la(s) entrada(s) seleccionada(s)?",
"confirm_restore" => "Está seguro que quiere restaurar la(s) entrada(s) seleccionada(s)?",
"cost" => "Al por mayor",
"cost_price" => "Precio al por mayor",
"count" => "Contar",
"customer" => "Cliente",
"customers" => "Clientes",
"customers_summary_report" => "Reporte Resumido de Clientes",
"date" => "Fecha",
"date_range" => "Rango de Fecha",
"description" => "Descripción",
"detailed_receivings_report" => "Reporte Detallado de Recepciones",
"detailed_receivings_report_input" => "",
"detailed_reports" => "Reportes detallados",
"detailed_requisition_report" => "",
"detailed_sales_report" => "Reporte Detallado de Transacciones",
"discount" => "Descuento",
"discount_fixed" => "Descuento Fijo",
"discount_percent" => "Porcentaje de Descuento",
"discount_type" => "Tipo de Descuento",
"discounts" => "Descuentos",
"discounts_summary_report" => "Reporte Resumido de Descuentos",
"earned" => "Puntos ganados",
"employee" => "Empleado",
"employees" => "Empleados",
"employees_summary_report" => "Reporte Resumido de Empleados",
"expenses" => "Gastos",
"expenses_amount" => "Cantidad",
"expenses_categories" => "Gastos",
"expenses_categories_summary_report" => "Reporte Resumido de Gastos por Categoría",
"expenses_category" => "Categoría",
"expenses_payment_amount" => "",
"expenses_tax_amount" => "Impuesto",
"expenses_total_amount" => "Monto Total",
"expenses_total_tax_amount" => "Impuesto Total",
"graphical_reports" => "Reportes Gráficos",
"inventory" => "Inventario",
"inventory_low" => "Inventario Bajo",
"inventory_low_report" => "Reporte de Inventario Bajo",
"inventory_reports" => "Reportes de Inventario",
"inventory_summary" => "Resumen de Inventario",
"inventory_summary_report" => "Reporte Resumido de Inventario",
"item" => "Artículo",
"item_count" => "Filtrar Recuento de Artículos",
"item_name" => "Nombre del Artículo",
"item_number" => "Código de barras",
"items" => "Artículos",
"items_purchased" => "Artículos Comprados",
"items_received" => "Artículos Recibidos",
"items_summary_report" => "Reporte Resumido de Artículos",
"jurisdiction" => "Jurisdicción",
"low_inventory" => "",
"low_inventory_report" => "",
"low_sell_quantity" => "Cantidad Venta Baja",
"more_than_zero" => "Más que cero",
"name" => "Nombre",
"no_reports_to_display" => "No hay Artículos para mostrar.",
"payment_type" => "Tipo de Pago",
"payments" => "Pagos",
"payments_summary_report" => "Reporte Resumido de Pagos",
"profit" => "Ganancias",
"quantity" => "Cantidad",
"quantity_purchased" => "Cantidad Comprada",
"quotes" => "Presupuesto",
"received_by" => "Recepcionado por",
"receiving_id" => "Id de Recepción",
"receiving_type" => "Tipo de Recepción",
"receivings" => "Recepciones",
"reorder_level" => "Cantidad nima",
"report" => "Reporte",
"report_input" => "Entrada de Reporte",
"reports" => "Reportes",
"requisition" => "",
"requisition_by" => "",
"requisition_id" => "",
"requisition_item" => "",
"requisition_item_quantity" => "",
"requisition_related_item" => "",
"requisition_related_item_total_quantity" => "",
"requisition_related_item_unit_quantity" => "",
"requisitions" => "Requisiciones",
"returns" => "Devoluciones",
"revenue" => "Ingresos",
"sale_id" => "Id de Transacciones",
"sale_type" => "Tipo de Transacción",
"sales" => "Transacciones",
"sales_amount" => "Monto de Transacciones",
"sales_summary_report" => "Reporte Resumido de Transacciones",
"sales_taxes" => "Impuesto sobre las Ventas",
"sales_taxes_summary_report" => "Reporte Resumido de Impuestos sobre las Ventas",
"serial_number" => "Número de Serie",
"service_charge" => "",
"sold_by" => "Vendido por",
"sold_items" => "",
"sold_to" => "Vendido a",
"stock_location" => "Ubicación de Stock",
"sub_total_value" => "el Subtotal",
"subtotal" => "el Subtotal",
"summary_reports" => "Reportes Resumidos",
"supplied_by" => "Suministrado por",
"supplier" => "Proveedor",
"suppliers" => "Proveedores",
"suppliers_summary_report" => "Reporte Resumido de Proveedores",
"tax" => "Impuesto",
"tax_category" => "Categoría de Impuesto",
"tax_name" => "Nombre de Impuesto",
"tax_percent" => "Porcentaje de Impuesto",
"tax_rate" => "Tarifa de Impuesto",
"taxes" => "Impuestos",
"taxes_summary_report" => "Reporte Resumido de Impuestos",
"total" => "Total",
"total_inventory_value" => "Valor Total del Inventario",
"total_low_sell_quantity" => "Cantidad Total de Venta Baja",
"total_quantity" => "Cantidad Total",
"total_retail" => "Valor Menor Total del Inventario",
"trans_amount" => "Monto de Transacción",
"trans_due" => "Debido",
"trans_group" => "Grupo de Transacción",
"trans_nopay_sales" => "Ventas sin pago",
"trans_payments" => "Pagos",
"trans_refunded" => "Reembolsado",
"trans_sales" => "Ventas",
"trans_type" => "Tipo de Transacción",
"type" => "Tipo",
"unit_price" => "Precio de Venta",
"used" => "Puntos Usados",
"work_orders" => "Órdenes de Trabajo",
"zero_and_less" => "Cero y menos",
'all' => "Todas",
'authority' => "Autoridad",
'canceled' => "Cancelado",
'categories' => "Categorías",
'categories_summary_report' => "Informe resumido de categorías",
'category' => "Categoría",
'code_canceled' => "CNL",
'code_invoice' => "INV",
'code_pos' => "POS",
'code_quote' => "Q",
'code_return' => "RET",
'code_type' => "Tipo",
'code_work_order' => "OT",
'comments' => "Comentarios",
'commission' => "",
'complete' => "Ventas y Devoluciones Completadas",
'completed_sales' => "Ventas Completadas",
'confirm_delete' => "Está seguro que quiere borrar la(s) entrada(s) seleccionada(s)?",
'confirm_restore' => "Está seguro que quiere restaurar la(s) entrada(s) seleccionada(s)?",
'cost' => "Al por mayor",
'cost_price' => "Precio mayoreo.",
'count' => "Contar",
'customer' => "Cliente",
'customers' => "Clientes",
'customers_summary_report' => "Reporte Resumido de Clientes",
'date' => "Fecha",
'date_range' => "Rango de Fecha",
'description' => "Descripción",
'detailed_receivings_report' => "Reporte Detallado de Recepciones",
'detailed_receivings_report_input' => "",
'detailed_reports' => "Reportes detallados",
'detailed_requisition_report' => "",
'detailed_sales_report' => "Reporte Detallado de Transacciones",
'discount' => "Descuento",
'discount_fixed' => "Descuento Fijo",
'discount_percent' => "Porcentaje de Descuento",
'discount_type' => "Tipo de Descuento",
'discounts' => "Descuentos",
'discounts_summary_report' => "Reporte Resumido de Descuentos",
'earned' => "Puntos ganados",
'employee' => "Empleado",
'employees' => "Empleados",
'employees_summary_report' => "Reporte Resumido de Empleados",
'expenses' => "Gastos",
'expenses_amount' => "Cantidad",
'expenses_categories' => "Gastos",
'expenses_categories_summary_report' => "Reporte Resumido de Gastos por Categoría",
'expenses_category' => "Categoría",
'expenses_payment_amount' => "",
'expenses_tax_amount' => "Impuesto",
'expenses_total_amount' => "Monto Total",
'expenses_total_tax_amount' => "Impuesto Total",
'graphical_reports' => "Reportes Gráficos",
'inventory' => "Inventario",
'inventory_low' => "Inventario Bajo",
'inventory_low_report' => "Reporte de Inventario Bajo",
'inventory_reports' => "Reportes de Inventario",
'inventory_summary' => "Resumen de Inventario",
'inventory_summary_report' => "Reporte Resumido de Inventario",
'item' => "Articulo",
'item_count' => "Filtrar Recuento de Artículos",
'item_name' => "Nombre del Artículo",
'item_number' => "Código de barras",
'items' => "Artículos",
'items_purchased' => "Artículos Comprados",
'items_received' => "Artículos Recibidos",
'items_summary_report' => "Reporte Resumido de Artículos",
'jurisdiction' => "Jurisdicción",
'low_inventory' => "",
'low_inventory_report' => "",
'low_sell_quantity' => "Cantidad Venta Baja",
'more_than_zero' => "Más que cero",
'name' => "Nombre",
'no_reports_to_display' => "No hay Artículos para mostrar.",
'payment_type' => "Tipo de Pago",
'payments' => "Pagos",
'payments_summary_report' => "Reporte Resumido de Pagos",
'profit' => "Ganancias",
'quantity' => "Cantidad",
'quantity_purchased' => "Cantidad Comprada",
'quotes' => "Presupuesto",
'received_by' => "Recepcionado por",
'receiving_id' => "Id de Recepción",
'receiving_type' => "Tipo de Recepción",
'receivings' => "Recepciones",
'reorder_level' => "Cantidad minima",
'report' => "Reporte",
'report_input' => "Entrada de Reporte",
'reports' => "Reportes",
'requisition' => "",
'requisition_by' => "",
'requisition_id' => "",
'requisition_item' => "",
'requisition_item_quantity' => "",
'requisition_related_item' => "",
'requisition_related_item_total_quantity' => "",
'requisition_related_item_unit_quantity' => "",
'requisitions' => "Requisiciones",
'returns' => "Devoluciones",
'revenue' => "Ingresos",
'sale_id' => "Id de Transacciones",
'sale_type' => "Tipo de Transacción",
'sales' => "Transacciones",
'sales_amount' => "Monto de Transacciones",
'sales_summary_report' => "Reporte Resumido de Transacciones",
'sales_taxes' => "Impuesto sobre las Ventas",
'sales_taxes_summary_report' => "Reporte Resumido de Impuestos sobre las Ventas",
'serial_number' => "Número de Serie",
'service_charge' => "",
'sold_by' => "Vendido por",
'sold_items' => "",
'sold_to' => "Vendido a",
'stock_location' => "Ubicación de Stock",
'sub_total_value' => "el Subtotal",
'subtotal' => "el Subtotal",
'summary_reports' => "Reportes Resumidos",
'supplied_by' => "Suministrado por",
'supplier' => "Proveedor",
'suppliers' => "Proveedores",
'suppliers_summary_report' => "Reporte Resumido de Proveedores",
'tax' => "Impuesto",
'tax_category' => "Categoría de Impuesto",
'tax_name' => "Nombre de Impuesto",
'tax_percent' => "Porcentaje de Impuesto",
'tax_rate' => "Tarifa de Impuesto",
'taxes' => "Impuestos",
'taxes_summary_report' => "Reporte Resumido de Impuestos",
'total' => "Total",
'total_inventory_value' => "Valor Total del Inventario",
'total_low_sell_quantity' => "Cantidad Total de Venta Baja",
'total_quantity' => "Cantidad Total",
'total_retail' => "Valor Menor Total del Inventario",
'trans_amount' => "Monto de Transacción",
'trans_due' => "Debido",
'trans_group' => "Grupo de Transacción",
'trans_nopay_sales' => "Ventas sin pago",
'trans_payments' => "Pagos",
'trans_refunded' => "Reembolsado",
'trans_sales' => "Ventas",
'trans_type' => "Tipo de Transacción",
'type' => "Tipo",
'unit_price' => "Precio de Venta",
'used' => "Puntos Usados",
'work_orders' => "Órdenes de Trabajo",
'zero_and_less' => "Cero y menos",
];

View File

@@ -1,224 +1,225 @@
<?php
return [
"customers_available_points" => "Puntos Disponibles",
"rewards_package" => "Premios",
"rewards_remaining_balance" => "Puntos de recompensa sobrante son: ",
"account_number" => "Cuenta #",
"add_payment" => "Agregar Pago",
"amount_due" => "Monto de adeudo",
"amount_tendered" => "Cantidad Recibida",
"authorized_signature" => "Firma Autorizada",
"cancel_sale" => "Cancelar",
"cash" => "Efectivo",
"cash_1" => "",
"cash_2" => "",
"cash_3" => "",
"cash_4" => "",
"cash_adjustment" => "Ajuste de efectivo",
"cash_deposit" => "Deposito en Efectivo",
"cash_filter" => "Efectivo",
"change_due" => "Cambio",
"change_price" => "Cambiar precio de venta",
"check" => "Cheque",
"check_balance" => "Balance de Cheque",
"check_filter" => "Comprobar",
"close" => "",
"comment" => "Comentario",
"comments" => "Comentarios",
"company_name" => "",
"complete" => "",
"complete_sale" => "Completar",
"confirm_cancel_sale" => "¿Está seguro que desea limpiar la venta? Todos los artículos serán borrados.",
"confirm_delete" => "¿Está seguro que desea borrar todas las ventas seleccionadas?",
"confirm_restore" => "¿Está seguro de desear restaurar las ventas seleccionadas?",
"credit" => "Tarjeta de Crédito",
"credit_deposit" => "Deposito de crédito",
"credit_filter" => "Tarjeta de crédito",
"current_table" => "",
"customer" => "Cliente",
"customer_address" => "Dirección",
"customer_discount" => "Descuento",
"customer_email" => "Correo electrónico",
"customer_location" => "Ubicación",
"customer_mailchimp_status" => "Estado de MailChimp",
"customer_optional" => "(Obligatorio para pagos vencidos)",
"customer_required" => "(Obligatorio)",
"customer_total" => "Total",
"customer_total_spent" => "",
"daily_sales" => "",
"date" => "Fecha de venta",
"date_range" => "Rango de fechas",
"date_required" => "Ingresar una fecha correcta.",
"date_type" => "La fecha es un campo requerido.",
"debit" => "Tarjeta de débito",
"debit_filter" => "",
"delete" => "Permitir borrar",
"delete_confirmation" => "¿Seguro(a) de querer borrar esta venta? Esta acción no se puede deshacer.",
"delete_entire_sale" => "Eliminar la venta completa",
"delete_successful" => "Venta borrada correctamente.",
"delete_unsuccessful" => "Fallo al borrar la venta.",
"description_abbrv" => "Descrip.",
"discard" => "Descartar",
"discard_quote" => "",
"discount" => "Desc.",
"discount_included" => "% Descuento",
"discount_short" => "%",
"due" => "Adeudo",
"due_filter" => "Adeudo",
"edit" => "Editar",
"edit_item" => "Editar artículo",
"edit_sale" => "Editar venta",
"email_receipt" => "Enviar ticket",
"employee" => "Empleado",
"entry" => "Entrada",
"error_editing_item" => "Error editando el artículo",
"find_or_scan_item" => "Buscar o escanear artículo",
"find_or_scan_item_or_receipt" => "Buscar o escanear artículo o recibo",
"giftcard" => "Tarjeta de regalo",
"giftcard_balance" => "Balance de Tarjeta de Regalo",
"giftcard_filter" => "",
"giftcard_number" => "Número de Tarjeta de Regalo",
"group_by_category" => "Grupo por Categoría",
"group_by_type" => "Grupo por Tipo",
"hsn" => "HSN",
"id" => "ID de Venta",
"include_prices" => "¿Incluir precios?",
"invoice" => "Factura de venta",
"invoice_confirm" => "Esta factura sera enviada a",
"invoice_enable" => "Crear factura",
"invoice_filter" => "Facturas",
"invoice_no_email" => "Este cliente no tiene un correo electrónico válido.",
"invoice_number" => "Factura #",
"invoice_number_duplicate" => "Por favor ingrese un número de factura único.",
"invoice_sent" => "Factura enviada a",
"invoice_total" => "Total Facturado",
"invoice_type_custom_invoice" => "Factura Personalizada (custom_invoice.php)",
"invoice_type_custom_tax_invoice" => "Factura de Impuesto personalizada (custom_tax_invoice.php)",
"invoice_type_invoice" => "Factura",
"invoice_type_tax_invoice" => "Factura de Impuestos",
"invoice_unsent" => "Fallo el envio de la factura a",
"invoice_update" => "Recuento",
"item_insufficient_of_stock" => "Cantidad insuficiente en inventario.",
"item_name" => "Nombre del Artículo",
"item_number" => "Artículo #",
"item_out_of_stock" => "El artículo está agotado.",
"key_browser" => "Atajos Útiles",
"key_cancel" => "Cancelar actual Cotización/Factura/Venta",
"key_customer_search" => "Buscar Cliente",
"key_finish_quote" => "Finalizar Cotización/Factura sin pago",
"key_finish_sale" => "Agregar pago y Completar la Factura/Venta",
"key_full" => "Abrir en modo Pantalla Completa",
"key_function" => "Function",
"key_help" => "Atajos",
"key_help_modal" => "Abrir Ventana de Atajos",
"key_in" => "Acercar",
"key_item_search" => "Buscar Artículo",
"key_out" => "Alejar",
"key_payment" => "Agregar Pago",
"key_print" => "Imprimir Página Actual",
"key_restore" => "Restaurar Vista",
"key_search" => "Buscar Tablas de Reporte",
"key_suspend" => "Suspender Venta Actual",
"key_suspended" => "Mostrar Ventas Suspendidas",
"key_system" => "Atajos del Sistema",
"key_tendered" => "Editar Importe Licitado",
"key_title" => "Atajos de Teclado para Ventas",
"mc" => "",
"mode" => "Registrar Modo",
"must_enter_numeric" => "Cantidad recibida debe ser un número.",
"must_enter_numeric_giftcard" => "Número de Tarjeta de Regalo debe ser un número.",
"new_customer" => "Cliente Nuevo",
"new_item" => "Artículo Nuevo",
"no_description" => "Sin descripción",
"no_filter" => "Todos",
"no_items_in_cart" => "No hay artículos en el carrito.",
"no_sales_to_display" => "No hay ventas que mostrar.",
"none_selected" => "No has seleccionado alguna venta para borrar.",
"nontaxed_ind" => " ' ",
"not_authorized" => "Esta acción no esta autorizada.",
"one_or_multiple" => "Venta(s)",
"payment" => "Tipo de pago",
"payment_amount" => "Cantidad",
"payment_not_cover_total" => "La cantidad pagada debe ser mayor o igual al Total.",
"payment_type" => "Tipo",
"payments" => "",
"payments_total" => "Total de pagado",
"price" => "Precio",
"print_after_sale" => "Imprimir recibo después de una venta",
"quantity" => "Cantidad",
"quantity_less_than_reorder_level" => "Advertencia. La cantidad deseada es insuficiente.",
"quantity_less_than_zero" => "Advertencia. La cantidad deseada es insuficiente. Puedes procesar la venta, pero verifica tu inventario.",
"quantity_of_items" => "Cantidad de {0} artículos",
"quote" => "Cotizar",
"quote_number" => "Número de presupuesto",
"quote_number_duplicate" => "El número de cotización debe ser único.",
"quote_sent" => "Cotización enviada a",
"quote_unsent" => "La cotización no se pudo enviar a",
"receipt" => "Recibo de venta",
"receipt_no_email" => "Este cliente no tiene una dirección de correo válida.",
"receipt_number" => "Venta #",
"receipt_sent" => "Recibo enviado a",
"receipt_unsent" => "Falló el envío del recibo a",
"refund" => "Modo de Reembolso",
"register" => "Registro de ventas",
"remove_customer" => "Borrar cliente",
"remove_discount" => "",
"return" => "Devolución",
"rewards" => "Puntos de recompensa",
"rewards_balance" => "Balance de puntos de recompensa",
"sale" => "Venta",
"sale_by_invoice" => "Venta por factura",
"sale_for_customer" => "Cliente:",
"sale_time" => "Hora",
"sales_tax" => "Impuestos",
"sales_total" => "",
"select_customer" => "Seleccionar cliente",
"send_invoice" => "Enviar factura",
"send_quote" => "Enviar cotización",
"send_receipt" => "Enviar recibo",
"send_work_order" => "Enviar orden de trabajo",
"serial" => "Serie",
"service_charge" => "",
"show_due" => "",
"show_invoice" => "Mostrar factura",
"show_receipt" => "Mostrar recibo",
"start_typing_customer_name" => "Empiece a escribir los detalles del cliente...",
"start_typing_item_name" => "Escriba el nombre del artículo o escanea el código de barras...",
"stock" => "Inventario",
"stock_location" => "Localización del inventario",
"sub_total" => "el subtotal",
"successfully_deleted" => "Se ha eliminado",
"successfully_restored" => "Se ha restuarado satisfactoriamente",
"successfully_suspended_sale" => "La venta se ha suspendido.",
"successfully_updated" => "Venta actualizada.",
"suspend_sale" => "Suspender",
"suspended_doc_id" => "Documento",
"suspended_sale_id" => "ID",
"suspended_sales" => "Suspendidas",
"table" => "Datos",
"takings" => "Ventas diarias",
"tax" => "Impuestos",
"tax_id" => "ID Impuesto",
"tax_invoice" => "Impuesto de la factura",
"tax_percent" => "Impuesto %",
"taxed_ind" => "T",
"total" => "Total",
"total_tax_exclusive" => "Sin impuesto",
"transaction_failed" => "Ha fallado la venta.",
"unable_to_add_item" => "Falló al agregar artículos para venta",
"unsuccessfully_deleted" => "La eliminación de venta falló.",
"unsuccessfully_restored" => "La restauración de la venta falló.",
"unsuccessfully_suspended_sale" => "La suspensión de venta falló.",
"unsuccessfully_updated" => "Ha fallado la actualización de la venta.",
"unsuspend" => "Retomar",
"unsuspend_and_delete" => "Acción",
"update" => "Actualizar",
"upi" => "UPI",
"visa" => "",
"wholesale" => "",
"work_order" => "Orden de trabajo",
"work_order_number" => "Número de orden de trabajo",
"work_order_number_duplicate" => "El número de orden de trabajo debe ser único.",
"work_order_sent" => "Orden de trabajo enviada a",
"work_order_unsent" => "Falló la Orden de Trabajo al enviar a",
'customers_available_points' => "Puntos Disponibles",
'rewards_package' => "Premios",
'rewards_remaining_balance' => "Puntos de recompensa sobrante son: ",
'account_number' => "Cuenta #",
'add_payment' => "Agregar Pago",
'amount_due' => "Monto de adeudo",
'amount_tendered' => "Cantidad Recibida",
'authorized_signature' => "Firma Autorizada",
'cancel_sale' => "Cancelar",
'cash' => "Efectivo",
'cash_1' => "",
'cash_2' => "",
'cash_3' => "",
'cash_4' => "",
'cash_adjustment' => "Ajuste de efectivo",
'cash_deposit' => "Deposito en Efectivo",
'cash_filter' => "Efectivo",
'change_due' => "Cambio",
'change_price' => "Cambiar precio de venta",
'check' => "Cheque",
'check_balance' => "Balance de Cheque",
'check_filter' => "Comprobar",
'close' => "",
'comment' => "Comentario",
'comments' => "Comentarios",
'company_name' => "",
'complete' => "",
'complete_sale' => "Completar",
'confirm_cancel_sale' => "¿Está seguro que desea limpiar la venta? Todos los artículos serán borrados.",
'confirm_delete' => "¿Está seguro que desea borrar todas las ventas seleccionadas?",
'confirm_restore' => "¿Está seguro de desear restaurar las ventas seleccionadas?",
'credit' => "Tarjeta de Crédito",
'credit_deposit' => "Deposito de crédito",
'credit_filter' => "Tarjeta de crédito",
'current_table' => "",
'customer' => "Cliente",
'customer_address' => "Dirección",
'customer_discount' => "Descuento",
'customer_email' => "Correo electrónico",
'customer_location' => "Ubicación",
'customer_mailchimp_status' => "Estado de MailChimp",
'customer_optional' => "(Obligatorio para pagos vencidos)",
'customer_required' => "(Obligatorio)",
'customer_total' => "Total",
'customer_total_spent' => "",
'daily_sales' => "",
'date' => "Fecha de venta",
'date_range' => "Rango de fechas",
'date_required' => "Ingresar una fecha correcta.",
'date_type' => "La fecha es un campo requerido.",
'debit' => "Tarjeta de débito",
'debit_filter' => "",
'delete' => "Permitir borrar",
'delete_confirmation' => "¿Seguro(a) de querer borrar esta venta? Esta acción no se puede deshacer.",
'delete_entire_sale' => "Eliminar la venta completa",
'delete_successful' => "Venta borrada correctamente.",
'delete_unsuccessful' => "Fallo al borrar la venta.",
'description_abbrv' => "Descrip.",
'discard' => "Descartar",
'discard_quote' => "",
'discount' => "Desc.",
'discount_included' => "% Descuento",
'discount_short' => "%",
'due' => "Adeudo",
'due_filter' => "Adeudo",
'edit' => "Editar",
'edit_item' => "Editar artículo",
'edit_sale' => "Editar venta",
'email_receipt' => "Enviar ticket",
'employee' => "Empleado",
'entry' => "Entrada",
'error_editing_item' => "Error editando el artículo",
'find_or_scan_item' => "Buscar o escanear artículo",
'find_or_scan_item_or_receipt' => "Buscar o escanear artículo o recibo",
'giftcard' => "Tarjeta de regalo",
'giftcard_balance' => "Balance de Tarjeta de Regalo",
'giftcard_filter' => "",
'giftcard_number' => "Número de Tarjeta de Regalo",
'group_by_category' => "Grupo por Categoría",
'group_by_type' => "Grupo por Tipo",
'hsn' => "HSN",
'id' => "ID de Venta",
'include_prices' => "¿Incluir precios?",
'invoice' => "Factura de venta",
'invoice_confirm' => "Esta factura sera enviada a",
'invoice_enable' => "Crear factura",
'invoice_filter' => "Facturas",
'invoice_no_email' => "Este cliente no tiene un correo electrónico válido.",
'invoice_number' => "Factura #",
'invoice_number_duplicate' => "Por favor ingrese un número de factura único.",
'invoice_sent' => "Factura enviada a",
'invoice_total' => "Total Facturado",
'invoice_type_custom_invoice' => "Factura Personalizada (custom_invoice.php)",
'invoice_type_custom_tax_invoice' => "Factura de Impuesto personalizada (custom_tax_invoice.php)",
'invoice_type_invoice' => "Factura",
'invoice_type_tax_invoice' => "Factura de Impuestos",
'invoice_unsent' => "Fallo el envio de la factura a",
'invoice_update' => "Recuento",
'item_insufficient_of_stock' => "Cantidad insuficiente en inventario.",
'item_name' => "Nombre del Artículo",
'item_number' => "Artículo #",
'item_out_of_stock' => "El artículo está agotado.",
'key_browser' => "Atajos Útiles",
'key_cancel' => "Cancelar actual Cotización/Factura/Venta",
'key_customer_search' => "Buscar Cliente",
'key_finish_quote' => "Finalizar Cotización/Factura sin pago",
'key_finish_sale' => "Agregar pago y Completar la Factura/Venta",
'key_full' => "Abrir en modo Pantalla Completa",
'key_function' => "Function",
'key_help' => "Atajos",
'key_help_modal' => "Abrir Ventana de Atajos",
'key_in' => "Acercar",
'key_item_search' => "Buscar Artículo",
'key_out' => "Alejar",
'key_payment' => "Agregar Pago",
'key_print' => "Imprimir Página Actual",
'key_restore' => "Restaurar Vista",
'key_search' => "Buscar Tablas de Reporte",
'key_suspend' => "Suspender Venta Actual",
'key_suspended' => "Mostrar Ventas Suspendidas",
'key_system' => "Atajos del Sistema",
'key_tendered' => "Editar Importe Licitado",
'key_title' => "Atajos de Teclado para Ventas",
'mc' => "",
'mode' => "Registrar Modo",
'must_enter_numeric' => "Cantidad recibida debe ser un número.",
'must_enter_numeric_giftcard' => "Número de Tarjeta de Regalo debe ser un número.",
'new_customer' => "Cliente Nuevo",
'new_item' => "Artículo Nuevo",
'no_description' => "Sin descripción",
'no_filter' => "Todos",
'no_items_in_cart' => "No hay artículos en el carrito.",
'no_sales_to_display' => "No hay ventas que mostrar.",
'none_selected' => "No has seleccionado alguna venta para borrar.",
'nontaxed_ind' => " ' ",
'not_authorized' => "Esta acción no esta autorizada.",
'one_or_multiple' => "Venta(s)",
'payment' => "Tipo de pago",
'payment_amount' => "Cantidad",
'payment_not_cover_total' => "La cantidad pagada debe ser mayor o igual al Total.",
'payment_type' => "Tipo",
'payments' => "",
'payments_total' => "Total de pagado",
'price' => "Precio",
'print_after_sale' => "Imprimir recibo después de una venta",
'quantity' => "Cantidad",
'quantity_less_than_reorder_level' => "Advertencia. La cantidad deseada es insuficiente.",
'quantity_less_than_zero' => "Advertencia. La cantidad deseada es insuficiente. Puedes procesar la venta, pero verifica tu inventario.",
'quantity_of_items' => "Cantidad de {0} artículos",
'quote' => "Cotizar",
'quote_number' => "Número de presupuesto",
'quote_number_duplicate' => "El número de cotización debe ser único.",
'quote_sent' => "Cotización enviada a",
'quote_unsent' => "La cotización no se pudo enviar a",
'receipt' => "Recibo de venta",
'receipt_no_email' => "Este cliente no tiene una dirección de correo válida.",
'receipt_number' => "Venta #",
'receipt_sent' => "Recibo enviado a",
'receipt_unsent' => "Falló el envío del recibo a",
'refund' => "Modo de Reembolso",
'register' => "Registro de ventas",
'remove_customer' => "Borrar cliente",
'remove_discount' => "",
'return' => "Devolución",
'rewards' => "Puntos de recompensa",
'rewards_balance' => "Balance de puntos de recompensa",
'sale' => "Venta",
'sale_by_invoice' => "Venta por factura",
'sale_for_customer' => "Cliente:",
'sale_time' => "Hora",
'sales_tax' => "Impuestos",
'sales_total' => "",
'select_customer' => "Seleccionar cliente",
'send_invoice' => "Enviar factura",
'send_quote' => "Enviar cotización",
'send_receipt' => "Enviar recibo",
'send_work_order' => "Enviar orden de trabajo",
'serial' => "Serie",
'service_charge' => "",
'show_due' => "",
'show_invoice' => "Mostrar factura",
'show_receipt' => "Mostrar recibo",
'start_typing_customer_name' => "Empiece a escribir los detalles del cliente...",
'start_typing_item_name' => "Escriba el nombre del artículo o escanea el código de barras...",
'stock' => "Existencia",
'stock_location' => "Localización del inventario",
'sub_total' => "el subtotal",
'successfully_deleted' => "Se ha eliminado",
'successfully_restored' => "Se ha restuarado satisfactoriamente",
'successfully_suspended_sale' => "La venta se ha suspendido.",
'successfully_updated' => "Venta actualizada.",
'suspend_sale' => "Suspender",
'suspended_doc_id' => "Documento",
'suspended_sale_id' => "ID",
'suspended_sales' => "Suspendidas",
'table' => "Datos",
'takings' => "Ventas diarias",
'tax' => "Impuestos",
'tax_id' => "ID Impuesto",
'tax_invoice' => "Impuesto de la factura",
'tax_percent' => "Impuesto %",
'taxed_ind' => "T",
'total' => "Total",
'total_tax_exclusive' => "Sin impuesto",
'transaction_failed' => "Ha fallado la venta.",
'unable_to_add_item' => "Falló al agregar artículos para venta",
'unsuccessfully_deleted' => "La eliminación de venta falló.",
'unsuccessfully_restored' => "La restauración de la venta falló.",
'unsuccessfully_suspended_sale' => "La suspensión de venta falló.",
'unsuccessfully_updated' => "Ha fallado la actualización de la venta.",
'unsuspend' => "Retomar",
'unsuspend_and_delete' => "Acción",
'update' => "Actualizar",
'upi' => "UPI",
'visa' => "",
'wholesale' => "",
'work_order' => "Orden de trabajo",
'work_order_number' => "Número de orden de trabajo",
'work_order_number_duplicate' => "El número de orden de trabajo debe ser único.",
'work_order_sent' => "Orden de trabajo enviada a",
'work_order_unsent' => "Falló la Orden de Trabajo al enviar a",
];

View File

@@ -1,24 +1,25 @@
<?php
return [
"account_number" => "Número de Cuenta",
"agency_name" => "Nombre de Agencia",
"cannot_be_deleted" => "No se puede borrar el/los Proveedor(es) seleccionado(s). Uno o más tienen Ventas.",
"category" => "Categoría",
"company_name" => "Nombre de la Compañía",
"company_name_required" => "Nombre de la Compañía es un campo requerido.",
"confirm_delete" => "¿Está seguro que quiere borrar al/los Proveedor(es) seleccionados?",
"confirm_restore" => "¿Esá seguro que quiere restaurar al o los Proveedores seleccionados?",
"cost" => "Costo del Proveedor",
"error_adding_updating" => "Fallo al actualizar o agregar un Proveedor.",
"goods" => "Proveedor de Materiales",
"new" => "Nuevo Proveedor",
"none_selected" => "No ha seleccionado Proveedor(es) para borrar.",
"one_or_multiple" => "Proveedor(es)",
"successful_adding" => "Usted ha agregado un Proveedor exitosamente",
"successful_deleted" => "Ha borrado con éxito",
"successful_updating" => "Ha actualizado un Proveedor con éxito",
"supplier" => "Proveedor",
"supplier_id" => "Id",
"tax_id" => "Id Impuesto",
"update" => "Actualizar Proveedor",
'account_number' => "Número de Cuenta",
'agency_name' => "Nombre de Agencia",
'cannot_be_deleted' => "No se puede borrar el/los Proveedor(es) seleccionado(s). Uno o más tienen Ventas.",
'category' => "Categoría",
'company_name' => "Nombre de la Compañía",
'company_name_required' => "Nombre de la Compañía es un campo requerido.",
'confirm_delete' => "¿Está seguro que quiere borrar al/los Proveedor(es) seleccionados?",
'confirm_restore' => "¿Esá seguro que quiere restaurar al o los Proveedores seleccionados?",
'cost' => "Costo del Proveedor",
'error_adding_updating' => "Fallo al actualizar o agregar un Proveedor.",
'goods' => "Proveedor de Materiales",
'new' => "Nuevo Proveedor",
'none_selected' => "No ha seleccionado Proveedor(es) para borrar.",
'one_or_multiple' => "Proveedor(es)",
'successful_adding' => "Usted ha agregado un Proveedor exitosamente",
'successful_deleted' => "Se ha borrado correctamente",
'successful_updating' => "Ha actualizado un Proveedor con éxito",
'supplier' => "Proveedor",
'supplier_id' => "Id",
'tax_id' => "Id Impuesto",
'update' => "Actualizar Proveedor",
];

View File

@@ -1,82 +1,83 @@
<?php
return [
"add_exception" => "Agregar Excepcion",
"cascade" => "Cascada",
"cascade_sequence" => "Secuencia de Cascada",
"city" => "Ciudad",
"code" => "Codigo",
"confirm_delete" => "Estas seguro que deseas eliminar este código de impuesto? Esta acción es irreversible",
"confirm_restore" => "Estas seguro que deseas restaurar los códigos de impuestos?",
"default_tax_category" => "Impuesto por Default",
"default_tax_rate" => "Tarifa de impuesto por default",
"error_adding_updating" => "Código de impuesto agregado o error en actualización",
"group_seq" => "Secuencia de Grupo",
"jurisdiction_name" => "Nombre de la Jurisdicción",
"name" => "Nombre",
"new" => "Impuesto Nuevo",
"no_taxes" => "",
"no_taxes_to_display" => "Códigos de impuestos no disponible",
"reporting_authority" => "Imformacion de Autoridad",
"round_half_down" => "a número entero inferior",
"round_half_even" => "a numero par entero más próximo",
"round_half_odd" => "a numero entero impar mas próximo",
"round_half_up" => "a numero entero superior",
"rounding_code" => "código de redondeo",
"sales_tax" => "Impuesto de Venta",
"sales_tax_by_invoice" => "Impuesto de Ventas por factura",
"sequence" => "Secuencia",
"state" => "Estado",
"successful_deleted" => "Eliminado Satisfactoriamente",
"tax_categories" => "Categorias de Impuestos",
"tax_categories_configuration" => "Configuración de Categorías de Impuestos",
"tax_categories_saved_successfully" => "Las categorías de impuestos han sido guardados",
"tax_categories_saved_unsuccessfully" => "Categorías de impuestos no han sido guardados",
"tax_category" => "Categoria de Impuesto",
"tax_category_code" => "codigo de categoria de impuesto",
"tax_category_duplicate" => "duplicar categoria de impuesto",
"tax_category_invalid_chars" => "caracteres invalidos en el nombre de la categoria de impuesto",
"tax_category_name" => "nombre de la categoria de impuesto",
"tax_category_new" => "nueva categoria de impuesto",
"tax_category_required" => "Categoría de impuesto es requerida",
"tax_code" => "codigo de impuesto",
"tax_code_cannot_be_deleted" => "error al eliminar codigo de impuesto",
"tax_code_duplicate" => "Código de impuesto duplicado",
"tax_code_invalid_chars" => "Caracteres inválidos en el código de impuesto",
"tax_code_name" => "nombre del codigo de impuesto",
"tax_code_required" => "codigo de impuesto es un campo requerido",
"tax_code_successful_deleted" => "has eliminado satisfactoriamente el codigo de impuesto",
"tax_code_successful_updated" => "has actualizado satisfactoriamente",
"tax_code_successful_updating" => "has actualizado satisfactoriamente el codigo de impuesto",
"tax_code_successfully_added" => "has agregado satisfactoriamente",
"tax_code_type" => "tipo de codigo de impuesto",
"tax_codes" => "codigos de impuesto",
"tax_codes_configuration" => "configuracion de codigos de impuesto",
"tax_codes_saved_successfully" => "cambios guardados en codigo de impuesto",
"tax_codes_saved_unsuccessfully" => "no se guardaron los cambios en el codigo de impuesto",
"tax_excluded" => "impuesto excluido",
"tax_group" => "grupo de impuesto",
"tax_group_not_unique" => "Grupo de impuestos {0} no es el unico",
"tax_group_sequence" => "secuencia de grupo de impuesto",
"tax_included" => "impuesto incluido",
"tax_jurisdiction" => "impuesto por ley",
"tax_jurisdiction_duplicate" => "Impuesto por ley duplicado",
"tax_jurisdiction_invalid_chars" => "Caracteres inválidos en el nombre por ley",
"tax_jurisdiction_required" => "impuesto por ley es requerido",
"tax_jurisdictions" => "impuestos por leyes",
"tax_jurisdictions_configuration" => "configuracion de impuestos por leyes",
"tax_jurisdictions_saved_successfully" => "cambios guardados en los impuestos por leyes",
"tax_jurisdictions_saved_unsuccessfully" => "no se guardaron los cambios en los impuestos por leyes",
"tax_rate" => "tarifa de impuesto",
"tax_rate_configuration" => "configuracion de tarifa de impuesto",
"tax_rate_error_adding_updating" => "tarifa de impuesto agregado o actualizacion fallida",
"tax_rate_numeric" => "tarifa de impuesto debe ser numero",
"tax_rate_required" => "tarifa de impuesto es requerida",
"tax_rate_successful_updated" => "has actualizado satisfactoriamente",
"tax_rate_successfully_added" => "has agregado satisfactoriamente",
"tax_rates" => "tarifas de impuestos",
"tax_rates_configuration" => "configuracion de tarifas de impuestos",
"tax_rounding" => "impuesto redondeado",
"tax_type" => "tipo de impuesto",
"update" => "Actualizar tarifa de impuesto",
"vat_tax" => "Impuesto IVA",
'add_exception' => "Agregar Excepcion",
'cascade' => "Cascada",
'cascade_sequence' => "Secuencia de Cascada",
'city' => "Ciudad",
'code' => "Codigo",
'confirm_delete' => "Estas seguro que deseas eliminar este código de impuesto? Esta acción es irreversible",
'confirm_restore' => "Estas seguro que deseas restaurar los códigos de impuestos?",
'default_tax_category' => "Impuesto por Default",
'default_tax_rate' => "Tarifa de impuesto por default",
'error_adding_updating' => "Código de impuesto agregado o error en actualización",
'group_seq' => "Secuencia de Grupo",
'jurisdiction_name' => "Nombre de la Jurisdicción",
'name' => "Nombre",
'new' => "Impuesto Nuevo",
'no_taxes' => "",
'no_taxes_to_display' => "Códigos de impuestos no disponible",
'reporting_authority' => "Imformacion de Autoridad",
'round_half_down' => "a número entero inferior",
'round_half_even' => "a numero par entero más próximo",
'round_half_odd' => "a numero entero impar mas próximo",
'round_half_up' => "a numero entero superior",
'rounding_code' => "código de redondeo",
'sales_tax' => "Impuesto de Venta",
'sales_tax_by_invoice' => "Impuesto de Ventas por factura",
'sequence' => "Secuencia",
'state' => "Estado",
'successful_deleted' => "Se ha borrado correctamente",
'tax_categories' => "Categorias de Impuestos",
'tax_categories_configuration' => "Configuración de Categorías de Impuestos",
'tax_categories_saved_successfully' => "Las categorías de impuestos han sido guardados",
'tax_categories_saved_unsuccessfully' => "Categorías de impuestos no han sido guardados",
'tax_category' => "Categoria de Impuesto",
'tax_category_code' => "codigo de categoria de impuesto",
'tax_category_duplicate' => "duplicar categoria de impuesto",
'tax_category_invalid_chars' => "caracteres invalidos en el nombre de la categoria de impuesto",
'tax_category_name' => "nombre de la categoria de impuesto",
'tax_category_new' => "nueva categoria de impuesto",
'tax_category_required' => "Categoría de impuesto es requerida",
'tax_code' => "codigo de impuesto",
'tax_code_cannot_be_deleted' => "error al eliminar codigo de impuesto",
'tax_code_duplicate' => "Código de impuesto duplicado",
'tax_code_invalid_chars' => "Caracteres inválidos en el código de impuesto",
'tax_code_name' => "nombre del codigo de impuesto",
'tax_code_required' => "codigo de impuesto es un campo requerido",
'tax_code_successful_deleted' => "has eliminado satisfactoriamente el codigo de impuesto",
'tax_code_successful_updated' => "has actualizado satisfactoriamente",
'tax_code_successful_updating' => "has actualizado satisfactoriamente el codigo de impuesto",
'tax_code_successfully_added' => "has agregado satisfactoriamente",
'tax_code_type' => "tipo de codigo de impuesto",
'tax_codes' => "codigos de impuesto",
'tax_codes_configuration' => "configuracion de codigos de impuesto",
'tax_codes_saved_successfully' => "cambios guardados en codigo de impuesto",
'tax_codes_saved_unsuccessfully' => "no se guardaron los cambios en el codigo de impuesto",
'tax_excluded' => "impuesto excluido",
'tax_group' => "grupo de impuesto",
'tax_group_not_unique' => "Grupo de impuestos {0} no es el unico",
'tax_group_sequence' => "secuencia de grupo de impuesto",
'tax_included' => "impuesto incluido",
'tax_jurisdiction' => "impuesto por ley",
'tax_jurisdiction_duplicate' => "Impuesto por ley duplicado",
'tax_jurisdiction_invalid_chars' => "Caracteres inválidos en el nombre por ley",
'tax_jurisdiction_required' => "impuesto por ley es requerido",
'tax_jurisdictions' => "impuestos por leyes",
'tax_jurisdictions_configuration' => "configuracion de impuestos por leyes",
'tax_jurisdictions_saved_successfully' => "cambios guardados en los impuestos por leyes",
'tax_jurisdictions_saved_unsuccessfully' => "no se guardaron los cambios en los impuestos por leyes",
'tax_rate' => "tarifa de impuesto",
'tax_rate_configuration' => "configuracion de tarifa de impuesto",
'tax_rate_error_adding_updating' => "tarifa de impuesto agregado o actualizacion fallida",
'tax_rate_numeric' => "tarifa de impuesto debe ser numero",
'tax_rate_required' => "tarifa de impuesto es requerida",
'tax_rate_successful_updated' => "has actualizado satisfactoriamente",
'tax_rate_successfully_added' => "has agregado satisfactoriamente",
'tax_rates' => "tarifas de impuestos",
'tax_rates_configuration' => "configuracion de tarifas de impuestos",
'tax_rounding' => "impuesto redondeado",
'tax_type' => "tipo de impuesto",
'update' => "Actualizar tarifa de impuesto",
'vat_tax' => "Impuesto IVA",
];

View File

@@ -1,15 +1,16 @@
<?php
return [
"gcaptcha" => "Je ne suis pas un robot.",
"go" => "Lancer",
"invalid_gcaptcha" => "Veuillez vérifier que vous n'êtes pas un robot.",
"invalid_installation" => "Cette installation est incorrecte, veuillez vérifier votre fichier php.ini.",
"invalid_username_and_password" => "Nom d'utilisateur et/ou mot de passe invalide.",
"login" => "Login",
"logout" => "Déconnexion",
"migration_needed" => "Une migration de base de données vers {0} débutera après l'ouverture de session.",
"password" => "Mot de passe",
"required_username" => "",
"username" => "Nom d'utilisateur",
"welcome" => "Bienvenue à {0} !",
'gcaptcha' => "Je ne suis pas un robot.",
'go' => "Lancer",
'invalid_gcaptcha' => "Veuillez vérifier que vous n'êtes pas un robot.",
'invalid_installation' => "Cette installation est incorrecte, veuillez vérifier votre fichier php.ini.",
'invalid_username_and_password' => "Nom d'utilisateur et/ou mot de passe invalide.",
'login' => "Login",
'logout' => "Déconnexion",
'migration_needed' => "Une migration de base de données vers {0} débutera après l'ouverture de session.",
'password' => "Mot de passe",
'required_username' => "Le champ nom utilisateur est obligatoire.",
'username' => "Nom d'utilisateur",
'welcome' => "Bienvenue à {0} !",
];

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

@@ -26,27 +26,26 @@ class Email_lib
$this->config = config(OSPOS::class)->settings;
$encrypter = Services::encrypter();
$smtp_pass = $this->config['smtp_pass'];
if(!empty($smtp_pass))
{
$smtp_pass = $encrypter->decrypt($smtp_pass);
$smtp_pass = $encrypter->decrypt($smtp_pass);
}
$email_config = [
'mailtype' => 'html',
'useragent' => 'OSPOS',
'validate' => true,
'protocol' => $this->config['protocol'],
'mailpath' => $this->config['mailpath'],
'smtp_host' => $this->config['smtp_host'],
'smtp_user' => $this->config['smtp_user'],
'smtp_pass' => $smtp_pass,
'smtp_port' => $this->config['smtp_port'],
'smtp_timeout' => $this->config['smtp_timeout'],
'smtp_crypto' => $this->config['smtp_crypto']
'mailType' => 'html',
'userAgent' => 'OSPOS',
'validate' => true,
'protocol' => $this->config['protocol'],
'mailPath' => $this->config['mailpath'],
'SMTPHost' => $this->config['smtp_host'],
'SMTPUser' => $this->config['smtp_user'],
'SMTPPass' => $smtp_pass,
'SMTPPort' => (int)$this->config['smtp_port'],
'SMTPTimeout' => (int)$this->config['smtp_timeout'],
'SMTPCrypto' => $this->config['smtp_crypto']
];
$this->email->initialize($email_config);
}

View File

@@ -246,7 +246,7 @@ class Receiving_lib
* @param string $stock_destination
* @return void
*/
public function set_stock_destination(string $stock_destination): void
public function set_stock_destination(?string $stock_destination): void
{
$this->session->set('recv_stock_destination', $stock_destination);
}

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

@@ -70,7 +70,7 @@ class Attribute extends Model
* @param int|bool $definition_id Attribute definition ID to check.
* @return bool returns true if at least one attribute_link exists or false if no attributes exist for that item and attribute.
*/
public function attributeLinkExists(int $item_id, int|bool $definition_id = false): bool
public function attributeLinkExists(?int $item_id, int|bool $definition_id = false): bool
{
$builder = $this->db->table('attribute_links');
$builder->where('item_id', $item_id);

View File

@@ -42,7 +42,7 @@ class Giftcard extends Model
{
$builder = $this->db->table('giftcards');
$builder->select('CAST(giftcard_number AS UNSIGNED) AS giftcard_number');
$builder->where('giftcard_number REGEXP \'^[0-9]+$\' = 0');
$builder->where('giftcard_number REGEXP \'^[0-9]+$\'');
$builder->orderBy("giftcard_number","desc");
$builder->limit(1);

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 $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');
@@ -187,7 +187,6 @@ 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.
}
$this->db->transComplete();

View File

@@ -61,7 +61,7 @@ class Summary_sales_taxes extends Summary_report
}
else
{
$builder->where('sale_time BETWEEN ' . rawurldecode($inputs['start_date']) . ' AND ' . rawurldecode($inputs['end_date']));
$builder->where('sale_time BETWEEN ' . $this->db->escape(rawurldecode($inputs['start_date'])) . ' AND ' . $this->db->escape(rawurldecode($inputs['end_date'])));
}
$builder->select('reporting_authority, jurisdiction_name, tax_category, tax_rate, SUM(sale_tax_amount) AS tax');

View File

@@ -11,13 +11,13 @@ use App\Models\Customer;
**/
class Token_customer extends Token
{
private string $customer_info;
private array $customer_info;
private Sale_lib $sale_lib;
/**
* @param string $customer_info
*/
public function __construct(string $customer_info = '')
public function __construct(array $customer_info = [])
{
parent::__construct();
$this->customer_info = $customer_info;

View File

@@ -296,7 +296,7 @@ $(document).ready(function()
data['currency_symbol'] = $('#currency_symbol').val();
data['currency_code'] = $('#currency_code').val();
data['thousands_separator'] = $('#thousands_separator').is(":checked")
$.post("<?= "$controller_name /checkNumberLocale" ?>",
$.post("<?= "$controller_name/checkNumberLocale" ?>",
data,
function(response) {
$("input[name='save_number_locale']").val(response.save_number_locale);

View File

@@ -42,6 +42,7 @@ use Config\OSPOS;
echo "&#187; OpenSSL: ", extension_loaded('openssl') ? '<span style="color: green;">Enabled &#x2713</span>' : '<span style="color: red">Disabled &#x2717</span>', '<br>';
echo "&#187; MBString: ", extension_loaded('mbstring') ? '<span style="color: green;">Enabled &#x2713</span>' : '<span style="color: red">Disabled &#x2717</span>', '<br>';
echo "&#187; Curl: ", extension_loaded('curl') ? '<span style="color: green;">Enabled &#x2713</span>' : '<span style="color: red">Disabled &#x2717</span>', '<br>';
echo "&#187; Json: ", extension_loaded('json') ? '<span style="color: green;">Enabled &#x2713</span>' : '<span style="color: red">Disabled &#x2717</span>', '<br><br>';
echo "&#187; Xml: ", extension_loaded('xml') ? '<span style="color: green;">Enabled &#x2713</span>' : '<span style="color: red">Disabled &#x2717</span>', '<br><br>';
?>
User Configuration:<br>
@@ -77,13 +78,11 @@ use Config\OSPOS;
}
echo esc(getBrowserNameAndVersion($_SERVER['HTTP_USER_AGENT']));
?><br>
.Server Software: <?= esc($_SERVER['SERVER_SOFTWARE']) ?><br>
.PHP Version: <?= PHP_VERSION ?><br>
.DB Version: <?= esc($dbVersion) ?><br>
.Server Port: <?= esc($_SERVER['SERVER_PORT']) ?><br>
.OS: <?= php_uname('s') .' '. php_uname('r') ?><br><br>
.OS Time Zone: <span id="timezone" style="font-weight:600"></span><br>
.OSPOS Time Zone: <span id="ostimezone" style="font-weight:600;" ><?= esc($config['timezone']) ?></span>
Server Software: <?= esc($_SERVER['SERVER_SOFTWARE']) ?><br>
PHP Version: <?= PHP_VERSION ?><br>
DB Version: <?= esc($dbVersion) ?><br>
Server Port: <?= esc($_SERVER['SERVER_PORT']) ?><br>
OS: <?= php_uname('s') .' '. php_uname('r') ?><br><br>
<br><br>
File Permissions:<br>
@@ -114,7 +113,7 @@ use Config\OSPOS;
clearstatcache();
?>
<br>
&#187; [public/uploads:]
&#187; [writable/uploads:]
<?php
if (is_writable($uploads))
{
@@ -229,13 +228,14 @@ use Config\OSPOS;
document.getSelection().removeAllRanges();
});
document.getElementById("timezone").innerText = Intl.DateTimeFormat().resolvedOptions().timeZone;
$(function() {
$('#timezone').clone().appendTo('#timezoneE');
});
if($('#timezone').html() !== $('#ostimezone').html())
document.getElementById("TimeError").innerHTML = '<span style="color: red;"><?= lang('Config.timezone_error') ?></span><br><br><?= lang('Config.user_timezone') ?><div id="timezoneE" style="font-weight:600;"></div><br><?= lang('Config.os_timezone') ?><div id="ostimezoneE" style="font-weight:600;"><?= esc($config['timezone']) ?></div><br>';
if($('#timezone').html() !== $('#ostimezone').html()) {
document.getElementById("timezone").innerText = Intl.DateTimeFormat().resolvedOptions().timeZone;
document.getElementById("TimeError").innerHTML = '<span style="color: red;"><?= lang('Config.timezone_error') ?></span><br><br><?= lang('Config.user_timezone') ?><div id="timezoneE" style="font-weight:600;"></div><br><?= lang('Config.os_timezone') ?><div id="ostimezoneE" style="font-weight:600;"><?= esc($config['timezone']) ?></div><br>';
}
</script>
</div>

View File

@@ -13,7 +13,7 @@
<html lang="<?= current_language_code() ?>">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta charset="utf-8">
<base href="<?= base_url() ?>">
<title><?= $config['company'] . '&nbsp;|&nbsp;' . lang('Common.software_short') . '&nbsp;|&nbsp;' . lang('Login.login') ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
@@ -26,7 +26,7 @@
? 'flatly'
: $config['theme']);
?>
<link rel="stylesheet" type="text/css" href="<?= "resources/bootswatch5/$theme/bootstrap.min.css" ?>">
<link rel="stylesheet" type="text/css" href="resources/bootswatch5/<?= "$theme" ?>/bootstrap.min.css">
<!-- inject:login:css -->
<link rel="stylesheet" href="css/login.min.css">
<!-- endinject -->
@@ -107,10 +107,11 @@
<footer class="d-flex justify-content-center flex-shrink-0 text-center">
<div class="footer container-fluid bg-body rounded shadow p-3 mb-md-4 mx-md-3">
<span class="text-body-secondary">
<svg height="1em" role="img" viewBox="0 0 229.85 143.05001" xmlns="http://www.w3.org/2000/svg">
<title><?= lang('Common.software_short') . '&nbsp;' . lang('Common.logo_mark') ?></title>
<path fill="currentColor" d="M115.51 50.18c-.03-1.26-.03-3.29.19-4.29 4.6-11.1 15.57-18.82 28.3-18.82h.41v58.3c0 .12-.03.78-.04.9-.54 16.46-14.01 29.7-30.59 29.7v27.08c21 0 39.17-11.27 49.29-28.07l.07-.11c2.9.45 5.86.75 8.9.75 31.95 0 57.81-26 57.81-57.81 0-30.87-24.37-56.46-55.1-57.81h-30.74c-17.18 0-32.61 7.64-43.22 19.63C90.2 7.71 74.93.04 57.77.04 25.91.04 0 25.95 0 57.81c0 31.86 25.91 57.77 57.77 57.77 31.86 0 57.77-25.91 57.77-57.77v-3.68c-.01.01-.02-3.31-.03-3.95zM57.76 88.51c-16.92 0-30.69-13.77-30.69-30.69s13.77-30.69 30.69-30.69S88.45 40.9 88.45 57.82 74.68 88.51 57.76 88.51zm142.96-19.87c-4.33 11.64-15.57 19.9-28.7 19.9h-.54V27.07h.54c13.13 0 24.37 8.26 28.7 19.9 1.35 3.25 2.03 6.91 2.03 10.83s-.67 7.59-2.03 10.84z"/>
<span class="text-primary">
<svg height="1.25em" role="img" viewBox="0 0 308.57998 308.57997" xmlns="http://www.w3.org/2000/svg">
<title><?= lang('Common.software_title') . '&nbsp;' . lang('Common.logo') ?></title>
<circle cx="154.28999" cy="154.28999" r="154.28999" fill="currentColor"/>
<path fill="#fff" d="M154.88998 145.66999c-.03-1.26-.03-3.29.19-4.29 4.6-11.1 15.57-18.82 28.3-18.82h.41v58.3c0 .12-.03.78-.04.9-.54 16.46-14.01 29.7-30.59 29.7v27.08c21 0 39.17-11.27 49.29-28.07l.07-.11c2.9.45 5.86.75 8.9.75 31.95 0 57.81-26 57.81-57.81 0-30.87-24.37-56.46-55.1-57.81h-30.74c-17.18 0-32.61 7.64-43.22 19.63-10.59-11.92-25.86-19.59-43.02-19.59-31.86 0-57.77 25.91-57.77 57.77 0 31.86 25.91 57.77 57.77 57.77 31.86 0 57.77-25.91 57.77-57.77v-3.68c-.01.01-.02-3.31-.03-3.95zm-57.75 38.33c-16.92 0-30.69-13.77-30.69-30.69s13.77-30.69 30.69-30.69 30.69 13.77 30.69 30.69-13.77 30.69-30.69 30.69zm142.96-19.87c-4.33 11.64-15.57 19.9-28.7 19.9h-.54v-61.47h.54c13.13 0 24.37 8.26 28.7 19.9 1.35 3.25 2.03 6.91 2.03 10.83s-.67 7.59-2.03 10.84z"/>
</svg>
</span>
<span><?= lang('Common.software_title') ?></span>

View File

@@ -56,7 +56,7 @@ $request = Services::request();
<div class="navbar-right" style="margin:0">
<?= anchor("home/changePassword/$user_info->person_id", "$user_info->first_name $user_info->last_name", ['class' => 'modal-dlg', 'data-btn-submit' => lang('Common.submit'), 'title' => lang('Employees.change_password')]) ?>
<?= ' | ' . ((ENVIRONMENT == 'development' || $request->getGet('debugdebug') == 'true') ? session('session_sha1') . ' | ' : '') ?>
<span>&nbsp;|&nbsp;</span>
<?= anchor('home/logout', lang('Login.logout')) ?>
</div>

View File

@@ -37,7 +37,9 @@
if ($config['company_logo'] != '')
{
?>
<div id="company_name"><img id="image" src="<?= esc(base_url('uploads/' . $config['company_logo']), 'url') ?>" alt="company_logo" /></div>
<div id="company_name">
<img id="image" src="<?= base_url('uploads/' . esc($config['company_logo'], 'url')) ?>" alt="company_logo" />
</div>
<?php
}
?>

View File

@@ -219,7 +219,7 @@ if (isset($success))
{
?>
<td><?= $item['discount'] ?></td>
<?= form_hidden('discount', $item['discount']) ?>
<?= form_hidden('discount', (string)$item['discount']) ?>
<?php
}
?>

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

@@ -255,8 +255,7 @@ $(document).ready(function()
<div id="sale_return_policy">
<h5>
<span><?= nl2br(esc($config['payment_message'])) ?></span>
<span style='padding:4%;'><?= empty($comments) ? '' : lang('Sales.comments') . ': ' . esc($comments) ?></span>
<span style='padding:4%;'><?= esc($config['invoice_default_comments']) ?></span>
<span style='padding:4%;'><?= empty($comments) ? esc($config['invoice_default_comments']) : lang('Sales.comments') . ': ' . esc($comments) ?></span>
</h5>
<div style='padding:2%;'><?= nl2br(esc($config['return_policy'])) ?></div>
</div>

View File

@@ -19,7 +19,6 @@
*/
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="<?= $this->request->getLocale() ?>">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="<?= base_url('css/invoice_email.css') ?>"/>
@@ -208,7 +207,7 @@ if(isset($error_message))
<?= nl2br($config['return_policy']) ?>
</div>
<div id='barcode'>
<img alt='<?= esc($barcode, 'attr') ?>' src='data:image/png;base64,<?= esc($barcode, 'attr') ?>' /><br>
<img alt=<?='$sale_id'?> src='data:image/svg+xml;base64,<?= base64_encode($barcode) ?>' /><br>
<?= $sale_id ?>
</div>
</div>

View File

@@ -24,7 +24,7 @@ if (isset($error_message))
{
var send_email = function()
{
$.get('<?= site_url() . esc("/sales/sendReceipt/$sale_id_num", 'url') ?>',
$.get('<?= site_url() . esc("/sales/sendPdf/$sale_id_num/receipt") ?>',
function(response)
{
$.notify( { message: response.message }, { type: response.success ? 'success' : 'danger'} )

View File

@@ -116,7 +116,7 @@
<?php
}
?>
<td class="total-value"><?= to_currency($item['discounted_total']) ?></td>
<td class="total-value" style="text-align:right;"><?= to_currency($item['discounted_total']) ?></td>
</tr>
<?php
}
@@ -170,10 +170,6 @@
<td style="<?= $border ? 'border-top: 2px solid black;' : '' ?>text-align:right"><?= to_currency($total) ?></td>
</tr>
<tr>
<td colspan="4">&nbsp;</td>
</tr>
<?php
$only_sale_check = false;
$show_giftcard_remainder = false;
@@ -190,11 +186,7 @@
<?php
}
?>
<tr>
<td colspan="4">&nbsp;</td>
</tr>
<?php
if(isset($cur_giftcard_value) && $show_giftcard_remainder)
{
@@ -216,14 +208,14 @@
</tr>
</table>
<div id="sale_return_policy" style="text-align:center">
<?= nl2br(esc($config['return_policy'])) ?>
</div>
<br>
<div id="barcode" style="text-align:center">
<?= $barcode ?><br>
<?= $sale_id ?>
<div id="terms">
<div id="sale_return_policy" style="text-align:center">
<?= nl2br(esc($config['return_policy'])) ?>
</div>
<div id='barcode' style="text-align:center">
<img alt=<?='$sale_id'?> src='data:image/svg+xml;base64,<?= base64_encode($barcode) ?>' /><br>
<?= $sale_id ?>
</div>
</div>
</div>

View File

@@ -23,8 +23,8 @@ services:
networks:
- app_net
volumes:
- uploads:/app/public/uploads
- logs:/app/application/logs
- uploads:/app/writable/uploads
- logs:/app/writable/logs
environment:
- CI_ENVIRONMENT=${OSPOS_CI_ENV}
- FORCE_HTTPS=true

View File

@@ -11,12 +11,12 @@ services:
depends_on:
- mysql
ports:
- "127.0.0.1:80:80"
- "80:80"
networks:
- app_net
volumes:
- uploads:/app/public/uploads
- logs:/app/application/logs
- uploads:/app/writable/uploads
- logs:/app/writable/logs
environment:
- CI_ENVIRONMENT=production
- FORCE_HTTPS=false

View File

@@ -14,6 +14,7 @@ import header from 'gulp-header'
import tar from 'gulp-tar'
import gzip from 'gulp-gzip'
import zip from 'gulp-zip'
import run from 'gulp-run'
import { Stream } from 'readable-stream'
const {finished, pipeline} = Stream.promises
@@ -31,9 +32,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
@@ -248,6 +249,13 @@ gulp.task('inject-login', function() {
);
});
gulp.task('update-licenses', function() {
run('composer licenses --format=json --no-dev > public/license/composer.LICENSES').exec();
return pipeline(gulp.src('LICENSE'),gulp.dest('public/license'));
});
gulp.task('build-database', function() {
return gulp.src(['./app/Database/tables.sql','./app/Database/constraints.sql'])
.pipe(header('-- >> This file is autogenerated from tables.sql and constraints.sql. Do not modify directly << --'))
@@ -266,5 +274,6 @@ gulp.task('default',
'prod-css',
'copy-fonts',
'inject-login',
'update-licenses',
'build-database'
));

4506
package-lock.json generated
View File

File diff suppressed because it is too large Load Diff

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,9 @@
"objecttothis <objecttothis - at - gmail.com>",
"SteveIreland <stevei - at - ruledomain.com>"
],
"files": [
"dist/opensourcepos.$version.tgz"
],
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
},
@@ -17,6 +20,10 @@
"point-of-sale",
"POS"
],
"repository": {
"type": "git",
"url": "https://github.com/opensourcepos/opensourcepos"
},
"scripts": {
"build": "gulp default",
"gulp": "gulp"
@@ -44,9 +51,6 @@
"coffeescript": "^2.7.0",
"es6-promise": "^4.2.8",
"file-saver": "^2.0.5",
"gulp-gzip": "^1.4.2",
"gulp-tar": "^4.0.0",
"gulp-zip": "^6.0.0",
"html2canvas": "^1.4.1",
"jasny-bootstrap": "^3.1.3",
"jquery": "^3.7.1",
@@ -64,12 +68,16 @@
"gulp-clean-css": "^4.3.0",
"gulp-concat": "^2.6.1",
"gulp-debug": "^5.0.1",
"gulp-gzip": "^1.4.2",
"gulp-header": "^2.0.9",
"gulp-inject": "^5.0.5",
"gulp-rename": "^2.0.0",
"gulp-rev": "^10.0.0",
"gulp-run": "^1.7.1",
"gulp-tar": "^4.0.0",
"gulp-uglify": "^3.0.2",
"npm-check-updates": "^16.14.11",
"gulp-zip": "^6.1.0",
"npm-check-updates": "^17.1.14",
"readable-stream": "^4.4.2",
"stream-series": "^0.1.1"
}

View File

@@ -21,7 +21,6 @@
if (button_id == 'submit' && (!submitted && btn_id != "btnNew")) {
form.submit();
validator.valid() && $('#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',

View File

@@ -1,30 +1,30 @@
MIT License
Copyright (c) 2013-2022 jekkos
Copyright (c) 2015-2021 FrancescoUK (aka daN4cat)
Copyright (c) 2017-2021 Steve Ireland
Copyright (c) 2017-2022 objecttothis
Copyright (c) 2017-2021 odiea
Copyright (c) 2017-2021 WebShells
Copyright (c) 2020-2021 Andriux1990
Copyright (c) 2021 BudsieBuds
Copyright (c) 2013-2024 jekkos
Copyright (c) 2017-2024 objecttothis
Copyright (c) 2017-2024 Steve Ireland
Copyright (c) 2017-2024 odiea
Copyright (c) 2018-2024 WebShells
Copyright (c) 2021-2024 BudsieBuds
Copyright (c) 2015-2023 FrancescoUK (aka daN4cat)
Copyright (c) 2015-2022 Aamir Shahzad (aka asakpke), RoshanTech, eSite.pk
Copyright (c) 2019-2020 Andriux1990
Copyright (c) 2018-2019 Erasto Marroquin (aka Erastus)
Copyright (c) 2019 Loyd Jayme (aka loydjayme25)
Copyright (c) 2018 Erasto Marroquin (aka Erastus)
Copyright (c) 2018 Nathan Sas (aka nathanzky)
Copyright (c) 2018 Emilio Silva (aka emi-silva)
Copyright (c) 2017 Jesus Guerrero Botella (aka i92guboj)
Copyright (c) 2016-2017 Ramkrishna Mondal (aka RamkrishnaMondal)
Copyright (c) 2016-2017 Jorge Colmenarez (aka jlctmaster), frontuari.com
Copyright (c) 2016-2017 Jesus Guerrero Botella (aka i92guboj)
Copyright (c) 2017 Deep Shah (aka deepshah)
Copyright (c) 2017 Joshua Fernandez (aka joshua1234511)
Copyright (c) 2017 asadjaved63
Copyright (c) 2016-2017 Ramkrishna Mondal (aka RamkrishnaMondal)
Copyright (c) 2016-2017 Jorge Colmenarez (aka jlctmaster), frontuari.com
Copyright (c) 2016 Rinaldy@dbarber (aka rnld26)
Copyright (c) 2015-2022 Aamir Shahzad (aka asakpke), RoshanTech, eSite.pk
Copyright (c) 2015 Toni Haryanto (aka yllumi)
Copyright (c) 2012-2014 pappastech
Copyright (c) 2013 Rob Garrison
Copyright (c) 2013 Parq
Copyright (c) 2013 Ramel
Copyright (c) 2012-2014 pappastech
Copyright (c) 2012 Alain
Permission is hereby granted, free of charge, to any person obtaining a copy
@@ -34,16 +34,16 @@ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
Additionally, you cannot claim copyright or ownership of the Software.

View File

@@ -1,7 +1,6 @@
The MIT License (MIT)
Copyright (c) 2011-2021 Twitter, Inc.
Copyright (c) 2011-2021 The Bootstrap Authors
Copyright (c) 2011-2024 The Bootstrap Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1 +1 @@
Bootstrap 5.0.1
Bootstrap 5.3.3

View File

@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2019-2020 The Bootstrap Authors
Copyright (c) 2019-2024 The Bootstrap Authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -1 +1 @@
Bootstrap Icons 1.5.0
Bootstrap Icons 1.11.3

Some files were not shown because too many files have changed in this diff Show More