mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-05-25 08:44:42 -04:00
Compare commits
932 Commits
3.3.1
...
master.3.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b4c48e5141 | ||
|
|
b925155ba5 | ||
|
|
d07b9349e3 | ||
|
|
51a8cffc9e | ||
|
|
694b7fe52d | ||
|
|
5669dff7da | ||
|
|
6d8890f61e | ||
|
|
a4bae6536d | ||
|
|
e1e61ba98d | ||
|
|
225bfda867 | ||
|
|
0a2dc49e3e | ||
|
|
dcc9745991 | ||
|
|
339eca6028 | ||
|
|
d1e9b6d943 | ||
|
|
2da34b0789 | ||
|
|
44d89a5ed2 | ||
|
|
0637266560 | ||
|
|
32c99248af | ||
|
|
fad53d52d4 | ||
|
|
29bdb7b75e | ||
|
|
3f1bbf99b4 | ||
|
|
4c3f6e4c31 | ||
|
|
85f577556e | ||
|
|
dc2b2862f9 | ||
|
|
9217f2d12f | ||
|
|
5ebe626543 | ||
|
|
e277fc09ac | ||
|
|
7e2a5eb297 | ||
|
|
bcc9cac570 | ||
|
|
6d4421e13b | ||
|
|
9d320772f5 | ||
|
|
3d441689d0 | ||
|
|
4eacc65785 | ||
|
|
a31ae36e18 | ||
|
|
74ed7488ee | ||
|
|
be72a0169b | ||
|
|
d786039765 | ||
|
|
74724a890f | ||
|
|
8c201816b9 | ||
|
|
5767a3929f | ||
|
|
2311a644ab | ||
|
|
3d65c3fffa | ||
|
|
517635181c | ||
|
|
1547272665 | ||
|
|
8675aa82df | ||
|
|
5acafd4ea8 | ||
|
|
2db50d69d0 | ||
|
|
c6d0582fcb | ||
|
|
3fbfd8c917 | ||
|
|
c38fc60f6a | ||
|
|
346a34121f | ||
|
|
9c9c2e8b81 | ||
|
|
510a01e2b5 | ||
|
|
93014dc4d8 | ||
|
|
294f63bd31 | ||
|
|
1b7531c7f4 | ||
|
|
6d1eeb3c62 | ||
|
|
3ada6f8372 | ||
|
|
d15d001b5b | ||
|
|
29d6138951 | ||
|
|
d6a4161416 | ||
|
|
0604ad121b | ||
|
|
ffdc8f0bd5 | ||
|
|
83d1194d0c | ||
|
|
e90b58f110 | ||
|
|
bee3c7ede0 | ||
|
|
bfc1c2e55e | ||
|
|
8d0c5c6ee9 | ||
|
|
f87c90fdec | ||
|
|
cb560949ac | ||
|
|
4d5a2f15c2 | ||
|
|
defb484640 | ||
|
|
57fb2c98fa | ||
|
|
c3bdff6fb4 | ||
|
|
4ecfbc2398 | ||
|
|
41152a5b12 | ||
|
|
797ac4c9d4 | ||
|
|
13be0a1b0c | ||
|
|
b6ac9e5909 | ||
|
|
3debc57ca8 | ||
|
|
fd1e942273 | ||
|
|
c641b1762c | ||
|
|
6ee8757b12 | ||
|
|
ee575b5109 | ||
|
|
e11eba978f | ||
|
|
a4234a3129 | ||
|
|
ba8cb0ef86 | ||
|
|
2eee6313e0 | ||
|
|
95f19d6063 | ||
|
|
8a854d1912 | ||
|
|
80f8dd9b37 | ||
|
|
94e9d35314 | ||
|
|
8b5b4f9279 | ||
|
|
b3e4b72b30 | ||
|
|
ffd511bd06 | ||
|
|
393cee62aa | ||
|
|
870aad2d67 | ||
|
|
789eb82940 | ||
|
|
89783bc190 | ||
|
|
d11824ffd4 | ||
|
|
d0093253a1 | ||
|
|
1f7529baf9 | ||
|
|
feba68b08f | ||
|
|
37cf26b10a | ||
|
|
f80f3a9cab | ||
|
|
74a4bfac85 | ||
|
|
fa347aa281 | ||
|
|
c1f1e6306e | ||
|
|
dc9d66f3de | ||
|
|
a4f52b765c | ||
|
|
e023b081c5 | ||
|
|
9c6f1e4429 | ||
|
|
962a323694 | ||
|
|
49a99c68ff | ||
|
|
44024b0929 | ||
|
|
4e52c2f036 | ||
|
|
37e757128b | ||
|
|
394bd671aa | ||
|
|
d0b29d39bf | ||
|
|
eb970b2315 | ||
|
|
c0c2001754 | ||
|
|
ec51bb3991 | ||
|
|
4ce569d76e | ||
|
|
c08e32d016 | ||
|
|
8a495ffce6 | ||
|
|
ea1528f5b9 | ||
|
|
e59dbdf47e | ||
|
|
0e29a7950a | ||
|
|
3d32536292 | ||
|
|
be24044076 | ||
|
|
3986aa8e0a | ||
|
|
d7e40cbe43 | ||
|
|
f61307d380 | ||
|
|
ebae2eab5d | ||
|
|
795e030e07 | ||
|
|
0a91c0009f | ||
|
|
5cea9a7555 | ||
|
|
9838045683 | ||
|
|
e33c10e8c4 | ||
|
|
d680b78e49 | ||
|
|
4d7561d311 | ||
|
|
ad37b2cc24 | ||
|
|
562d760174 | ||
|
|
3ea32e7444 | ||
|
|
2953cf47ed | ||
|
|
0066447fdb | ||
|
|
8af2466b20 | ||
|
|
fb7fd0fc38 | ||
|
|
52c08e9210 | ||
|
|
f17388e755 | ||
|
|
a39b3ec1bc | ||
|
|
ddc7215424 | ||
|
|
2e09cd31c2 | ||
|
|
7726adbd6f | ||
|
|
7bce75f5b6 | ||
|
|
ef612fb0c9 | ||
|
|
107745d683 | ||
|
|
1117c39c27 | ||
|
|
ae93341f75 | ||
|
|
d24624d1f6 | ||
|
|
d87d27dec9 | ||
|
|
92f25c3993 | ||
|
|
3116903129 | ||
|
|
cff79601e4 | ||
|
|
9ca998d523 | ||
|
|
0efd58217f | ||
|
|
72eab0cd28 | ||
|
|
a258567955 | ||
|
|
ca4782f751 | ||
|
|
e638ff8595 | ||
|
|
5f10fda2c1 | ||
|
|
1faeccc596 | ||
|
|
fb328e4fb0 | ||
|
|
136f778028 | ||
|
|
8ed0091400 | ||
|
|
977d1869e6 | ||
|
|
cc527d8426 | ||
|
|
aa28c0dbf0 | ||
|
|
15f41c129c | ||
|
|
ee30b4d544 | ||
|
|
2d0029e605 | ||
|
|
3fb4b398ea | ||
|
|
ebe1860858 | ||
|
|
7f18d7c1fa | ||
|
|
e77b357b38 | ||
|
|
3e90244410 | ||
|
|
2689426e15 | ||
|
|
fc3cff5225 | ||
|
|
5cee7cd005 | ||
|
|
e29b8b1b87 | ||
|
|
b3e49f05d1 | ||
|
|
274ad1afde | ||
|
|
d4df4e96b6 | ||
|
|
20f104abc8 | ||
|
|
25b22a2ebe | ||
|
|
6ecd9a91c4 | ||
|
|
d2f48a9987 | ||
|
|
c90631fe38 | ||
|
|
dfb47060fa | ||
|
|
f50cbbf29d | ||
|
|
a186de7db2 | ||
|
|
4845230bd3 | ||
|
|
ac0ec7d729 | ||
|
|
25b3de4f2f | ||
|
|
aee186b2a6 | ||
|
|
352036209f | ||
|
|
9ff8611672 | ||
|
|
2f4c95ecd2 | ||
|
|
97159d42c7 | ||
|
|
2b9155d2f1 | ||
|
|
dab1640e70 | ||
|
|
2bc70f6426 | ||
|
|
15130140be | ||
|
|
aab5ae685a | ||
|
|
afedaa4510 | ||
|
|
0e79e145c3 | ||
|
|
fabc4d7153 | ||
|
|
0e2b7a87d9 | ||
|
|
115b014a8c | ||
|
|
70bb633581 | ||
|
|
1c86b0b697 | ||
|
|
75684ab009 | ||
|
|
b7e164a4a6 | ||
|
|
ddc12be596 | ||
|
|
0147c3a80e | ||
|
|
6dc3816c46 | ||
|
|
88ca4aca87 | ||
|
|
ae37dd9bea | ||
|
|
e24cd75f0d | ||
|
|
b79e93ccb6 | ||
|
|
ad3399b1f6 | ||
|
|
a3b45f0f4b | ||
|
|
200cab389a | ||
|
|
b53d0ad821 | ||
|
|
8fa6992b00 | ||
|
|
fe6d599005 | ||
|
|
374cacd860 | ||
|
|
fcd65a6e9c | ||
|
|
309417c405 | ||
|
|
50bca01126 | ||
|
|
fa9bb50b73 | ||
|
|
2ec186d3a3 | ||
|
|
1574e99338 | ||
|
|
1c36e649d6 | ||
|
|
01b8828871 | ||
|
|
0e2fbb9832 | ||
|
|
87c788af62 | ||
|
|
ac9830ec2b | ||
|
|
3d3c928d98 | ||
|
|
a3d8b11be0 | ||
|
|
4929d7c8ce | ||
|
|
5493c75320 | ||
|
|
1e1e992f94 | ||
|
|
e26f9e9fa7 | ||
|
|
a90af8dd9e | ||
|
|
13a6ce3e45 | ||
|
|
7af15c253c | ||
|
|
3f18619497 | ||
|
|
8a904ba749 | ||
|
|
aaa1055adc | ||
|
|
cddc67bb2d | ||
|
|
246a121203 | ||
|
|
4402d35ed7 | ||
|
|
3696e7237b | ||
|
|
f2e20266d3 | ||
|
|
12952aaa26 | ||
|
|
faebbce51a | ||
|
|
5f9ed5c576 | ||
|
|
24644eaf19 | ||
|
|
3314705d7a | ||
|
|
c9552585bf | ||
|
|
e9f4e81f37 | ||
|
|
763cb0c06b | ||
|
|
493e295701 | ||
|
|
a4a31ade22 | ||
|
|
03187da0d9 | ||
|
|
ac6e421906 | ||
|
|
feb7d1847c | ||
|
|
b0190e416f | ||
|
|
19bd43280d | ||
|
|
3ebda3cc98 | ||
|
|
6503621f1d | ||
|
|
c8ad6b911a | ||
|
|
20eb15beaf | ||
|
|
7dca1decd5 | ||
|
|
6e11b1d242 | ||
|
|
a60a4904cb | ||
|
|
dce47200bf | ||
|
|
b255ce8609 | ||
|
|
5fd211d3a8 | ||
|
|
c977f16859 | ||
|
|
2bebfba3ef | ||
|
|
1c9a1a3550 | ||
|
|
fa6d0004de | ||
|
|
dce9e889e4 | ||
|
|
ef488fe0cd | ||
|
|
e2a3647227 | ||
|
|
c19612814e | ||
|
|
bb64e1db00 | ||
|
|
49137f5a76 | ||
|
|
e9dd350222 | ||
|
|
663da89293 | ||
|
|
8513a2b85b | ||
|
|
d70a90e12c | ||
|
|
aa9d2519f4 | ||
|
|
fc4e320ee3 | ||
|
|
b42b26b469 | ||
|
|
392d92b3b9 | ||
|
|
3405c9f974 | ||
|
|
72465d36e3 | ||
|
|
e596cd43c2 | ||
|
|
48daa94926 | ||
|
|
810a2f7e7a | ||
|
|
96c69f927f | ||
|
|
8229092cad | ||
|
|
34e0c28886 | ||
|
|
73fe8a0e0b | ||
|
|
0ff1782cd3 | ||
|
|
e89aed188b | ||
|
|
2b4cdfb2a1 | ||
|
|
4f8dc9003a | ||
|
|
5cac9bb5ed | ||
|
|
59fe090b5e | ||
|
|
080e8ac20c | ||
|
|
46346a5b46 | ||
|
|
dfd19c38f2 | ||
|
|
b400223c57 | ||
|
|
adb17c9865 | ||
|
|
793bd7b093 | ||
|
|
a84c734c75 | ||
|
|
c2cee3c603 | ||
|
|
954d2bdb37 | ||
|
|
8b03b98b57 | ||
|
|
0fb93d6d14 | ||
|
|
a3a06fdb07 | ||
|
|
85b9e3bf65 | ||
|
|
990daef2c2 | ||
|
|
1a26f096fe | ||
|
|
8c15742f56 | ||
|
|
51ec09d527 | ||
|
|
d29bab6974 | ||
|
|
f06f020df2 | ||
|
|
d0dd8667b5 | ||
|
|
0fde542bec | ||
|
|
4d447167c2 | ||
|
|
e52c17efd4 | ||
|
|
3f372c2f9d | ||
|
|
5b715a7e65 | ||
|
|
7ab6ef758e | ||
|
|
d701f770cb | ||
|
|
3f5e0b91da | ||
|
|
26083171be | ||
|
|
6df9ac6a99 | ||
|
|
3b1f4590ca | ||
|
|
da17356e89 | ||
|
|
34f72d8b6a | ||
|
|
05942fe2f3 | ||
|
|
162ca73ec2 | ||
|
|
23f720ba40 | ||
|
|
ec587cc8a8 | ||
|
|
d4f273e306 | ||
|
|
b0ed2bd34f | ||
|
|
3babfd2473 | ||
|
|
e92a929ae3 | ||
|
|
21722f0749 | ||
|
|
ca730c8f9c | ||
|
|
ea70956229 | ||
|
|
4b65aa628a | ||
|
|
4d03915612 | ||
|
|
6e546a098e | ||
|
|
a87faf8b1d | ||
|
|
030ddea814 | ||
|
|
a6cc04f49f | ||
|
|
da17d536ee | ||
|
|
7a4cf1e2bd | ||
|
|
ddcfc0c3f0 | ||
|
|
4edc44a816 | ||
|
|
03863f3737 | ||
|
|
7981d5ae77 | ||
|
|
8e3d90b62e | ||
|
|
98363eec4c | ||
|
|
ca98ca89b9 | ||
|
|
9e339385a3 | ||
|
|
858246b335 | ||
|
|
51bf757ffc | ||
|
|
71f339028a | ||
|
|
b4fc061629 | ||
|
|
e2a8c4a615 | ||
|
|
df45d8baf6 | ||
|
|
6705e5f259 | ||
|
|
68a2292d49 | ||
|
|
c5b22a0300 | ||
|
|
be7d14c295 | ||
|
|
485c24a123 | ||
|
|
6f2ac77a6e | ||
|
|
6e790aeea1 | ||
|
|
2cb65bc2cb | ||
|
|
83ab188c8d | ||
|
|
e20bf34a74 | ||
|
|
0daf08bf94 | ||
|
|
9297db9272 | ||
|
|
d9dbb3d642 | ||
|
|
5583a97772 | ||
|
|
630e38054a | ||
|
|
685033807a | ||
|
|
c38801d8c0 | ||
|
|
41f218806b | ||
|
|
8e52bd4c1a | ||
|
|
2a66107cbc | ||
|
|
2dec15c760 | ||
|
|
dcda176614 | ||
|
|
98306e20be | ||
|
|
a8e505d668 | ||
|
|
3acf9056ec | ||
|
|
9e800fa2c3 | ||
|
|
5578b40185 | ||
|
|
03e2bed008 | ||
|
|
c57a3d8973 | ||
|
|
6178b7b678 | ||
|
|
4e85b8a677 | ||
|
|
23e4deb7c4 | ||
|
|
f7d06c1da4 | ||
|
|
a25653e3cf | ||
|
|
49ef2a2105 | ||
|
|
57f5d419dd | ||
|
|
58192f74c0 | ||
|
|
d34ff02686 | ||
|
|
37cacdbc39 | ||
|
|
f312a45469 | ||
|
|
18d61188ff | ||
|
|
718729b4c7 | ||
|
|
9a881c5232 | ||
|
|
82a9348bf9 | ||
|
|
76d6ad215e | ||
|
|
2e2ef29f72 | ||
|
|
2d21980313 | ||
|
|
7eb310aac6 | ||
|
|
c72ef2aae9 | ||
|
|
c8e7fab9d3 | ||
|
|
4ca39bfedb | ||
|
|
6ec7fa822b | ||
|
|
fb21359663 | ||
|
|
030b67224e | ||
|
|
2ce73993c6 | ||
|
|
0d08e8e15b | ||
|
|
c3150efad5 | ||
|
|
303a1442d7 | ||
|
|
8a2923854a | ||
|
|
9318adaeb9 | ||
|
|
ea64e5bb40 | ||
|
|
5dd340d84c | ||
|
|
36bab70bfd | ||
|
|
e4aa4017ba | ||
|
|
87ea0c45f7 | ||
|
|
9ee3557672 | ||
|
|
0fd531c4a2 | ||
|
|
a54f596ea9 | ||
|
|
d571734f98 | ||
|
|
516f8f71da | ||
|
|
5c31fb094b | ||
|
|
7b20e2c29c | ||
|
|
d8431b8c00 | ||
|
|
4484a47d4c | ||
|
|
ea523dd765 | ||
|
|
b0e833f8c4 | ||
|
|
4e83d967c1 | ||
|
|
f01f882bb8 | ||
|
|
e72dc752bb | ||
|
|
8e054de506 | ||
|
|
084770643d | ||
|
|
4b2b098a85 | ||
|
|
d4d25d240e | ||
|
|
2393c21647 | ||
|
|
e47f3ee571 | ||
|
|
5ddda4dc1e | ||
|
|
20d78224a4 | ||
|
|
8571cd1a44 | ||
|
|
772e809ee6 | ||
|
|
35b09b2dfb | ||
|
|
705fc1dd0b | ||
|
|
814cd4503c | ||
|
|
9020e85a17 | ||
|
|
f0b2f64490 | ||
|
|
36b0b28109 | ||
|
|
5a124ede99 | ||
|
|
a8aafb6f47 | ||
|
|
eae0f8e0cb | ||
|
|
9542f2dd9c | ||
|
|
b8eb67a14a | ||
|
|
d763dd3665 | ||
|
|
5e3a6f0b07 | ||
|
|
d45d57ac4a | ||
|
|
58476dd3bc | ||
|
|
67e1e4ef19 | ||
|
|
8a26195a60 | ||
|
|
84a3a7e9b7 | ||
|
|
958469e207 | ||
|
|
47f61e1a30 | ||
|
|
f04ff91f44 | ||
|
|
e6ac4de69d | ||
|
|
e1ff739621 | ||
|
|
625fb584ed | ||
|
|
fdb8cf8bda | ||
|
|
65c84a8857 | ||
|
|
c0ac4b3400 | ||
|
|
3471c0f947 | ||
|
|
3aafa1649c | ||
|
|
a8b37d36ff | ||
|
|
5ec7e11c37 | ||
|
|
96c3738a7e | ||
|
|
1bb72d9fa9 | ||
|
|
5737d220eb | ||
|
|
f40c4aedef | ||
|
|
52fc45ae23 | ||
|
|
44f0036ac0 | ||
|
|
1e47521f55 | ||
|
|
d840a67150 | ||
|
|
8a16d5c93c | ||
|
|
b3d4ad1a13 | ||
|
|
2b8a2d8bb6 | ||
|
|
49be337200 | ||
|
|
632e25abe3 | ||
|
|
760d7490a2 | ||
|
|
c0ff849c0f | ||
|
|
730b9ff366 | ||
|
|
71f12bf205 | ||
|
|
8960f57bea | ||
|
|
437b4115e6 | ||
|
|
461db7883f | ||
|
|
f254ecc44a | ||
|
|
6432843fda | ||
|
|
ef198ce07a | ||
|
|
847724c5b3 | ||
|
|
7c173cbfe2 | ||
|
|
93b3e85b8d | ||
|
|
4e83a2d45f | ||
|
|
eb9e9ddd38 | ||
|
|
4fa69cbe13 | ||
|
|
12d79b7309 | ||
|
|
2743a6cf15 | ||
|
|
9528624c0e | ||
|
|
382aebcf16 | ||
|
|
1be9fd04c4 | ||
|
|
407a7c0132 | ||
|
|
8732648fc0 | ||
|
|
a3380a616b | ||
|
|
56487226ef | ||
|
|
cba6efec73 | ||
|
|
7872a4c212 | ||
|
|
64ab220c4d | ||
|
|
f8e9090eb7 | ||
|
|
edef11ce7f | ||
|
|
9ad13bf3e2 | ||
|
|
3f70e24780 | ||
|
|
5522f8580c | ||
|
|
956b54ad27 | ||
|
|
1860fa0eaa | ||
|
|
9e2cc52275 | ||
|
|
3ee277ef70 | ||
|
|
1b5fe21f00 | ||
|
|
dd0b1d4628 | ||
|
|
65da551aad | ||
|
|
9aa6406dae | ||
|
|
d429712c98 | ||
|
|
8c92cbb277 | ||
|
|
40f02988d8 | ||
|
|
9d7519bdc1 | ||
|
|
4fcfdfd4aa | ||
|
|
8e99889174 | ||
|
|
30134520f4 | ||
|
|
0ade104dff | ||
|
|
1709be588f | ||
|
|
bf88f8fdae | ||
|
|
bb309c2579 | ||
|
|
b8bfe2239e | ||
|
|
22324471e7 | ||
|
|
5a638aa11c | ||
|
|
f59bffd063 | ||
|
|
24687756c1 | ||
|
|
b4fadbf84f | ||
|
|
7873110fc5 | ||
|
|
46d957f5b4 | ||
|
|
458856668d | ||
|
|
98bd5ed09c | ||
|
|
8b22b1d733 | ||
|
|
b9727d72d7 | ||
|
|
3e4e6af726 | ||
|
|
4aabbaadaf | ||
|
|
a009f1719a | ||
|
|
cb67b53913 | ||
|
|
d31307f8f7 | ||
|
|
18bdb5d854 | ||
|
|
27e297540e | ||
|
|
88033799a0 | ||
|
|
d9ec9ce772 | ||
|
|
b680bea331 | ||
|
|
9116dc1920 | ||
|
|
088f175fd6 | ||
|
|
8f3d960817 | ||
|
|
33734a27ce | ||
|
|
dbcf980a2a | ||
|
|
e0709fcebb | ||
|
|
b54adc09ad | ||
|
|
33f87aeff1 | ||
|
|
ceb6ba49b2 | ||
|
|
4d0b23cd23 | ||
|
|
9cc38765c3 | ||
|
|
b65f68b677 | ||
|
|
702c1dc4df | ||
|
|
7040f80b7f | ||
|
|
d925388424 | ||
|
|
6c35f4bce0 | ||
|
|
dd7f8bb508 | ||
|
|
0ac0d1d06c | ||
|
|
5ffd536d4c | ||
|
|
2f71a6c6bb | ||
|
|
e8a15ebd37 | ||
|
|
8d88e23ab9 | ||
|
|
b07b17f1c7 | ||
|
|
ea8b9b4d10 | ||
|
|
b3d7b8d2f7 | ||
|
|
cf2f29d91b | ||
|
|
5514cbea79 | ||
|
|
5e9e09a227 | ||
|
|
27659f8098 | ||
|
|
aed4163c51 | ||
|
|
09e3e56245 | ||
|
|
edf2258463 | ||
|
|
0cb20b6384 | ||
|
|
10bc0b5720 | ||
|
|
7704d5ec6f | ||
|
|
b08f087306 | ||
|
|
0484cdd7d6 | ||
|
|
e7deac8a00 | ||
|
|
d0e44a2fc5 | ||
|
|
b7fcc94eb0 | ||
|
|
a11f25e983 | ||
|
|
85fea45def | ||
|
|
6d91ae3845 | ||
|
|
be44fb2aa7 | ||
|
|
fa15b1e94b | ||
|
|
535df2b706 | ||
|
|
5fa4e18eb7 | ||
|
|
581ca8745a | ||
|
|
687ae74a62 | ||
|
|
f3ee3d7dbd | ||
|
|
fb0cee0e74 | ||
|
|
1bd9501e76 | ||
|
|
3fa55b2ff4 | ||
|
|
633a888ae4 | ||
|
|
12125dfbd7 | ||
|
|
06aa032d45 | ||
|
|
46f0af4d48 | ||
|
|
70857ba358 | ||
|
|
5cf0d5faeb | ||
|
|
d6df082d32 | ||
|
|
2cd90ccb17 | ||
|
|
63ea90f537 | ||
|
|
a3fb05b566 | ||
|
|
8fc27d88e0 | ||
|
|
b2bb4d8b62 | ||
|
|
2fd50471de | ||
|
|
ecff38d5bb | ||
|
|
026114457b | ||
|
|
d5659b5131 | ||
|
|
979ec9fe02 | ||
|
|
89a56820d2 | ||
|
|
145f49d247 | ||
|
|
a155399ec0 | ||
|
|
f5424a3ed2 | ||
|
|
35023e648f | ||
|
|
00020ba7dc | ||
|
|
3854587907 | ||
|
|
ba6826a31e | ||
|
|
a154a8705c | ||
|
|
e6dad3eb81 | ||
|
|
b3b7b227a9 | ||
|
|
f4a941e209 | ||
|
|
75f45bdb47 | ||
|
|
8a9edb8963 | ||
|
|
6f78672f82 | ||
|
|
68a2489e13 | ||
|
|
9b18072f1e | ||
|
|
59142d9f69 | ||
|
|
a79e9dd4cb | ||
|
|
6eb5ed9381 | ||
|
|
bfa42dba4a | ||
|
|
54d07e9063 | ||
|
|
e830595f43 | ||
|
|
79632731f8 | ||
|
|
5ed8384d45 | ||
|
|
307407d732 | ||
|
|
a0b885d5ca | ||
|
|
5bf2f2ec43 | ||
|
|
a5f9185308 | ||
|
|
c9535653c9 | ||
|
|
249aa091fd | ||
|
|
569e09e741 | ||
|
|
5a58af7a01 | ||
|
|
9557f1c310 | ||
|
|
ee860e3b71 | ||
|
|
1dc3e15a55 | ||
|
|
d5d6d6668c | ||
|
|
0051fa87ec | ||
|
|
15a987cfd9 | ||
|
|
96bfa330ba | ||
|
|
231fe483d9 | ||
|
|
431074af58 | ||
|
|
06d73959af | ||
|
|
06eebc2ad3 | ||
|
|
42f8d71404 | ||
|
|
9b4621d3b8 | ||
|
|
6b830d7acd | ||
|
|
99fb55051a | ||
|
|
6bd0d6277b | ||
|
|
494b112424 | ||
|
|
b0ba354b31 | ||
|
|
e27c703026 | ||
|
|
822cd9f4ce | ||
|
|
a964c9b7d0 | ||
|
|
7e49a7b82a | ||
|
|
5fe3b2ff00 | ||
|
|
c1b2e0cec6 | ||
|
|
11f2f1eafa | ||
|
|
60d2dfcf1e | ||
|
|
64b2843cf6 | ||
|
|
d716cf9a48 | ||
|
|
01bb4e1b7a | ||
|
|
3572ed1f86 | ||
|
|
66d426a1b6 | ||
|
|
62946906d8 | ||
|
|
20e0eae9bd | ||
|
|
cf4a794c51 | ||
|
|
748c48b43f | ||
|
|
03f2a0a921 | ||
|
|
d2409bf952 | ||
|
|
783de92707 | ||
|
|
5db1c7a813 | ||
|
|
5720f2b893 | ||
|
|
5286f80748 | ||
|
|
8a19bf3f4a | ||
|
|
c2a13fce9c | ||
|
|
b1973f26c9 | ||
|
|
b5265870be | ||
|
|
4584b7eace | ||
|
|
8a0c88b11c | ||
|
|
3281fc9bb0 | ||
|
|
971ae5ec19 | ||
|
|
fb9fec1a10 | ||
|
|
c4c475b51f | ||
|
|
e7ec8aa49f | ||
|
|
1be27549df | ||
|
|
8e979deb99 | ||
|
|
5ba9746264 | ||
|
|
20e4040d02 | ||
|
|
425bee0ba1 | ||
|
|
5fe7186571 | ||
|
|
3382610871 | ||
|
|
0f2bafc7dd | ||
|
|
ea85a85518 | ||
|
|
531035fef2 | ||
|
|
1d39ec3aa5 | ||
|
|
ecb21d2d5e | ||
|
|
a2a5db8901 | ||
|
|
04ade7ab0b | ||
|
|
e579029ded | ||
|
|
be06cec80d | ||
|
|
ba1ef472e6 | ||
|
|
45894857a6 | ||
|
|
4f60465fa0 | ||
|
|
cefd287668 | ||
|
|
009905e405 | ||
|
|
bc38e94f42 | ||
|
|
ff8625fbe7 | ||
|
|
a5440f0443 | ||
|
|
5692ae4902 | ||
|
|
1cf5cbadd0 | ||
|
|
82351243f9 | ||
|
|
d47e687337 | ||
|
|
3700674045 | ||
|
|
b646e78ba6 | ||
|
|
b1cb951a9e | ||
|
|
f30e085d78 | ||
|
|
91c6508317 | ||
|
|
d341f1987a | ||
|
|
34b7e68f04 | ||
|
|
858320fe20 | ||
|
|
4300f0a3c6 | ||
|
|
7c33159a38 | ||
|
|
9583483543 | ||
|
|
ba19bc5ad6 | ||
|
|
a9b63fa360 | ||
|
|
dbe525a724 | ||
|
|
7a1891e5e8 | ||
|
|
c6048c8461 | ||
|
|
1c76edfc01 | ||
|
|
eae2dd483b | ||
|
|
a8d0a376f3 | ||
|
|
be2ff4bee4 | ||
|
|
609cb14cda | ||
|
|
2d57326779 | ||
|
|
2eec0ae6f0 | ||
|
|
99bd6570b9 | ||
|
|
2110692664 | ||
|
|
bc4a5570a5 | ||
|
|
d8f784c3f0 | ||
|
|
7d94ba7817 | ||
|
|
f3e87d3c3c | ||
|
|
f4487947c5 | ||
|
|
72915d84ef | ||
|
|
62eae20cfa | ||
|
|
3e698f96dc | ||
|
|
ea7cb48f1c | ||
|
|
cdaf88ef28 | ||
|
|
822b7211ec | ||
|
|
d7a59221fc | ||
|
|
b8174a85ee | ||
|
|
519242aead | ||
|
|
ff79b73e34 | ||
|
|
c8b49de7d1 | ||
|
|
cd9e05dac1 | ||
|
|
1488453ffa | ||
|
|
c5838ba098 | ||
|
|
b88b60597b | ||
|
|
3ceb2569cf | ||
|
|
556335918b | ||
|
|
7145ad9eec | ||
|
|
57dc2d2b11 | ||
|
|
bf88927e66 | ||
|
|
efd53cbccf | ||
|
|
e0620e1a3e | ||
|
|
622fdc27aa | ||
|
|
7a7d1ed44e | ||
|
|
161bbb4e07 | ||
|
|
035f2b7982 | ||
|
|
4234c4bc3a | ||
|
|
fa9f0ade55 | ||
|
|
0bbb6adaba | ||
|
|
8452959388 | ||
|
|
d1ba4bc875 | ||
|
|
fbd895d67c | ||
|
|
ca2907d6a6 | ||
|
|
6b07d8ee21 | ||
|
|
8d97efd52d | ||
|
|
864b024f31 | ||
|
|
8d6a23d0e7 | ||
|
|
4722a5600f | ||
|
|
aba9c2bc30 | ||
|
|
dea21f6d38 | ||
|
|
3cb1bf6b87 | ||
|
|
dfe66e8083 | ||
|
|
285b66406b | ||
|
|
99d861535e | ||
|
|
ba40783017 | ||
|
|
c871c68aeb | ||
|
|
6e523a30ab | ||
|
|
7739994eda | ||
|
|
5007410c1a | ||
|
|
b4eabd2265 | ||
|
|
40d8ea0268 | ||
|
|
0de4e51c41 | ||
|
|
6c6c18418e | ||
|
|
2f245b0c73 | ||
|
|
1337e88191 | ||
|
|
6ad6483e3a | ||
|
|
afa13473ed | ||
|
|
4e26567bee | ||
|
|
d0ac084cac | ||
|
|
bee6e4d2a9 | ||
|
|
a6c76ae0e4 | ||
|
|
bf0875be45 | ||
|
|
74585ff97d | ||
|
|
81ea7ab872 | ||
|
|
4b6fd69e3c | ||
|
|
bc4266e9ab | ||
|
|
d6147b4292 | ||
|
|
84ef3e6c3d | ||
|
|
b4cde57036 | ||
|
|
4c3551909f | ||
|
|
2075f3c717 | ||
|
|
d08381850d | ||
|
|
af2fd78348 | ||
|
|
60b9069a60 | ||
|
|
472e15ab0a | ||
|
|
bdddb945f0 | ||
|
|
615038ef38 | ||
|
|
ef661e52e7 | ||
|
|
bd52f0b004 | ||
|
|
8ec90d3b40 | ||
|
|
2aee09d441 | ||
|
|
35a6095d30 | ||
|
|
23a251aa77 | ||
|
|
48852f0c3f | ||
|
|
42ffe87bf5 | ||
|
|
2ba61fab9d | ||
|
|
1fc634214f | ||
|
|
cec35683f4 | ||
|
|
d4b2b768d3 | ||
|
|
a71226e995 | ||
|
|
3cec08c734 | ||
|
|
cccc72d0d8 | ||
|
|
bf19f13d4c | ||
|
|
0d7d8ddee2 | ||
|
|
de6a547272 | ||
|
|
2e1c798c6e | ||
|
|
26afd63e39 | ||
|
|
f8ef88362d | ||
|
|
ae445c8ece | ||
|
|
351bc544ee | ||
|
|
5dfe0c237f | ||
|
|
3b628bed45 | ||
|
|
a081b72916 | ||
|
|
44c1e8ce69 | ||
|
|
d52c16fbba | ||
|
|
2351ced921 | ||
|
|
afef8ff4a3 | ||
|
|
f9da801f06 | ||
|
|
0c3e7be420 | ||
|
|
43420f02f2 | ||
|
|
47b1b7f519 | ||
|
|
91d72c0265 | ||
|
|
5a98b9c3fd | ||
|
|
fd3b48ba43 | ||
|
|
e03ee00e61 | ||
|
|
685f38e6a0 | ||
|
|
2641a34a1e | ||
|
|
59bf8d0a45 | ||
|
|
b8f255cc50 | ||
|
|
fae67be8c8 | ||
|
|
230d822fce | ||
|
|
5088362430 | ||
|
|
970d2d1f42 |
18
.github/stale.yml
vendored
Normal file
18
.github/stale.yml
vendored
Normal 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
|
||||
71
.github/workflows/codeql-analysis.yml
vendored
Normal file
71
.github/workflows/codeql-analysis.yml
vendored
Normal file
@@ -0,0 +1,71 @@
|
||||
# For most projects, this workflow file will not need changing; you simply need
|
||||
# to commit it to your repository.
|
||||
#
|
||||
# You may wish to alter this file to override the set of languages analyzed,
|
||||
# or to provide custom queries or build logic.
|
||||
#
|
||||
# ******** NOTE ********
|
||||
# We have attempted to detect the languages in your repository. Please check
|
||||
# the `language` matrix defined below to confirm you have the correct set of
|
||||
# supported CodeQL languages.
|
||||
#
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [ master ]
|
||||
schedule:
|
||||
- cron: '21 12 * * 3'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'javascript' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
|
||||
# Learn more:
|
||||
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v1
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v1
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v1
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -13,6 +13,7 @@ generate_langauges.php
|
||||
dist/
|
||||
docs/
|
||||
public/bower_components
|
||||
npm_modules
|
||||
*.patch
|
||||
patches/
|
||||
translations/
|
||||
@@ -32,6 +33,7 @@ vendor/
|
||||
*.log
|
||||
.env
|
||||
package-lock.json
|
||||
auth.json
|
||||
!/docker/.env
|
||||
/docker/data/database/db/*
|
||||
/docker/data/certbot/conf/*
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
||||
# disable directory browsing
|
||||
# For security reasons, Option all cannot be overridden.
|
||||
Options +ExecCGI +Includes +IncludesNOEXEC +SymLinksIfOwnerMatch -Indexes
|
||||
Options +SymLinksIfOwnerMatch -Indexes
|
||||
|
||||
# prevent folder listing
|
||||
IndexIgnore *
|
||||
|
||||
52
.travis.yml
52
.travis.yml
@@ -1,35 +1,55 @@
|
||||
sudo: required
|
||||
dist: trusty
|
||||
group: deprecated-2017Q4
|
||||
if: tag IS blank
|
||||
|
||||
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 -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
|
||||
- sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
|
||||
- sudo apt-get update
|
||||
- sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
|
||||
- docker --version
|
||||
- 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
|
||||
- echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin
|
||||
- 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
|
||||
- docker run --rm -it -v $(pwd):/app -w /app opensourcepos/node-grunt-bower
|
||||
sh -c "npm install && bower install && grunt package"
|
||||
- /bin/bash docker/install-local.sh
|
||||
- docker build . --target ospos -t ospos
|
||||
- docker-compose -f docker-compose.test.yml up --abort-on-container-exit
|
||||
env:
|
||||
global:
|
||||
- DOCKER_COMPOSE_VERSION=1.29.1
|
||||
- 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"'
|
||||
- date=`date +%Y%m%d%H%M%S` && branch=${TRAVIS_BRANCH} && rev=`git rev-parse --short=6 HEAD`
|
||||
after_success:
|
||||
- docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" && docker tag "ospos:latest"
|
||||
"jekkos/opensourcepos:$TAG" && docker push "jekkos/opensourcepos:$TAG"
|
||||
before_deploy:
|
||||
- version=$(grep application_version application/config/config.php | sed "s/.*=\s'\(.*\)';/\1/g")
|
||||
- TRAVIS_TAG=$(echo $branch.$version)
|
||||
- git tag -f "$branch.$version"
|
||||
- sudo mv dist/opensourcepos.zip "dist/opensourcepos.$branch.$version.zip"
|
||||
deploy:
|
||||
file: deployment.json
|
||||
provider: bintray
|
||||
provider: releases
|
||||
file: "dist/opensourcepos.$branch.$version.zip"
|
||||
name: "OpensourcePos $version"
|
||||
release_notes_file: WHATS_NEW.txt
|
||||
prerelease: true
|
||||
skip_cleanup: true
|
||||
key: ${BINTRAY_API_KEY}
|
||||
|
||||
user: jekkos
|
||||
overwrite: true
|
||||
api_key:
|
||||
secure: Ax25mMRDfHVf/HjRwqxYJe2oMnWC4sc2aKIiUxAOviVJJSCl4GMWhcFlUNnFsDcKIg2ofEGMVD6b9cTBuOwPDvymUDFnLNCCgDWve+vRDdWaTkTipn77Qk4c9UO9VvuzlPSKopChefPHlQ0n1rEmAMiKIXuqjUlNGqybW4FLP4E=
|
||||
on:
|
||||
all_branches: true
|
||||
|
||||
|
||||
30
Dockerfile
30
Dockerfile
@@ -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,14 +6,36 @@ 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
|
||||
RUN echo -e “$(hostname -i)\t$(hostname) $(hostname).localhost” >> /etc/hosts
|
||||
|
||||
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=1" >> /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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
2
FUNDING.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
github: jekkos
|
||||
custom: ["https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MUN6AEG7NY6H8"]
|
||||
134
Gruntfile.js
134
Gruntfile.js
@@ -1,6 +1,6 @@
|
||||
module.exports = function(grunt) {
|
||||
|
||||
grunt.initConfig({
|
||||
grunt.initConfig({
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
wiredep: {
|
||||
task: {
|
||||
@@ -11,7 +11,15 @@ 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',
|
||||
@@ -50,10 +58,55 @@ module.exports = function(grunt) {
|
||||
}
|
||||
}
|
||||
},
|
||||
copy: {
|
||||
themes: {
|
||||
files: [
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'node_modules/bootstrap-5/dist/css',
|
||||
src: ['bootstrap.css', 'bootstrap.min.css'],
|
||||
dest: 'public/dist/bootswatch-5/bootstrap/',
|
||||
filter: 'isFile'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'node_modules/bootswatch-5/dist',
|
||||
src: ['**/bootstrap.css', '**/bootstrap.min.css'],
|
||||
dest: 'public/dist/bootswatch-5/',
|
||||
filter: 'isFile'
|
||||
}
|
||||
],
|
||||
},
|
||||
licenses: {
|
||||
files: [{
|
||||
expand: true,
|
||||
src: 'LICENSE',
|
||||
dest: 'public/license/',
|
||||
filter: 'isFile',},
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'node_modules/bootstrap-5',
|
||||
src: 'LICENSE',
|
||||
dest: 'public/license/',
|
||||
rename: function(dest, src) { return dest + src.replace('LICENSE', 'bootstrap-5.license'); },
|
||||
filter: 'isFile'
|
||||
},
|
||||
{
|
||||
expand: true,
|
||||
cwd: 'node_modules/bootswatch-5',
|
||||
src: 'LICENSE',
|
||||
dest: 'public/license/',
|
||||
rename: function(dest, src) { return dest + src.replace('LICENSE', 'bootswatch-5.license'); },
|
||||
filter: 'isFile'
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
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/login.min.css', '!public/css/invoice_email.css', '!public/css/barcode_font.css', '!public/css/darkly.css'],
|
||||
'public/css/login.min.css': ['public/css/login.css']
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -63,7 +116,7 @@ module.exports = function(grunt) {
|
||||
separator: ';'
|
||||
},
|
||||
files: {
|
||||
'tmp/<%= pkg.name %>.js': ['tmp/opensourcepos_bower.js', 'public/js/jquery*', 'public/js/*.js']
|
||||
'tmp/<%= pkg.name %>.js': ['public/dist/jquery/jquery.js', 'tmp/opensourcepos_bower.js', 'public/js/*.js']
|
||||
}
|
||||
},
|
||||
sql: {
|
||||
@@ -106,7 +159,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/login.min.css', '!public/css/invoice_email.css', '!public/css/barcode_font.css', '!public/css/darkly.css'],
|
||||
dest: 'application/views/partial/header.php',
|
||||
},
|
||||
mincss_header: {
|
||||
@@ -125,9 +178,9 @@ 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'],
|
||||
src: 'public/css/login.min.css',
|
||||
dest: 'application/views/login.php'
|
||||
},
|
||||
js: {
|
||||
@@ -137,7 +190,7 @@ module.exports = function(grunt) {
|
||||
closeTag: '<!-- end js template tags -->',
|
||||
ignorePath: '../../../public/'
|
||||
},
|
||||
src: ['public/js/jquery*', 'public/js/*.js'],
|
||||
src: ['public/dist/bootstrap/js/*.min.js', 'public/js/jquery*', 'public/js/*.js'],
|
||||
dest: 'application/views/partial/header.php'
|
||||
},
|
||||
minjs: {
|
||||
@@ -145,24 +198,12 @@ 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'
|
||||
}
|
||||
},
|
||||
mochaWebdriver: {
|
||||
options: {
|
||||
timeout: 1000 * 60 * 3
|
||||
},
|
||||
test : {
|
||||
options: {
|
||||
usePhantom: true,
|
||||
usePromises: true
|
||||
},
|
||||
src: ['test/**/*.js']
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
files: ['<%= jshint.files %>'],
|
||||
tasks: ['jshint']
|
||||
@@ -214,15 +255,6 @@ module.exports = function(grunt) {
|
||||
}
|
||||
}
|
||||
},
|
||||
apigen: {
|
||||
generate:{
|
||||
options: {
|
||||
apigenPath: 'vendor/bin/',
|
||||
source: 'application',
|
||||
destination: 'docs'
|
||||
}
|
||||
}
|
||||
},
|
||||
compress: {
|
||||
main: {
|
||||
options: {
|
||||
@@ -230,23 +262,41 @@ 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',
|
||||
'!/public/dist/bootswatch-5/',
|
||||
'/public/dist/bootswatch-5/*/*.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-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', 'copy', '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']);
|
||||
|
||||
};
|
||||
|
||||
73
INSTALL.md
73
INSTALL.md
@@ -1,9 +1,9 @@
|
||||
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. However you need to disable `only_full_group_by` option, see issue [#2538](https://github.com/opensourcepos/opensourcepos/issues/2538).
|
||||
* 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).
|
||||
|
||||
@@ -17,7 +17,7 @@ Local install
|
||||
|
||||
First of all, if you're seeing the message **'system folder missing'** after launching your browser, then that means you have cloned the repository and have not built the project properly.
|
||||
|
||||
1. Dowload the latest [stable release](https://github.com/opensourcepos/opensourcepos/releases) from github or [unstable build](https://bintray.com/jekkos/opensourcepos/opensourcepos/view/files?sort=updated&order=asc#files) from bintray. A regular repository clone will not work unless you are brave enough to build the whole project!
|
||||
1. Dowload the latest stable or prerelease for a specific branch [from github](https://github.com/opensourcepos/opensourcepos/releases). A regular repository clone will not work unless you are brave enough to build the whole project!
|
||||
2. Create/locate a new mysql database to install open source point of sale into
|
||||
3. Execute the file database/database.sql to create the tables needed
|
||||
4. unzip and upload Open Source Point of Sale files to web server
|
||||
@@ -38,31 +38,16 @@ From now onwards OSPOS can be deployed using Docker on Linux and Mac, locally or
|
||||
This setup dramatically reduces the number of possible issues as all setup is now done in a Dockerfile.
|
||||
Docker runs natively on Mac and Linux. Please refer to the docker documentation for instructions on how to set it up on your platform.
|
||||
|
||||
Since OSPOS version 3.3.0 the docker installation offers a reverse proxy based on nginx with a (if local) Self signed certificate termination (aka HTTPS connection).
|
||||
Behind the reverse proxy you can access OSPOS using https (port 443) and myPhpAdmin using port 8000.
|
||||
Port 80 (standard http) is not available for OSPOS, it's only available for a cert manager service in case of server installation.
|
||||
***Be aware that this setup is not suited for production usage. Change the default passwords in the compose file before exposing the containers publicly.***
|
||||
|
||||
* To build and run the image, download the latest build from bintray.
|
||||
* Install envsubst from https://github.com/a8m/envsubst on your machine
|
||||
* Issue the following commands in a terminal with docker installed:
|
||||
Start the containers using following command
|
||||
|
||||
```
|
||||
docker/install-local.sh
|
||||
```
|
||||
|
||||
* When required to renew a certificate say (y)es.
|
||||
* When the script has terminated to run, wait about a minute before connecting to https://127.0.0.1.
|
||||
* The web browser will warn you of a self certificate exception, accept and continue
|
||||
* If you do https://127.0.0.1:8000 (port 8000) instead, you would be able to access a phpMyAdmin service connected to OSPOS MariaDB
|
||||
|
||||
* To stop the docker issue the following command:
|
||||
|
||||
```
|
||||
docker/uninstall.sh
|
||||
docker-compose up
|
||||
```
|
||||
|
||||
|
||||
Host install using Docker
|
||||
Nginx install using Docker
|
||||
-------------------------
|
||||
|
||||
Since OSPOS version 3.3.0 the docker installation offers a reverse proxy based on nginx with a Letsencrypt TLS certificate termination (aka HTTPS connection).
|
||||
@@ -76,13 +61,7 @@ The variable STAGING needs to be set to 0 when you are confident your configurat
|
||||
Follow local install steps, but instead of
|
||||
|
||||
```
|
||||
docker/install-local.sh
|
||||
```
|
||||
|
||||
use
|
||||
|
||||
```
|
||||
docker/install-server.sh
|
||||
docker/install-nginx.sh
|
||||
```
|
||||
|
||||
Do not use
|
||||
@@ -98,39 +77,5 @@ 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
|
||||
--------------------
|
||||
|
||||
If you own on a **VPS**, **Dedicated Server**, or **Shared Hosting** running on **cPanel** with **SSH** access:
|
||||
|
||||
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.
|
||||
|
||||
. 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
|
||||
|
||||
chmod +x WS-OSPOS-Installer/Get-POS
|
||||
|
||||
./WS-OSPOS-Installer/Get-POS
|
||||
|
||||
or
|
||||
|
||||
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).
|
||||
|
||||
86
LICENSE
86
LICENSE
@@ -1,49 +1,69 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2012-2014 pappastech
|
||||
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) 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) 2013-2021 jekkos
|
||||
Copyright (c) 2015-2021 FrancescoUK (aka daN4cat)
|
||||
Copyright (c) 2017-2021 Steve Ireland
|
||||
Copyright (c) 2017-2021 objecttothis
|
||||
Copyright (c) 2017-2021 odiea
|
||||
Copyright (c) 2017-2021 WebShells
|
||||
Copyright (c) 2020-2021 Andriux1990
|
||||
Copyright (c) 2019 Loyd Jayme (aka loydjayme25)
|
||||
Copyright (c) 2018 Erasto Marroquin (aka Erastus)
|
||||
Copyright (c) 2018 Nathan Sas (aka nathanzky)
|
||||
Copyright (c) 2018 Emilio Silva (aka emi-silva)
|
||||
Copyright (c) 2017 Jesus Guerrero Botella (aka i92guboj)
|
||||
Copyright (c) 2017 Deep Shah (aka deepshah)
|
||||
Copyright (c) 2017 Joshua Fernandez (aka joshua1234511)
|
||||
Copyright (c) 2017 asadjaved63
|
||||
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) 2016-2017 Ramkrishna Mondal (aka RamkrishnaMondal)
|
||||
Copyright (c) 2016-2017 Jorge Colmenarez (aka jlctmaster), frontuari.com
|
||||
Copyright (c) 2016 Rinaldy@dbarber (aka rnld26)
|
||||
Copyright (c) 2015 Aamir Shahzad (aka asakpke), RoshanTech.com
|
||||
Copyright (c) 2015 Toni Haryanto (aka yllumi)
|
||||
Copyright (c) 2013 Rob Garrison
|
||||
Copyright (c) 2013 Parq
|
||||
Copyright (c) 2013 Ramel
|
||||
Copyright (c) 2012-2014 pappastech
|
||||
Copyright (c) 2012 Alain
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
the Software without restriction, including without limitation the rights to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
subject to the following conditions:
|
||||
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 the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
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.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
|
||||
OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
37
README.md
37
README.md
@@ -1,9 +1,7 @@
|
||||
[ ](https://bintray.com/jekkos/opensourcepos/opensourcepos/3.3.0/link)
|
||||
[](https://travis-ci.org/opensourcepos/opensourcepos)
|
||||
[](https://travis-ci.org/opensourcepos/opensourcepos)
|
||||
[](https://gitter.im/opensourcepos?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://david-dm.org/jekkos/opensourcepos#info=dev)
|
||||
[](https://badge.fury.io/gh/jekkos%2Fopensourcepos)
|
||||
[](http://weblate.jpeelaer.net/engage/ospos/?utm_source=widget)
|
||||
[](http://translate.opensourcepos.org/engage/opensourcepos/?utm_source=widget)
|
||||
|
||||
|
||||
Introduction
|
||||
@@ -36,13 +34,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 +46,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 [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 +96,7 @@ If you like the project, and you are making money out of it in some form, then c
|
||||
|
||||
[](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 +123,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)
|
||||
@@ -138,7 +139,7 @@ If missing information is not provided within a week we will close your issue.
|
||||
FAQ
|
||||
---
|
||||
|
||||
* If you are seeing the message **system folder missing**, then you have cloned the source using git and you need to run a build *first*. Check [INSTALL.md](https://github.com/opensourcepos/opensourcepos/blob/master/INSTALL.md) for instructions or download latest zip file from [bintray](https://bintray.com/jekkos/opensourcepos/opensourcepos/view/files?sort=updated&order=desc#files) instead.
|
||||
* If you are seeing the message **system folder missing**, then you have cloned the source using git and you need to run a build *first*. Check [INSTALL.md](https://github.com/opensourcepos/opensourcepos/blob/master/INSTALL.md) for instructions or download latest zip file from [PLACEHOLDER](https://NEWURL) instead.
|
||||
|
||||
* If at login time you read "The installation is not correct, check your php.ini file.", please check the error_log in public folder to understand what's wrong and make sure you read the [INSTALL.md](https://github.com/opensourcepos/opensourcepos/blob/master/INSTALL.md). To know how to enable error_log, please read the comment in [issue 1770](https://github.com/opensourcepos/opensourcepos/issues/1770#issuecomment-355177943).
|
||||
|
||||
@@ -146,13 +147,15 @@ 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).
|
||||
|
||||
* If you see the item edit dialog box empty starting with version 3.3.0, please disable `only_full_group_by` option from MySQL/MariaDB. See issue [#2538](https://github.com/opensourcepos/opensourcepos/issues/2538).
|
||||
* 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
|
||||
-------
|
||||
|
||||
27
SECURITY.md
Normal file
27
SECURITY.md
Normal file
@@ -0,0 +1,27 @@
|
||||
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
|
||||
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
|
||||
|
||||
|
||||
- [Security Policy](#security-policy)
|
||||
- [Supported Versions](#supported-versions)
|
||||
- [Reporting a Vulnerability](#reporting-a-vulnerability)
|
||||
|
||||
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
|
||||
|
||||
# Security Policy
|
||||
|
||||
## Supported Versions
|
||||
|
||||
We release patches for security vulnerabilities. Which versions are eligible
|
||||
receiving such patches depend on the CVSS v3.0 Rating:
|
||||
|
||||
| CVSS v3.0 | Supported Versions |
|
||||
| --------- | -------------------------------------------------- |
|
||||
| 7.3 | 3.5.5 |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
Please report (suspected) security vulnerabilities to
|
||||
**[jekkos](mailto:jekkos@opensourcepos.org)**. You will receive a response from
|
||||
us within 48 hours. If the issue is confirmed, we will release a patch as soon
|
||||
as possible depending on complexity but historically within a few days.
|
||||
@@ -1,3 +1,49 @@
|
||||
Version 3.3.5
|
||||
-------------
|
||||
+ Translation updates (Romanian, Ukranian, Vietnamese, Thai, Polish, Swedish, Portugese, Arabic, French, Chinese, Dutch, Tamil, Turkish, Spanish)
|
||||
+ New login page restyle
|
||||
+ Partial BS5 upgrade
|
||||
+ Username verification fix on employee insert/update
|
||||
+ Minor report fixes
|
||||
+ Attribute encoding fix
|
||||
+ Grunt/CI updates
|
||||
+ Database and performance optimizations
|
||||
+ CSV item import improvements
|
||||
+ Fix decimal render
|
||||
+ Translation fallback in other languages than english
|
||||
+ Fixes for docker to make it run on Windows
|
||||
|
||||
Version 3.3.4
|
||||
-------------
|
||||
+ Translation updates (Hungarian, Indonesian, Bosnian, Ukranian, Vietnamese, Spanish)
|
||||
+ Prevent data wipeout when calling GET directly on save endpoint
|
||||
+ Cleanup .htaccess
|
||||
+ Docker compose usability improvements
|
||||
+ Cookie secure flag fix for Chrome (you can enable csrf protection again now)
|
||||
+ Use longblob for session storage. This should fix issues preventing a user from adding a large number of items to register
|
||||
+ Cashrounding bugfixes
|
||||
+ Fix daily overview cash sale totals
|
||||
+ Show sale count in transaction report
|
||||
+ Button disable to prevent double submission
|
||||
+ Add barcode field to item kits
|
||||
+ Fix discount register parsing in some specific locales
|
||||
|
||||
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)
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
|
||||
|
|
||||
*/
|
||||
$config['application_version'] = '3.3.1';
|
||||
$config['application_version'] = '3.3.5';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -65,8 +65,9 @@ $config['db_log_enabled'] = FALSE;
|
||||
| a PHP script and you can easily do that on your own.
|
||||
|
|
||||
*/
|
||||
$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['https_on'] = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_ENV['FORCE_HTTPS']) && $_ENV['FORCE_HTTPS'] == 'true');
|
||||
$config['base_url'] = $config['https_on'] ? 'https' : 'http';
|
||||
$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 +438,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'] = $config['https_on'];
|
||||
$config['cookie_httponly'] = TRUE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -83,3 +83,75 @@ 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('NEW_ITEM', -1);
|
||||
|
||||
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);
|
||||
|
||||
define('PRICE_MODE_STANDARD', 0);
|
||||
define('PRICE_MODE_KIT', 1);
|
||||
|
||||
define('PAYMENT_TYPE_UNASSIGNED', '--');
|
||||
|
||||
define('CASH_ADJUSTMENT_TRUE', 1);
|
||||
define('CASH_ADJUSTMENT_FALSE', 0);
|
||||
define('CASH_MODE_TRUE', 1);
|
||||
define('CASH_MODE_FALSE', 0);
|
||||
|
||||
10
application/config/email.php
Normal file
10
application/config/email.php
Normal 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;
|
||||
|
||||
@@ -26,8 +26,16 @@ $hook['post_controller'] = array(
|
||||
'filepath' => 'hooks'
|
||||
);
|
||||
|
||||
$hook['pre_controller'][] = array(
|
||||
'class' => '',
|
||||
'function' => 'validate_save',
|
||||
'filename' => 'save_hook.php',
|
||||
'filepath' => 'hooks'
|
||||
);
|
||||
|
||||
|
||||
$hook['pre_system'] = function() {
|
||||
$config_path = APPPATH . 'config/';
|
||||
$config_path = APPPATH . (ENVIRONMENT == 'testing') ? 'tests/' : 'config/';
|
||||
try {
|
||||
$dotenv = new Dotenv\Dotenv($config_path);
|
||||
$dotenv->overload();
|
||||
|
||||
@@ -69,7 +69,7 @@ $config['migration_auto_latest'] = FALSE;
|
||||
| be upgraded / downgraded to.
|
||||
|
|
||||
*/
|
||||
$config['migration_version'] = 20171126100000;
|
||||
$config['migration_version'] = 20180225100000;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
require_once("Secure_Controller.php");
|
||||
require_once('Secure_Controller.php');
|
||||
|
||||
class Attributes extends Secure_Controller
|
||||
{
|
||||
@@ -16,24 +16,24 @@ 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');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? definition.definition_name : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$attributes = $this->Attribute->search($search, $limit, $offset, $sort, $order);
|
||||
$total_rows = $this->Attribute->get_found_rows($search);
|
||||
|
||||
$data_rows = array();
|
||||
$data_rows = [];
|
||||
foreach($attributes->result() as $attribute)
|
||||
{
|
||||
$attribute->definition_flags = $this->_get_attributes($attribute->definition_flags);
|
||||
$attribute->definition_flags = $this->get_attributes($attribute->definition_flags);
|
||||
$data_rows[] = get_attribute_definition_data_row($attribute, $this);
|
||||
}
|
||||
|
||||
@@ -42,33 +42,40 @@ class Attributes extends Secure_Controller
|
||||
echo json_encode(array('total' => $total_rows, 'rows' => $data_rows));
|
||||
}
|
||||
|
||||
public function save_attribute_value($attribute_value)
|
||||
public function save_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(
|
||||
$this->input->post('attribute_value'),
|
||||
$this->input->post('definition_id'),
|
||||
$this->input->post('item_id'),
|
||||
$this->input->post('attribute_id')
|
||||
);
|
||||
|
||||
echo json_encode(array('success' => $success != 0));
|
||||
}
|
||||
|
||||
public function delete_attribute_value($attribute_value)
|
||||
public function delete_attribute_value()
|
||||
{
|
||||
$success = $this->Attribute->delete_value($attribute_value, $this->input->post('definition_id'));
|
||||
$success = $this->Attribute->delete_value(
|
||||
$this->input->post('attribute_value'),
|
||||
$this->input->post('definition_id')
|
||||
);
|
||||
|
||||
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');
|
||||
$flags = (empty($this->input->post('definition_flags'))) ? [] : $this->input->post('definition_flags');
|
||||
|
||||
foreach($flags as $flag)
|
||||
{
|
||||
$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 +92,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 +103,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));
|
||||
}
|
||||
@@ -120,15 +129,15 @@ class Attributes extends Secure_Controller
|
||||
public function get_row($row_id)
|
||||
{
|
||||
$attribute_definition_info = $this->Attribute->get_info($row_id);
|
||||
$attribute_definition_info->definition_flags = $this->_get_attributes($attribute_definition_info->definition_flags);
|
||||
$attribute_definition_info->definition_flags = $this->get_attributes($attribute_definition_info->definition_flags);
|
||||
$data_row = $this->xss_clean(get_attribute_definition_data_row($attribute_definition_info));
|
||||
|
||||
echo json_encode($data_row);
|
||||
}
|
||||
|
||||
private function _get_attributes($definition_flags = 0)
|
||||
private function get_attributes($definition_flags = 0)
|
||||
{
|
||||
$definition_flag_names = array();
|
||||
$definition_flag_names = [];
|
||||
foreach (Attribute::get_definition_flags() as $id => $term)
|
||||
{
|
||||
if ($id & $definition_flags)
|
||||
@@ -139,7 +148,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)
|
||||
@@ -154,11 +163,11 @@ class Attributes extends Secure_Controller
|
||||
$data['definition_info'] = $info;
|
||||
|
||||
$show_all = Attribute::SHOW_IN_ITEMS | Attribute::SHOW_IN_RECEIVINGS | Attribute::SHOW_IN_SALES;
|
||||
$data['definition_flags'] = $this->_get_attributes($show_all);
|
||||
$data['definition_flags'] = $this->get_attributes($show_all);
|
||||
$selected_flags = $info->definition_flags === '' ? $show_all : $info->definition_flags;
|
||||
$data['selected_definition_flags'] = $this->_get_attributes($selected_flags);
|
||||
$data['selected_definition_flags'] = $this->get_attributes($selected_flags);
|
||||
|
||||
$this->load->view("attributes/form", $data);
|
||||
$this->load->view('attributes/form', $data);
|
||||
}
|
||||
|
||||
public function delete_value($attribute_id)
|
||||
@@ -180,5 +189,4 @@ class Attributes extends Secure_Controller
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('attributes_definition_cannot_be_deleted')));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -25,7 +25,7 @@ class Cashups extends Secure_Controller
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? 'cashup_id' : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
$filters = array(
|
||||
'start_date' => $this->input->get('start_date'),
|
||||
|
||||
@@ -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,41 +158,41 @@ 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')
|
||||
{
|
||||
$file = $this->xss_clean($dirinfo->getFileName());
|
||||
$themes[$file] = $file;
|
||||
$themes[$file] = ucfirst($file);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
asort($themes);
|
||||
|
||||
|
||||
return $themes;
|
||||
}
|
||||
|
||||
|
||||
public function index()
|
||||
{
|
||||
$data['stock_locations'] = $this->Stock_location->get_all()->result_array();
|
||||
@@ -210,15 +209,24 @@ class Config extends Secure_Controller
|
||||
$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'));
|
||||
@@ -229,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'),
|
||||
@@ -250,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
|
||||
@@ -259,22 +267,23 @@ 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(
|
||||
'theme' => $this->input->post('theme'),
|
||||
'login_form' => $this->input->post('login_form'),
|
||||
'default_sales_discount_type' => $this->input->post('default_sales_discount_type') != NULL,
|
||||
'default_sales_discount' => $this->input->post('default_sales_discount'),
|
||||
'default_receivings_discount_type' => $this->input->post('default_receivings_discount_type') != NULL,
|
||||
@@ -284,6 +293,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'),
|
||||
@@ -293,14 +306,30 @@ 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')
|
||||
@@ -365,25 +394,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'),
|
||||
@@ -394,50 +423,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']))
|
||||
@@ -449,10 +478,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
|
||||
*/
|
||||
@@ -461,75 +490,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();
|
||||
@@ -540,32 +569,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))
|
||||
@@ -573,25 +603,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();
|
||||
@@ -601,6 +631,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))
|
||||
@@ -609,10 +640,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))
|
||||
@@ -621,25 +652,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,
|
||||
@@ -648,29 +679,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();
|
||||
@@ -689,7 +720,7 @@ class Config extends Secure_Controller
|
||||
$array_save[$customer_reward_id]['points_percent'] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(!empty($array_save))
|
||||
{
|
||||
foreach($array_save as $key => $value)
|
||||
@@ -699,10 +730,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))
|
||||
@@ -711,17 +742,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(
|
||||
@@ -741,16 +772,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 (
|
||||
@@ -776,18 +807,17 @@ class Config extends Secure_Controller
|
||||
|
||||
$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'),
|
||||
@@ -802,10 +832,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)
|
||||
@@ -819,24 +849,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',
|
||||
@@ -846,71 +876,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');
|
||||
@@ -918,7 +949,7 @@ class Config extends Secure_Controller
|
||||
{
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
|
||||
force_download($file_name, $backup);
|
||||
}
|
||||
else
|
||||
@@ -927,4 +958,4 @@ class Config extends Secure_Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -58,7 +58,7 @@ class Customers extends Persons
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? LAST_NAME : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$customers = $this->Customer->search($search, $limit, $offset, $sort, $order);
|
||||
|
||||
@@ -17,7 +17,7 @@ class Employees extends Persons
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? LAST_NAME : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$employees = $this->Employee->search($search, $limit, $offset, $sort, $order);
|
||||
@@ -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')));
|
||||
@@ -53,6 +60,7 @@ class Employees extends Persons
|
||||
$person_info->$property = $this->xss_clean($value);
|
||||
}
|
||||
$data['person_info'] = $person_info;
|
||||
$data['employee_id'] = $employee_id;
|
||||
|
||||
$modules = array();
|
||||
foreach($this->Module->get_all_modules()->result() as $module)
|
||||
@@ -183,5 +191,11 @@ class Employees extends Persons
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('employees_cannot_be_deleted')));
|
||||
}
|
||||
}
|
||||
|
||||
public function check_username($employee_id)
|
||||
{
|
||||
$exists = $this->Employee->username_exists($employee_id, $this->input->get('username'));
|
||||
echo !$exists ? 'true' : 'false';
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -30,7 +30,7 @@ class Expenses extends Secure_Controller
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? 'expense_id' : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
$filters = array(
|
||||
'start_date' => $this->input->get('start_date'),
|
||||
|
||||
@@ -24,7 +24,7 @@ class Expenses_categories extends Secure_Controller
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? 'category_name' : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$expense_categories = $this->Expense_category->search($search, $limit, $offset, $sort, $order);
|
||||
|
||||
@@ -24,7 +24,7 @@ class Giftcards extends Secure_Controller
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? 'giftcard_number' : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$giftcards = $this->Giftcard->search($search, $limit, $offset, $sort, $order);
|
||||
|
||||
@@ -59,7 +59,7 @@ class Item_kits extends Secure_Controller
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? NAME : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$item_kits = $this->Item_kit->search($search, $limit, $offset, $sort, $order);
|
||||
@@ -100,6 +100,7 @@ class Item_kits extends Secure_Controller
|
||||
$info->price_option = '0';
|
||||
$info->print_option = PRINT_ALL;
|
||||
$info->kit_item_id = 0;
|
||||
$info->item_number = '';
|
||||
}
|
||||
foreach(get_object_vars($info) as $property => $value)
|
||||
{
|
||||
@@ -131,6 +132,7 @@ class Item_kits extends Secure_Controller
|
||||
{
|
||||
$item_kit_data = array(
|
||||
'name' => $this->input->post('name'),
|
||||
'item_kit_number' => $this->input->post('item_kit_number'),
|
||||
'item_id' => $this->input->post('kit_item_id'),
|
||||
'kit_discount' => $this->input->post('kit_discount'),
|
||||
'kit_discount_type' => $this->input->post('kit_discount_type') == NULL ? PERCENT : $this->input->post('kit_discount_type'),
|
||||
@@ -141,7 +143,6 @@ class Item_kits extends Secure_Controller
|
||||
|
||||
if($this->Item_kit->save($item_kit_data, $item_kit_id))
|
||||
{
|
||||
$success = TRUE;
|
||||
$new_item = FALSE;
|
||||
//New item kit
|
||||
if($item_kit_id == -1)
|
||||
@@ -205,6 +206,12 @@ class Item_kits extends Secure_Controller
|
||||
'message' => $this->lang->line('item_kits_cannot_be_deleted')));
|
||||
}
|
||||
}
|
||||
|
||||
public function check_item_number()
|
||||
{
|
||||
$exists = $this->Item_kit->item_number_exists($this->input->post('item_kit_number'), $this->input->post('item_kit_id'));
|
||||
echo !$exists ? 'true' : 'false';
|
||||
}
|
||||
|
||||
public function generate_barcodes($item_kit_ids)
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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,10 +124,10 @@ 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'));
|
||||
$discount = parse_decimals($this->input->post('discount'));
|
||||
$discount_type = parse_decimals($this->input->post('discount_type'));
|
||||
$item_location = $this->input->post('location');
|
||||
$quantity = parse_quantity($this->input->post('quantity'));
|
||||
$discount_type = $this->input->post('discount_type');
|
||||
$discount = $discount_type ? parse_quantity($this->input->post('discount')) : parse_decimals($this->input->post('discount'));
|
||||
|
||||
$receiving_quantity = $this->input->post('receiving_quantity');
|
||||
|
||||
if($this->form_validation->run() != FALSE)
|
||||
@@ -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));
|
||||
|
||||
@@ -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,8 @@ class Reports extends Secure_Controller
|
||||
{
|
||||
$tabular_data[] = $this->xss_clean(array(
|
||||
'item_name' => $row['name'],
|
||||
'category' => $row['category'],
|
||||
'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 +268,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 +423,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 +440,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']),
|
||||
@@ -866,8 +871,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 +977,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 +985,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 +1089,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 +1097,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 +1198,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 +1206,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 +1274,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 +1419,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 +1428,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]))
|
||||
|
||||
@@ -2,20 +2,17 @@
|
||||
|
||||
require_once("Secure_Controller.php");
|
||||
|
||||
define('PRICE_MODE_STANDARD', 0);
|
||||
define('PRICE_MODE_KIT', 1);
|
||||
define('PAYMENT_TYPE_UNASSIGNED', '--');
|
||||
|
||||
class Sales extends Secure_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
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 +33,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);
|
||||
}
|
||||
@@ -66,10 +54,10 @@ class Sales extends Secure_Controller
|
||||
public function search()
|
||||
{
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$order = $this->input->get('order');
|
||||
$sort = $this->input->post('sort') === NULL ? 'sales.sale_time' : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$filters = array('sale_type' => 'all',
|
||||
'location_id' => 'all',
|
||||
@@ -78,6 +66,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));
|
||||
|
||||
@@ -88,7 +77,7 @@ class Sales extends Secure_Controller
|
||||
$sales = $this->Sale->search($search, $filters, $limit, $offset, $sort, $order);
|
||||
$total_rows = $this->Sale->get_found_rows($search, $filters);
|
||||
$payments = $this->Sale->get_payments_summary($search, $filters);
|
||||
$payment_summary = $this->xss_clean(get_sales_manage_payments_summary($payments, $sales));
|
||||
$payment_summary = $this->xss_clean(get_sales_manage_payments_summary($payments));
|
||||
|
||||
$data_rows = array();
|
||||
foreach($sales->result() as $sale)
|
||||
@@ -200,6 +189,8 @@ class Sales extends Secure_Controller
|
||||
$this->sale_lib->set_sale_location($stock_location);
|
||||
}
|
||||
|
||||
$this->sale_lib->empty_payments();
|
||||
|
||||
$this->_reload();
|
||||
}
|
||||
|
||||
@@ -241,11 +232,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'));
|
||||
@@ -273,7 +259,7 @@ class Sales extends Secure_Controller
|
||||
$data = array();
|
||||
|
||||
$payment_type = $this->input->post('payment_type');
|
||||
if($payment_type != $this->lang->line('sales_giftcard'))
|
||||
if($payment_type !== $this->lang->line('sales_giftcard'))
|
||||
{
|
||||
$this->form_validation->set_rules('amount_tendered', 'lang:sales_amount_tendered', 'trim|required|callback_numeric');
|
||||
}
|
||||
@@ -284,7 +270,7 @@ class Sales extends Secure_Controller
|
||||
|
||||
if($this->form_validation->run() == FALSE)
|
||||
{
|
||||
if($payment_type == $this->lang->line('sales_giftcard'))
|
||||
if($payment_type === $this->lang->line('sales_giftcard'))
|
||||
{
|
||||
$data['error'] = $this->lang->line('sales_must_enter_numeric_giftcard');
|
||||
}
|
||||
@@ -295,7 +281,7 @@ class Sales extends Secure_Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
if($payment_type == $this->lang->line('sales_giftcard'))
|
||||
if($payment_type === $this->lang->line('sales_giftcard'))
|
||||
{
|
||||
// in case of giftcard payment the register input amount_tendered becomes the giftcard number
|
||||
$giftcard_num = $this->input->post('amount_tendered');
|
||||
@@ -326,7 +312,7 @@ class Sales extends Secure_Controller
|
||||
$this->sale_lib->add_payment($payment_type, $amount_tendered);
|
||||
}
|
||||
}
|
||||
elseif($payment_type == $this->lang->line('sales_rewards'))
|
||||
elseif($payment_type === $this->lang->line('sales_rewards'))
|
||||
{
|
||||
$customer_id = $this->sale_lib->get_customer();
|
||||
$package_id = $this->Customer->get_info($customer_id)->package_id;
|
||||
@@ -358,6 +344,20 @@ class Sales extends Secure_Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
elseif($payment_type === $this->lang->line('sales_cash'))
|
||||
{
|
||||
$amount_due = $this->sale_lib->get_total();
|
||||
$sales_total = $this->sale_lib->get_total(FALSE);
|
||||
|
||||
$amount_tendered = $this->input->post('amount_tendered');
|
||||
$this->sale_lib->add_payment($payment_type, $amount_tendered);
|
||||
$cash_adjustment_amount = $amount_due - $sales_total;
|
||||
if($cash_adjustment_amount <> 0)
|
||||
{
|
||||
$this->session->set_userdata('cash_mode', CASH_MODE_TRUE);
|
||||
$this->sale_lib->add_payment($this->lang->line('sales_cash_adjustment'), $cash_adjustment_amount, CASH_ADJUSTMENT_TRUE);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$amount_tendered = $this->input->post('amount_tendered');
|
||||
@@ -398,7 +398,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();
|
||||
@@ -411,24 +411,31 @@ class Sales extends Secure_Controller
|
||||
{
|
||||
// Add kit item to order if one is assigned
|
||||
$pieces = explode(' ', $item_id_or_number_or_item_kit_or_receipt);
|
||||
$item_kit_id = $pieces[1];
|
||||
|
||||
$item_kit_id = (count($pieces) > 1) ? $pieces[1] : $item_id_or_number_or_item_kit_or_receipt;
|
||||
$item_kit_info = $this->Item_kit->get_info($item_kit_id);
|
||||
$kit_item_id = $item_kit_info->kit_item_id;
|
||||
$kit_price_option = $item_kit_info->price_option;
|
||||
$kit_print_option = $item_kit_info->print_option; // 0-all, 1-priced, 2-kit-only
|
||||
|
||||
if($item_kit_info->kit_discount != 0 && $item_kit_info->kit_discount > $discount)
|
||||
if($discount_type == $item_kit_info->kit_discount_type)
|
||||
{
|
||||
if($item_kit_info->kit_discount > $discount)
|
||||
{
|
||||
$discount = $item_kit_info->kit_discount;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$discount = $item_kit_info->kit_discount;
|
||||
$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_KIT, $kit_price_option, $kit_print_option, $price))
|
||||
{
|
||||
$data['error'] = $this->lang->line('sales_unable_to_add_item');
|
||||
}
|
||||
@@ -451,7 +458,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 +467,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,9 +482,9 @@ 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'));
|
||||
$discount = parse_decimals($this->input->post('discount'));
|
||||
$quantity = parse_quantity($this->input->post('quantity'));
|
||||
$discount_type = $this->input->post('discount_type');
|
||||
$discount = $discount_type ? parse_quantity($this->input->post('discount')) : parse_decimals($this->input->post('discount'));
|
||||
|
||||
$item_location = $this->input->post('location');
|
||||
$discounted_total = $this->input->post('discounted_total') != '' ? $this->input->post('discounted_total') : NULL;
|
||||
@@ -484,6 +492,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 +509,8 @@ class Sales extends Secure_Controller
|
||||
{
|
||||
$this->sale_lib->delete_item($item_number);
|
||||
|
||||
$this->sale_lib->empty_payments();
|
||||
|
||||
$this->_reload();
|
||||
}
|
||||
|
||||
@@ -553,7 +565,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();
|
||||
@@ -578,22 +589,22 @@ class Sales extends Secure_Controller
|
||||
$data['payments_total'] = $totals['payment_total'];
|
||||
$data['payments_cover_total'] = $totals['payments_cover_total'];
|
||||
$data['cash_rounding'] = $this->session->userdata('cash_rounding');
|
||||
$data['cash_mode'] = $this->session->userdata('cash_mode');
|
||||
$data['prediscount_subtotal'] = $totals['prediscount_subtotal'];
|
||||
$data['cash_total'] = $totals['cash_total'];
|
||||
$data['non_cash_total'] = $totals['total'];
|
||||
$data['cash_amount_due'] = $totals['cash_amount_due'];
|
||||
$data['non_cash_amount_due'] = $totals['amount_due'];
|
||||
|
||||
if($data['cash_rounding'])
|
||||
if($data['cash_mode'])
|
||||
{
|
||||
$data['total'] = $totals['cash_total'];
|
||||
$data['amount_due'] = $totals['cash_amount_due'];
|
||||
}
|
||||
else
|
||||
{
|
||||
$data['total'] = $totals['total'];
|
||||
$data['amount_due'] = $totals['amount_due'];
|
||||
}
|
||||
|
||||
$data['amount_change'] = $data['amount_due'] * -1;
|
||||
|
||||
if($data['amount_change'] > 0)
|
||||
@@ -613,56 +624,21 @@ class Sales extends Secure_Controller
|
||||
|
||||
$data['print_price_info'] = TRUE;
|
||||
|
||||
$override_invoice_number = NULL;
|
||||
if($this->sale_lib->is_invoice_mode())
|
||||
{
|
||||
$invoice_format = $this->config->item('sales_invoice_format');
|
||||
|
||||
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)
|
||||
{
|
||||
// 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,9 +802,11 @@ 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);
|
||||
|
||||
// load pdf helper
|
||||
$this->load->helper(array('dompdf', 'file'));
|
||||
$filename = sys_get_temp_dir() . '/' . $this->lang->line("sales_" . $type) . '-' . str_replace('/', '-', $number) . '.pdf';
|
||||
@@ -945,7 +923,9 @@ class Sales extends Secure_Controller
|
||||
private function _load_sale_data($sale_id)
|
||||
{
|
||||
$this->sale_lib->clear_all();
|
||||
$this->sale_lib->reset_cash_flags();
|
||||
$cash_rounding = $this->sale_lib->reset_cash_rounding();
|
||||
$data['cash_rounding'] = $cash_rounding;
|
||||
|
||||
$sale_info = $this->Sale->get_info($sale_id)->row_array();
|
||||
$this->sale_lib->copy_entire_sale($sale_id);
|
||||
$data = array();
|
||||
@@ -953,7 +933,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']));
|
||||
@@ -964,18 +944,18 @@ class Sales extends Secure_Controller
|
||||
|
||||
// Returns 'subtotal', 'total', 'cash_total', 'payment_total', 'amount_due', 'cash_amount_due', 'payments_cover_total'
|
||||
$totals = $this->sale_lib->get_totals($tax_details[0]);
|
||||
$this->session->set_userdata('cash_adjustment_amount', $totals['cash_adjustment_amount']);
|
||||
$data['subtotal'] = $totals['subtotal'];
|
||||
$data['total'] = $totals['total'];
|
||||
$data['payments_total'] = $totals['payment_total'];
|
||||
$data['payments_cover_total'] = $totals['payments_cover_total'];
|
||||
$data['cash_rounding'] = $this->session->userdata('cash_rounding');
|
||||
$data['cash_mode'] = $this->session->userdata('cash_mode');
|
||||
$data['prediscount_subtotal'] = $totals['prediscount_subtotal'];
|
||||
$data['cash_total'] = $totals['cash_total'];
|
||||
$data['non_cash_total'] = $totals['total'];
|
||||
$data['cash_amount_due'] = $totals['cash_amount_due'];
|
||||
$data['non_cash_amount_due'] = $totals['amount_due'];
|
||||
|
||||
if($this->session->userdata('cash_rounding'))
|
||||
if($data['cash_mode'] && ($data['selected_payment_type'] === $this->lang->line('sales_cash') || $data['payments_total'] > 0))
|
||||
{
|
||||
$data['total'] = $totals['cash_total'];
|
||||
$data['amount_due'] = $totals['cash_amount_due'];
|
||||
@@ -985,6 +965,7 @@ class Sales extends Secure_Controller
|
||||
$data['total'] = $totals['total'];
|
||||
$data['amount_due'] = $totals['amount_due'];
|
||||
}
|
||||
|
||||
$data['amount_change'] = $data['amount_due'] * -1;
|
||||
|
||||
$employee_info = $this->Employee->get_info($this->sale_lib->get_employee());
|
||||
@@ -1042,8 +1023,8 @@ class Sales extends Secure_Controller
|
||||
}
|
||||
|
||||
$invoice_type = $this->config->item('invoice_type');
|
||||
|
||||
$data['invoice_view'] = $invoice_type;
|
||||
|
||||
return $this->xss_clean($data);
|
||||
}
|
||||
|
||||
@@ -1055,6 +1036,11 @@ class Sales extends Secure_Controller
|
||||
$sale_id = -1;
|
||||
$this->session->set_userdata('sale_id', -1);
|
||||
}
|
||||
$cash_rounding = $this->sale_lib->reset_cash_rounding();
|
||||
|
||||
// cash_rounding indicates only that the site is configured for cash rounding
|
||||
$data['cash_rounding'] = $cash_rounding;
|
||||
|
||||
$data['cart'] = $this->sale_lib->get_cart();
|
||||
$customer_info = $this->_load_customer_data($this->sale_lib->get_customer(), $data, TRUE);
|
||||
|
||||
@@ -1069,25 +1055,29 @@ 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'];
|
||||
$data['total_units'] = $totals['total_units'];
|
||||
$data['subtotal'] = $totals['subtotal'];
|
||||
$data['total'] = $totals['total'];
|
||||
$data['payments_total'] = $totals['payment_total'];
|
||||
$data['payments_cover_total'] = $totals['payments_cover_total'];
|
||||
$data['cash_rounding'] = $this->session->userdata('cash_rounding');
|
||||
|
||||
// cash_mode indicates whether this sale is going to be processed using cash_rounding
|
||||
$cash_mode = $this->session->userdata('cash_mode');
|
||||
$data['cash_mode'] = $cash_mode;
|
||||
$data['prediscount_subtotal'] = $totals['prediscount_subtotal'];
|
||||
$data['cash_total'] = $totals['cash_total'];
|
||||
$data['non_cash_total'] = $totals['total'];
|
||||
$data['cash_amount_due'] = $totals['cash_amount_due'];
|
||||
$data['non_cash_amount_due'] = $totals['amount_due'];
|
||||
|
||||
if($data['cash_rounding'])
|
||||
$data['selected_payment_type'] = $this->sale_lib->get_payment_type();
|
||||
|
||||
if($data['cash_mode'] && ($data['selected_payment_type'] == $this->lang->line('sales_cash') || $data['payments_total'] > 0))
|
||||
{
|
||||
$data['total'] = $totals['cash_total'];
|
||||
$data['amount_due'] = $totals['cash_amount_due'];
|
||||
@@ -1097,11 +1087,12 @@ class Sales extends Secure_Controller
|
||||
$data['total'] = $totals['total'];
|
||||
$data['amount_due'] = $totals['amount_due'];
|
||||
}
|
||||
|
||||
$data['amount_change'] = $data['amount_due'] * -1;
|
||||
|
||||
$data['comment'] = $this->sale_lib->get_comment();
|
||||
$data['email_receipt'] = $this->sale_lib->is_email_receipt();
|
||||
$data['selected_payment_type'] = $this->sale_lib->get_payment_type();
|
||||
|
||||
if($customer_info && $this->config->item('customer_reward_enable') == TRUE)
|
||||
{
|
||||
$data['payment_options'] = $this->Sale->get_payment_options(TRUE, TRUE);
|
||||
@@ -1112,14 +1103,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,23 +1172,15 @@ 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)
|
||||
$balance_due = round($sale_info['amount_due'] - $sale_info['amount_tendered'] + $sale_info['cash_refund'], totals_decimals(), PHP_ROUND_HALF_UP);
|
||||
if(!$this->sale_lib->reset_cash_rounding() && $balance_due < 0)
|
||||
{
|
||||
$balance_due = 0;
|
||||
}
|
||||
@@ -1215,12 +1201,19 @@ 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));
|
||||
$payment_options = $this->Sale->get_payment_options(FALSE);
|
||||
|
||||
if($this->sale_lib->reset_cash_rounding())
|
||||
{
|
||||
$payment_options[$this->lang->line('sales_cash_adjustment')] = $this->lang->line('sales_cash_adjustment');
|
||||
}
|
||||
|
||||
$data['payment_options'] = $this->xss_clean($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);
|
||||
$payment_options["--"] = $this->lang->line('common_none_selected_text');
|
||||
|
||||
$data['new_payment_options'] = $this->xss_clean($payment_options);
|
||||
|
||||
$this->load->view('sales/form', $data);
|
||||
}
|
||||
@@ -1286,29 +1279,57 @@ 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
|
||||
);
|
||||
|
||||
// In order to maintain tradition the only element that can change on prior payments is the payment type
|
||||
$payments = array();
|
||||
$amount_tendered = 0;
|
||||
$number_of_payments = $this->input->post('number_of_payments');
|
||||
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($payment_type == $this->lang->line('sales_cash_adjustment'))
|
||||
{
|
||||
$cash_adjustment = CASH_ADJUSTMENT_TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
$cash_adjustment = CASH_ADJUSTMENT_FALSE;
|
||||
}
|
||||
|
||||
$payments[] = array('payment_id' => $payment_id, 'payment_type' => $payment_type, 'payment_amount' => $payment_amount, 'cash_refund' => $cash_refund, 'employee_id' => $employee_id);
|
||||
if(!$cash_adjustment)
|
||||
{
|
||||
$amount_tendered += $payment_amount - $cash_refund;
|
||||
}
|
||||
|
||||
// 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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$payments[] = array('payment_id' => $payment_id, 'payment_type' => $payment_type, 'payment_amount' => $payment_amount, 'cash_refund' => $cash_refund, 'cash_adjustment' => $cash_adjustment, 'employee_id' => $employee_id);
|
||||
}
|
||||
|
||||
$payment_id = -1;
|
||||
@@ -1317,9 +1338,27 @@ class Sales extends Secure_Controller
|
||||
|
||||
if($payment_type != PAYMENT_TYPE_UNASSIGNED && $payment_amount <> 0)
|
||||
{
|
||||
$payments[] = array('payment_id' => $payment_id, 'payment_type' => $payment_type, 'payment_amount' => $payment_amount, 'cash_refund' => 0.00, 'employee_id' => $employee_id);
|
||||
$cash_refund = 0;
|
||||
if($payment_type == $this->lang->line('sales_cash_adjustment'))
|
||||
{
|
||||
$cash_adjustment = CASH_ADJUSTMENT_TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
$cash_adjustment = CASH_ADJUSTMENT_FALSE;
|
||||
$amount_tendered += $payment_amount;
|
||||
$sale_info = $this->Sale->get_info($sale_id)->row_array();
|
||||
|
||||
if($amount_tendered > $sale_info['amount_due'])
|
||||
{
|
||||
$cash_refund = $amount_tendered - $sale_info['amount_due'];
|
||||
}
|
||||
}
|
||||
|
||||
$payments[] = array('payment_id' => $payment_id, 'payment_type' => $payment_type, 'payment_amount' => $payment_amount, 'cash_refund' => $cash_refund, 'cash_adjustment' => $cash_adjustment, '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 +1450,7 @@ class Sales extends Secure_Controller
|
||||
}
|
||||
|
||||
$this->sale_lib->clear_all();
|
||||
|
||||
$this->_reload($data);
|
||||
}
|
||||
|
||||
@@ -1419,14 +1459,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.
|
||||
*/
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -34,7 +35,7 @@ class Suppliers extends Persons
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? LAST_NAME : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$suppliers = $this->Supplier->search($search, $limit, $offset, $sort, $order);
|
||||
|
||||
@@ -25,7 +25,7 @@ class Tax_categories extends Secure_Controller
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? 'tax_category' : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$tax_categories = $this->Tax_category->search($search, $limit, $offset, $sort, $order);
|
||||
|
||||
@@ -29,7 +29,7 @@ class Tax_codes extends Secure_Controller
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? 'tax_code_name' : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$tax_codes = $this->Tax_code->search($search, $limit, $offset, $sort, $order);
|
||||
|
||||
@@ -25,7 +25,7 @@ class Tax_jurisdictions extends Secure_Controller
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? 'jurisdiction_name' : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$tax_jurisdictions = $this->Tax_jurisdiction->search($search, $limit, $offset, $sort, $order);
|
||||
|
||||
@@ -57,7 +57,7 @@ class Taxes extends Secure_Controller
|
||||
$search = $this->input->get('search');
|
||||
$limit = $this->input->get('limit');
|
||||
$offset = $this->input->get('offset');
|
||||
$sort = $this->input->get('sort');
|
||||
$sort = $this->input->post('sort') === NULL ? 'tax_code_name' : $this->db->escape($this->input->get('sort'));
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$tax_rates = $this->Tax->search($search, $limit, $offset, $sort, $order);
|
||||
@@ -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);
|
||||
|
||||
@@ -10,10 +10,17 @@ class MY_Lang extends CI_Lang
|
||||
$CI->config->set_item('language', $idiom);
|
||||
$loaded = $this->is_loaded;
|
||||
$this->is_loaded = array();
|
||||
|
||||
|
||||
foreach($loaded as $file)
|
||||
{
|
||||
$this->load(strtr($file, '', '_lang.php'));
|
||||
$filename = strtr($file, '', '_lang.php');
|
||||
$this->load($filename, 'english');
|
||||
$array = $this->load($filename, $idiom, TRUE);
|
||||
foreach($array as $lang_key => $lang_value) {
|
||||
if ($lang_value != '') {
|
||||
$this->language[$lang_key] = $lang_value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
57
application/core/MY_Security.php
Normal file
57
application/core/MY_Security.php
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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');
|
||||
|
||||
@@ -1,106 +1,93 @@
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/**
|
||||
* Generates the header content for the import_items.csv file
|
||||
*
|
||||
* @return string Comma separated headers for the CSV file
|
||||
*/
|
||||
function generate_import_items_csv($stock_locations,$attributes)
|
||||
{
|
||||
$csv_headers = pack("CCC",0xef,0xbb,0xbf); //Encode the Byte-Order Mark (BOM) so that UTF-8 File headers display properly in Microsoft Excel
|
||||
$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 = pack('CCC',0xef,0xbb,0xbf); //Encode the Byte-Order Mark (BOM) so that UTF-8 File headers display properly in Microsoft Excel
|
||||
$csv_headers .= 'Id,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",Image,HSN';
|
||||
$csv_headers .= generate_stock_location_headers($stock_locations);
|
||||
$csv_headers .= generate_attribute_headers($attributes);
|
||||
|
||||
|
||||
return $csv_headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a list of stock location names as a string
|
||||
*
|
||||
* @return string Comma-separated list of stock location names
|
||||
*/
|
||||
function generate_stock_location_headers($locations)
|
||||
{
|
||||
$location_headers = "";
|
||||
|
||||
foreach($locations as $location_id => $location_name)
|
||||
$location_headers = '';
|
||||
|
||||
foreach($locations as $location_name)
|
||||
{
|
||||
$location_headers .= ',"location_' . $location_name . '"';
|
||||
}
|
||||
|
||||
|
||||
return $location_headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a list of attribute names as a string
|
||||
*
|
||||
* @return string Comma-separated list of attribute names
|
||||
*/
|
||||
function generate_attribute_headers($attribute_names)
|
||||
{
|
||||
$attribute_headers = "";
|
||||
$attribute_headers = '';
|
||||
unset($attribute_names[-1]);
|
||||
|
||||
|
||||
foreach($attribute_names as $attribute_name)
|
||||
{
|
||||
$attribute_headers .= ',"attribute_' . $attribute_name . '"';
|
||||
}
|
||||
|
||||
|
||||
return $attribute_headers;
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the contents of a given CSV formatted file into a two-dimensional array
|
||||
*
|
||||
* @param string $file_name Name of the file to read.
|
||||
* @return boolean|array[][] two-dimensional array with the file contents or FALSE on failure.
|
||||
*/
|
||||
function get_csv_file($file_name)
|
||||
{
|
||||
ini_set("auto_detect_line_endings", true);
|
||||
|
||||
//TODO: current implementation reads the entire file in. This is memory intensive for large files.
|
||||
//We may want to rework the CSV import feature to read the file in chunks, process it and continue.
|
||||
//It must be done in a way that does not significantly negatively affect performance.
|
||||
ini_set('auto_detect_line_endings', true);
|
||||
|
||||
$csv_rows = FALSE;
|
||||
|
||||
if(($csv_file = fopen($file_name,'r')) !== FALSE)
|
||||
{
|
||||
$CI =& get_instance();
|
||||
$CI->load->helper('security');
|
||||
|
||||
$csv_rows = [];
|
||||
|
||||
//Skip Byte-Order Mark
|
||||
if(bom_exists($csv_file) === TRUE)
|
||||
{
|
||||
fseek($csv_file, 3);
|
||||
}
|
||||
|
||||
while (($data = fgetcsv($csv_file)) !== FALSE)
|
||||
|
||||
$headers = fgetcsv($csv_file);
|
||||
|
||||
while(($row = fgetcsv($csv_file)) !== FALSE)
|
||||
{
|
||||
$line_array[] = $data;
|
||||
//Skip empty lines
|
||||
if($row !== array(null))
|
||||
{
|
||||
$csv_rows[] = array_combine($headers, $CI->security->xss_clean($row));
|
||||
}
|
||||
}
|
||||
|
||||
fclose($csv_file);
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return $line_array;
|
||||
|
||||
return $csv_rows;
|
||||
}
|
||||
|
||||
/**
|
||||
* 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);
|
||||
$result = FALSE;
|
||||
$candidate = fread($file_handle, 3);
|
||||
|
||||
rewind($file_handle);
|
||||
|
||||
$bom = pack("CCC", 0xef, 0xbb, 0xbf);
|
||||
|
||||
if (0 === strncmp($str, $bom, 3))
|
||||
|
||||
$bom = pack('CCC', 0xef, 0xbb, 0xbf);
|
||||
|
||||
if (0 === strncmp($candidate, $bom, 3))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
$result = TRUE;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
?>
|
||||
@@ -3,6 +3,9 @@
|
||||
const DEFAULT_LANGUAGE = 'english';
|
||||
const DEFAULT_LANGUAGE_CODE = 'en-US';
|
||||
|
||||
define('NOW', time());
|
||||
define('MAX_PRECISION', 1e14);
|
||||
define('DEFAULT_PRECISION', 2);
|
||||
define('DEFAULT_DATE', mktime(0, 0, 0, 1, 1, 2010));
|
||||
define('DEFAULT_DATETIME', mktime(0, 0, 0, 1, 1, 2010));
|
||||
|
||||
@@ -56,7 +59,9 @@ function get_languages()
|
||||
'ar-LB:arabic' => 'Arabic (Lebanon)',
|
||||
'az-AZ:azerbaijani' => 'Azerbaijani (Azerbaijan)',
|
||||
'bg:bulgarian' => 'Bulgarian',
|
||||
'bs-BA:bosnian' => 'Bosnian',
|
||||
'cs:czech' => 'Czech',
|
||||
'da:danish' => 'Danish',
|
||||
'de:german' => 'German (Germany)',
|
||||
'de-CH:german' => 'German (Swiss)',
|
||||
'el:greek' => 'Greek',
|
||||
@@ -65,24 +70,29 @@ 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',
|
||||
'ta:tamil' => 'Tamil',
|
||||
'th:thai' => 'Thai',
|
||||
'tl-PH:talong' => 'Tagalog (Philippines)',
|
||||
'tr:turkish' => 'Turkish',
|
||||
'uk-UA:ukrainian' => 'Ukrainian',
|
||||
'ur-PK:urdu' => 'Urdu (Islamic Republic of Pakistan)',
|
||||
'vi:vietnamese' => 'Vietnamese',
|
||||
'zh-Hans:simplified-chinese' => 'Chinese Simplified Script',
|
||||
@@ -239,7 +249,7 @@ function get_payment_options()
|
||||
$config = get_instance()->config;
|
||||
$lang = get_instance()->lang;
|
||||
|
||||
$payments = array();
|
||||
$payments = [];
|
||||
|
||||
|
||||
if($config->item('payment_options_order') == 'debitcreditcash')
|
||||
@@ -378,7 +388,7 @@ function to_quantity_decimals($number)
|
||||
return to_decimals($number, 'quantity_decimals');
|
||||
}
|
||||
|
||||
function to_decimals($number, $decimals, $type=\NumberFormatter::DECIMAL)
|
||||
function to_decimals($number, $decimals = NULL, $type=\NumberFormatter::DECIMAL)
|
||||
{
|
||||
// ignore empty strings and return
|
||||
// NOTE: do not change it to empty otherwise tables will show a 0 with no decimal nor currency symbol
|
||||
@@ -389,8 +399,9 @@ function to_decimals($number, $decimals, $type=\NumberFormatter::DECIMAL)
|
||||
|
||||
$config = get_instance()->config;
|
||||
$fmt = new \NumberFormatter($config->item('number_locale'), $type);
|
||||
$fmt->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, $config->item($decimals));
|
||||
$fmt->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, $config->item($decimals));
|
||||
$fmt->setAttribute(\NumberFormatter::MIN_FRACTION_DIGITS, empty($decimals) ? DEFAULT_PRECISION : $config->item($decimals));
|
||||
$fmt->setAttribute(\NumberFormatter::MAX_FRACTION_DIGITS, empty($decimals) ? DEFAULT_PRECISION : $config->item($decimals));
|
||||
|
||||
if(empty($config->item('thousands_separator')))
|
||||
{
|
||||
$fmt->setAttribute(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL, '');
|
||||
@@ -400,7 +411,17 @@ 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))
|
||||
@@ -408,10 +429,24 @@ function parse_decimals($number)
|
||||
return $number;
|
||||
}
|
||||
|
||||
$config = get_instance()->config;
|
||||
$fmt = new \NumberFormatter($config->item('number_locale'), \NumberFormatter::DECIMAL);
|
||||
if ($number > MAX_PRECISION)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$fmt->setAttribute(\NumberFormatter::FRACTION_DIGITS, $config->item('currency_decimals'));
|
||||
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);
|
||||
|
||||
if(empty($config->item('thousands_separator')))
|
||||
{
|
||||
@@ -564,12 +599,13 @@ function dateformat_bootstrap($php_format)
|
||||
|
||||
function valid_date($date)
|
||||
{
|
||||
return preg_match('/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9])(?:( [0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/', $date);
|
||||
$config = get_instance()->Appconfig;
|
||||
return (DateTime::createFromFormat($config->get('dateformat'), $date));
|
||||
}
|
||||
|
||||
function valid_decimal($decimal)
|
||||
{
|
||||
return preg_match('/^(\d*\.)?\d+$/', $decimal);
|
||||
return (preg_match('/^(\d*\.)?\d+$/', $decimal) === 1);
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -147,27 +147,20 @@ function get_sale_data_last_row($sales)
|
||||
/*
|
||||
Get the sales payments summary
|
||||
*/
|
||||
function get_sales_manage_payments_summary($payments, $sales)
|
||||
function get_sales_manage_payments_summary($payments)
|
||||
{
|
||||
$CI =& get_instance();
|
||||
|
||||
$table = '<div id="report_summary">';
|
||||
$total = 0;
|
||||
|
||||
foreach($payments as $key=>$payment)
|
||||
{
|
||||
$amount = $payment['payment_amount'];
|
||||
|
||||
// WARNING: the strong assumption here is that if a change is due it was a cash transaction always
|
||||
// therefore we remove from the total cash amount any change due
|
||||
if($payment['payment_type'] == $CI->lang->line('sales_cash'))
|
||||
{
|
||||
foreach($sales->result_array() as $key=>$sale)
|
||||
{
|
||||
$amount -= $sale['change_due'];
|
||||
}
|
||||
}
|
||||
$total = bcadd($total, $amount);
|
||||
$table .= '<div class="summary_row">' . $payment['payment_type'] . ': ' . to_currency($amount) . '</div>';
|
||||
}
|
||||
$table .= '<div class="summary_row">' . $CI->lang->line('sales_total') . ': ' . to_currency($total) . '</div>';
|
||||
$table .= '</div>';
|
||||
|
||||
return $table;
|
||||
@@ -354,7 +347,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' => '');
|
||||
@@ -503,6 +496,7 @@ function get_item_kits_manage_table_headers()
|
||||
|
||||
$headers = array(
|
||||
array('item_kit_id' => $CI->lang->line('item_kits_kit')),
|
||||
array('item_kit_number' => $CI->lang->line('item_kits_item_kit_number')),
|
||||
array('name' => $CI->lang->line('item_kits_name')),
|
||||
array('description' => $CI->lang->line('item_kits_description')),
|
||||
array('total_cost_price' => $CI->lang->line('items_cost_price'), 'sortable' => FALSE),
|
||||
@@ -523,6 +517,7 @@ function get_item_kit_data_row($item_kit)
|
||||
|
||||
return array (
|
||||
'item_kit_id' => $item_kit->item_kit_id,
|
||||
'item_kit_number' => $item_kit->item_kit_number,
|
||||
'name' => $item_kit->name,
|
||||
'description' => $item_kit->description,
|
||||
'total_cost_price' => to_currency($item_kit->total_cost_price),
|
||||
|
||||
@@ -26,8 +26,8 @@ function load_config()
|
||||
$CI->config->set_item('language_code', 'en-US');
|
||||
}
|
||||
|
||||
_load_language_files($CI, '../vendor/codeigniter/framework/system/language', current_language());
|
||||
_load_language_files($CI, '../application/language', current_language_code());
|
||||
_load_language_files($CI, '../vendor/codeigniter/framework/system/language', current_language(), FALSE);
|
||||
_load_language_files($CI, '../application/language', current_language_code(), TRUE);
|
||||
|
||||
//Set timezone from config database
|
||||
if($CI->config->item('timezone'))
|
||||
@@ -46,16 +46,33 @@ function load_config()
|
||||
* @param $CI
|
||||
* @param $path
|
||||
* @param $language
|
||||
* @param $fallback
|
||||
*/
|
||||
function _load_language_files($CI, $path, $language)
|
||||
function _load_language_files($CI, $path, $language, $fallback)
|
||||
{
|
||||
$map = directory_map($path . DIRECTORY_SEPARATOR . $language);
|
||||
|
||||
foreach($map as $file)
|
||||
{
|
||||
|
||||
if(!is_array($file) && substr(strrchr($file, '.'), 1) == 'php')
|
||||
{
|
||||
$CI->lang->load(strtr($file, '', '_lang.php'), $language);
|
||||
$filename = strtr($file, '', '_lang.php');
|
||||
if ($fallback) {
|
||||
$CI->lang->load($filename, 'en-US');
|
||||
|
||||
$array = $CI->lang->load($filename, $language, TRUE);
|
||||
foreach($array as $lang_key => $lang_value) {
|
||||
if ($lang_value !== '') {
|
||||
$CI->lang->language[$lang_key] = $lang_value;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$CI->lang->load($filename, $language);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
16
application/hooks/save_hook.php
Normal file
16
application/hooks/save_hook.php
Normal file
@@ -0,0 +1,16 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
function validate_save()
|
||||
{
|
||||
|
||||
$url = $_SERVER['REQUEST_URI'];
|
||||
|
||||
$is_save = preg_match('/save\/\d*?/', $url);
|
||||
|
||||
if($is_save && $_SERVER["REQUEST_METHOD"] != "POST" && empty($_POST))
|
||||
{
|
||||
echo "Method not allowed";
|
||||
die;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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"] = "التاريخ";
|
||||
@@ -26,6 +27,8 @@ $lang["common_first_page"] = "الأول";
|
||||
$lang["common_gender"] = "النوع";
|
||||
$lang["common_gender_female"] = "أنثى";
|
||||
$lang["common_gender_male"] = "ذكر";
|
||||
$lang["common_gender_undefined"] = "";
|
||||
$lang["common_icon"] = "";
|
||||
$lang["common_id"] = "كود";
|
||||
$lang["common_import"] = "استيراد";
|
||||
$lang["common_import_change_file"] = "تغيير";
|
||||
@@ -39,9 +42,12 @@ $lang["common_last_name_required"] = "الاسم الأخير مطلوب.";
|
||||
$lang["common_last_page"] = "الأخيرة";
|
||||
$lang["common_learn_about_project"] = "للتعرف على أخر المعلومات حول المشروع.";
|
||||
$lang["common_list_of"] = "قائمة بـ";
|
||||
$lang["common_logo"] = "";
|
||||
$lang["common_logo_mark"] = "";
|
||||
$lang["common_logout"] = "خروج";
|
||||
$lang["common_migration_needed"] = "سيبدأ ترحيل قاعدة البيانات إلى ٪1 بعد تسجيل الدخول.";
|
||||
$lang["common_new"] = "جديد";
|
||||
$lang["common_no"] = "";
|
||||
$lang["common_no_persons_to_display"] = "لا يوجد اناس لعرضهم.";
|
||||
$lang["common_none_selected_text"] = "[إختيار]";
|
||||
$lang["common_or"] = "أو";
|
||||
@@ -58,6 +64,8 @@ $lang["common_return_policy"] = "سياسة الاسترجاع";
|
||||
$lang["common_search"] = "بحث";
|
||||
$lang["common_search_options"] = "خيارات البحث";
|
||||
$lang["common_searched_for"] = "بحث عن";
|
||||
$lang["common_software_short"] = "";
|
||||
$lang["common_software_title"] = "";
|
||||
$lang["common_state"] = "المحافظة";
|
||||
$lang["common_submit"] = "حفظ";
|
||||
$lang["common_total_spent"] = "مجموع الصرف";
|
||||
@@ -66,5 +74,6 @@ $lang["common_view_recent_sales"] = "عرض أحدث المبيعات";
|
||||
$lang["common_website"] = "الموقع الإلكترونى";
|
||||
$lang["common_welcome"] = "مرحباً";
|
||||
$lang["common_welcome_message"] = "مرحباً فى OSPOS برجاء إختيار أى قسم للبدء.";
|
||||
$lang["common_yes"] = "";
|
||||
$lang["common_you_are_using_ospos"] = "أنت تستخدم إصدار Open Source Point Of Sale";
|
||||
$lang["common_zip"] = "الرقم البريدى";
|
||||
|
||||
@@ -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 أغسطس";
|
||||
@@ -123,6 +127,7 @@ $lang["config_financial_year_may"] = "1 مايو";
|
||||
$lang["config_financial_year_nov"] = "1 نوفمبر";
|
||||
$lang["config_financial_year_oct"] = "1 أكتوبر";
|
||||
$lang["config_financial_year_sep"] = "1 سبتمبر";
|
||||
$lang["config_floating_labels"] = "";
|
||||
$lang["config_gcaptcha_enable"] = "صفحة تسجيل الدخول ريكابتشا";
|
||||
$lang["config_gcaptcha_secret_key"] = "مفتاح السرية ريكابتشا";
|
||||
$lang["config_gcaptcha_secret_key_required"] = "مفتاح السرية ريكابتشا هو حقل مطلوب";
|
||||
@@ -134,9 +139,15 @@ $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"] = "معلومات الشركة";
|
||||
$lang["config_input_groups"] = "";
|
||||
$lang["config_integrations"] = "التكامل";
|
||||
$lang["config_integrations_configuration"] = "تكامل";
|
||||
$lang["config_invoice"] = "الفاتورة";
|
||||
@@ -146,6 +157,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"] = "اخر رقم مستخدم للفاتورة";
|
||||
@@ -164,6 +177,7 @@ $lang["config_locale_info"] = "معلومات التهيئة الإقليمية"
|
||||
$lang["config_location"] = "المخزون";
|
||||
$lang["config_location_configuration"] = "أماكن المخزون";
|
||||
$lang["config_location_info"] = "معلومات تهيئة الأماكن";
|
||||
$lang["config_login_form"] = "";
|
||||
$lang["config_logout"] = "هل تريد عمل نسخة إحتياطية قبل الخروج؟ اضغط [نعم] لعمل النسخة أو [الغاء] للخروج.";
|
||||
$lang["config_mailchimp"] = "mailchimp ميل تشامب";
|
||||
$lang["config_mailchimp_api_key"] = "mailchimp مفتاح";
|
||||
@@ -183,6 +197,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 +205,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 +247,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 +263,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 +276,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"] = "اعدادات الجدول";
|
||||
@@ -271,10 +292,13 @@ $lang["config_tax_decimals"] = "العلامة العشرية للضريبة";
|
||||
$lang["config_tax_id"] = "الرقم الضريبي";
|
||||
$lang["config_tax_included"] = "شامل الضريبة";
|
||||
$lang["config_theme"] = "السمة";
|
||||
$lang["config_theme_preview"] = "";
|
||||
$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"] = "شكل طلبات العمل";
|
||||
|
||||
@@ -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,10 +25,6 @@ $lang["customers_discount_type"] = "نوع الحسم";
|
||||
$lang["customers_email_duplicate"] = "البريد الالكتروني مكرر.";
|
||||
$lang["customers_employee"] = "الموظف";
|
||||
$lang["customers_error_adding_updating"] = "خطاء فى إضافة أو تحديث العميل.";
|
||||
$lang["customers_csv_import_failed"] = "فشل الإستيراد من اكسل";
|
||||
$lang["customers_csv_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
|
||||
$lang["customers_csv_import_partially_failed"] = "تم استيراد معظم العملاء. البعض لم يتم استيرادهم ، وهذه هى القائمة:";
|
||||
$lang["customers_csv_import_success"] = "تم استيراد العملاء بنجاح.";
|
||||
$lang["customers_import_items_csv"] = "استيراد العملا ء من ورقة عمل اكسل";
|
||||
$lang["customers_mailchimp_activity_click"] = "النقر على البريد الإلكتروني";
|
||||
$lang["customers_mailchimp_activity_lastopen"] = "آخر رسالة إلكترونية مفتوحة";
|
||||
|
||||
@@ -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_csv_import_failed"] = "فشل الإستيراد من اكسل.";
|
||||
$lang["giftcards_generate_barcodes"] = "توليد أكواد الباركود";
|
||||
$lang["giftcards_giftcard"] = "بطاقة هدية";
|
||||
$lang["giftcards_giftcard_number"] = "رقم بطاقة الهدية";
|
||||
|
||||
@@ -14,6 +14,9 @@ $lang["item_kits_error_adding_updating"] = "خطاء فى إضافة/تحديث
|
||||
$lang["item_kits_find_kit_item"] = "صنف لمجموعة";
|
||||
$lang["item_kits_info"] = "معلومات المجموعة";
|
||||
$lang["item_kits_item"] = "صنف";
|
||||
$lang["item_kits_item_kit_number"] = "";
|
||||
$lang["item_kits_item_kit_number_duplicate"] = "";
|
||||
$lang["item_kits_item_number"] = "";
|
||||
$lang["item_kits_items"] = "أصناف";
|
||||
$lang["item_kits_kit"] = "كود المجموعة";
|
||||
$lang["item_kits_kit_and_components"] = "المجموعة ومحتوياتها";
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
<?php
|
||||
|
||||
$lang["items_add_minus"] = "الكمية المطلوب خصمها أو اضافتها.";
|
||||
$lang["items_allow_alt_description"] = "السماح بوصف بديل";
|
||||
$lang["items_amount_entry"] = "إدخال القيمة";
|
||||
@@ -21,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"] = "الوصف";
|
||||
@@ -31,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_csv_import_failed"] = "فشل الإستيراد من اكسل";
|
||||
$lang["items_csv_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
|
||||
$lang["items_csv_import_partially_failed"] = "يوجد خطأ بنسبة 1% في استيراد الاصناف في السطر: %2. لم يتم استيرادهم.";
|
||||
$lang["items_csv_import_success"] = "تم استيراد الأصناف بنجاح.";
|
||||
$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"] = "العدد المستورد من ملفات ال CSV";
|
||||
$lang["items_inventory_comments"] = "تعليقات";
|
||||
$lang["items_inventory_data_tracking"] = "تتبع بيانات المخزون";
|
||||
$lang["items_inventory_date"] = "التاريخ";
|
||||
@@ -108,4 +110,3 @@ $lang["items_unit_price_required"] = "السعر مطلوب.";
|
||||
$lang["items_upc_database"] = "UPC قاعدة بيانات";
|
||||
$lang["items_update"] = "تحديث بيانات صنف";
|
||||
$lang["items_use_inventory_menu"] = "استخدام تحديث المخزن";
|
||||
$lang["items_inventory_CSV_import_quantity"] = "العدد المستورد من ملفات ال CSV";
|
||||
|
||||
@@ -6,5 +6,8 @@ $lang["login_invalid_gcaptcha"] = "رمز التحقق غير صحيح.";
|
||||
$lang["login_invalid_installation"] = "يوجد مشكلة بالتنصيب, الرجاء التحقق من ملف php.ini.";
|
||||
$lang["login_invalid_username_and_password"] = "اسم مستخدم/كلمة سر غير صحيح.";
|
||||
$lang["login_login"] = "دخول";
|
||||
$lang["login_logout"] = "";
|
||||
$lang["login_migration_needed"] = "";
|
||||
$lang["login_password"] = "كلمة السر";
|
||||
$lang["login_username"] = "اسم المستخدم";
|
||||
$lang["login_welcome"] = "";
|
||||
|
||||
@@ -10,9 +10,11 @@ $lang["sales_amount_tendered"] = "المبلغ المدفوع";
|
||||
$lang["sales_authorized_signature"] = "توقيع معتمد";
|
||||
$lang["sales_cancel_sale"] = "الغاء عملية البيع";
|
||||
$lang["sales_cash"] = "نقدى";
|
||||
$lang["sales_cash_adjustment"] = "";
|
||||
$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 +26,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 +100,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 +124,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 +162,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"] = "فشل حركة البيع.";
|
||||
|
||||
@@ -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"] = "الاختصاص الضريبي";
|
||||
|
||||
@@ -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"] = "التاريخ";
|
||||
@@ -26,6 +27,8 @@ $lang["common_first_page"] = "الأول";
|
||||
$lang["common_gender"] = "النوع";
|
||||
$lang["common_gender_female"] = "أنثى";
|
||||
$lang["common_gender_male"] = "ذكر";
|
||||
$lang["common_gender_undefined"] = "";
|
||||
$lang["common_icon"] = "";
|
||||
$lang["common_id"] = "كود";
|
||||
$lang["common_import"] = "استيراد";
|
||||
$lang["common_import_change_file"] = "تغيير";
|
||||
@@ -39,9 +42,12 @@ $lang["common_last_name_required"] = "الاسم الأخير مطلوب.";
|
||||
$lang["common_last_page"] = "الأخيرة";
|
||||
$lang["common_learn_about_project"] = "للتعرف على أخر المعلومات حول المشروع.";
|
||||
$lang["common_list_of"] = "قائمة بـ";
|
||||
$lang["common_logo"] = "";
|
||||
$lang["common_logo_mark"] = "";
|
||||
$lang["common_logout"] = "خروج";
|
||||
$lang["common_migration_needed"] = "سيبدأ ترحيل قاعدة البيانات إلى ٪1 بعد تسجيل الدخول.";
|
||||
$lang["common_new"] = "جديد";
|
||||
$lang["common_no"] = "";
|
||||
$lang["common_no_persons_to_display"] = "لا يوجد اناس لعرضهم.";
|
||||
$lang["common_none_selected_text"] = "[إختيار]";
|
||||
$lang["common_or"] = "أو";
|
||||
@@ -58,6 +64,8 @@ $lang["common_return_policy"] = "سياسة الاسترجاع";
|
||||
$lang["common_search"] = "بحث";
|
||||
$lang["common_search_options"] = "خيارات البحث";
|
||||
$lang["common_searched_for"] = "بحث عن";
|
||||
$lang["common_software_short"] = "";
|
||||
$lang["common_software_title"] = "";
|
||||
$lang["common_state"] = "المحافظة";
|
||||
$lang["common_submit"] = "حفظ";
|
||||
$lang["common_total_spent"] = "مجموع الصرف";
|
||||
@@ -66,5 +74,6 @@ $lang["common_view_recent_sales"] = "عرض أحدث المبيعات";
|
||||
$lang["common_website"] = "الموقع الإلكترونى";
|
||||
$lang["common_welcome"] = "مرحباً";
|
||||
$lang["common_welcome_message"] = "مرحباً فى OSPOS برجاء إختيار أى قسم للبدء.";
|
||||
$lang["common_yes"] = "";
|
||||
$lang["common_you_are_using_ospos"] = "أنت تستخدم إصدار Open Source Point Of Sale";
|
||||
$lang["common_zip"] = "الرقم البريدى";
|
||||
|
||||
@@ -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 أغسطس";
|
||||
@@ -123,6 +127,7 @@ $lang["config_financial_year_may"] = "1 مايو";
|
||||
$lang["config_financial_year_nov"] = "1 نوفمبر";
|
||||
$lang["config_financial_year_oct"] = "1 أكتوبر";
|
||||
$lang["config_financial_year_sep"] = "1 سبتمبر";
|
||||
$lang["config_floating_labels"] = "";
|
||||
$lang["config_gcaptcha_enable"] = "صفحة تسجيل الدخول ريكابتشا";
|
||||
$lang["config_gcaptcha_secret_key"] = "مفتاح السرية ريكابتشا";
|
||||
$lang["config_gcaptcha_secret_key_required"] = "مفتاح السرية ريكابتشا هو حقل مطلوب";
|
||||
@@ -134,9 +139,15 @@ $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"] = "معلومات الشركة";
|
||||
$lang["config_input_groups"] = "";
|
||||
$lang["config_integrations"] = "التكامل";
|
||||
$lang["config_integrations_configuration"] = "تكامل";
|
||||
$lang["config_invoice"] = "الفاتورة";
|
||||
@@ -146,6 +157,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"] = "اخر رقم مستخدم للفاتورة";
|
||||
@@ -164,6 +177,7 @@ $lang["config_locale_info"] = "معلومات التهيئة الإقليمية"
|
||||
$lang["config_location"] = "المخزون";
|
||||
$lang["config_location_configuration"] = "أماكن المخزون";
|
||||
$lang["config_location_info"] = "معلومات تهيئة الأماكن";
|
||||
$lang["config_login_form"] = "";
|
||||
$lang["config_logout"] = "هل تريد عمل نسخة إحتياطية قبل الخروج؟ اضغط [نعم] لعمل النسخة أو [الغاء] للخروج.";
|
||||
$lang["config_mailchimp"] = "mailchimp ميل تشامب";
|
||||
$lang["config_mailchimp_api_key"] = "mailchimp مفتاح";
|
||||
@@ -183,6 +197,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 +205,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 +247,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 +263,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 +276,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"] = "اعدادات الجدول";
|
||||
@@ -271,10 +292,13 @@ $lang["config_tax_decimals"] = "العلامة العشرية للضريبة";
|
||||
$lang["config_tax_id"] = "الرقم الضريبي";
|
||||
$lang["config_tax_included"] = "شامل الضريبة";
|
||||
$lang["config_theme"] = "السمة";
|
||||
$lang["config_theme_preview"] = "";
|
||||
$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"] = "شكل طلبات العمل";
|
||||
|
||||
@@ -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,10 +25,6 @@ $lang["customers_discount_type"] = "نوع الحسم";
|
||||
$lang["customers_email_duplicate"] = "البريد الالكتروني مكرر.";
|
||||
$lang["customers_employee"] = "الموظف";
|
||||
$lang["customers_error_adding_updating"] = "خطاء فى إضافة أو تحديث العميل.";
|
||||
$lang["customers_csv_import_failed"] = "فشل الإستيراد من اكسل";
|
||||
$lang["customers_csv_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
|
||||
$lang["customers_csv_import_partially_failed"] = "تم استيراد معظم العملاء. البعض لم يتم استيرادهم ، وهذه هى القائمة:";
|
||||
$lang["customers_csv_import_success"] = "تم استيراد العملاء بنجاح.";
|
||||
$lang["customers_import_items_csv"] = "استيراد العملا ء من ورقة عمل اكسل";
|
||||
$lang["customers_mailchimp_activity_click"] = "النقر على البريد الإلكتروني";
|
||||
$lang["customers_mailchimp_activity_lastopen"] = "آخر رسالة إلكترونية مفتوحة";
|
||||
|
||||
@@ -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_csv_import_failed"] = "فشل الإستيراد من اكسل.";
|
||||
$lang["giftcards_generate_barcodes"] = "توليد أكواد الباركود";
|
||||
$lang["giftcards_giftcard"] = "بطاقة هدية";
|
||||
$lang["giftcards_giftcard_number"] = "رقم بطاقة الهدية";
|
||||
|
||||
@@ -14,6 +14,9 @@ $lang["item_kits_error_adding_updating"] = "خطاء فى إضافة/تحديث
|
||||
$lang["item_kits_find_kit_item"] = "صنف لمجموعة";
|
||||
$lang["item_kits_info"] = "معلومات المجموعة";
|
||||
$lang["item_kits_item"] = "صنف";
|
||||
$lang["item_kits_item_kit_number"] = "";
|
||||
$lang["item_kits_item_kit_number_duplicate"] = "";
|
||||
$lang["item_kits_item_number"] = "";
|
||||
$lang["item_kits_items"] = "أصناف";
|
||||
$lang["item_kits_kit"] = "كود المجموعة";
|
||||
$lang["item_kits_kit_and_components"] = "المجموعة ومحتوياتها";
|
||||
|
||||
@@ -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_csv_import_failed"] = "فشل الإستيراد من اكسل";
|
||||
$lang["items_csv_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية.";
|
||||
$lang["items_csv_import_partially_failed"] = "تم استيراد معظم الأصناف. البعض لم يتم استيرادهم ، وهذه هى القائمة:";
|
||||
$lang["items_csv_import_success"] = "تم استيراد الأصناف بنجاح.";
|
||||
$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"] = "العدد المستورد من ملفات ال CSV";
|
||||
$lang["items_inventory_comments"] = "تعليقات";
|
||||
$lang["items_inventory_data_tracking"] = "تتبع بيانات المخزون";
|
||||
$lang["items_inventory_date"] = "التاريخ";
|
||||
@@ -109,4 +110,3 @@ $lang["items_unit_price_required"] = "السعر مطلوب.";
|
||||
$lang["items_upc_database"] = "UPC قاعدة بيانات";
|
||||
$lang["items_update"] = "تحديث بيانات صنف";
|
||||
$lang["items_use_inventory_menu"] = "استخدام تحديث المخزن";
|
||||
$lang["items_inventory_CSV_import_quantity"] = "العدد المستورد من ملفات ال CSV";
|
||||
@@ -6,5 +6,8 @@ $lang["login_invalid_gcaptcha"] = "رمز التحقق غير صحيح.";
|
||||
$lang["login_invalid_installation"] = "يوجد مشكلة بالتنصيب, الرجاء التحقق من ملف php.ini.";
|
||||
$lang["login_invalid_username_and_password"] = "اسم مستخدم/كلمة سر غير صحيح.";
|
||||
$lang["login_login"] = "دخول";
|
||||
$lang["login_logout"] = "";
|
||||
$lang["login_migration_needed"] = "";
|
||||
$lang["login_password"] = "كلمة السر";
|
||||
$lang["login_username"] = "اسم المستخدم";
|
||||
$lang["login_welcome"] = "";
|
||||
|
||||
@@ -10,9 +10,11 @@ $lang["sales_amount_tendered"] = "المبلغ المدفوع";
|
||||
$lang["sales_authorized_signature"] = "توقيع معتمد";
|
||||
$lang["sales_cancel_sale"] = "الغاء عملية البيع";
|
||||
$lang["sales_cash"] = "نقدى";
|
||||
$lang["sales_cash_adjustment"] = "تعديل الدفع";
|
||||
$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,12 +26,13 @@ $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"] = "الخصم";
|
||||
$lang["sales_customer_email"] = "البريد الإلكترونى";
|
||||
$lang["sales_customer_location"] = "المكان";
|
||||
$lang["sales_customer_mailchimp_status"] = "حالة ميل تشيمب";
|
||||
$lang["sales_customer_mailchimp_status"] = "حالة بريد ميل تشيمب";
|
||||
$lang["sales_customer_optional"] = "(مطلوب للدفعات المستحقة)";
|
||||
$lang["sales_customer_required"] = "(اجباري)";
|
||||
$lang["sales_customer_total"] = "المجموع";
|
||||
@@ -51,26 +54,26 @@ $lang["sales_discount_included"] = "% خصم";
|
||||
$lang["sales_discount_short"] = "%";
|
||||
$lang["sales_due"] = "مستحق";
|
||||
$lang["sales_due_filter"] = "مستحق";
|
||||
$lang["sales_edit"] = "تحرير";
|
||||
$lang["sales_edit_item"] = "تحرير صنف";
|
||||
$lang["sales_edit_sale"] = "تحرير عملية بيع";
|
||||
$lang["sales_edit"] = "تعديل";
|
||||
$lang["sales_edit_item"] = "تعديل مادة";
|
||||
$lang["sales_edit_sale"] = "تعديل عملية بيع";
|
||||
$lang["sales_email_receipt"] = "إرسال الايصال بالبريد الالكترونى";
|
||||
$lang["sales_employee"] = "الموظف";
|
||||
$lang["sales_entry"] = "ادخال";
|
||||
$lang["sales_error_editing_item"] = "خطاء فى تحرير الصنف";
|
||||
$lang["sales_find_or_scan_item"] = "بحث/مسح باركود صنف";
|
||||
$lang["sales_find_or_scan_item_or_receipt"] = "بحث/مسح باركود صنف أو ايصال";
|
||||
$lang["sales_error_editing_item"] = "خطاء فى تعديل المادة";
|
||||
$lang["sales_find_or_scan_item"] = "بحث/مسح باركود المادة";
|
||||
$lang["sales_find_or_scan_item_or_receipt"] = "بحث/مسح باركود المادة أو الايصال";
|
||||
$lang["sales_giftcard"] = "بطاقة هدية";
|
||||
$lang["sales_giftcard_balance"] = "رصيد بطاقة الهدية";
|
||||
$lang["sales_giftcard_number"] = "رقم بطاقة الهدية";
|
||||
$lang["sales_group_by_category"] = "تصفية حسب الفئة";
|
||||
$lang["sales_group_by_type"] = "تجميع حسب النوع";
|
||||
$lang["sales_group_by_category"] = "ترتيب حسب الفئة";
|
||||
$lang["sales_group_by_type"] = "ترتيب حسب النوع";
|
||||
$lang["sales_hsn"] = "رمز نظام منسق";
|
||||
$lang["sales_id"] = "كود عملية البيع";
|
||||
$lang["sales_id"] = "رقم عملية البيع";
|
||||
$lang["sales_include_prices"] = "يشمل الاسعار؟";
|
||||
$lang["sales_invoice"] = "فاتورة";
|
||||
$lang["sales_invoice_confirm"] = "هذه الفاتورة سوف ترسل إلى";
|
||||
$lang["sales_invoice_enable"] = "إنشاء فاتورة";
|
||||
$lang["sales_invoice_enable"] = "رقم فاتورة";
|
||||
$lang["sales_invoice_filter"] = "الفواتير";
|
||||
$lang["sales_invoice_no_email"] = "هذا العميل ليس لدية بريد الكترونى صالح.";
|
||||
$lang["sales_invoice_number"] = "فاتورة رقم #";
|
||||
@@ -83,31 +86,32 @@ $lang["sales_invoice_type_invoice"] = "الفاتورة (invoice.php)";
|
||||
$lang["sales_invoice_type_tax_invoice"] = "الفاتورة الضريبية (tax_invoice.php)";
|
||||
$lang["sales_invoice_unsent"] = "فشل إرسال الفاتورة إلى";
|
||||
$lang["sales_invoice_update"] = "إعادة العد";
|
||||
$lang["sales_item_insufficient_of_stock"] = "لايوجد مخزون كافى من الصنف.";
|
||||
$lang["sales_item_name"] = "اسم الصنف";
|
||||
$lang["sales_item_number"] = "صنف #";
|
||||
$lang["sales_item_out_of_stock"] = "لايوجد مخزون من الصنف.";
|
||||
$lang["sales_item_insufficient_of_stock"] = "لايوجد مخزون كافى من المادة.";
|
||||
$lang["sales_item_name"] = "اسم المادة";
|
||||
$lang["sales_item_number"] = "مادة رقم #";
|
||||
$lang["sales_item_out_of_stock"] = "لايوجد مخزون من المادة.";
|
||||
$lang["sales_mode"] = "وضع التسجيل";
|
||||
$lang["sales_must_enter_numeric"] = "يجب إدخال رقم للمبلغ الفعلى المدفوع.";
|
||||
$lang["sales_must_enter_numeric_giftcard"] = "رقم بطاقة الهدية يجب أن يكون رقم.";
|
||||
$lang["sales_must_enter_numeric_giftcard"] = "رمز بطاقة الهدية يجب أن يكتون ارقام فقط.";
|
||||
$lang["sales_new_customer"] = "عميل جديد";
|
||||
$lang["sales_new_item"] = "صنف جديد";
|
||||
$lang["sales_new_item"] = "مادة جديدة";
|
||||
$lang["sales_no_description"] = "بدون وصف";
|
||||
$lang["sales_no_filter"] = "الكل";
|
||||
$lang["sales_no_items_in_cart"] = "لايوجد أصناف فى السلة.";
|
||||
$lang["sales_no_items_in_cart"] = "لايوجد اي مادة فى السلة.";
|
||||
$lang["sales_no_sales_to_display"] = "لاتوجد عمليات بيع لعرضها.";
|
||||
$lang["sales_none_selected"] = "لم تقم بإختيار أى عمليات بيع لحذفها.";
|
||||
$lang["sales_not_authorized"] = "هذه العملية لا يمكن فعلها لعدم تخويلك.";
|
||||
$lang["sales_nontaxed_ind"] = "";
|
||||
$lang["sales_not_authorized"] = "ليس لديك صلاحية.";
|
||||
$lang["sales_one_or_multiple"] = "عمليات بيع";
|
||||
$lang["sales_payment"] = "طريقة الدفع";
|
||||
$lang["sales_payment_amount"] = "المبلغ";
|
||||
$lang["sales_payment_amount"] = "القيمة";
|
||||
$lang["sales_payment_not_cover_total"] = "المبلغ المدفوع لايغطى المبلغ الإجمالى.";
|
||||
$lang["sales_payment_type"] = "طريقة";
|
||||
$lang["sales_payments_total"] = "إجمالى المدفوعات";
|
||||
$lang["sales_price"] = "السعر";
|
||||
$lang["sales_print_after_sale"] = "اطبع بعد عملية البيع";
|
||||
$lang["sales_quantity"] = "الكمية";
|
||||
$lang["sales_quantity_less_than_reorder_level"] = "تحذير: الكمية/العدد المطلوب غير متوفر لهذا الصنف.";
|
||||
$lang["sales_quantity_less_than_reorder_level"] = "تحذير: الكمية أقل من الحد المطلوب لهذه المادة.";
|
||||
$lang["sales_quantity_less_than_zero"] = "تحذير! الكمية المطلوبة غير كافية، بإمكانك إتمام عملية البيع ، لكن تحقق من مخزنك.";
|
||||
$lang["sales_quantity_of_items"] = "عدد ال 1% من الاصناف";
|
||||
$lang["sales_quote"] = "عرض اسعار";
|
||||
@@ -120,9 +124,10 @@ $lang["sales_receipt_no_email"] = "هذا العميل ليس له اي بريد
|
||||
$lang["sales_receipt_number"] = "إيصال بيع";
|
||||
$lang["sales_receipt_sent"] = "تم إرسال الإيصال إلى";
|
||||
$lang["sales_receipt_unsent"] = "فشل إرسال الإيصال إلى";
|
||||
$lang["sales_register"] = "مسجل المبيعات";
|
||||
$lang["sales_refund"] = "نوع/سبب الاسترجاع";
|
||||
$lang["sales_register"] = "سجل المبيعات";
|
||||
$lang["sales_remove_customer"] = "حذف عميل";
|
||||
$lang["sales_return"] = "إرتجاع";
|
||||
$lang["sales_return"] = "إسترجاع";
|
||||
$lang["sales_rewards"] = "نقاط المكافئة";
|
||||
$lang["sales_rewards_balance"] = "رصيد نقاط المكافئة";
|
||||
$lang["sales_sale"] = "بيع";
|
||||
@@ -141,7 +146,7 @@ $lang["sales_show_receipt"] = "عرض الإيصال";
|
||||
$lang["sales_start_typing_customer_name"] = "ابداء بكتابة اسم العميل...";
|
||||
$lang["sales_start_typing_item_name"] = "ابداء بكتابة اسم أو مسح باركود الصنف...";
|
||||
$lang["sales_stock"] = "المخزن";
|
||||
$lang["sales_stock_location"] = "مكان المخزون";
|
||||
$lang["sales_stock_location"] = "موقع التخزين";
|
||||
$lang["sales_sub_total"] = "المجموع الفرعي";
|
||||
$lang["sales_successfully_deleted"] = "لقد تم الحذف بنجاح";
|
||||
$lang["sales_successfully_restored"] = "لقد تمت عملية الاستعادة بنجاح";
|
||||
@@ -157,6 +162,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"] = "فشل حركة البيع.";
|
||||
|
||||
@@ -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"] = "الاختصاص الضريبي";
|
||||
|
||||
@@ -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?";
|
||||
|
||||
@@ -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...";
|
||||
|
||||
@@ -7,29 +7,32 @@ $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 CSV Ş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_csv"] = "CSV Export";
|
||||
$lang["common_export_csv_no"] = "Xeyir";
|
||||
$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_gender_undefined"] = "";
|
||||
$lang["common_icon"] = "";
|
||||
$lang["common_id"] = "ID";
|
||||
$lang["common_import"] = "İmport";
|
||||
$lang["common_import"] = "Daxil et";
|
||||
$lang["common_import_change_file"] = "Dəyiş";
|
||||
$lang["common_import_csv"] = "CSV Import";
|
||||
$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ç";
|
||||
@@ -39,12 +42,15 @@ $lang["common_last_name_required"] = "Soyad tələb olunur.";
|
||||
$lang["common_last_page"] = "Son";
|
||||
$lang["common_learn_about_project"] = "Proyekt haqqında ən son məlumatı öyrənmək.";
|
||||
$lang["common_list_of"] = "Siyahısı";
|
||||
$lang["common_logo"] = "";
|
||||
$lang["common_logo_mark"] = "";
|
||||
$lang["common_logout"] = "Çıxış";
|
||||
$lang["common_migration_needed"] = "Girişdən sonra bazaya %1 köçməsi başlayacaq.";
|
||||
$lang["common_new"] = "Yenisi";
|
||||
$lang["common_no"] = "";
|
||||
$lang["common_no_persons_to_display"] = "Göstərmək üçün heç kim yoxdur.";
|
||||
$lang["common_none_selected_text"] = "Seçin";
|
||||
$lang["common_or"] = "Və Ya";
|
||||
$lang["common_or"] = "Və ya";
|
||||
$lang["common_phone_number"] = "Telefon";
|
||||
$lang["common_phone_number_required"] = "çıxarış ";
|
||||
$lang["common_please_visit_my"] = "Xahiş edirik ziyarət edin";
|
||||
@@ -58,13 +64,16 @@ $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_software_short"] = "";
|
||||
$lang["common_software_title"] = "";
|
||||
$lang["common_state"] = "Əyalət";
|
||||
$lang["common_submit"] = "Təsdiqlə";
|
||||
$lang["common_total_spent"] = "Cə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";
|
||||
$lang["common_welcome"] = "Xoş Gəlmisiniz";
|
||||
$lang["common_welcome_message"] = "ALSAN-a Xoş gəlmisiniz, başlamaq üçün bir modula basın.";
|
||||
$lang["common_yes"] = "";
|
||||
$lang["common_you_are_using_ospos"] = "Açıq Layihədə Satışın Avtomatlaşdırma Nöqtəsi versiya";
|
||||
$lang["common_zip"] = "Poçt Kodu";
|
||||
|
||||
@@ -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";
|
||||
@@ -123,6 +127,7 @@ $lang["config_financial_year_may"] = "1 May";
|
||||
$lang["config_financial_year_nov"] = "1 Noyabr";
|
||||
$lang["config_financial_year_oct"] = "1 Oktyabr";
|
||||
$lang["config_financial_year_sep"] = "1 Sentyabr";
|
||||
$lang["config_floating_labels"] = "";
|
||||
$lang["config_gcaptcha_enable"] = "Giriş Səyfəsi reCAPTCHA";
|
||||
$lang["config_gcaptcha_secret_key"] = "reCAPTCHA Gizli Açarı";
|
||||
$lang["config_gcaptcha_secret_key_required"] = "reCAPTCHA Gizli Açar olan sahə boş qala bilməz";
|
||||
@@ -134,9 +139,15 @@ $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ı";
|
||||
$lang["config_input_groups"] = "";
|
||||
$lang["config_integrations"] = "İnteqrasiya";
|
||||
$lang["config_integrations_configuration"] = "Üçüncü tərəf inteqrasiya";
|
||||
$lang["config_invoice"] = "Faktura";
|
||||
@@ -146,6 +157,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";
|
||||
@@ -164,6 +177,7 @@ $lang["config_locale_info"] = "Lokallaşdırma Konfiqurasiya Məlumatı";
|
||||
$lang["config_location"] = "Fond";
|
||||
$lang["config_location_configuration"] = "Anbar Yerləri";
|
||||
$lang["config_location_info"] = "Yer Konfiqurasiya Məlumatı";
|
||||
$lang["config_login_form"] = "";
|
||||
$lang["config_logout"] = "Çıxışdan əvvəl məlumatlari ehtiyat bazasına köçürmək istəyirsinizmi? Çıxış üçün Bekap və ya [Ləğv] üçün [OK]' düyməsinə basın.";
|
||||
$lang["config_mailchimp"] = "Mailçimp";
|
||||
$lang["config_mailchimp_api_key"] = "Mailchimp API Açarı";
|
||||
@@ -183,6 +197,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 +205,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 +247,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 +263,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ı";
|
||||
@@ -271,10 +292,13 @@ $lang["config_tax_decimals"] = "Vaxt";
|
||||
$lang["config_tax_id"] = "Vergi İD";
|
||||
$lang["config_tax_included"] = "Vergi Daxildir";
|
||||
$lang["config_theme"] = "Vebsayt";
|
||||
$lang["config_theme_preview"] = "";
|
||||
$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ı";
|
||||
|
||||
@@ -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,10 +25,6 @@ $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_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_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";
|
||||
|
||||
@@ -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?";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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_csv_import_failed"] = "CSV 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";
|
||||
|
||||
@@ -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";
|
||||
@@ -14,6 +14,9 @@ $lang["item_kits_error_adding_updating"] = "Malı yeniləməkdə və ya əlavə
|
||||
$lang["item_kits_find_kit_item"] = "Mal Dəsti";
|
||||
$lang["item_kits_info"] = "Mal Dəsti haqqında informasiya";
|
||||
$lang["item_kits_item"] = "Maddə";
|
||||
$lang["item_kits_item_kit_number"] = "Barkod";
|
||||
$lang["item_kits_item_kit_number_duplicate"] = "";
|
||||
$lang["item_kits_item_number"] = "";
|
||||
$lang["item_kits_items"] = "Mallar";
|
||||
$lang["item_kits_kit"] = "Dəstin İd";
|
||||
$lang["item_kits_kit_and_components"] = "Dəst və Komponentlər";
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
<?php
|
||||
|
||||
$lang["items_add_minus"] = "İnventar + Topla və ya - Çıx.";
|
||||
$lang["items_allow_alt_description"] = "Alternativ təsvirə icazə verin";
|
||||
$lang["items_amount_entry"] = "Məbləğ Əlavəsi";
|
||||
@@ -17,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";
|
||||
@@ -31,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_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_generate_barcodes"] = "şifrə yarat";
|
||||
$lang["items_hsn_code"] = "Harmonize Sistem Nomenklaturası";
|
||||
$lang["items_image"] = "Avatar";
|
||||
$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";
|
||||
@@ -108,4 +110,3 @@ $lang["items_unit_price_required"] = "Pərakəndə qiymət - vacib sahədir.";
|
||||
$lang["items_upc_database"] = "Barkod Məlumat Bazası";
|
||||
$lang["items_update"] = "Malı Yenilə";
|
||||
$lang["items_use_inventory_menu"] = "İnvertizasiya Menyusundan İstifadə Et";
|
||||
$lang["items_inventory_CSV_import_quantity"] = "Miqdarı CSV-dən idxal olunur";
|
||||
|
||||
@@ -6,5 +6,8 @@ $lang["login_invalid_gcaptcha"] = "Yanlış, Mən robot deyiləm.";
|
||||
$lang["login_invalid_installation"] = "Quraşdırma düzgün deyil, php.ini faylını yoxlayın.";
|
||||
$lang["login_invalid_username_and_password"] = "Ad və ya şifrə səhvdir.";
|
||||
$lang["login_login"] = "Giriş";
|
||||
$lang["login_logout"] = "";
|
||||
$lang["login_migration_needed"] = "";
|
||||
$lang["login_password"] = "Şifrə";
|
||||
$lang["login_username"] = "İstifadəçi";
|
||||
$lang["login_welcome"] = "";
|
||||
|
||||
@@ -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.";
|
||||
|
||||
@@ -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çü";
|
||||
|
||||
@@ -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əğ";
|
||||
|
||||
@@ -1,17 +1,20 @@
|
||||
<?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_adjustment"] = "";
|
||||
$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 +26,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ərdə tələb olunur)";
|
||||
$lang["sales_customer_required"] = "(Vacib)";
|
||||
$lang["sales_customer_total"] = "Cəmi";
|
||||
$lang["sales_date"] = "Satış Tarixi";
|
||||
@@ -87,7 +91,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 +100,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 +124,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 +135,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 +162,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.";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php
|
||||
|
||||
$lang["tables_all"] = "Всичко";
|
||||
$lang["tables_all"] = "Всичко/и";
|
||||
$lang["tables_columns"] = "Колони";
|
||||
$lang["tables_hide_show_pagination"] = "Скриване / Показване на страници";
|
||||
$lang["tables_loading"] = "Зареждане, моля изчакайте...";
|
||||
|
||||
@@ -7,7 +7,8 @@ $lang["common_close"] = "Затвори";
|
||||
$lang["common_comments"] = "Коментари";
|
||||
$lang["common_common"] = "Често срещани";
|
||||
$lang["common_confirm_search"] = "Избрали сте един или повече редове, след търсене няма да бъдат избрани. Наистина ли искате да подадете това търсене?";
|
||||
$lang["common_correct_errors"] = "";
|
||||
$lang["common_copyrights"] = "© 2010 - %1";
|
||||
$lang["common_correct_errors"] = "Моля, коригирайте установените грешки преди записване";
|
||||
$lang["common_country"] = "Държава";
|
||||
$lang["common_date"] = "Дата";
|
||||
$lang["common_delete"] = "Изтриване";
|
||||
@@ -26,6 +27,8 @@ $lang["common_first_page"] = "Първи";
|
||||
$lang["common_gender"] = "Пол";
|
||||
$lang["common_gender_female"] = "Ж";
|
||||
$lang["common_gender_male"] = "М";
|
||||
$lang["common_gender_undefined"] = "";
|
||||
$lang["common_icon"] = "";
|
||||
$lang["common_id"] = "Номер";
|
||||
$lang["common_import"] = "Внос";
|
||||
$lang["common_import_change_file"] = "Промяна";
|
||||
@@ -39,11 +42,14 @@ $lang["common_last_name_required"] = "Фамилия е задължително
|
||||
$lang["common_last_page"] = "Последна";
|
||||
$lang["common_learn_about_project"] = "за да научите най-новата информация за проекта.";
|
||||
$lang["common_list_of"] = "Списък с";
|
||||
$lang["common_logo"] = "";
|
||||
$lang["common_logo_mark"] = "";
|
||||
$lang["common_logout"] = "Излизане от профила";
|
||||
$lang["common_migration_needed"] = "";
|
||||
$lang["common_migration_needed"] = "Мигриране на база данни ще започне след влизане.";
|
||||
$lang["common_new"] = "Нов";
|
||||
$lang["common_no"] = "";
|
||||
$lang["common_no_persons_to_display"] = "Няма хора за показване.";
|
||||
$lang["common_none_selected_text"] = "Нищо не е избрано.";
|
||||
$lang["common_none_selected_text"] = "Нищо не е избрано";
|
||||
$lang["common_or"] = "Или";
|
||||
$lang["common_phone_number"] = "Телефонен номер";
|
||||
$lang["common_phone_number_required"] = "";
|
||||
@@ -58,6 +64,8 @@ $lang["common_return_policy"] = "Условия за връщане";
|
||||
$lang["common_search"] = "Търсене";
|
||||
$lang["common_search_options"] = "Опции за търсене";
|
||||
$lang["common_searched_for"] = "Търсене за";
|
||||
$lang["common_software_short"] = "";
|
||||
$lang["common_software_title"] = "";
|
||||
$lang["common_state"] = "Щат";
|
||||
$lang["common_submit"] = "Изпращане";
|
||||
$lang["common_total_spent"] = "Общо изразходвани";
|
||||
@@ -66,5 +74,6 @@ $lang["common_view_recent_sales"] = "Преглед на последните п
|
||||
$lang["common_website"] = "Уебсайт";
|
||||
$lang["common_welcome"] = "Добре дошли";
|
||||
$lang["common_welcome_message"] = "Добре дошли в OSPOS, кликнете върху модул по-долу, за да започнете.";
|
||||
$lang["common_yes"] = "";
|
||||
$lang["common_you_are_using_ospos"] = "Вие използвате Open Source Point Оf Sale версия";
|
||||
$lang["common_zip"] = "Пощенски код";
|
||||
|
||||
@@ -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";
|
||||
@@ -124,6 +127,7 @@ $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_floating_labels"] = "";
|
||||
$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";
|
||||
@@ -135,9 +139,15 @@ $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";
|
||||
$lang["config_input_groups"] = "";
|
||||
$lang["config_integrations"] = "";
|
||||
$lang["config_integrations_configuration"] = "";
|
||||
$lang["config_invoice"] = "Invoice";
|
||||
@@ -147,6 +157,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";
|
||||
@@ -165,6 +177,7 @@ $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_login_form"] = "";
|
||||
$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";
|
||||
@@ -184,6 +197,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 +205,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 +247,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 +263,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 +276,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";
|
||||
@@ -272,10 +292,13 @@ $lang["config_tax_decimals"] = "Tax Decimals";
|
||||
$lang["config_tax_id"] = "";
|
||||
$lang["config_tax_included"] = "Tax Included";
|
||||
$lang["config_theme"] = "Theme";
|
||||
$lang["config_theme_preview"] = "";
|
||||
$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";
|
||||
|
||||
@@ -12,19 +12,19 @@ $lang["customers_confirm_delete"] = "Наистина ли искате да и
|
||||
$lang["customers_confirm_restore"] = "Наистина ли искате да възстановите избраните клиенти?";
|
||||
$lang["customers_consent"] = "Съгласие за регистрация";
|
||||
$lang["customers_consent_required"] = "Регистрационното съгласие е задължително поле.";
|
||||
$lang["customers_customer"] = "Клиент";
|
||||
$lang["customers_date"] = "Дата";
|
||||
$lang["customers_discount"] = "Отстъпка";
|
||||
$lang["customers_discount_fixed"] = "";
|
||||
$lang["customers_discount_percent"] = "";
|
||||
$lang["customers_discount_type"] = "";
|
||||
$lang["customers_email_duplicate"] = "Имейл адресът вече е в базата данни.";
|
||||
$lang["customers_employee"] = "Служител";
|
||||
$lang["customers_error_adding_updating"] = "Добавянето или актуализирането на клиента е неуспешно.";
|
||||
$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"] = "Отстъпка";
|
||||
$lang["customers_discount_fixed"] = "Фиксирана отстъпка";
|
||||
$lang["customers_discount_percent"] = "Процент отстъпка";
|
||||
$lang["customers_discount_type"] = "Вид отстъпка";
|
||||
$lang["customers_email_duplicate"] = "Имейл адресът вече е в базата данни.";
|
||||
$lang["customers_employee"] = "Служител";
|
||||
$lang["customers_error_adding_updating"] = "Добавянето или актуализирането на клиента е неуспешно.";
|
||||
$lang["customers_import_items_csv"] = "Импортиране на клиент от CSV";
|
||||
$lang["customers_mailchimp_activity_click"] = "Email click";
|
||||
$lang["customers_mailchimp_activity_lastopen"] = "Последно отворен Имейл";
|
||||
@@ -47,7 +47,7 @@ $lang["customers_successful_adding"] = "Успешно добавихте кли
|
||||
$lang["customers_successful_deleted"] = "Вие успешно сте изтрили";
|
||||
$lang["customers_successful_updating"] = "Актуализирахте успешно клиента си";
|
||||
$lang["customers_tax_code"] = "Данъчен код";
|
||||
$lang["customers_tax_id"] = "";
|
||||
$lang["customers_tax_id"] = "Данъчен номер";
|
||||
$lang["customers_taxable"] = "Облагаем";
|
||||
$lang["customers_total"] = "Общо изразходвани средства";
|
||||
$lang["customers_update"] = "Актуализиране на клиента";
|
||||
|
||||
@@ -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_csv_import_failed"] = "CSV import failed.";
|
||||
$lang["giftcards_generate_barcodes"] = "Generate Barcodes";
|
||||
$lang["giftcards_giftcard"] = "Gift Card";
|
||||
$lang["giftcards_giftcard_number"] = "Gift Card Number";
|
||||
|
||||
@@ -14,6 +14,9 @@ $lang["item_kits_error_adding_updating"] = "Item Kit add or update failed.";
|
||||
$lang["item_kits_find_kit_item"] = "Kit Item";
|
||||
$lang["item_kits_info"] = "Item Kit Info";
|
||||
$lang["item_kits_item"] = "Item";
|
||||
$lang["item_kits_item_kit_number"] = "";
|
||||
$lang["item_kits_item_kit_number_duplicate"] = "";
|
||||
$lang["item_kits_item_number"] = "";
|
||||
$lang["item_kits_items"] = "Items";
|
||||
$lang["item_kits_kit"] = "Kit ID";
|
||||
$lang["item_kits_kit_and_components"] = "Kit and Components";
|
||||
|
||||
@@ -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_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_generate_barcodes"] = "Generate Barcodes";
|
||||
$lang["items_hsn_code"] = "";
|
||||
$lang["items_image"] = "Avatar";
|
||||
$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";
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
<?php
|
||||
|
||||
$lang["login_gcaptcha"] = "I'm not a robot.";
|
||||
$lang["login_gcaptcha"] = "Не съм робот.";
|
||||
$lang["login_go"] = "Go";
|
||||
$lang["login_invalid_gcaptcha"] = "Invalid I'm not a robot.";
|
||||
$lang["login_invalid_installation"] = "The installation is not correct, check your php.ini file.";
|
||||
$lang["login_invalid_username_and_password"] = "Invalid Username or Password.";
|
||||
$lang["login_login"] = "Login";
|
||||
$lang["login_logout"] = "";
|
||||
$lang["login_migration_needed"] = "";
|
||||
$lang["login_password"] = "Password";
|
||||
$lang["login_username"] = "Username";
|
||||
$lang["login_welcome"] = "";
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<?php
|
||||
<?php
|
||||
|
||||
$lang["customers_available_points"] = "Налични точки";
|
||||
$lang["rewards_package"] = "Награди";
|
||||
$lang["rewards_remaining_balance"] = "Оставащата стойност на точките за награда е ";
|
||||
@@ -9,9 +10,11 @@ $lang["sales_amount_tendered"] = "Предоставена сума";
|
||||
$lang["sales_authorized_signature"] = "Оторизиран подпис";
|
||||
$lang["sales_cancel_sale"] = "Отказ";
|
||||
$lang["sales_cash"] = "В брой";
|
||||
$lang["sales_cash_adjustment"] = "Корекция на пари в брой";
|
||||
$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"] = "Проверка";
|
||||
@@ -23,6 +26,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"] = "Намаление";
|
||||
@@ -64,7 +68,7 @@ $lang["sales_giftcard_balance"] = "Gift Card Баланс";
|
||||
$lang["sales_giftcard_number"] = "Gift Card Номер";
|
||||
$lang["sales_group_by_category"] = "Групирайте по категория";
|
||||
$lang["sales_group_by_type"] = "Групиране по тип";
|
||||
$lang["sales_hsn"] = "";
|
||||
$lang["sales_hsn"] = "HSN";
|
||||
$lang["sales_id"] = "Номер на продажба";
|
||||
$lang["sales_include_prices"] = "Включва цени?";
|
||||
$lang["sales_invoice"] = "Фактура";
|
||||
@@ -77,9 +81,9 @@ $lang["sales_invoice_number_duplicate"] = "Номерът на фактурит
|
||||
$lang["sales_invoice_sent"] = "Фактура, изпратена до";
|
||||
$lang["sales_invoice_total"] = "Фактура общо";
|
||||
$lang["sales_invoice_type_custom_invoice"] = "Ръчна фактура";
|
||||
$lang["sales_invoice_type_custom_tax_invoice"] = "";
|
||||
$lang["sales_invoice_type_custom_tax_invoice"] = "Фактура по избор(custom_tax_invoice.php)";
|
||||
$lang["sales_invoice_type_invoice"] = "Фактура";
|
||||
$lang["sales_invoice_type_tax_invoice"] = "";
|
||||
$lang["sales_invoice_type_tax_invoice"] = "Данъчна фактура (tax_invoice.php)";
|
||||
$lang["sales_invoice_unsent"] = "Фактурата не можа да бъде изпратена до";
|
||||
$lang["sales_invoice_update"] = "Преизчисляване";
|
||||
$lang["sales_item_insufficient_of_stock"] = "Елементът има недостатъчен запас.";
|
||||
@@ -96,6 +100,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"] = " sales nontaxed ind ";
|
||||
$lang["sales_not_authorized"] = "Това действие не е разрешено.";
|
||||
$lang["sales_one_or_multiple"] = "Продажба (и)";
|
||||
$lang["sales_payment"] = "Вид плащане";
|
||||
@@ -119,6 +124,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"] = "Връщане";
|
||||
@@ -153,9 +159,10 @@ $lang["sales_suspended_sales"] = "Преустановен";
|
||||
$lang["sales_table"] = "Маса";
|
||||
$lang["sales_takings"] = "Ежедневни продажби";
|
||||
$lang["sales_tax"] = "Данък";
|
||||
$lang["sales_tax_id"] = "";
|
||||
$lang["sales_tax_invoice"] = "";
|
||||
$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"] = "Продажната транзакция е неуспешна.";
|
||||
|
||||
@@ -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"] = "";
|
||||
|
||||
31
application/language/bs-BA/attributes_lang.php
Executable file
31
application/language/bs-BA/attributes_lang.php
Executable file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
$lang["attributes_attribute_value_invalid_chars"] = "Vrijednost atributa ne može sadržavati ':' ili '|'";
|
||||
$lang["attributes_confirm_delete"] = "Da li ste sigurni da želite da izbrišete izabrani atribut?";
|
||||
$lang["attributes_confirm_restore"] = "Da li ste sigurni da želite vratiti izabrane atribute?";
|
||||
$lang["attributes_definition_cannot_be_deleted"] = "Nije moguće izbrisati izabrane atribut";
|
||||
$lang["attributes_definition_error_adding_updating"] = "Atribut %1 nije moguće dodati ili ažurirati. Molimo provjerite dnevnik grešaka.";
|
||||
$lang["attributes_definition_flags"] = "Vidljivost atributa";
|
||||
$lang["attributes_definition_group"] = "Grupa";
|
||||
$lang["attributes_definition_id"] = "Id";
|
||||
$lang["attributes_definition_name"] = "Dodaj Atribut";
|
||||
$lang["attributes_definition_name_required"] = "Ime atributa je obavezno polje";
|
||||
$lang["attributes_definition_one_or_multiple"] = "atributi";
|
||||
$lang["attributes_definition_successful_adding"] = "Uspješno ste dodali stavku";
|
||||
$lang["attributes_definition_successful_deleted"] = "Uspješno ste izbrisali";
|
||||
$lang["attributes_definition_successful_updating"] = "Uspješno ste ažurirali atribute";
|
||||
$lang["attributes_definition_type"] = "Tip atributa";
|
||||
$lang["attributes_definition_type_required"] = "Tip atributa je obavezno polje";
|
||||
$lang["attributes_definition_unit"] = "Jedinice mjere";
|
||||
$lang["attributes_definition_values"] = "Vrijednosti atributa";
|
||||
$lang["attributes_new"] = "Novi atribut";
|
||||
$lang["attributes_no_attributes_to_display"] = "Nema stavki za prikaz";
|
||||
$lang["attributes_receipt_visibility"] = "Račun";
|
||||
$lang["attributes_show_in_items"] = "Prikaži u stavkama";
|
||||
$lang["attributes_show_in_items_visibility"] = "Stavka";
|
||||
$lang["attributes_show_in_receipt"] = "Prikaži u računu";
|
||||
$lang["attributes_show_in_receivings"] = "Prikaži na ulazima";
|
||||
$lang["attributes_show_in_receivings_visibility"] = "Ulazi";
|
||||
$lang["attributes_show_in_sales"] = "Prikaži u prodaji";
|
||||
$lang["attributes_show_in_sales_visibility"] = "Prodaja";
|
||||
$lang["attributes_update"] = "Ažuriraj atribut";
|
||||
10
application/language/bs-BA/bootstrap_tables_lang.php
Executable file
10
application/language/bs-BA/bootstrap_tables_lang.php
Executable file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
$lang["tables_all"] = "Sve";
|
||||
$lang["tables_columns"] = "Kolone";
|
||||
$lang["tables_hide_show_pagination"] = "Sakrij / prikaži paginaciju";
|
||||
$lang["tables_loading"] = "Učitavanje sačekajte...";
|
||||
$lang["tables_page_from_to"] = "Prikazivanje {0} do {1} od {2} redova";
|
||||
$lang["tables_refresh"] = "Osvježi";
|
||||
$lang["tables_rows_per_page"] = "{0} redova po stranici";
|
||||
$lang["tables_toggle"] = "Promijeni prikaz";
|
||||
38
application/language/bs-BA/cashups_lang.php
Executable file
38
application/language/bs-BA/cashups_lang.php
Executable file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
$lang["cashups_amount"] = "Iznos";
|
||||
$lang["cashups_amount_number"] = "Iznos mora biti numerički";
|
||||
$lang["cashups_amount_required"] = "Iznos je obavezno polje.";
|
||||
$lang["cashups_cannot_be_deleted"] = "Isplata se ne može izbrisati";
|
||||
$lang["cashups_close_date"] = "Datum zatvaranja";
|
||||
$lang["cashups_close_employee"] = "Zatvorio";
|
||||
$lang["cashups_closed_amount_card"] = "Kartica";
|
||||
$lang["cashups_closed_amount_cash"] = "Zatvorena gotovina";
|
||||
$lang["cashups_closed_amount_check"] = "Ček";
|
||||
$lang["cashups_closed_amount_due"] = "Taksa";
|
||||
$lang["cashups_closed_amount_total"] = "Ukupno";
|
||||
$lang["cashups_closed_date"] = "Datum zatvaranja";
|
||||
$lang["cashups_confirm_delete"] = "Da li ste sigurni da želite izbrisati izabrane isplate?";
|
||||
$lang["cashups_confirm_restore"] = "Da li ste sigurni da želite vratiti izabranu isplatu?";
|
||||
$lang["cashups_date_number"] = "Datum mora biti numerički";
|
||||
$lang["cashups_date_required"] = "Datum je obavezno polje";
|
||||
$lang["cashups_description"] = "Opis";
|
||||
$lang["cashups_error_adding_updating"] = "Greška prilikom dodavanja/ažuriranja isplate";
|
||||
$lang["cashups_id"] = "Id";
|
||||
$lang["cashups_info"] = "Informacije o isplatama";
|
||||
$lang["cashups_is_deleted"] = "Izbrisano";
|
||||
$lang["cashups_new"] = "Nova isplata";
|
||||
$lang["cashups_no_cashups_to_display"] = "Nema isplate za prikaz";
|
||||
$lang["cashups_none_selected"] = "Niste odabrali nijednu isplatu";
|
||||
$lang["cashups_note"] = "Napomene";
|
||||
$lang["cashups_one_or_multiple"] = "Gotovina";
|
||||
$lang["cashups_open_amount_cash"] = "Otvorena gotovina";
|
||||
$lang["cashups_open_date"] = "Datum otvaranja";
|
||||
$lang["cashups_open_employee"] = "Otvorio";
|
||||
$lang["cashups_opened_date"] = "Datum otvaranja";
|
||||
$lang["cashups_successful_adding"] = "Isplata je uspješno dodata";
|
||||
$lang["cashups_successful_deleted"] = "Isplata je uspješno izbrisata";
|
||||
$lang["cashups_successful_updating"] = "Isplata je uspješno ažurirana";
|
||||
$lang["cashups_total"] = "Ukupno";
|
||||
$lang["cashups_transfer_amount_cash"] = "Ulaz/izlaz gotovine";
|
||||
$lang["cashups_update"] = "Ažuriranje isplate";
|
||||
79
application/language/bs-BA/common_lang.php
Executable file
79
application/language/bs-BA/common_lang.php
Executable file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
$lang["common_address_1"] = "Adresa 1";
|
||||
$lang["common_address_2"] = "Adresa 2";
|
||||
$lang["common_city"] = "Grad";
|
||||
$lang["common_close"] = "Zatvori";
|
||||
$lang["common_comments"] = "Komentari";
|
||||
$lang["common_common"] = "Zajedničko";
|
||||
$lang["common_confirm_search"] = "Odabrali ste jedan ili više redova koji neće biti izabrani nakon pretrage. Da li ste sigurni da želite pretragu?";
|
||||
$lang["common_copyrights"] = "© 2010 - %1";
|
||||
$lang["common_correct_errors"] = "Ispravite identifikovane pogreške prije snimanja";
|
||||
$lang["common_country"] = "Država";
|
||||
$lang["common_date"] = "Datum";
|
||||
$lang["common_delete"] = "Izbriši";
|
||||
$lang["common_det"] = "Detalji";
|
||||
$lang["common_download_import_template"] = "Preuzmite šablon za uvoz(CSV)";
|
||||
$lang["common_edit"] = "Uredi";
|
||||
$lang["common_email"] = "E-mail";
|
||||
$lang["common_email_invalid_format"] = "Neispravan e-mail";
|
||||
$lang["common_export_csv"] = "CSV izvoz";
|
||||
$lang["common_export_csv_no"] = "Ne";
|
||||
$lang["common_export_csv_yes"] = "Da";
|
||||
$lang["common_fields_required_message"] = "Polja u crvenom su obavezna";
|
||||
$lang["common_first_name"] = "Ime";
|
||||
$lang["common_first_name_required"] = "Ime je obavezno";
|
||||
$lang["common_first_page"] = "Prva";
|
||||
$lang["common_gender"] = "Pol";
|
||||
$lang["common_gender_female"] = "Ž";
|
||||
$lang["common_gender_male"] = "M";
|
||||
$lang["common_gender_undefined"] = "";
|
||||
$lang["common_icon"] = "";
|
||||
$lang["common_id"] = "Id";
|
||||
$lang["common_import"] = "Uvoz";
|
||||
$lang["common_import_change_file"] = "Promjena";
|
||||
$lang["common_import_csv"] = "CSV uvoz";
|
||||
$lang["common_import_full_path"] = "Potrebna je potpuna putanja do CSV datoteke";
|
||||
$lang["common_import_remove_file"] = "Ukloni";
|
||||
$lang["common_import_select_file"] = "Odaberite datoteku";
|
||||
$lang["common_inv"] = "Zaliha";
|
||||
$lang["common_last_name"] = "Prezime";
|
||||
$lang["common_last_name_required"] = "Prezime je obavezno";
|
||||
$lang["common_last_page"] = "Poslednja";
|
||||
$lang["common_learn_about_project"] = "da biste saznali najnovije informacije o projektu";
|
||||
$lang["common_list_of"] = "Lista";
|
||||
$lang["common_logo"] = "";
|
||||
$lang["common_logo_mark"] = "";
|
||||
$lang["common_logout"] = "Odjava";
|
||||
$lang["common_migration_needed"] = "Premještanje baze podataka na %1 počinje nakon prijave.";
|
||||
$lang["common_new"] = "Novi";
|
||||
$lang["common_no"] = "";
|
||||
$lang["common_no_persons_to_display"] = "Nema dobavljača za prikaz";
|
||||
$lang["common_none_selected_text"] = "[Izaberi]";
|
||||
$lang["common_or"] = "Ili";
|
||||
$lang["common_phone_number"] = "Broj telefona";
|
||||
$lang["common_phone_number_required"] = "Broj telefona je obavezan";
|
||||
$lang["common_please_visit_my"] = "Posjetite";
|
||||
$lang["common_powered_by"] = "Podržano od";
|
||||
$lang["common_price"] = "Cijena";
|
||||
$lang["common_print"] = "Štampanje";
|
||||
$lang["common_remove"] = "Ukloni";
|
||||
$lang["common_required"] = "Obavezan";
|
||||
$lang["common_restore"] = "Vrati";
|
||||
$lang["common_return_policy"] = "Povratna informacija";
|
||||
$lang["common_search"] = "Traži";
|
||||
$lang["common_search_options"] = "Opcije pretrage";
|
||||
$lang["common_searched_for"] = "Traženo";
|
||||
$lang["common_software_short"] = "";
|
||||
$lang["common_software_title"] = "";
|
||||
$lang["common_state"] = "Entitet";
|
||||
$lang["common_submit"] = "Prihvati";
|
||||
$lang["common_total_spent"] = "Ukupno potrošeno";
|
||||
$lang["common_unknown"] = "Nepoznato";
|
||||
$lang["common_view_recent_sales"] = "Pogledaj nedavne prodaje";
|
||||
$lang["common_website"] = "opensourcepos.org";
|
||||
$lang["common_welcome"] = "Dobrodošli";
|
||||
$lang["common_welcome_message"] = "Dobrodošli u OSPOS, kliknite na modul ispod da biste započeli";
|
||||
$lang["common_yes"] = "";
|
||||
$lang["common_you_are_using_ospos"] = "";
|
||||
$lang["common_zip"] = "Poštanski broj";
|
||||
304
application/language/bs-BA/config_lang.php
Executable file
304
application/language/bs-BA/config_lang.php
Executable file
@@ -0,0 +1,304 @@
|
||||
<?php
|
||||
|
||||
$lang["config_address"] = "Adresa kompanije";
|
||||
$lang["config_address_required"] = "Adresa kompanije je obavezno polje";
|
||||
$lang["config_all_set"] = "Sva su dopuštenja datoteka ispravno postavljena!";
|
||||
$lang["config_allow_duplicate_barcodes"] = "Dozvoli dvostruke barkodove";
|
||||
$lang["config_apostrophe"] = "apostrof";
|
||||
$lang["config_backup_button"] = "Rezervna kopija";
|
||||
$lang["config_backup_database"] = "Rezervna kopija baze podataka";
|
||||
$lang["config_barcode"] = "Barkod";
|
||||
$lang["config_barcode_company"] = "Kompanija";
|
||||
$lang["config_barcode_configuration"] = "Konfiguracija barkoda";
|
||||
$lang["config_barcode_content"] = "Sadržaj barkoda";
|
||||
$lang["config_barcode_first_row"] = "1 red";
|
||||
$lang["config_barcode_font"] = "Font";
|
||||
$lang["config_barcode_formats"] = "Unesi format";
|
||||
$lang["config_barcode_generate_if_empty"] = "Generiši ako je prazno";
|
||||
$lang["config_barcode_height"] = "Visina(px)";
|
||||
$lang["config_barcode_id"] = "Id / naziv artikla";
|
||||
$lang["config_barcode_info"] = "Informacije o konfiguraciji barkoda";
|
||||
$lang["config_barcode_layout"] = "Izgled barkoda";
|
||||
$lang["config_barcode_name"] = "Naziv";
|
||||
$lang["config_barcode_number"] = "Barkod";
|
||||
$lang["config_barcode_number_in_row"] = "Broj u redu";
|
||||
$lang["config_barcode_page_cellspacing"] = "Prikaži razmak ćelija na stranici";
|
||||
$lang["config_barcode_page_width"] = "Širina stranice";
|
||||
$lang["config_barcode_price"] = "Cijena";
|
||||
$lang["config_barcode_second_row"] = "2.red";
|
||||
$lang["config_barcode_third_row"] = "3.red";
|
||||
$lang["config_barcode_tooltip"] = "Upozorenje: Ovo svokstvo može dovesti do uvoza ili kreiranja duplih stavki. Nemojte koristiti ako to ne želite";
|
||||
$lang["config_barcode_type"] = "Tip barkoda";
|
||||
$lang["config_barcode_width"] = "Širina (px)";
|
||||
$lang["config_bottom"] = "Dno";
|
||||
$lang["config_cash_decimals"] = "Decimale gotovine";
|
||||
$lang["config_cash_decimals_tooltip"] = "Ako su Decimale gotovine i Valutne decimale iste, onda neće biti zaokruživanja gotovine.";
|
||||
$lang["config_cash_rounding"] = "Zaokruživanje gotovine";
|
||||
$lang["config_category_dropdown"] = "Prikaži kategoriju kao padajući meni";
|
||||
$lang["config_center"] = "Centar";
|
||||
$lang["config_comma"] = "zarez";
|
||||
$lang["config_company"] = "Kompanija";
|
||||
$lang["config_company_change_image"] = "Promijeni logo";
|
||||
$lang["config_company_logo"] = "Logo kompanije";
|
||||
$lang["config_company_remove_image"] = "Ukloni logo";
|
||||
$lang["config_company_required"] = "Naziv kompanije je obavezno polje";
|
||||
$lang["config_company_select_image"] = "Izaberite sliku";
|
||||
$lang["config_company_website_url"] = "Adresa web stranice nije valjana (http://...)";
|
||||
$lang["config_country_codes"] = "Kod zemlje";
|
||||
$lang["config_country_codes_tooltip"] = "Lista kodova zemalja odvojena zarezima za traženje nominalnih adresa.";
|
||||
$lang["config_currency_code"] = "Kod valute";
|
||||
$lang["config_currency_decimals"] = "Velutne decimale";
|
||||
$lang["config_currency_symbol"] = "Simbol valute";
|
||||
$lang["config_customer_reward"] = "Nagrada";
|
||||
$lang["config_customer_reward_duplicate"] = "Nagrada mora biti jedinstvena.";
|
||||
$lang["config_customer_reward_enable"] = "Omogući nagrade kupcima";
|
||||
$lang["config_customer_reward_invalid_chars"] = "Nagrada ne može sadržavati '_'";
|
||||
$lang["config_customer_reward_required"] = "Nagrada je obavezno polje";
|
||||
$lang["config_customer_sales_tax_support"] = "";
|
||||
$lang["config_date_or_time_format"] = "Filter datuma i vremena";
|
||||
$lang["config_datetimeformat"] = "Format datuma i vremena";
|
||||
$lang["config_decimal_point"] = "Decimalna točka";
|
||||
$lang["config_default_barcode_font_size_number"] = "Veličina fonta za barkod mora biti broj";
|
||||
$lang["config_default_barcode_font_size_required"] = "Veličina fonta barkoda je obavezno polje";
|
||||
$lang["config_default_barcode_height_number"] = "Visina barkoda mora biti broj";
|
||||
$lang["config_default_barcode_height_required"] = "Visina barkoda je obavezno polje";
|
||||
$lang["config_default_barcode_num_in_row_number"] = "Broj barkoda u redu mora biti broj";
|
||||
$lang["config_default_barcode_num_in_row_required"] = "Broj barkoda u redu je obavezno polje";
|
||||
$lang["config_default_barcode_page_cellspacing_number"] = "Razmak ćelija sa barkodom mora biti broj";
|
||||
$lang["config_default_barcode_page_cellspacing_required"] = "Rastojanje ćelija na stranici sa barkodom je obavezno polje.";
|
||||
$lang["config_default_barcode_page_width_number"] = "Širina stranice barkoda mora biti broj";
|
||||
$lang["config_default_barcode_page_width_required"] = "Širina stranice barkoda je obavezno polje";
|
||||
$lang["config_default_barcode_width_number"] = "Standardna širina barkoda mora biti broj";
|
||||
$lang["config_default_barcode_width_required"] = "Širina barkoda mora bit broj";
|
||||
$lang["config_default_item_columns"] = "Vidljiva stavka kolone";
|
||||
$lang["config_default_origin_tax_code"] = "Šifra poreza";
|
||||
$lang["config_default_receivings_discount"] = "Popust za ulaze";
|
||||
$lang["config_default_receivings_discount_number"] = "Popust za ulaz mora biti broj";
|
||||
$lang["config_default_receivings_discount_required"] = "Popust za ulaz je obavezno polje";
|
||||
$lang["config_default_sales_discount"] = "Popust na prodaju";
|
||||
$lang["config_default_sales_discount_number"] = "Popust na prodaju mora biti broj";
|
||||
$lang["config_default_sales_discount_required"] = "Popust na prodaju je obavezno polje";
|
||||
$lang["config_default_tax_category"] = "Poreska kategorija";
|
||||
$lang["config_default_tax_code"] = "Poreska šifra";
|
||||
$lang["config_default_tax_jurisdiction"] = "Poreska uprava";
|
||||
$lang["config_default_tax_name_number"] = "Naziv poreza mora biti string.";
|
||||
$lang["config_default_tax_name_required"] = "Naziv poreza je obavezno polje";
|
||||
$lang["config_default_tax_rate"] = "Stopa poreza %";
|
||||
$lang["config_default_tax_rate_1"] = "Stopa poreza 1 %";
|
||||
$lang["config_default_tax_rate_2"] = "Stopa poreza 2 %";
|
||||
$lang["config_default_tax_rate_number"] = "Stopa poreza mora biti broj";
|
||||
$lang["config_default_tax_rate_required"] = "Stopa poreza je obavezno polje";
|
||||
$lang["config_derive_sale_quantity"] = "Dozvoli izvedenu količinu prodaje";
|
||||
$lang["config_derive_sale_quantity_tooltip"] = "Ako se izabere, za artikle naručene po produženom iznosu biće obezbjeđen novi tip artikla";
|
||||
$lang["config_dinner_table"] = "Sto";
|
||||
$lang["config_dinner_table_duplicate"] = "Sto mora biti jedinstven";
|
||||
$lang["config_dinner_table_enable"] = "Omogući stolove za večeru";
|
||||
$lang["config_dinner_table_invalid_chars"] = "Naziv stola ne može sadržavati '_'.";
|
||||
$lang["config_dinner_table_required"] = "Sto je obavezno polje.";
|
||||
$lang["config_dot"] = "tačka";
|
||||
$lang["config_email"] = "E-mail";
|
||||
$lang["config_email_configuration"] = "Konfiguracija e-mail";
|
||||
$lang["config_email_mailpath"] = "Putanja do Sendmaila";
|
||||
$lang["config_email_protocol"] = "Protokol";
|
||||
$lang["config_email_receipt_check_behaviour"] = "Polje za potvrdu e-mail";
|
||||
$lang["config_email_receipt_check_behaviour_always"] = "Uvijek potvrđeno";
|
||||
$lang["config_email_receipt_check_behaviour_last"] = "Zapamti poslednji izbor";
|
||||
$lang["config_email_receipt_check_behaviour_never"] = "Uvijek nepotvrđeno";
|
||||
$lang["config_email_smtp_crypto"] = "SMTP šifriranje";
|
||||
$lang["config_email_smtp_host"] = "SMTP Server";
|
||||
$lang["config_email_smtp_pass"] = "SMTP Lozinka";
|
||||
$lang["config_email_smtp_port"] = "SMTP Port";
|
||||
$lang["config_email_smtp_timeout"] = "SMTP pauza";
|
||||
$lang["config_email_smtp_user"] = "SMTP Korisničko ime";
|
||||
$lang["config_enforce_privacy"] = "Ostvarite privatnost";
|
||||
$lang["config_enforce_privacy_tooltip"] = "Zaštitite privatnost kupaca primjenjujući kodiranje podataka u slučaju brisanja njihovih podataka";
|
||||
$lang["config_fax"] = "Faks";
|
||||
$lang["config_file_perm"] = "Postoje problemi sa dozvolama za datoteke, popravite i ponovo učitajte ovu stranicu.";
|
||||
$lang["config_financial_year"] = "Početak fiskalne godine";
|
||||
$lang["config_financial_year_apr"] = "1. April";
|
||||
$lang["config_financial_year_aug"] = "1. Avgust";
|
||||
$lang["config_financial_year_dec"] = "1. Decembar";
|
||||
$lang["config_financial_year_feb"] = "1. Februar";
|
||||
$lang["config_financial_year_jan"] = "1. Januar";
|
||||
$lang["config_financial_year_jul"] = "1. Juli";
|
||||
$lang["config_financial_year_jun"] = "1. Juni";
|
||||
$lang["config_financial_year_mar"] = "1. Mart";
|
||||
$lang["config_financial_year_may"] = "1. Maj";
|
||||
$lang["config_financial_year_nov"] = "1. Novembar";
|
||||
$lang["config_financial_year_oct"] = "1. Oktobar";
|
||||
$lang["config_financial_year_sep"] = "1. Septembar";
|
||||
$lang["config_floating_labels"] = "";
|
||||
$lang["config_gcaptcha_enable"] = "Stranica za prijavu reCAPTCHA";
|
||||
$lang["config_gcaptcha_secret_key"] = "reCAPTCHA tajni ključ";
|
||||
$lang["config_gcaptcha_secret_key_required"] = "reCAPTCHA tajni ključ je obavezno polje";
|
||||
$lang["config_gcaptcha_site_key"] = "reCAPTCHA ključ sajta";
|
||||
$lang["config_gcaptcha_site_key_required"] = "reCAPTCHA Ključ sajta je obavezno polje";
|
||||
$lang["config_gcaptcha_tooltip"] = "Zaštitite stranicu za prijavu pomoću Google reCAPTCHA, kliknite na ikonu za nabavku API ključa";
|
||||
$lang["config_general"] = "Generalno";
|
||||
$lang["config_general_configuration"] = "Opšta konfiguracija";
|
||||
$lang["config_giftcard_number"] = "Broj poklon bona";
|
||||
$lang["config_giftcard_random"] = "Generiši nasumice";
|
||||
$lang["config_giftcard_series"] = "Generiši u seriji";
|
||||
$lang["config_image_allowed_file_types"] = "Dozvoljeni tipovi datoteka";
|
||||
$lang["config_image_max_height_tooltip"] = "Maksimalna dozvoljena visina učitavanja slike u pikselima (px).";
|
||||
$lang["config_image_max_size_tooltip"] = "Maksimalna dozvoljena veličina datoteke za prijenos slike u kilobajtima (kb).";
|
||||
$lang["config_image_max_width_tooltip"] = "Maksimalna dozvoljena širina slike u pikselima (px).";
|
||||
$lang["config_image_restrictions"] = "Ograničenja za učitavanje slike";
|
||||
$lang["config_include_hsn"] = "Uključite podršku za HSN kodove";
|
||||
$lang["config_info"] = "Informacije";
|
||||
$lang["config_info_configuration"] = "Info o web trgovini";
|
||||
$lang["config_input_groups"] = "";
|
||||
$lang["config_integrations"] = "Integracije";
|
||||
$lang["config_integrations_configuration"] = "Integracije trećih strana";
|
||||
$lang["config_invoice"] = "Faktura";
|
||||
$lang["config_invoice_configuration"] = "Podešavanja štamapnja";
|
||||
$lang["config_invoice_default_comments"] = "Komentar na fakturi";
|
||||
$lang["config_invoice_email_message"] = "Predložak e-mail za fakture";
|
||||
$lang["config_invoice_enable"] = "Omogući fakturisanje";
|
||||
$lang["config_invoice_printer"] = "Štampanje faktura";
|
||||
$lang["config_invoice_type"] = "Tip fakture";
|
||||
$lang["config_is_readable"] = "čitljiv je, ali dozvole su veće od 660.";
|
||||
$lang["config_is_writable"] = "može se napisati, ali dozvole su veće od 750.";
|
||||
$lang["config_jsprintsetup_required"] = "Upozorenje! Onemogućene opcije će raditi samo ako imate instaliran FireFox jsPrintSetup dodatak. Svakako snimiti?";
|
||||
$lang["config_language"] = "Jezik";
|
||||
$lang["config_last_used_invoice_number"] = "Zadnji korišćeni broj fakture";
|
||||
$lang["config_last_used_quote_number"] = "Zadnji korišćeni broj citata";
|
||||
$lang["config_last_used_work_order_number"] = "Zadnji korišćeni broj R/N";
|
||||
$lang["config_left"] = "Lijevo";
|
||||
$lang["config_license"] = "Licenca";
|
||||
$lang["config_license_configuration"] = "Izjava o licenci";
|
||||
$lang["config_line_sequence"] = "Redoslijed linija";
|
||||
$lang["config_lines_per_page"] = "Linija po stranici";
|
||||
$lang["config_lines_per_page_number"] = "Linije po stranici moraju biti broj";
|
||||
$lang["config_lines_per_page_required"] = "Broj linija po stranici je obavezan podatak";
|
||||
$lang["config_locale"] = "Lokalizacija";
|
||||
$lang["config_locale_configuration"] = "Konfiguracija";
|
||||
$lang["config_locale_info"] = "Info o lokalnoj konfiguraciji";
|
||||
$lang["config_location"] = "Skladište";
|
||||
$lang["config_location_configuration"] = "Lokacije skladišta";
|
||||
$lang["config_location_info"] = "Informacije o konfiguraciji lokacije";
|
||||
$lang["config_login_form"] = "";
|
||||
$lang["config_logout"] = "Zar ne želite da napravite rezervnu kopiju prije odjave? Kliknite [OK] za sigurnosnu kopiju, [Cancel] da biste se odjavili.";
|
||||
$lang["config_mailchimp"] = "Mailchimp";
|
||||
$lang["config_mailchimp_api_key"] = "Mailchimp API ključ";
|
||||
$lang["config_mailchimp_configuration"] = "Mailchimp konfiguracija";
|
||||
$lang["config_mailchimp_key_successfully"] = "API ključ je važeći";
|
||||
$lang["config_mailchimp_key_unsuccessfully"] = "API ključ je nevažeći";
|
||||
$lang["config_mailchimp_lists"] = "Mailchimp lista";
|
||||
$lang["config_mailchimp_tooltip"] = "Kliknite na ikonu za API ključ.";
|
||||
$lang["config_message"] = "Poruke";
|
||||
$lang["config_message_configuration"] = "Konfigurisanje poruke";
|
||||
$lang["config_msg_msg"] = "Snimljena tekst poruka";
|
||||
$lang["config_msg_msg_placeholder"] = "Ako želite koristiti SMS šablon, snimite poruku ovdje. U suprotnom ostavite prazno polje.";
|
||||
$lang["config_msg_pwd"] = "SMS-API lozinke";
|
||||
$lang["config_msg_pwd_required"] = "SMS-API lozinke je obavezno polje";
|
||||
$lang["config_msg_src"] = "SMS-API ID pošiljaoca";
|
||||
$lang["config_msg_src_required"] = "SMS-API Id pošiljaoca je obavezno polje";
|
||||
$lang["config_msg_uid"] = "SMS-API korisnika";
|
||||
$lang["config_msg_uid_required"] = "SMS-API korisnika je obavezno polje";
|
||||
$lang["config_multi_pack_enabled"] = "Više pakovanja po stavci";
|
||||
$lang["config_no_risk"] = "Nema rizika / ugroženosti.";
|
||||
$lang["config_none"] = "nijedan";
|
||||
$lang["config_notify_alignment"] = "Položaj iskačuće obavijesti";
|
||||
$lang["config_number_format"] = "Format broja";
|
||||
$lang["config_number_locale"] = "Lokalizacija";
|
||||
$lang["config_number_locale_invalid"] = "Uneseni jezik nije važeći. Provjerite vezu u opisu alata kako biste pronašli osjetljivu vrijednost";
|
||||
$lang["config_number_locale_required"] = "Broj lokacije je obavezno polje";
|
||||
$lang["config_number_locale_tooltip"] = "Pronađite odgovarajuću lokaciju na ovom linku";
|
||||
$lang["config_os_timezone"] = "OSPOS vremenska zona:";
|
||||
$lang["config_ospos_info"] = "OSPOS instalacione informacije";
|
||||
$lang["config_payment_options_order"] = "Narudžba opcije plaćanja";
|
||||
$lang["config_perm_risk"] = "Dozvole veće od 750 za pisanje i 660 za čitanje dovode ovaj program u rizik.";
|
||||
$lang["config_phone"] = "Telefon kompanije";
|
||||
$lang["config_phone_required"] = "Telefon kompanije je obavezan";
|
||||
$lang["config_print_bottom_margin"] = "Donja margina";
|
||||
$lang["config_print_bottom_margin_number"] = "Donja margina mora biti broj";
|
||||
$lang["config_print_bottom_margin_required"] = "Donja margina je obavezna";
|
||||
$lang["config_print_delay_autoreturn"] = "Automatski povratak na odgodu prodaje";
|
||||
$lang["config_print_delay_autoreturn_number"] = "Automatski povratak na odgodu prodaje je obavezno polje";
|
||||
$lang["config_print_delay_autoreturn_required"] = "Automatski povratak na odgodu prodaje mora biti broj";
|
||||
$lang["config_print_footer"] = "Štampanje podnožja";
|
||||
$lang["config_print_header"] = "Štampanje zaglavlja";
|
||||
$lang["config_print_left_margin"] = "Lijeva margina";
|
||||
$lang["config_print_left_margin_number"] = "Lijeva margina mora biti broj";
|
||||
$lang["config_print_left_margin_required"] = "Lijeva margina je obavezna";
|
||||
$lang["config_print_receipt_check_behaviour"] = "Polje za potvrdu štampanja računa";
|
||||
$lang["config_print_receipt_check_behaviour_always"] = "Uvijek potvrđeno";
|
||||
$lang["config_print_receipt_check_behaviour_last"] = "Zapamti poslednji izbor";
|
||||
$lang["config_print_receipt_check_behaviour_never"] = "Uvijek nepotvrđeno";
|
||||
$lang["config_print_right_margin"] = "Desna margina";
|
||||
$lang["config_print_right_margin_number"] = "Desna margina mora biti broj";
|
||||
$lang["config_print_right_margin_required"] = "Desna margina je obavezna";
|
||||
$lang["config_print_silently"] = "Prikaži dijalog za štampanje";
|
||||
$lang["config_print_top_margin"] = "Gornja margina";
|
||||
$lang["config_print_top_margin_number"] = "Gornja margina mora biti broj";
|
||||
$lang["config_print_top_margin_required"] = "Gornja margina je obavezna";
|
||||
$lang["config_quantity_decimals"] = "Decimale količine";
|
||||
$lang["config_quote_default_comments"] = "Difoltni komentari citata";
|
||||
$lang["config_receipt"] = "Račun";
|
||||
$lang["config_receipt_configuration"] = "Podešavanja štamapnja";
|
||||
$lang["config_receipt_default"] = "Podrazumijevano";
|
||||
$lang["config_receipt_font_size"] = "Veličina fonta";
|
||||
$lang["config_receipt_font_size_number"] = "Veličina fonta mora biti broj";
|
||||
$lang["config_receipt_font_size_required"] = "Veličina fonta je obavezno polje";
|
||||
$lang["config_receipt_info"] = "Informacije o POS računu";
|
||||
$lang["config_receipt_printer"] = "POS štampač";
|
||||
$lang["config_receipt_short"] = "Kratko";
|
||||
$lang["config_receipt_show_company_name"] = "Prikaži kompaniju";
|
||||
$lang["config_receipt_show_description"] = "Prikaži opis";
|
||||
$lang["config_receipt_show_serialnumber"] = "Prikaži serijski broj";
|
||||
$lang["config_receipt_show_tax_ind"] = "Prikaži poreski indikator";
|
||||
$lang["config_receipt_show_taxes"] = "Prikaži porez";
|
||||
$lang["config_receipt_show_total_discount"] = "Prikaži ukupni popust";
|
||||
$lang["config_receipt_template"] = "Šablon računa";
|
||||
$lang["config_receiving_calculate_average_price"] = "Kalk. prosječnih cijena (ulaza)";
|
||||
$lang["config_recv_invoice_format"] = "Format računa fakture";
|
||||
$lang["config_register_mode_default"] = "Mod registracije";
|
||||
$lang["config_report_an_issue"] = "Prijavi problem";
|
||||
$lang["config_return_policy_required"] = "Politika povrata je obavezno polje";
|
||||
$lang["config_reward"] = "Nagrada";
|
||||
$lang["config_reward_configuration"] = "Konfigurisanje poklona";
|
||||
$lang["config_right"] = "Desno";
|
||||
$lang["config_sales_invoice_format"] = "Format fakture";
|
||||
$lang["config_sales_quote_format"] = "Format navedene prodaje";
|
||||
$lang["config_saved_successfully"] = "Konfiguracija je uspješno snimljena";
|
||||
$lang["config_saved_unsuccessfully"] = "Konfiguracija nije uspješno snimljena";
|
||||
$lang["config_security_issue"] = "Upozorenje o ugroženosti sigurnosti";
|
||||
$lang["config_server_notice"] = "Upotrijebite dolje navedene podatke za izvještavanje o problemima.";
|
||||
$lang["config_show_office_group"] = "Prikaži ikonu poslovnice";
|
||||
$lang["config_statistics"] = "Pošalji statistiku";
|
||||
$lang["config_statistics_tooltip"] = "Pošaljite statistike za potrebe razvoja i poboljšanja namjene";
|
||||
$lang["config_stock_location"] = "Lokacija skladišta";
|
||||
$lang["config_stock_location_duplicate"] = "Molim koristite jedinstveni naziv skladišta";
|
||||
$lang["config_stock_location_invalid_chars"] = "Naziv skaldišta ne može sadržavati '_'";
|
||||
$lang["config_stock_location_required"] = "Naziv skladišta je obavezno polje";
|
||||
$lang["config_suggestions_first_column"] = "Kolona 1";
|
||||
$lang["config_suggestions_layout"] = "Prijedlozi za pretraživanje";
|
||||
$lang["config_suggestions_second_column"] = "Kolona 2";
|
||||
$lang["config_suggestions_third_column"] = "Kolona 3";
|
||||
$lang["config_system_conf"] = "Podešavanja & Konf";
|
||||
$lang["config_system_info"] = "Sistem Info";
|
||||
$lang["config_table"] = "Sto";
|
||||
$lang["config_table_configuration"] = "Konfigurisanje stola";
|
||||
$lang["config_takings_printer"] = "Štampanje računa";
|
||||
$lang["config_tax"] = "Porez";
|
||||
$lang["config_tax_category"] = "Kategorija";
|
||||
$lang["config_tax_category_duplicate"] = "Unesena kategorija već postoji.";
|
||||
$lang["config_tax_category_invalid_chars"] = "Unesena kategorija je nevažeća.";
|
||||
$lang["config_tax_category_required"] = "Obavezna je kategorija.";
|
||||
$lang["config_tax_category_used"] = "Kategorija se ne može izbrisati jer se koristi";
|
||||
$lang["config_tax_configuration"] = "Konfigurisanje poreza";
|
||||
$lang["config_tax_decimals"] = "Poreske decimale";
|
||||
$lang["config_tax_id"] = "Poreska identifikacija";
|
||||
$lang["config_tax_included"] = "Uključen porez";
|
||||
$lang["config_theme"] = "Tema";
|
||||
$lang["config_theme_preview"] = "";
|
||||
$lang["config_thousands_separator"] = "Separator za hiljade";
|
||||
$lang["config_timezone"] = "Vremenska zona";
|
||||
$lang["config_timezone_error"] = "Vremenska zona OSPOS razlikuje se od vaše lokalne vremenske zone.";
|
||||
$lang["config_top"] = "Vrh";
|
||||
$lang["config_use_destination_based_tax"] = "Koristite porez na osnovu odredišta";
|
||||
$lang["config_user_timezone"] = "Lokalna vremenska zona:";
|
||||
$lang["config_website"] = "web stranica";
|
||||
$lang["config_work_order_enable"] = "Podnošenje radnog naloga";
|
||||
$lang["config_work_order_format"] = "Format radnog naloga";
|
||||
54
application/language/bs-BA/customers_lang.php
Executable file
54
application/language/bs-BA/customers_lang.php
Executable file
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
$lang["customers_account_number"] = "Račun #";
|
||||
$lang["customers_account_number_duplicate"] = "Ovaj broj računa već postoji";
|
||||
$lang["customers_available_points"] = "Dostupni bodovi";
|
||||
$lang["customers_average"] = "Prosječna potrošnja";
|
||||
$lang["customers_avg_discount"] = "Prosječni popust";
|
||||
$lang["customers_basic_information"] = "Informacija";
|
||||
$lang["customers_cannot_be_deleted"] = "Ne može se izbrisati izabrani kupac, jer jedan ili više izabranih kupaca imaju prodaju.";
|
||||
$lang["customers_company_name"] = "Kompanija";
|
||||
$lang["customers_confirm_delete"] = "Želite li izbrisati izabranog kupca?";
|
||||
$lang["customers_confirm_restore"] = "Da li ste sigurni da želite da povratite izabranog kupca?";
|
||||
$lang["customers_consent"] = "Pristanak na registraciju";
|
||||
$lang["customers_consent_required"] = "Prihvatanje registracije je obavezno polje.";
|
||||
$lang["customers_csv_import_failed"] = "Greška kod uvoza iz CSV-a";
|
||||
$lang["customers_csv_import_nodata_wrongformat"] = "Vaša učitana datoteka nema podataka ili je pogrešnog formata";
|
||||
$lang["customers_csv_import_partially_failed"] = "Većina kupaca je uvezena. Ali neki nisu, evo liste";
|
||||
$lang["customers_csv_import_success"] = "Uvoz kupaca je uspješan";
|
||||
$lang["customers_customer"] = "Kupac";
|
||||
$lang["customers_date"] = "Datum";
|
||||
$lang["customers_discount"] = "Popust";
|
||||
$lang["customers_discount_fixed"] = "Fiksni popust";
|
||||
$lang["customers_discount_percent"] = "Procenat popusta";
|
||||
$lang["customers_discount_type"] = "Tip popusta";
|
||||
$lang["customers_email_duplicate"] = "E-mail adresa već postoji u bazi podataka.";
|
||||
$lang["customers_employee"] = "Zaposlenik";
|
||||
$lang["customers_error_adding_updating"] = "Greška kod dodavanja/ažuriranja kupca";
|
||||
$lang["customers_import_items_csv"] = "Uvezi kupce iz CSV datoteke";
|
||||
$lang["customers_mailchimp_activity_click"] = "Klik na e-mail";
|
||||
$lang["customers_mailchimp_activity_lastopen"] = "Zadnji otvoreni e-mail";
|
||||
$lang["customers_mailchimp_activity_open"] = "E-mail otvoren";
|
||||
$lang["customers_mailchimp_activity_total"] = "E-mail poslat";
|
||||
$lang["customers_mailchimp_activity_unopen"] = "E-mail nije otvoren";
|
||||
$lang["customers_mailchimp_email_client"] = "E-mail klijenta";
|
||||
$lang["customers_mailchimp_info"] = "Mailchimp";
|
||||
$lang["customers_mailchimp_member_rating"] = "Rejting";
|
||||
$lang["customers_mailchimp_status"] = "Status";
|
||||
$lang["customers_mailchimp_vip"] = "VIP";
|
||||
$lang["customers_max"] = "Maks. potrošeno";
|
||||
$lang["customers_min"] = "Min. potrošeno";
|
||||
$lang["customers_new"] = "Novi kupac";
|
||||
$lang["customers_none_selected"] = "Niste odabrali nijednog kupca za brisanje";
|
||||
$lang["customers_one_or_multiple"] = "Kupaci";
|
||||
$lang["customers_quantity"] = "Količina";
|
||||
$lang["customers_stats_info"] = "Statistika";
|
||||
$lang["customers_successful_adding"] = "Uspješno ste dodali kupca";
|
||||
$lang["customers_successful_deleted"] = "Kupac je uspješno izbrisan";
|
||||
$lang["customers_successful_updating"] = "Podaci o kupcu su uspješno ažurirani";
|
||||
$lang["customers_tax_code"] = "Poreski broj";
|
||||
$lang["customers_tax_id"] = "Porez Id";
|
||||
$lang["customers_taxable"] = "Oporezivo";
|
||||
$lang["customers_total"] = "Ukupno";
|
||||
$lang["customers_update"] = "Ažuriraj kupca";
|
||||
$lang["rewards_package"] = "Nagrade";
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user