Compare commits

...

621 Commits
3.3.0 ... 3.3.3

Author SHA1 Message Date
FrancescoUK
8e52bd4c1a Prepare release 3.3.3 2020-12-31 12:13:50 +00:00
FrancescoUK
2a66107cbc Fix copyright typo and update licenses 2020-12-31 10:00:50 +00:00
FrancescoUK
2dec15c760 Merge pull request #3060 from opensourcepos/fix-table-mobile-glitch
Disable resize trigger (#3057)
2020-12-31 09:34:40 +00:00
FrancescoUK
dcda176614 Remove extra init_resize call 2020-12-31 09:25:22 +00:00
Jeroen Peelaerts
98306e20be Disable resize trigger (#3057) 2020-12-30 22:46:44 +01:00
Jeroen Peelaerts
a8e505d668 Use correct mimetype for invoice logo (#3019) 2020-12-29 22:09:27 +01:00
Jeroen Peelaerts
3acf9056ec Enable PHP rendering in DOMPdf (#3019) 2020-12-29 22:09:27 +01:00
FrancescoUK
9e800fa2c3 Register dropdown issue fix and refactoring (#3055) 2020-12-29 18:04:50 +00:00
FrancescoUK
5578b40185 Fix sale register issue with due amount and no customer (#3055) 2020-12-28 22:59:53 +00:00
FrancescoUK
03e2bed008 Merge pull request #2980 from opensourcepos/bower-update
Update bower.json
2020-12-28 16:09:40 +00:00
jekkos
c57a3d8973 Add dev server URL to README.md 2020-12-28 13:58:24 +01:00
jekkos
6178b7b678 Update README.md 2020-12-28 13:55:48 +01:00
Jeroen Peelaerts
4e85b8a677 Remove basic/selected toggle (#2980) 2020-12-27 22:00:22 +01:00
Jeroen Peelaerts
23e4deb7c4 se basic as export mode if nothing is selected (#2980) 2020-12-26 23:58:35 +01:00
Jeroen Peelaerts
f7d06c1da4 Enable secure flag to make SameSite effective 2020-12-25 22:19:59 +01:00
Jeroen Peelaerts
a25653e3cf Add cookie workaround for php 7.2 (#1980) 2020-12-25 22:19:59 +01:00
Jeroen Peelaerts
49ef2a2105 Enable httpOnly for session cookie only (#1903) 2020-12-25 22:19:59 +01:00
Jeroen Peelaerts
57f5d419dd Add samesite=Strict attribute (#1980) 2020-12-25 22:19:59 +01:00
Jeroen Peelaerts
58192f74c0 Export only selection if it's present (#2980) 2020-12-25 20:25:15 +01:00
FrancescoUK
d34ff02686 Update supported PHP versions 2020-12-23 12:46:47 +00:00
Jeroen Peelaerts
37cacdbc39 Fix sticky table header alignment (#2980) 2020-12-22 23:36:46 +01:00
Jeroen Peelaerts
f312a45469 Update header.php (#2980) 2020-12-22 14:16:44 +01:00
Jeroen Peelaerts
18d61188ff Fix sticky table headers (#2980) 2020-12-22 11:41:36 +01:00
FrancescoUK
718729b4c7 Merge pull request #3049 from opensourcepos/fix-form-submission
Use jquery.validate to check form submission state (#3044)
2020-12-21 16:38:56 +00:00
Jeroen Peelaerts
9a881c5232 Add stripes to table again (#2980) 2020-12-21 15:40:05 +01:00
Jeroen Peelaerts
82a9348bf9 Use jquery.validate to check form submission state (#3044) 2020-12-21 14:17:00 +01:00
Jeroen Peelaerts
76d6ad215e Fix modal submit after close (#3044) 2020-12-20 22:09:20 +01:00
Jeroen Peelaerts
2e2ef29f72 Add chartist bower main override 2020-12-20 12:09:50 +01:00
jekkos
2d21980313 Update bower.json 2020-12-18 13:55:30 +01:00
FrancescoUK
7eb310aac6 Further JS plugins updates 2020-12-17 12:43:52 +00:00
FrancescoUK
c72ef2aae9 Update npm packages 2020-12-17 12:12:07 +00:00
FrancescoUK
c8e7fab9d3 Update js plugins 2020-12-17 12:10:31 +00:00
FrancescoUK
4ca39bfedb Update grunt and composer 2020-12-17 10:43:00 +00:00
FrancescoUK
6ec7fa822b Merge pull request #3045 from opensourcepos/fix-double-submit
Prevent double submit (#3044)
2020-12-17 10:37:42 +00:00
Jeroen Peelaerts
fb21359663 Prevent double submit (#3044) 2020-12-16 22:50:01 +01:00
FrancescoUK
030b67224e Reset payments on item remove and sales register mode change (#3043) 2020-12-16 15:36:15 +00:00
FrancescoUK
2ce73993c6 Empty payments when Sales register item is edited (#3042) 2020-12-16 11:14:29 +00:00
FrancescoUK
0d08e8e15b Update en-GB sales_lang.php 2020-12-15 11:32:51 +00:00
WebShells
c3150efad5 Minor changes
divs and tds fixing
2020-12-15 10:21:00 +01:00
WebShells
303a1442d7 PDF Minor fixes
Textarea replacements for better Pdf rendering.
2020-12-15 10:21:00 +01:00
WShells
8a2923854a Update work_order.php
Textarea replacement
2020-12-15 10:21:00 +01:00
WShells
9318adaeb9 Update tax_invoice.php
Textarea replacement
2020-12-15 10:21:00 +01:00
WShells
ea64e5bb40 Minor changes
Replacing main textareas with fixed divs
2020-12-15 10:21:00 +01:00
WShells
5dd340d84c Update quote.php
Additional spaces removal/alignment
2020-12-15 10:21:00 +01:00
Jeroen Peelaerts
36bab70bfd Fix default register mode (#3016) 2020-12-15 09:54:08 +01:00
Jeroen Peelaerts
e4aa4017ba Fix invoice_email.css reference (#3019) 2020-12-06 23:21:55 +01:00
Jeroen Peelaerts
87ea0c45f7 Update inventory date if sale/receiving is edited (#2844) 2020-12-04 23:48:57 +01:00
Jeroen Peelaerts
9ee3557672 Use float precision 1e14 as upper limit for decimal parsing (#3004) 2020-12-04 23:48:05 +01:00
Carl Hunter
0fd531c4a2 Increase font size to 150% for total sales and 120% for amount due in sales module for better visibility 2020-12-03 15:49:16 +01:00
Carl Hunter
a54f596ea9 Rename Count column in Payments Summary Report to Transactions 2020-12-03 15:49:16 +01:00
Carl Hunter
d571734f98 Fixed sorting of Quantity column in Customer Summary Report 2020-12-03 15:49:16 +01:00
Carl Hunter
516f8f71da Added Transactions column to Customer Summary Report 2020-12-03 15:49:16 +01:00
Carl Hunter
5c31fb094b Fixed typo in Column 3 of Search Suggestions Layout 2020-12-03 15:49:16 +01:00
Carl Hunter
7b20e2c29c Added wholesale price as an option in search suggestions 2020-12-03 15:49:16 +01:00
Sean Sopheak Rida
d8431b8c00 Translated using Weblate (Central Khmer)
Currently translated at 100.0% (36 of 36 strings)

Translation: opensourcepos/cashups
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/cashups/km/
2020-11-30 18:50:36 +01:00
Sean Sopheak Rida
4484a47d4c Translated using Weblate (Central Khmer)
Currently translated at 1.1% (2 of 179 strings)

Translation: opensourcepos/sales
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/sales/km/
2020-11-27 20:03:38 +01:00
Sean Sopheak Rida
ea523dd765 Translated using Weblate (Central Khmer)
Currently translated at 100.0% (69 of 69 strings)

Translation: opensourcepos/common
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/common/km/
2020-11-27 20:03:38 +01:00
Sean Sopheak Rida
b0e833f8c4 Translated using Weblate (Central Khmer)
Currently translated at 100.0% (52 of 52 strings)

Translation: opensourcepos/customers
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/customers/km/
2020-11-27 20:03:38 +01:00
Jeroen Peelaerts
4e83d967c1 Fix receiving return total (#3033) 2020-11-25 20:19:48 +01:00
Jeroen Peelaerts
f01f882bb8 Use float precision 1e14 as upper limit for decimal parsing (#3004) 2020-11-24 22:24:50 +01:00
Jeroen Peelaerts
e72dc752bb Make receivings date readonly (#2843) 2020-11-24 22:08:38 +01:00
FrancescoUK
8e054de506 Merge pull request #3024 from ket-c/master
Fixed inventory after deleting receiving
2020-11-22 09:02:27 +00:00
Kwaku Amoh-Aboagye
084770643d Fixed inventory after deleting receiving
When you add new/ update an item with a *receiving quantity* more than 1, (Let's say 63), so you then do a new receiving of that particular item, you will get the option to select pack as x63 or x1.

So if you select more that 1 Ship pack (receiving quantity), (in this eg. that is, x63) and finish the receiving successfully, your inventory of that item update with increment of 63 and inventory count details also, good.

But when you realize the receiving you just did had a mistake and  you go and delete it, the inventory reduction is wrongly calculated.
Instead of decreasing the inventory by 63, it reduces it by 1.

So i fixed it.
2020-11-20 21:49:52 +01:00
Jeroen Peelaerts
4b2b098a85 Add credit filter for payment types (#2983) 2020-11-20 17:24:24 +01:00
Kwaku Amoh-Aboagye
d4d25d240e Fixed inventory after deleting receiving
When you add new/ update an item with a *receiving quantity* more than 1, (Let's say 63), so you then do a new receiving of that particular item, you will get the option to select pack as x63 or x1.

So if you select more that 1 Ship pack (receiving quantity), (in this eg. that is, x63) and finish the receiving successfully, your inventory of that item update with increment of 63 and inventory count details also, good.

But when you realize the receiving you just did had a mistake and  you go and delete it, the inventory reduction is wrongly calculated.
Instead of decreasing the inventory by 63, it reduces it by 1.

So i fixed it.
2020-11-20 12:51:35 +00:00
Jeroen Peelaerts
2393c21647 Add FUNDING.yml 2020-11-15 23:43:21 +01:00
Jeroen Peelaerts
e47f3ee571 Fix detailed sales report (#2967) 2020-11-15 17:02:00 +01:00
Carl Hunter
5ddda4dc1e Fix quantity sorting in Categories, Employees and Transactions reports 2020-11-15 15:44:40 +01:00
Carl Hunter
20d78224a4 Added Transactions column to Employees Summary Report and Transactions Summary Report 2020-11-15 15:44:40 +01:00
khao_lek
8571cd1a44 Translated using Weblate (Thai)
Currently translated at 100.0% (298 of 298 strings)

Translation: opensourcepos/config
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/config/th/
2020-11-12 18:23:47 +01:00
khao_lek
772e809ee6 Translated using Weblate (Thai)
Currently translated at 100.0% (33 of 33 strings)

Translation: opensourcepos/item_kits
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/item_kits/th/
2020-11-12 18:23:47 +01:00
khao_lek
35b09b2dfb Translated using Weblate (Thai)
Currently translated at 100.0% (179 of 179 strings)

Translation: opensourcepos/sales
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/sales/th/
2020-11-12 18:23:47 +01:00
khao_lek
705fc1dd0b Translated using Weblate (Thai)
Currently translated at 100.0% (52 of 52 strings)

Translation: opensourcepos/customers
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/customers/th/
2020-11-12 18:23:47 +01:00
khao_lek
814cd4503c Translated using Weblate (Thai)
Currently translated at 100.0% (68 of 68 strings)

Translation: opensourcepos/giftcards
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/giftcards/th/
2020-11-12 18:23:47 +01:00
khao_lek
9020e85a17 Translated using Weblate (Thai)
Currently translated at 100.0% (35 of 35 strings)

Translation: opensourcepos/employees
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/employees/th/
2020-11-12 18:23:47 +01:00
khao_lek
f0b2f64490 Translated using Weblate (Thai)
Currently translated at 100.0% (110 of 110 strings)

Translation: opensourcepos/items
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/items/th/
2020-11-12 18:23:47 +01:00
Carl Hunter
36b0b28109 Add Retail Price to Items Summary Report 2020-11-07 22:40:07 +01:00
Jeroen Peelaerts
5a124ede99 Fix supplier category after update (#2972) 2020-11-07 22:25:56 +01:00
Steve Ireland
a8aafb6f47 Merge pull request #3001 from opensourcepos/theme-tweaker
Adjust a theme to handle feature development using non-theme supported classes.
2020-11-05 21:29:50 -05:00
SiuDuck
eae0f8e0cb Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (8 of 8 strings)

Translation: opensourcepos/login
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/login/zh_Hant/
2020-11-03 06:56:02 +01:00
SiuDuck
9542f2dd9c Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (35 of 35 strings)

Translation: opensourcepos/employees
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/employees/zh_Hant/
2020-11-03 06:55:51 +01:00
Steve Ireland
b8eb67a14a Provides a way to adjust a theme to handle feature development using non-theme supported classes. 2020-11-02 21:02:43 -05:00
SiuDuck
d763dd3665 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (29 of 29 strings)

Translation: opensourcepos/attributes
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/attributes/zh_Hant/
2020-11-03 02:40:10 +01:00
SiuDuck
5e3a6f0b07 Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (69 of 69 strings)

Translation: opensourcepos/common
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/common/zh_Hant/
2020-11-03 02:40:10 +01:00
SiuDuck
d45d57ac4a Translated using Weblate (Chinese (Traditional))
Currently translated at 8.3% (3 of 36 strings)

Translation: opensourcepos/cashups
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/cashups/zh_Hant/
2020-11-03 02:40:10 +01:00
SiuDuck
58476dd3bc Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (8 of 8 strings)

Translation: opensourcepos/bootstrap_tables
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/bootstrap_tables/zh_Hant/
2020-11-03 02:40:10 +01:00
Jeroen Peelaerts
67e1e4ef19 Add takings filtering on credit card (#2983) 2020-11-02 12:42:45 +01:00
Jeroen Peelaerts
8a26195a60 Remove magic quotes check in dompdf helper (#2996) 2020-10-29 23:14:44 +01:00
Jeroen Peelaerts
84a3a7e9b7 Fix notifications bis 2020-10-29 23:00:44 +01:00
Jeroen Peelaerts
958469e207 Fix detailed sale report (#2967) 2020-10-29 22:14:34 +01:00
Jeroen Peelaerts
47f61e1a30 Detailed sales + receiving fix (#2967) 2020-10-29 21:35:04 +01:00
jekkos-t520
f04ff91f44 Fix notifications 2020-10-29 21:07:46 +01:00
FrancescoUK
e6ac4de69d Merge pull request #2994 from opensourcepos/config-permissions
Increase timeout on migration (#2992)
2020-10-29 19:06:48 +00:00
Jeroen Peelaerts
e1ff739621 Increase timeout on migration (#2992) 2020-10-29 00:31:48 +01:00
Jeroen Peelaerts
625fb584ed Fix migration errors on clean install 2020-10-28 21:31:31 +01:00
Jeroen Peelaerts
fdb8cf8bda Do not show takings if no grant for sales_reports (#2981) 2020-10-28 21:00:16 +01:00
Jeroen Peelaerts
65c84a8857 Fix receivings report in MySQL (#2967) 2020-10-28 20:55:57 +01:00
jekkos
c0ac4b3400 Fix invoice email notification 2020-10-22 18:59:34 +02:00
jekkos
3471c0f947 Translated using Weblate (Flemish)
Currently translated at 98.3% (175 of 178 strings)

Translation: opensourcepos/sales
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/sales/nl_BE/
2020-10-21 15:23:43 +02:00
jekkos
3aafa1649c Translated using Weblate (Flemish)
Currently translated at 97.2% (35 of 36 strings)

Translation: opensourcepos/cashups
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/cashups/nl_BE/
2020-10-21 15:23:43 +02:00
jekkos
a8b37d36ff Translated using Weblate (Flemish)
Currently translated at 10.2% (8 of 78 strings)

Translation: opensourcepos/taxes
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/taxes/nl_BE/
2020-10-21 15:23:43 +02:00
jekkos
5ec7e11c37 Translated using Weblate (Flemish)
Currently translated at 100.0% (2 of 2 strings)

Translation: opensourcepos/error
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/error/nl_BE/
2020-10-21 15:23:43 +02:00
jekkos
96c3738a7e Translated using Weblate (Flemish)
Currently translated at 100.0% (298 of 298 strings)

Translation: opensourcepos/config
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/config/nl_BE/
2020-10-21 15:23:43 +02:00
jekkos
1bb72d9fa9 Translated using Weblate (Flemish)
Currently translated at 100.0% (69 of 69 strings)

Translation: opensourcepos/common
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/common/nl_BE/
2020-10-21 15:23:43 +02:00
jekkos
5737d220eb Translated using Weblate (Flemish)
Currently translated at 100.0% (8 of 8 strings)

Translation: opensourcepos/bootstrap_tables
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/bootstrap_tables/nl_BE/
2020-10-21 15:23:43 +02:00
jekkos
f40c4aedef Translated using Weblate (Flemish)
Currently translated at 92.7% (102 of 110 strings)

Translation: opensourcepos/items
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/items/nl_BE/
2020-10-21 15:23:43 +02:00
jekkos-t520
52fc45ae23 Get rid of warnings in Php 7.4 2020-10-18 22:28:08 +02:00
jekkos
44f0036ac0 Bump MariaDB in test container 2020-10-18 00:40:26 +02:00
jekkos
1e47521f55 Bump MariaDB in dev container 2020-10-18 00:39:49 +02:00
FrancescoUK
d840a67150 Merge pull request #2970 from opensourcepos/fix-location-crud
Fix stock location crud (#2965)
2020-10-17 21:39:09 +01:00
FrancescoUK
8a16d5c93c Merge pull request #2971 from opensourcepos/email-config
Email config (#2968)
2020-10-17 21:37:51 +01:00
FrancescoUK
b3d4ad1a13 Update dockerfile images 2020-10-17 20:18:31 +01:00
FrancescoUK
2b8a2d8bb6 Housekeeping 2020-10-17 20:14:33 +01:00
jekkos
49be337200 Bump php to 7.4 in docker 2020-10-17 01:51:58 +02:00
jekkos-t520
632e25abe3 Email config (#2968) 2020-10-17 01:19:12 +02:00
jekkos-t520
760d7490a2 Fix stock location crud (#2965) 2020-10-17 01:05:03 +02:00
Jeroen Peelaerts
c0ff849c0f Do not cast quantity change to int in sale delete (#2964) 2020-10-13 21:27:09 +02:00
jekkos-t520
730b9ff366 Fix EAN13 generation for 90 (#2521) 2020-10-12 23:06:19 +02:00
Dźmitry Lizunkoŭ
71f12bf205 Translated using Weblate (Russian)
Currently translated at 41.0% (32 of 78 strings)

Translation: opensourcepos/taxes
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/taxes/ru/
2020-10-09 12:38:56 +02:00
jekkos
8960f57bea Translated using Weblate (Flemish)
Currently translated at 99.2% (138 of 139 strings)

Translation: opensourcepos/reports
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/reports/nl_BE/
2020-10-08 20:31:52 +02:00
jekkos
437b4115e6 Translated using Weblate (Flemish)
Currently translated at 100.0% (298 of 298 strings)

Translation: opensourcepos/config
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/config/nl_BE/
2020-10-08 20:31:51 +02:00
jekkos
461db7883f Translated using Weblate (Flemish)
Currently translated at 100.0% (68 of 68 strings)

Translation: opensourcepos/giftcards
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/giftcards/nl_BE/
2020-10-08 20:31:51 +02:00
jekkos
f254ecc44a Translated using Weblate (Flemish)
Currently translated at 100.0% (8 of 8 strings)

Translation: opensourcepos/bootstrap_tables
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/bootstrap_tables/nl_BE/
2020-10-08 20:31:51 +02:00
jekkos
6432843fda Translated using Weblate (Flemish)
Currently translated at 100.0% (52 of 52 strings)

Translation: opensourcepos/customers
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/customers/nl_BE/
2020-10-08 20:31:51 +02:00
jekkos
ef198ce07a Translated using Weblate (Flemish)
Currently translated at 100.0% (69 of 69 strings)

Translation: opensourcepos/common
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/common/nl_BE/
2020-10-08 20:31:51 +02:00
Emin Tufan Çetin
847724c5b3 Translated using Weblate (Turkish)
Currently translated at 100.0% (33 of 33 strings)

Translation: opensourcepos/item_kits
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/item_kits/tr/
2020-10-08 17:32:50 +02:00
Emin Tufan Çetin
7c173cbfe2 Translated using Weblate (Turkish)
Currently translated at 100.0% (8 of 8 strings)

Translation: opensourcepos/bootstrap_tables
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/bootstrap_tables/tr/
2020-10-08 17:32:49 +02:00
Emin Tufan Çetin
93b3e85b8d Translated using Weblate (Turkish)
Currently translated at 100.0% (78 of 78 strings)

Translation: opensourcepos/taxes
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/taxes/tr/
2020-10-08 17:32:49 +02:00
Emin Tufan Çetin
4e83a2d45f Translated using Weblate (Turkish)
Currently translated at 100.0% (298 of 298 strings)

Translation: opensourcepos/config
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/config/tr/
2020-10-08 17:32:49 +02:00
jekkos-t520
eb9e9ddd38 Prepare 3.3.3 release 2020-10-05 22:45:20 +02:00
jekkos-t520
4fa69cbe13 Sync language files 2020-10-05 22:44:10 +02:00
WebShells
12d79b7309 En_GB Fix
En_GB Fix
2020-10-02 22:40:52 +02:00
WebShells
2743a6cf15 System Info Permissions
System Info Permissions Fix
2020-10-02 22:40:52 +02:00
WShells
9528624c0e Vulnerability Check
Import customers Vulnerability Check
2020-10-02 22:40:52 +02:00
WebShells
382aebcf16 Updates to System Info
Updates to System Info Fixing misplaced error messages (language variables).
2020-10-02 22:40:52 +02:00
Anaconda313
1be9fd04c4 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (19 of 19 strings)

Translation: opensourcepos/expenses_categories
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/expenses_categories/az/
2020-09-27 08:35:48 +02:00
Anaconda313
407a7c0132 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (52 of 52 strings)

Translation: opensourcepos/receivings
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/receivings/az/
2020-09-27 08:35:48 +02:00
Anaconda313
8732648fc0 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (69 of 69 strings)

Translation: opensourcepos/common
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/common/az/
2020-09-27 08:03:25 +02:00
Anaconda313
a3380a616b Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (39 of 39 strings)

Translation: opensourcepos/module
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/module/az/
2020-09-27 08:03:25 +02:00
Anaconda313
56487226ef Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (35 of 35 strings)

Translation: opensourcepos/employees
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/employees/az/
2020-09-27 08:03:25 +02:00
Anaconda313
cba6efec73 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (39 of 39 strings)

Translation: opensourcepos/module
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/module/az/
2020-09-27 07:27:15 +02:00
Anaconda313
7872a4c212 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (139 of 139 strings)

Translation: opensourcepos/reports
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/reports/az/
2020-09-27 07:27:14 +02:00
Anaconda313
64ab220c4d Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (52 of 52 strings)

Translation: opensourcepos/customers
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/customers/az/
2020-09-27 07:14:19 +02:00
Anaconda313
f8e9090eb7 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (69 of 69 strings)

Translation: opensourcepos/common
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/common/az/
2020-09-27 06:57:57 +02:00
Natig Asadov
edef11ce7f Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (178 of 178 strings)

Translation: opensourcepos/sales
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/sales/az/
2020-09-24 10:44:09 +02:00
jekkos
9ad13bf3e2 Add empty error.log so nginx can log to it (#2953) 2020-09-21 11:16:02 +02:00
Natig Asadov
3f70e24780 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (8 of 8 strings)

Translation: opensourcepos/bootstrap_tables
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/bootstrap_tables/az/
2020-09-20 05:32:34 +02:00
Natig Asadov
5522f8580c Translated using Weblate (English)
Currently translated at 100.0% (8 of 8 strings)

Translation: opensourcepos/bootstrap_tables
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/bootstrap_tables/en/
2020-09-20 05:32:34 +02:00
Natig Asadov
956b54ad27 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (33 of 33 strings)

Translation: opensourcepos/item_kits
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/item_kits/az/
2020-09-20 05:25:16 +02:00
jekkos
1860fa0eaa Translated using Weblate (Flemish)
Currently translated at 89.2% (124 of 139 strings)

Translation: opensourcepos/reports
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/reports/nl_BE/
2020-09-20 05:25:16 +02:00
Natig Asadov
9e2cc52275 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (178 of 178 strings)

Translation: opensourcepos/sales
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/sales/az/
2020-09-20 05:25:16 +02:00
jekkos
3ee277ef70 Translated using Weblate (Flemish)
Currently translated at 100.0% (29 of 29 strings)

Translation: opensourcepos/attributes
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/attributes/nl_BE/
2020-09-20 05:25:16 +02:00
Natig Asadov
1b5fe21f00 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (69 of 69 strings)

Translation: opensourcepos/common
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/common/az/
2020-09-20 05:25:16 +02:00
Natig Asadov
dd0b1d4628 Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (298 of 298 strings)

Translation: opensourcepos/config
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/config/az/
2020-09-20 05:25:16 +02:00
Natig Asadov
65da551aad Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (78 of 78 strings)

Translation: opensourcepos/taxes
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/taxes/az/
2020-09-20 05:25:16 +02:00
Natig Asadov
9aa6406dae Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (21 of 21 strings)

Translation: opensourcepos/suppliers
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/suppliers/az/
2020-09-20 05:25:16 +02:00
jekkos
d429712c98 Translated using Weblate (Flemish)
Currently translated at 6.4% (5 of 78 strings)

Translation: opensourcepos/taxes
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/taxes/nl_BE/
2020-09-20 05:25:16 +02:00
jekkos
8c92cbb277 Remove broken devDependencies badge 2020-09-19 22:58:05 +02:00
jekkos
40f02988d8 Update weblate svg url (#2914) 2020-09-19 22:57:23 +02:00
jekkos
9d7519bdc1 Translated using Weblate (Flemish)
Currently translated at 97.2% (35 of 36 strings)

Translation: opensourcepos/cashups
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/cashups/nl_BE/
2020-09-19 22:44:24 +02:00
Natig Asadov
4fcfdfd4aa Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (110 of 110 strings)

Translation: opensourcepos/items
Translate-URL: https://translate.opensourcepos.org/projects/opensourcepos/items/az/
2020-09-19 21:51:21 +02:00
Steve Ireland
8e99889174 On document reprint retrieve the taxes originally applied to the reprinted document. 2020-09-19 14:14:01 +02:00
jekkos-t520
30134520f4 Also add files inside of docker folder (#2953) 2020-09-17 23:42:47 +02:00
jekkos
0ade104dff Add docker folder to bintray zip (#2953) 2020-09-17 23:33:20 +02:00
jekkos-t520
1709be588f Bump to 3.4.0 (#2942) 2020-09-14 18:17:36 +02:00
SteveIreland
bf88f8fdae Fixes #2922 feature request by adding the cash rounding type of half-five as a trigger for cash rounding and including the decimals as a factor in the round function. 2020-09-14 18:03:12 +02:00
jekkos
bb309c2579 Revert force flag for docker push/tag (#2907)
Fix is done in the deploy script now, we explicitly remove the image tag before pull.
2020-09-02 09:34:01 +02:00
jekkos
b8bfe2239e Revert force flag for docker push/tag (#2907)
Fix is done in the deploy script now, we explicitly remove the image tag before pull.
2020-09-02 09:33:53 +02:00
jekkos
22324471e7 Use force flag with docker tag and push (#2907) 2020-09-01 17:40:57 +02:00
jekkos
5a638aa11c Remove dist and group tag from .travis.yml 2020-09-01 17:25:51 +02:00
FrancescoUK
f59bffd063 Merge pull request #2939 from jerry2714/fix_lets_encrypt_fail
fix Let's Encrypt fail on host install using docker
2020-09-01 15:56:03 +01:00
Jerry Hsu
24687756c1 fix Let's Encrypt fail on host install using docker
nginx container keep crashing while installing due to
wrong configuration file and ssl_certificate path mismatch.

- replace ssl_certificate path to match custom domain
- use correct URL to download files from certbot repo
2020-09-01 21:43:55 +08:00
jekkos-t520
b4fadbf84f Add quote year count to token list (#2886) 2020-08-24 13:21:40 +02:00
jekkos-t520
7873110fc5 Code style remarks (#2886) 2020-08-24 13:21:40 +02:00
Jeroen Peelaerts
46d957f5b4 Quote improvements 2020-08-24 13:21:40 +02:00
jekkos-t520
458856668d Fix farsi language bug (#2926) 2020-08-22 00:36:31 +02:00
odiea
98bd5ed09c Merge pull request #2931 from opensourcepos/fix_tax_basis
Fixes #2920 issue
2020-08-21 10:15:50 -06:00
SteveIreland
8b22b1d733 Fixes #2920 issue with computing item tax basis with base non-include taxes not factoring including discounts. 2020-08-20 22:03:59 -04:00
objecttothis
b9727d72d7 Allow ON DELETE CASCADE for receiving_id foreign key in links table 2020-08-19 23:01:30 +02:00
FrancescoUK
3e4e6af726 Merge pull request #2926 from Ali-Rnik/i18n-farsi-add
Add Farsi language
2020-08-19 21:43:29 +01:00
Ali R. Nik
4aabbaadaf solved syntax error 2020-08-18 22:01:24 +04:30
Ali R. Nik
a009f1719a add farsi language 2020-08-18 16:53:34 +04:30
jekkos-t520
cb67b53913 Update risky permission language (#2885) 2020-07-30 00:13:42 +02:00
objecttothis
d31307f8f7 Merge pull request #2910 from opensourcepos/remove_colon_limitation
Modify input validator
2020-07-29 22:31:47 +04:00
objecttothis
18bdb5d854 Modify input validator
- Matched the allowed inputs to what is found in the validator for the
Attribute form (/views/attributes/form.php) for consistency.
- Removed the restriction on colon and added the restriction on
underscore.
- Modified the language line to indicate correct error.
2020-07-28 16:58:43 +04:00
objecttothis
27e297540e Merge pull request #2909 from opensourcepos/objecttothis-patch-1
Update INSTALL.md
2020-07-28 16:35:54 +04:00
objecttothis
88033799a0 Update INSTALL.md
Added support for PHP 7.4
2020-07-28 15:31:04 +04:00
jekkos-t520
d9ec9ce772 Add danish, hebrew, armenian as languages 2020-07-28 00:29:25 +02:00
Weblate
b680bea331 Merge branch 'origin/master' into Weblate 2020-07-27 09:28:05 +02:00
Emin Tufan Çetin
9116dc1920 Translated using Weblate (Turkish)
Currently translated at 100.0% (297 of 297 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/tr/
2020-07-27 09:28:00 +02:00
jekkos-t520
088f175fd6 Fix escape issue in german 2020-07-26 23:55:55 +02:00
jekkos-t520
8f3d960817 Only check read permissions on import_customers (#2885) 2020-07-26 23:45:29 +02:00
jekkos-t520
33734a27ce Sync translations files 2020-07-26 23:42:42 +02:00
jekkos-t520
dbcf980a2a Relax required permissions for import_customers (#2885) 2020-07-25 11:14:39 +02:00
jekkos-t520
e0709fcebb Update system_info.php (#2885) 2020-07-25 11:14:39 +02:00
Emin Tufan Çetin
b54adc09ad Translated using Weblate (Turkish)
Currently translated at 100.0% (177 of 177 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/tr/
2020-07-24 23:46:00 +02:00
khao_lek
33f87aeff1 Translated using Weblate (Thai)
Currently translated at 100.0% (177 of 177 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/th/
2020-07-24 23:46:00 +02:00
khao_lek
ceb6ba49b2 Translated using Weblate (Thai)
Currently translated at 100.0% (29 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/th/
2020-07-24 23:46:00 +02:00
jekkos-t520
4d0b23cd23 Update permissions on application/logs (#2885) 2020-07-22 22:04:35 +02:00
jekkos
9cc38765c3 Update system_info.php (#2885)
@WebShells for you to review, but I think that removing that code will fix #2860
2020-07-21 23:20:52 +03:00
jekkos
b65f68b677 Update README.md 2020-07-15 11:43:15 +02:00
jekkos
702c1dc4df Update README.md 2020-07-15 10:54:34 +02:00
khao_lek
7040f80b7f Translated using Weblate (Thai)
Currently translated at 100.0% (78 of 78 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/th/
2020-07-14 19:28:58 +02:00
nicmorais
d925388424 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (78 of 78 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/pt_BR/
2020-07-14 19:28:58 +02:00
khao_lek
6c35f4bce0 Translated using Weblate (Thai)
Currently translated at 100.0% (177 of 177 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/th/
2020-07-14 19:28:58 +02:00
khao_lek
dd7f8bb508 Translated using Weblate (Thai)
Currently translated at 100.0% (128 of 128 strings)

Translation: ospos/reports
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/reports/th/
2020-07-14 19:28:58 +02:00
khao_lek
0ac0d1d06c Translated using Weblate (Thai)
Currently translated at 100.0% (52 of 52 strings)

Translation: ospos/receivings
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/receivings/th/
2020-07-14 19:28:58 +02:00
khao_lek
5ffd536d4c Translated using Weblate (Thai)
Currently translated at 100.0% (39 of 39 strings)

Translation: ospos/module
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/module/th/
2020-07-14 19:28:58 +02:00
khao_lek
2f71a6c6bb Translated using Weblate (Thai)
Currently translated at 100.0% (12 of 12 strings)

Translation: ospos/messages
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/messages/th/
2020-07-14 19:28:58 +02:00
khao_lek
e8a15ebd37 Translated using Weblate (Thai)
Currently translated at 100.0% (109 of 109 strings)

Translation: ospos/items
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/items/th/
2020-07-14 19:28:58 +02:00
khao_lek
8d88e23ab9 Translated using Weblate (Thai)
Currently translated at 100.0% (68 of 68 strings)

Translation: ospos/giftcards
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/giftcards/th/
2020-07-14 19:28:58 +02:00
khao_lek
b07b17f1c7 Translated using Weblate (Thai)
Currently translated at 100.0% (19 of 19 strings)

Translation: ospos/expenses_categories
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/expenses_categories/th/
2020-07-14 19:28:58 +02:00
khao_lek
ea8b9b4d10 Translated using Weblate (Thai)
Currently translated at 100.0% (44 of 44 strings)

Translation: ospos/expenses
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/expenses/th/
2020-07-14 19:28:58 +02:00
khao_lek
b3d7b8d2f7 Translated using Weblate (Thai)
Currently translated at 100.0% (7 of 7 strings)

Translation: ospos/enum
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/enum/th/
2020-07-14 19:28:58 +02:00
Emin Tufan Çetin
cf2f29d91b Translated using Weblate (Turkish)
Currently translated at 100.0% (295 of 295 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/tr/
2020-07-14 19:28:58 +02:00
khao_lek
5514cbea79 Translated using Weblate (Thai)
Currently translated at 100.0% (295 of 295 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/th/
2020-07-14 19:28:58 +02:00
nicmorais
5e9e09a227 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (295 of 295 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/pt_BR/
2020-07-14 19:28:58 +02:00
khao_lek
27659f8098 Translated using Weblate (Thai)
Currently translated at 100.0% (29 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/th/
2020-07-14 19:28:58 +02:00
Emin Tufan Çetin
aed4163c51 Translated using Weblate (Turkish)
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/tr/
2020-07-14 19:28:58 +02:00
khao_lek
09e3e56245 Translated using Weblate (Thai)
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/th/
2020-07-14 19:28:58 +02:00
nicmorais
edf2258463 Translated using Weblate (Portuguese (Brazil))
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/pt_BR/
2020-07-14 19:28:58 +02:00
jekkos-t520
0cb20b6384 Clear work order number during clear_all (#2820) 2020-07-05 23:13:36 +02:00
jekkos-t520
10bc0b5720 Fix custom invoice number (#2820) 2020-07-05 23:13:36 +02:00
Weblate
7704d5ec6f Merge branch 'origin/master' into Weblate 2020-07-01 11:18:43 +02:00
Jose Cruz Moreira Galvan
b08f087306 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (78 of 78 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/es_MX/
2020-07-01 11:18:40 +02:00
Jose Cruz Moreira Galvan
0484cdd7d6 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (177 of 177 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/es_MX/
2020-07-01 11:18:27 +02:00
Antonio Morales
e7deac8a00 Translated using Weblate (Spanish (Mexico))
Currently translated at 52.9% (36 of 68 strings)

Translation: ospos/giftcards
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/giftcards/es_MX/
2020-07-01 11:18:14 +02:00
Jose Cruz Moreira Galvan
d0e44a2fc5 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (292 of 292 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/es_MX/
2020-07-01 11:17:58 +02:00
SteveIreland
b7fcc94eb0 Fixes #2872 SQL Error in Sale.php 2020-07-01 08:58:04 +02:00
objecttothis
a11f25e983 Update Item.php
Set group_concat_max_len session variable to prevent count totals at the bottom of the tables becoming `1 to null of null items` when database includes significant number of item rows.
2020-06-29 11:23:10 +02:00
objecttothis
85fea45def Merge pull request #2780 from opensourcepos/fix-included-destination-tax
Fix included destination tax
2020-06-29 09:25:06 +04:00
SteveIreland
6d91ae3845 Fix included destination tax 2020-06-28 18:12:46 -04:00
FrancescoUK
be44fb2aa7 Merge pull request #2870 from opensourcepos/fix-invoice-field
Fix invoice field visibility (#2820)
2020-06-27 19:02:26 +01:00
Jeroen Peelaerts
fa15b1e94b Fix invoice field visibility (#2820) 2020-06-27 17:36:17 +02:00
objecttothis
535df2b706 Merge pull request #2840 from opensourcepos/System-Info
Minor Changes & Footer Update
2020-06-27 15:27:23 +04:00
objecttothis
5fa4e18eb7 Update common_lang.php
Changes to British English at @daN4cat request.
2020-06-27 15:08:43 +04:00
objecttothis
581ca8745a Update common_lang.php
Inserting inline variable and resorted variables for ease of finding.
2020-06-27 14:57:25 +04:00
objecttothis
687ae74a62 Update footer.php
replaced " with ' to prevent the string from being parsed for variables unnecessarily.
2020-06-27 14:54:39 +04:00
objecttothis
f3ee3d7dbd Update footer.php
Corrected code to send the ending year to the language line for RTL languages to juggle.
2020-06-27 14:53:28 +04:00
Emin Tufan Çetin
fb0cee0e74 Translated using Weblate (Turkish)
Currently translated at 100.0% (292 of 292 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/tr/
2020-06-17 20:41:36 +02:00
jekkos
1bd9501e76 Translated using Weblate (Flemish)
Currently translated at 93.1% (27 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/nl_BE/
2020-06-09 14:33:53 +02:00
Weblate
3fa55b2ff4 Merge branch 'origin/master' into Weblate 2020-06-09 14:19:16 +02:00
Corvin
633a888ae4 Translated using Weblate (Hungarian)
Currently translated at 29.5% (13 of 44 strings)

Translation: ospos/expenses
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/expenses/hu/
2020-06-09 14:19:15 +02:00
Emin Tufan Çetin
12125dfbd7 Translated using Weblate (Turkish)
Currently translated at 100.0% (291 of 291 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/tr/
2020-06-09 14:18:59 +02:00
Andrés Sánchez
06aa032d45 Translated using Weblate (Spanish)
Currently translated at 100.0% (291 of 291 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/es/
2020-06-09 14:18:52 +02:00
mazbrili
46f0af4d48 Translated using Weblate (Indonesian)
Currently translated at 100.0% (291 of 291 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/id/
2020-06-09 14:18:44 +02:00
Corvin
70857ba358 Translated using Weblate (Hungarian)
Currently translated at 27.7% (10 of 36 strings)

Translation: ospos/cashups
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/cashups/hu/
2020-06-09 14:18:29 +02:00
jekkos
5cf0d5faeb Added translation using Weblate (Armenian) 2020-06-09 14:18:13 +02:00
FrancescoUK
d6df082d32 Merge pull request #2852 from opensourcepos/constant_location_patch
Update constants.php
2020-06-04 09:16:10 +01:00
objecttothis
2cd90ccb17 Update constants.php
Correcting missing '
2020-06-04 11:11:50 +04:00
objecttothis
63ea90f537 Merge pull request #2849 from opensourcepos/constant_location_patch
Change the locations of global constants to make them global across files
2020-06-03 22:01:41 +04:00
objecttothis
a3fb05b566 Change the locations of global constants to make them global across
files

- Items Constants
- Attributes Constants
- Sale Constants
2020-06-03 14:15:05 +04:00
WebShells
8fc27d88e0 Colors for User Setup section
Colors for User Setup section
2020-05-27 10:16:46 +03:00
WebShells
b2bb4d8b62 PHP Declaration 2020-05-27 10:10:52 +03:00
WebShells
2fd50471de Footer in License Section 2020-05-27 09:24:49 +03:00
WebShells
ecff38d5bb Language Updates 2020-05-27 09:06:42 +03:00
WebShells
026114457b Minor Changes & Footer Update
Added timezone checkup to system info

1st Case:
Timezones are the same ( no warning )
2nd Case:
Difference in timezones: Warning will be displayed.

Simplifying OSPOS footer and replacing git project link by OSPOS website.
2020-05-27 08:56:51 +03:00
objecttothis
d5659b5131 Merge pull request #2816 from opensourcepos/category_as_dropdown
Category as dropdown
2020-05-20 14:08:32 +04:00
objecttothis
979ec9fe02 Merge branch 'master' into category_as_dropdown 2020-05-20 13:55:41 +04:00
objecttothis
89a56820d2 Formatting Corrections 2020-05-20 13:52:54 +04:00
objecttothis
145f49d247 Code Review Changes
- Refactored code to include constants
- Fixed comment formatting issues
2020-05-20 13:48:24 +04:00
objecttothis
a155399ec0 Merge branch 'master' into category_as_dropdown 2020-05-19 18:14:31 +04:00
objecttothis
f5424a3ed2 Create Global Constants to clarify code 2020-05-19 18:06:20 +04:00
objecttothis
35023e648f Force Travis-CI to rebuild to demo 2020-05-14 19:35:55 +04:00
jekkos
00020ba7dc Fix token_lib regresssion 2020-05-13 13:53:14 +02:00
jekkos-t520
3854587907 Fix default quantity #2829 2020-05-13 13:53:14 +02:00
objecttothis
ba6826a31e Merge pull request #2824 from opensourcepos/custom_image_upload_restrictions
Custom image upload restrictions
2020-05-08 23:59:22 +04:00
objecttothis
a154a8705c Fixed indentation issue
Fixed indentation issue
2020-05-08 23:58:40 +04:00
WShells
e6dad3eb81 Updating System Info Section (#2805)
* Updating Permissions Checkup & Fixed Clipboard issue on Mozilla and Other Browsers

* Re-ordering Tabs & Minor Changes

- Re-ordering Configuration Tabs, Merging Configuration/Settings tabs under Setup & Conf
- Minor Changes to Setup & Conf
- Translations Added

* Indent

* Minor Changes

* Dir Fix 

* Fixing Listing Sign

* Fixing Listing Sign in Warning messages
2020-05-08 20:14:48 +03:00
objecttothis
b3b7b227a9 Fixed problem with Images not deleting 2020-05-08 16:52:35 +04:00
objecttothis
f4a941e209 Removed duplicate variable 2020-05-08 16:08:49 +04:00
objecttothis
75f45bdb47 Corrected variable names 2020-05-08 16:04:37 +04:00
objecttothis
8a9edb8963 Removing variable not yet merged into the master from another PR 2020-05-08 16:02:02 +04:00
WShells
6f78672f82 Avatar Permissions
Editing Avatar file permissions to display 750 in place of 755 as our security check is set.
2020-05-08 14:59:42 +03:00
objecttothis
68a2489e13 Add Save logic
- Corrected minimum image size value in migration script
- Added save logic to save_general() in Config controller
- Added logic in the index() of the Config controller to properly prep
allowed_image_types data
2020-05-08 15:58:37 +04:00
objecttothis
9b18072f1e migration corrections 2020-05-08 14:23:12 +04:00
objecttothis
59142d9f69 Database logic additions
- Migration script to create default values
- Corrected naming of variables in general_config.php
- Replaced hardcoded values with db variables
2020-05-08 14:22:49 +04:00
objecttothis
a79e9dd4cb Changes to allow custom image restrictions in view.
- Added the fields to the general config view.
- Added Language lines to en_US and en_GB
- Corrected formatting of Columns in search suggestion layout
2020-05-08 13:15:13 +04:00
WShells
6eb5ed9381 Fixing TR Issues
Fixing TR Issues
2020-05-07 17:57:09 +03:00
Pete Ongsuwan
bfa42dba4a Translated using Weblate (Thai)
Currently translated at 92.8% (259 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/th/
2020-05-07 08:36:24 +02:00
Pete Ongsuwan
54d07e9063 Translated using Weblate (Thai)
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/th/
2020-05-07 08:36:09 +02:00
Robby Triadi Susanto
e830595f43 Translated using Weblate (Indonesian)
Currently translated at 100.0% (78 of 78 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/id/
2020-05-05 17:47:31 +02:00
Pete Ongsuwan
79632731f8 Translated using Weblate (Thai)
Currently translated at 100.0% (21 of 21 strings)

Translation: ospos/suppliers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/suppliers/th/
2020-05-05 17:47:31 +02:00
Robby Triadi Susanto
5ed8384d45 Translated using Weblate (Indonesian)
Currently translated at 100.0% (177 of 177 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/id/
2020-05-05 17:47:31 +02:00
Pete Ongsuwan
307407d732 Translated using Weblate (Thai)
Currently translated at 100.0% (109 of 109 strings)

Translation: ospos/items
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/items/th/
2020-05-05 17:47:31 +02:00
khao_lek
a0b885d5ca Translated using Weblate (Thai)
Currently translated at 98.5% (67 of 68 strings)

Translation: ospos/giftcards
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/giftcards/th/
2020-05-05 17:47:31 +02:00
Pete Ongsuwan
5bf2f2ec43 Translated using Weblate (Thai)
Currently translated at 86.7% (242 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/th/
2020-05-05 17:47:31 +02:00
Pete Ongsuwan
a5f9185308 Translated using Weblate (Thai)
Currently translated at 100.0% (36 of 36 strings)

Translation: ospos/cashups
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/cashups/th/
2020-05-05 17:47:31 +02:00
Pete Ongsuwan
c9535653c9 Translated using Weblate (Thai)
Currently translated at 100.0% (8 of 8 strings)

Translation: ospos/bootstrap_tables
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/bootstrap_tables/th/
2020-05-05 17:47:31 +02:00
Pete Ongsuwan
249aa091fd Translated using Weblate (Thai)
Currently translated at 100.0% (29 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/th/
2020-05-05 17:47:31 +02:00
Pete Ongsuwan
569e09e741 Translated using Weblate (Thai)
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/th/
2020-05-05 17:47:31 +02:00
objecttothis
5a58af7a01 Removing LEFT JOIN of supplier table
per #2788 the Supplier table results from Item->get_all() and Item->get_info() are not used anywhere and causing a bug where the duplicate fields between the items table and the suppliers table (deleted and category) are returning just one value to the results.  This creates the undesired effect of expecting items.deleted and items.category but getting values from suppliers.deleted and suppliers.category.
2020-05-05 15:01:32 +02:00
objecttothis
9557f1c310 Forgotten commit
- This was correct in my code base.  I just forgot to commit it.
2020-05-05 14:47:42 +04:00
objecttothis
ee860e3b71 Disable fields on category_dropdown attribute view
- These changes prevent the type of attribute to be changed from
dropdown for categories as dropdown.
2020-05-05 14:06:11 +04:00
objecttothis
1dc3e15a55 Implement dropdown into item form view
- Created business logic in view to show dropdown if enabled
- Created business logic in controller to calculate key/value pairs of
dropdown
- Adjusted attribute model get_definition values to send values also if
definition_id is -1 or > 0 but not 0 which is what we are now using as
no definition instead of -1
2020-05-05 11:59:03 +04:00
objecttothis
d5d6d6668c Corrected errors 2020-05-04 17:19:03 +04:00
objecttothis
0051fa87ec Corrected errors 2020-05-04 17:18:48 +04:00
objecttothis
15a987cfd9 Adjust functions related to attributes 2020-05-04 17:00:02 +04:00
objecttothis
96bfa330ba Added the creation and removal of ospos_category attribute
- Added undelete function in Attribute model which could be useful for
adding the ability to restore attributes once deleted.
- Added business logic to Config controller save_general to
create/remove the attribute when the box is checked or unchecked.
2020-05-04 16:45:58 +04:00
objecttothis
231fe483d9 Add Config to enable show Category as dropdown
- Added the config item and label to view.
- Added the language line in en_US and en_GB.
- Added save business to Config controller.
- Fixed formatting issues in Config controller (removed tabs on blank
lines)
2020-05-04 15:23:50 +04:00
jekkos-t520
431074af58 Fix token lib test 2020-05-02 18:06:28 +02:00
objecttothis
06d73959af Merge pull request #2814 from opensourcepos/attr-dropdown-sort-patch
Added ORDER BY to sort various dropdowns
2020-05-01 17:54:01 +04:00
objecttothis
06eebc2ad3 Make DROPDOWN values sorted by alphabet. 2020-05-01 17:51:13 +04:00
objecttothis
42f8d71404 Added ORDER BY to sort various dropdowns
This sorts alphabetically:
- Attributes on the Attribute->Item view
- Dropdowns for adding attributes in the Attribute->Item view
- Dropdowns for the attribute values themselves.
2020-04-30 17:12:59 +04:00
Pete Ongsuwan
9b4621d3b8 Translated using Weblate (Thai)
Currently translated at 74.9% (209 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/th/
2020-04-29 12:39:02 +02:00
khao_lek
6b830d7acd Translated using Weblate (Thai)
Currently translated at 74.9% (209 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/th/
2020-04-29 12:38:56 +02:00
jekkos-t520
99fb55051a Divide quantity and price according to configured precision 2020-04-23 22:50:41 +02:00
jekkos-t520
6bd0d6277b Move parsing to token_lib 2020-04-23 22:50:41 +02:00
FrancescoUK
494b112424 Merge pull request #2806 from opensourcepos/values-keyword-patch-checkbox
Values is a mysql keyword
2020-04-22 18:55:59 +01:00
objecttothis
b0ba354b31 Values is a mysql keyword
Corrected the name of the alias from values to vals to prevent DB errors on conversion from DROPDOWN to CHECKBOX.
2020-04-22 13:37:31 +04:00
Weblate
e27c703026 Merge branch 'origin/master' into Weblate 2020-04-20 15:41:42 +02:00
khao_lek
822cd9f4ce Translated using Weblate (Thai)
Currently translated at 80.7% (42 of 52 strings)

Translation: ospos/receivings
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/receivings/th/
2020-04-20 15:41:41 +02:00
Emil Ebsen
a964c9b7d0 Added translation using Weblate (Danish) 2020-04-20 15:41:24 +02:00
WShells
7e49a7b82a Indent... 2020-04-18 05:56:44 +03:00
WShells
5fe3b2ff00 Updating Dir/File Location 2020-04-18 05:48:50 +03:00
WShells
c1b2e0cec6 Clipboard.js 2020-04-18 05:47:51 +03:00
WShells
11f2f1eafa Updating Copy to Clipboard
Updating Copy to Clipboard Function Supporting Mozilla Firefox Again
2020-04-18 05:46:18 +03:00
FrancescoUK
60d2dfcf1e Merge pull request #2791 from blutme/patch-1
loginButton Update login.php
2020-04-13 06:20:15 +01:00
blutme
64b2843cf6 loginButton Update login.php
the "loginButton" valule had no translation when changing languages.
2020-04-12 18:27:08 -05:00
Weblate
d716cf9a48 Merge branch 'origin/master' into Weblate 2020-04-10 19:00:22 +02:00
Emil Ebsen
01bb4e1b7a Added translation using Weblate (Danish) 2020-04-10 19:00:18 +02:00
WShells
3572ed1f86 Adding Andriux
...
2020-04-10 05:27:02 +03:00
objecttothis
66d426a1b6 Merge pull request #2739 from opensourcepos/pos_bool
Implement CHECKBOX attribute type
2020-04-08 15:37:12 +04:00
Weblate
62946906d8 Merge branch 'origin/master' into Weblate 2020-04-07 10:28:36 +02:00
Emil Ebsen
20e0eae9bd Translated using Weblate (Danish)
Currently translated at 99.6% (278 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/da/
2020-04-07 10:28:35 +02:00
Emil Ebsen
cf4a794c51 Translated using Weblate (Danish)
Currently translated at 97.2% (35 of 36 strings)

Translation: ospos/cashups
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/cashups/da/
2020-04-07 10:28:16 +02:00
JOHN PAPOULAKOS
748c48b43f Translated using Weblate (Greek)
Currently translated at 65.5% (19 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/el/
2020-04-07 10:28:01 +02:00
Emil Ebsen
03f2a0a921 Translated using Weblate (Danish)
Currently translated at 95.5% (64 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/da/
2020-04-07 10:27:46 +02:00
Emil Ebsen
d2409bf952 Added translation using Weblate (Danish) 2020-04-07 10:27:31 +02:00
jekkos-t520
783de92707 Revert migration version 2020-04-06 21:19:37 +02:00
jekkos-t520
5db1c7a813 Make migration logging more verbose 2020-04-04 17:03:21 +02:00
Emil Ebsen
5720f2b893 Added translation using Weblate (Danish) 2020-04-01 22:59:18 +02:00
Emil Ebsen
5286f80748 Added translation using Weblate (Danish) 2020-04-01 17:51:04 +02:00
Emil Ebsen
8a19bf3f4a Added translation using Weblate (Danish) 2020-03-31 19:41:34 +02:00
Emil Ebsen
c2a13fce9c Added translation using Weblate (Danish) 2020-03-28 17:11:15 +01:00
Emil Ebsen
b1973f26c9 Added translation using Weblate (Danish) 2020-03-27 14:46:13 +01:00
objecttothis
b5265870be More descriptive alias 2020-03-24 14:21:57 +04:00
objecttothis
4584b7eace Final indentation and formatting fixes 2020-03-24 14:17:36 +04:00
objecttothis
8a0c88b11c More indentation corrections 2020-03-24 14:13:08 +04:00
objecttothis
3281fc9bb0 Correct indentation problems 2020-03-24 14:04:04 +04:00
objecttothis
971ae5ec19 Correcting indentation problems 2020-03-24 13:18:35 +04:00
objecttothis
fb9fec1a10 Merge branch 'master' into pos_bool 2020-03-18 16:19:45 +04:00
objecttothis
c4c475b51f Updated CSV import to handle checkboxes
0, FALSE values create attributes marked as "unchecked"
NULL, "" and spaces do not create an attribute
1, TRUE and ANY other value creates an attribute and marks as checked.

Blank lines in CSV files are skipped with no error.
2020-03-18 15:49:49 +04:00
Emil Ebsen
e7ec8aa49f Added translation using Weblate (Danish) 2020-03-16 13:56:49 +01:00
Weblate
1be27549df Merge branch 'origin/master' into Weblate 2020-03-16 13:35:34 +01:00
khao_lek
8e979deb99 Translated using Weblate (Thai)
Currently translated at 68.4% (191 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/th/
2020-03-16 13:35:33 +01:00
Emil Ebsen
5ba9746264 Translated using Weblate (Danish)
Currently translated at 50.0% (18 of 36 strings)

Translation: ospos/cashups
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/cashups/da/
2020-03-16 13:35:20 +01:00
Emil Ebsen
20e4040d02 Added translation using Weblate (Danish) 2020-03-16 13:35:03 +01:00
FrancescoUK
425bee0ba1 Merge pull request #2764 from opensourcepos/fix-attribute-search
Fix attribute search (#2723)
2020-03-14 07:22:04 +00:00
FrancescoUK
5fe7186571 Merge pull request #2763 from opensourcepos/currency-format-test
Add unit test for locale_helper (#2748)
2020-03-14 07:20:59 +00:00
FrancescoUK
3382610871 Merge pull request #2760 from opensourcepos/attribute-colon-patch
Removing the restriction for colons in the name
2020-03-14 07:18:44 +00:00
jekkos-t520
0f2bafc7dd Fix attribute search (#2723) 2020-03-14 01:44:08 +01:00
jekkos-t520
ea85a85518 Add unit test for locale_helper (#2748) 2020-03-13 23:12:56 +01:00
jekkos
531035fef2 Update invalid chars 2020-03-13 22:41:42 +01:00
FrancescoUK
1d39ec3aa5 Merge pull request #2762 from opensourcepos/amp-attribute-bug-patch
Correct a bug causing & to break in POST
2020-03-13 18:11:24 +00:00
objecttothis
ecb21d2d5e Same correction for removing attribute value 2020-03-13 16:38:18 +04:00
objecttothis
a2a5db8901 Correct a bug causing & to break in POST
See #2758 for details
2020-03-13 16:32:39 +04:00
objecttothis
04ade7ab0b Removing the restriction for colons in the name
Please see #2665
2020-03-13 13:22:23 +04:00
Weblate
e579029ded Merge branch 'origin/master' into Weblate 2020-03-11 17:26:52 +01:00
Emil Ebsen
be06cec80d Translated using Weblate (Danish)
Currently translated at 100.0% (8 of 8 strings)

Translation: ospos/bootstrap_tables
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/bootstrap_tables/da/
2020-03-11 17:26:50 +01:00
Emil Ebsen
ba1ef472e6 Added translation using Weblate (Danish) 2020-03-11 17:26:34 +01:00
jekkos-t520
45894857a6 Fix tests 2020-03-11 00:46:46 +01:00
jekkos-t520
4f60465fa0 Revert barcode rework 2020-03-11 00:15:37 +01:00
objecttothis
cefd287668 Resolve bug not updating attributes correctly
Prior to this fix, if the attribute was of DECIMAL or DATE type and the action was an UPDATE, then it would try to update the attribute_value, not the corresponding attribute_decimal or attribute_date.
2020-03-10 09:21:09 +01:00
Weblate
009905e405 Merge branch 'origin/master' into Weblate 2020-03-09 22:48:34 +01:00
Emin Tufan Çetin
bc38e94f42 Translated using Weblate (Turkish)
Currently translated at 100.0% (78 of 78 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/tr/
2020-03-09 22:48:34 +01:00
Johntini
ff8625fbe7 Translated using Weblate (Spanish)
Currently translated at 100.0% (78 of 78 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/es/
2020-03-09 22:48:20 +01:00
Qbin
a5440f0443 Translated using Weblate (Chinese (Simplified))
Currently translated at 42.3% (33 of 78 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/zh_Hans/
2020-03-09 22:48:06 +01:00
khao_lek
5692ae4902 Translated using Weblate (Thai)
Currently translated at 84.1% (149 of 177 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/th/
2020-03-09 22:47:43 +01:00
Johntini
1cf5cbadd0 Translated using Weblate (Spanish)
Currently translated at 100.0% (177 of 177 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/es/
2020-03-09 22:47:35 +01:00
Qbin
82351243f9 Translated using Weblate (Chinese (Simplified))
Currently translated at 98.0% (51 of 52 strings)

Translation: ospos/receivings
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/receivings/zh_Hans/
2020-03-09 22:47:20 +01:00
Qbin
d47e687337 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (8 of 8 strings)

Translation: ospos/login
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/login/zh_Hans/
2020-03-09 22:47:04 +01:00
khao_lek
3700674045 Translated using Weblate (Thai)
Currently translated at 100.0% (35 of 35 strings)

Translation: ospos/employees
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/employees/th/
2020-03-09 22:46:50 +01:00
Johntini
b646e78ba6 Translated using Weblate (Spanish)
Currently translated at 100.0% (278 of 278 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/es/
2020-03-09 22:46:35 +01:00
Emil Ebsen
b1cb951a9e Translated using Weblate (Danish)
Currently translated at 100.0% (29 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/da/
2020-03-09 22:46:21 +01:00
Jintao-Yao
f30e085d78 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (29 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/zh_Hans/
2020-03-09 22:46:13 +01:00
khao_lek
91c6508317 Translated using Weblate (Thai)
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/th/
2020-03-09 22:46:00 +01:00
Qbin
d341f1987a Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/zh_Hans/
2020-03-09 22:45:52 +01:00
Emil Ebsen
34b7e68f04 Added translation using Weblate (Danish) 2020-03-09 22:45:33 +01:00
jekkos-t520
858320fe20 Disable attribute sort (#2722) 2020-03-09 19:54:14 +01:00
jekkos-t520
4300f0a3c6 Rework barcode format parser 2020-03-08 20:15:22 +01:00
jekkos-t520
7c33159a38 Fix config.php in testing mode 2020-03-07 15:21:45 +01:00
jekkos-t520
9583483543 Update after_success line 2020-03-07 12:59:07 +01:00
jekkos
ba19bc5ad6 Update INSTALL.md 2020-03-07 12:51:28 +01:00
jekkos
a9b63fa360 Update INSTALL.md 2020-03-07 12:50:07 +01:00
jekkos-t520
dbe525a724 Run regular container build before push 2020-03-07 00:13:41 +01:00
jekkos-t520
7a1891e5e8 Try to fix docker push (#2751) 2020-03-06 23:52:48 +01:00
jekkos-t520
c6048c8461 Set global variables in .travis.env 2020-03-06 23:36:01 +01:00
jekkos-t520
1c76edfc01 Fix config.php (#2751) 2020-03-06 23:22:34 +01:00
jekkos-t520
eae2dd483b Remove hebrew (no more official CI support) 2020-03-06 23:00:46 +01:00
jekkos-t520
a8d0a376f3 Remove failing test + fetch script from github 2020-03-06 21:32:51 +01:00
jekkos-t520
be2ff4bee4 Don't expose port + set mysql hostname 2020-03-06 21:32:51 +01:00
jekkos-t520
609cb14cda Upgrade compose version 2020-03-06 21:32:51 +01:00
jekkos-t520
2d57326779 Run tests using travis-CI 2020-03-06 21:32:51 +01:00
jekkos-t520
2eec0ae6f0 Fix unit test 2020-03-06 21:32:51 +01:00
jekkos-t520
99bd6570b9 Load testing dotenv if environment is set 2020-03-06 21:32:51 +01:00
jekkos-t520
2110692664 Overwrite backupGlobals + base_url generation in testing mode 2020-03-06 21:32:51 +01:00
jekkos-t520
bc4a5570a5 Disable globals + fixup base_url 2020-03-06 21:32:51 +01:00
jekkos-t520
d8f784c3f0 Align mariadb versions for compose files 2020-03-06 21:32:51 +01:00
jekkos-t520
7d94ba7817 Make multistage docker build 2020-03-06 21:32:51 +01:00
FrancescoUK
f3e87d3c3c Revert change causing issues with Detailed Transactions 2020-03-06 19:56:48 +00:00
Weblate
f4487947c5 Merge branch 'origin/master' into Weblate 2020-03-02 22:10:46 +01:00
Qbin
72915d84ef Translated using Weblate (Chinese (Simplified))
Currently translated at 66.1% (117 of 177 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/zh_Hans/
2020-03-02 22:10:45 +01:00
Qbin
62eae20cfa Translated using Weblate (Chinese (Simplified))
Currently translated at 55.7% (29 of 52 strings)

Translation: ospos/customers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/customers/zh_Hans/
2020-03-02 22:10:19 +01:00
Thomas Arleth Pedersen
3e698f96dc Added translation using Weblate (Danish) 2020-03-02 22:09:56 +01:00
objecttothis
ea7cb48f1c CHECKBOX Attribute type
Conversion from DROPDOWN or TEXT logic
2020-03-02 14:17:48 +04:00
FrancescoUK
cdaf88ef28 Fix Employee autocomplete bug (#2736) 2020-03-01 17:34:39 +00:00
jekkos
822b7211ec Install dev dependencies again 2020-02-28 15:36:23 +01:00
objecttothis
d7a59221fc Fix problem with unchecked attributes
Previously, if the attribute was unchecked, the form wouldn't submit the
attribute and the model/controller would delete the attribute_link from
the item.  A hidden input type with value 0 occuring before the checkbox
fixes this problem.
2020-02-27 12:24:04 +04:00
jekkos-t520
b8174a85ee Move dotenv to depdencies (#2737) 2020-02-26 23:41:33 +01:00
jekkos-t520
519242aead Set copy permissions to 775 2020-02-25 22:39:17 +01:00
objecttothis
ff79b73e34 Implement CHECKBOX attribute type
Attribute Configuration view
Attributes section of item management view
Attributes section of CSV item import
2020-02-25 15:44:49 +04:00
Weblate
c8b49de7d1 Merge branch 'origin/master' into Weblate 2020-02-24 22:26:53 +01:00
Emin Tufan Çetin
cd9e05dac1 Translated using Weblate (Turkish)
Currently translated at 100.0% (177 of 177 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/tr/
2020-02-24 22:26:52 +01:00
Fredrik Angell Moe
1488453ffa Added translation using Weblate (Norwegian Bokmål) 2020-02-24 22:26:34 +01:00
FrancescoUK
c5838ba098 Merge pull request #2727 from opensourcepos/add_tax_group_constraint
Add tax group constraint
2020-02-23 17:51:39 +00:00
jekkos-t520
b88b60597b Disable tests in build 2020-02-22 01:14:32 +01:00
jekkos-t520
3ceb2569cf Use private docker buildbox 2020-02-22 01:08:30 +01:00
jekkos
556335918b Do not install dev dependencies 2020-02-21 22:41:02 +01:00
FrancescoUK
7145ad9eec Fix Travis composer docker error (#2729) 2020-02-18 21:03:06 +00:00
SteveIreland
57dc2d2b11 Add unique contraint to tax group 2020-02-16 21:08:58 -05:00
FrancescoUK
bf88927e66 Fix README sentence 2020-02-16 14:00:40 +00:00
FrancescoUK
efd53cbccf Add Employee name to suspended form (#2678) 2020-02-16 13:46:25 +00:00
FrancescoUK
e0620e1a3e Add more onClick select the text content 2020-02-15 22:44:03 +00:00
FrancescoUK
622fdc27aa Fix detailed reports error with attributes (#2721) 2020-02-15 22:01:51 +00:00
Emin Tufan Çetin
7a7d1ed44e Translated using Weblate (Turkish)
Currently translated at 100.0% (176 of 176 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/tr/
2020-02-15 01:18:50 +01:00
Josué Arreola
161bbb4e07 Translated using Weblate (Spanish (Mexico))
Currently translated at 98.8% (174 of 176 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/es_MX/
2020-02-15 01:18:50 +01:00
Josué Arreola
035f2b7982 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (19 of 19 strings)

Translation: ospos/expenses_categories
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/expenses_categories/es_MX/
2020-02-15 01:18:50 +01:00
Nguyen Tuan Anh
4234c4bc3a Translated using Weblate (Vietnamese)
Currently translated at 99.2% (277 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/vi/
2020-02-15 01:18:50 +01:00
jekkos
fa9f0ade55 Don't close bug tickets direclty 2020-02-15 01:04:00 +01:00
jekkos
0bbb6adaba Add stale bot configuration 2020-02-15 01:00:37 +01:00
FrancescoUK
8452959388 Merge pull request #2720 from opensourcepos/favicon.ico-correction-patch
uploaded the png when I should have uploaded the ico
2020-02-12 15:21:13 +00:00
objecttothis
d1ba4bc875 corrected favicon.ico 2020-02-12 18:03:17 +04:00
objecttothis
fbd895d67c uploaded the png when I should have uploaded the ico 2020-02-12 18:01:24 +04:00
FrancescoUK
ca2907d6a6 Merge pull request #2708 from opensourcepos/fix-inv-summary-regression
Fix inventory summary regression (#2702)
2020-02-05 20:54:41 +00:00
FrancescoUK
6b07d8ee21 Fix wrong tax amount with tax included 2020-02-04 21:25:37 +00:00
jekkos
8d97efd52d Fix inventory summary regression (#2702) 2020-02-04 18:07:52 +01:00
FrancescoUK
864b024f31 Merge pull request #2709 from opensourcepos/fix-location-permissions
Check if grant for module exists (#2702)
2020-01-31 06:12:20 +00:00
jekkos
8d6a23d0e7 Check if grant for module exists (#2702) 2020-01-30 08:56:39 +01:00
jekkos
4722a5600f Do not show deleted items in low inventory report (#2702) 2020-01-29 23:26:08 +01:00
FrancescoUK
aba9c2bc30 Fix Customer delete issue 2020-01-26 09:12:02 +00:00
FrancescoUK
dea21f6d38 Revert "set customer date to be the first sale one if time 0"
This reverts commit 3cb1bf6b87.
2020-01-25 23:27:22 +00:00
FrancescoUK
3cb1bf6b87 set customer date to be the first sale one if time 0 2020-01-25 23:22:06 +00:00
FrancescoUK
dfe66e8083 Fix Customer delete error 2020-01-25 21:11:30 +00:00
FrancescoUK
285b66406b Fix Sale_lib error with PHP 7.2 (#2648) 2020-01-25 20:57:43 +00:00
FrancescoUK
99d861535e Add allow sales change price permission (#2653) 2020-01-25 17:22:26 +00:00
FrancescoUK
ba40783017 Fix graphical payment report bug 2020-01-22 22:10:56 +00:00
FrancescoUK
c871c68aeb Fix payment dates not being set correctly 2020-01-19 23:02:26 +00:00
FrancescoUK
6e523a30ab Database migration minor fixes 2020-01-19 22:45:17 +00:00
FrancescoUK
7739994eda Minor indentation adjustment 2020-01-19 20:51:41 +00:00
FrancescoUK
5007410c1a Change Employee input type in Sales edit form 2020-01-19 20:32:57 +00:00
FrancescoUK
b4eabd2265 Fix missing cash refund in sale edit form 2020-01-19 18:24:11 +00:00
FrancescoUK
40d8ea0268 Replace serial number with item_number (barcode) in detailed reports 2020-01-18 15:32:12 +00:00
jekkos
0de4e51c41 Fix item bulk creation 2020-01-17 20:52:21 +01:00
Trần Ngọc Quân
6c6c18418e Translated using Weblate (Vietnamese)
Currently translated at 40.2% (31 of 77 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/vi/
2020-01-17 13:49:56 +01:00
Emin Tufan Çetin
2f245b0c73 Translated using Weblate (Turkish)
Currently translated at 100.0% (77 of 77 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/tr/
2020-01-17 13:49:48 +01:00
Trần Ngọc Quân
1337e88191 Translated using Weblate (Vietnamese)
Currently translated at 90.4% (19 of 21 strings)

Translation: ospos/suppliers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/suppliers/vi/
2020-01-17 13:49:33 +01:00
Trần Ngọc Quân
6ad6483e3a Translated using Weblate (Vietnamese)
Currently translated at 98.2% (172 of 175 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/vi/
2020-01-17 13:49:20 +01:00
Emin Tufan Çetin
afa13473ed Translated using Weblate (Turkish)
Currently translated at 100.0% (175 of 175 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/tr/
2020-01-17 13:49:12 +01:00
Trần Ngọc Quân
4e26567bee Translated using Weblate (Vietnamese)
Currently translated at 100.0% (52 of 52 strings)

Translation: ospos/receivings
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/receivings/vi/
2020-01-17 13:48:58 +01:00
Emin Tufan Çetin
d0ac084cac Translated using Weblate (Turkish)
Currently translated at 100.0% (52 of 52 strings)

Translation: ospos/receivings
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/receivings/tr/
2020-01-17 13:48:51 +01:00
Trần Ngọc Quân
bee6e4d2a9 Translated using Weblate (Vietnamese)
Currently translated at 94.8% (37 of 39 strings)

Translation: ospos/module
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/module/vi/
2020-01-17 13:48:36 +01:00
Emin Tufan Çetin
a6c76ae0e4 Translated using Weblate (Turkish)
Currently translated at 100.0% (39 of 39 strings)

Translation: ospos/module
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/module/tr/
2020-01-17 13:48:30 +01:00
Trần Ngọc Quân
bf0875be45 Translated using Weblate (Vietnamese)
Currently translated at 99.0% (108 of 109 strings)

Translation: ospos/items
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/items/vi/
2020-01-17 13:48:15 +01:00
Emin Tufan Çetin
74585ff97d Translated using Weblate (Turkish)
Currently translated at 100.0% (33 of 33 strings)

Translation: ospos/item_kits
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/item_kits/tr/
2020-01-17 13:48:01 +01:00
Trần Ngọc Quân
81ea7ab872 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (19 of 19 strings)

Translation: ospos/expenses_categories
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/expenses_categories/vi/
2020-01-17 13:47:46 +01:00
Trần Ngọc Quân
4b6fd69e3c Translated using Weblate (Vietnamese)
Currently translated at 100.0% (44 of 44 strings)

Translation: ospos/expenses
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/expenses/vi/
2020-01-17 13:47:31 +01:00
Trần Ngọc Quân
bc4266e9ab Translated using Weblate (Vietnamese)
Currently translated at 85.7% (6 of 7 strings)

Translation: ospos/enum
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/enum/vi/
2020-01-17 13:47:17 +01:00
Emin Tufan Çetin
d6147b4292 Translated using Weblate (Turkish)
Currently translated at 100.0% (7 of 7 strings)

Translation: ospos/enum
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/enum/tr/
2020-01-17 13:47:11 +01:00
Emin Tufan Çetin
84ef3e6c3d Translated using Weblate (Turkish)
Currently translated at 100.0% (279 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/tr/
2020-01-17 13:46:56 +01:00
jekkos
b4cde57036 Translated using Weblate (Flemish)
Currently translated at 100.0% (279 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/nl_BE/
2020-01-17 13:46:47 +01:00
Emin Tufan Çetin
4c3551909f Translated using Weblate (Turkish)
Currently translated at 100.0% (29 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/tr/
2020-01-17 13:46:34 +01:00
Trần Ngọc Quân
2075f3c717 Translated using Weblate (Vietnamese)
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/vi/
2020-01-17 13:46:18 +01:00
FrancescoUK
d08381850d Merge pull request #2668 from opensourcepos/fix-attr-default-date
Use today as default date in DATETIME attribute (#2666)
2020-01-12 22:13:59 +00:00
FrancescoUK
af2fd78348 Fix Graphical Summary Payment report 2020-01-12 20:28:55 +00:00
FrancescoUK
60b9069a60 Fix Inventory Summary wrong filters input 2020-01-12 20:28:55 +00:00
FrancescoUK
472e15ab0a Add detailed supplier report 2020-01-12 20:28:55 +00:00
FrancescoUK
bdddb945f0 Reports minor fixes 2020-01-12 20:28:55 +00:00
jekkos
615038ef38 Change mktime() with time() (#2666) 2020-01-11 20:08:45 +01:00
Emin Tufan Çetin
ef661e52e7 Translated using Weblate (Turkish)
Currently translated at 100.0% (175 of 175 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/tr/
2020-01-11 18:57:53 +01:00
Robby Triadi Susanto
bd52f0b004 Translated using Weblate (Indonesian)
Currently translated at 100.0% (175 of 175 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/id/
2020-01-11 18:57:53 +01:00
Mohammed Bensoltana
8ec90d3b40 Translated using Weblate (French)
Currently translated at 100.0% (173 of 173 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/fr/
2020-01-11 18:57:53 +01:00
Mohammed Bensoltana
2aee09d441 Translated using Weblate (French)
Currently translated at 98.0% (51 of 52 strings)

Translation: ospos/receivings
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/receivings/fr/
2020-01-11 18:57:53 +01:00
Emin Tufan Çetin
35a6095d30 Translated using Weblate (Turkish)
Currently translated at 100.0% (8 of 8 strings)

Translation: ospos/login
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/login/tr/
2020-01-11 18:57:53 +01:00
Mohammed Bensoltana
23a251aa77 Translated using Weblate (French)
Currently translated at 87.5% (7 of 8 strings)

Translation: ospos/login
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/login/fr/
2020-01-11 18:57:53 +01:00
justln1113
48852f0c3f Translated using Weblate (Chinese (Traditional))
Currently translated at 100.0% (2 of 2 strings)

Translation: ospos/error
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/error/zh_Hant/
2020-01-11 18:57:53 +01:00
Emin Tufan Çetin
42ffe87bf5 Translated using Weblate (Turkish)
Currently translated at 100.0% (20 of 20 strings)

Translation: ospos/datepicker
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/datepicker/tr/
2020-01-11 18:57:53 +01:00
Emin Tufan Çetin
2ba61fab9d Translated using Weblate (Turkish)
Currently translated at 100.0% (52 of 52 strings)

Translation: ospos/customers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/customers/tr/
2020-01-11 18:57:53 +01:00
Emin Tufan Çetin
1fc634214f Translated using Weblate (Turkish)
Currently translated at 100.0% (279 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/tr/
2020-01-11 18:57:53 +01:00
luisgarciadiaz
cec35683f4 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (278 of 278 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/es_MX/
2020-01-11 18:57:53 +01:00
Robby Triadi Susanto
d4b2b768d3 Translated using Weblate (Indonesian)
Currently translated at 100.0% (279 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/id/
2020-01-11 18:57:53 +01:00
Mohammed Bensoltana
a71226e995 Translated using Weblate (French)
Currently translated at 93.5% (261 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/fr/
2020-01-11 18:57:53 +01:00
Emin Tufan Çetin
3cec08c734 Translated using Weblate (Turkish)
Currently translated at 100.0% (29 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/tr/
2020-01-11 18:57:53 +01:00
justln1113
cccc72d0d8 Translated using Weblate (Chinese (Traditional))
Currently translated at 6.8% (2 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/zh_Hant/
2020-01-11 18:57:53 +01:00
Emin Tufan Çetin
bf19f13d4c Translated using Weblate (Turkish)
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/tr/
2020-01-11 18:57:53 +01:00
luisgarciadiaz
0d7d8ddee2 Translated using Weblate (Spanish)
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/es/
2020-01-11 18:57:53 +01:00
jekkos
de6a547272 Use today as default date in DATETIME attribute (#2666) 2020-01-09 20:24:32 +01:00
FrancescoUK
2e1c798c6e Merge pull request #2662 from andriux1990/master
More select onClick
2020-01-04 15:03:54 +00:00
FrancescoUK
26afd63e39 Revert permission change, retain rest of updates. 2020-01-04 15:01:23 +00:00
andriux1990
f8ef88362d disable edit price to sales employees 2020-01-04 06:32:37 -06:00
FrancescoUK
ae445c8ece Merge pull request #2660 from opensourcepos/payments-for-invoice-email
Add payments to emailed invoice and fix issue with unsupported fonts
2020-01-04 10:41:50 +00:00
FrancescoUK
351bc544ee Fixed indentation 2020-01-04 10:38:31 +00:00
SteveIreland
5dfe0c237f Add payments to emailed invoice and fix issue with unsupported fonts 2020-01-03 21:01:07 -05:00
FrancescoUK
3b628bed45 Prepare Release 3.3.2 2020-01-03 22:38:57 +00:00
FrancescoUK
a081b72916 Fix issue with POS transaction return when Items are deleted (#2659) 2020-01-03 21:56:43 +00:00
FrancescoUK
44c1e8ce69 Merge pull request #2658 from opensourcepos/fix_full_group_by
Fix item + item kits using only_full_group_by
2020-01-03 18:16:51 +00:00
jekkos
d52c16fbba Fix item form refresh (#2538) 2020-01-03 14:26:11 +01:00
jekkos
2351ced921 Add aggregate to fix only_full_group_by (#2538) 2020-01-03 09:13:51 +01:00
Awadhoot Jog
afef8ff4a3 use github raw urls
curl fetches html content for non-raw urls
2020-01-03 09:10:01 +01:00
jekkos
f9da801f06 Add aggregate to fix only_full_group_by (#2538) 2020-01-03 00:16:34 +01:00
FrancescoUK
0c3e7be420 Merge pull request #2633 from opensourcepos/decimal_parsing_fix
Expand flexibility of parse_decimal function
2020-01-02 17:03:32 +00:00
jekkos
43420f02f2 Codestyle remarks 2020-01-02 12:40:31 +01:00
FrancescoUK
47b1b7f519 Update composer libraries 2019-12-30 12:01:01 +00:00
FrancescoUK
91d72c0265 Merge pull request #2641 from opensourcepos/csrf-cookie-prefix
Add cookie_prefix to csrf cookie name (#2638)
2019-12-30 11:47:37 +00:00
jekkos
5a98b9c3fd Fix portugese language (#2632) 2019-12-30 12:46:07 +01:00
jekkos
fd3b48ba43 Add cookie_prefix to csrf cookie name (#2638) 2019-12-30 11:29:17 +01:00
FrancescoUK
e03ee00e61 Merge pull request #2639 from opensourcepos/refresh-after-import
Refresh tables after import + close after invoice email (#478)
2019-12-29 20:31:23 +00:00
jekkos
685f38e6a0 Bump to CI 3.1.11 (fixes bug with captcha generation) 2019-12-29 19:02:44 +01:00
andriux1990
2641a34a1e onclick 2019-12-29 17:55:35 +01:00
andriux1990
59bf8d0a45 item selection 2019-12-29 17:55:35 +01:00
jekkos
b8f255cc50 Refresh tables after import + close after invoice email (#478) 2019-12-29 17:50:17 +01:00
andriux1990
fae67be8c8 onclick 2019-12-24 07:18:10 -06:00
SteveIreland
230d822fce Add support to parse_decimal function for tax_decimals and quantity_decimals parsing. 2019-12-22 11:04:01 -05:00
andriux1990
5088362430 item selection 2019-12-15 22:02:09 -06:00
FrancescoUK
970d2d1f42 Bump version to 3.4.0 2019-12-14 18:42:40 +00:00
FrancescoUK
c786d4e0ab Fix certbot github path (#2598) 2019-12-14 17:17:40 +00:00
FrancescoUK
dcb130c1c6 Fix certbot github path (#2598) 2019-12-14 17:01:04 +00:00
Ivailo Kamenov
39d70f17b3 Translated using Weblate (Bulgarian)
Currently translated at 94.8% (166 of 175 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/bg/
2019-12-01 01:48:30 +01:00
Jintao-Yao
b7443be756 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (8 of 8 strings)

Translation: ospos/login
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/login/zh_Hans/
2019-12-01 01:48:30 +01:00
Jintao-Yao
f75d0af6df Translated using Weblate (Chinese (Simplified))
Currently translated at 61.6% (172 of 279 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/zh_Hans/
2019-12-01 01:48:30 +01:00
Jintao-Yao
420957ecb7 Translated using Weblate (Chinese (Simplified))
Currently translated at 96.5% (28 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/zh_Hans/
2019-12-01 01:48:30 +01:00
Jintao-Yao
fde61ae0d6 Translated using Weblate (Chinese (Simplified))
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/zh_Hans/
2019-12-01 01:48:30 +01:00
FrancescoUK
644694a9f2 Merge pull request #2611 from opensourcepos/3.3.1_patch_csv_import_BOM_check
3.3.1 patch csv import bom check
2019-11-26 19:03:11 +00:00
objecttothis
05c022c3f0 Refactoring variables and replacing Excel with CSV 2019-11-26 14:40:41 +04:00
objecttothis
619742de4e Refactoring files and variable names in Customer/People 2019-11-25 17:27:59 +04:00
objecttothis
6294079ce3 File rename and variable refactor to correct error in import. 2019-11-25 15:51:31 +04:00
objecttothis
35a59fc400 refactor variable names to reflect Excel --> CSV wording 2019-11-18 14:39:21 +04:00
objecttothis
0180de5490 Correctly check for BOM and skip if exists
No characters are skipped if BOM doesn't exist
2019-11-18 14:30:18 +04:00
objecttothis
a26ae1a9b3 Refactor to reflect Excel --> CSV wording change 2019-11-18 14:30:18 +04:00
Jens
dd7495a04c Translated using Weblate (Dutch)
Currently translated at 100.0% (52 of 52 strings)

Translation: ospos/receivings
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/receivings/nl/
2019-11-16 16:36:15 +01:00
Jens
a59236f4ae Translated using Weblate (Dutch)
Currently translated at 100.0% (20 of 20 strings)

Translation: ospos/datepicker
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/datepicker/nl/
2019-11-16 16:36:00 +01:00
Jens
ab23e01ef8 Translated using Weblate (Dutch)
Currently translated at 11.8% (33 of 278 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/nl/
2019-11-16 16:35:47 +01:00
Jens
a52d923f79 Translated using Weblate (Dutch)
Currently translated at 47.7% (32 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/nl/
2019-11-16 16:35:32 +01:00
Weblate
5c541fcc03 Merge branch 'origin/master' into Weblate 2019-11-14 22:08:14 +01:00
Israel Chavez
afba8b58a3 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (77 of 77 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/es_MX/
2019-11-14 22:08:13 +01:00
xarhang
2f755de206 Translated using Weblate (Lao)
Currently translated at 45.4% (35 of 77 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/lo/
2019-11-14 22:08:06 +01:00
numa-drrey
06506d2793 Translated using Weblate (German)
Currently translated at 100.0% (77 of 77 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/de/
2019-11-14 22:07:59 +01:00
wd-code
11a66b79b1 Translated using Weblate (French)
Currently translated at 100.0% (77 of 77 strings)

Translation: ospos/taxes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/taxes/fr/
2019-11-14 22:07:52 +01:00
Lord Cold
782bfd23ad Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (21 of 21 strings)

Translation: ospos/suppliers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/suppliers/es_MX/
2019-11-14 22:07:17 +01:00
EcuadorAmaLaVida
d3625c1b72 Translated using Weblate (Spanish)
Currently translated at 100.0% (21 of 21 strings)

Translation: ospos/suppliers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/suppliers/es/
2019-11-14 22:07:06 +01:00
Daniel Millan
87ec999053 Translated using Weblate (Spanish)
Currently translated at 100.0% (21 of 21 strings)

Translation: ospos/suppliers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/suppliers/es/
2019-11-14 22:07:06 +01:00
Andrea Mangini
5e074d2bef Translated using Weblate (Italian)
Currently translated at 100.0% (21 of 21 strings)

Translation: ospos/suppliers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/suppliers/it/
2019-11-14 22:06:58 +01:00
wd-code
bbc12bb026 Translated using Weblate (French)
Currently translated at 90.4% (19 of 21 strings)

Translation: ospos/suppliers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/suppliers/fr/
2019-11-14 22:06:48 +01:00
amir alcocer
9b15d1dcd1 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (173 of 173 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/es_MX/
2019-11-14 22:06:24 +01:00
Lord Cold
fa38bf747a Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (173 of 173 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/es_MX/
2019-11-14 22:06:21 +01:00
EcuadorAmaLaVida
a03c22cbac Translated using Weblate (Spanish)
Currently translated at 100.0% (173 of 173 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/es/
2019-11-14 22:06:13 +01:00
Andrea Mangini
e51f77d30e Translated using Weblate (Italian)
Currently translated at 98.8% (171 of 173 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/it/
2019-11-14 22:06:06 +01:00
numa-drrey
577394f167 Translated using Weblate (German)
Currently translated at 100.0% (173 of 173 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/de/
2019-11-14 22:05:59 +01:00
wd-code
c67af83de4 Translated using Weblate (French)
Currently translated at 93.0% (161 of 173 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/fr/
2019-11-14 22:05:52 +01:00
Remco Gerbrands
7e8014dd2e Translated using Weblate (Dutch)
Currently translated at 69.9% (121 of 173 strings)

Translation: ospos/sales
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/sales/nl/
2019-11-14 22:05:45 +01:00
numa-drrey
4600f4d9f2 Translated using Weblate (German)
Currently translated at 100.0% (128 of 128 strings)

Translation: ospos/reports
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/reports/de/
2019-11-14 22:04:57 +01:00
EcuadorAmaLaVida
bbd2c120f8 Translated using Weblate (Spanish)
Currently translated at 100.0% (52 of 52 strings)

Translation: ospos/receivings
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/receivings/es/
2019-11-14 22:04:38 +01:00
EcuadorAmaLaVida
1036fcedd7 Translated using Weblate (Spanish)
Currently translated at 100.0% (109 of 109 strings)

Translation: ospos/items
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/items/es/
2019-11-14 22:04:23 +01:00
numa-drrey
47121d31d1 Translated using Weblate (German)
Currently translated at 100.0% (109 of 109 strings)

Translation: ospos/items
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/items/de/
2019-11-14 22:04:14 +01:00
Natig Asad
5c9414656b Translated using Weblate (Azerbaijani)
Currently translated at 100.0% (109 of 109 strings)

Translation: ospos/items
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/items/az/
2019-11-14 22:04:06 +01:00
WebShells
7a7f0e34ea Translated using Weblate (Arabic (Egypt))
Currently translated at 100.0% (109 of 109 strings)

Translation: ospos/items
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/items/ar_EG/
2019-11-14 22:03:58 +01:00
amir alcocer
ec2f825ceb Translated using Weblate (Spanish (Mexico))
Currently translated at 10.5% (2 of 19 strings)

Translation: ospos/expenses_categories
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/expenses_categories/es_MX/
2019-11-14 22:03:42 +01:00
EcuadorAmaLaVida
5bdd249557 Translated using Weblate (Spanish)
Currently translated at 100.0% (19 of 19 strings)

Translation: ospos/expenses_categories
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/expenses_categories/es/
2019-11-14 22:03:34 +01:00
Israel Chavez
8261a50365 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (44 of 44 strings)

Translation: ospos/expenses
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/expenses/es_MX/
2019-11-14 22:03:13 +01:00
numa-drrey
a5e8665870 Translated using Weblate (German)
Currently translated at 100.0% (44 of 44 strings)

Translation: ospos/expenses
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/expenses/de/
2019-11-14 22:03:04 +01:00
amir alcocer
01b3db39c4 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (2 of 2 strings)

Translation: ospos/error
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/error/es_MX/
2019-11-14 22:02:48 +01:00
amir alcocer
c989362875 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (7 of 7 strings)

Translation: ospos/enum
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/enum/es_MX/
2019-11-14 22:02:32 +01:00
numa-drrey
430cd13e09 Translated using Weblate (German)
Currently translated at 85.7% (6 of 7 strings)

Translation: ospos/enum
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/enum/de/
2019-11-14 22:02:23 +01:00
Israel Chavez
78a3724efe Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (35 of 35 strings)

Translation: ospos/employees
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/employees/es_MX/
2019-11-14 22:02:05 +01:00
Israel Chavez
6d23c1baf5 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (20 of 20 strings)

Translation: ospos/datepicker
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/datepicker/es_MX/
2019-11-14 22:01:49 +01:00
Israel Chavez
1d4d1e207e Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (52 of 52 strings)

Translation: ospos/customers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/customers/es_MX/
2019-11-14 22:01:30 +01:00
EcuadorAmaLaVida
3cc5199e80 Translated using Weblate (Spanish)
Currently translated at 100.0% (52 of 52 strings)

Translation: ospos/customers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/customers/es/
2019-11-14 22:01:23 +01:00
wd-code
f350dac237 Translated using Weblate (French)
Currently translated at 92.3% (48 of 52 strings)

Translation: ospos/customers
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/customers/fr/
2019-11-14 22:01:15 +01:00
amir alcocer
ee4349fe8a Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (278 of 278 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/es_MX/
2019-11-14 22:01:01 +01:00
Lord Cold
96b755d2c6 Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (278 of 278 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/es_MX/
2019-11-14 22:01:01 +01:00
EcuadorAmaLaVida
6b459ee78f Translated using Weblate (Spanish)
Currently translated at 100.0% (278 of 278 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/es/
2019-11-14 22:00:54 +01:00
numa-drrey
82f4694cd2 Translated using Weblate (German)
Currently translated at 100.0% (278 of 278 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/de/
2019-11-14 22:00:47 +01:00
Jens
156aa721fe Translated using Weblate (Dutch)
Currently translated at 3.5% (10 of 278 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/nl/
2019-11-14 22:00:40 +01:00
Haseeb
81f3e02c7b Translated using Weblate (Urdu (Pakistan))
Currently translated at 100.0% (29 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/ur_PK/
2019-11-14 22:00:26 +01:00
xarhang
4b42fd270b Translated using Weblate (Lao)
Currently translated at 51.7% (15 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/lo/
2019-11-14 22:00:12 +01:00
numa-drrey
6212595ab7 Translated using Weblate (German)
Currently translated at 100.0% (29 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/de/
2019-11-14 22:00:03 +01:00
Jens
bd353a3f99 Translated using Weblate (Dutch)
Currently translated at 79.3% (23 of 29 strings)

Translation: ospos/attributes
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/attributes/nl/
2019-11-14 21:59:50 +01:00
amir alcocer
03a2f5c06e Translated using Weblate (Spanish (Mexico))
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/es_MX/
2019-11-14 21:59:37 +01:00
xarhang
e4972852c6 Translated using Weblate (Lao)
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/lo/
2019-11-14 21:59:30 +01:00
numa-drrey
ad4cb84a0d Translated using Weblate (German)
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/de/
2019-11-14 21:59:23 +01:00
wd-code
efc66bd1b9 Translated using Weblate (French)
Currently translated at 100.0% (67 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/fr/
2019-11-14 21:59:14 +01:00
Remco Gerbrands
7e7622ceca Translated using Weblate (Dutch)
Currently translated at 46.2% (31 of 67 strings)

Translation: ospos/common
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/common/nl/
2019-11-14 21:59:07 +01:00
Remco Gerbrands
76607c99fd Translated using Weblate (Dutch)
Currently translated at 3.5% (10 of 278 strings)

Translation: ospos/config
Translate-URL: http://weblate.jpeelaer.net/projects/ospos/config/nl/
2019-11-14 21:58:52 +01:00
FrancescoUK
75113388f5 Merge pull request #2609 from opensourcepos/3.3.1_patch_icon_logo_button_colors
3.3.1 patch icon logo button colors
2019-11-14 19:40:55 +00:00
objecttothis
68f573caba Correcting Blue background
Matching button and text background to new logo color
2019-11-14 18:10:43 +04:00
objecttothis
7a4193c4d5 Corrected Transparency
Corrected transparency on favicon.ico and logo.png
removed "OSPOS" lettering from favicon.ico since it was too small to see.
2019-11-14 17:58:15 +04:00
FrancescoUK
a923f279ff Merge pull request #2606 from bricas/master
type="username" is not valid html and breaks firefox autofill; changed to "text"
2019-11-13 07:58:51 +00:00
Brian Cassidy
a84b33d013 css fix 2019-11-12 18:49:35 -04:00
Brian Cassidy
80a512b9be type="username" is not valid html and breaks firefox autofill; changed to "text" 2019-11-12 15:30:20 -04:00
FrancescoUK
ed10104f98 Merge pull request #2603 from opensourcepos/fix_item_type_maintenance
Fix item type maintenance issue regardless.
2019-11-11 19:07:01 +00:00
SteveIreland
fffb70933d Fix item type maintenance issue regardless. 2019-11-10 19:40:57 -05:00
Weblate
bb4c79d975 Merge translations 2019-11-06 03:55:54 +01:00
FrancescoUK
281d2df621 Prepare release 3.3.1 2019-10-26 17:43:16 +01:00
FrancescoUK
ac1c6b2286 Minor fixes, add CI_ENV to docker-compose 2019-10-26 17:42:30 +01:00
Steve Ireland
a45ac78274 Merge pull request #2583 from opensourcepos/fix_locale_config_3
Fix numeric locale configuration.
2019-10-19 17:53:59 -04:00
SteveIreland
4c4725795c Fix numeric locale configuration. 2019-10-19 17:10:51 -04:00
FrancescoUK
907e42e46b Merge pull request #2581 from opensourcepos/fix_numeric_locale_config
Fix numeric locale configuration.
2019-10-17 06:43:24 +01:00
SteveIreland
d4c2693511 Fix numeric locale configuration. 2019-10-16 21:37:46 -04:00
FrancescoUK
eef7d65b5c Update Bootswatch themes to latest version 2019-10-13 21:29:40 +01:00
FrancescoUK
bdb3dbe0eb Merge pull request #2579 from opensourcepos/receipt_tax_indicator
Add a code to indicate a taxable item on a sales receipt
2019-10-11 06:31:36 +01:00
SteveIreland
61e28302ce Add a code to indicate a taxable item on a sales receipt 2019-10-11 00:10:13 -04:00
FrancescoUK
a56a4070a6 Revert "Fix "only_full_group_by" issue (#2538)"
This reverts commit 424eb4cf14.
2019-10-06 20:15:24 +01:00
FrancescoUK
69d57b3744 Merge pull request #2567 from opensourcepos/fix-initial-tax-config
Clear initial default for Cascade and Seq for Tax Config Tables
2019-10-06 18:54:31 +01:00
FrancescoUK
424eb4cf14 Fix "only_full_group_by" issue (#2538) 2019-10-06 18:43:58 +01:00
WShells
3a06f55db9 Update INSTALL.md 2019-10-06 00:31:24 +03:00
WShells
5fc20600e7 Removed breaks
Removed Line Breaks
2019-10-06 00:28:53 +03:00
SteveIreland
4a6f4e1f74 Clear initial default for Cascade and Seq for Tax Jurisdiction and Tax Category. 2019-10-03 22:28:30 -04:00
tuthanika
216396c94c Update attributes_lang.php (#2561)
VI Translations Added
2019-10-02 04:00:49 +03:00
FrancescoUK
19eb1cab59 Bump version to 3.3.1 to contain bug fixing 2019-10-01 20:09:55 +01:00
tuthanika
51ca6e92c7 Fix Colspan in receipt_short.php (#2557)
On Discounts: Columns deviation after adding a discounted amount to sales.
2019-10-01 13:22:02 +03:00
WShells
fd9d143269 Fix Graphical Summary 500 Internal Server Error
500 Internal Server Error Fix On Summary Graphical Reports Fix
2019-10-01 05:09:30 +03:00
633 changed files with 15783 additions and 5500 deletions

18
.github/stale.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- enhancement
- needsowner
- bug
# Label to use when marking an issue as stale
staleLabel: wontfix
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

1
.gitignore vendored
View File

@@ -32,6 +32,7 @@ vendor/
*.log
.env
package-lock.json
auth.json
!/docker/.env
/docker/data/database/db/*
/docker/data/certbot/conf/*

View File

@@ -1,30 +1,30 @@
sudo: required
dist: trusty
group: deprecated-2017Q4
branches:
except:
- weblate
services:
- docker
before_install:
- curl -L https://github.com/docker/compose/releases/download/1.7.1/docker-compose-`uname
-s`-`uname -m` > docker-compose
- curl -L https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-`uname -s`-`uname -m` > docker-compose
- chmod +x docker-compose
- sudo mv docker-compose /usr/local/bin
- date=`date +%Y%m%d%H%M%S` && branch=${TRAVIS_BRANCH} && rev=`git rev-parse --short=6
HEAD` && sed -i "s/\$1/\$1.$date.$branch.$rev/g" deployment.json
script:
- docker run --rm -v $(pwd):/app composer/composer install
- docker run --rm -v $(pwd):/app -w /app lucor/php7-cli php bin/install.php translations
develop
- docker run --rm -v $(pwd):/app jekkos/composer composer install
- docker run --rm -v $(pwd):/app jekkos/composer php bin/install.php translations develop
- sed -i "s/'\(dev\)'/'$rev'/g" application/config/config.php
- docker run --rm -it -v $(pwd):/app -w /app digitallyseamless/nodejs-bower-grunt
sh -c "npm install && bower install && grunt package"
- /bin/bash docker/install-local.sh
- docker-compose build
- docker-compose -f docker-compose.test.yml up --abort-on-container-exit
env:
- TAG=$(echo ${TRAVIS_BRANCH} | sed s/feature\\///)
after_success: '[ -n ${DOCKER_USERNAME} ] && docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
&& docker tag "opensourcepos_ospos:latest" "jekkos/opensourcepos:$TAG" && docker push "jekkos/opensourcepos:$TAG"'
global:
- DOCKER_COMPOSE_VERSION=1.21.1
- TAG=$(echo ${TRAVIS_BRANCH} | sed s/feature\\///)
after_success:
- 'docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" && docker tag "opensourcepos_ospos:latest" "jekkos/opensourcepos:$TAG" && docker push "jekkos/opensourcepos:$TAG"'
deploy:
file: deployment.json
provider: bintray

View File

@@ -1,4 +1,4 @@
FROM php:7.3-apache
FROM php:7.4-apache AS ospos
MAINTAINER jekkos
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
@@ -6,6 +6,7 @@ RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
libgd-dev \
openssl
RUN a2enmod rewrite
RUN docker-php-ext-install mysqli bcmath intl gd
RUN echo "date.timezone = \"\${PHP_TIMEZONE}\"" > /usr/local/etc/php/conf.d/timezone.ini
@@ -14,6 +15,28 @@ RUN echo -e “$(hostname -i)\t$(hostname) $(hostname).localhost” >> /etc/host
WORKDIR /app
COPY . /app
RUN ln -s /app/*[^public] /var/www && rm -rf /var/www/html && ln -nsf /app/public /var/www/html
RUN chmod 755 /app/public/uploads && chown -R www-data:www-data /app/public /app/application
RUN chmod -R 750 /app/public/uploads /app/application/logs && chown -R www-data:www-data /app/public /app/application
FROM ospos AS ospos_test
COPY --from=composer /usr/bin/composer /usr/bin/composer
RUN apt-get install -y libzip-dev wget git
RUN wget https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh -O /bin/wait-for-it.sh && chmod +x /bin/wait-for-it.sh
RUN docker-php-ext-install zip
RUN composer install -d/app
RUN php /app/vendor/kenjis/ci-phpunit-test/install.php -a /app/application -p /app/vendor/codeigniter/framework
RUN sed -i 's/backupGlobals="true"/backupGlobals="false"/g' /app/application/tests/phpunit.xml
RUN sed -i '13,17d' /app/application/tests/controllers/Welcome_test.php
WORKDIR /app/application/tests
CMD ["/app/vendor/phpunit/phpunit/phpunit"]
FROM ospos AS ospos_dev
RUN mkdir -p /app/bower_components && ln -s /app/bower_components /var/www/html/bower_components
RUN yes | pecl install xdebug \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini
RUN [ ! -f test/ospos.js ] || sed -i -e "s/\(localhost\)/web/g" test/ospos.js

View File

@@ -1,9 +0,0 @@
FROM jekkos/opensourcepos:master
MAINTAINER jekkos
RUN mkdir -p /app/bower_components && ln -s /app/bower_components /var/www/html/bower_components
RUN yes | pecl install xdebug \
&& echo "zend_extension=$(find /usr/local/lib/php/extensions/ -name xdebug.so)" > /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_enable=on" >> /usr/local/etc/php/conf.d/xdebug.ini \
&& echo "xdebug.remote_autostart=off" >> /usr/local/etc/php/conf.d/xdebug.ini

View File

@@ -1,11 +0,0 @@
FROM digitallyseamless/nodejs-bower-grunt:5
MAINTAINER jekkos
# apt-get install curl
COPY Gruntfile.js .
COPY package.json .
COPY test .
RUN npm install
CMD ['while ! curl web/index.php | grep username; do sleep 1; done; grunt mochaWebdriver:test']

2
FUNDING.yml Normal file
View File

@@ -0,0 +1,2 @@
github: jekkos
custom: ["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MUN6AEG7NY6H8"]

View File

@@ -1,6 +1,6 @@
module.exports = function(grunt) {
grunt.initConfig({
grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),
wiredep: {
task: {
@@ -11,7 +11,8 @@ module.exports = function(grunt) {
bower_concat: {
all: {
mainFiles: {
'bootstrap-table': [ "src/bootstrap-table.js", "src/bootstrap-table.css", "dist/extensions/export/bootstrap-table-export.js", "dist/extensions/mobile/bootstrap-table-mobile.js", "dist/extensions/sticky-header/bootstrap-table-sticky-header.js", "dist/extensions/sticky-header/bootstrap-table-sticky-header.css"]
'bootstrap-table': [ "dist/bootstrap-table.min.js", "dist/bootstrap-table.css", "dist/extensions/export/bootstrap-table-export.min.js", "dist/extensions/mobile/bootstrap-table-mobile.min.js", "dist/extensions/sticky-header/bootstrap-table-sticky-header.min.js", "dist/extensions/sticky-header/bootstrap-table-sticky-header.css"],
'chartist-plugin-axistitle': [ "./dist/chartist-plugin-axistitle.min.js"]
},
dest: {
'js': 'tmp/opensourcepos_bower.js',
@@ -53,7 +54,7 @@ module.exports = function(grunt) {
cssmin: {
target: {
files: {
'public/dist/<%= pkg.name %>.min.css': ['tmp/opensourcepos_bower.css', 'public/css/*.css', '!public/css/login.css', '!public/css/invoice_email.css', '!public/css/barcode_font.css']
'public/dist/<%= pkg.name %>.min.css': ['tmp/opensourcepos_bower.css', 'public/css/*.css', '!public/css/login.css', '!public/css/invoice_email.css', '!public/css/barcode_font.css', '!public/css/darkly.css']
}
}
},
@@ -106,7 +107,7 @@ module.exports = function(grunt) {
closeTag: '<!-- end css template tags -->',
ignorePath: '../../../public/'
},
src: ['public/css/*.css', '!public/css/login.css', '!public/css/invoice_email.css', '!public/css/barcode_font.css'],
src: ['public/css/*.css', '!public/css/login.css', '!public/css/invoice_email.css', '!public/css/barcode_font.css', '!public/css/darkly.css'],
dest: 'application/views/partial/header.php',
},
mincss_header: {
@@ -125,7 +126,7 @@ module.exports = function(grunt) {
scriptTemplate: '<rel type="text/css" src="{{ path }}"></rel>',
openTag: '<!-- start css template tags -->',
closeTag: '<!-- end css template tags -->',
ignorePath: '../../public/'
ignorePath: '../../public/'
},
src: ['public/css/login.css'],
dest: 'application/views/login.php'
@@ -145,7 +146,7 @@ module.exports = function(grunt) {
scriptTemplate: '<script type="text/javascript" src="{{ path }}"></script>',
openTag: '<!-- start minjs template tags -->',
closeTag: '<!-- end minjs template tags -->',
ignorePath: '../../../public/'
ignorePath: '../../../public/'
},
src: ['public/dist/*min.js'],
dest: 'application/views/partial/header.php'
@@ -230,23 +231,42 @@ module.exports = function(grunt) {
archive: 'dist/opensourcepos.zip'
},
files: [
{src: ['public/**', 'vendor/**', 'application/**', '!/public/images/menubar/png/', '!/public/dist/bootswatch/', '/public/dist/bootswatch/*/*.css', 'database/**', '*.txt', '*.md', 'LICENSE', 'docker*', 'Dockerfile', '**/.htaccess', '*.csv']}
{
src: [
'public/**',
'vendor/**',
'application/**',
'!/application/tests',
'!/public/images/menubar/png/',
'!/public/dist/bootswatch/',
'/public/dist/bootswatch/*/*.css',
'database/**',
'*.txt',
'*.md',
'LICENSE',
'docker*',
'docker/**',
'Dockerfile',
'**/.htaccess',
'*.csv'
]
}
]
}
}
});
require('load-grunt-tasks')(grunt);
grunt.loadNpmTasks('grunt-mocha-webdriver');
require('load-grunt-tasks')(grunt);
grunt.loadNpmTasks('grunt-mocha-webdriver');
grunt.loadNpmTasks('grunt-composer');
grunt.loadNpmTasks('grunt-apigen');
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.registerTask('default', ['wiredep', 'bower_concat', 'bowercopy', 'concat', 'uglify', 'cssmin', 'tags', 'cachebreaker']);
grunt.registerTask('update', ['composer:update', 'bower:update']);
grunt.registerTask('genlicense', ['clean:license', 'license', 'bower-licensechecker']);
grunt.registerTask('package', ['default', 'compress']);
grunt.registerTask('packages', ['composer:update']);
grunt.registerTask('gendocs', ['apigen:generate']);
grunt.loadNpmTasks('grunt-contrib-compress');
grunt.registerTask('default', ['wiredep', 'bower_concat', 'bowercopy', 'concat', 'uglify', 'cssmin', 'tags', 'cachebreaker']);
grunt.registerTask('update', ['composer:update', 'bower:update']);
grunt.registerTask('genlicense', ['clean:license', 'license', 'bower-licensechecker']);
grunt.registerTask('package', ['default', 'compress']);
grunt.registerTask('packages', ['composer:update']);
grunt.registerTask('gendocs', ['apigen:generate']);
};

View File

@@ -1,13 +1,13 @@
Server Requirements
-------------------
* PHP version 5.6 to 7.3 are supported. Please note that PHP needs to have `php-gd`, `php-bcmath`, `php-intl`, `php-openssl`, `php-mbstring` and `php-curl` installed and enabled.
* PHP version 7.2 to 7.4 are supported, PHP version 5.6 and 8.0 are NOT supported. Please note that PHP needs to have `php-gd`, `php-bcmath`, `php-intl`, `php-openssl`, `php-mbstring` and `php-curl` installed and enabled.
* MySQL 5.5, 5.6 and 5.7 are supported, also MariaDB replacement is supported and apparently offering better performance.
* MySQL 5.5, 5.6 and 5.7 are supported, also MariaDB replacement 10.x is supported and apparently offering better performance.
* Apache 2.2 and 2.4 are supported. Also Nginx has been proven to work fine, see [wiki page here](https://github.com/opensourcepos/opensourcepos/wiki/Local-Deployment-using-LEMP)
* Apache 2.2 and 2.4 are supported. Also Nginx has been proven to work fine, 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))
* 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) and also existing closed issues as this topic has been covered well in all the variants and issues.
@@ -98,7 +98,7 @@ Cloud install
-------------
If you choose *DigitalOcean*:
[Through this link](https://m.do.co/c/ac38c262507b), you will get a *$50 credit* for a first month. [Check the wiki](https://github.com/opensourcepos/opensourcepos/wiki/DOCS-USERS-Getting-Started-installations#cloud-deploy-installation) for further instructions on how to install the necessary components.
[Through this link](https://m.do.co/c/ac38c262507b), you will get a *$100 credit* for a first month. [Check the wiki](https://github.com/opensourcepos/opensourcepos/wiki/Getting-Started-installations) for further instructions on how to install the necessary components.
cPanel & SSH Install
@@ -108,21 +108,29 @@ If you own on a **VPS**, **Dedicated Server**, or **Shared Hosting** running on
You can run our Stand-alone [WS-OSPOS-Installer](https://github.com/WebShells/WS-OSPOS-Installer.git), it will handle:
. Database.php config files generation.<br>
. Creation of db User & Password depending on user's input of Dbname, Username, Password, & Hostname ( No need for phpmyadmin )<br>
. Imports default Db SQL files in order to run the project.<br>
. Database.php config files generation.
. Creation of db User & Password depending on user's input of Dbname, Username, Password, & Hostname ( No need for phpmyadmin )
. Imports default Db SQL files in order to run the project.
Usage in **(SSH)**:
git clone https://github.com/WebShells/WS-OSPOS-Installer.git<br>
chmod +x WS-OSPOS-Installer/Get-POS<br>
./WS-OSPOS-Installer/Get-POS<br>
git clone https://github.com/WebShells/WS-OSPOS-Installer.git
chmod +x WS-OSPOS-Installer/Get-POS
./WS-OSPOS-Installer/Get-POS
or
wget https://github.com/WebShells/WS-OSPOS-Installer/archive/master.zip<br>
unzip -qq master.zip<br>
chmod +x WS-OSPOS-Installer-master/Get-POS<br>
./WS-OSPOS-Installer-master/Get-POS<br>
wget https://github.com/WebShells/WS-OSPOS-Installer/archive/master.zip
unzip -qq master.zip
chmod +x WS-OSPOS-Installer-master/Get-POS
./WS-OSPOS-Installer-master/Get-POS
Answer **DB required questions** and you are ready to run the project on http://localhost/OSPOS/public (localhost to be replaced by the hostname provided during setup).

34
LICENSE
View File

@@ -5,17 +5,17 @@ Copyright (c) 2012 Alain
Copyright (c) 2013 Rob Garrison
Copyright (c) 2013 Parq
Copyright (c) 2013 Ramel
Copyright (c) 2013-2019 jekkos
Copyright (c) 2015-2019 FrancescoUK (aka daN4cat)
Copyright (c) 2013-2021 jekkos
Copyright (c) 2015-2021 FrancescoUK (aka daN4cat)
Copyright (c) 2015 Aamir Shahzad (aka asakpke), RoshanTech.com
Copyright (c) 2015 Toni Haryanto (aka yllumi)
Copyright (c) 2016-2017 Ramkrishna Mondal (aka RamkrishnaMondal)
Copyright (c) 2016 Rinaldy@dbarber (aka rnld26)
Copyright (c) 2016-2017 Jorge Colmenarez (aka jlctmaster), frontuari.com
Copyright (c) 2017-2019 Steve Ireland
Copyright (c) 2017-2019 objecttothis
Copyright (c) 2017-2019 odiea
Copyright (c) 2017-2019 WebShells / Shady Sh
Copyright (c) 2017-2021 Steve Ireland
Copyright (c) 2017-2021 objecttothis
Copyright (c) 2017-2021 odiea
Copyright (c) 2017-2021 WebShells / Shady Sh
Copyright (c) 2017 Jesus Guerrero Botella (aka i92guboj)
Copyright (c) 2017 Deep Shah (aka deepshah)
Copyright (c) 2017 Joshua Fernandez (aka joshua1234511)
@@ -24,6 +24,7 @@ Copyright (c) 2018 Erasto Marroquin (aka Erastus)
Copyright (c) 2018 Nathan Sas (aka nathanzky)
Copyright (c) 2018 Emilio Silva (aka emi-silva)
Copyright (c) 2019 Loyd Jayme (aka loydjayme25)
Copyright (c) 2020 Andriux1990
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
@@ -37,7 +38,26 @@ copies or substantial portions of the Software.
You cannot claim copyright or ownership of the Software.
Footer signatures "You are using Open Source Point Of Sale" and/or "Open Source Point Of Sale"
Versions ≥ 3.3.2:
Footer signatures "© 2010 - 2021 · opensourcepos.org · 3.3.3 - 6909c8"
In the format of: "© 2010 - Current Year · opensourcepos.org · Version - Commit"
and/or
"· opensourcepos.org ·"
with version, hash and URL link to the official website of the project MUST BE RETAINED,
MUST BE VISIBLE IN EVERY PAGE and CANNOT BE MODIFIED.
Versions < 3.3.2:
Footer signatures "You are using Open Source Point Of Sale"
and/or
"Open Source Point Of Sale"
with version, hash and URL link to the original distribution of the code MUST BE RETAINED,
MUST BE VISIBLE IN EVERY PAGE and CANNOT BE MODIFIED.

View File

@@ -1,9 +1,8 @@
[![Download](https://api.bintray.com/packages/jekkos/opensourcepos/opensourcepos/images/download.svg?version=3.3.0) ](https://bintray.com/jekkos/opensourcepos/opensourcepos/3.3.0/link)
[![Download](https://api.bintray.com/packages/jekkos/opensourcepos/opensourcepos/images/download.svg?version=3.3.2) ](https://bintray.com/jekkos/opensourcepos/opensourcepos/3.3.2/link)
[![Build Status](https://travis-ci.org/opensourcepos/opensourcepos.svg?branch=master)](https://travis-ci.org/opensourcepos/opensourcepos)
[![Join the chat at https://gitter.im/opensourcepos](https://badges.gitter.im/jekkos/opensourcepos.svg)](https://gitter.im/opensourcepos?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
[![devDependency Status](https://david-dm.org/jekkos/opensourcepos/dev-status.svg)](https://david-dm.org/jekkos/opensourcepos#info=dev)
[![GitHub version](https://badge.fury.io/gh/jekkos%2Fopensourcepos.svg)](https://badge.fury.io/gh/jekkos%2Fopensourcepos)
[![Translation status](http://weblate.jpeelaer.net/widgets/ospos/-/svg-badge.svg)](http://weblate.jpeelaer.net/engage/ospos/?utm_source=widget)
[![Translation status](http://translate.opensourcepos.org/widgets/opensourcepos/-/svg-badge.svg)](http://weblate.jpeelaer.net/engage/ospos/?utm_source=widget)
Introduction
@@ -36,13 +35,11 @@ The main features are:
The software is written in PHP language, it uses MySQL (or MariaDB) as data storage back-end and has a simple but intuitive user interface.
The latest 3.x version is a complete overhaul of the original software.
It is now based on Bootstrap 3 using Bootswatch themes, and still uses CodeIgniter 3 as framework.
It is now based on Bootstrap 3 using Bootswatch themes, and uses CodeIgniter version 3 as framework.
It also has improved functionality and security.
Deployed to a Cloud it's a SaaS (Software as a Service) solution.
DEMO
----
DEMO / DEV
----------
A demo version of the latest master version can be found on our [Demo server](https://demo.opensourcepos.org). This is a containerized install which will be reinitialized when new functionality is added to the code repository.
@@ -50,16 +47,20 @@ LOGIN using
* username: admin
* password: pointofsale
Beside this we also have a [Dev server](https://dev.opensourcepos.org) that runs the build that was triggered with the last repository's commit.
In case of any issues, check our status page at [https://status.opensourcepos.org](https://status.opensourcepos.org) to confirm whether there is a sever outage.
Installation
------------
Please **refrain from creating issues** about installation issues **before reading the FAQ and going through existing github issues**. We have a build pipeline that checks the sanity of our latest repository commit and in case the application itself is broken then our build will be as well.
Please **refrain from creating issues** about installation problems **before having read the FAQ and went through existing github issues**. We have a build pipeline that checks the sanity of our latest repository commit and in case the application itself is broken then our build will be as well.
This application **can be setup in many different ways** and we only **support the ones described in the INSTALL file linked below**.
Read the [INSTALL.md](https://github.com/opensourcepos/opensourcepos/blob/master/INSTALL.md) in our repository.
[Check our wiki](https://github.com/opensourcepos/opensourcepos/wiki/Supported-hardware-datasheet) for info and recommendations on supported receipt printers and barcode scanners.
License
-------
@@ -96,6 +97,7 @@ If you like the project, and you are making money out of it in some form, then c
[![Donate](https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MUN6AEG7NY6H8)
If you choose to deploy OSPOS in the cloud, you can contribute to the project by using our referral link. [You will get an initial $100 credits](https://m.do.co/c/ac38c262507b) for running OSPOS on a cloud instance with DigitalOcean.
Language Translations
---------------------
@@ -122,10 +124,10 @@ Please **Copy** the info under **System Info tab in configuration section** in o
Bug reports must follow the below schema:
1. Ospos **version string with git commit hash** (see ospos footer)
2. OS name and version running your Web Server (e.g. CentOS 6.9, Ubuntu 16.4, Windows 10)
3. Web Server name and version (e.g. Apache 2.2, Apache 2.4, Nginx 1.12, Nginx 1.13)
4. Database name and version (e.g. MySQL 5.5, MySQL 5.6, MySQL 5.7, MariaDB 10.0, MariaDB 10.1, MariaDB 10.2)
5. PHP version (e.g. 5.6, 7.0, 7.1, 7.2, 7.3)
2. OS name and version running your Web Server (e.g. CentOS 6.9, Ubuntu 20, Windows 10)
3. Web Server name and version (e.g. Apache 2.4, Nginx 1.12, Nginx 1.13)
4. Database name and version (e.g. MySQL 5.6, MySQL 5.7, MariaDB 10.2, MariaDB 10.3)
5. PHP version (e.g. 7.2, 7.3, 7.4)
6. Language selected in OSPOS (e.g. English, Spanish)
7. Any configuration of OSPOS that you changed
8. Exact steps to reproduce the issue (test case)
@@ -146,12 +148,16 @@ FAQ
* Apache server configurations are SysAdmin issues and not strictly related to OSPOS. Please make sure you first 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 time you get an error, please make sure your public and subdirs are assigned to the correct owner and the access permission is set to 755.
* If the avatar pictures are not shown in Items or at Item save time 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 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 have suhosin installed and face an issue with CSRF, please make sure you read [issue #1492](https://github.com/opensourcepos/opensourcepos/issues/1492).
* PHP 8.0 is not currently supported, see [issue #3051](https://github.com/opensourcepos/opensourcepos/issues/3051).
* PHP 5.5 and 5.6 are no longer supported due to the fact that they have been deprecated and not safe to use from security point of view.
Credits
-------
|JetBrains|Travis CI|

View File

@@ -1,3 +1,23 @@
Version 3.3.3
-------------
+ PHP 7.4 support
+ Set PHP 7.2 to be the minimum level due to older version deprecations
+ Added email CC and BCC (see config/email.php)
+ Cash rounding to nearest 5 cents
+ Updated composer packages and js plugins
+ Improved security (CSRF protection)
+ Various small improvements and bug fixes
Version 3.3.2
-------------
+ Fixed `only_full_group_by` issue with MySQL/MariaDB
+ Fixed POS transaction return failure if items are deleted
+ Various bug fixes
Version 3.3.1
-------------
+ Various bug fixes (please disable `only_full_group_by` option from MySQL/MariaDB to avoid issues)
Version 3.3.0
-------------
+ New logo

View File

@@ -1,7 +1,8 @@
CI_ENV="development"
#CI_ENV="production"
#Database Settings
MYSQL_HOST_NAME="localhost"
MYSQL_USERNAME=""
MYSQL_PASSWORD=""
MYSQL_DB_NAME=""
MYSQL_USERNAME="admin"
MYSQL_PASSWORD="pointofsale"
MYSQL_DB_NAME="ospos"

View File

@@ -8,7 +8,7 @@
|
|
*/
$config['application_version'] = '3.3.0';
$config['application_version'] = '3.3.3';
/*
|--------------------------------------------------------------------------
@@ -66,7 +66,7 @@ $config['db_log_enabled'] = FALSE;
|
*/
$config['base_url'] = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_ENV['FORCE_HTTPS']) && $_ENV['FORCE_HTTPS'] == 'true')) ? 'https' : 'http';
$config['base_url'] .= '://' . $_SERVER['HTTP_HOST'];
$config['base_url'] .= '://' . ((isset($_SERVER['HTTP_HOST'])) ? $_SERVER['HTTP_HOST'] : 'localhost') ;
$config['base_url'] .= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
/*
@@ -437,8 +437,8 @@ $config['sess_regenerate_destroy'] = FALSE;
$config['cookie_prefix'] = '';
$config['cookie_domain'] = '';
$config['cookie_path'] = '/';
$config['cookie_secure'] = FALSE;
$config['cookie_httponly'] = FALSE;
$config['cookie_secure'] = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on';
$config['cookie_httponly'] = TRUE;
/*
|--------------------------------------------------------------------------

View File

@@ -83,3 +83,64 @@ defined('EXIT_USER_INPUT') OR define('EXIT_USER_INPUT', 7); // invalid user
defined('EXIT_DATABASE') OR define('EXIT_DATABASE', 8); // database error
defined('EXIT__AUTO_MIN') OR define('EXIT__AUTO_MIN', 9); // lowest automatically-assigned error code
defined('EXIT__AUTO_MAX') OR define('EXIT__AUTO_MAX', 125); // highest automatically-assigned error code
/*
| Attribute Related Constants.
*/
define('GROUP', 'GROUP');
define('DROPDOWN', 'DROPDOWN');
define('DECIMAL', 'DECIMAL');
define('DATE', 'DATE');
define('TEXT', 'TEXT');
define('CHECKBOX', 'CHECKBOX');
define('NO_DEFINITION_ID', 0);
define('CATEGORY_DEFINITION_ID', -1);
const DEFINITION_TYPES = [GROUP, DROPDOWN, DECIMAL, TEXT, DATE, CHECKBOX];
/*
| Item Related Constants.
*/
define('HAS_STOCK', 0);
define('HAS_NO_STOCK', 1);
define('ITEM', 0);
define('ITEM_KIT', 1);
define('ITEM_AMOUNT_ENTRY', 2);
define('ITEM_TEMP', 3);
define('PRINT_ALL', 0);
define('PRINT_PRICED', 1);
define('PRINT_KIT', 2);
define('PRINT_YES', 0);
define('PRINT_NO', 1);
define('PRICE_ALL', 0);
define('PRICE_KIT', 1);
define('PRICE_KIT_ITEMS', 2);
define('PRICE_OPTION_ALL', 0);
define('PRICE_OPTION_KIT', 1);
define('PRICE_OPTION_KIT_STOCK', 2);
define('NAME_SEPARATOR', ' | ');
/*
| Sale Related Constants.
*/
define('COMPLETED', 0);
define('SUSPENDED', 1);
define('CANCELED', 2);
define('SALE_TYPE_POS', 0);
define('SALE_TYPE_INVOICE', 1);
define('SALE_TYPE_WORK_ORDER', 2);
define('SALE_TYPE_QUOTE', 3);
define('SALE_TYPE_RETURN', 4);
define('PERCENT', 0);
define('FIXED', 1);

View File

@@ -0,0 +1,10 @@
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
$config['default_email_address'] = "";
$config['default_cc_address'] = '';
$config['default_sender_name'] = "";
$config['default_sender_address'] = "";
$config['default_bounce_address'] = "";
$config['charset'] = 'utf-8';
$config['mailtype'] = 'html';
$config['wordwrap'] = FALSE;

View File

@@ -27,7 +27,7 @@ $hook['post_controller'] = array(
);
$hook['pre_system'] = function() {
$config_path = APPPATH . 'config/';
$config_path = APPPATH . (ENVIRONMENT == 'testing') ? 'tests/' : 'config/';
try {
$dotenv = new Dotenv\Dotenv($config_path);
$dotenv->overload();

View File

@@ -69,7 +69,7 @@ $config['migration_auto_latest'] = FALSE;
| be upgraded / downgraded to.
|
*/
$config['migration_version'] = 20171126100000;
$config['migration_version'] = 20180225100000;
/*
|--------------------------------------------------------------------------

View File

@@ -73,15 +73,15 @@ $route['reports/(inventory_:any)/([^/]+)'] = 'reports/$1/$2';
$route['reports/inventory_summary'] = 'reports/inventory_summary_input';
$route['reports/(inventory_summary)/([^/]+)/([^/]+)/([^/]+)'] = 'reports/$1/$2';
$route['reports/(detailed_sales)/([^/]+)/([^/]+)/([^/]+)'] = 'reports/$1/$2/$3$/$4';
$route['reports/(detailed_:any)/([^/]+)/([^/]+)/([^/]+)'] = 'reports/$1/$2/$3/$4';
$route['reports/detailed_sales'] = 'reports/date_input_sales';
$route['reports/(detailed_receivings)/([^/]+)/([^/]+)/([^/]+)'] = 'reports/$1/$2/$3/$4';
$route['reports/detailed_receivings'] = 'reports/date_input_recv';
$route['reports/(specific_:any)/([^/]+)/([^/]+)/([^/]+)'] = 'reports/$1/$2/$3/$4';
$route['reports/specific_customer'] = 'reports/specific_customer_input';
$route['reports/specific_employee'] = 'reports/specific_employee_input';
$route['reports/specific_discount'] = 'reports/specific_discount_input';
$route['reports/specific_supplier'] = 'reports/specific_supplier_input';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;

View File

@@ -16,9 +16,9 @@ class Attributes extends Secure_Controller
$this->load->view('attributes/manage', $data);
}
/*
Returns customer table data rows. This will be called with AJAX.
*/
/**
* Returns customer table data rows. This will be called with AJAX.
*/
public function search()
{
$search = $this->input->get('search');
@@ -44,7 +44,7 @@ class Attributes extends Secure_Controller
public function save_attribute_value($attribute_value)
{
$success = $this->Attribute->save_value(urldecode($attribute_value), $this->input->post('definition_id'), $this->input->post('item_id'), $this->input->post('attribute_id'));
$success = $this->Attribute->save_value(urldecode($attribute_value), $this->input->post('definition_id'), $this->input->post('item_id'), $this->input->post('attribute_id'));
echo json_encode(array('success' => $success != 0));
}
@@ -56,9 +56,8 @@ class Attributes extends Secure_Controller
echo json_encode(array('success' => $success));
}
public function save_definition($definition_id = -1)
public function save_definition($definition_id = NO_DEFINITION_ID)
{
$definition_flags = 0;
$flags = (empty($this->input->post('definition_flags'))) ? array() : $this->input->post('definition_flags');
@@ -68,7 +67,7 @@ class Attributes extends Secure_Controller
$definition_flags |= $flag;
}
//Save definition data
//Save definition data
$definition_data = array(
'definition_name' => $this->input->post('definition_name'),
'definition_unit' => $this->input->post('definition_unit') != '' ? $this->input->post('definition_unit') : NULL,
@@ -85,8 +84,8 @@ class Attributes extends Secure_Controller
if($this->Attribute->save_definition($definition_data, $definition_id))
{
//New definition
if($definition_id == -1)
//New definition
if($definition_id == 0)
{
$definition_values = json_decode($this->input->post('definition_values'));
@@ -96,15 +95,17 @@ class Attributes extends Secure_Controller
}
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('attributes_definition_successful_adding').' '.
$definition_name, 'id' => $definition_data['definition_id']));
$definition_name, 'id' => $definition_data['definition_id']));
}
else //Existing definition
//Existing definition
else
{
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('attributes_definition_successful_updating').' '.
$definition_name, 'id' => $definition_id));
$definition_name, 'id' => $definition_id));
}
}
else//failure
//Failure
else
{
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('attributes_definition_error_adding_updating', $definition_name), 'id' => -1));
}
@@ -139,7 +140,7 @@ class Attributes extends Secure_Controller
return $definition_flag_names;
}
public function view($definition_id = -1)
public function view($definition_id = NO_DEFINITION_ID)
{
$info = $this->Attribute->get_info($definition_id);
foreach(get_object_vars($info) as $property => $value)
@@ -180,5 +181,4 @@ class Attributes extends Secure_Controller
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('attributes_definition_cannot_be_deleted')));
}
}
}
}

View File

@@ -7,11 +7,11 @@ class Config extends Secure_Controller
public function __construct()
{
parent::__construct('config');
$this->load->library('barcode_lib');
$this->load->library('sale_lib');
}
/*
* This function loads all the licenses starting with the first one being OSPOS one
*/
@@ -21,9 +21,9 @@ class Config extends Secure_Controller
$bower = FALSE;
$composer = FALSE;
$license = array();
$license[$i]['title'] = 'Open Source Point Of Sale ' . $this->config->item('application_version');
if(file_exists('license/LICENSE'))
{
$license[$i]['text'] = $this->xss_clean(file_get_contents('license/LICENSE', NULL, NULL, 0, 2000));
@@ -32,10 +32,9 @@ class Config extends Secure_Controller
{
$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.';
}
// read all the files in the dir license
$dir = new DirectoryIterator('license');
$dir = new DirectoryIterator('license'); // read all the files in the dir license
foreach($dir as $fileinfo)
{
// license files must be in couples: .version (name & version) & .license (license text)
@@ -44,13 +43,13 @@ class Config extends Secure_Controller
if($fileinfo->getExtension() == 'version')
{
++$i;
$basename = 'license/' . $fileinfo->getBasename('.version');
$license[$i]['title'] = $this->xss_clean(file_get_contents($basename . '.version', NULL, NULL, 0, 100));
$license_text_file = $basename . '.license';
if(file_exists($license_text_file))
{
$license[$i]['text'] = $this->xss_clean(file_get_contents($license_text_file , NULL, NULL, 0, 2000));
@@ -72,17 +71,17 @@ class Config extends Secure_Controller
}
}
}
// attach the licenses from the LICENSES file generated by bower
if($composer)
{
++$i;
$license[$i]['title'] = 'Composer Libraries';
$license[$i]['text'] = '';
$file = file_get_contents('license/composer.LICENSES');
$array = json_decode($file, TRUE);
foreach($array as $key => $val)
{
if(is_array($val) && $key == 'dependencies')
@@ -92,18 +91,18 @@ class Config extends Secure_Controller
if(is_array($val1))
{
$license[$i]['text'] .= 'component: ' . $key1 . "\n";
foreach($val1 as $key2 => $val2)
{
if(is_array($val2))
{
$license[$i]['text'] .= $key2 . ': ';
foreach($val2 as $key3 => $val3)
{
$license[$i]['text'] .= $val3 . ' ';
}
$license[$i]['text'] .= "\n";
}
else
@@ -111,7 +110,7 @@ class Config extends Secure_Controller
$license[$i]['text'] .= $key2 . ': ' . $val2 . "\n";
}
}
$license[$i]['text'] .= "\n";
}
else
@@ -121,37 +120,37 @@ class Config extends Secure_Controller
}
}
}
$license[$i]['text'] = $this->xss_clean($license[$i]['text']);
}
// attach the licenses from the LICENSES file generated by bower
if($bower)
{
++$i;
$license[$i]['title'] = 'JS Plugins';
$license[$i]['text'] = '';
$file = file_get_contents('license/bower.LICENSES');
$array = json_decode($file, TRUE);
foreach($array as $key => $val)
{
if(is_array($val))
{
$license[$i]['text'] .= 'component: ' . $key . "\n";
foreach($val as $key1 => $val1)
{
if(is_array($val1))
{
$license[$i]['text'] .= $key1 . ': ';
foreach($val1 as $key2 => $val2)
{
$license[$i]['text'] .= $val2 . ' ';
}
$license[$i]['text'] .= "\n";
}
else
@@ -159,27 +158,27 @@ class Config extends Secure_Controller
$license[$i]['text'] .= $key1 . ': ' . $val1 . "\n";
}
}
$license[$i]['text'] .= "\n";
}
}
$license[$i]['text'] = $this->xss_clean($license[$i]['text']);
}
return $license;
}
/*
* This function loads all the available themes in the dist/bootswatch directory
*/
private function _themes()
{
$themes = array();
// read all themes in the dist folder
$dir = new DirectoryIterator('dist/bootswatch');
foreach($dir as $dirinfo)
{
if($dirinfo->isDir() && !$dirinfo->isDot() && $dirinfo->getFileName() != 'fonts')
@@ -188,12 +187,12 @@ class Config extends Secure_Controller
$themes[$file] = $file;
}
}
asort($themes);
return $themes;
}
public function index()
{
$data['stock_locations'] = $this->Stock_location->get_all()->result_array();
@@ -209,15 +208,25 @@ class Config extends Secure_Controller
$data['tax_category_options'] = $this->tax_lib->get_tax_category_options();
$data['tax_jurisdiction_options'] = $this->tax_lib->get_tax_jurisdiction_options();
$data['show_office_group'] = $this->Module->get_show_office_group();
$data['currency_code'] = $this->config->item('currency_code');
$data = $this->xss_clean($data);
// load all the license statements, they are already XSS cleaned in the private function
$data['licenses'] = $this->_licenses();
// load all the themes, already XSS cleaned in the private function
$data['themes'] = $this->_themes();
$data['mailchimp'] = array();
//Load General related fields
$image_allowed_types = array('jpg','jpeg','gif','svg','webp','bmp','png','tif','tiff');
$data['image_allowed_types'] = array_combine($image_allowed_types,$image_allowed_types);
$data['selected_image_allowed_types'] = explode('|',$this->config->item('image_allowed_types'));
//Load Integrations Related fields
$data['mailchimp'] = array();
if($this->_check_encryption())
{
$data['mailchimp']['api_key'] = $this->encryption->decrypt($this->config->item('mailchimp_api_key'));
@@ -228,18 +237,18 @@ class Config extends Secure_Controller
$data['mailchimp']['api_key'] = '';
$data['mailchimp']['list_id'] = '';
}
// load mailchimp lists associated to the given api key, already XSS cleaned in the private function
$data['mailchimp']['lists'] = $this->_mailchimp();
$this->load->view("configs/manage", $data);
}
public function save_info()
{
$upload_success = $this->_handle_logo_upload();
$upload_data = $this->upload->data();
$batch_save_data = array(
'company' => $this->input->post('company'),
'address' => $this->input->post('address'),
@@ -249,7 +258,7 @@ class Config extends Secure_Controller
'website' => $this->input->post('website'),
'return_policy' => $this->input->post('return_policy')
);
if(!empty($upload_data['orig_name']))
{
// XSS file image sanity check
@@ -258,18 +267,18 @@ class Config extends Secure_Controller
$batch_save_data['company_logo'] = $upload_data['raw_name'] . $upload_data['file_ext'];
}
}
$result = $this->Appconfig->batch_save($batch_save_data);
$success = $upload_success && $result ? TRUE : FALSE;
$message = $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully');
$message = $upload_success ? $message : strip_tags($this->upload->display_errors());
echo json_encode(array(
'success' => $success,
'message' => $message
));
}
public function save_general()
{
$batch_save_data = array(
@@ -283,6 +292,10 @@ class Config extends Secure_Controller
'lines_per_page' => $this->input->post('lines_per_page'),
'notify_horizontal_position' => $this->input->post('notify_horizontal_position'),
'notify_vertical_position' => $this->input->post('notify_vertical_position'),
'image_max_width' => $this->input->post('image_max_width'),
'image_max_height' => $this->input->post('image_max_height'),
'image_max_size' => $this->input->post('image_max_size'),
'image_allowed_types' => implode('|', $this->input->post('image_allowed_types')),
'gcaptcha_enable' => $this->input->post('gcaptcha_enable') != NULL,
'gcaptcha_secret_key' => $this->input->post('gcaptcha_secret_key'),
'gcaptcha_site_key' => $this->input->post('gcaptcha_site_key'),
@@ -292,46 +305,71 @@ class Config extends Secure_Controller
'giftcard_number' => $this->input->post('giftcard_number'),
'derive_sale_quantity' => $this->input->post('derive_sale_quantity') != NULL,
'multi_pack_enabled' => $this->input->post('multi_pack_enabled') != NULL,
'include_hsn' => $this->input->post('include_hsn') != NULL
'include_hsn' => $this->input->post('include_hsn') != NULL,
'category_dropdown' => $this->input->post('category_dropdown') != NULL
);
$this->Module->set_show_office_group($this->input->post('show_office_group') != NULL);
if($batch_save_data['category_dropdown'] == 1)
{
$definition_data['definition_name'] = 'ospos_category';
$definition_data['definition_flags'] = 0;
$definition_data['definition_type'] = 'DROPDOWN';
$definition_data['definition_id'] = CATEGORY_DEFINITION_ID;
$definition_data['deleted'] = 0;
$this->Attribute->save_definition($definition_data, CATEGORY_DEFINITION_ID);
}
else if($batch_save_data['category_dropdown'] == NO_DEFINITION_ID)
{
$this->Attribute->delete_definition(CATEGORY_DEFINITION_ID);
}
$result = $this->Appconfig->batch_save($batch_save_data);
$success = $result ? TRUE : FALSE;
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
));
}
public function ajax_check_number_locale()
{
$number_locale = $this->input->post('number_locale');
$save_number_locale = $this->input->post('save_number_locale');
$fmt = new \NumberFormatter($number_locale, \NumberFormatter::CURRENCY);
$currency_symbol = empty($this->input->post('currency_symbol')) ? $fmt->getSymbol(\NumberFormatter::CURRENCY_SYMBOL) : $this->input->post('currency_symbol');
$currency_code = empty($this->input->post('currency_code')) ? $fmt->getTextAttribute(\NumberFormatter::CURRENCY_CODE) : $this->input->post('currency_code');
if($number_locale != $save_number_locale)
{
$currency_symbol = $fmt->getSymbol(\NumberFormatter::CURRENCY_SYMBOL);
$currency_code = $fmt->getTextAttribute(\NumberFormatter::CURRENCY_CODE);
$save_number_locale = $number_locale;
}
else
{
$currency_symbol = empty($this->input->post('currency_symbol')) ? $fmt->getSymbol(\NumberFormatter::CURRENCY_SYMBOL) : $this->input->post('currency_symbol');
$currency_code = empty($this->input->post('currency_code')) ? $fmt->getTextAttribute(\NumberFormatter::CURRENCY_CODE) : $this->input->post('currency_code');
}
if($this->input->post('thousands_separator') == 'false')
{
$fmt->setAttribute(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL, '');
}
$fmt->setSymbol(\NumberFormatter::CURRENCY_SYMBOL, $currency_symbol);
$fmt->setTextAttribute(\NumberFormatter::CURRENCY_CODE, $currency_code);
$number_local_example = $fmt->format(1234567890.12300);
echo json_encode(array(
'success' => $number_local_example != FALSE,
'save_number_locale' => $save_number_locale,
'number_locale_example' => $number_local_example,
'currency_symbol' => $currency_symbol,
'currency_code' => $currency_code,
'thousands_separator' => $fmt->getAttribute(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL) != ''
));
}
public function save_locale()
{
$exploded = explode(":", $this->input->post('language'));
@@ -343,7 +381,7 @@ class Config extends Secure_Controller
'timezone' => $this->input->post('timezone'),
'dateformat' => $this->input->post('dateformat'),
'timeformat' => $this->input->post('timeformat'),
'thousands_separator' => $this->input->post('thousands_separator'),
'thousands_separator' => !empty($this->input->post('thousands_separator')),
'number_locale' => $this->input->post('number_locale'),
'currency_decimals' => $this->input->post('currency_decimals'),
'tax_decimals' => $this->input->post('tax_decimals'),
@@ -355,25 +393,25 @@ class Config extends Secure_Controller
'cash_rounding_code' => $this->input->post('cash_rounding_code'),
'financial_year' => $this->input->post('financial_year')
);
$result = $this->Appconfig->batch_save($batch_save_data);
$success = $result ? TRUE : FALSE;
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
));
}
public function save_email()
{
$password = '';
if($this->_check_encryption())
{
$password = $this->encryption->encrypt($this->input->post('smtp_pass'));
}
$batch_save_data = array(
'protocol' => $this->input->post('protocol'),
'mailpath' => $this->input->post('mailpath'),
@@ -384,50 +422,50 @@ class Config extends Secure_Controller
'smtp_timeout' => $this->input->post('smtp_timeout'),
'smtp_crypto' => $this->input->post('smtp_crypto')
);
$result = $this->Appconfig->batch_save($batch_save_data);
$success = $result ? TRUE : FALSE;
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
));
}
public function save_message()
{
$password = '';
if($this->_check_encryption())
{
$password = $this->encryption->encrypt($this->input->post('msg_pwd'));
}
$batch_save_data = array(
'msg_msg' => $this->input->post('msg_msg'),
'msg_uid' => $this->input->post('msg_uid'),
'msg_pwd' => $password,
'msg_src' => $this->input->post('msg_src')
);
$result = $this->Appconfig->batch_save($batch_save_data);
$success = $result ? TRUE : FALSE;
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
));
}
/*
* This function fetches all the available lists from Mailchimp for the given API key
*/
private function _mailchimp($api_key = '')
{
$this->load->library('mailchimp_lib', array('api_key' => $api_key));
$result = array();
if(($lists = $this->mailchimp_lib->getLists()) !== FALSE)
{
if(is_array($lists) && !empty($lists['lists']) && is_array($lists['lists']))
@@ -439,10 +477,10 @@ class Config extends Secure_Controller
}
}
}
return $result;
}
/*
AJAX call from mailchimp config form to fetch the Mailchimp lists when a valid API key is inserted
*/
@@ -451,75 +489,75 @@ class Config extends Secure_Controller
// load mailchimp lists associated to the given api key, already XSS cleaned in the private function
$lists = $this->_mailchimp($this->input->post('mailchimp_api_key'));
$success = count($lists) > 0 ? TRUE : FALSE;
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_mailchimp_key_' . ($success ? '' : 'un') . 'successfully'),
'mailchimp_lists' => $lists
));
}
public function save_mailchimp()
{
$api_key = '';
$list_id = '';
if($this->_check_encryption())
{
$api_key = $this->encryption->encrypt($this->input->post('mailchimp_api_key'));
$list_id = $this->encryption->encrypt($this->input->post('mailchimp_list_id'));
}
$batch_save_data = array(
'mailchimp_api_key' => $api_key,
'mailchimp_list_id' => $list_id
);
$result = $this->Appconfig->batch_save($batch_save_data);
$success = $result ? TRUE : FALSE;
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
));
}
public function ajax_stock_locations()
{
$stock_locations = $this->Stock_location->get_all()->result_array();
$stock_locations = $this->xss_clean($stock_locations);
$this->load->view('partial/stock_locations', array('stock_locations' => $stock_locations));
}
public function ajax_dinner_tables()
{
$dinner_tables = $this->Dinner_table->get_all()->result_array();
$dinner_tables = $this->xss_clean($dinner_tables);
$this->load->view('partial/dinner_tables', array('dinner_tables' => $dinner_tables));
}
public function ajax_tax_categories()
{
$tax_categories = $this->Tax->get_all_tax_categories()->result_array();
$tax_categories = $this->xss_clean($tax_categories);
$this->load->view('partial/tax_categories', array('tax_categories' => $tax_categories));
}
public function ajax_customer_rewards()
{
$customer_rewards = $this->Customer_rewards->get_all()->result_array();
$customer_rewards = $this->xss_clean($customer_rewards);
$this->load->view('partial/customer_rewards', array('customer_rewards' => $customer_rewards));
}
private function _clear_session_state()
{
$this->sale_lib->clear_sale_location();
@@ -530,32 +568,33 @@ class Config extends Secure_Controller
$this->receiving_lib->clear_stock_destination();
$this->receiving_lib->clear_all();
}
public function save_locations()
{
$this->db->trans_start();
$not_to_delete = array();
foreach($this->input->post() as $key => $value)
{
if(strstr($key, 'stock_location'))
{
$location_id = preg_replace("/.*?_(\d+)$/", "$1", $key);
// save or update
$location_data = array('location_name' => $value);
if($this->Stock_location->save($location_data, $location_id))
foreach ($value as $location_id => $location_name)
{
$location_id = $this->Stock_location->get_location_id($value);
$not_to_delete[] = $location_id;
$this->_clear_session_state();
$location_data = array('location_name' => $location_name);
if($this->Stock_location->save($location_data, $location_id))
{
$location_id = $this->Stock_location->get_location_id($location_name);
$not_to_delete[] = $location_id;
$this->_clear_session_state();
}
}
}
}
// all locations not available in post will be deleted now
$deleted_locations = $this->Stock_location->get_all()->result_array();
foreach($deleted_locations as $location => $location_data)
{
if(!in_array($location_data['location_id'], $not_to_delete))
@@ -563,25 +602,25 @@ class Config extends Secure_Controller
$this->Stock_location->delete($location_data['location_id']);
}
}
$this->db->trans_complete();
$success = $this->db->trans_status();
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
));
}
public function save_tables()
{
$this->db->trans_start();
$dinner_table_enable = $this->input->post('dinner_table_enable') != NULL;
$this->Appconfig->save('dinner_table_enable', $dinner_table_enable);
if($dinner_table_enable)
{
$not_to_delete = array();
@@ -591,6 +630,7 @@ class Config extends Secure_Controller
{
$dinner_table_id = preg_replace("/.*?_(\d+)$/", "$1", $key);
$not_to_delete[] = $dinner_table_id;
// save or update
$table_data = array('name' => $value);
if($this->Dinner_table->save($table_data, $dinner_table_id))
@@ -599,10 +639,10 @@ class Config extends Secure_Controller
}
}
}
// all tables not available in post will be deleted now
$deleted_tables = $this->Dinner_table->get_all()->result_array();
foreach($deleted_tables as $dinner_tables => $table)
{
if(!in_array($table['dinner_table_id'], $not_to_delete))
@@ -611,25 +651,25 @@ class Config extends Secure_Controller
}
}
}
$this->db->trans_complete();
$success = $this->db->trans_status();
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
));
}
public function save_tax()
{
$this->db->trans_start();
$batch_save_data = array(
'default_tax_1_rate' => parse_decimals($this->input->post('default_tax_1_rate')),
'default_tax_1_rate' => parse_tax($this->input->post('default_tax_1_rate')),
'default_tax_1_name' => $this->input->post('default_tax_1_name'),
'default_tax_2_rate' => parse_decimals($this->input->post('default_tax_2_rate')),
'default_tax_2_rate' => parse_tax($this->input->post('default_tax_2_rate')),
'default_tax_2_name' => $this->input->post('default_tax_2_name'),
'tax_included' => $this->input->post('tax_included') != NULL,
'use_destination_based_tax' => $this->input->post('use_destination_based_tax') != NULL,
@@ -638,29 +678,29 @@ class Config extends Secure_Controller
'default_tax_jurisdiction' => $this->input->post('default_tax_jurisdiction'),
'tax_id' => $this->input->post('tax_id')
);
$success = $this->Appconfig->batch_save($batch_save_data) ? TRUE : FALSE;
$this->db->trans_complete();
$success &= $this->db->trans_status();
$message = $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully');
echo json_encode(array(
'success' => $success,
'message' => $message
));
}
public function save_rewards()
{
$this->db->trans_start();
$customer_reward_enable = $this->input->post('customer_reward_enable') != NULL;
$this->Appconfig->save('customer_reward_enable', $customer_reward_enable);
if($customer_reward_enable)
{
$not_to_delete = array();
@@ -679,7 +719,7 @@ class Config extends Secure_Controller
$array_save[$customer_reward_id]['points_percent'] = $value;
}
}
if(!empty($array_save))
{
foreach($array_save as $key => $value)
@@ -689,10 +729,10 @@ class Config extends Secure_Controller
$this->Customer_rewards->save($package_data, $key);
}
}
// all packages not available in post will be deleted now
$deleted_packages = $this->Customer_rewards->get_all()->result_array();
foreach($deleted_packages as $customer_rewards => $reward_category)
{
if(!in_array($reward_category['package_id'], $not_to_delete))
@@ -701,17 +741,17 @@ class Config extends Secure_Controller
}
}
}
$this->db->trans_complete();
$success = $this->db->trans_status();
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
));
}
public function save_barcode()
{
$batch_save_data = array(
@@ -731,16 +771,16 @@ class Config extends Secure_Controller
'barcode_content' => $this->input->post('barcode_content'),
'barcode_formats' => json_encode($this->input->post('barcode_formats'))
);
$result = $this->Appconfig->batch_save($batch_save_data);
$success = $result ? TRUE : FALSE;
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
));
}
public function save_receipt()
{
$batch_save_data = array (
@@ -750,7 +790,8 @@ class Config extends Secure_Controller
'email_receipt_check_behaviour' => $this->input->post('email_receipt_check_behaviour'),
'print_receipt_check_behaviour' => $this->input->post('print_receipt_check_behaviour'),
'receipt_show_company_name' => $this->input->post('receipt_show_company_name') != NULL,
'receipt_show_taxes' => $this->input->post('receipt_show_taxes') != NULL,
'receipt_show_taxes' => ($this->input->post('receipt_show_taxes') != NULL),
'receipt_show_tax_ind' => ($this->input->post('receipt_show_tax_ind') != NULL),
'receipt_show_total_discount' => $this->input->post('receipt_show_total_discount') != NULL,
'receipt_show_description' => $this->input->post('receipt_show_description') != NULL,
'receipt_show_serialnumber' => $this->input->post('receipt_show_serialnumber') != NULL,
@@ -762,21 +803,20 @@ class Config extends Secure_Controller
'print_bottom_margin' => $this->input->post('print_bottom_margin'),
'print_right_margin' => $this->input->post('print_right_margin')
);
$result = $this->Appconfig->batch_save($batch_save_data);
$success = $result ? TRUE : FALSE;
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
));
}
public function save_invoice()
{
$batch_save_data = array (
'invoice_enable' => $this->input->post('invoice_enable') != NULL,
'default_register_mode' => $this->input->post('default_register_mode'),
'sales_invoice_format' => $this->input->post('sales_invoice_format'),
'sales_quote_format' => $this->input->post('sales_quote_format'),
'recv_invoice_format' => $this->input->post('recv_invoice_format'),
@@ -791,10 +831,10 @@ class Config extends Secure_Controller
'last_used_work_order_number' => $this->input->post('last_used_work_order_number'),
'invoice_type' => $this->input->post('invoice_type')
);
$result = $this->Appconfig->batch_save($batch_save_data);
$success = $result ? TRUE : FALSE;
// Update the register mode with the latest change so that if the user
// switches immediately back to the register the mode reflects the change
if($success == TRUE)
@@ -808,24 +848,24 @@ class Config extends Secure_Controller
$this->sale_lib->set_mode('sale');
}
}
echo json_encode(array(
'success' => $success,
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
));
}
public function remove_logo()
{
$result = $this->Appconfig->batch_save(array('company_logo' => ''));
echo json_encode(array('success' => $result));
}
private function _handle_logo_upload()
{
$this->load->helper('directory');
// load upload library
$config = array('upload_path' => './uploads/',
'allowed_types' => 'gif|jpg|png',
@@ -835,71 +875,72 @@ class Config extends Secure_Controller
'file_name' => 'company_logo');
$this->load->library('upload', $config);
$this->upload->do_upload('company_logo');
return strlen($this->upload->display_errors()) == 0 || !strcmp($this->upload->display_errors(), '<p>'.$this->lang->line('upload_no_file_selected').'</p>');
}
private function _check_encryption()
{
$encryption_key = $this->config->item('encryption_key');
// check if the encryption_key config item is the default one
if($encryption_key == '' || $encryption_key == 'YOUR KEY')
{
// Config path
$config_path = APPPATH . 'config/config.php';
// Open the file
$config = file_get_contents($config_path);
// $key will be assigned a 32-byte (256-bit) hex-encoded random key
$key = bin2hex($this->encryption->create_key(32));
// set the encryption key in the config item
$this->config->set_item('encryption_key', $key);
// replace the empty placeholder with a real randomly generated encryption key
$config = preg_replace("/(.*encryption_key.*)('');/", "$1'$key';", $config);
$result = FALSE;
// Chmod the file
@chmod($config_path, 0777);
@chmod($config_path, 0770);
// Verify file permissions
if(is_writable($config_path))
{
// Write the new config.php file
$handle = @fopen($config_path, 'w+');
// Write the file
$result = (fwrite($handle, $config) === FALSE) ? FALSE : TRUE;
fclose($handle);
}
// Chmod the file
@chmod($config_path, 0444);
@chmod($config_path, 0440);
return $result;
}
return TRUE;
}
public function backup_db()
{
$employee_id = $this->Employee->get_logged_in_employee_info()->person_id;
if($this->Employee->has_module_grant('config', $employee_id))
{
$this->load->dbutil();
$prefs = array(
'format' => 'zip',
'filename' => 'ospos.sql'
);
$backup = $this->dbutil->backup($prefs);
$file_name = 'ospos-' . date("Y-m-d-H-i-s") .'.zip';
$save = 'uploads/' . $file_name;
$this->load->helper('download');
@@ -907,7 +948,7 @@ class Config extends Secure_Controller
{
ob_end_clean();
}
force_download($file_name, $backup);
}
else
@@ -916,4 +957,4 @@ class Config extends Secure_Controller
}
}
}
?>
?>

View File

@@ -347,25 +347,25 @@ class Customers extends Persons
}
/*
Customers import from excel spreadsheet
Customers import from csv spreadsheet
*/
public function excel()
public function csv()
{
$name = 'import_customers.csv';
$data = file_get_contents('../' . $name);
force_download($name, $data);
}
public function excel_import()
public function csv_import()
{
$this->load->view('customers/form_excel_import', NULL);
$this->load->view('customers/form_csv_import', NULL);
}
public function do_excel_import()
public function do_csv_import()
{
if($_FILES['file_path']['error'] != UPLOAD_ERR_OK)
{
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('customers_excel_import_failed')));
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('customers_csv_import_failed')));
}
else
{
@@ -446,18 +446,18 @@ class Customers extends Persons
if(count($failCodes) > 0)
{
$message = $this->lang->line('customers_excel_import_partially_failed') . ' (' . count($failCodes) . '): ' . implode(', ', $failCodes);
$message = $this->lang->line('customers_csv_import_partially_failed') . ' (' . count($failCodes) . '): ' . implode(', ', $failCodes);
echo json_encode(array('success' => FALSE, 'message' => $message));
}
else
{
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('customers_excel_import_success')));
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('customers_csv_import_success')));
}
}
else
{
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('customers_excel_import_nodata_wrongformat')));
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('customers_csv_import_nodata_wrongformat')));
}
}
}

View File

@@ -35,6 +35,13 @@ class Employees extends Persons
/*
Gives search suggestions based on what is being searched for
*/
public function suggest()
{
$suggestions = $this->xss_clean($this->Employee->get_search_suggestions($this->input->get('term'), TRUE));
echo json_encode($suggestions);
}
public function suggest_search()
{
$suggestions = $this->xss_clean($this->Employee->get_search_suggestions($this->input->post('term')));

View File

@@ -4,7 +4,7 @@ require_once("Secure_Controller.php");
class Home extends Secure_Controller
{
function __construct()
public function __construct()
{
parent::__construct(NULL, NULL, 'home');
}
@@ -20,7 +20,7 @@ class Home extends Secure_Controller
}
/*
Loads the change employee password form
Load "change employee password" form
*/
public function change_password($employee_id = -1)
{

View File

@@ -16,11 +16,10 @@ class Items extends Secure_Controller
$this->session->set_userdata('allow_temp_items', 0);
$data['table_headers'] = $this->xss_clean(get_items_manage_table_headers());
$data['stock_location'] = $this->xss_clean($this->item_lib->get_item_location());
$data['stock_locations'] = $this->xss_clean($this->Stock_location->get_allowed_locations());
// filters that will be loaded in the multiselect dropdown
//Filters that will be loaded in the multiselect dropdown
$data['filters'] = array('empty_upc' => $this->lang->line('items_empty_upc_items'),
'low_inventory' => $this->lang->line('items_low_inventory_items'),
'is_serialized' => $this->lang->line('items_serialized_items'),
@@ -59,7 +58,7 @@ class Items extends Secure_Controller
'temporary' => FALSE,
'definition_ids' => array_keys($definition_names));
// check if any filter is set in the multiselect dropdown
//Check if any filter is set in the multiselect dropdown
$filledup = array_fill_keys($this->input->get('filters'), TRUE);
$filters = array_merge($filters, $filledup);
@@ -85,16 +84,17 @@ class Items extends Secure_Controller
$this->load->helper('file');
$this->load->library('image_lib');
// in this context, $pic_filename always has .ext
//In this context, $pic_filename always has .ext
$ext = pathinfo($pic_filename, PATHINFO_EXTENSION);
$images = glob('./uploads/item_pics/' . $pic_filename);
// make sure we pick only the file name, without extension
//Make sure we pick only the file name, without extension
$base_path = './uploads/item_pics/' . pathinfo($pic_filename, PATHINFO_FILENAME);
if(sizeof($images) > 0)
{
$image_path = $images[0];
$thumb_path = $base_path . $this->image_lib->thumb_marker . '.' . $ext;
if(sizeof($images) < 2)
{
$config['image_library'] = 'gd2';
@@ -131,7 +131,6 @@ class Items extends Secure_Controller
echo json_encode($suggestions);
}
public function suggest_low_sell()
{
$suggestions = $this->xss_clean($this->Item->get_low_sell_suggestions($this->input->post_get('name')));
@@ -139,7 +138,6 @@ class Items extends Secure_Controller
echo json_encode($suggestions);
}
public function suggest_kits()
{
$suggestions = $this->xss_clean($this->Item->get_kit_search_suggestions($this->input->post_get('term'),
@@ -188,12 +186,12 @@ class Items extends Secure_Controller
$data = array();
}
// allow_temp_items is set in the index function of items.php or sales.php
//allow_temp_items is set in the index function of items.php or sales.php
$data['allow_temp_item'] = $this->session->userdata('allow_temp_items');
$data['item_tax_info'] = $this->xss_clean($this->Item_taxes->get_info($item_id));
$data['default_tax_1_rate'] = '';
$data['default_tax_2_rate'] = '';
$data['item_type_disabled'] = !$this->Employee->has_grant('item_kits', $this->Employee->get_logged_in_employee_info()->person_id);
$data['item_kit_disabled'] = !$this->Employee->has_grant('item_kits', $this->Employee->get_logged_in_employee_info()->person_id);
$data['definition_values'] = $this->Attribute->get_attributes_by_item($item_id);
$data['definition_names'] = $this->Attribute->get_definition_names();
@@ -229,6 +227,17 @@ class Items extends Secure_Controller
$use_destination_based_tax = (boolean)$this->config->item('use_destination_based_tax');
$data['include_hsn'] = $this->config->item('include_hsn') == '1';
$data['category_dropdown'] = $this->config->item('category_dropdown');
if($data['category_dropdown'] == 1)
{
$categories = array('' => $this->lang->line('items_none'));
$category_options = $this->Attribute->get_definition_values(-1);
$category_options = array_combine($category_options,$category_options); //Overwrite indexes with values for saving in items table instead of attributes
$data['categories'] = array_merge($categories,$category_options);
$data['selected_category'] = $item_info->category;
}
if($item_id == -1)
{
@@ -237,26 +246,33 @@ class Items extends Secure_Controller
$item_info->receiving_quantity = 1;
$item_info->reorder_level = 1;
$item_info->item_type = ITEM; // standard
$item_info->item_type = ITEM; //Standard
$item_info->item_id = $item_id;
$item_info->stock_type = HAS_STOCK;
$item_info->tax_category_id = NULL;
$item_info->qty_per_pack = 1;
$item_info->pack_name = $this->lang->line('items_default_pack_name');
$data['hsn_code'] = '';
if($use_destination_based_tax)
{
$item_info->tax_category_id = $this->config->item('default_tax_category');
}
}
$data['standard_item_locked'] = ($data['item_kit_disabled'] && $item_info->item_type == ITEM_KIT
&& !$data['allow_temp_item']
& !($this->config->item('derive_sale_quantity') == '1'));
$data['item_info'] = $item_info;
$suppliers = array('' => $this->lang->line('items_none'));
foreach($this->Supplier->get_all()->result_array() as $row)
{
$suppliers[$this->xss_clean($row['person_id'])] = $this->xss_clean($row['company_name']);
}
$data['suppliers'] = $suppliers;
$data['selected_supplier'] = $item_info->supplier_id;
@@ -296,18 +312,21 @@ class Items extends Secure_Controller
$data['logo_exists'] = $item_info->pic_filename != '';
$ext = pathinfo($item_info->pic_filename, PATHINFO_EXTENSION);
if($ext == '')
{
// if file extension is not found guess it (legacy)
//If file extension is not found guess it (legacy)
$images = glob('./uploads/item_pics/' . $item_info->pic_filename . '.*');
}
else
{
// else just pick that file
//Else just pick that file
$images = glob('./uploads/item_pics/' . $item_info->pic_filename);
}
$data['image_path'] = sizeof($images) > 0 ? base_url($images[0]) : '';
$stock_locations = $this->Stock_location->get_undeleted_all()->result_array();
$data['image_path'] = sizeof($images) > 0 ? base_url($images[0]) : '';
$stock_locations = $this->Stock_location->get_undeleted_all()->result_array();
foreach($stock_locations as $location)
{
$location = $this->xss_clean($location);
@@ -389,28 +408,26 @@ class Items extends Secure_Controller
$data['barcode_config'] = $config;
// check the list of items to see if any item_number field is empty
//Check the list of items to see if any item_number field is empty
foreach($result as &$item)
{
$item = $this->xss_clean($item);
// update the barcode field if empty / NULL with the newly generated barcode
//Update the barcode field if empty / NULL with the newly generated barcode
if(empty($item['item_number']) && $this->config->item('barcode_generate_if_empty'))
{
// get the newly generated barcode
// get the newly generated barcode
$barcode_instance = Barcode_lib::barcode_instance($item, $config);
$item['item_number'] = $barcode_instance->getData();
$save_item = array('item_number' => $item['item_number']);
// update the item in the database in order to save the barcode field
$this->Item->save($save_item, $item['item_id']);
$this->Item->save($save_item, $item['item_id']); // update the item in the database in order to save the barcode field
}
}
$data['items'] = $result;
// display barcodes
$this->load->view('barcodes/barcode_sheet', $data);
$this->load->view('barcodes/barcode_sheet', $data); // display barcodes
}
public function attributes($item_id)
@@ -475,7 +492,7 @@ class Items extends Secure_Controller
$upload_success = $this->_handle_image_upload();
$upload_data = $this->upload->data();
$receiving_quantity = parse_decimals($this->input->post('receiving_quantity'));
$receiving_quantity = parse_quantity($this->input->post('receiving_quantity'));
$item_type = $this->input->post('item_type') == NULL ? ITEM : $this->input->post('item_type');
if($receiving_quantity == '0' && $item_type!= ITEM_TEMP)
@@ -484,7 +501,7 @@ class Items extends Secure_Controller
}
$default_pack_name = $this->lang->line('items_default_pack_name');
//Save item data
//Save item data
$item_data = array(
'name' => $this->input->post('name'),
'description' => $this->input->post('description'),
@@ -495,7 +512,7 @@ class Items extends Secure_Controller
'item_number' => $this->input->post('item_number') == '' ? NULL : $this->input->post('item_number'),
'cost_price' => parse_decimals($this->input->post('cost_price')),
'unit_price' => parse_decimals($this->input->post('unit_price')),
'reorder_level' => parse_decimals($this->input->post('reorder_level')),
'reorder_level' => parse_quantity($this->input->post('reorder_level')),
'receiving_quantity' => $receiving_quantity,
'allow_alt_description' => $this->input->post('allow_alt_description') != NULL,
'is_serialized' => $this->input->post('is_serialized') != NULL,
@@ -514,6 +531,7 @@ class Items extends Secure_Controller
}
$x = $this->input->post('tax_category_id');
if(!isset($x))
{
$item_data['tax_category_id'] = '';
@@ -525,7 +543,7 @@ class Items extends Secure_Controller
if(!empty($upload_data['orig_name']))
{
// XSS file image sanity check
// XSS file image sanity check
if($this->xss_clean($upload_data['raw_name'], TRUE) === TRUE)
{
$item_data['pic_filename'] = $upload_data['raw_name'];
@@ -538,7 +556,8 @@ class Items extends Secure_Controller
{
$success = TRUE;
$new_item = FALSE;
//New item
//New item
if($item_id == -1)
{
$item_id = $item_data['item_id'];
@@ -555,7 +574,7 @@ class Items extends Secure_Controller
$count = count($tax_percents);
for ($k = 0; $k < $count; ++$k)
{
$tax_percentage = parse_decimals($tax_percents[$k]);
$tax_percentage = parse_tax($tax_percents[$k]);
if(is_numeric($tax_percentage))
{
$items_taxes_data[] = array('name' => $tax_names[$k], 'percent' => $tax_percentage);
@@ -564,11 +583,11 @@ class Items extends Secure_Controller
$success &= $this->Item_taxes->save($items_taxes_data, $item_id);
}
//Save item quantity
//Save item quantity
$stock_locations = $this->Stock_location->get_undeleted_all()->result_array();
foreach($stock_locations as $location)
{
$updated_quantity = parse_decimals($this->input->post('quantity_' . $location['location_id']));
$updated_quantity = parse_quantity($this->input->post('quantity_' . $location['location_id']));
if($item_data['item_type'] == ITEM_TEMP)
{
$updated_quantity = 0;
@@ -577,8 +596,8 @@ class Items extends Secure_Controller
'location_id' => $location['location_id'],
'quantity' => $updated_quantity);
$item_quantity = $this->Item_quantity->get_item_quantity($item_id, $location['location_id']);
if($item_quantity->quantity != $updated_quantity || $new_item)
{
$success &= $this->Item_quantity->save($location_detail, $item_id, $location['location_id']);
@@ -596,10 +615,11 @@ class Items extends Secure_Controller
}
}
// Save item attributes
// Save item attributes
$attribute_links = $this->input->post('attribute_links') != NULL ? $this->input->post('attribute_links') : array();
$attribute_ids = $this->input->post('attribute_ids');
$this->Attribute->delete_link($item_id);
foreach($attribute_links as $definition_id => $attribute_id)
{
$definition_type = $this->Attribute->get_info($definition_id)->definition_type;
@@ -623,7 +643,7 @@ class Items extends Secure_Controller
echo json_encode(array('success' => FALSE, 'message' => $message, 'id' => $item_id));
}
}
else // failure
else //Failure
{
$message = $this->xss_clean($this->lang->line('items_error_adding_updating') . ' ' . $item_data['name']);
@@ -653,17 +673,17 @@ class Items extends Secure_Controller
echo !$exists ? 'true' : 'false';
}
/*
* Let files be uploaded with their original name
*/
private function _handle_image_upload()
{
/* Let files be uploaded with their original name */
// load upload library
//Load upload library
$config = array('upload_path' => './uploads/item_pics/',
'allowed_types' => 'gif|jpg|png',
'max_size' => '100',
'max_width' => '640',
'max_height' => '480'
);
'allowed_types' => $this->config->item('image_allowed_types'),
'max_size' => $this->config->item('image_max_size'),
'max_width' => $this->config->item('image_max_width'),
'max_height' => $this->config->item('image_max_height'));
$this->load->library('upload', $config);
$this->upload->do_upload('item_image');
@@ -689,17 +709,17 @@ class Items extends Secure_Controller
'trans_user' => $employee_id,
'trans_location' => $location_id,
'trans_comment' => $this->input->post('trans_comment'),
'trans_inventory' => parse_decimals($this->input->post('newquantity'))
'trans_inventory' => parse_quantity($this->input->post('newquantity'))
);
$this->Inventory->insert($inv_data);
//Update stock quantity
//Update stock quantity
$item_quantity = $this->Item_quantity->get_item_quantity($item_id, $location_id);
$item_quantity_data = array(
'item_id' => $item_id,
'location_id' => $location_id,
'quantity' => $item_quantity->quantity + parse_decimals($this->input->post('newquantity'))
'quantity' => $item_quantity->quantity + parse_quantity($this->input->post('newquantity'))
);
if($this->Item_quantity->save($item_quantity_data, $item_id, $location_id))
@@ -708,7 +728,7 @@ class Items extends Secure_Controller
echo json_encode(array('success' => TRUE, 'message' => $message, 'id' => $item_id));
}
else//failure
else //failure
{
$message = $this->xss_clean($this->lang->line('items_error_adding_updating') . ' ' . $cur_item_info->name);
@@ -723,7 +743,7 @@ class Items extends Secure_Controller
foreach($_POST as $key => $value)
{
//This field is nullable, so treat it differently
//This field is nullable, so treat it differently
if($key == 'supplier_id' && $value != '')
{
$item_data["$key"] = $value;
@@ -781,9 +801,9 @@ class Items extends Secure_Controller
}
/*
Items import from excel spreadsheet
Items import from csv spreadsheet
*/
public function excel()
public function csv()
{
$name = 'import_items.csv';
$allowed_locations = $this->Stock_location->get_allowed_locations();
@@ -792,19 +812,19 @@ class Items extends Secure_Controller
force_download($name, $data, TRUE);
}
public function excel_import()
public function csv_import()
{
$this->load->view('items/form_excel_import', NULL);
$this->load->view('items/form_csv_import', NULL);
}
/**
* Imports items from CSV formatted file.
*/
public function do_excel_import()
public function do_csv_import()
{
if($_FILES['file_path']['error'] != UPLOAD_ERR_OK)
{
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('items_excel_import_failed')));
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('items_csv_import_failed')));
}
else
{
@@ -818,51 +838,47 @@ class Items extends Secure_Controller
for($i = 1; $i < count($line_array); $i++)
{
$invalidated = FALSE;
$line = array_combine($keys,$this->xss_clean($line_array[$i])); //Build a XSS-cleaned associative array with the row to use to assign values
if(!empty($line))
$line = array_combine($keys,$this->xss_clean($line_array[$i])); //Build a XSS-cleaned associative array with the row to use to assign values
$item_data = array(
'name' => $line['Item Name'],
'description' => $line['Description'],
'category' => $line['Category'],
'cost_price' => $line['Cost Price'],
'unit_price' => $line['Unit Price'],
'reorder_level' => $line['Reorder Level'],
'supplier_id' => $this->Supplier->exists($line['Supplier ID']) ? $line['Supplier ID'] : NULL,
'allow_alt_description' => empty($line['Allow Alt Description'])? '0' : '1',
'is_serialized' => empty($line['Item has Serial Number'])? '0' : '1',
'hsn_code' => $line['HSN'],
'pic_filename' => $line['item_image']
);
$item_number = $line['Barcode'];
if(!empty($item_number))
{
$item_data = array(
'name' => $line['Item Name'],
'description' => $line['Description'],
'category' => $line['Category'],
'cost_price' => $line['Cost Price'],
'unit_price' => $line['Unit Price'],
'reorder_level' => $line['Reorder Level'],
'supplier_id' => $this->Supplier->exists($line['Supplier ID']) ? $line['Supplier ID'] : NULL,
'allow_alt_description' => $line['Allow Alt Description'] != '' ? '1' : '0',
'is_serialized' => $line['Item has Serial Number'] != '' ? '1' : '0',
'hsn_code' => $line['HSN'],
'pic_filename' => $line['item_image']
);
$item_number = $line['Barcode'];
if($item_number != '')
{
$item_data['item_number'] = $item_number;
$invalidated = $this->Item->item_number_exists($item_number);
}
//Sanity check of data
if(!$invalidated)
{
$invalidated = $this->data_error_check($line, $item_data);
}
}
else
{
$invalidated = TRUE;
$item_data['item_number'] = $item_number;
$invalidated = $this->Item->item_number_exists($item_number);
}
//Save to database
//Sanity check of data
if(!$invalidated)
{
$invalidated = $this->data_error_check($line, $item_data);
}
//Save to database
if(!$invalidated && $this->Item->save($item_data))
{
$this->save_tax_data($line, $item_data);
$this->save_inventory_quantities($line, $item_data);
$this->save_attribute_data($line, $item_data);
}
else //insert or update item failure
//Insert or update item failure
else
{
$failed_row = $i+1;
$failCodes[] = $failed_row;
@@ -872,25 +888,25 @@ class Items extends Secure_Controller
if(count($failCodes) > 0)
{
$message = $this->lang->line('items_excel_import_partially_failed', count($failCodes), implode(', ', $failCodes));
$message = $this->lang->line('items_csv_import_partially_failed', count($failCodes), implode(', ', $failCodes));
$this->db->trans_rollback();
echo json_encode(array('success' => FALSE, 'message' => $message));
}
else
{
$this->db->trans_commit();
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('items_excel_import_success')));
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('items_csv_import_success')));
}
}
else
{
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('items_excel_import_nodata_wrongformat')));
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('items_csv_import_nodata_wrongformat')));
}
}
}
/**
* Checks the entire line of data for errors
* Checks the entire line of data in an import file for errors
*
* @param array $line
* @param array $item_data
@@ -899,21 +915,25 @@ class Items extends Secure_Controller
*/
private function data_error_check($line, $item_data)
{
//Check for empty required fields
//Check for empty required fields
$check_for_empty = array(
$item_data['name'],
$item_data['category'],
$item_data['cost_price'],
$item_data['unit_price']
);
if(in_array('',$check_for_empty,true))
foreach($check_for_empty as $key => $val)
{
log_message("ERROR","Empty required value");
return TRUE; //Return fail on empty required fields
if (empty($val))
{
log_message("ERROR","Empty required value");
return TRUE; //Return fail on empty required fields
}
}
//Build array of fields to check for numerics
$item_data['cost_price'] = empty($item_data['cost_price']) ? 0 : 1; //Allow for zero wholesale price
//Build array of fields to check for numerics
$check_for_numeric_values = array(
$item_data['cost_price'],
$item_data['unit_price'],
@@ -923,7 +943,7 @@ class Items extends Secure_Controller
$line['Tax 2 Percent']
);
//Add in Stock Location values to check for numeric
//Add in Stock Location values to check for numeric
$allowed_locations = $this->Stock_location->get_allowed_locations();
foreach($allowed_locations as $location_id => $location_name)
@@ -931,7 +951,7 @@ class Items extends Secure_Controller
$check_for_numeric_values[] = $line['location_'. $location_name];
}
//Check for non-numeric values which require numeric
//Check for non-numeric values which require numeric
foreach($check_for_numeric_values as $value)
{
if(!is_numeric($value) && $value != '')
@@ -941,8 +961,9 @@ class Items extends Secure_Controller
}
}
//Check Attribute Data
//Check Attribute Data
$definition_names = $this->Attribute->get_definition_names();
unset($definition_names[-1]);
foreach($definition_names as $definition_name)
{
@@ -957,7 +978,7 @@ class Items extends Secure_Controller
$dropdown_values = $this->Attribute->get_definition_values($attribute_data['definition_id']);
$dropdown_values[] = '';
if(in_array($attribute_value, $dropdown_values) === FALSE)
if(in_array($attribute_value, $dropdown_values) === FALSE && !empty($attribute_value))
{
log_message("ERROR","Value: '$attribute_value' is not an acceptable DROPDOWN value");
return TRUE;
@@ -965,17 +986,17 @@ class Items extends Secure_Controller
}
else if($attribute_type == 'DECIMAL')
{
if(!is_numeric($attribute_value) && $attribute_value != '')
if(!is_numeric($attribute_value) && !empty($attribute_value))
{
log_message("ERROR","Decimal required: '$attribute_value' is not an acceptable DECIMAL value");
log_message("ERROR","'$attribute_value' is not an acceptable DECIMAL value");
return TRUE;
}
}
else if($attribute_type == 'DATETIME')
{
if(strtotime($attribute_value) === FALSE)
if(strtotime($attribute_value) === FALSE && !empty($attribute_value))
{
log_message("ERROR","Datetime required: '$attribute_value' is not an acceptable DATETIME value");
log_message("ERROR","'$attribute_value' is not an acceptable DATETIME value.");
return TRUE;
}
}
@@ -986,6 +1007,8 @@ class Items extends Secure_Controller
}
/**
* Saves attribute data found in the CSV import.
*
* @param line
* @param failCodes
* @param attribute_data
@@ -993,14 +1016,36 @@ class Items extends Secure_Controller
private function save_attribute_data($line, $item_data)
{
$definition_names = $this->Attribute->get_definition_names();
unset($definition_names[-1]);
foreach($definition_names as $definition_name)
{
if(!empty($line['attribute_' . $definition_name]))
//Create attribute value
if(!empty($line['attribute_' . $definition_name]) || $line['attribute_' . $definition_name] == '0')
{
//Create attribute value
$attribute_data = $this->Attribute->get_definition_by_name($definition_name)[0];
$status = $this->Attribute->save_value($line['attribute_' . $definition_name], $attribute_data['definition_id'], $item_data['item_id'], FALSE, $attribute_data['definition_type']);
//CHECKBOX Attribute types (zero value creates attribute and marks it as unchecked)
if($attribute_data['definition_type'] == 'CHECKBOX')
{
//FALSE and '0' value creates checkbox and marks it as unchecked.
if(strcasecmp($line['attribute_' . $definition_name],'FALSE') == 0 || $line['attribute_' . $definition_name] == '0')
{
$line['attribute_' . $definition_name] = '0';
}
else
{
$line['attribute_' . $definition_name] = '1';
}
$status = $this->Attribute->save_value($line['attribute_' . $definition_name], $attribute_data['definition_id'], $item_data['item_id'], FALSE, $attribute_data['definition_type']);
}
//All other Attribute types (0 value means attribute not created)
elseif(!empty($line['attribute_' . $definition_name]))
{
$status = $this->Attribute->save_value($line['attribute_' . $definition_name], $attribute_data['definition_id'], $item_data['item_id'], FALSE, $attribute_data['definition_type']);
}
if($status === FALSE)
{
@@ -1018,7 +1063,7 @@ class Items extends Secure_Controller
*/
private function save_inventory_quantities($line, $item_data)
{
//Quantities & Inventory Section
//Quantities & Inventory Section
$employee_id = $this->Employee->get_logged_in_employee_info()->person_id;
$emp_info = $this->Employee->get_info($employee_id);
$comment = $this->lang->line('items_inventory_CSV_import_quantity');
@@ -1031,7 +1076,7 @@ class Items extends Secure_Controller
'location_id' => $location_id
);
$excel_data = array(
$csv_data = array(
'trans_items' => $item_data['item_id'],
'trans_user' => $employee_id,
'trans_comment' => $comment,
@@ -1043,16 +1088,16 @@ class Items extends Secure_Controller
$item_quantity_data['quantity'] = $line['location_' . $location_name];
$this->Item_quantity->save($item_quantity_data, $item_data['item_id'], $location_id);
$excel_data['trans_inventory'] = $line['location_' . $location_name];
$this->Inventory->insert($excel_data);
$csv_data['trans_inventory'] = $line['location_' . $location_name];
$this->Inventory->insert($csv_data);
}
else
{
$item_quantity_data['quantity'] = 0;
$this->Item_quantity->save($item_quantity_data, $item_data['item_id'], $line[$col]);
$excel_data['trans_inventory'] = 0;
$this->Inventory->insert($excel_data);
$csv_data['trans_inventory'] = 0;
$this->Inventory->insert($csv_data);
}
}
}
@@ -1082,7 +1127,6 @@ class Items extends Secure_Controller
}
}
/**
* Guess whether file extension is not in the table field, if it isn't, then it's an old-format (formerly pic_id) field, so we guess the right filename and update the table
*
@@ -1092,7 +1136,7 @@ class Items extends Secure_Controller
{
$filename = pathinfo($item->pic_filename, PATHINFO_FILENAME);
// if the field is empty there's nothing to check
// if the field is empty there's nothing to check
if(!empty($filename))
{
$ext = pathinfo($item->pic_filename, PATHINFO_EXTENSION);
@@ -1109,4 +1153,4 @@ class Items extends Secure_Controller
}
}
}
?>
?>

View File

@@ -45,7 +45,7 @@ class Login extends CI_Controller
if (!$this->migration->is_latest())
{
set_time_limit(1200);
set_time_limit(3600);
// trigger any required upgrade before starting the application
$this->migration->latest();
}

View File

@@ -9,6 +9,7 @@ class Receivings extends Secure_Controller
parent::__construct('receivings');
$this->load->library('receiving_lib');
$this->load->library('token_lib');
$this->load->library('barcode_lib');
}
@@ -90,7 +91,7 @@ class Receivings extends Secure_Controller
$mode = $this->receiving_lib->get_mode();
$item_id_or_number_or_item_kit_or_receipt = $this->input->post('item');
$this->barcode_lib->parse_barcode_fields($quantity, $item_id_or_number_or_item_kit_or_receipt);
$this->token_lib->parse_barcode($quantity, $price, $item_id_or_number_or_item_kit_or_receipt);
$quantity = ($mode == 'receive' || $mode == 'requisition') ? $quantity : -$quantity;
$item_location = $this->receiving_lib->get_stock_source();
$discount = $this->config->item('default_receivings_discount');
@@ -123,9 +124,9 @@ class Receivings extends Secure_Controller
$description = $this->input->post('description');
$serialnumber = $this->input->post('serialnumber');
$price = parse_decimals($this->input->post('price'));
$quantity = parse_decimals($this->input->post('quantity'));
$quantity = parse_quantity($this->input->post('quantity'));
$discount = parse_decimals($this->input->post('discount'));
$discount_type = parse_decimals($this->input->post('discount_type'));
$discount_type = $this->input->post('discount_type');
$item_location = $this->input->post('location');
$receiving_quantity = $this->input->post('receiving_quantity');
@@ -377,15 +378,17 @@ class Receivings extends Secure_Controller
$newdate = $this->input->post('date');
$date_formatter = date_create_from_format($this->config->item('dateformat') . ' ' . $this->config->item('timeformat'), $newdate);
$receiving_time = $date_formatter->format('Y-m-d H:i:s');
$receiving_data = array(
'receiving_time' => $date_formatter->format('Y-m-d H:i:s'),
'receiving_time' => $receiving_time,
'supplier_id' => $this->input->post('supplier_id') ? $this->input->post('supplier_id') : NULL,
'employee_id' => $this->input->post('employee_id'),
'comment' => $this->input->post('comment'),
'reference' => $this->input->post('reference') != '' ? $this->input->post('reference') : NULL
);
$this->Inventory->update('RECV '.$receiving_id, ['trans_date' => $receiving_time]);
if($this->Receiving->update($receiving_data, $receiving_id))
{
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('receivings_successfully_updated'), 'id' => $receiving_id));

View File

@@ -51,6 +51,7 @@ class Reports extends Secure_Controller
{
$tabular_data[] = $this->xss_clean(array(
'sale_date' => to_date(strtotime($row['sale_date'])),
'sales' => to_quantity_decimals($row['sales']),
'quantity' => to_quantity_decimals($row['quantity_purchased']),
'subtotal' => to_currency($row['subtotal']),
'tax' => to_currency_tax($row['tax']),
@@ -156,6 +157,7 @@ class Reports extends Secure_Controller
{
$tabular_data[] = $this->xss_clean(array(
'customer_name' => $row['customer'],
'sales' => to_quantity_decimals($row['sales']),
'quantity' => to_quantity_decimals($row['quantity_purchased']),
'subtotal' => to_currency($row['subtotal']),
'tax' => to_currency_tax($row['tax']),
@@ -228,6 +230,7 @@ class Reports extends Secure_Controller
{
$tabular_data[] = $this->xss_clean(array(
'item_name' => $row['name'],
'unit_price' => $row['unit_price'],
'quantity' => to_quantity_decimals($row['quantity_purchased']),
'subtotal' => to_currency($row['subtotal']),
'tax' => to_currency_tax($row['tax']),
@@ -264,6 +267,7 @@ class Reports extends Secure_Controller
{
$tabular_data[] = $this->xss_clean(array(
'employee_name' => $row['employee'],
'sales' => to_quantity_decimals($row['sales']),
'quantity' => to_quantity_decimals($row['quantity_purchased']),
'subtotal' => to_currency($row['subtotal']),
'tax' => to_currency_tax($row['tax']),
@@ -418,7 +422,7 @@ class Reports extends Secure_Controller
$tabular_data[] = array(
'trans_group' => '--',
'trans_type' => '--',
'trans_count' => '--',
'trans_sales' => '--',
'trans_amount' => '--',
'trans_payments' => '--',
'trans_refunded' => '--',
@@ -435,7 +439,7 @@ class Reports extends Secure_Controller
$tabular_data[] = $this->xss_clean(array(
'trans_group' => $row['trans_group'],
'trans_type' => $row['trans_type'],
'trans_count' => $row['trans_count'],
'trans_sales' => $row['trans_sales'],
'trans_amount' => to_currency($row['trans_amount']),
'trans_payments' => to_currency($row['trans_payments']),
'trans_refunded' => to_currency($row['trans_refunded']),
@@ -850,9 +854,9 @@ class Reports extends Secure_Controller
}
//Graphical summary payments report
public function graphical_summary_payments($start_date, $end_date, $sale_type)
public function graphical_summary_payments($start_date, $end_date, $sale_type, $location_id = 'all')
{
$inputs = array('start_date' => $start_date, 'end_date' => $end_date, 'sale_type' => $sale_type);
$inputs = array('start_date' => $start_date, 'end_date' => $end_date, 'sale_type' => $sale_type, 'location_id' => $location_id);
$this->load->model('reports/Summary_payments');
$model = $this->Summary_payments;
@@ -866,8 +870,11 @@ class Reports extends Secure_Controller
{
$row = $this->xss_clean($row);
$labels[] = $row['payment_type'];
$series[] = array('meta' => $row['payment_type'] . ' ' . round($row['payment_amount'] / $summary['total'] * 100, 2) . '%', 'value' => $row['payment_amount']);
if($row['trans_group'] == $this->lang->line('reports_trans_payments') && !empty($row['trans_amount']))
{
$labels[] = $row['trans_type'];
$series[] = array('meta' => $row['trans_type'] . ' ' . round($row['trans_amount'] / $summary['total'] * 100, 2) . '%', 'value' => $row['trans_amount']);
}
}
$data = array(
@@ -969,7 +976,7 @@ class Reports extends Secure_Controller
$details_data[$row['sale_id']][] = $this->xss_clean(array(
$drow['name'],
$drow['category'],
$drow['serialnumber'],
$drow['item_number'],
$drow['description'],
to_quantity_decimals($drow['quantity_purchased']),
to_currency($drow['subtotal']),
@@ -977,7 +984,8 @@ class Reports extends Secure_Controller
to_currency($drow['total']),
to_currency($drow['cost']),
to_currency($drow['profit']),
($drow['discount_type'] == PERCENT)? $drow['discount'].'%':to_currency($drow['discount'])));
($drow['discount_type'] == PERCENT)? $drow['discount'].'%':to_currency($drow['discount'])
));
}
if(isset($report_data['rewards'][$key]))
@@ -1080,7 +1088,7 @@ class Reports extends Secure_Controller
$details_data[$row['sale_id']][] = $this->xss_clean(array(
$drow['name'],
$drow['category'],
$drow['serialnumber'],
$drow['item_number'],
$drow['description'],
to_quantity_decimals($drow['quantity_purchased']),
to_currency($drow['subtotal']),
@@ -1088,7 +1096,8 @@ class Reports extends Secure_Controller
to_currency($drow['total']),
to_currency($drow['cost']),
to_currency($drow['profit']),
($drow['discount_type'] == PERCENT)? $drow['discount'].'%':to_currency($drow['discount'])));
($drow['discount_type'] == PERCENT)? $drow['discount'].'%':to_currency($drow['discount'])
));
}
if(isset($report_data['rewards'][$key]))
@@ -1188,7 +1197,7 @@ class Reports extends Secure_Controller
$details_data[$row['sale_id']][] = $this->xss_clean(array(
$drow['name'],
$drow['category'],
$drow['serialnumber'],
$drow['item_number'],
$drow['description'],
to_quantity_decimals($drow['quantity_purchased']),
to_currency($drow['subtotal']),
@@ -1196,7 +1205,8 @@ class Reports extends Secure_Controller
to_currency($drow['total']),
to_currency($drow['cost']),
to_currency($drow['profit']),
($drow['discount_type'] == PERCENT)? $drow['discount'].'%':to_currency($drow['discount'])));
($drow['discount_type'] == PERCENT)? $drow['discount'].'%':to_currency($drow['discount'])
));
}
if(isset($report_data['rewards'][$key]))
@@ -1263,6 +1273,65 @@ class Reports extends Secure_Controller
echo json_encode(array($sale_id => $summary_data));
}
public function specific_supplier_input()
{
$data = array();
$data['specific_input_name'] = $this->lang->line('reports_supplier');
$supplier = array();
foreach($this->Supplier->get_all()->result() as $supplier)
{
$suppliers[$supplier->person_id] = $this->xss_clean($supplier->company_name . ' (' . $supplier->first_name . ' ' . $supplier->last_name . ')');
}
$data['specific_input_data'] = $suppliers;
$data['sale_type_options'] = $this->get_sale_type_options();
$this->load->view('reports/specific_input', $data);
}
public function specific_supplier($start_date, $end_date, $supplier_id, $sale_type)
{
$inputs = array('start_date' => $start_date, 'end_date' => $end_date, 'supplier_id' => $supplier_id, 'sale_type' => $sale_type);
$this->load->model('reports/Specific_supplier');
$model = $this->Specific_supplier;
$model->create($inputs);
$report_data = $model->getData($inputs);
$tabular_data = array();
foreach($report_data as $row)
{
$tabular_data[] = $this->xss_clean(array(
'id' => $row['sale_id'],
'type_code' => $row['type_code'],
'sale_date' => to_date(strtotime($row['sale_date'])),
'name' => $row['name'],
'category' => $row['category'],
'item_number' => $row['item_number'],
'quantity' => to_quantity_decimals($row['items_purchased']),
'subtotal' => to_currency($row['subtotal']),
'tax' => to_currency_tax($row['tax']),
'total' => to_currency($row['total']),
'cost' => to_currency($row['cost']),
'profit' => to_currency($row['profit']),
'discount' => ($row['discount_type'] == PERCENT)? $row['discount'].'%':to_currency($row['discount'])
));
}
$supplier_info = $this->Supplier->get_info($supplier_id);
$data = array(
'title' => $this->xss_clean($supplier_info->company_name . ' (' . $supplier_info->first_name . ' ' . $supplier_info->last_name . ') ' . $this->lang->line('reports_report')),
'subtitle' => $this->_get_subtitle_report(array('start_date' => $start_date, 'end_date' => $end_date)),
'headers' => $this->xss_clean($model->getDataColumns()),
'data' => $tabular_data,
'summary_data' => $this->xss_clean($model->getSummaryData($inputs))
);
$this->load->view('reports/tabular', $data);
}
public function get_sale_type_options()
{
$sale_type_options = array();
@@ -1349,7 +1418,7 @@ class Reports extends Secure_Controller
$details_data[$row['sale_id']][] = $this->xss_clean(array_merge(array(
$drow['name'],
$drow['category'],
$drow['serialnumber'],
$drow['item_number'],
$drow['description'],
$quantity_purchased,
to_currency($drow['subtotal']),
@@ -1358,7 +1427,6 @@ class Reports extends Secure_Controller
to_currency($drow['cost']),
to_currency($drow['profit']),
($drow['discount_type'] == PERCENT)? $drow['discount'].'%':to_currency($drow['discount'])), $attribute_values));
}
if(isset($report_data['rewards'][$key]))

View File

@@ -1,4 +1,4 @@
<?php if(!defined('BASEPATH')) exit('No direct script access allowed');
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
require_once("Secure_Controller.php");
@@ -12,10 +12,11 @@ class Sales extends Secure_Controller
{
parent::__construct('sales');
$this->load->helper('file');
$this->load->library('sale_lib');
$this->load->library('barcode_lib');
$this->load->library('email_lib');
$this->load->library('token_lib');
$this->load->library('barcode_lib');
}
public function index()
@@ -36,20 +37,11 @@ class Sales extends Secure_Controller
{
$data['table_headers'] = get_sales_manage_table_headers();
// filters that will be loaded in the multiselect dropdown
if($this->config->item('invoice_enable') == TRUE)
{
$data['filters'] = array('only_cash' => $this->lang->line('sales_cash_filter'),
'only_due' => $this->lang->line('sales_due_filter'),
'only_check' => $this->lang->line('sales_check_filter'),
'only_invoices' => $this->lang->line('sales_invoice_filter'));
}
else
{
$data['filters'] = array('only_cash' => $this->lang->line('sales_cash_filter'),
'only_due' => $this->lang->line('sales_due_filter'),
'only_check' => $this->lang->line('sales_check_filter'));
}
$data['filters'] = array('only_cash' => $this->lang->line('sales_cash_filter'),
'only_due' => $this->lang->line('sales_due_filter'),
'only_check' => $this->lang->line('sales_check_filter'),
'only_creditcard' => $this->lang->line('sales_credit_filter'),
'only_invoices' => $this->lang->line('sales_invoice_filter'));
$this->load->view('sales/manage', $data);
}
@@ -78,6 +70,7 @@ class Sales extends Secure_Controller
'only_cash' => FALSE,
'only_due' => FALSE,
'only_check' => FALSE,
'only_creditcard' => FALSE,
'only_invoices' => $this->config->item('invoice_enable') && $this->input->get('only_invoices'),
'is_valid_receipt' => $this->Sale->is_valid_receipt($search));
@@ -200,6 +193,8 @@ class Sales extends Secure_Controller
$this->sale_lib->set_sale_location($stock_location);
}
$this->sale_lib->empty_payments();
$this->_reload();
}
@@ -241,11 +236,6 @@ class Sales extends Secure_Controller
$this->sale_lib->set_invoice_number($this->input->post('sales_invoice_number'));
}
public function set_invoice_number_enabled()
{
$this->sale_lib->set_invoice_number_enabled($this->input->post('sales_invoice_number_enabled'));
}
public function set_payment_type()
{
$this->sale_lib->set_payment_type($this->input->post('selected_payment_type'));
@@ -398,7 +388,7 @@ class Sales extends Secure_Controller
}
$item_id_or_number_or_item_kit_or_receipt = $this->input->post('item');
$this->barcode_lib->parse_barcode_fields($quantity, $item_id_or_number_or_item_kit_or_receipt);
$this->token_lib->parse_barcode($quantity, $price, $item_id_or_number_or_item_kit_or_receipt);
$mode = $this->sale_lib->get_mode();
$quantity = ($mode == 'return') ? -$quantity : $quantity;
$item_location = $this->sale_lib->get_sale_location();
@@ -423,12 +413,11 @@ class Sales extends Secure_Controller
$discount_type = $item_kit_info->kit_discount_type;
}
$price = NULL;
$print_option = PRINT_ALL; // Always include in list of items on invoice
if(!empty($kit_item_id))
{
if(!$this->sale_lib->add_item($kit_item_id, $quantity, $item_location, $discount, $discount_type, PRICE_MODE_STANDARD))
if(!$this->sale_lib->add_item($kit_item_id, $quantity, $item_location, $discount, $discount_type, PRICE_MODE_STANDARD, NULL, NULL, $price))
{
$data['error'] = $this->lang->line('sales_unable_to_add_item');
}
@@ -451,7 +440,7 @@ class Sales extends Secure_Controller
}
else
{
if(!$this->sale_lib->add_item($item_id_or_number_or_item_kit_or_receipt, $quantity, $item_location, $discount, $discount_type, PRICE_MODE_STANDARD))
if(!$this->sale_lib->add_item($item_id_or_number_or_item_kit_or_receipt, $quantity, $item_location, $discount, $discount_type, PRICE_MODE_STANDARD, NULL, NULL, $price))
{
$data['error'] = $this->lang->line('sales_unable_to_add_item');
}
@@ -460,6 +449,7 @@ class Sales extends Secure_Controller
$data['warning'] = $this->sale_lib->out_of_stock($item_id_or_number_or_item_kit_or_receipt, $item_location);
}
}
$this->_reload($data);
}
@@ -474,7 +464,7 @@ class Sales extends Secure_Controller
$description = $this->input->post('description');
$serialnumber = $this->input->post('serialnumber');
$price = parse_decimals($this->input->post('price'));
$quantity = parse_decimals($this->input->post('quantity'));
$quantity = parse_quantity($this->input->post('quantity'));
$discount = parse_decimals($this->input->post('discount'));
$discount_type = $this->input->post('discount_type');
@@ -484,6 +474,8 @@ class Sales extends Secure_Controller
if($this->form_validation->run() != FALSE)
{
$this->sale_lib->edit_item($item_id, $description, $serialnumber, $quantity, $discount, $discount_type, $price, $discounted_total);
$this->sale_lib->empty_payments();
}
else
{
@@ -499,6 +491,8 @@ class Sales extends Secure_Controller
{
$this->sale_lib->delete_item($item_number);
$this->sale_lib->empty_payments();
$this->_reload();
}
@@ -553,7 +547,6 @@ class Sales extends Secure_Controller
$data['price_work_orders'] = $this->sale_lib->is_price_work_orders();
$data['email_receipt'] = $this->sale_lib->is_email_receipt();
$customer_id = $this->sale_lib->get_customer();
$invoice_number_enabled = $this->sale_lib->get_invoice_number_enabled();
$invoice_number = $this->sale_lib->get_invoice_number();
$data["invoice_number"] = $invoice_number;
$work_order_number = $this->sale_lib->get_work_order_number();
@@ -613,56 +606,20 @@ class Sales extends Secure_Controller
$data['print_price_info'] = TRUE;
$override_invoice_number = NULL;
if($this->sale_lib->is_sale_by_receipt_mode() && $invoice_number_enabled )
{
$pos_invoice = TRUE;
$candidate_invoice_number = $invoice_number;
if($candidate_invoice_number != NULL && strlen($candidate_invoice_number) > 3)
{
if(strpos($candidate_invoice_number, '{') == FALSE)
{
$override_invoice_number = $candidate_invoice_number;
}
}
}
else
{
$pos_invoice = FALSE;
}
if($this->sale_lib->is_invoice_mode() || $pos_invoice)
if($this->sale_lib->is_invoice_mode())
{
$invoice_format = $this->config->item('sales_invoice_format');
// generate final invoice number (if using the invoice in sales by receipt mode then the invoice number can be manually entered or altered in some way
if($pos_invoice)
if(!empty($invoice_format) && $invoice_number == NULL)
{
// The user can retain the default encoded format or can manually override it. It still passes through the rendering step.
$this->sale_lib->set_invoice_number($this->input->post('invoice_number'), $keep_custom = TRUE);
$invoice_format = $this->sale_lib->get_invoice_number();
// If the user blanks out the invoice number and doesn't put anything in there then revert back to the default format encoding
if(empty($invoice_format))
{
$invoice_format = $this->config->item('sales_invoice_format');
}
}
else
{
$invoice_format = $this->config->item('sales_invoice_format');
}
if($override_invoice_number == NULL)
{
$invoice_number = $this->token_lib->render($invoice_format);
}
else
{
$invoice_number = $override_invoice_number;
}
if($sale_id == -1 && $this->Sale->check_invoice_number_exists($invoice_number))
{
$data['error'] = $this->lang->line('sales_invoice_number_duplicate');
$data['error'] = $this->lang->line('sales_invoice_number_duplicate', $invoice_number);
$this->_reload($data);
}
else
@@ -826,6 +783,7 @@ class Sales extends Secure_Controller
new Token_invoice_count('POS ' . $sale_data['sale_id']),
new Token_customer((object)$sale_data));
$text = $this->token_lib->render($text, $tokens);
$sale_data['mimetype'] = get_mime_by_extension('uploads/' . $this->config->item('company_logo'));
// generate email attachment: invoice in pdf format
$html = $this->load->view("sales/" . $type . "_email", $sale_data, TRUE);
@@ -953,7 +911,7 @@ class Sales extends Secure_Controller
$data['payments'] = $this->sale_lib->get_payments();
$data['selected_payment_type'] = $this->sale_lib->get_payment_type();
$tax_details = $this->tax_lib->get_taxes($data['cart']);
$tax_details = $this->tax_lib->get_taxes($data['cart'], $sale_id);
$data['taxes'] = $this->Sale->get_sales_taxes($sale_id);
$data['discount'] = $this->sale_lib->get_discount();
$data['transaction_time'] = to_datetime(strtotime($sale_info['sale_time']));
@@ -1042,8 +1000,8 @@ class Sales extends Secure_Controller
}
$invoice_type = $this->config->item('invoice_type');
$data['invoice_view'] = $invoice_type;
return $this->xss_clean($data);
}
@@ -1069,9 +1027,6 @@ class Sales extends Secure_Controller
$data['taxes'] = $tax_details[0];
$data['discount'] = $this->sale_lib->get_discount();
$data['payments'] = $this->sale_lib->get_payments();
// sale_type (0=pos, 1=invoice, 2=work order, 3=quote, 4=return)
$sale_type = $this->sale_lib->get_sale_type();
// Returns 'subtotal', 'total', 'cash_total', 'payment_total', 'amount_due', 'cash_amount_due', 'payments_cover_total'
$totals = $this->sale_lib->get_totals($tax_details[0]);
$data['item_count'] = $totals['item_count'];
@@ -1112,14 +1067,17 @@ class Sales extends Secure_Controller
}
$data['items_module_allowed'] = $this->Employee->has_grant('items', $this->Employee->get_logged_in_employee_info()->person_id);
$data['change_price'] = $this->Employee->has_grant('sales_change_price', $this->Employee->get_logged_in_employee_info()->person_id);
$invoice_format = $this->config->item('sales_invoice_format');
$data['invoice_format'] = $invoice_format;
$invoice_number = $this->sale_lib->get_invoice_number();
$this->set_invoice_number($invoice_format);
$data['invoice_number'] = $invoice_format;
if ($this->sale_lib->get_invoice_number() == NULL)
{
$invoice_number = $this->config->item('sales_invoice_format');
}
$data['invoice_number'] = $invoice_number;
$data['invoice_number_enabled'] = $this->sale_lib->is_invoice_mode();
$data['print_after_sale'] = $this->sale_lib->is_print_after_sale();
$data['price_work_orders'] = $this->sale_lib->is_price_work_orders();
@@ -1178,20 +1136,12 @@ class Sales extends Secure_Controller
{
$data = array();
$data['employees'] = array();
foreach($this->Employee->get_all()->result() as $employee)
{
foreach(get_object_vars($employee) as $property => $value)
{
$employee->$property = $this->xss_clean($value);
}
$data['employees'][$employee->person_id] = $employee->first_name . ' ' . $employee->last_name;
}
$sale_info = $this->xss_clean($this->Sale->get_info($sale_id)->row_array());
$data['selected_customer_name'] = $sale_info['customer_name'];
$data['selected_customer_id'] = $sale_info['customer_id'];
$data['selected_customer_name'] = $sale_info['customer_name'];
$employee_info = $this->Employee->get_info($sale_info['employee_id']);
$data['selected_employee_id'] = $sale_info['employee_id'];
$data['selected_employee_name'] = $this->xss_clean($employee_info->first_name . ' ' . $employee_info->last_name);
$data['sale_info'] = $sale_info;
$balance_due = $sale_info['amount_due'] - $sale_info['amount_tendered'];
if($balance_due < 0)
@@ -1215,12 +1165,12 @@ class Sales extends Secure_Controller
$data['balance_due'] = $balance_due != 0;
// don't allow gift card to be a payment option in a sale transaction edit because it's a complex change
$data['payment_options'] = $this->xss_clean($this->Sale->get_payment_options(FALSE));
$new_payment_options = $this->xss_clean($this->Sale->get_payment_options(FALSE));
$data['payment_options'] = $new_payment_options;
// Set up a slightly modified list of payment types for new payment entry
$new_payment_options = $this->Sale->get_payment_options(FALSE);
$new_payment_options["--"] = $this->lang->line('common_none_selected_text');
$data['new_payment_options'] = $this->xss_clean($new_payment_options);
$data['new_payment_options'] = $new_payment_options;
$this->load->view('sales/form', $data);
}
@@ -1286,11 +1236,12 @@ class Sales extends Secure_Controller
$employee_id = $this->Employee->get_logged_in_employee_info()->person_id;
$date_formatter = date_create_from_format($this->config->item('dateformat') . ' ' . $this->config->item('timeformat'), $newdate);
$sale_time = $date_formatter->format('Y-m-d H:i:s');
$sale_data = array(
'sale_time' => $date_formatter->format('Y-m-d H:i:s'),
'sale_time' => $sale_time,
'customer_id' => $this->input->post('customer_id') != '' ? $this->input->post('customer_id') : NULL,
'employee_id' => $this->input->post('employee_id'),
'employee_id' => $this->input->post('employee_id') != '' ? $this->input->post('employee_id') : NULL,
'comment' => $this->input->post('comment'),
'invoice_number' => $this->input->post('invoice_number') != '' ? $this->input->post('invoice_number') : NULL
);
@@ -1301,12 +1252,27 @@ class Sales extends Secure_Controller
for($i = 0; $i < $number_of_payments; ++$i)
{
$payment_id = $this->input->post('payment_id_' . $i);
$payment_amount = $this->input->post('payment_amount_' . $i);
$payment_type = $this->input->post('payment_type_' . $i);
$cash_refund = 0.00;
$payment_amount = $this->input->post('payment_amount_' . $i);
$refund_type = $this->input->post('refund_type_' . $i);
$cash_refund = $this->input->post('refund_amount_' . $i);
// To maintain tradition we will also delete any payments with 0 amount assuming these are mistakes
// introduced at sale time. This is now done in Sale.php
// if the refund is not cash ...
if(empty(strstr($refund_type, $this->lang->line('sales_cash'))))
{
// ... and it's positive ...
if($cash_refund > 0)
{
// ... change it to be a new negative payment (a "non-cash refund")
$payment_type = $refund_type;
$payment_amount = $payment_amount - $cash_refund;
$cash_refund = 0.00;
}
}
// To maintain tradition we will also delete any payments with 0 amount
// assuming these are mistakes introduced at sale time.
// This is now done in models/Sale.php
$payments[] = array('payment_id' => $payment_id, 'payment_type' => $payment_type, 'payment_amount' => $payment_amount, 'cash_refund' => $cash_refund, 'employee_id' => $employee_id);
}
@@ -1320,6 +1286,7 @@ class Sales extends Secure_Controller
$payments[] = array('payment_id' => $payment_id, 'payment_type' => $payment_type, 'payment_amount' => $payment_amount, 'cash_refund' => 0.00, 'employee_id' => $employee_id);
}
$this->Inventory->update('POS '.$sale_id, ['trans_date' => $sale_time]);
if($this->Sale->update($sale_id, $sale_data, $payments))
{
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('sales_successfully_updated'), 'id' => $sale_id));
@@ -1411,6 +1378,7 @@ class Sales extends Secure_Controller
}
$this->sale_lib->clear_all();
$this->_reload($data);
}
@@ -1419,14 +1387,13 @@ class Sales extends Secure_Controller
*/
public function suspended()
{
$customer_id = $this->sale_lib->get_customer();
$data = array();
$customer_id = $this->sale_lib->get_customer();
$data['suspended_sales'] = $this->xss_clean($this->Sale->get_all_suspended($customer_id));
$data['dinner_table_enable'] = $this->config->item('dinner_table_enable');
$this->load->view('sales/suspended', $data);
}
/*
/**
* Unsuspended sales are now left in the tables and are only removed
* when they are intentionally cancelled.
*/
@@ -1514,7 +1481,7 @@ class Sales extends Secure_Controller
$this->sale_lib->set_cart($cart);
}
function search_cart_for_item_id($id, $array)
public function search_cart_for_item_id($id, $array)
{
foreach($array as $key => $val)
{
@@ -1523,6 +1490,7 @@ class Sales extends Secure_Controller
return $key;
}
}
return NULL;
}
}

View File

@@ -22,6 +22,7 @@ class Suppliers extends Persons
public function get_row($row_id)
{
$data_row = $this->xss_clean(get_supplier_data_row($this->Supplier->get_info($row_id)));
$data_row['category'] = $this->Supplier->get_category_name($data_row['category']);
echo json_encode($data_row);
}

View File

@@ -354,7 +354,7 @@ class Taxes extends Secure_Controller
public function save($tax_rate_id = -1)
{
$tax_category_id = $this->input->post('rate_tax_category_id');
$tax_rate = parse_decimals($this->input->post('tax_rate'));
$tax_rate = parse_tax($this->input->post('tax_rate'));
if ($tax_rate == 0) {
$tax_category_info = $this->Tax_category->get_info($tax_category_id);
@@ -443,6 +443,8 @@ class Taxes extends Secure_Controller
$array_save = array();
$unique_tax_groups = [];
foreach($jurisdiction_id as $key => $val)
{
$array_save[] = array(
@@ -453,6 +455,19 @@ class Taxes extends Secure_Controller
'reporting_authority'=>$this->xss_clean($reporting_authority[$key]),
'tax_group_sequence'=>$this->xss_clean($tax_group_sequence[$key]),
'cascade_sequence'=>$this->xss_clean($cascade_sequence[$key]));
if (array_search($tax_group[$key], $unique_tax_groups) !== false)
{
echo json_encode(array(
'success' => FALSE,
'message' => $this->lang->line('taxes_tax_group_not_unique', $tax_group[$key])
));
return;
}
else
{
$unique_tax_groups[] = $tax_group[$key];
}
}
$success = $this->Tax_jurisdiction->save_jurisdictions($array_save);

View File

@@ -0,0 +1,57 @@
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class MY_Security extends CI_Security
{
/**
* CSRF Set Cookie with samesite
*
* @codeCoverageIgnore
* @return CI_Security
*/
public function csrf_set_cookie()
{
$expire = time() + $this->_csrf_expire;
$secure_cookie = (bool)config_item('cookie_secure');
if ($secure_cookie && !is_https())
{
return FALSE;
}
$path = config_item('cookie_path');
if (PHP_VERSION_ID < 70300) {
if (is_https())
{
$path .= '; samesite=strict';
}
setcookie($this->_csrf_cookie_name,
$this->_csrf_hash, $expire,
$path,
config_item('cookie_domain'),
$secure_cookie,
FALSE);
}
else
{
$samesite = is_https() ? 'None' : 'Strict';
setcookie($this->_csrf_cookie_name,
$this->_csrf_hash,
['samesite' => $samesite,
'secure' => $secure_cookie,
'expires' => $expire,
'path' => config_item('cookie_path'),
'domain' => config_item('cookie_domain'),
'httponly' => FALSE]);
}
log_message('info', 'CSRF cookie sent');
return $this;
}
}

View File

@@ -7,22 +7,10 @@
function create_pdf($html, $filename = '')
{
// need to enable magic quotes for the
$magic_quotes_enabled = get_magic_quotes_runtime();
if(!$magic_quotes_enabled)
{
ini_set('magic_quotes_runtime', TRUE);
}
$dompdf = new Dompdf\Dompdf();
$dompdf = new Dompdf\Dompdf(array("isRemoteEnabled" => TRUE, "isPhpEnabled" => TRUE));
$dompdf->loadHtml(str_replace(array("\n", "\r"), '', $html));
$dompdf->render();
if(!$magic_quotes_enabled)
{
ini_set('magic_quotes_runtime', $magic_quotes_enabled);
}
if($filename != '')
{
$dompdf->stream($filename . '.pdf');

View File

@@ -11,7 +11,7 @@ function generate_import_items_csv($stock_locations,$attributes)
$csv_headers .= 'Barcode,"Item Name",Category,"Supplier ID","Cost Price","Unit Price","Tax 1 Name","Tax 1 Percent","Tax 2 Name","Tax 2 Percent","Reorder Level",Description,"Allow Alt Description","Item has Serial Number",item_image,HSN';
$csv_headers .= generate_stock_location_headers($stock_locations);
$csv_headers .= generate_attribute_headers($attributes);
return $csv_headers;
}
@@ -23,12 +23,12 @@ function generate_import_items_csv($stock_locations,$attributes)
function generate_stock_location_headers($locations)
{
$location_headers = "";
foreach($locations as $location_id => $location_name)
{
$location_headers .= ',"location_' . $location_name . '"';
}
return $location_headers;
}
@@ -41,12 +41,12 @@ function generate_attribute_headers($attribute_names)
{
$attribute_headers = "";
unset($attribute_names[-1]);
foreach($attribute_names as $attribute_name)
{
$attribute_headers .= ',"attribute_' . $attribute_name . '"';
}
return $attribute_headers;
}
@@ -59,19 +59,52 @@ function generate_attribute_headers($attribute_names)
function get_csv_file($file_name)
{
ini_set("auto_detect_line_endings", true);
if(($csv_file = fopen($file_name,'r')) !== FALSE)
{
//Skip Byte-Order Mark
if(bom_exists($csv_file) === TRUE)
{
fseek($csv_file, 3);
}
while (($data = fgetcsv($csv_file)) !== FALSE)
{
$line_array[] = $data;
//Skip empty lines
if(array(null) !== $data)
{
$line_array[] = $data;
}
}
}
else
{
return FALSE;
}
return $line_array;
}
/**
* Checks the first three characters of a file for the Byte-Order Mark then returns the file position to the first character.
*
* @param object $file_handle File handle to check
* @return bool Returns TRUE if the BOM exists and FALSE otherwise.
*/
function bom_exists(&$file_handle)
{
$str = fread($file_handle,3);
rewind($file_handle);
$bom = pack("CCC", 0xef, 0xbb, 0xbf);
if (0 === strncmp($str, $bom, 3))
{
return TRUE;
}
else
{
return FALSE;
}
}
?>

View File

@@ -3,6 +3,8 @@
const DEFAULT_LANGUAGE = 'english';
const DEFAULT_LANGUAGE_CODE = 'en-US';
define('NOW', time());
define('MAX_PRECISION', 1e14);
define('DEFAULT_DATE', mktime(0, 0, 0, 1, 1, 2010));
define('DEFAULT_DATETIME', mktime(0, 0, 0, 1, 1, 2010));
@@ -57,6 +59,7 @@ function get_languages()
'az-AZ:azerbaijani' => 'Azerbaijani (Azerbaijan)',
'bg:bulgarian' => 'Bulgarian',
'cs:czech' => 'Czech',
'da:danish' => 'Danish',
'de:german' => 'German (Germany)',
'de-CH:german' => 'German (Swiss)',
'el:greek' => 'Greek',
@@ -65,18 +68,21 @@ function get_languages()
'es:spanish' => 'Spanish',
'es-MX:spanish' => 'Spanish (Mexico)',
'fr:french' => 'French',
'he:hebrew' => 'Hebrew',
'fa-IR:persian' => 'Farsi (Iran)',
'he:english' => 'Hebrew',
'hr-HR:croatian' => 'Croatian (Croatia)',
'hu-HU:hungarian' => 'Hungarian (Hungary)',
'hy:armenian' => 'Armenian',
'id:indonesian' => 'Indonesian',
'it:italian' => 'Italian',
'km:khmer' => 'Central Khmer (Cambodia)',
'lo:lao' => 'Lao (Laos)',
'ml:malay' => 'Malay',
'nb:norwegian' => 'Norwegian',
'nl:dutch' => 'Dutch',
'nl-BE:dutch' => 'Dutch (Belgium)',
'pl:polish' => 'Polish',
'pt-BR:portuguese-brazilian' => 'Portuguese (Brazil)',
'pt-BR:portuguese' => 'Portuguese (Brazil)',
'ro:romanian' => 'Romanian',
'ru:russian' => 'Russian',
'sv:swedish' => 'Swedish',
@@ -400,18 +406,45 @@ function to_decimals($number, $decimals, $type=\NumberFormatter::DECIMAL)
return $fmt->format($number);
}
function parse_decimals($number)
function parse_quantity($number)
{
return parse_decimals($number, quantity_decimals());
}
function parse_tax($number)
{
return parse_decimals($number, tax_decimals());
}
function parse_decimals($number, $decimals = NULL)
{
// ignore empty strings and return
if(empty($number))
{
return $number;
}
if ($number > MAX_PRECISION)
{
return FALSE;
}
if ($number > 1.e14)
{
return FALSE;
}
$config = get_instance()->config;
if($decimals == NULL)
{
$decimals = $config->item('currency_decimals');
}
$fmt = new \NumberFormatter($config->item('number_locale'), \NumberFormatter::DECIMAL);
$fmt->setAttribute(\NumberFormatter::FRACTION_DIGITS, $config->item('currency_decimals'));
$fmt->setAttribute(\NumberFormatter::FRACTION_DIGITS, $decimals);
if(empty($config->item('thousands_separator')))
{

View File

@@ -9,7 +9,7 @@ function execute_script($path)
$CI =& get_instance();
$version = preg_replace("/(.*_)?(.*).sql/", "$2", $path);
error_log("Migrating to $version");
error_log("Migrating to $version (file: $path)");
$sql = file_get_contents($path);

View File

@@ -354,7 +354,7 @@ function get_items_manage_table_headers()
foreach($definition_names as $definition_id => $definition_name)
{
$headers[] = array($definition_id => $definition_name);
$headers[] = array($definition_id => $definition_name, 'sortable' => FALSE);
}
$headers[] = array('inventory' => '');

View File

@@ -7,6 +7,7 @@ $lang["common_close"] = "إغلاق";
$lang["common_comments"] = "تعليقات";
$lang["common_common"] = "عام";
$lang["common_confirm_search"] = "لقد قمت اختيار أكتر من سجل، سوف تفقد هذه الاختيارات عند إرسال البحث، موافق؟";
$lang["common_copyrights"] = "© 2010 - %1";
$lang["common_correct_errors"] = "يرجى تصحيح الأخطاء المحددة قبل الحفظ";
$lang["common_country"] = "البلد";
$lang["common_date"] = "التاريخ";
@@ -16,9 +17,9 @@ $lang["common_download_import_template"] = "تنزيل قالب الاستيرا
$lang["common_edit"] = "تحرير";
$lang["common_email"] = "بريد إلكتروني";
$lang["common_email_invalid_format"] = "شكل البريد الإلكتروني غير صحيح.";
$lang["common_export_excel"] = "تصدير إلى اكسل";
$lang["common_export_excel_no"] = "لا";
$lang["common_export_excel_yes"] = "نعم";
$lang["common_export_csv"] = "تصدير إلى اكسل";
$lang["common_export_csv_no"] = "لا";
$lang["common_export_csv_yes"] = "نعم";
$lang["common_fields_required_message"] = "الحقول التي بالأحمر مطلوبة";
$lang["common_first_name"] = "الاسم الأول";
$lang["common_first_name_required"] = "الاسم الأول مطلوب.";
@@ -29,7 +30,7 @@ $lang["common_gender_male"] = "ذكر";
$lang["common_id"] = "كود";
$lang["common_import"] = "استيراد";
$lang["common_import_change_file"] = "تغيير";
$lang["common_import_excel"] = "استيراد من اكسل";
$lang["common_import_csv"] = "استيراد من اكسل";
$lang["common_import_full_path"] = "المسار الكامل لملف اكسل مطلوب";
$lang["common_import_remove_file"] = "إزالة";
$lang["common_import_select_file"] = "اختار ملف";

View File

@@ -1,6 +1,8 @@
<?php
<?php
$lang["config_address"] = "عنوان الشركة";
$lang["config_address_required"] = "عنوان الشركة مطلوب.";
$lang["config_all_set"] = "All file permissions are set correctly!";
$lang["config_allow_duplicate_barcodes"] = "السماح بتشابة الباركود";
$lang["config_apostrophe"] = "الفاصلة";
$lang["config_backup_button"] = "نسخ إحتياطى";
@@ -32,6 +34,7 @@ $lang["config_bottom"] = "الأسفل";
$lang["config_cash_decimals"] = "فواصل النقدية";
$lang["config_cash_decimals_tooltip"] = "إذا كانت الكسور العشرية النقدية وعشرية العملات هي نفسها ثم لن يتم تقريب النقدية.";
$lang["config_cash_rounding"] = "التقريب النقدي";
$lang["config_category_dropdown"] = "";
$lang["config_center"] = "الوسط";
$lang["config_comma"] = "فاصلة";
$lang["config_company"] = "اسم الشركة";
@@ -110,6 +113,7 @@ $lang["config_email_smtp_user"] = "اسم مستخدم SMTP";
$lang["config_enforce_privacy"] = "فرض نظام الخصوصية";
$lang["config_enforce_privacy_tooltip"] = "حماية ملفات ومعلومات المستخدم عند الحذف";
$lang["config_fax"] = "الفاكس";
$lang["config_file_perm"] = "There are problems with file permissions please fix and reload this page.";
$lang["config_financial_year"] = "بداية السنة المالية";
$lang["config_financial_year_apr"] = "1 أبريل";
$lang["config_financial_year_aug"] = "1 أغسطس";
@@ -134,6 +138,11 @@ $lang["config_general_configuration"] = "إعدادات عامة";
$lang["config_giftcard_number"] = "رقم كارت الهدية";
$lang["config_giftcard_random"] = "توليد عشوائي";
$lang["config_giftcard_series"] = "توليد في السلسلة";
$lang["config_image_allowed_file_types"] = "";
$lang["config_image_max_height_tooltip"] = "";
$lang["config_image_max_size_tooltip"] = "";
$lang["config_image_max_width_tooltip"] = "";
$lang["config_image_restrictions"] = "";
$lang["config_include_hsn"] = "تشمل الدعم لرمز نظام منسق";
$lang["config_info"] = "معلومات";
$lang["config_info_configuration"] = "معلومات الشركة";
@@ -146,6 +155,8 @@ $lang["config_invoice_email_message"] = "قالب البريد الإلكترو
$lang["config_invoice_enable"] = "تفعيل الفوترة";
$lang["config_invoice_printer"] = "طابعة الفواتير";
$lang["config_invoice_type"] = "نوع الفاتورة";
$lang["config_is_readable"] = "";
$lang["config_is_writable"] = "is writable, but the permissions are higher than 750.";
$lang["config_jsprintsetup_required"] = "تحذير! هذه الخاصية غير المفعلة سوف تعمل فقط مع وجود الاضافة jsPrintSetup على متصفح فايرفوكس. حفظ على أى حال؟";
$lang["config_language"] = "اللغة";
$lang["config_last_used_invoice_number"] = "اخر رقم مستخدم للفاتورة";
@@ -183,6 +194,7 @@ $lang["config_msg_src_required"] = "مطلوب SMS-API كود المرسل لـ"
$lang["config_msg_uid"] = "SMS-API اسم المستخدم لـ";
$lang["config_msg_uid_required"] = "مطلوب SMS-API اسم المستخدم لـ";
$lang["config_multi_pack_enabled"] = "رزم متعددة لكل صنف";
$lang["config_no_risk"] = "No security/vulnerability risks.";
$lang["config_none"] = "لايوجد";
$lang["config_notify_alignment"] = "مكان عرض رسائل المعلومات";
$lang["config_number_format"] = "شكل الرقم";
@@ -190,8 +202,10 @@ $lang["config_number_locale"] = "التهيئة الاقليمية";
$lang["config_number_locale_invalid"] = "التهيئة الإقليمية المختارة غير صحية، راجع الرابط الموجود فى الملاحظة لاختيار تهيئة مناسبة.";
$lang["config_number_locale_required"] = "رقم التهيئة الإقليمية مطلوب.";
$lang["config_number_locale_tooltip"] = "إيجاد تهيئة إقليمية مناسبة عبر الرابط.";
$lang["config_os_timezone"] = "";
$lang["config_ospos_info"] = "معلومات التثبيت OSPOS";
$lang["config_payment_options_order"] = "ترتيب خيارات الدفع";
$lang["config_perm_risk"] = "Permissions higher than 750 leaves this software at risk.";
$lang["config_phone"] = "هاتف الشركة";
$lang["config_phone_required"] = "هاتف الشركة مطلوب.";
$lang["config_print_bottom_margin"] = "الهامش السفلي";
@@ -230,12 +244,14 @@ $lang["config_receipt_short"] = "مختصر";
$lang["config_receipt_show_company_name"] = "عرض اسم الشركة";
$lang["config_receipt_show_description"] = "عرض الوصف";
$lang["config_receipt_show_serialnumber"] = "عرض الرقم المسلسل";
$lang["config_receipt_show_tax_ind"] = "";
$lang["config_receipt_show_taxes"] = "عرض الضرائب";
$lang["config_receipt_show_total_discount"] = "عرض إجمالى الخصم";
$lang["config_receipt_template"] = "قالب الايصال";
$lang["config_receiving_calculate_average_price"] = "حساب متوسط سعر الأصناف المستلمة";
$lang["config_recv_invoice_format"] = "شكل فاتورة الإستلام";
$lang["config_register_mode_default"] = "نمط التسجيل الافتراضي";
$lang["config_report_an_issue"] = "";
$lang["config_return_policy_required"] = "سياسة الإسترجاع مطلوب.";
$lang["config_reward"] = "المكافاة";
$lang["config_reward_configuration"] = "اعدادات المكافاة";
@@ -244,6 +260,7 @@ $lang["config_sales_invoice_format"] = "شكل فاتورة البيع";
$lang["config_sales_quote_format"] = "شكل فاتورة عرض الاسعار";
$lang["config_saved_successfully"] = "تم حفظ التهيئة بنجاح.";
$lang["config_saved_unsuccessfully"] = "لم يتم حفظ التهيئة بنجاح.";
$lang["config_security_issue"] = "Security Vulnerability Warning";
$lang["config_server_notice"] = "يرجى استخدام المعلومات أدناه للإبلاغ عن المشكلة.";
$lang["config_show_office_group"] = "اظهار ايكونة المكتب";
$lang["config_statistics"] = "إرسال اﻹحصائيات";
@@ -256,6 +273,7 @@ $lang["config_suggestions_first_column"] = "العامود 1";
$lang["config_suggestions_layout"] = "تخطيط اقتراحات البحث";
$lang["config_suggestions_second_column"] = "العامود 2";
$lang["config_suggestions_third_column"] = "العامود 3";
$lang["config_system_conf"] = "Setup & Conf";
$lang["config_system_info"] = "System Info";
$lang["config_table"] = "جدول";
$lang["config_table_configuration"] = "اعدادات الجدول";
@@ -273,8 +291,10 @@ $lang["config_tax_included"] = "شامل الضريبة";
$lang["config_theme"] = "السمة";
$lang["config_thousands_separator"] = "فاصل الاف";
$lang["config_timezone"] = "المنطقة الزمنية";
$lang["config_timezone_error"] = "";
$lang["config_top"] = "علوى";
$lang["config_use_destination_based_tax"] = "استخدام الضريبة المستندة على الوجهة";
$lang["config_user_timezone"] = "";
$lang["config_website"] = "موقع الشركة";
$lang["config_work_order_enable"] = "تفعيل طلبات العمل";
$lang["config_work_order_format"] = "شكل طلبات العمل";

View File

@@ -12,6 +12,10 @@ $lang["customers_confirm_delete"] = "هل تريد حذف هؤلاء العمل
$lang["customers_confirm_restore"] = "هل انت متأكد من إستعادة قاعدة بيانات الزبائن ؟";
$lang["customers_consent"] = "موافقة التسجيل";
$lang["customers_consent_required"] = "موافقة التسجيل هي خانة اجبارية.";
$lang["customers_csv_import_failed"] = "فشل الإستيراد من اكسل";
$lang["customers_csv_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
$lang["customers_csv_import_partially_failed"] = "تم استيراد معظم العملاء. البعض لم يتم استيرادهم ، وهذه هى القائمة:";
$lang["customers_csv_import_success"] = "تم استيراد العملاء بنجاح.";
$lang["customers_customer"] = "العميل";
$lang["customers_date"] = "التاريخ";
$lang["customers_discount"] = "نسبة الخصم";
@@ -21,11 +25,7 @@ $lang["customers_discount_type"] = "نوع الحسم";
$lang["customers_email_duplicate"] = "البريد الالكتروني مكرر.";
$lang["customers_employee"] = "الموظف";
$lang["customers_error_adding_updating"] = "خطاء فى إضافة أو تحديث العميل.";
$lang["customers_excel_import_failed"] = "فشل الإستيراد من اكسل";
$lang["customers_excel_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
$lang["customers_excel_import_partially_failed"] = "تم استيراد معظم العملاء. البعض لم يتم استيرادهم ، وهذه هى القائمة:";
$lang["customers_excel_import_success"] = "تم استيراد العملاء بنجاح.";
$lang["customers_import_items_excel"] = "استيراد العملا ء من ورقة عمل اكسل";
$lang["customers_import_items_csv"] = "استيراد العملا ء من ورقة عمل اكسل";
$lang["customers_mailchimp_activity_click"] = "النقر على البريد الإلكتروني";
$lang["customers_mailchimp_activity_lastopen"] = "آخر رسالة إلكترونية مفتوحة";
$lang["customers_mailchimp_activity_open"] = "رسالة إلكترونية مفتوحة";

View File

@@ -17,6 +17,7 @@ $lang["giftcards_confirm_delete"] = "هل أنت متأكد انك تريد حذ
$lang["giftcards_confirm_restore"] = "هل تريد بالتأكيد استعادة بطاقة (بطاقات) الهدايا المحددة؟";
$lang["giftcards_cost_price"] = "سعر التكلفة";
$lang["giftcards_count"] = "تحديث المخزون";
$lang["giftcards_csv_import_failed"] = "فشل الإستيراد من اكسل.";
$lang["giftcards_current_quantity"] = "الكميات الحالية";
$lang["giftcards_description"] = "الوصف";
$lang["giftcards_details_count"] = "حركة الكارت";
@@ -25,7 +26,6 @@ $lang["giftcards_edit_fields_you_want_to_update"] = "قم بتحديث الحق
$lang["giftcards_edit_multiple_giftcards"] = "تحرير مجموعة من بطاقات الهدايا.";
$lang["giftcards_error_adding_updating"] = "خطاء فى إضافة/تحديث بطاقة هدية.";
$lang["giftcards_error_updating_multiple"] = "خطاء فى تحديث بيانات بطاقات الهدايا.";
$lang["giftcards_excel_import_failed"] = "فشل الإستيراد من اكسل.";
$lang["giftcards_generate_barcodes"] = "توليد أكواد الباركود";
$lang["giftcards_giftcard"] = "بطاقة هدية";
$lang["giftcards_giftcard_number"] = "رقم بطاقة الهدية";

View File

@@ -22,6 +22,10 @@ $lang["items_cost_price"] = "سعر التكلفة";
$lang["items_cost_price_number"] = "سعر التكلفة يجب أن يكون رقم.";
$lang["items_cost_price_required"] = "سعر التكلفة مطلوب.";
$lang["items_count"] = "تحديث المخزون";
$lang["items_csv_import_failed"] = "فشل الإستيراد من اكسل";
$lang["items_csv_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
$lang["items_csv_import_partially_failed"] = "يوجد خطأ بنسبة 1% في استيراد الاصناف في السطر: %2. لم يتم استيرادهم.";
$lang["items_csv_import_success"] = "تم استيراد الأصناف بنجاح.";
$lang["items_current_quantity"] = "الكمية الحالية";
$lang["items_default_pack_name"] = "كل";
$lang["items_description"] = "الوصف";
@@ -32,16 +36,13 @@ $lang["items_edit_multiple_items"] = "تحريد مجموعة اصناف";
$lang["items_empty_upc_items"] = "تفريغ اصناف UPC";
$lang["items_error_adding_updating"] = "خطاء فى إضافة/تحديث صنف";
$lang["items_error_updating_multiple"] = "خطاء فى تحديث بيانات أصناف";
$lang["items_excel_import_failed"] = "فشل الإستيراد من اكسل";
$lang["items_excel_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
$lang["items_excel_import_partially_failed"] = "تم استيراد معظم الأصناف. البعض لم يتم استيرادهم ، وهذه هى القائمة:";
$lang["items_excel_import_success"] = "تم استيراد الأصناف بنجاح.";
$lang["items_generate_barcodes"] = "توليد أكواد الباركود";
$lang["items_hsn_code"] = "تسميات النظام المنسق";
$lang["items_image"] = "صورة";
$lang["items_import_items_excel"] = "استيراد من اكسل";
$lang["items_import_items_csv"] = "استيراد من اكسل";
$lang["items_info_provided_by"] = "المعلومات مقدمة بواسطة";
$lang["items_inventory"] = "المخزن";
$lang["items_inventory_CSV_import_quantity"] = "العدد المستورد من ملفات ال CSV";
$lang["items_inventory_comments"] = "تعليقات";
$lang["items_inventory_data_tracking"] = "تتبع بيانات المخزون";
$lang["items_inventory_date"] = "التاريخ";

View File

@@ -13,6 +13,7 @@ $lang["sales_cash"] = "نقدى";
$lang["sales_cash_deposit"] = "ايداع نقدي";
$lang["sales_cash_filter"] = "نقدى";
$lang["sales_change_due"] = "الباقى";
$lang["sales_change_price"] = "";
$lang["sales_check"] = "شيك";
$lang["sales_check_balance"] = "تذكير بموعد الشيك";
$lang["sales_check_filter"] = "شيك";
@@ -24,6 +25,7 @@ $lang["sales_confirm_delete"] = "هل تريد حذف عمليات البيع ا
$lang["sales_confirm_restore"] = "هل انت متاكد من استعادة عملية البيع؟";
$lang["sales_credit"] = "بطاقة إئتمانية";
$lang["sales_credit_deposit"] = "ايداع ببطاقة ائتمان";
$lang["sales_credit_filter"] = "";
$lang["sales_customer"] = "العميل";
$lang["sales_customer_address"] = "العنوان";
$lang["sales_customer_discount"] = "الخصم";
@@ -97,6 +99,7 @@ $lang["sales_no_filter"] = "الكل";
$lang["sales_no_items_in_cart"] = "لايوجد أصناف فى السلة.";
$lang["sales_no_sales_to_display"] = "لاتوجد عمليات بيع لعرضها.";
$lang["sales_none_selected"] = "لم تقم بإختيار أى عمليات بيع لحذفها.";
$lang["sales_nontaxed_ind"] = "";
$lang["sales_not_authorized"] = "هذه العملية لا يمكن فعلها لعدم تخويلك.";
$lang["sales_one_or_multiple"] = "عمليات بيع";
$lang["sales_payment"] = "طريقة الدفع";
@@ -120,6 +123,7 @@ $lang["sales_receipt_no_email"] = "هذا العميل ليس له اي بريد
$lang["sales_receipt_number"] = "إيصال بيع";
$lang["sales_receipt_sent"] = "تم إرسال الإيصال إلى";
$lang["sales_receipt_unsent"] = "فشل إرسال الإيصال إلى";
$lang["sales_refund"] = "";
$lang["sales_register"] = "مسجل المبيعات";
$lang["sales_remove_customer"] = "حذف عميل";
$lang["sales_return"] = "إرتجاع";
@@ -157,6 +161,7 @@ $lang["sales_tax"] = "ضريبة";
$lang["sales_tax_id"] = "الرقم الضريبي";
$lang["sales_tax_invoice"] = "فاتورة ضريبية";
$lang["sales_tax_percent"] = "ضريبة %";
$lang["sales_taxed_ind"] = "";
$lang["sales_total"] = "المجموع";
$lang["sales_total_tax_exclusive"] = "الإجمالى بدون الضرائب";
$lang["sales_transaction_failed"] = "فشل حركة البيع.";

View File

@@ -54,6 +54,7 @@ $lang["taxes_tax_codes_saved_successfully"] = "تم حفظ تغييرات قان
$lang["taxes_tax_codes_saved_unsuccessfully"] = "لم يتم حفظ تغييرات قانون الضريبة";
$lang["taxes_tax_excluded"] = "لا تشمل الضرائب";
$lang["taxes_tax_group"] = "المجموعة الضريبية";
$lang["taxes_tax_group_not_unique"] = "";
$lang["taxes_tax_group_sequence"] = "تسلسل مجموعة الضرائب";
$lang["taxes_tax_included"] = "الضريبة مشمولة";
$lang["taxes_tax_jurisdiction"] = "الاختصاص الضريبي";

View File

@@ -7,6 +7,7 @@ $lang["common_close"] = "إغلاق";
$lang["common_comments"] = "تعليقات";
$lang["common_common"] = "عام";
$lang["common_confirm_search"] = "لقد قمت اختيار أكتر من سجل، سوف تفقد هذه الاختيارات عند إرسال البحث، موافق؟";
$lang["common_copyrights"] = "© 2010 - %1";
$lang["common_correct_errors"] = "يرجى تصحيح الأخطاء المحددة قبل الحفظ";
$lang["common_country"] = "البلد";
$lang["common_date"] = "التاريخ";
@@ -16,9 +17,9 @@ $lang["common_download_import_template"] = "تنزيل قالب الاستيرا
$lang["common_edit"] = "تحرير";
$lang["common_email"] = "بريد إلكتروني";
$lang["common_email_invalid_format"] = "شكل البريد الإلكتروني غير صحيح.";
$lang["common_export_excel"] = "تصدير إلى اكسل";
$lang["common_export_excel_no"] = "لا";
$lang["common_export_excel_yes"] = "نعم";
$lang["common_export_csv"] = "تصدير إلى اكسل";
$lang["common_export_csv_no"] = "لا";
$lang["common_export_csv_yes"] = "نعم";
$lang["common_fields_required_message"] = "الحقول التي بالأحمر مطلوبة";
$lang["common_first_name"] = "الاسم الأول";
$lang["common_first_name_required"] = "الاسم الأول مطلوب.";
@@ -29,7 +30,7 @@ $lang["common_gender_male"] = "ذكر";
$lang["common_id"] = "كود";
$lang["common_import"] = "استيراد";
$lang["common_import_change_file"] = "تغيير";
$lang["common_import_excel"] = "استيراد من اكسل";
$lang["common_import_csv"] = "استيراد من اكسل";
$lang["common_import_full_path"] = "المسار الكامل لملف اكسل مطلوب";
$lang["common_import_remove_file"] = "إزالة";
$lang["common_import_select_file"] = "اختار ملف";

View File

@@ -1,6 +1,8 @@
<?php
<?php
$lang["config_address"] = "عنوان الشركة";
$lang["config_address_required"] = "عنوان الشركة مطلوب.";
$lang["config_all_set"] = "All file permissions are set correctly!";
$lang["config_allow_duplicate_barcodes"] = "السماح بتشابة الباركود";
$lang["config_apostrophe"] = "الفاصلة";
$lang["config_backup_button"] = "نسخ إحتياطى";
@@ -32,6 +34,7 @@ $lang["config_bottom"] = "الأسفل";
$lang["config_cash_decimals"] = "فواصل النقدية";
$lang["config_cash_decimals_tooltip"] = "إذا كانت الكسور العشرية النقدية وعشرية العملات هي نفسها ثم لن يتم تقريب النقدية.";
$lang["config_cash_rounding"] = "التقريب النقدي";
$lang["config_category_dropdown"] = "";
$lang["config_center"] = "الوسط";
$lang["config_comma"] = "فاصلة";
$lang["config_company"] = "اسم الشركة";
@@ -110,6 +113,7 @@ $lang["config_email_smtp_user"] = "اسم مستخدم SMTP";
$lang["config_enforce_privacy"] = "فرض نظام الخصوصية";
$lang["config_enforce_privacy_tooltip"] = "حماية ملفات ومعلومات المستخدم عند الحذف";
$lang["config_fax"] = "الفاكس";
$lang["config_file_perm"] = "There are problems with file permissions please fix and reload this page.";
$lang["config_financial_year"] = "بداية السنة المالية";
$lang["config_financial_year_apr"] = "1 أبريل";
$lang["config_financial_year_aug"] = "1 أغسطس";
@@ -134,6 +138,11 @@ $lang["config_general_configuration"] = "إعدادات عامة";
$lang["config_giftcard_number"] = "رقم كارت الهدية";
$lang["config_giftcard_random"] = "توليد عشوائي";
$lang["config_giftcard_series"] = "توليد في السلسلة";
$lang["config_image_allowed_file_types"] = "";
$lang["config_image_max_height_tooltip"] = "";
$lang["config_image_max_size_tooltip"] = "";
$lang["config_image_max_width_tooltip"] = "";
$lang["config_image_restrictions"] = "";
$lang["config_include_hsn"] = "تشمل الدعم لرمز نظام منسق";
$lang["config_info"] = "معلومات";
$lang["config_info_configuration"] = "معلومات الشركة";
@@ -146,6 +155,8 @@ $lang["config_invoice_email_message"] = "قالب البريد الإلكترو
$lang["config_invoice_enable"] = "تفعيل الفوترة";
$lang["config_invoice_printer"] = "طابعة الفواتير";
$lang["config_invoice_type"] = "نوع الفاتورة";
$lang["config_is_readable"] = "";
$lang["config_is_writable"] = "is writable, but the permissions are higher than 750.";
$lang["config_jsprintsetup_required"] = "تحذير! هذه الخاصية غير المفعلة سوف تعمل فقط مع وجود الاضافة jsPrintSetup على متصفح فايرفوكس. حفظ على أى حال؟";
$lang["config_language"] = "اللغة";
$lang["config_last_used_invoice_number"] = "اخر رقم مستخدم للفاتورة";
@@ -183,6 +194,7 @@ $lang["config_msg_src_required"] = "مطلوب SMS-API كود المرسل لـ"
$lang["config_msg_uid"] = "SMS-API اسم المستخدم لـ";
$lang["config_msg_uid_required"] = "مطلوب SMS-API اسم المستخدم لـ";
$lang["config_multi_pack_enabled"] = "رزم متعددة لكل صنف";
$lang["config_no_risk"] = "No security/vulnerability risks.";
$lang["config_none"] = "لايوجد";
$lang["config_notify_alignment"] = "مكان عرض رسائل المعلومات";
$lang["config_number_format"] = "شكل الرقم";
@@ -190,8 +202,10 @@ $lang["config_number_locale"] = "التهيئة الاقليمية";
$lang["config_number_locale_invalid"] = "التهيئة الإقليمية المختارة غير صحية، راجع الرابط الموجود فى الملاحظة لاختيار تهيئة مناسبة.";
$lang["config_number_locale_required"] = "رقم التهيئة الإقليمية مطلوب.";
$lang["config_number_locale_tooltip"] = "إيجاد تهيئة إقليمية مناسبة عبر الرابط.";
$lang["config_os_timezone"] = "";
$lang["config_ospos_info"] = "معلومات التثبيت OSPOS";
$lang["config_payment_options_order"] = "ترتيب خيارات الدفع";
$lang["config_perm_risk"] = "Permissions higher than 750 leaves this software at risk.";
$lang["config_phone"] = "هاتف الشركة";
$lang["config_phone_required"] = "هاتف الشركة مطلوب.";
$lang["config_print_bottom_margin"] = "الهامش السفلي";
@@ -230,12 +244,14 @@ $lang["config_receipt_short"] = "مختصر";
$lang["config_receipt_show_company_name"] = "عرض اسم الشركة";
$lang["config_receipt_show_description"] = "عرض الوصف";
$lang["config_receipt_show_serialnumber"] = "عرض الرقم المسلسل";
$lang["config_receipt_show_tax_ind"] = "";
$lang["config_receipt_show_taxes"] = "عرض الضرائب";
$lang["config_receipt_show_total_discount"] = "عرض إجمالى الخصم";
$lang["config_receipt_template"] = "قالب الايصال";
$lang["config_receiving_calculate_average_price"] = "حساب متوسط سعر الأصناف المستلمة";
$lang["config_recv_invoice_format"] = "شكل فاتورة الإستلام";
$lang["config_register_mode_default"] = "نمط التسجيل الافتراضي";
$lang["config_report_an_issue"] = "";
$lang["config_return_policy_required"] = "سياسة الإسترجاع مطلوب.";
$lang["config_reward"] = "المكافاة";
$lang["config_reward_configuration"] = "اعدادات المكافاة";
@@ -244,6 +260,7 @@ $lang["config_sales_invoice_format"] = "شكل فاتورة البيع";
$lang["config_sales_quote_format"] = "شكل فاتورة عرض الاسعار";
$lang["config_saved_successfully"] = "تم حفظ التهيئة بنجاح.";
$lang["config_saved_unsuccessfully"] = "لم يتم حفظ التهيئة بنجاح.";
$lang["config_security_issue"] = "Security Vulnerability Warning";
$lang["config_server_notice"] = "يرجى استخدام المعلومات أدناه للإبلاغ عن المشكلة.";
$lang["config_show_office_group"] = "اظهار ايكونة المكتب";
$lang["config_statistics"] = "إرسال اﻹحصائيات";
@@ -256,6 +273,7 @@ $lang["config_suggestions_first_column"] = "العامود 1";
$lang["config_suggestions_layout"] = "تخطيط اقتراحات البحث";
$lang["config_suggestions_second_column"] = "العامود 2";
$lang["config_suggestions_third_column"] = "العامود 3";
$lang["config_system_conf"] = "Setup & Conf";
$lang["config_system_info"] = "System Info";
$lang["config_table"] = "جدول";
$lang["config_table_configuration"] = "اعدادات الجدول";
@@ -273,8 +291,10 @@ $lang["config_tax_included"] = "شامل الضريبة";
$lang["config_theme"] = "السمة";
$lang["config_thousands_separator"] = "فاصل الاف";
$lang["config_timezone"] = "المنطقة الزمنية";
$lang["config_timezone_error"] = "";
$lang["config_top"] = "علوى";
$lang["config_use_destination_based_tax"] = "استخدام الضريبة المستندة على الوجهة";
$lang["config_user_timezone"] = "";
$lang["config_website"] = "موقع الشركة";
$lang["config_work_order_enable"] = "تفعيل طلبات العمل";
$lang["config_work_order_format"] = "شكل طلبات العمل";

View File

@@ -12,6 +12,10 @@ $lang["customers_confirm_delete"] = "هل تريد حذف هؤلاء العمل
$lang["customers_confirm_restore"] = "هل انت متأكد من إستعادة قاعدة بيانات الزبائن ؟";
$lang["customers_consent"] = "موافقة التسجيل";
$lang["customers_consent_required"] = "موافقة التسجيل هي خانة اجبارية.";
$lang["customers_csv_import_failed"] = "فشل الإستيراد من اكسل";
$lang["customers_csv_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
$lang["customers_csv_import_partially_failed"] = "تم استيراد معظم العملاء. البعض لم يتم استيرادهم ، وهذه هى القائمة:";
$lang["customers_csv_import_success"] = "تم استيراد العملاء بنجاح.";
$lang["customers_customer"] = "العميل";
$lang["customers_date"] = "التاريخ";
$lang["customers_discount"] = "نسبة الخصم";
@@ -21,11 +25,7 @@ $lang["customers_discount_type"] = "نوع الحسم";
$lang["customers_email_duplicate"] = "البريد الالكتروني مكرر.";
$lang["customers_employee"] = "الموظف";
$lang["customers_error_adding_updating"] = "خطاء فى إضافة أو تحديث العميل.";
$lang["customers_excel_import_failed"] = "فشل الإستيراد من اكسل";
$lang["customers_excel_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
$lang["customers_excel_import_partially_failed"] = "تم استيراد معظم العملاء. البعض لم يتم استيرادهم ، وهذه هى القائمة:";
$lang["customers_excel_import_success"] = "تم استيراد العملاء بنجاح.";
$lang["customers_import_items_excel"] = "استيراد العملا ء من ورقة عمل اكسل";
$lang["customers_import_items_csv"] = "استيراد العملا ء من ورقة عمل اكسل";
$lang["customers_mailchimp_activity_click"] = "النقر على البريد الإلكتروني";
$lang["customers_mailchimp_activity_lastopen"] = "آخر رسالة إلكترونية مفتوحة";
$lang["customers_mailchimp_activity_open"] = "رسالة إلكترونية مفتوحة";

View File

@@ -17,6 +17,7 @@ $lang["giftcards_confirm_delete"] = "هل أنت متأكد انك تريد حذ
$lang["giftcards_confirm_restore"] = "هل تريد بالتأكيد استعادة بطاقة (بطاقات) الهدايا المحددة؟";
$lang["giftcards_cost_price"] = "سعر التكلفة";
$lang["giftcards_count"] = "تحديث المخزون";
$lang["giftcards_csv_import_failed"] = "فشل الإستيراد من اكسل.";
$lang["giftcards_current_quantity"] = "الكميات الحالية";
$lang["giftcards_description"] = "الوصف";
$lang["giftcards_details_count"] = "حركة الكارت";
@@ -25,7 +26,6 @@ $lang["giftcards_edit_fields_you_want_to_update"] = "قم بتحديث الحق
$lang["giftcards_edit_multiple_giftcards"] = "تحرير مجموعة من بطاقات الهدايا.";
$lang["giftcards_error_adding_updating"] = "خطاء فى إضافة/تحديث بطاقة هدية.";
$lang["giftcards_error_updating_multiple"] = "خطاء فى تحديث بيانات بطاقات الهدايا.";
$lang["giftcards_excel_import_failed"] = "فشل الإستيراد من اكسل.";
$lang["giftcards_generate_barcodes"] = "توليد أكواد الباركود";
$lang["giftcards_giftcard"] = "بطاقة هدية";
$lang["giftcards_giftcard_number"] = "رقم بطاقة الهدية";

View File

@@ -22,6 +22,10 @@ $lang["items_cost_price"] = "سعر التكلفة";
$lang["items_cost_price_number"] = "سعر التكلفة يجب أن يكون رقم.";
$lang["items_cost_price_required"] = "سعر التكلفة مطلوب.";
$lang["items_count"] = "تحديث المخزون";
$lang["items_csv_import_failed"] = "فشل الإستيراد من اكسل";
$lang["items_csv_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
$lang["items_csv_import_partially_failed"] = "تم استيراد معظم الأصناف. البعض لم يتم استيرادهم ، وهذه هى القائمة:";
$lang["items_csv_import_success"] = "تم استيراد الأصناف بنجاح.";
$lang["items_current_quantity"] = "الكمية الحالية";
$lang["items_default_pack_name"] = "كل";
$lang["items_description"] = "الوصف";
@@ -32,16 +36,13 @@ $lang["items_edit_multiple_items"] = "تحريد مجموعة اصناف";
$lang["items_empty_upc_items"] = "تفريغ اصناف UPC";
$lang["items_error_adding_updating"] = "خطاء فى إضافة/تحديث صنف";
$lang["items_error_updating_multiple"] = "خطاء فى تحديث بيانات أصناف";
$lang["items_excel_import_failed"] = "فشل الإستيراد من اكسل";
$lang["items_excel_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
$lang["items_excel_import_partially_failed"] = "تم استيراد معظم الأصناف. البعض لم يتم استيرادهم ، وهذه هى القائمة:";
$lang["items_excel_import_success"] = "تم استيراد الأصناف بنجاح.";
$lang["items_generate_barcodes"] = "توليد أكواد الباركود";
$lang["items_hsn_code"] = "تسميات النظام المنسق";
$lang["items_image"] = "صورة";
$lang["items_import_items_excel"] = "استيراد من اكسل";
$lang["items_import_items_csv"] = "استيراد من اكسل";
$lang["items_info_provided_by"] = "المعلومات مقدمة بواسطة";
$lang["items_inventory"] = "المخزن";
$lang["items_inventory_CSV_import_quantity"] = "العدد المستورد من ملفات ال CSV";
$lang["items_inventory_comments"] = "تعليقات";
$lang["items_inventory_data_tracking"] = "تتبع بيانات المخزون";
$lang["items_inventory_date"] = "التاريخ";

View File

@@ -13,6 +13,7 @@ $lang["sales_cash"] = "نقدى";
$lang["sales_cash_deposit"] = "ايداع نقدي";
$lang["sales_cash_filter"] = "نقدى";
$lang["sales_change_due"] = "الباقى";
$lang["sales_change_price"] = "";
$lang["sales_check"] = "شيك";
$lang["sales_check_balance"] = "تذكير بموعد الشيك";
$lang["sales_check_filter"] = "شيك";
@@ -24,6 +25,7 @@ $lang["sales_confirm_delete"] = "هل تريد حذف عمليات البيع ا
$lang["sales_confirm_restore"] = "هل انت متاكد من استعادة عملية البيع؟";
$lang["sales_credit"] = "بطاقة إئتمانية";
$lang["sales_credit_deposit"] = "ايداع ببطاقة ائتمان";
$lang["sales_credit_filter"] = "";
$lang["sales_customer"] = "العميل";
$lang["sales_customer_address"] = "العنوان";
$lang["sales_customer_discount"] = "الخصم";
@@ -97,6 +99,7 @@ $lang["sales_no_filter"] = "الكل";
$lang["sales_no_items_in_cart"] = "لايوجد أصناف فى السلة.";
$lang["sales_no_sales_to_display"] = "لاتوجد عمليات بيع لعرضها.";
$lang["sales_none_selected"] = "لم تقم بإختيار أى عمليات بيع لحذفها.";
$lang["sales_nontaxed_ind"] = "";
$lang["sales_not_authorized"] = "هذه العملية لا يمكن فعلها لعدم تخويلك.";
$lang["sales_one_or_multiple"] = "عمليات بيع";
$lang["sales_payment"] = "طريقة الدفع";
@@ -120,6 +123,7 @@ $lang["sales_receipt_no_email"] = "هذا العميل ليس له اي بريد
$lang["sales_receipt_number"] = "إيصال بيع";
$lang["sales_receipt_sent"] = "تم إرسال الإيصال إلى";
$lang["sales_receipt_unsent"] = "فشل إرسال الإيصال إلى";
$lang["sales_refund"] = "";
$lang["sales_register"] = "مسجل المبيعات";
$lang["sales_remove_customer"] = "حذف عميل";
$lang["sales_return"] = "إرتجاع";
@@ -157,6 +161,7 @@ $lang["sales_tax"] = "ضريبة";
$lang["sales_tax_id"] = "الرقم الضريبي";
$lang["sales_tax_invoice"] = "فاتورة ضريبية";
$lang["sales_tax_percent"] = "ضريبة %";
$lang["sales_taxed_ind"] = "";
$lang["sales_total"] = "المجموع";
$lang["sales_total_tax_exclusive"] = "الإجمالى بدون الضرائب";
$lang["sales_transaction_failed"] = "فشل حركة البيع.";

View File

@@ -54,6 +54,7 @@ $lang["taxes_tax_codes_saved_successfully"] = "تم حفظ تغييرات قان
$lang["taxes_tax_codes_saved_unsuccessfully"] = "لم يتم حفظ تغييرات قانون الضريبة";
$lang["taxes_tax_excluded"] = "لا تشمل الضرائب";
$lang["taxes_tax_group"] = "المجموعة الضريبية";
$lang["taxes_tax_group_not_unique"] = "";
$lang["taxes_tax_group_sequence"] = "تسلسل مجموعة الضرائب";
$lang["taxes_tax_included"] = "الضريبة مشمولة";
$lang["taxes_tax_jurisdiction"] = "الاختصاص الضريبي";

View File

@@ -1,4 +1,5 @@
<?php
<?php
$lang["attributes_attribute_value_invalid_chars"] = "Atribut dəyəri bu ':' və ya '|' olmaz";
$lang["attributes_confirm_delete"] = "Seçilmiş Atributları silmək istədiyinizdən əminsinizmi?";
$lang["attributes_confirm_restore"] = "Seçilmiş atributları bərpa etmək istədiyinizə əminsinizmi?";

View File

@@ -1,6 +1,6 @@
<?php
$lang["tables_all"] = "Hamısı";
$lang["tables_all"] = "hamısı";
$lang["tables_columns"] = "Sütunlar";
$lang["tables_hide_show_pagination"] = "Gizlət/Göstər səhifənin nömrələnməsin";
$lang["tables_loading"] = "Lütfən gözləyin, səhifə yüklənir...";

View File

@@ -7,30 +7,31 @@ $lang["common_close"] = "Bağlı";
$lang["common_comments"] = "Rəylər";
$lang["common_common"] = "ortaq";
$lang["common_confirm_search"] = "Bir və ya bir neçə sətir seçdiniz, bunlar axtarışınızdan sonra artıq seçilməyəcək. Bu axtarışı göndərmək istədiyinizə əminsinizmi?";
$lang["common_copyrights"] = "© 2010 - %1";
$lang["common_correct_errors"] = "Xahiş edirik təsdiqlə-dən əvvəl səhvləri düzəldin";
$lang["common_country"] = "Ölkə";
$lang["common_date"] = "Təqvim";
$lang["common_delete"] = "Sil";
$lang["common_det"] = "detallar";
$lang["common_download_import_template"] = "İdxal Excel Şablonunu Yüklə (CSV)";
$lang["common_download_import_template"] = "CSV Şablonunu (CSV) daxil edin";
$lang["common_edit"] = "Redaktə Et";
$lang["common_email"] = "E-poçt";
$lang["common_email_invalid_format"] = "E-poçt ünvanı düzgün formatda deyil.";
$lang["common_export_excel"] = "Excel Export";
$lang["common_export_excel_no"] = "Xeyir";
$lang["common_export_excel_yes"] = "Bəli";
$lang["common_export_csv"] = "CSV Export";
$lang["common_export_csv_no"] = "Xeyr";
$lang["common_export_csv_yes"] = "Bəli";
$lang["common_fields_required_message"] = "Qırmızı sahələr tələb olunur";
$lang["common_first_name"] = "Ad";
$lang["common_first_name_required"] = "Ad yazmağınız tələb olunur.";
$lang["common_first_page"] = "Birinci";
$lang["common_gender"] = "Cins";
$lang["common_gender_female"] = "F";
$lang["common_gender_male"] = "M";
$lang["common_gender_female"] = "Q";
$lang["common_gender_male"] = "K";
$lang["common_id"] = "ID";
$lang["common_import"] = "İmport";
$lang["common_import"] = "Daxil et";
$lang["common_import_change_file"] = "Dəyiş";
$lang["common_import_excel"] = "Excel Import";
$lang["common_import_full_path"] = "Excel faylına tam yol tələb olunur";
$lang["common_import_csv"] = "CSV daxil et";
$lang["common_import_full_path"] = "CSV faylına tam yol tələb olunur";
$lang["common_import_remove_file"] = "Sil(Gizlət)";
$lang["common_import_select_file"] = "Fayl Seç";
$lang["common_inv"] = "Qaimə";
@@ -44,7 +45,7 @@ $lang["common_migration_needed"] = "Girişdən sonra bazaya %1 köçməsi başla
$lang["common_new"] = "Yenisi";
$lang["common_no_persons_to_display"] = "Göstərmək üçün heç kim yoxdur.";
$lang["common_none_selected_text"] = "Seçin";
$lang["common_or"] = "Ya";
$lang["common_or"] = "ya";
$lang["common_phone_number"] = "Telefon";
$lang["common_phone_number_required"] = "çıxarış ";
$lang["common_please_visit_my"] = "Xahiş edirik ziyarət edin";
@@ -58,9 +59,9 @@ $lang["common_return_policy"] = "Qaytarma siyasəti";
$lang["common_search"] = "Axtarış";
$lang["common_search_options"] = "Axtarış variantları";
$lang["common_searched_for"] = "Axtarıldı";
$lang["common_state"] = "Ştat";
$lang["common_state"] = "Əyalət";
$lang["common_submit"] = "Təsdiqlə";
$lang["common_total_spent"] = "mi Xərclənmiş";
$lang["common_total_spent"] = "Ümumi xərc";
$lang["common_unknown"] = "Naməlum";
$lang["common_view_recent_sales"] = "Son Satışları Göstər";
$lang["common_website"] = "Veb Sayt";

View File

@@ -1,6 +1,8 @@
<?php
<?php
$lang["config_address"] = "Şirkət Adresi";
$lang["config_address_required"] = "Şirkətin adı olan boşluq sahəsi doldurulmalıdı.";
$lang["config_address_required"] = "Şirkətin adı olan boşluq sahəsi doldurulmalıdı.";
$lang["config_all_set"] = "Bütün fayl icazələri düzgün qurulub!";
$lang["config_allow_duplicate_barcodes"] = "Dublikat Barkodlarına icazə verin";
$lang["config_apostrophe"] = "Apastrof";
$lang["config_backup_button"] = "Ehtiyyat Köçürmə";
@@ -32,6 +34,7 @@ $lang["config_bottom"] = "Aşağı";
$lang["config_cash_decimals"] = "Nəğd Pul Cədvəlləri";
$lang["config_cash_decimals_tooltip"] = "Nağd pul və Məzənnədəki ədədlər eyni olarsa, onda nağd pul yuvarlaqlaşması baş verməz.";
$lang["config_cash_rounding"] = "Nəğd Pul Yuvarlaqlaşdırılması";
$lang["config_category_dropdown"] = "Bölməni açılan siyahida göstər";
$lang["config_center"] = "Mərkəz";
$lang["config_comma"] = "vergül";
$lang["config_company"] = "Şirkətin Adı";
@@ -110,6 +113,7 @@ $lang["config_email_smtp_user"] = "SMTP İstifadəçi Adı";
$lang["config_enforce_privacy"] = "Məxvilik Təmin edin";
$lang["config_enforce_privacy_tooltip"] = "Müştərilərin gizliliyini qorumaq, silmək halında məlumat şifrələməsini təmin etmək";
$lang["config_fax"] = "Faks";
$lang["config_file_perm"] = "Fayl icazəsində problem var, lütfən bu səhvləri düzəldib səhifəni yeniləyin.";
$lang["config_financial_year"] = "Maliyyə İli Başlancığı";
$lang["config_financial_year_apr"] = "1 Aprel";
$lang["config_financial_year_aug"] = "1 Avgust";
@@ -134,6 +138,11 @@ $lang["config_general_configuration"] = "Ümumi Konfiqurasiya";
$lang["config_giftcard_number"] = "Hədiyyə Kartı Nömrəsi";
$lang["config_giftcard_random"] = "Təsadüfən Yarat";
$lang["config_giftcard_series"] = "Bölümlərə görə Yarat";
$lang["config_image_allowed_file_types"] = "İcazəli fayl növləri";
$lang["config_image_max_height_tooltip"] = "Şəkillərinin maksimum hündürlüyü pikselə(px).";
$lang["config_image_max_size_tooltip"] = "Şəkil yükləmələrinin maksimum fayl ölçüsü kilobaytla(kb).";
$lang["config_image_max_width_tooltip"] = "Şəkillərinin maksimum enliliyi pikselə(px).";
$lang["config_image_restrictions"] = "Şəkil yükləmə məhdudiyyətləri";
$lang["config_include_hsn"] = "HSN Kodlarına dəstək verin";
$lang["config_info"] = "Məlumat";
$lang["config_info_configuration"] = "Dükan İnformasiyası";
@@ -146,6 +155,8 @@ $lang["config_invoice_email_message"] = "Dil";
$lang["config_invoice_enable"] = "Fakturanı Aktivləşdir";
$lang["config_invoice_printer"] = "Faktura Printeri";
$lang["config_invoice_type"] = "Qaimənin Tipi";
$lang["config_is_readable"] = "oxunur, lakin icazələr 660-dan yüksəkdir.";
$lang["config_is_writable"] = "yazılabilir, lakin icazələr 750-dən yüksəkdir.";
$lang["config_jsprintsetup_required"] = "Xəbərdarlıq: Bu funksiya yalnız FireFox jsPrintSetup addon quraşdırıldığı halda işləyəcəkdir. Yadda saxlanılsın?";
$lang["config_language"] = "Dil";
$lang["config_last_used_invoice_number"] = "Son istifadə edilmiş Faktura nömrəsi";
@@ -183,6 +194,7 @@ $lang["config_msg_src_required"] = "SMS-API Göndərici ID tələb olunan sahəd
$lang["config_msg_uid"] = "SMS-API İstifadəçi adı";
$lang["config_msg_uid_required"] = "SMS-API İstifadəçi adı tələb olunan sahədir";
$lang["config_multi_pack_enabled"] = "Hər bir elementə birdən çox paket";
$lang["config_no_risk"] = "Təhlükəsizlik / zəiflik riski yoxdur.";
$lang["config_none"] = "Heç biri";
$lang["config_notify_alignment"] = "Bildiriş Pəncərə Mövqeyi";
$lang["config_number_format"] = "Nömrə Formatı";
@@ -190,8 +202,10 @@ $lang["config_number_locale"] = "Yerləşdirmə";
$lang["config_number_locale_invalid"] = "Kompaniyanın tel.";
$lang["config_number_locale_required"] = "Şirkət telefonu olan sahə boş qalma bilməz.";
$lang["config_number_locale_tooltip"] = "Bu link vasitəsilə uyğun bir yer tapın.";
$lang["config_os_timezone"] = "OSPOS Saat qurşağı:";
$lang["config_ospos_info"] = "OSPOS quraşdırılması məlumatı";
$lang["config_payment_options_order"] = "Sifariş üçün Ödəmə Şərtləri";
$lang["config_perm_risk"] = "Permissions higher than 750 leaves this software at risk.";
$lang["config_phone"] = "Şirkətin Telefon Nömrəsi";
$lang["config_phone_required"] = "Şirkət Telefonu tələb olunan bir sahədir.";
$lang["config_print_bottom_margin"] = "Çərçivədki aşağı Sərhəd";
@@ -230,12 +244,14 @@ $lang["config_receipt_short"] = "Qısa";
$lang["config_receipt_show_company_name"] = "Şirkətin Adını Göstər";
$lang["config_receipt_show_description"] = "Təsviri Göstər";
$lang["config_receipt_show_serialnumber"] = "Serial nömrəsi göstər";
$lang["config_receipt_show_tax_ind"] = "Vergi göstəricisinə bax";
$lang["config_receipt_show_taxes"] = "Vergini Göstər";
$lang["config_receipt_show_total_discount"] = "Ümumi Endirim göstər";
$lang["config_receipt_template"] = "Geri qaytarmaq mütləq məsafə lazımdır";
$lang["config_receiving_calculate_average_price"] = "Otalama Qiyməti Hesabla (Alınan)";
$lang["config_recv_invoice_format"] = "Alınan Fatura Formatı";
$lang["config_register_mode_default"] = "Standart Qeydiyyat Rejimi";
$lang["config_report_an_issue"] = "Bir problemi bildirişi";
$lang["config_return_policy_required"] = "Geri Qaytarma Qanunu olan sahə zəruri sahədir.";
$lang["config_reward"] = "Mükafat";
$lang["config_reward_configuration"] = "Konfiqurasiya ugurla saxlanıldı";
@@ -244,18 +260,20 @@ $lang["config_sales_invoice_format"] = "Satış Fatura Formatı";
$lang["config_sales_quote_format"] = "Satış Sitat Formati";
$lang["config_saved_successfully"] = "Konfiqurasiya uğurla saxlanıldı.";
$lang["config_saved_unsuccessfully"] = "Konfiqurasiyanı saxlamq mümkün olmadı.";
$lang["config_security_issue"] = "Təhlükəsizlik açığı xəbərdarlığı";
$lang["config_server_notice"] = "Xahiş edirik, hesabatın təqdim edilməsi üçün aşağıdakı məlumatı istifadə edin.";
$lang["config_show_office_group"] = "Ofis İşarəsini Göstər";
$lang["config_statistics"] = "Statistikalari Göndər";
$lang["config_statistics_tooltip"] = "İnkişaf və xüsusiyyət təkmilləşdirilməsi məqsədi ilə statistika göndərin.";
$lang["config_stock_location"] = "Ehtiyyat Yeri";
$lang["config_stock_location_duplicate"] = "Ehtiyyat Olan Yer Unikal Olmalıdir.";
$lang["config_stock_location_invalid_chars"] = "Ehtiyyat Yeri '_' təşkil etməməlidir.";
$lang["config_stock_location_invalid_chars"] = "Ehtiyyat Yeri təşkil etməməlidir '_'.";
$lang["config_stock_location_required"] = "Ehtiyyat Yeri Olan Sahə boş qala bilməz.";
$lang["config_suggestions_first_column"] = "Sütun 1";
$lang["config_suggestions_layout"] = "Təklif Çərçivələrini Axtar";
$lang["config_suggestions_second_column"] = "Sütun 2";
$lang["config_suggestions_third_column"] = "Sütun 3";
$lang["config_system_conf"] = "Quraşdırma və Conf";
$lang["config_system_info"] = "System Info";
$lang["config_table"] = "Masa";
$lang["config_table_configuration"] = "Cədvəl Konfiqurasiyası";
@@ -273,8 +291,10 @@ $lang["config_tax_included"] = "Vergi Daxildir";
$lang["config_theme"] = "Vebsayt";
$lang["config_thousands_separator"] = "Minliklər Ayıran";
$lang["config_timezone"] = "Vaxt Zonası";
$lang["config_timezone_error"] = "OSPOS Saat qurşağı Yerli saat qurşağınızdan fərqlidir.";
$lang["config_top"] = "Yuxarı";
$lang["config_use_destination_based_tax"] = "Təyinatından vergi istifadə edin";
$lang["config_user_timezone"] = "Yerli saat qurşağı:";
$lang["config_website"] = "Vebsayt";
$lang["config_work_order_enable"] = "İş Sifariş Dəstəyi";
$lang["config_work_order_format"] = "İş Sifarş Farmatı";

View File

@@ -1,6 +1,6 @@
<?php
$lang["customers_account_number"] = "hesab nömrəsi";
$lang["customers_account_number"] = "Hesab nömrəsi";
$lang["customers_account_number_duplicate"] = "Hesab nömrəsi artıq verilənlər bazasında mövcuddur.";
$lang["customers_available_points"] = "Mövcud ballar";
$lang["customers_average"] = "Orta xərclənən";
@@ -12,6 +12,10 @@ $lang["customers_confirm_delete"] = "Siz seçilmiş müştərini (lər) silməy
$lang["customers_confirm_restore"] = "Seçilmiş müştəriləri bərpa etmək istədiyinizə əminsinizmi?";
$lang["customers_consent"] = "Qeydiyyatın razılığı";
$lang["customers_consent_required"] = "Qeydiyyatın razılığı tələb olunan bir sahədir.";
$lang["customers_csv_import_failed"] = "CSV idxalı alınmadı";
$lang["customers_csv_import_nodata_wrongformat"] = "Yüklənmiş faylda məlumat yoxdur və ya düzgün formatda deyil.";
$lang["customers_csv_import_partially_failed"] = "Müştəri əlavəsi bəzi səhvlər olmaqla uğurla alındı:";
$lang["customers_csv_import_success"] = "Müştəri Əlavəsi uğurla alındı.";
$lang["customers_customer"] = "Müştəri";
$lang["customers_date"] = "Tarix";
$lang["customers_discount"] = "Endirim";
@@ -21,11 +25,7 @@ $lang["customers_discount_type"] = "Endirim növü";
$lang["customers_email_duplicate"] = "Məlumat bazasında artıq bu e-poçt ünvanı var.";
$lang["customers_employee"] = "Əməkdaş";
$lang["customers_error_adding_updating"] = "Müştəri əlavəsində ya da yenilənməsində XƏTA.";
$lang["customers_excel_import_failed"] = "Excel idxalı alınmadı";
$lang["customers_excel_import_nodata_wrongformat"] = "Yüklənmiş faylda məlumat yoxdur və ya düzgün formatda deyil.";
$lang["customers_excel_import_partially_failed"] = "Müştəri əlavəsi bəzi səhvlər olmaqla uğurla alındı:";
$lang["customers_excel_import_success"] = "Müştəri Əlavəsi uğurla alındı.";
$lang["customers_import_items_excel"] = "Exceldən müştəri əlavə et";
$lang["customers_import_items_csv"] = "CSVdən müştəri əlavə et";
$lang["customers_mailchimp_activity_click"] = "Elektron poçt düyməsi";
$lang["customers_mailchimp_activity_lastopen"] = "Son açılan məktub";
$lang["customers_mailchimp_activity_open"] = "ıq məktub";

View File

@@ -1,7 +1,7 @@
<?php
$lang["employees_basic_information"] = "Məlumat";
$lang["employees_cannot_be_deleted"] = "Seçilmiş əməkdaş (lar) silinə bilməz, bir və ya birdən çox əməkdaş satışlar edib, əks halda siz öz heasabınızı silməyə çalışırsiz.";
$lang["employees_cannot_be_deleted"] = "Seçilmiş əməkdaş (lar) silinə bilməz, bir və ya birdən çox əməkdaş satışlar edib, əks halda siz öz heasabınızı silməyə çalışırsınız.";
$lang["employees_change_password"] = "Şifrəni Dəyiş";
$lang["employees_confirm_delete"] = "Siz əminsiniz ki seçilmiş əməkdaşları silmək istəyirsiniz?";
$lang["employees_confirm_restore"] = "Seçilmiş əməkdaşı (lar) yenidən bərpa etməyinizə əminsinizmi?";

View File

@@ -1,19 +1,19 @@
<?php
$lang["category_name_required"] = "Xərc Kategoriyası adı tələb olunur";
$lang["expenses_categories_add_item"] = "Kategoriya əlavə et";
$lang["expenses_categories_cannot_be_deleted"] = "Kategoriya Xərcləri silinmədi";
$lang["category_name_required"] = "Xərc kateqoriyası adı tələb olunur";
$lang["expenses_categories_add_item"] = "Kateqoriya əlavə et";
$lang["expenses_categories_cannot_be_deleted"] = "Kateqoriya xərcləri silinmədi";
$lang["expenses_categories_category_id"] = "Kimlik";
$lang["expenses_categories_confirm_delete"] = "Seçilmiş xərc kateqoriyasını silmək istədiyinizə əminsinizmi?";
$lang["expenses_categories_confirm_restore"] = "Seçilmiş xərc bölməsini bərpa etmək istədiyinizə əminsiniz?";
$lang["expenses_categories_description"] = "Kateqoriya təsviri";
$lang["expenses_categories_error_adding_updating"] = "Əlavədə Səhv/Xərcl Kategotiyasi yenilənir";
$lang["expenses_categories_info"] = "Xərc Kategoriyası Məlumatı";
$lang["expenses_categories_name"] = "Kategoriya adı";
$lang["expenses_categories_new"] = "Yeni Kategoriya";
$lang["expenses_categories_no_expenses_categories_to_display"] = "Heç bir kategoriya göstərilmir";
$lang["expenses_categories_none_selected"] = "Siz heç bir Xərc Kategoriyasi Seçməmisiniz";
$lang["expenses_categories_one_or_multiple"] = "Xərc Kategoriyası";
$lang["expenses_categories_info"] = "Xərc kateqoriyası haqqında məlumat";
$lang["expenses_categories_name"] = "Kateqoriya adı";
$lang["expenses_categories_new"] = "Yeni Kateqoriya";
$lang["expenses_categories_no_expenses_categories_to_display"] = "Heç bir kateqoriya göstərilmir";
$lang["expenses_categories_none_selected"] = "Siz heç bir Xərc Kateqoriyası seçməmisiniz";
$lang["expenses_categories_one_or_multiple"] = "Xərc Kateqoriyası";
$lang["expenses_categories_quantity"] = "Miqdarı";
$lang["expenses_categories_successful_adding"] = "Xərc Kategoriyası uğurla əlavə edildi";
$lang["expenses_categories_successful_deleted"] = "Xərc Kategoriyası uğurla silindi";

View File

@@ -17,6 +17,7 @@ $lang["giftcards_confirm_delete"] = "Seçilmiş Hədiyyə Kartlarını ləğv et
$lang["giftcards_confirm_restore"] = "Seçilmiş Hədiyyə Kartlarını (lər) bərpa etmək istədiyinizə əminsinizmi?";
$lang["giftcards_cost_price"] = "Topdan Satış Qiyməti";
$lang["giftcards_count"] = "İnventarlaşdırmanı Yenilə";
$lang["giftcards_csv_import_failed"] = "CSV idxalı uğursuz oldu.";
$lang["giftcards_current_quantity"] = "Hazırkı Sayı";
$lang["giftcards_description"] = "Təsvir";
$lang["giftcards_details_count"] = "İnventarlaşdırma Sayının Detalları";
@@ -25,7 +26,6 @@ $lang["giftcards_edit_fields_you_want_to_update"] = "Seçilmiş Hədiyyə Kartla
$lang["giftcards_edit_multiple_giftcards"] = "Birneçə Hədiyyə Kartını redaktə et.";
$lang["giftcards_error_adding_updating"] = "Hədiyyə Kartı əlavə və ya yenilənməsində XƏTA.";
$lang["giftcards_error_updating_multiple"] = "Hədiyyə kartlarının yeniləməsi uğursuz oldu.";
$lang["giftcards_excel_import_failed"] = "Excel idxalı uğursuz oldu.";
$lang["giftcards_generate_barcodes"] = "Barkodlar Yarat";
$lang["giftcards_giftcard"] = "Hədiyyə Kartı";
$lang["giftcards_giftcard_number"] = "Hədiyyə Kartı Nömrəsi";

View File

@@ -3,7 +3,7 @@
$lang["item_kits_add_item"] = "Mal Əlavə Etmək";
$lang["item_kits_all"] = "Hamısı";
$lang["item_kits_cannot_be_deleted"] = "Dəst Mal (lar) silinə bilməz.";
$lang["item_kits_confirm_delete"] = "Siz əminsiniz ki seçilmiş mallar dəstlərini silmək istəyirsiniz?";
$lang["item_kits_confirm_delete"] = "Seçilmiş mallar dəstlərini silmək istəyinizə əminsiniz?";
$lang["item_kits_confirm_restore"] = "Seçilən Mal dəstini (lər) bərpa etmək istədiyinizə əminsiniz?";
$lang["item_kits_description"] = "Mal Dəstinin Təsviri";
$lang["item_kits_discount"] = "Endirim";

View File

@@ -18,10 +18,14 @@ $lang["items_confirm_bulk_edit"] = "Siz əminsinizmi ki işarələnmiş butun ma
$lang["items_confirm_bulk_edit_wipe_taxes"] = "Bütün Vergi haqqında olan Məlumatların yerləri dəyişəcək.";
$lang["items_confirm_delete"] = "siz əminsiniz ki seçilmiş malları silmək istəyirsiniz?";
$lang["items_confirm_restore"] = "Seçilmiş element (lər) bərpa etmək istədiyinizə əminsinizmi?";
$lang["items_cost_price"] = "topdan satış qiyməti";
$lang["items_cost_price"] = "Alış qiyməti";
$lang["items_cost_price_number"] = "Topdan satış rəqəmlə olmalıdır.";
$lang["items_cost_price_required"] = "Topdan satiış - yazılması vacib sahə.";
$lang["items_count"] = "inventorun yenilənməsi";
$lang["items_csv_import_failed"] = "səhv csv import";
$lang["items_csv_import_nodata_wrongformat"] = "Yüklənmiş faylda məlumat yoxdur və ya düzgün formatlanmır.";
$lang["items_csv_import_partially_failed"] = "Xətlərdə %1 element idxalı uğursuzluq (lar) var: %2. Heç bir sıra idxal edilmədi.";
$lang["items_csv_import_success"] = "Malların İdxalı Uğurla Həyata Keçdi.";
$lang["items_current_quantity"] = "indiki say";
$lang["items_default_pack_name"] = "Hər biri";
$lang["items_description"] = "təsvir";
@@ -32,16 +36,13 @@ $lang["items_edit_multiple_items"] = "bir neçə malın redaktəsi";
$lang["items_empty_upc_items"] = "Boş Barkod Malları";
$lang["items_error_adding_updating"] = "mal əlavə etməkdə və ya yeniləməkdə səhv var";
$lang["items_error_updating_multiple"] = "malların yenilənməsində səhv var";
$lang["items_excel_import_failed"] = "səhv excel import";
$lang["items_excel_import_nodata_wrongformat"] = "Yüklənmiş faylda məlumat yoxdur və ya düzgün formatlanmır.";
$lang["items_excel_import_partially_failed"] = "Bəzi uğursuzluqlarla idxal idarəsi müvəffəq olub:";
$lang["items_excel_import_success"] = "Malların İdxalı Uğurla Həyata Keçdi.";
$lang["items_generate_barcodes"] = "şifrə yarat";
$lang["items_hsn_code"] = "Harmonize Sistem Nomenklaturası";
$lang["items_image"] = "Avatar";
$lang["items_import_items_excel"] = "Exceldən Malları İdxal Et";
$lang["items_import_items_csv"] = "CSVdən Malları İdxal Et";
$lang["items_info_provided_by"] = "Məlumat təqdim olundu";
$lang["items_inventory"] = "inventor";
$lang["items_inventory_CSV_import_quantity"] = "Miqdarı CSV-dən idxal olunur";
$lang["items_inventory_comments"] = "komentariyalar";
$lang["items_inventory_data_tracking"] = "İnventarlaşdırma Üçün Məlumat İzləmə";
$lang["items_inventory_date"] = "Tarix";

View File

@@ -8,7 +8,7 @@ $lang["module_cashups_desc"] = "Əlavə et, Yenilə, Sil və Qazancları axtar."
$lang["module_config"] = "Konfiqursiya";
$lang["module_config_desc"] = "ALSAN Konfiqurasiyasını dəyiş.";
$lang["module_customers"] = "Müştərilər";
$lang["module_customers_desc"] = "Əlavə et,Yenilə,Sil və Müştəriləri axtar.";
$lang["module_customers_desc"] = "Əlavə et, Yenilə, Sil və Müştəriləri axtar.";
$lang["module_employees"] = "Əməkdaşlar";
$lang["module_employees_desc"] = "Əlavə et,Yenilə,Sil və Əməkdaşları axtar.";
$lang["module_expenses"] = "Xərclər";
@@ -35,7 +35,7 @@ $lang["module_reports"] = "Hesabatlar";
$lang["module_reports_desc"] = "Hesabatları Yarat və Göstər.";
$lang["module_sales"] = "Satışlar";
$lang["module_sales_desc"] = "Satış prosesləri və Qaytarılanlar.";
$lang["module_suppliers"] = "Təchizatcılar";
$lang["module_suppliers_desc"] = "Əlavə et,Yenilə,Sil və Təchizatçıları Axtar.";
$lang["module_suppliers"] = "Təchizatçılar";
$lang["module_suppliers_desc"] = "Əlavə et, Yenilə, Sil və Təchizatçıları Axtar.";
$lang["module_taxes"] = "Vergi";
$lang["module_taxes_desc"] = "Satış üçün Vergiləri Ayarla.";

View File

@@ -18,7 +18,7 @@ $lang["receivings_edit_sale"] = "malın redaktəsi səhvdir";
$lang["receivings_employee"] = "Əməkdaş";
$lang["receivings_error_editing_item"] = "Mal redaktə edilmədi.";
$lang["receivings_error_requisition"] = "İnventarın yerdəyişməsi və ya yerinə qoyulması mümkün olmadı.";
$lang["receivings_find_or_scan_item"] = "alış id";
$lang["receivings_find_or_scan_item"] = "Məhsulu tap və ya skan et";
$lang["receivings_find_or_scan_item_or_receipt"] = "malın adı";
$lang["receivings_id"] = "alınma rejimi";
$lang["receivings_item_name"] = "yeni tədarükçü";

View File

@@ -1,8 +1,9 @@
<?php
<?php
$lang["reports_all"] = "hamısı";
$lang["reports_authority"] = "Səlahiyyət";
$lang["reports_canceled"] = "Ləğv Edilmiş";
$lang["reports_categories"] = "kateqoriyalar";
$lang["reports_categories"] = "Kateqoriyalar";
$lang["reports_categories_summary_report"] = "komentariyalar";
$lang["reports_category"] = "Kategoriya";
$lang["reports_code_canceled"] = "CNL";
@@ -21,7 +22,7 @@ $lang["reports_cost"] = "hesab";
$lang["reports_cost_price"] = "müştəri";
$lang["reports_count"] = "müştərilər";
$lang["reports_customer"] = "müştərilərin hesabatı";
$lang["reports_customers"] = "gun";
$lang["reports_customers"] = "Müştərilər";
$lang["reports_customers_summary_report"] = "gün";
$lang["reports_date"] = "təsvir";
$lang["reports_date_range"] = "detallı göndərilən hesabatlar";
@@ -38,7 +39,7 @@ $lang["reports_discounts"] = "Endirimlər";
$lang["reports_discounts_summary_report"] = "əməkdaş";
$lang["reports_earned"] = "əməkdaş";
$lang["reports_employee"] = "əməkdaşın hesabatı";
$lang["reports_employees"] = "qrafik hesabatlar";
$lang["reports_employees"] = "İşçilər";
$lang["reports_employees_summary_report"] = "İşçilərin Xülasəsi Hesabatı";
$lang["reports_expenses"] = "Xərclər";
$lang["reports_expenses_amount"] = "Məbləğ";

View File

@@ -1,17 +1,19 @@
<?php
<?php
$lang["customers_available_points"] = "Mövcud ballar";
$lang["rewards_package"] = "Mükafatlar";
$lang["rewards_remaining_balance"] = "Mükafatın yerdə qalan bal dəyəri ";
$lang["sales_account_number"] = "Hesab #";
$lang["sales_add_payment"] = "Ödəniş Əlavə Etmək";
$lang["sales_amount_due"] = "Məbləğə Görə";
$lang["sales_amount_tendered"] = "Təklif olunan Məbləğ";
$lang["sales_amount_due"] = "Qalıq";
$lang["sales_amount_tendered"] = "Ödənilən məbləğ";
$lang["sales_authorized_signature"] = "Səlahiyyətli İmza";
$lang["sales_cancel_sale"] = "İmtina";
$lang["sales_cash"] = "Nəğd pullar";
$lang["sales_cash_deposit"] = "Nağd depozit";
$lang["sales_cash_filter"] = "Nəğd Pul";
$lang["sales_change_due"] = "Dəyişikliyə görə";
$lang["sales_change_due"] = "Qalıq";
$lang["sales_change_price"] = "Satış qiymətini dəyiş";
$lang["sales_check"] = "Çek";
$lang["sales_check_balance"] = "Çek Xatırladan";
$lang["sales_check_filter"] = "Çek";
@@ -23,13 +25,14 @@ $lang["sales_confirm_delete"] = "Siz əminsiniz ki seçilmiş satışı (lar) si
$lang["sales_confirm_restore"] = "Seçilmiş Satışları bərpa etmək istədiyinizə əminsinizmi?";
$lang["sales_credit"] = "Kredit kartı";
$lang["sales_credit_deposit"] = "Kredit Depoziti";
$lang["sales_credit_filter"] = "";
$lang["sales_customer"] = "Ad";
$lang["sales_customer_address"] = "Ünvan";
$lang["sales_customer_discount"] = "Endirim";
$lang["sales_customer_email"] = "E-poçt";
$lang["sales_customer_location"] = "Yer";
$lang["sales_customer_mailchimp_status"] = "Mailchimp Statusu";
$lang["sales_customer_optional"] = "(Ödənişlər üçün tələb olunur)";
$lang["sales_customer_optional"] = "(Ödənişlər tələb olunur)";
$lang["sales_customer_required"] = "(Vacib)";
$lang["sales_customer_total"] = "Cəmi";
$lang["sales_date"] = "Satış Tarixi";
@@ -87,7 +90,7 @@ $lang["sales_item_name"] = "Malın adı";
$lang["sales_item_number"] = "Mal #";
$lang["sales_item_out_of_stock"] = "Mal satılıb.";
$lang["sales_mode"] = "Qeydiyyat Rejimi";
$lang["sales_must_enter_numeric"] = "Təklif olunan məbləğ rəqəm ilə olmalıdır.";
$lang["sales_must_enter_numeric"] = "Ödəniş məbləği rəqəm ilə olmalıdır.";
$lang["sales_must_enter_numeric_giftcard"] = "Hədiyyə Kartın nömrəsi rəqəmlə olmalıdır.";
$lang["sales_new_customer"] = "Yeni Müştəri";
$lang["sales_new_item"] = "Yeni Mal";
@@ -96,6 +99,7 @@ $lang["sales_no_filter"] = "Hamısı";
$lang["sales_no_items_in_cart"] = "Səbətdə heç bir mal yoxdur.";
$lang["sales_no_sales_to_display"] = "Satış yoxdur.";
$lang["sales_none_selected"] = "Silmək üçün hər hansı bir Satış (lar) seçmədiniz.";
$lang["sales_nontaxed_ind"] = " . ";
$lang["sales_not_authorized"] = "Bu hərəkət səlahiyyətli deyil.";
$lang["sales_one_or_multiple"] = "Satış (lar)";
$lang["sales_payment"] = "Ödəniş Növü";
@@ -119,6 +123,7 @@ $lang["sales_receipt_no_email"] = "Bu müştərinin etibarlı bir e-poçt ünvan
$lang["sales_receipt_number"] = "Satış №";
$lang["sales_receipt_sent"] = "Çek Göndərildi";
$lang["sales_receipt_unsent"] = "Çek göndərilə Bilmədi";
$lang["sales_refund"] = "Qaytarılma növü";
$lang["sales_register"] = "jurnal satışı";
$lang["sales_remove_customer"] = "müştəriləri silmək";
$lang["sales_return"] = "qaytarmaq";
@@ -129,7 +134,7 @@ $lang["sales_sale_by_invoice"] = "Faktura ilə Satış";
$lang["sales_sale_for_customer"] = "Müştəri:";
$lang["sales_sale_time"] = "Vaxt";
$lang["sales_sales_tax"] = "Satış Vergisi";
$lang["sales_select_customer"] = "müştəri secmək";
$lang["sales_select_customer"] = "Müştəri seçmək";
$lang["sales_send_invoice"] = "Faktura Göndər";
$lang["sales_send_quote"] = "Sitat Göndər";
$lang["sales_send_receipt"] = "Çek Göndər";
@@ -156,6 +161,7 @@ $lang["sales_tax"] = "vergi";
$lang["sales_tax_id"] = "Vergi İD";
$lang["sales_tax_invoice"] = "Vergi Qaimə";
$lang["sales_tax_percent"] = "vergi %";
$lang["sales_taxed_ind"] = "T";
$lang["sales_total"] = "cəm";
$lang["sales_total_tax_exclusive"] = "Vergi Xaric";
$lang["sales_transaction_failed"] = "Satış əməliyyatı uğursuz oldu.";

View File

@@ -4,7 +4,7 @@ $lang["suppliers_account_number"] = "Hesab №";
$lang["suppliers_agency_name"] = "Agentliyin Adı";
$lang["suppliers_cannot_be_deleted"] = "Seçilmiş Təchizatçı (lar) silinə bilmədi. Bir və ya birdən çox satışlar var.";
$lang["suppliers_category"] = "Bölmə";
$lang["suppliers_company_name"] = "Kompaniyanın Adı";
$lang["suppliers_company_name"] = "Firma Adı";
$lang["suppliers_company_name_required"] = "Şirkətin Adı - yazılması vacib sahə.";
$lang["suppliers_confirm_delete"] = "Siz əminsiniz ki seçilmiş təchizatçı (lar) ı silmək istəyirsiniz?";
$lang["suppliers_confirm_restore"] = "Seçilmiş təchizatçı (lar) bərpa etmək istədiyinizə əminsinizmi?";
@@ -12,7 +12,7 @@ $lang["suppliers_cost"] = "Maliyə Təchizatçı";
$lang["suppliers_error_adding_updating"] = "Təchizatçı əlavə et / yenilə XƏTA.";
$lang["suppliers_goods"] = "Məhsullar Təchizatçı";
$lang["suppliers_new"] = "Yeni Təchizatçı";
$lang["suppliers_none_selected"] = "Siz silmək üçün heç bir təchizatçı (lar) seçmədiniz.";
$lang["suppliers_none_selected"] = "Siz silmək üçün heç bir təchizatçı seçmədiniz.";
$lang["suppliers_one_or_multiple"] = "Təchizatçı (lar)";
$lang["suppliers_successful_adding"] = "Siz Təchizatçını uğurla əlavə etdiniz";
$lang["suppliers_successful_deleted"] = "Siz uğurla sildiniz";

View File

@@ -54,6 +54,7 @@ $lang["taxes_tax_codes_saved_successfully"] = "Vergi kodu dəyişikliyi saxlanı
$lang["taxes_tax_codes_saved_unsuccessfully"] = "Vergi kodu dəyişikliyi saxlanılmadı";
$lang["taxes_tax_excluded"] = "Vergi istisna olunur";
$lang["taxes_tax_group"] = "Vergi qurupu";
$lang["taxes_tax_group_not_unique"] = "Vergi Qrupu %1 unikal deyil";
$lang["taxes_tax_group_sequence"] = "Vergi Qrupu Sırası";
$lang["taxes_tax_included"] = "Vergi daxildir";
$lang["taxes_tax_jurisdiction"] = "Vergi Yurisdiksiya";

View File

@@ -7,18 +7,19 @@ $lang["common_close"] = "Затвори";
$lang["common_comments"] = "Коментари";
$lang["common_common"] = "Често срещани";
$lang["common_confirm_search"] = "Избрали сте един или повече редове, след търсене няма да бъдат избрани. Наистина ли искате да подадете това търсене?";
$lang["common_copyrights"] = "© 2010 - %1";
$lang["common_correct_errors"] = "";
$lang["common_country"] = "Държава";
$lang["common_date"] = "Дата";
$lang["common_delete"] = "Изтриване";
$lang["common_det"] = "Детайли";
$lang["common_download_import_template"] = "Изтегляне на шаблон за импортиране на Excel (CSV)";
$lang["common_download_import_template"] = "Изтегляне на шаблон за импортиране на CSV (CSV)";
$lang["common_edit"] = "Редактиране";
$lang["common_email"] = "Електронна поща";
$lang["common_email_invalid_format"] = "Имейл адресът не е в правилния формат.";
$lang["common_export_excel"] = "Експорт на Excel";
$lang["common_export_excel_no"] = "Не";
$lang["common_export_excel_yes"] = "Да";
$lang["common_export_csv"] = "Експорт на CSV";
$lang["common_export_csv_no"] = "Не";
$lang["common_export_csv_yes"] = "Да";
$lang["common_fields_required_message"] = "Полетата в червено са задължителни";
$lang["common_first_name"] = "Име";
$lang["common_first_name_required"] = "Име е задължително поле.";
@@ -29,8 +30,8 @@ $lang["common_gender_male"] = "М";
$lang["common_id"] = "Номер";
$lang["common_import"] = "Внос";
$lang["common_import_change_file"] = "Промяна";
$lang["common_import_excel"] = "Внос на Excel";
$lang["common_import_full_path"] = "Необходим е пълен пътека към файл с Excel";
$lang["common_import_csv"] = "Внос на CSV";
$lang["common_import_full_path"] = "Необходим е пълен пътека към файл с CSV";
$lang["common_import_remove_file"] = "Премахване";
$lang["common_import_select_file"] = "Изберете файл";
$lang["common_inv"] = "Покана";

View File

@@ -2,6 +2,7 @@
$lang["config_address"] = "Адрес на компанията";
$lang["config_address_required"] = "Адресът на компанията е задължително поле.";
$lang["config_all_set"] = "All file permissions are set correctly!";
$lang["config_allow_duplicate_barcodes"] = "Разрешаване на дублирани баркодове";
$lang["config_apostrophe"] = "апостроф";
$lang["config_backup_button"] = "резервно копие";
@@ -33,6 +34,7 @@ $lang["config_bottom"] = "Bottom";
$lang["config_cash_decimals"] = "Cash Decimals";
$lang["config_cash_decimals_tooltip"] = "If Cash Decimals and Currency Decimals are the same then no cash rounding will take place.";
$lang["config_cash_rounding"] = "Cash Rounding";
$lang["config_category_dropdown"] = "";
$lang["config_center"] = "Center";
$lang["config_comma"] = "comma";
$lang["config_company"] = "Company Name";
@@ -111,6 +113,7 @@ $lang["config_email_smtp_user"] = "SMTP Username";
$lang["config_enforce_privacy"] = "";
$lang["config_enforce_privacy_tooltip"] = "";
$lang["config_fax"] = "Fax";
$lang["config_file_perm"] = "There are problems with file permissions please fix and reload this page.";
$lang["config_financial_year"] = "Fiscal Year Start";
$lang["config_financial_year_apr"] = "1st of April";
$lang["config_financial_year_aug"] = "1st of August";
@@ -135,6 +138,11 @@ $lang["config_general_configuration"] = "General Configuration";
$lang["config_giftcard_number"] = "Gift Card Number";
$lang["config_giftcard_random"] = "Generate Random";
$lang["config_giftcard_series"] = "Generate in Series";
$lang["config_image_allowed_file_types"] = "";
$lang["config_image_max_height_tooltip"] = "";
$lang["config_image_max_size_tooltip"] = "";
$lang["config_image_max_width_tooltip"] = "";
$lang["config_image_restrictions"] = "";
$lang["config_include_hsn"] = "";
$lang["config_info"] = "Information";
$lang["config_info_configuration"] = "Store Information";
@@ -147,6 +155,8 @@ $lang["config_invoice_email_message"] = "Invoice Email Template";
$lang["config_invoice_enable"] = "Enable Invoicing";
$lang["config_invoice_printer"] = "Invoice Printer";
$lang["config_invoice_type"] = "";
$lang["config_is_readable"] = "";
$lang["config_is_writable"] = "is writable, but the permissions are higher than 750.";
$lang["config_jsprintsetup_required"] = "Warning: This functionality will only work if you have the FireFox jsPrintSetup addon installed. Save anyway?";
$lang["config_language"] = "Language";
$lang["config_last_used_invoice_number"] = "Last used Invoice Number";
@@ -184,6 +194,7 @@ $lang["config_msg_src_required"] = "SMS-API Sender ID is a required field";
$lang["config_msg_uid"] = "SMS-API Username";
$lang["config_msg_uid_required"] = "SMS-API Username is a required field";
$lang["config_multi_pack_enabled"] = "";
$lang["config_no_risk"] = "No security/vulnerability risks.";
$lang["config_none"] = "none";
$lang["config_notify_alignment"] = "Notification Popup Position";
$lang["config_number_format"] = "Number Format";
@@ -191,8 +202,10 @@ $lang["config_number_locale"] = "Localization";
$lang["config_number_locale_invalid"] = "The entered locale is invalid. Check the link in the tooltip to find a valid locale.";
$lang["config_number_locale_required"] = "Number Locale is a required field.";
$lang["config_number_locale_tooltip"] = "Find a suitable locale through this link.";
$lang["config_os_timezone"] = "";
$lang["config_ospos_info"] = "";
$lang["config_payment_options_order"] = "Payment Options Order";
$lang["config_perm_risk"] = "Permissions higher than 750 leaves this software at risk.";
$lang["config_phone"] = "Company Phone";
$lang["config_phone_required"] = "Company Phone is a required field.";
$lang["config_print_bottom_margin"] = "Margin Bottom";
@@ -231,12 +244,14 @@ $lang["config_receipt_short"] = "Short";
$lang["config_receipt_show_company_name"] = "Show Company Name";
$lang["config_receipt_show_description"] = "Show Description";
$lang["config_receipt_show_serialnumber"] = "Show Serial Number";
$lang["config_receipt_show_tax_ind"] = "";
$lang["config_receipt_show_taxes"] = "Show Taxes";
$lang["config_receipt_show_total_discount"] = "Show Total Discount";
$lang["config_receipt_template"] = "Receipt Template";
$lang["config_receiving_calculate_average_price"] = "Calc avg. Price (Receiving)";
$lang["config_recv_invoice_format"] = "Receivings Invoice Format";
$lang["config_register_mode_default"] = "Default Register Mode";
$lang["config_report_an_issue"] = "";
$lang["config_return_policy_required"] = "Return policy is a required field.";
$lang["config_reward"] = "Reward";
$lang["config_reward_configuration"] = "Reward Configuration";
@@ -245,6 +260,7 @@ $lang["config_sales_invoice_format"] = "Sales Invoice Format";
$lang["config_sales_quote_format"] = "Sales Quote Format";
$lang["config_saved_successfully"] = "Configuration save successful.";
$lang["config_saved_unsuccessfully"] = "Configuration save failed.";
$lang["config_security_issue"] = "Security Vulnerability Warning";
$lang["config_server_notice"] = "Please use the below info for issue reporting.";
$lang["config_show_office_group"] = "Show office icon";
$lang["config_statistics"] = "Send Statistics";
@@ -257,6 +273,7 @@ $lang["config_suggestions_first_column"] = "Column 1";
$lang["config_suggestions_layout"] = "Search Suggestions Layout";
$lang["config_suggestions_second_column"] = "Column 2";
$lang["config_suggestions_third_column"] = "Column 3";
$lang["config_system_conf"] = "Setup & Conf";
$lang["config_system_info"] = "System Info";
$lang["config_table"] = "Table";
$lang["config_table_configuration"] = "Table Configuration";
@@ -274,8 +291,10 @@ $lang["config_tax_included"] = "Tax Included";
$lang["config_theme"] = "Theme";
$lang["config_thousands_separator"] = "Thousands Separator";
$lang["config_timezone"] = "Timezone";
$lang["config_timezone_error"] = "";
$lang["config_top"] = "Top";
$lang["config_use_destination_based_tax"] = "";
$lang["config_user_timezone"] = "";
$lang["config_website"] = "Website";
$lang["config_work_order_enable"] = "Work Order Support";
$lang["config_work_order_format"] = "Work Order Format";

View File

@@ -12,6 +12,10 @@ $lang["customers_confirm_delete"] = "Наистина ли искате да и
$lang["customers_confirm_restore"] = "Наистина ли искате да възстановите избраните клиенти?";
$lang["customers_consent"] = "Съгласие за регистрация";
$lang["customers_consent_required"] = "Регистрационното съгласие е задължително поле.";
$lang["customers_csv_import_failed"] = "Вносът от CSV не бе успешен";
$lang["customers_csv_import_nodata_wrongformat"] = "Каченият файл няма данни или е неправилно форматиран.";
$lang["customers_csv_import_partially_failed"] = "Вносът на клиента е успешен с няколко грешки:";
$lang["customers_csv_import_success"] = "Вносът на клиенти е успешен.";
$lang["customers_customer"] = "Клиент";
$lang["customers_date"] = "Дата";
$lang["customers_discount"] = "Отстъпка";
@@ -21,11 +25,7 @@ $lang["customers_discount_type"] = "";
$lang["customers_email_duplicate"] = "Имейл адресът вече е в базата данни.";
$lang["customers_employee"] = "Служител";
$lang["customers_error_adding_updating"] = "Добавянето или актуализирането на клиента е неуспешно.";
$lang["customers_excel_import_failed"] = "Вносът от Excel не бе успешен";
$lang["customers_excel_import_nodata_wrongformat"] = "Каченият файл няма данни или е неправилно форматиран.";
$lang["customers_excel_import_partially_failed"] = "Вносът на клиента е успешен с няколко грешки:";
$lang["customers_excel_import_success"] = "Вносът на клиенти е успешен.";
$lang["customers_import_items_excel"] = "Импортиране на клиент от Excel";
$lang["customers_import_items_csv"] = "Импортиране на клиент от CSV";
$lang["customers_mailchimp_activity_click"] = "Email click";
$lang["customers_mailchimp_activity_lastopen"] = "Последно отворен Имейл";
$lang["customers_mailchimp_activity_open"] = "Имейлът е отворен";

View File

@@ -17,6 +17,7 @@ $lang["giftcards_confirm_delete"] = "Are you sure you want to delete the selecte
$lang["giftcards_confirm_restore"] = "";
$lang["giftcards_cost_price"] = "Wholesale Price";
$lang["giftcards_count"] = "Update Inventory";
$lang["giftcards_csv_import_failed"] = "CSV import failed.";
$lang["giftcards_current_quantity"] = "Current Quantity";
$lang["giftcards_description"] = "Description";
$lang["giftcards_details_count"] = "Inventory Count Details";
@@ -25,7 +26,6 @@ $lang["giftcards_edit_fields_you_want_to_update"] = "Edit desired fields for sel
$lang["giftcards_edit_multiple_giftcards"] = "Edit Multiple Gift Cards.";
$lang["giftcards_error_adding_updating"] = "Gift Card add or update failed.";
$lang["giftcards_error_updating_multiple"] = "Gift Card(s) update failed.";
$lang["giftcards_excel_import_failed"] = "Excel import failed.";
$lang["giftcards_generate_barcodes"] = "Generate Barcodes";
$lang["giftcards_giftcard"] = "Gift Card";
$lang["giftcards_giftcard_number"] = "Gift Card Number";

View File

@@ -22,6 +22,10 @@ $lang["items_cost_price"] = "Wholesale Price";
$lang["items_cost_price_number"] = "Wholesale Price must be a number.";
$lang["items_cost_price_required"] = "Wholesale Price is a required field.";
$lang["items_count"] = "Update Inventory";
$lang["items_csv_import_failed"] = "CSV import failed";
$lang["items_csv_import_nodata_wrongformat"] = "The uploaded file has no data or is formatted incorrectly.";
$lang["items_csv_import_partially_failed"] = "Item import successful with some failures:";
$lang["items_csv_import_success"] = "Item import successful.";
$lang["items_current_quantity"] = "Current Quantity";
$lang["items_default_pack_name"] = "";
$lang["items_description"] = "Description";
@@ -32,16 +36,13 @@ $lang["items_edit_multiple_items"] = "Editing Multiple Items";
$lang["items_empty_upc_items"] = "Empty Barcode Items";
$lang["items_error_adding_updating"] = "Error adding/updating item";
$lang["items_error_updating_multiple"] = "Error updating items";
$lang["items_excel_import_failed"] = "Excel import failed";
$lang["items_excel_import_nodata_wrongformat"] = "The uploaded file has no data or is formatted incorrectly.";
$lang["items_excel_import_partially_failed"] = "Item import successful with some failures:";
$lang["items_excel_import_success"] = "Item import successful.";
$lang["items_generate_barcodes"] = "Generate Barcodes";
$lang["items_hsn_code"] = "";
$lang["items_image"] = "Avatar";
$lang["items_import_items_excel"] = "Item Import from Excel";
$lang["items_import_items_csv"] = "Item Import from CSV";
$lang["items_info_provided_by"] = "Information provided by";
$lang["items_inventory"] = "Inventory";
$lang["items_inventory_CSV_import_quantity"] = "";
$lang["items_inventory_comments"] = "Comments";
$lang["items_inventory_data_tracking"] = "Inventory Data Tracking";
$lang["items_inventory_date"] = "Date";

View File

@@ -3,16 +3,17 @@
$lang["customers_available_points"] = "Налични точки";
$lang["rewards_package"] = "Награди";
$lang["rewards_remaining_balance"] = "Оставащата стойност на точките за награда е ";
$lang["sales_account_number"] = "";
$lang["sales_account_number"] = "Номер на акаунт";
$lang["sales_add_payment"] = "Добавяне на плащане";
$lang["sales_amount_due"] = "Дължима сума";
$lang["sales_amount_tendered"] = "Предоставена сума";
$lang["sales_authorized_signature"] = "";
$lang["sales_authorized_signature"] = "Оторизиран подпис";
$lang["sales_cancel_sale"] = "Отказ";
$lang["sales_cash"] = "В брой";
$lang["sales_cash_deposit"] = "Депозит в брой";
$lang["sales_cash_filter"] = "В брой";
$lang["sales_change_due"] = "Промяна на дължимото";
$lang["sales_change_price"] = "";
$lang["sales_check"] = "Проверка";
$lang["sales_check_balance"] = "Проверете остатъка";
$lang["sales_check_filter"] = "Проверка";
@@ -24,6 +25,7 @@ $lang["sales_confirm_delete"] = "Наистина ли искате да изт
$lang["sales_confirm_restore"] = "Наистина ли искате да възстановите избраната Продажба (и)?";
$lang["sales_credit"] = "Кредитна карта";
$lang["sales_credit_deposit"] = "Кредитен депозит";
$lang["sales_credit_filter"] = "";
$lang["sales_customer"] = "Име";
$lang["sales_customer_address"] = "Адрес";
$lang["sales_customer_discount"] = "Намаление";
@@ -76,10 +78,10 @@ $lang["sales_invoice_no_email"] = "Този клиент няма валиден
$lang["sales_invoice_number"] = "Фактура #";
$lang["sales_invoice_number_duplicate"] = "Номерът на фактурите трябва да е уникален.";
$lang["sales_invoice_sent"] = "Фактура, изпратена до";
$lang["sales_invoice_total"] = "";
$lang["sales_invoice_type_custom_invoice"] = "";
$lang["sales_invoice_total"] = "Фактура общо";
$lang["sales_invoice_type_custom_invoice"] = "Ръчна фактура";
$lang["sales_invoice_type_custom_tax_invoice"] = "";
$lang["sales_invoice_type_invoice"] = "";
$lang["sales_invoice_type_invoice"] = "Фактура";
$lang["sales_invoice_type_tax_invoice"] = "";
$lang["sales_invoice_unsent"] = "Фактурата не можа да бъде изпратена до";
$lang["sales_invoice_update"] = "Преизчисляване";
@@ -97,6 +99,7 @@ $lang["sales_no_filter"] = "Всичко";
$lang["sales_no_items_in_cart"] = "В количката няма продукти.";
$lang["sales_no_sales_to_display"] = "Няма продажби за показване .";
$lang["sales_none_selected"] = "Не сте избрали каквито и да е Продажби за изтриване.";
$lang["sales_nontaxed_ind"] = "";
$lang["sales_not_authorized"] = "Това действие не е разрешено.";
$lang["sales_one_or_multiple"] = "Продажба (и)";
$lang["sales_payment"] = "Вид плащане";
@@ -120,6 +123,7 @@ $lang["sales_receipt_no_email"] = "Този клиент няма валиден
$lang["sales_receipt_number"] = "Продажба #";
$lang["sales_receipt_sent"] = "Разписката е изпратена до";
$lang["sales_receipt_unsent"] = "Разписката не бе изпратена до";
$lang["sales_refund"] = "";
$lang["sales_register"] = "Регистър на продажбите";
$lang["sales_remove_customer"] = "Премахване на клиент";
$lang["sales_return"] = "Връщане";
@@ -157,6 +161,7 @@ $lang["sales_tax"] = "Данък";
$lang["sales_tax_id"] = "";
$lang["sales_tax_invoice"] = "";
$lang["sales_tax_percent"] = "Данък %";
$lang["sales_taxed_ind"] = "";
$lang["sales_total"] = "Обща сума";
$lang["sales_total_tax_exclusive"] = "Без данък";
$lang["sales_transaction_failed"] = "Продажната транзакция е неуспешна.";

View File

@@ -54,6 +54,7 @@ $lang["taxes_tax_codes_saved_successfully"] = "";
$lang["taxes_tax_codes_saved_unsuccessfully"] = "";
$lang["taxes_tax_excluded"] = "";
$lang["taxes_tax_group"] = "";
$lang["taxes_tax_group_not_unique"] = "";
$lang["taxes_tax_group_sequence"] = "";
$lang["taxes_tax_included"] = "";
$lang["taxes_tax_jurisdiction"] = "";

View File

@@ -7,18 +7,19 @@ $lang["common_close"] = "Zavřít";
$lang["common_comments"] = "Podrobnosti";
$lang["common_common"] = "";
$lang["common_confirm_search"] = "Máte vybráno jeden nebo více řádků a tyto po po vyhledání nebudou vybrány. Chcete opravdu pokračovat s vyhledáváním?";
$lang["common_copyrights"] = "© 2010 - %1";
$lang["common_correct_errors"] = "";
$lang["common_country"] = "Země";
$lang["common_date"] = "Datum";
$lang["common_delete"] = "Smazat";
$lang["common_det"] = "podrobnosti";
$lang["common_download_import_template"] = "Stáhnout šablonu pro Excel (CSV)";
$lang["common_download_import_template"] = "Stáhnout šablonu pro CSV (CSV)";
$lang["common_edit"] = "upravit";
$lang["common_email"] = "Email";
$lang["common_email_invalid_format"] = "Emailová adresa má špatný formát.";
$lang["common_export_excel"] = "Export do Excelu";
$lang["common_export_excel_no"] = "Ne";
$lang["common_export_excel_yes"] = "Ano";
$lang["common_export_csv"] = "Export do CSVu";
$lang["common_export_csv_no"] = "Ne";
$lang["common_export_csv_yes"] = "Ano";
$lang["common_fields_required_message"] = "Červená pole jsou vyžadována";
$lang["common_first_name"] = "Jméno";
$lang["common_first_name_required"] = "Jméno je vyžadováno.";
@@ -29,8 +30,8 @@ $lang["common_gender_male"] = "M";
$lang["common_id"] = "Id";
$lang["common_import"] = "Import";
$lang["common_import_change_file"] = "Změnit";
$lang["common_import_excel"] = "Import z Excelu";
$lang["common_import_full_path"] = "Úplná cesta k souboru Excel je vyžadována";
$lang["common_import_csv"] = "Import z CSVu";
$lang["common_import_full_path"] = "Úplná cesta k souboru CSV je vyžadována";
$lang["common_import_remove_file"] = "Vyjmout";
$lang["common_import_select_file"] = "Vybrat soubor";
$lang["common_inv"] = "";

View File

@@ -2,6 +2,7 @@
$lang["config_address"] = "Adresa společnosti";
$lang["config_address_required"] = "";
$lang["config_all_set"] = "All file permissions are set correctly!";
$lang["config_allow_duplicate_barcodes"] = "";
$lang["config_apostrophe"] = "";
$lang["config_backup_button"] = "";
@@ -33,6 +34,7 @@ $lang["config_bottom"] = "";
$lang["config_cash_decimals"] = "";
$lang["config_cash_decimals_tooltip"] = "";
$lang["config_cash_rounding"] = "";
$lang["config_category_dropdown"] = "";
$lang["config_center"] = "";
$lang["config_comma"] = "";
$lang["config_company"] = "";
@@ -111,6 +113,7 @@ $lang["config_email_smtp_user"] = "";
$lang["config_enforce_privacy"] = "";
$lang["config_enforce_privacy_tooltip"] = "";
$lang["config_fax"] = "";
$lang["config_file_perm"] = "There are problems with file permissions please fix and reload this page.";
$lang["config_financial_year"] = "";
$lang["config_financial_year_apr"] = "";
$lang["config_financial_year_aug"] = "";
@@ -135,6 +138,11 @@ $lang["config_general_configuration"] = "";
$lang["config_giftcard_number"] = "";
$lang["config_giftcard_random"] = "";
$lang["config_giftcard_series"] = "";
$lang["config_image_allowed_file_types"] = "";
$lang["config_image_max_height_tooltip"] = "";
$lang["config_image_max_size_tooltip"] = "";
$lang["config_image_max_width_tooltip"] = "";
$lang["config_image_restrictions"] = "";
$lang["config_include_hsn"] = "";
$lang["config_info"] = "";
$lang["config_info_configuration"] = "";
@@ -147,6 +155,8 @@ $lang["config_invoice_email_message"] = "";
$lang["config_invoice_enable"] = "";
$lang["config_invoice_printer"] = "";
$lang["config_invoice_type"] = "";
$lang["config_is_readable"] = "";
$lang["config_is_writable"] = "is writable, but the permissions are higher than 750.";
$lang["config_jsprintsetup_required"] = "";
$lang["config_language"] = "";
$lang["config_last_used_invoice_number"] = "";
@@ -184,6 +194,7 @@ $lang["config_msg_src_required"] = "";
$lang["config_msg_uid"] = "";
$lang["config_msg_uid_required"] = "";
$lang["config_multi_pack_enabled"] = "";
$lang["config_no_risk"] = "No security/vulnerability risks.";
$lang["config_none"] = "";
$lang["config_notify_alignment"] = "";
$lang["config_number_format"] = "";
@@ -191,8 +202,10 @@ $lang["config_number_locale"] = "";
$lang["config_number_locale_invalid"] = "";
$lang["config_number_locale_required"] = "";
$lang["config_number_locale_tooltip"] = "";
$lang["config_os_timezone"] = "";
$lang["config_ospos_info"] = "";
$lang["config_payment_options_order"] = "";
$lang["config_perm_risk"] = "Permissions higher than 750 leaves this software at risk.";
$lang["config_phone"] = "";
$lang["config_phone_required"] = "";
$lang["config_print_bottom_margin"] = "";
@@ -231,12 +244,14 @@ $lang["config_receipt_short"] = "";
$lang["config_receipt_show_company_name"] = "";
$lang["config_receipt_show_description"] = "";
$lang["config_receipt_show_serialnumber"] = "";
$lang["config_receipt_show_tax_ind"] = "";
$lang["config_receipt_show_taxes"] = "";
$lang["config_receipt_show_total_discount"] = "";
$lang["config_receipt_template"] = "";
$lang["config_receiving_calculate_average_price"] = "";
$lang["config_recv_invoice_format"] = "";
$lang["config_register_mode_default"] = "";
$lang["config_report_an_issue"] = "";
$lang["config_return_policy_required"] = "";
$lang["config_reward"] = "";
$lang["config_reward_configuration"] = "";
@@ -245,6 +260,7 @@ $lang["config_sales_invoice_format"] = "";
$lang["config_sales_quote_format"] = "";
$lang["config_saved_successfully"] = "";
$lang["config_saved_unsuccessfully"] = "";
$lang["config_security_issue"] = "Security Vulnerability Warning";
$lang["config_server_notice"] = "Please use the below info for issue reporting.";
$lang["config_show_office_group"] = "";
$lang["config_statistics"] = "";
@@ -257,6 +273,7 @@ $lang["config_suggestions_first_column"] = "";
$lang["config_suggestions_layout"] = "";
$lang["config_suggestions_second_column"] = "";
$lang["config_suggestions_third_column"] = "";
$lang["config_system_conf"] = "Setup & Conf";
$lang["config_system_info"] = "System Info";
$lang["config_table"] = "";
$lang["config_table_configuration"] = "";
@@ -274,8 +291,10 @@ $lang["config_tax_included"] = "";
$lang["config_theme"] = "";
$lang["config_thousands_separator"] = "";
$lang["config_timezone"] = "";
$lang["config_timezone_error"] = "";
$lang["config_top"] = "";
$lang["config_use_destination_based_tax"] = "";
$lang["config_user_timezone"] = "";
$lang["config_website"] = "";
$lang["config_work_order_enable"] = "";
$lang["config_work_order_format"] = "";

View File

@@ -12,6 +12,10 @@ $lang["customers_confirm_delete"] = "";
$lang["customers_confirm_restore"] = "";
$lang["customers_consent"] = "";
$lang["customers_consent_required"] = "";
$lang["customers_csv_import_failed"] = "";
$lang["customers_csv_import_nodata_wrongformat"] = "";
$lang["customers_csv_import_partially_failed"] = "";
$lang["customers_csv_import_success"] = "";
$lang["customers_customer"] = "";
$lang["customers_date"] = "";
$lang["customers_discount"] = "";
@@ -21,11 +25,7 @@ $lang["customers_discount_type"] = "";
$lang["customers_email_duplicate"] = "";
$lang["customers_employee"] = "";
$lang["customers_error_adding_updating"] = "";
$lang["customers_excel_import_failed"] = "";
$lang["customers_excel_import_nodata_wrongformat"] = "";
$lang["customers_excel_import_partially_failed"] = "";
$lang["customers_excel_import_success"] = "";
$lang["customers_import_items_excel"] = "";
$lang["customers_import_items_csv"] = "";
$lang["customers_mailchimp_activity_click"] = "";
$lang["customers_mailchimp_activity_lastopen"] = "";
$lang["customers_mailchimp_activity_open"] = "";

View File

@@ -17,6 +17,7 @@ $lang["giftcards_confirm_delete"] = "";
$lang["giftcards_confirm_restore"] = "";
$lang["giftcards_cost_price"] = "";
$lang["giftcards_count"] = "";
$lang["giftcards_csv_import_failed"] = "";
$lang["giftcards_current_quantity"] = "";
$lang["giftcards_description"] = "";
$lang["giftcards_details_count"] = "";
@@ -25,7 +26,6 @@ $lang["giftcards_edit_fields_you_want_to_update"] = "";
$lang["giftcards_edit_multiple_giftcards"] = "";
$lang["giftcards_error_adding_updating"] = "";
$lang["giftcards_error_updating_multiple"] = "";
$lang["giftcards_excel_import_failed"] = "";
$lang["giftcards_generate_barcodes"] = "";
$lang["giftcards_giftcard"] = "";
$lang["giftcards_giftcard_number"] = "";

View File

@@ -22,6 +22,10 @@ $lang["items_cost_price"] = "Nákupní cena";
$lang["items_cost_price_number"] = "Nákupní cena musí být číslo.";
$lang["items_cost_price_required"] = "Musíte zadat nákupní cenu.";
$lang["items_count"] = "Upravit množství";
$lang["items_csv_import_failed"] = "Import z CSVu se nepovedl";
$lang["items_csv_import_nodata_wrongformat"] = "Nahraný soubor neobsahuje žádná data nebo má špatný formát.";
$lang["items_csv_import_partially_failed"] = "Při importu položek došlo k několika chybám:";
$lang["items_csv_import_success"] = "Import položek proběhl bez chyby.";
$lang["items_current_quantity"] = "Množství skladem";
$lang["items_default_pack_name"] = "";
$lang["items_description"] = "Popis";
@@ -32,16 +36,13 @@ $lang["items_edit_multiple_items"] = "Úpravy více položek";
$lang["items_empty_upc_items"] = "Položky bez čárového kódu";
$lang["items_error_adding_updating"] = "Chyba při přidávání či úpravě položek";
$lang["items_error_updating_multiple"] = "Chyba při úpravě položek";
$lang["items_excel_import_failed"] = "Import z Excelu se nepovedl";
$lang["items_excel_import_nodata_wrongformat"] = "Nahraný soubor neobsahuje žádná data nebo má špatný formát.";
$lang["items_excel_import_partially_failed"] = "Při importu položek došlo k několika chybám:";
$lang["items_excel_import_success"] = "Import položek proběhl bez chyby.";
$lang["items_generate_barcodes"] = "Vytvořit čárový kód";
$lang["items_hsn_code"] = "";
$lang["items_image"] = "Avatar";
$lang["items_import_items_excel"] = "Import položek z Excelu";
$lang["items_import_items_csv"] = "Import položek z CSVu";
$lang["items_info_provided_by"] = "";
$lang["items_inventory"] = "";
$lang["items_inventory_CSV_import_quantity"] = "";
$lang["items_inventory_comments"] = "Komentář";
$lang["items_inventory_data_tracking"] = "Pohyby na skladu";
$lang["items_inventory_date"] = "Datum";

View File

@@ -13,6 +13,7 @@ $lang["sales_cash"] = "Hotovost";
$lang["sales_cash_deposit"] = "";
$lang["sales_cash_filter"] = "Hotově";
$lang["sales_change_due"] = "Zbývá";
$lang["sales_change_price"] = "";
$lang["sales_check"] = "Bankovním převodem";
$lang["sales_check_balance"] = "";
$lang["sales_check_filter"] = "";
@@ -24,6 +25,7 @@ $lang["sales_confirm_delete"] = "Opravdu chcete smazat vybranou účtenku?";
$lang["sales_confirm_restore"] = "Opravdu chcete obnovit vybranou účtenku?";
$lang["sales_credit"] = "Kreditní karta";
$lang["sales_credit_deposit"] = "";
$lang["sales_credit_filter"] = "";
$lang["sales_customer"] = "Jméno";
$lang["sales_customer_address"] = "Adresa";
$lang["sales_customer_discount"] = "Sleva";
@@ -97,6 +99,7 @@ $lang["sales_no_filter"] = "Vše";
$lang["sales_no_items_in_cart"] = "Nejsou zde žádné položky.";
$lang["sales_no_sales_to_display"] = "Žádné účtenky k zobrazení.";
$lang["sales_none_selected"] = "Nebylo nic vybráno ke smazání.";
$lang["sales_nontaxed_ind"] = "";
$lang["sales_not_authorized"] = "Tato akce nebyla povolena.";
$lang["sales_one_or_multiple"] = "";
$lang["sales_payment"] = "Způsob platby";
@@ -120,6 +123,7 @@ $lang["sales_receipt_no_email"] = "Zákazníl nemá platný e-mail.";
$lang["sales_receipt_number"] = "Číslo dokladu";
$lang["sales_receipt_sent"] = "Účtenku odeslat";
$lang["sales_receipt_unsent"] = "Účtenku nelze odeslat";
$lang["sales_refund"] = "";
$lang["sales_register"] = "Pokladna";
$lang["sales_remove_customer"] = "Odebrat zákazníka";
$lang["sales_return"] = "Vratka";
@@ -157,6 +161,7 @@ $lang["sales_tax"] = "DPH";
$lang["sales_tax_id"] = "";
$lang["sales_tax_invoice"] = "";
$lang["sales_tax_percent"] = "DPH %";
$lang["sales_taxed_ind"] = "";
$lang["sales_total"] = "Celkem";
$lang["sales_total_tax_exclusive"] = "Bez DPH";
$lang["sales_transaction_failed"] = "";

View File

@@ -54,6 +54,7 @@ $lang["taxes_tax_codes_saved_successfully"] = "";
$lang["taxes_tax_codes_saved_unsuccessfully"] = "";
$lang["taxes_tax_excluded"] = "";
$lang["taxes_tax_group"] = "";
$lang["taxes_tax_group_not_unique"] = "";
$lang["taxes_tax_group_sequence"] = "";
$lang["taxes_tax_included"] = "";
$lang["taxes_tax_jurisdiction"] = "";

View File

@@ -0,0 +1,31 @@
<?php
$lang["attributes_attribute_value_invalid_chars"] = "Egenskabens værdi kan ikke indeholde ':' or '|'";
$lang["attributes_confirm_delete"] = "Er du sikker på, at du vil slette de valgte egenskaber?";
$lang["attributes_confirm_restore"] = "Er du sikker på, at du vil gendanne de valgte egenskaber?";
$lang["attributes_definition_cannot_be_deleted"] = "De valgte egenskaber kunne ikke slettes";
$lang["attributes_definition_error_adding_updating"] = "Egenskab %1 Kunne ikke tilføjes eller opdateres. Tjek venligst fejlprotokollen.";
$lang["attributes_definition_flags"] = "Egenskabens Synlighed";
$lang["attributes_definition_group"] = "Gruppe";
$lang["attributes_definition_id"] = "Id";
$lang["attributes_definition_name"] = "Tilføj egenskab";
$lang["attributes_definition_name_required"] = "Egenskabens navn er et obligatorisk felt";
$lang["attributes_definition_one_or_multiple"] = "Egenskab(er)";
$lang["attributes_definition_successful_adding"] = "Du har tilføjet en genstand";
$lang["attributes_definition_successful_deleted"] = "Du har slettet en genstand";
$lang["attributes_definition_successful_updating"] = "Du har opdateret en egenskab";
$lang["attributes_definition_type"] = "Egenskabs-type";
$lang["attributes_definition_type_required"] = "Egenskabs-type er et obligatorisk felt";
$lang["attributes_definition_unit"] = "Måleenhed";
$lang["attributes_definition_values"] = "Egenskabens værdier";
$lang["attributes_new"] = "Ny egenskab";
$lang["attributes_no_attributes_to_display"] = "Ingen genstande at vise";
$lang["attributes_receipt_visibility"] = "Kvittering";
$lang["attributes_show_in_items"] = "Vis i genstande";
$lang["attributes_show_in_items_visibility"] = "Genstande";
$lang["attributes_show_in_receipt"] = "Vis i kvittering";
$lang["attributes_show_in_receivings"] = "Vis i modtagelser";
$lang["attributes_show_in_receivings_visibility"] = "Modtagelser";
$lang["attributes_show_in_sales"] = "Vis i salg";
$lang["attributes_show_in_sales_visibility"] = "Salg";
$lang["attributes_update"] = "Opdater egenskab";

View File

@@ -0,0 +1,10 @@
<?php
$lang["tables_all"] = "Alle";
$lang["tables_columns"] = "Kolonner";
$lang["tables_hide_show_pagination"] = "Gem/Vis sideinddeling";
$lang["tables_loading"] = "Indlæser, vent venligst...";
$lang["tables_page_from_to"] = "Viser {0} to {1} af {2} rækker";
$lang["tables_refresh"] = "Opdater";
$lang["tables_rows_per_page"] = "{0} rækker per side";
$lang["tables_toggle"] = "Skift";

View File

@@ -0,0 +1,38 @@
<?php
$lang["cashups_amount"] = "Beløb";
$lang["cashups_amount_number"] = "Beløbet skal være et tal";
$lang["cashups_amount_required"] = "Beløb er et obligatorisk felt.";
$lang["cashups_cannot_be_deleted"] = "Kasseopgørelse kan ikke slettes";
$lang["cashups_close_date"] = "Luk dato";
$lang["cashups_close_employee"] = "Lukket af";
$lang["cashups_closed_amount_card"] = "Kort";
$lang["cashups_closed_amount_cash"] = "Lukkede kasse";
$lang["cashups_closed_amount_check"] = "Regninger";
$lang["cashups_closed_amount_due"] = "Afgifter";
$lang["cashups_closed_amount_total"] = "Total";
$lang["cashups_closed_date"] = "Lukket dato";
$lang["cashups_confirm_delete"] = "Er du sikker på, at du vil slette den valgte kasseopgørelse?";
$lang["cashups_confirm_restore"] = "Er du sikker på, at du vil gendanne de valgte kasseopgørelser?";
$lang["cashups_date_number"] = "Datoen skal være et tal";
$lang["cashups_date_required"] = "Dato er et obligatorisk felt";
$lang["cashups_description"] = "Beskrivelse";
$lang["cashups_error_adding_updating"] = "Fejl ved at tilføje/opdatere kasseopgørelsen";
$lang["cashups_id"] = "Id";
$lang["cashups_info"] = "Kasseopgørelsers information";
$lang["cashups_is_deleted"] = "Slettet";
$lang["cashups_new"] = "Ny kasseopgørelse";
$lang["cashups_no_cashups_to_display"] = "Der er ingen kasseopgørelser at vise";
$lang["cashups_none_selected"] = "Du har ikke valgt nogle kasseopgørelser";
$lang["cashups_note"] = "Noter";
$lang["cashups_one_or_multiple"] = "Kasseopgørelse(r)";
$lang["cashups_open_amount_cash"] = "Åben kasse";
$lang["cashups_open_date"] = "Åben dato";
$lang["cashups_open_employee"] = "Åbnet af";
$lang["cashups_opened_date"] = "Åbnet dato";
$lang["cashups_successful_adding"] = "Kasseopgørelse tilføjet";
$lang["cashups_successful_deleted"] = "Kasseopgørelse er slettet";
$lang["cashups_successful_updating"] = "Kasseopgørelse er opdateret";
$lang["cashups_total"] = "Total";
$lang["cashups_transfer_amount_cash"] = "";
$lang["cashups_update"] = "Opdater kasseopgørelse";

View File

@@ -0,0 +1,71 @@
<?php
$lang["common_address_1"] = "Adresse 1";
$lang["common_address_2"] = "Adresse 2";
$lang["common_city"] = "By";
$lang["common_close"] = "Luk";
$lang["common_comments"] = "Kommentarer";
$lang["common_common"] = "Almindelig(e)";
$lang["common_confirm_search"] = "Du har valgt en eller flere rækker. Disse vil ikke længere være valgt efter din søgning. Er du sikker på, at du vil foretage søgningen?";
$lang["common_copyrights"] = "© 2010 - %1";
$lang["common_correct_errors"] = "Ret venligst identificeret fejl før du gemmer";
$lang["common_country"] = "Land";
$lang["common_date"] = "Dato";
$lang["common_delete"] = "Slet";
$lang["common_det"] = "Detaljer";
$lang["common_download_import_template"] = "Download Import CSV Template (CSV)";
$lang["common_edit"] = "Rediger";
$lang["common_email"] = "Email";
$lang["common_email_invalid_format"] = "Email adressen er ikke i det korrekte format.";
$lang["common_export_csv"] = "CSV Eksport";
$lang["common_export_csv_no"] = "Nej";
$lang["common_export_csv_yes"] = "Ja";
$lang["common_fields_required_message"] = "Røde felter er obligatoriske";
$lang["common_first_name"] = "Fornavn";
$lang["common_first_name_required"] = "Fornavn er et obligatorisk felt.";
$lang["common_first_page"] = "Første";
$lang["common_gender"] = "Køn";
$lang["common_gender_female"] = "Kvinde";
$lang["common_gender_male"] = "Mand";
$lang["common_id"] = "Id";
$lang["common_import"] = "Import";
$lang["common_import_change_file"] = "Skift";
$lang["common_import_csv"] = "CSV Import";
$lang["common_import_full_path"] = "Fulde stig til csv fil behøves";
$lang["common_import_remove_file"] = "Fjern";
$lang["common_import_select_file"] = "Vælg fil";
$lang["common_inv"] = "inv";
$lang["common_last_name"] = "Efternavn";
$lang["common_last_name_required"] = "Efternavn er et obligatorisk felt.";
$lang["common_last_page"] = "Sidste";
$lang["common_learn_about_project"] = "for at lære det seneste information om projektet.";
$lang["common_list_of"] = "Liste af";
$lang["common_logout"] = "Log ud";
$lang["common_migration_needed"] = "En database migration til %1 vil starte efter du er logget ind.";
$lang["common_new"] = "Ny";
$lang["common_no_persons_to_display"] = "Der er ingen folk at vise.";
$lang["common_none_selected_text"] = "[Vælg]";
$lang["common_or"] = "ELLER";
$lang["common_phone_number"] = "Telefonnummer";
$lang["common_phone_number_required"] = "";
$lang["common_please_visit_my"] = "Besøg venligst";
$lang["common_powered_by"] = "Drevet af";
$lang["common_price"] = "Pris";
$lang["common_print"] = "Print ud";
$lang["common_remove"] = "Fjern";
$lang["common_required"] = "Obligatorisk";
$lang["common_restore"] = "Gendan";
$lang["common_return_policy"] = "Returpolitik";
$lang["common_search"] = "Søg";
$lang["common_search_options"] = "Søgeindstillinger";
$lang["common_searched_for"] = "Søgt efter";
$lang["common_state"] = "Stat";
$lang["common_submit"] = "Indsend";
$lang["common_total_spent"] = "Samlet brugt";
$lang["common_unknown"] = "Ukendt";
$lang["common_view_recent_sales"] = "Se seneste salg";
$lang["common_website"] = "Hjemmeside";
$lang["common_welcome"] = "Velkommen";
$lang["common_welcome_message"] = "Velkommen til OSPOS. Klik på et modul forneden for at komme i gang.";
$lang["common_you_are_using_ospos"] = "You are using Open Source Point Of Sale version";
$lang["common_zip"] = "Postnummer";

View File

@@ -0,0 +1,300 @@
<?php
$lang["config_address"] = "Firma adresse";
$lang["config_address_required"] = "Firma adresse er et obligatorisk felt.";
$lang["config_all_set"] = "All file permissions are set correctly!";
$lang["config_allow_duplicate_barcodes"] = "Tillad duplikatstregkoder";
$lang["config_apostrophe"] = "apostrof";
$lang["config_backup_button"] = "Backup";
$lang["config_backup_database"] = "Backup Database";
$lang["config_barcode"] = "Stregkode";
$lang["config_barcode_company"] = "Firmanavn";
$lang["config_barcode_configuration"] = "Stregkode konfiguration";
$lang["config_barcode_content"] = "Stregkode indhold";
$lang["config_barcode_first_row"] = "Række 1";
$lang["config_barcode_font"] = "Skrifttype";
$lang["config_barcode_formats"] = "Inputformater";
$lang["config_barcode_generate_if_empty"] = "Generer hvis tom.";
$lang["config_barcode_height"] = "Højde (px)";
$lang["config_barcode_id"] = "Genstands Id/navn";
$lang["config_barcode_info"] = "Information om stregkode konfiguration";
$lang["config_barcode_layout"] = "Stregkode layout";
$lang["config_barcode_name"] = "Navn";
$lang["config_barcode_number"] = "Stregkode";
$lang["config_barcode_number_in_row"] = "Nummer i rækken";
$lang["config_barcode_page_cellspacing"] = "Vis sidens celleafstand.";
$lang["config_barcode_page_width"] = "Vis sidens bredde";
$lang["config_barcode_price"] = "Pris";
$lang["config_barcode_second_row"] = "Række 2";
$lang["config_barcode_third_row"] = "Række 3";
$lang["config_barcode_tooltip"] = "Advarsel: Denne funktion kan forårsage, at duplikerede genstande vil blive importeret eller oprettet. Anvend ikke hvis du ikke vil have duplikerede stregkoder.";
$lang["config_barcode_type"] = "Stregkode type";
$lang["config_barcode_width"] = "Bredde (px)";
$lang["config_bottom"] = "Bund";
$lang["config_cash_decimals"] = "Kontante decimaler";
$lang["config_cash_decimals_tooltip"] = "Hvis kontante decimaler og valuta decimaler er de samme, kan kontanterne ikke rundes op.";
$lang["config_cash_rounding"] = "Kontant afrunding";
$lang["config_category_dropdown"] = "";
$lang["config_center"] = "Centrum";
$lang["config_comma"] = "Komma";
$lang["config_company"] = "Firma navn";
$lang["config_company_change_image"] = "Skift billede";
$lang["config_company_logo"] = "Firma logo";
$lang["config_company_remove_image"] = "Fjern billede";
$lang["config_company_required"] = "Firma navn er et obligatorisk";
$lang["config_company_select_image"] = "Vælg billede";
$lang["config_company_website_url"] = "Firma hjemmeside er ikke en gyldig URL (http://...).";
$lang["config_country_codes"] = "Landekoder";
$lang["config_country_codes_tooltip"] = "Kommasepareret liste af landekoder til nominatim adresse søgning.";
$lang["config_currency_code"] = "Valuta kode";
$lang["config_currency_decimals"] = "Valuta decimaler";
$lang["config_currency_symbol"] = "Valuta symbol";
$lang["config_customer_reward"] = "Belønning";
$lang["config_customer_reward_duplicate"] = "Belønning skal være unik.";
$lang["config_customer_reward_enable"] = "Aktiver kunde belønninger";
$lang["config_customer_reward_invalid_chars"] = "Belønning må ikke indholde '_'";
$lang["config_customer_reward_required"] = "Belønning er et obligatorisk felt";
$lang["config_customer_sales_tax_support"] = "";
$lang["config_date_or_time_format"] = "Dato- og tidfilter";
$lang["config_datetimeformat"] = "Dato og tid format";
$lang["config_decimal_point"] = "Decimaltegn";
$lang["config_default_barcode_font_size_number"] = "Standard stregkode skriftstørrelse skal være et tal";
$lang["config_default_barcode_font_size_required"] = "Standard stregkode skriftstørrelse er et obligatorisk felt";
$lang["config_default_barcode_height_number"] = "Standard stregkode højde skal være et tal";
$lang["config_default_barcode_height_required"] = "Standard stegkode højde er et obligatorisk felt";
$lang["config_default_barcode_num_in_row_number"] = "Standard stregkode tal i en række skal være et tal";
$lang["config_default_barcode_num_in_row_required"] = "Standard stregkode tal i en række er et obligatorisk felt";
$lang["config_default_barcode_page_cellspacing_number"] = "Standard stregkodeside-celleafstand skal være et tal";
$lang["config_default_barcode_page_cellspacing_required"] = "Standard stegkodeside-celleafstand er et obligatorisk felt";
$lang["config_default_barcode_page_width_number"] = "Standard stregkode side bredde skal være et tal";
$lang["config_default_barcode_page_width_required"] = "Standard stregkode side bredde er et obligatorisk felt";
$lang["config_default_barcode_width_number"] = "Standard stregkode bredde skal være et tal";
$lang["config_default_barcode_width_required"] = "Standard stregkode bredde er et obligatorisk felt";
$lang["config_default_item_columns"] = "Standard synlige genstands-kolonner";
$lang["config_default_origin_tax_code"] = "Standard oprindelse af afgiftskode";
$lang["config_default_receivings_discount"] = "Standard modtagelsesrabat";
$lang["config_default_receivings_discount_number"] = "Standard modtagelsesrabat skal være et tal";
$lang["config_default_receivings_discount_required"] = "Standard modtagelsesrabat er et obligatorisk felt";
$lang["config_default_sales_discount"] = "Standard salgsrabat";
$lang["config_default_sales_discount_number"] = "Standard salgsrabat skal være et tal";
$lang["config_default_sales_discount_required"] = "Standard salgsrabat er et obligatorisk felt";
$lang["config_default_tax_category"] = "Standard afgiftskategori";
$lang["config_default_tax_code"] = "Standard afgiftskode";
$lang["config_default_tax_jurisdiction"] = "Standard afgift jurisdiktion";
$lang["config_default_tax_name_number"] = "Standard afgiftsnavn skal være en streng";
$lang["config_default_tax_name_required"] = "Standard afgiftsnavn er et obligatorisk felt";
$lang["config_default_tax_rate"] = "Standard afgiftsrate %";
$lang["config_default_tax_rate_1"] = "Afgift 1 procent";
$lang["config_default_tax_rate_2"] = "Afgift 2 procent";
$lang["config_default_tax_rate_number"] = "Standard afgiftsrate skal være et tal";
$lang["config_default_tax_rate_required"] = "Standard afgiftsrate er et obligatorisk felt";
$lang["config_derive_sale_quantity"] = "Tillad afledt salgsmængde";
$lang["config_derive_sale_quantity_tooltip"] = "Hvis markeret, vil en ny varetype blive stillet til rådighed for varer bestilt med et udvidet beløb";
$lang["config_dinner_table"] = "Tabel";
$lang["config_dinner_table_duplicate"] = "Tabel skal være unik";
$lang["config_dinner_table_enable"] = "Enable Dinner Tables";
$lang["config_dinner_table_invalid_chars"] = "Table Name can not contain '_'.";
$lang["config_dinner_table_required"] = "Table is a required field.";
$lang["config_dot"] = "punktum";
$lang["config_email"] = "Email";
$lang["config_email_configuration"] = "Email konfiguration";
$lang["config_email_mailpath"] = "Stig til Sendmail";
$lang["config_email_protocol"] = "Protokol";
$lang["config_email_receipt_check_behaviour"] = "Email kvitteringsfelt";
$lang["config_email_receipt_check_behaviour_always"] = "Altid markeret";
$lang["config_email_receipt_check_behaviour_last"] = "Husk sidste valg";
$lang["config_email_receipt_check_behaviour_never"] = "Aldrig markeret";
$lang["config_email_smtp_crypto"] = "SMTP Kryptering";
$lang["config_email_smtp_host"] = "SMTP Server";
$lang["config_email_smtp_pass"] = "SMTP Kodeord";
$lang["config_email_smtp_port"] = "SMTP Port";
$lang["config_email_smtp_timeout"] = "SMTP Timeout (sekunder)";
$lang["config_email_smtp_user"] = "SMTP Brugernavn";
$lang["config_enforce_privacy"] = "Håndhæv privathed";
$lang["config_enforce_privacy_tooltip"] = "Beskyt kunders privatliv, der håndhæver datascrambling i tilfælde af, at deres data bliver slettet";
$lang["config_fax"] = "Fax";
$lang["config_file_perm"] = "There are problems with file permissions please fix and reload this page.";
$lang["config_financial_year"] = "Fiscal Year Start";
$lang["config_financial_year_apr"] = "1st of April";
$lang["config_financial_year_aug"] = "1st of August";
$lang["config_financial_year_dec"] = "1st of December";
$lang["config_financial_year_feb"] = "1st of February";
$lang["config_financial_year_jan"] = "1st of January";
$lang["config_financial_year_jul"] = "1st of July";
$lang["config_financial_year_jun"] = "1st of June";
$lang["config_financial_year_mar"] = "1st of March";
$lang["config_financial_year_may"] = "1st of May";
$lang["config_financial_year_nov"] = "1st of November";
$lang["config_financial_year_oct"] = "1st of October";
$lang["config_financial_year_sep"] = "1st of September";
$lang["config_gcaptcha_enable"] = "Login Page reCAPTCHA";
$lang["config_gcaptcha_secret_key"] = "reCAPTCHA Secret Key";
$lang["config_gcaptcha_secret_key_required"] = "reCAPTCHA Secret Key is a required field";
$lang["config_gcaptcha_site_key"] = "reCAPTCHA Site Key";
$lang["config_gcaptcha_site_key_required"] = "reCAPTCHA Site Key is a required field";
$lang["config_gcaptcha_tooltip"] = "Protect the Login page with Google reCAPTCHA, click the icon for an API key pair.";
$lang["config_general"] = "General";
$lang["config_general_configuration"] = "General Configuration";
$lang["config_giftcard_number"] = "Gift Card Number";
$lang["config_giftcard_random"] = "Generate Random";
$lang["config_giftcard_series"] = "Generate in Series";
$lang["config_image_allowed_file_types"] = "";
$lang["config_image_max_height_tooltip"] = "";
$lang["config_image_max_size_tooltip"] = "";
$lang["config_image_max_width_tooltip"] = "";
$lang["config_image_restrictions"] = "";
$lang["config_include_hsn"] = "Include Support for HSN Codes";
$lang["config_info"] = "Information";
$lang["config_info_configuration"] = "Store Information";
$lang["config_integrations"] = "Integrations";
$lang["config_integrations_configuration"] = "Third Party Integrations";
$lang["config_invoice"] = "Invoice";
$lang["config_invoice_configuration"] = "Invoice Print Settings";
$lang["config_invoice_default_comments"] = "Default Invoice Comments";
$lang["config_invoice_email_message"] = "Invoice Email Template";
$lang["config_invoice_enable"] = "Enable Invoicing";
$lang["config_invoice_printer"] = "Invoice Printer";
$lang["config_invoice_type"] = "Invoice Type";
$lang["config_is_readable"] = "";
$lang["config_is_writable"] = "is writable, but the permissions are higher than 750.";
$lang["config_jsprintsetup_required"] = "Warning: This functionality will only work if you have the FireFox jsPrintSetup addon installed. Save anyway?";
$lang["config_language"] = "Language";
$lang["config_last_used_invoice_number"] = "Last used Invoice Number";
$lang["config_last_used_quote_number"] = "Last used Quote Number";
$lang["config_last_used_work_order_number"] = "Last used W/O Number";
$lang["config_left"] = "Left";
$lang["config_license"] = "License";
$lang["config_license_configuration"] = "License Statement";
$lang["config_line_sequence"] = "Line Sequence";
$lang["config_lines_per_page"] = "Lines per Page";
$lang["config_lines_per_page_number"] = "Lines per Page must be a number.";
$lang["config_lines_per_page_required"] = "Lines per Page is a required field.";
$lang["config_locale"] = "Localization";
$lang["config_locale_configuration"] = "Localization Configuration";
$lang["config_locale_info"] = "Localization Configuration Information";
$lang["config_location"] = "Stock";
$lang["config_location_configuration"] = "Stock Locations";
$lang["config_location_info"] = "Location Configuration Information";
$lang["config_logout"] = "Do you want to make a backup before logging out? Click [OK] to backup or [Cancel] to logout.";
$lang["config_mailchimp"] = "Mailchimp";
$lang["config_mailchimp_api_key"] = "Mailchimp API Key";
$lang["config_mailchimp_configuration"] = "Mailchimp Configuration";
$lang["config_mailchimp_key_successfully"] = "API Key is valid.";
$lang["config_mailchimp_key_unsuccessfully"] = "API Key is invalid.";
$lang["config_mailchimp_lists"] = "Mailchimp List(s)";
$lang["config_mailchimp_tooltip"] = "Click the icon for an API Key.";
$lang["config_message"] = "Message";
$lang["config_message_configuration"] = "Message Configuration";
$lang["config_msg_msg"] = "Saved Text Message";
$lang["config_msg_msg_placeholder"] = "If you wish to use a SMS template save your message here, otherwise leave the box blank.";
$lang["config_msg_pwd"] = "SMS-API Password";
$lang["config_msg_pwd_required"] = "SMS-API Password is a required field";
$lang["config_msg_src"] = "SMS-API Sender ID";
$lang["config_msg_src_required"] = "SMS-API Sender ID is a required field";
$lang["config_msg_uid"] = "SMS-API Username";
$lang["config_msg_uid_required"] = "SMS-API Username is a required field";
$lang["config_multi_pack_enabled"] = "Multiple Packages per Item";
$lang["config_no_risk"] = "No security/vulnerability risks.";
$lang["config_none"] = "none";
$lang["config_notify_alignment"] = "Notification Popup Position";
$lang["config_number_format"] = "Number Format";
$lang["config_number_locale"] = "Localization";
$lang["config_number_locale_invalid"] = "The entered locale is invalid. Check the link in the tooltip to find a valid locale.";
$lang["config_number_locale_required"] = "Number Locale is a required field.";
$lang["config_number_locale_tooltip"] = "Find a suitable locale through this link.";
$lang["config_os_timezone"] = "";
$lang["config_ospos_info"] = "OSPOS Installation Info";
$lang["config_payment_options_order"] = "Payment Options Order";
$lang["config_perm_risk"] = "Permissions higher than 750 leaves this software at risk.";
$lang["config_phone"] = "Company Phone";
$lang["config_phone_required"] = "Company Phone is a required field.";
$lang["config_print_bottom_margin"] = "Margin Bottom";
$lang["config_print_bottom_margin_number"] = "Margin Bottom must be a number.";
$lang["config_print_bottom_margin_required"] = "Margin Bottom is a required field.";
$lang["config_print_delay_autoreturn"] = "Autoreturn to Sale delay";
$lang["config_print_delay_autoreturn_number"] = "Autoreturn to Sale delay is a required field.";
$lang["config_print_delay_autoreturn_required"] = "Autoreturn to Sale delay must be a number.";
$lang["config_print_footer"] = "Print Browser Footer";
$lang["config_print_header"] = "Print Browser Header";
$lang["config_print_left_margin"] = "Margin Left";
$lang["config_print_left_margin_number"] = "Margin Left must be a number.";
$lang["config_print_left_margin_required"] = "Margin Left is a required field.";
$lang["config_print_receipt_check_behaviour"] = "Print Receipt checkbox";
$lang["config_print_receipt_check_behaviour_always"] = "Always checked";
$lang["config_print_receipt_check_behaviour_last"] = "Remember last selection";
$lang["config_print_receipt_check_behaviour_never"] = "Always unchecked";
$lang["config_print_right_margin"] = "Margin Right";
$lang["config_print_right_margin_number"] = "Margin Right must be a number.";
$lang["config_print_right_margin_required"] = "Margin Right is a required field.";
$lang["config_print_silently"] = "Show Print Dialog";
$lang["config_print_top_margin"] = "Margin Top";
$lang["config_print_top_margin_number"] = "Margin Top must be a number.";
$lang["config_print_top_margin_required"] = "Margin Top is a required field.";
$lang["config_quantity_decimals"] = "Quantity Decimals";
$lang["config_quote_default_comments"] = "Default Quote Comments";
$lang["config_receipt"] = "Receipt";
$lang["config_receipt_configuration"] = "Receipt Print Settings";
$lang["config_receipt_default"] = "Default";
$lang["config_receipt_font_size"] = "Font Size";
$lang["config_receipt_font_size_number"] = "Font Size must be a number.";
$lang["config_receipt_font_size_required"] = "Font Size is a required field.";
$lang["config_receipt_info"] = "Receipt Configuration Information";
$lang["config_receipt_printer"] = "Ticket Printer";
$lang["config_receipt_short"] = "Short";
$lang["config_receipt_show_company_name"] = "Show Company Name";
$lang["config_receipt_show_description"] = "Show Description";
$lang["config_receipt_show_serialnumber"] = "Show Serial Number";
$lang["config_receipt_show_tax_ind"] = "Show Tax Indicator";
$lang["config_receipt_show_taxes"] = "Show Taxes";
$lang["config_receipt_show_total_discount"] = "Show Total Discount";
$lang["config_receipt_template"] = "Receipt Template";
$lang["config_receiving_calculate_average_price"] = "Calc avg. Price (Receiving)";
$lang["config_recv_invoice_format"] = "Receivings Invoice Format";
$lang["config_register_mode_default"] = "Default Register Mode";
$lang["config_report_an_issue"] = "";
$lang["config_return_policy_required"] = "Return policy is a required field.";
$lang["config_reward"] = "Reward";
$lang["config_reward_configuration"] = "Reward Configuration";
$lang["config_right"] = "Right";
$lang["config_sales_invoice_format"] = "Sales Invoice Format";
$lang["config_sales_quote_format"] = "Sales Quote Format";
$lang["config_saved_successfully"] = "Configuration save successful.";
$lang["config_saved_unsuccessfully"] = "Configuration save failed.";
$lang["config_security_issue"] = "Security Vulnerability Warning";
$lang["config_server_notice"] = "Please use the below info for issue reporting.";
$lang["config_show_office_group"] = "Show office icon";
$lang["config_statistics"] = "Send Statistics";
$lang["config_statistics_tooltip"] = "Send statistics for development and feature improvement purposes.";
$lang["config_stock_location"] = "Stock location";
$lang["config_stock_location_duplicate"] = "Stock Location must be unique.";
$lang["config_stock_location_invalid_chars"] = "Stock Location can not contain '_'.";
$lang["config_stock_location_required"] = "Stock location is a required field.";
$lang["config_suggestions_first_column"] = "Column 1";
$lang["config_suggestions_layout"] = "Search Suggestions Layout";
$lang["config_suggestions_second_column"] = "Column 2";
$lang["config_suggestions_third_column"] = "Column 3";
$lang["config_system_conf"] = "Setup & Conf";
$lang["config_system_info"] = "System Info";
$lang["config_table"] = "Table";
$lang["config_table_configuration"] = "Table Configuration";
$lang["config_takings_printer"] = "Receipt Printer";
$lang["config_tax"] = "Tax";
$lang["config_tax_category"] = "Tax Category";
$lang["config_tax_category_duplicate"] = "The entered tax category already exists.";
$lang["config_tax_category_invalid_chars"] = "The entered tax category is invalid.";
$lang["config_tax_category_required"] = "The tax category is required.";
$lang["config_tax_category_used"] = "Tax category cannot be deleted because it is being used.";
$lang["config_tax_configuration"] = "Tax Configuration";
$lang["config_tax_decimals"] = "Tax Decimals";
$lang["config_tax_id"] = "Tax Id";
$lang["config_tax_included"] = "Tax Included";
$lang["config_theme"] = "Theme";
$lang["config_thousands_separator"] = "Thousands Separator";
$lang["config_timezone"] = "Timezone";
$lang["config_timezone_error"] = "";
$lang["config_top"] = "Top";
$lang["config_use_destination_based_tax"] = "Use Destination Based Tax";
$lang["config_user_timezone"] = "";
$lang["config_website"] = "Website";
$lang["config_work_order_enable"] = "Work Order Support";
$lang["config_work_order_format"] = "Work Order Format";

View File

@@ -0,0 +1,54 @@
<?php
$lang["customers_account_number"] = "Account #";
$lang["customers_account_number_duplicate"] = "Account Number is already present in the database.";
$lang["customers_available_points"] = "Available Points";
$lang["customers_average"] = "Average spent";
$lang["customers_avg_discount"] = "Average discount";
$lang["customers_basic_information"] = "Information";
$lang["customers_cannot_be_deleted"] = "Could not delete selected customers, one or more of the selected customers has sales.";
$lang["customers_company_name"] = "Company";
$lang["customers_confirm_delete"] = "Are you sure you want to delete the selected customer(s)?";
$lang["customers_confirm_restore"] = "Are you sure you want to restore selected customers(s)?";
$lang["customers_consent"] = "Registration consent";
$lang["customers_consent_required"] = "Registration consent is a required field.";
$lang["customers_csv_import_failed"] = "CSV import failed";
$lang["customers_csv_import_nodata_wrongformat"] = "The uploaded file has no data or is incorrectly formatted.";
$lang["customers_csv_import_partially_failed"] = "Customer import successful with some failures:";
$lang["customers_csv_import_success"] = "Customer import successful.";
$lang["customers_customer"] = "Customer";
$lang["customers_date"] = "Date";
$lang["customers_discount"] = "Discount";
$lang["customers_discount_fixed"] = "Fixed Discount";
$lang["customers_discount_percent"] = "Percentage Discount";
$lang["customers_discount_type"] = "Discount Type";
$lang["customers_email_duplicate"] = "Email Address is already present in the database.";
$lang["customers_employee"] = "Employee";
$lang["customers_error_adding_updating"] = "Customer add or update failed.";
$lang["customers_import_items_csv"] = "Customer Import from CSV";
$lang["customers_mailchimp_activity_click"] = "Email click";
$lang["customers_mailchimp_activity_lastopen"] = "Last open email";
$lang["customers_mailchimp_activity_open"] = "Email open";
$lang["customers_mailchimp_activity_total"] = "Email sent";
$lang["customers_mailchimp_activity_unopen"] = "Email unopen";
$lang["customers_mailchimp_email_client"] = "Email client";
$lang["customers_mailchimp_info"] = "Mailchimp";
$lang["customers_mailchimp_member_rating"] = "Rating";
$lang["customers_mailchimp_status"] = "Status";
$lang["customers_mailchimp_vip"] = "VIP";
$lang["customers_max"] = "Max. spent";
$lang["customers_min"] = "Min. spent";
$lang["customers_new"] = "New Customer";
$lang["customers_none_selected"] = "You have not selected any customer(s) to delete.";
$lang["customers_one_or_multiple"] = "customer(s)";
$lang["customers_quantity"] = "Quantity";
$lang["customers_stats_info"] = "Stats";
$lang["customers_successful_adding"] = "You have successfully added customer";
$lang["customers_successful_deleted"] = "You have successfully deleted";
$lang["customers_successful_updating"] = "You have successfully updated customer";
$lang["customers_tax_code"] = "Tax Code";
$lang["customers_tax_id"] = "Tax Id";
$lang["customers_taxable"] = "Taxable";
$lang["customers_total"] = "Total spent";
$lang["customers_update"] = "Update Customer";
$lang["rewards_package"] = "Rewards Package";

View File

@@ -0,0 +1,22 @@
<?php
$lang["datepicker_all_time"] = "All Time";
$lang["datepicker_apply"] = "Apply";
$lang["datepicker_cancel"] = "Cancel";
$lang["datepicker_custom"] = "Custom";
$lang["datepicker_from"] = "From";
$lang["datepicker_last_30"] = "Last 30 Days";
$lang["datepicker_last_7"] = "Last 7 Days";
$lang["datepicker_last_financial_year"] = "Last Fiscal Year";
$lang["datepicker_last_month"] = "Last Month";
$lang["datepicker_last_year"] = "Last Year";
$lang["datepicker_same_month_last_year"] = "Same Month Last Year";
$lang["datepicker_same_month_to_same_day_last_year"] = "Same Month To Same Day Last Year";
$lang["datepicker_this_financial_year"] = "Current Fiscal Year";
$lang["datepicker_this_month"] = "Current Month";
$lang["datepicker_this_year"] = "Current Year";
$lang["datepicker_to"] = "To";
$lang["datepicker_today"] = "Today";
$lang["datepicker_today_last_year"] = "Today Last Year";
$lang["datepicker_weekstart"] = "0";
$lang["datepicker_yesterday"] = "Yesterday";

View File

@@ -0,0 +1,37 @@
<?php
$lang["employees_basic_information"] = "Information";
$lang["employees_cannot_be_deleted"] = "Unable to delete selected employee(s), one or more of the has processed sales or you are trying to delete your account.";
$lang["employees_change_password"] = "Change Password";
$lang["employees_confirm_delete"] = "Are you sure you want to delete the selected employee(s)?";
$lang["employees_confirm_restore"] = "Are you sure you want to restore selected employee(s)?";
$lang["employees_current_password"] = "Current Password";
$lang["employees_current_password_invalid"] = "Current Password is invalid.";
$lang["employees_employee"] = "Employee";
$lang["employees_error_adding_updating"] = "Employee add or update failed.";
$lang["employees_error_deleting_demo_admin"] = "You can not delete the demo admin user.";
$lang["employees_error_updating_demo_admin"] = "You can not change the demo admin user.";
$lang["employees_language"] = "Language";
$lang["employees_login_info"] = "Login";
$lang["employees_new"] = "New Employee";
$lang["employees_none_selected"] = "You have not selected any employee(s) to delete.";
$lang["employees_one_or_multiple"] = "employee(s)";
$lang["employees_password"] = "Password";
$lang["employees_password_minlength"] = "Password must be at least 8 characters in length.";
$lang["employees_password_must_match"] = "Passwords do not match.";
$lang["employees_password_not_must_match"] = "Current password and new password must be unique.";
$lang["employees_password_required"] = "Password is required.";
$lang["employees_permission_desc"] = "Check the boxes below to grant access to modules.";
$lang["employees_permission_info"] = "Permissions";
$lang["employees_repeat_password"] = "Password Again";
$lang["employees_subpermission_required"] = "Add at least one grant for each module.";
$lang["employees_successful_adding"] = "Employee add successful.";
$lang["employees_successful_change_password"] = "Password change successful.";
$lang["employees_successful_deleted"] = "You have successfully deleted";
$lang["employees_successful_updating"] = "You have successfully updated employee";
$lang["employees_system_language"] = "System Language";
$lang["employees_unsuccessful_change_password"] = "Password change failed.";
$lang["employees_update"] = "Update Employee";
$lang["employees_username"] = "Username";
$lang["employees_username_minlength"] = "Username must be at least 5 characters in length.";
$lang["employees_username_required"] = "Username is a required field.";

View File

@@ -0,0 +1,9 @@
<?php
$lang["enum_half_down"] = "Half Down";
$lang["enum_half_even"] = "Half Even";
$lang["enum_half_five"] = "Half Five";
$lang["enum_half_odd"] = "Half Odd";
$lang["enum_half_up"] = "Half Up";
$lang["enum_round_down"] = "Round Down";
$lang["enum_round_up"] = "Round Up";

View File

@@ -0,0 +1,4 @@
<?php
$lang["error_no_permission_module"] = "You do not have permission to access the module named";
$lang["error_unknown"] = "Unexpected error";

View File

@@ -0,0 +1,21 @@
<?php
$lang["category_name_required"] = "Expense Category name required";
$lang["expenses_categories_add_item"] = "Add Category";
$lang["expenses_categories_cannot_be_deleted"] = "Could not delete Category Expense(s)";
$lang["expenses_categories_category_id"] = "Id";
$lang["expenses_categories_confirm_delete"] = "Are you sure you want to delete the selected Expense Category?";
$lang["expenses_categories_confirm_restore"] = "Are you sure you want to restore the selected Expense Category?";
$lang["expenses_categories_description"] = "Category Description";
$lang["expenses_categories_error_adding_updating"] = "Error adding/updating Expense Category";
$lang["expenses_categories_info"] = "Category Expense Info";
$lang["expenses_categories_name"] = "Category Name";
$lang["expenses_categories_new"] = "New Category";
$lang["expenses_categories_no_expenses_categories_to_display"] = "No Category to display";
$lang["expenses_categories_none_selected"] = "You have not selected any Category Expense";
$lang["expenses_categories_one_or_multiple"] = "Category Expense";
$lang["expenses_categories_quantity"] = "Quantity";
$lang["expenses_categories_successful_adding"] = "Expense Category add successful";
$lang["expenses_categories_successful_deleted"] = "Expense Category delete successful";
$lang["expenses_categories_successful_updating"] = "Expense Category update successful";
$lang["expenses_categories_update"] = "Update Category";

View File

@@ -0,0 +1,46 @@
<?php
$lang["expenses_add_item"] = "Add Expense";
$lang["expenses_amount"] = "Amount";
$lang["expenses_amount_number"] = "Amount must be a number";
$lang["expenses_amount_required"] = "Expense Amount required";
$lang["expenses_by_category"] = "Category";
$lang["expenses_cannot_be_deleted"] = "Could not delete Category Expense(s)";
$lang["expenses_cash"] = "Cash";
$lang["expenses_cash_filter"] = "Cash";
$lang["expenses_categories_name"] = "Category";
$lang["expenses_category_required"] = "category is a required field";
$lang["expenses_check"] = "Check";
$lang["expenses_check_filter"] = "Check";
$lang["expenses_confirm_delete"] = "Are you sure you want to delete the selected Expense?";
$lang["expenses_confirm_restore"] = "Are you sure you want to restore the selected Expenses(s)?";
$lang["expenses_credit"] = "Credit Card";
$lang["expenses_credit_filter"] = "Credit Card";
$lang["expenses_date"] = "Date";
$lang["expenses_date_number"] = "date must be a number";
$lang["expenses_date_required"] = "date is a required field";
$lang["expenses_debit"] = "Debit Card";
$lang["expenses_debit_filter"] = "Debit Card";
$lang["expenses_description"] = "Description";
$lang["expenses_due"] = "Due";
$lang["expenses_due_filter"] = "Due";
$lang["expenses_employee"] = "Created By";
$lang["expenses_error_adding_updating"] = "Error adding/updating Expense";
$lang["expenses_expense_id"] = "Id";
$lang["expenses_expenses_employee"] = "Employee";
$lang["expenses_info"] = "Expense Info";
$lang["expenses_is_deleted"] = "Deleted";
$lang["expenses_name_required"] = "Expense Name required";
$lang["expenses_new"] = "New Expense";
$lang["expenses_no_expenses_to_display"] = "There are no Expenses to display";
$lang["expenses_none_selected"] = "You have not selected any Expense";
$lang["expenses_one_or_multiple"] = "Expense(s)";
$lang["expenses_payment"] = "Payment Type";
$lang["expenses_start_typing_supplier_name"] = "Start Typing Supplier's name...";
$lang["expenses_successful_adding"] = "Expense add successful";
$lang["expenses_successful_deleted"] = "Expense delete successful";
$lang["expenses_successful_updating"] = "Expense update successful";
$lang["expenses_supplier_name"] = "Supplier";
$lang["expenses_supplier_tax_code"] = "Tax Code";
$lang["expenses_tax_amount"] = "Tax";
$lang["expenses_update"] = "Update Expense";

View File

@@ -0,0 +1,70 @@
<?php
$lang["giftcards_add_minus"] = "Inventory to add or subtract.";
$lang["giftcards_allow_alt_description"] = "Allow Alternate Description";
$lang["giftcards_bulk_edit"] = "Bulk Edit";
$lang["giftcards_cannot_be_deleted"] = "Could not delete selected Gift Card(s), one or more of the selected Gift Cards has sales.";
$lang["giftcards_cannot_find_giftcard"] = "Gift Card not found.";
$lang["giftcards_cannot_use"] = "Gift Card %1 cannot be used for this sale: invalid Customer.";
$lang["giftcards_card_value"] = "Value";
$lang["giftcards_category"] = "Category";
$lang["giftcards_change_all_to_allow_alt_desc"] = "Allow alternate description for all.";
$lang["giftcards_change_all_to_not_allow_allow_desc"] = "Do not allow alternate description for all.";
$lang["giftcards_change_all_to_serialized"] = "Change All To Serialized";
$lang["giftcards_change_all_to_unserialized"] = "Change All To Unserialized";
$lang["giftcards_confirm_bulk_edit"] = "Are you sure you want to edit the selected Gift Card(s)?";
$lang["giftcards_confirm_delete"] = "Are you sure you want to delete the selected Gift Card(s)?";
$lang["giftcards_confirm_restore"] = "Are you sure you want to restore selected Gift Card(s)?";
$lang["giftcards_cost_price"] = "Wholesale Price";
$lang["giftcards_count"] = "Update Inventory";
$lang["giftcards_csv_import_failed"] = "CSV import failed.";
$lang["giftcards_current_quantity"] = "Current Quantity";
$lang["giftcards_description"] = "Description";
$lang["giftcards_details_count"] = "Inventory Count Details";
$lang["giftcards_do_nothing"] = "Do Nothing";
$lang["giftcards_edit_fields_you_want_to_update"] = "Edit desired fields for selected Gift Card(s).";
$lang["giftcards_edit_multiple_giftcards"] = "Edit Multiple Gift Cards.";
$lang["giftcards_error_adding_updating"] = "Gift Card add or update failed.";
$lang["giftcards_error_updating_multiple"] = "Gift Card(s) update failed.";
$lang["giftcards_generate_barcodes"] = "Generate Barcodes";
$lang["giftcards_giftcard"] = "Gift Card";
$lang["giftcards_giftcard_number"] = "Gift Card Number";
$lang["giftcards_info_provided_by"] = "Info provided by";
$lang["giftcards_inventory_comments"] = "Comments";
$lang["giftcards_is_serialized"] = "Gift Card has Serial Number";
$lang["giftcards_low_inventory_giftcards"] = "Low Inventory Gift Cards";
$lang["giftcards_manually_editing_of_quantity"] = "Manual Edit of Quantity";
$lang["giftcards_must_select_giftcard_for_barcode"] = "You must select at least one (1) Gift Card to generate barcodes.";
$lang["giftcards_new"] = "New Gift Card";
$lang["giftcards_no_description_giftcards"] = "No Description Gift Cards";
$lang["giftcards_no_giftcards_to_display"] = "No Gift Cards to display.";
$lang["giftcards_none"] = "None";
$lang["giftcards_none_selected"] = "No Gift Card(s) selected to edit.";
$lang["giftcards_number"] = "Gift Card Number must be a number.";
$lang["giftcards_number_information"] = "Gift Card Number";
$lang["giftcards_number_required"] = "Gift Card Number is a required field.";
$lang["giftcards_one_or_multiple"] = "Gift Card(s)";
$lang["giftcards_person_id"] = "Customer";
$lang["giftcards_quantity"] = "Quantity";
$lang["giftcards_quantity_required"] = "Quantity is a required field. Please close (X) to cancel.";
$lang["giftcards_remaining_balance"] = "Gift Card %1 remaining value is %2!";
$lang["giftcards_reorder_level"] = "Reorder Level";
$lang["giftcards_retrive_giftcard_info"] = "Retrieve Gift Card Info";
$lang["giftcards_sales_tax_1"] = "Sales Tax";
$lang["giftcards_sales_tax_2"] = "Sales Tax 2";
$lang["giftcards_serialized_giftcards"] = "Serialized Gift Cards";
$lang["giftcards_successful_adding"] = "You have successfully added Gift Card";
$lang["giftcards_successful_bulk_edit"] = "You have successfully updated the selected Gift Card(s)";
$lang["giftcards_successful_deleted"] = "You have successfully deleted";
$lang["giftcards_successful_updating"] = "You have successfully updated Gift Card";
$lang["giftcards_supplier"] = "Supplier";
$lang["giftcards_tax_1"] = "Tax 1";
$lang["giftcards_tax_2"] = "Tax 2";
$lang["giftcards_tax_percent"] = "Tax Percent";
$lang["giftcards_tax_percents"] = "Tax Percent(s)";
$lang["giftcards_unit_price"] = "Retail Value";
$lang["giftcards_upc_database"] = "Barcode Database";
$lang["giftcards_update"] = "Update Gift Card";
$lang["giftcards_use_inventory_menu"] = "Use Inventory Menu";
$lang["giftcards_value"] = "Gift Card Value must be a number.";
$lang["giftcards_value_required"] = "Gift Card Value is a required field.";

View File

@@ -0,0 +1,35 @@
<?php
$lang["item_kits_add_item"] = "";
$lang["item_kits_all"] = "";
$lang["item_kits_cannot_be_deleted"] = "";
$lang["item_kits_confirm_delete"] = "";
$lang["item_kits_confirm_restore"] = "";
$lang["item_kits_description"] = "";
$lang["item_kits_discount"] = "";
$lang["item_kits_discount_fixed"] = "";
$lang["item_kits_discount_percent"] = "";
$lang["item_kits_discount_type"] = "";
$lang["item_kits_error_adding_updating"] = "";
$lang["item_kits_find_kit_item"] = "";
$lang["item_kits_info"] = "";
$lang["item_kits_item"] = "";
$lang["item_kits_items"] = "";
$lang["item_kits_kit"] = "";
$lang["item_kits_kit_and_components"] = "";
$lang["item_kits_kit_and_stock"] = "";
$lang["item_kits_kit_only"] = "";
$lang["item_kits_name"] = "";
$lang["item_kits_new"] = "";
$lang["item_kits_no_item_kits_to_display"] = "";
$lang["item_kits_none_selected"] = "";
$lang["item_kits_one_or_multiple"] = "";
$lang["item_kits_price_option"] = "";
$lang["item_kits_priced_only"] = "";
$lang["item_kits_print_option"] = "";
$lang["item_kits_quantity"] = "";
$lang["item_kits_sequence"] = "";
$lang["item_kits_successful_adding"] = "";
$lang["item_kits_successful_deleted"] = "";
$lang["item_kits_successful_updating"] = "";
$lang["item_kits_update"] = "";

View File

@@ -0,0 +1,112 @@
<?php
$lang["items_add_minus"] = "";
$lang["items_allow_alt_description"] = "";
$lang["items_amount_entry"] = "";
$lang["items_bulk_edit"] = "";
$lang["items_buy_price_required"] = "";
$lang["items_cannot_be_deleted"] = "";
$lang["items_cannot_find_item"] = "";
$lang["items_category"] = "";
$lang["items_category_required"] = "";
$lang["items_change_all_to_allow_alt_desc"] = "";
$lang["items_change_all_to_not_allow_allow_desc"] = "";
$lang["items_change_all_to_serialized"] = "";
$lang["items_change_all_to_unserialized"] = "";
$lang["items_change_image"] = "";
$lang["items_confirm_bulk_edit"] = "";
$lang["items_confirm_bulk_edit_wipe_taxes"] = "";
$lang["items_confirm_delete"] = "";
$lang["items_confirm_restore"] = "";
$lang["items_cost_price"] = "";
$lang["items_cost_price_number"] = "";
$lang["items_cost_price_required"] = "";
$lang["items_count"] = "";
$lang["items_csv_import_failed"] = "";
$lang["items_csv_import_nodata_wrongformat"] = "";
$lang["items_csv_import_partially_failed"] = "";
$lang["items_csv_import_success"] = "";
$lang["items_current_quantity"] = "";
$lang["items_default_pack_name"] = "";
$lang["items_description"] = "";
$lang["items_details_count"] = "";
$lang["items_do_nothing"] = "";
$lang["items_edit_fields_you_want_to_update"] = "";
$lang["items_edit_multiple_items"] = "";
$lang["items_empty_upc_items"] = "";
$lang["items_error_adding_updating"] = "";
$lang["items_error_updating_multiple"] = "";
$lang["items_generate_barcodes"] = "";
$lang["items_hsn_code"] = "";
$lang["items_image"] = "";
$lang["items_import_items_csv"] = "";
$lang["items_info_provided_by"] = "";
$lang["items_inventory"] = "";
$lang["items_inventory_CSV_import_quantity"] = "";
$lang["items_inventory_comments"] = "";
$lang["items_inventory_data_tracking"] = "";
$lang["items_inventory_date"] = "";
$lang["items_inventory_employee"] = "";
$lang["items_inventory_in_out_quantity"] = "";
$lang["items_inventory_remarks"] = "";
$lang["items_is_deleted"] = "";
$lang["items_is_serialized"] = "";
$lang["items_item"] = "";
$lang["items_item_number"] = "";
$lang["items_item_number_duplicate"] = "";
$lang["items_kit"] = "";
$lang["items_location"] = "";
$lang["items_low_inventory_items"] = "";
$lang["items_low_sell_item"] = "";
$lang["items_manually_editing_of_quantity"] = "";
$lang["items_name"] = "";
$lang["items_name_required"] = "";
$lang["items_new"] = "";
$lang["items_no_description_items"] = "";
$lang["items_no_items_to_display"] = "";
$lang["items_none"] = "";
$lang["items_none_selected"] = "";
$lang["items_nonstock"] = "";
$lang["items_number_information"] = "";
$lang["items_number_required"] = "";
$lang["items_one_or_multiple"] = "";
$lang["items_pack_name"] = "";
$lang["items_qty_per_pack"] = "";
$lang["items_quantity"] = "";
$lang["items_quantity_number"] = "";
$lang["items_quantity_required"] = "";
$lang["items_receiving_quantity"] = "";
$lang["items_remove_image"] = "";
$lang["items_reorder_level"] = "";
$lang["items_reorder_level_number"] = "";
$lang["items_reorder_level_required"] = "";
$lang["items_retrive_item_info"] = "";
$lang["items_sales_tax_1"] = "";
$lang["items_sales_tax_2"] = "";
$lang["items_search_attributes"] = "";
$lang["items_select_image"] = "";
$lang["items_serialized_items"] = "";
$lang["items_standard"] = "";
$lang["items_stock"] = "";
$lang["items_stock_location"] = "";
$lang["items_stock_type"] = "";
$lang["items_successful_adding"] = "";
$lang["items_successful_bulk_edit"] = "";
$lang["items_successful_deleted"] = "";
$lang["items_successful_updating"] = "";
$lang["items_supplier"] = "";
$lang["items_tax_1"] = "";
$lang["items_tax_2"] = "";
$lang["items_tax_category"] = "";
$lang["items_tax_percent"] = "";
$lang["items_tax_percent_number"] = "";
$lang["items_tax_percent_required"] = "";
$lang["items_tax_percents"] = "";
$lang["items_temp"] = "";
$lang["items_type"] = "";
$lang["items_unit_price"] = "";
$lang["items_unit_price_number"] = "";
$lang["items_unit_price_required"] = "";
$lang["items_upc_database"] = "";
$lang["items_update"] = "";
$lang["items_use_inventory_menu"] = "";

View File

@@ -0,0 +1,10 @@
<?php
$lang["login_gcaptcha"] = "";
$lang["login_go"] = "";
$lang["login_invalid_gcaptcha"] = "";
$lang["login_invalid_installation"] = "";
$lang["login_invalid_username_and_password"] = "";
$lang["login_login"] = "";
$lang["login_password"] = "";
$lang["login_username"] = "";

View File

@@ -0,0 +1,14 @@
<?php
$lang["messages_first_name"] = "";
$lang["messages_last_name"] = "";
$lang["messages_message"] = "";
$lang["messages_message_placeholder"] = "";
$lang["messages_message_required"] = "";
$lang["messages_multiple_phones"] = "";
$lang["messages_phone"] = "";
$lang["messages_phone_number_required"] = "";
$lang["messages_phone_placeholder"] = "";
$lang["messages_sms_send"] = "";
$lang["messages_successfully_sent"] = "";
$lang["messages_unsuccessfully_sent"] = "";

View File

@@ -0,0 +1,41 @@
<?php
$lang["module_attributes"] = "";
$lang["module_attributes_desc"] = "";
$lang["module_both"] = "";
$lang["module_cashups"] = "";
$lang["module_cashups_desc"] = "";
$lang["module_config"] = "";
$lang["module_config_desc"] = "";
$lang["module_customers"] = "";
$lang["module_customers_desc"] = "";
$lang["module_employees"] = "";
$lang["module_employees_desc"] = "";
$lang["module_expenses"] = "";
$lang["module_expenses_categories"] = "";
$lang["module_expenses_categories_desc"] = "";
$lang["module_expenses_desc"] = "";
$lang["module_giftcards"] = "";
$lang["module_giftcards_desc"] = "";
$lang["module_home"] = "";
$lang["module_home_desc"] = "";
$lang["module_item_kits"] = "";
$lang["module_item_kits_desc"] = "";
$lang["module_items"] = "";
$lang["module_items_desc"] = "";
$lang["module_messages"] = "";
$lang["module_messages_desc"] = "";
$lang["module_migrate"] = "";
$lang["module_migrate_desc"] = "";
$lang["module_office"] = "";
$lang["module_office_desc"] = "";
$lang["module_receivings"] = "";
$lang["module_receivings_desc"] = "";
$lang["module_reports"] = "";
$lang["module_reports_desc"] = "";
$lang["module_sales"] = "";
$lang["module_sales_desc"] = "";
$lang["module_suppliers"] = "";
$lang["module_suppliers_desc"] = "";
$lang["module_taxes"] = "";
$lang["module_taxes_desc"] = "";

View File

@@ -0,0 +1,54 @@
<?php
$lang["receivings_cancel_receiving"] = "";
$lang["receivings_cannot_be_deleted"] = "";
$lang["receivings_comments"] = "";
$lang["receivings_complete_receiving"] = "";
$lang["receivings_confirm_cancel_receiving"] = "";
$lang["receivings_confirm_delete"] = "";
$lang["receivings_confirm_finish_receiving"] = "";
$lang["receivings_cost"] = "";
$lang["receivings_date"] = "";
$lang["receivings_date_required"] = "";
$lang["receivings_date_type"] = "";
$lang["receivings_delete_entire_sale"] = "";
$lang["receivings_discount"] = "";
$lang["receivings_edit"] = "";
$lang["receivings_edit_sale"] = "";
$lang["receivings_employee"] = "";
$lang["receivings_error_editing_item"] = "";
$lang["receivings_error_requisition"] = "";
$lang["receivings_find_or_scan_item"] = "";
$lang["receivings_find_or_scan_item_or_receipt"] = "";
$lang["receivings_id"] = "";
$lang["receivings_item_name"] = "";
$lang["receivings_mode"] = "";
$lang["receivings_new_supplier"] = "";
$lang["receivings_one_or_multiple"] = "";
$lang["receivings_print_after_sale"] = "";
$lang["receivings_quantity"] = "";
$lang["receivings_receipt"] = "";
$lang["receivings_receipt_number"] = "";
$lang["receivings_receiving"] = "";
$lang["receivings_reference"] = "";
$lang["receivings_register"] = "";
$lang["receivings_requisition"] = "";
$lang["receivings_return"] = "";
$lang["receivings_select_supplier"] = "";
$lang["receivings_ship_pack"] = "";
$lang["receivings_start_typing_supplier_name"] = "";
$lang["receivings_stock"] = "";
$lang["receivings_stock_destination"] = "";
$lang["receivings_stock_locaiton"] = "";
$lang["receivings_stock_source"] = "";
$lang["receivings_successfully_deleted"] = "";
$lang["receivings_successfully_updated"] = "";
$lang["receivings_supplier"] = "";
$lang["receivings_supplier_address"] = "";
$lang["receivings_supplier_email"] = "";
$lang["receivings_supplier_location"] = "";
$lang["receivings_total"] = "";
$lang["receivings_transaction_failed"] = "";
$lang["receivings_unable_to_add_item"] = "";
$lang["receivings_unsuccessfully_updated"] = "";
$lang["receivings_update"] = "";

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