mirror of
https://github.com/opensourcepos/opensourcepos.git
synced 2026-05-25 08:44:42 -04:00
Compare commits
660 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
52ab4ce035 | ||
|
|
8dbd5e55dd | ||
|
|
1eb7ab2406 | ||
|
|
97fbfb32b9 | ||
|
|
c5f73e0f38 | ||
|
|
62030d50d8 | ||
|
|
d20dcce5b4 | ||
|
|
00d15765f3 | ||
|
|
11ff84e71d | ||
|
|
3806b9350b | ||
|
|
7429637dbf | ||
|
|
26fa619127 | ||
|
|
a6a3f83378 | ||
|
|
5ad39fe230 | ||
|
|
91ef1af0c5 | ||
|
|
54f1ca2d1f | ||
|
|
28953a0def | ||
|
|
688ce015fe | ||
|
|
b3189a01bf | ||
|
|
eee3132cce | ||
|
|
3730cb0803 | ||
|
|
a39c15c71d | ||
|
|
fea5b064a9 | ||
|
|
8169a08ff1 | ||
|
|
e26290469f | ||
|
|
5dfed09167 | ||
|
|
a3a48d3ea6 | ||
|
|
07441d2144 | ||
|
|
3612ecf577 | ||
|
|
f9edc63385 | ||
|
|
31367d8943 | ||
|
|
4c763ea9c0 | ||
|
|
7b8a7033a1 | ||
|
|
8478a7797c | ||
|
|
44a571ad4f | ||
|
|
0dcfc650a4 | ||
|
|
e4e106d6bc | ||
|
|
00bc200643 | ||
|
|
a40ccfd232 | ||
|
|
19cc328c65 | ||
|
|
f26963ed3b | ||
|
|
a175879fe2 | ||
|
|
46e515db1e | ||
|
|
3368003a53 | ||
|
|
0112fea0a6 | ||
|
|
2a5e8fe98c | ||
|
|
b07d99ea38 | ||
|
|
ea328d6543 | ||
|
|
b2b0cb34b5 | ||
|
|
a91aa3792b | ||
|
|
de49a50187 | ||
|
|
675404ce89 | ||
|
|
1ea015c734 | ||
|
|
56f4dee411 | ||
|
|
f393cb4c04 | ||
|
|
4a4172bd0f | ||
|
|
0aee736fd1 | ||
|
|
86fc8209a2 | ||
|
|
db49939d6e | ||
|
|
8f2052b43e | ||
|
|
b7aeb7f36d | ||
|
|
2fe9c1f58b | ||
|
|
63f859d392 | ||
|
|
26a5f4688b | ||
|
|
93d00f06b3 | ||
|
|
b5f6cd56d6 | ||
|
|
e451618114 | ||
|
|
8e8713d1b0 | ||
|
|
90523b79e2 | ||
|
|
c715bca5cd | ||
|
|
c88bbe3852 | ||
|
|
1ee11ea61c | ||
|
|
5a19031271 | ||
|
|
8817005401 | ||
|
|
6df1c7818e | ||
|
|
3af4bf0187 | ||
|
|
1d4692a44a | ||
|
|
258debc94a | ||
|
|
34c01ed179 | ||
|
|
477dcb78db | ||
|
|
d4ddb4c8ee | ||
|
|
9864b126a8 | ||
|
|
d29ed9441e | ||
|
|
e940c1e99d | ||
|
|
bdc63c5c02 | ||
|
|
120b932219 | ||
|
|
745b9efed1 | ||
|
|
582311a461 | ||
|
|
69b687989d | ||
|
|
1055ebc5ff | ||
|
|
d49cb4fc0f | ||
|
|
31bcad32a6 | ||
|
|
6956c6362e | ||
|
|
4821a8851e | ||
|
|
8f133b804f | ||
|
|
7894c0c0fc | ||
|
|
2254ce1fbb | ||
|
|
7eb8284f2e | ||
|
|
75f5e0f1fc | ||
|
|
0cf8543991 | ||
|
|
ec11d3f3e4 | ||
|
|
33ff6c9a44 | ||
|
|
5dd7a5fde1 | ||
|
|
6f261132a3 | ||
|
|
665edee213 | ||
|
|
a2af047899 | ||
|
|
bbec55e77b | ||
|
|
896cc96119 | ||
|
|
ec1ff216ad | ||
|
|
c57679cac1 | ||
|
|
ddaa1e88e9 | ||
|
|
6a65618e82 | ||
|
|
833490c9a3 | ||
|
|
92f62621d5 | ||
|
|
97334b2e42 | ||
|
|
767b0d293b | ||
|
|
ffc7b10b3c | ||
|
|
5a41626ffd | ||
|
|
e12de53fd8 | ||
|
|
768bbf8b18 | ||
|
|
0e4fcadd9f | ||
|
|
dd6c8fdd25 | ||
|
|
c579fcf2fa | ||
|
|
1ac7994758 | ||
|
|
c9fd560b00 | ||
|
|
a9afce8e14 | ||
|
|
2177e71f47 | ||
|
|
2a4668a80f | ||
|
|
86d152a668 | ||
|
|
f23f583ced | ||
|
|
712414c56e | ||
|
|
6fefe3e016 | ||
|
|
abd3e8ac34 | ||
|
|
c364d296cd | ||
|
|
8e86fbdc2a | ||
|
|
0f8c7f52cd | ||
|
|
bbe766165a | ||
|
|
48fe421bf0 | ||
|
|
6c714b2dc4 | ||
|
|
9d08e9e5be | ||
|
|
4a05f00307 | ||
|
|
6b0a2576a3 | ||
|
|
86d3c6bf04 | ||
|
|
3ef1abdcc5 | ||
|
|
627bbb9b07 | ||
|
|
283ec86c3f | ||
|
|
b15b302624 | ||
|
|
1f508d0b89 | ||
|
|
e218453ab3 | ||
|
|
0476265e7a | ||
|
|
1589b8ecee | ||
|
|
32e1babefd | ||
|
|
ec2fe4a5de | ||
|
|
91b03ab78b | ||
|
|
1f6e689151 | ||
|
|
560d25a281 | ||
|
|
0ab72d8719 | ||
|
|
991042a0f6 | ||
|
|
6c043e8c5f | ||
|
|
0530abc5f8 | ||
|
|
32004f28d4 | ||
|
|
2a05d91d44 | ||
|
|
a99d3536ce | ||
|
|
c6378ba4d2 | ||
|
|
aa0e250250 | ||
|
|
6dc1f81cbf | ||
|
|
c3d9173442 | ||
|
|
3d238ee78c | ||
|
|
f0fd8a305b | ||
|
|
a6045d9e7b | ||
|
|
02813c8374 | ||
|
|
4835507e1e | ||
|
|
3b0df85f69 | ||
|
|
36177d1431 | ||
|
|
bc04884190 | ||
|
|
8a3ba5692a | ||
|
|
e89bd73bb5 | ||
|
|
f1936dbb4d | ||
|
|
629f180b8d | ||
|
|
6485cf050d | ||
|
|
cd792eb56a | ||
|
|
256c926e3d | ||
|
|
c18c703237 | ||
|
|
6e64f8ef00 | ||
|
|
591d432d4f | ||
|
|
4a61119c3d | ||
|
|
d7237261f7 | ||
|
|
81512aa76e | ||
|
|
0dec6819ad | ||
|
|
afca2882f8 | ||
|
|
eb610fccb5 | ||
|
|
641e2f414c | ||
|
|
5d49728c74 | ||
|
|
858845f4f5 | ||
|
|
eccf08cf8f | ||
|
|
623572b0f5 | ||
|
|
dc0d580d05 | ||
|
|
fe05845bd4 | ||
|
|
1798b4553b | ||
|
|
e59a3372a9 | ||
|
|
8a7b93f1b9 | ||
|
|
61a3fee4a6 | ||
|
|
a92d60d99f | ||
|
|
47486b980f | ||
|
|
dc14cbd7ab | ||
|
|
d7b7f5510c | ||
|
|
323b7900e9 | ||
|
|
eb4d0c8c88 | ||
|
|
b0e3600ea6 | ||
|
|
41ae935223 | ||
|
|
60db2cc4b0 | ||
|
|
b7951ea5b2 | ||
|
|
cb31ebb06e | ||
|
|
3f0a53933c | ||
|
|
f92b06cff2 | ||
|
|
bab4791b5e | ||
|
|
421468f6d8 | ||
|
|
f3a08eab3b | ||
|
|
863988d2ab | ||
|
|
e524593a15 | ||
|
|
181d904360 | ||
|
|
4448348f7c | ||
|
|
bb762efac7 | ||
|
|
c5697edf76 | ||
|
|
3f73e449f0 | ||
|
|
a18745b3af | ||
|
|
0057c77721 | ||
|
|
fd3fecbd76 | ||
|
|
ad690c9ca6 | ||
|
|
ab29527619 | ||
|
|
12b5ed43c6 | ||
|
|
a78f053c80 | ||
|
|
5ea0324bc0 | ||
|
|
005193e3e0 | ||
|
|
95733ea476 | ||
|
|
c8499599ab | ||
|
|
2f44a9d5c2 | ||
|
|
d28e95208b | ||
|
|
c4bda0e1fe | ||
|
|
15e0da4515 | ||
|
|
c71ce1e8ae | ||
|
|
d5e2b6cb0d | ||
|
|
d25b1408c9 | ||
|
|
c3f83202a8 | ||
|
|
643c5d91a6 | ||
|
|
69e56d06ae | ||
|
|
ee2f66aa61 | ||
|
|
16502065fa | ||
|
|
1a7ed8a69b | ||
|
|
d2eaaab92c | ||
|
|
55666caac5 | ||
|
|
841c8166a2 | ||
|
|
4e5ac5c521 | ||
|
|
d59e713f1f | ||
|
|
78877094fb | ||
|
|
e2e0ade259 | ||
|
|
e61e409bfe | ||
|
|
5d22e41fe2 | ||
|
|
0d82db42da | ||
|
|
ff7848dcff | ||
|
|
4866457164 | ||
|
|
acd003a44c | ||
|
|
f407702dbe | ||
|
|
d129610b24 | ||
|
|
55bf5eddda | ||
|
|
94ea15bc18 | ||
|
|
91fd435cca | ||
|
|
8f019b4631 | ||
|
|
51e160982e | ||
|
|
1f2218bbc9 | ||
|
|
77145d29a8 | ||
|
|
3a447561eb | ||
|
|
6ee545d6eb | ||
|
|
afbf714bd2 | ||
|
|
1a2bc1cc42 | ||
|
|
4268a70388 | ||
|
|
189b189e08 | ||
|
|
403c875edf | ||
|
|
4f6cf8b917 | ||
|
|
fd6335081d | ||
|
|
234cedff15 | ||
|
|
8348628dc6 | ||
|
|
ade9a57fe0 | ||
|
|
6559f9c561 | ||
|
|
a7a559fc72 | ||
|
|
e25d1483ae | ||
|
|
41a5218583 | ||
|
|
cc7fcaf264 | ||
|
|
e776f31ec5 | ||
|
|
d60e1283bd | ||
|
|
b2d80acafc | ||
|
|
37097babcf | ||
|
|
15bb3ad6a3 | ||
|
|
5c0c74b037 | ||
|
|
7093874366 | ||
|
|
34ae6486dc | ||
|
|
2d3d385cbc | ||
|
|
c0a9349b60 | ||
|
|
c4a76ad01c | ||
|
|
8d1bc4cf17 | ||
|
|
daa1614615 | ||
|
|
34afb9d496 | ||
|
|
27d5fd882b | ||
|
|
d25c6dc8c1 | ||
|
|
11e1cc51aa | ||
|
|
b32c23ce10 | ||
|
|
00a792213c | ||
|
|
c710ec938f | ||
|
|
d0ada1e42f | ||
|
|
e89fc6afb2 | ||
|
|
f9fb9e44b3 | ||
|
|
4c2d63bbd3 | ||
|
|
ac92c16c0a | ||
|
|
edd1f047bd | ||
|
|
c8ac6a65dc | ||
|
|
6acfc60988 | ||
|
|
6682b77164 | ||
|
|
eb4f3b425b | ||
|
|
93b0844121 | ||
|
|
40d32e1b8a | ||
|
|
af1aee0015 | ||
|
|
1e64b3e610 | ||
|
|
8f728500d4 | ||
|
|
c68fa19584 | ||
|
|
5bdf6d396b | ||
|
|
0114223e99 | ||
|
|
b819442e98 | ||
|
|
15681edf43 | ||
|
|
0cd19ca43f | ||
|
|
621a74653d | ||
|
|
6dc49ca00e | ||
|
|
7a91388d8d | ||
|
|
1680f2b602 | ||
|
|
80c58cf27d | ||
|
|
dd21f205b7 | ||
|
|
8261cc1f72 | ||
|
|
08a7bd9606 | ||
|
|
56ae0f265a | ||
|
|
c95c56ade7 | ||
|
|
b057d1c3c0 | ||
|
|
248cd29e01 | ||
|
|
bacc07ce35 | ||
|
|
aef542d096 | ||
|
|
28141185a4 | ||
|
|
deb235a971 | ||
|
|
878d93aee9 | ||
|
|
9db7eddc68 | ||
|
|
e2232ba9cc | ||
|
|
4db76371fd | ||
|
|
9d01398a4b | ||
|
|
66a4507525 | ||
|
|
938907fe20 | ||
|
|
1738f76402 | ||
|
|
b7251dd693 | ||
|
|
8f7a425333 | ||
|
|
7e7c068c90 | ||
|
|
73ae7b8fd2 | ||
|
|
56b228c698 | ||
|
|
b5a44a8308 | ||
|
|
1788941b5f | ||
|
|
27f093cf73 | ||
|
|
efe9ed22b3 | ||
|
|
e6a51d8c28 | ||
|
|
27f5dd7efc | ||
|
|
07642bd953 | ||
|
|
99afc02c9d | ||
|
|
74972712a6 | ||
|
|
826ffd79c9 | ||
|
|
7f8ac815ef | ||
|
|
04f27c328d | ||
|
|
793dd73248 | ||
|
|
28d89c685b | ||
|
|
d59b79e4b6 | ||
|
|
422ca99ab3 | ||
|
|
0ff095e889 | ||
|
|
e0bc9bb8f7 | ||
|
|
86afbf0d30 | ||
|
|
26d5605de5 | ||
|
|
6c0124cd17 | ||
|
|
effba9d102 | ||
|
|
15b13e1a3d | ||
|
|
1a0a3fbeba | ||
|
|
b7e0c0eba6 | ||
|
|
354076f8c3 | ||
|
|
6e9e7abcff | ||
|
|
cf314f98a6 | ||
|
|
a316e250de | ||
|
|
33b9f97bce | ||
|
|
3677b61dd9 | ||
|
|
e592040962 | ||
|
|
e51c79c423 | ||
|
|
f556361ade | ||
|
|
a317c32d1e | ||
|
|
0e60d5e6e1 | ||
|
|
6fda5d63fe | ||
|
|
7c9a2dee37 | ||
|
|
06f404ddc4 | ||
|
|
562a43a942 | ||
|
|
cbda2dae13 | ||
|
|
1abdd765de | ||
|
|
2f4d0986d9 | ||
|
|
bbac0f16bf | ||
|
|
b986ad437a | ||
|
|
68883230e8 | ||
|
|
5cb8141641 | ||
|
|
e6d6bf0392 | ||
|
|
85d2cf9e68 | ||
|
|
91f33d14b7 | ||
|
|
5e004309f0 | ||
|
|
aa8351c147 | ||
|
|
adacc2ab5f | ||
|
|
8bb4171265 | ||
|
|
87bd59a6bf | ||
|
|
488fc58a03 | ||
|
|
8cd521c6d1 | ||
|
|
faaac45653 | ||
|
|
d8e19ceeca | ||
|
|
00f99c524a | ||
|
|
91d5157765 | ||
|
|
b8414cc969 | ||
|
|
387b0004a8 | ||
|
|
cdc401dd7e | ||
|
|
74681e78e3 | ||
|
|
3f489d6f53 | ||
|
|
55350b8bf8 | ||
|
|
f52b61ae36 | ||
|
|
e131cda843 | ||
|
|
991854f0f2 | ||
|
|
af7d2f27aa | ||
|
|
3650b47d8b | ||
|
|
deea43ce67 | ||
|
|
3d9665c0a9 | ||
|
|
ae90dfa333 | ||
|
|
02dcb4dc90 | ||
|
|
4dc3c49d9d | ||
|
|
a77d63fad8 | ||
|
|
b487573b05 | ||
|
|
4528436fd5 | ||
|
|
5876efbbee | ||
|
|
1e1b0cd06b | ||
|
|
6826115b2d | ||
|
|
032bb34131 | ||
|
|
e9aa0068fe | ||
|
|
e55b5a743a | ||
|
|
e4955027d1 | ||
|
|
9bf8989960 | ||
|
|
53dcdc02cf | ||
|
|
69391eb434 | ||
|
|
aff7e6df3b | ||
|
|
9bf24fee5f | ||
|
|
2c53f0e585 | ||
|
|
5aeb1234a2 | ||
|
|
6e62a3fe15 | ||
|
|
67594190fc | ||
|
|
c6597ba6ce | ||
|
|
2187898b04 | ||
|
|
a6b5220047 | ||
|
|
78cb4822c2 | ||
|
|
ae4ff80974 | ||
|
|
df2d616566 | ||
|
|
353fa8e95c | ||
|
|
699236bca0 | ||
|
|
4ca862ba9f | ||
|
|
7222df3551 | ||
|
|
72e1158847 | ||
|
|
145d97737f | ||
|
|
8140d1aee4 | ||
|
|
5f5394b18f | ||
|
|
ceb9687e5e | ||
|
|
7a4525319a | ||
|
|
a175111b59 | ||
|
|
4cda5343aa | ||
|
|
e7cbacaae6 | ||
|
|
faadbe554a | ||
|
|
999e12279a | ||
|
|
37bb9b50f9 | ||
|
|
5e02f31866 | ||
|
|
bf0d24a96f | ||
|
|
be66258bfc | ||
|
|
87247333cc | ||
|
|
5e75613fec | ||
|
|
5b4d12cac8 | ||
|
|
0e013220ad | ||
|
|
ae92231903 | ||
|
|
9a1cf6752c | ||
|
|
9db439a8fe | ||
|
|
e458b23b7e | ||
|
|
4ca0e74d42 | ||
|
|
47357aaafc | ||
|
|
a99f326bb8 | ||
|
|
cc584ca063 | ||
|
|
d85aeaeaf8 | ||
|
|
cc2fd1876d | ||
|
|
f4a52dab8b | ||
|
|
d75a936472 | ||
|
|
2719c43e3d | ||
|
|
85983cd17a | ||
|
|
df9b776d56 | ||
|
|
b373b1e07e | ||
|
|
68cf3bf68b | ||
|
|
f9c1dde054 | ||
|
|
1393af1676 | ||
|
|
f359c475d3 | ||
|
|
9bc9b5c984 | ||
|
|
4922f5bb66 | ||
|
|
e36b2a1a03 | ||
|
|
bb5d39cd0d | ||
|
|
afe564e152 | ||
|
|
17ff097406 | ||
|
|
3b37f6c61a | ||
|
|
96cefd97b4 | ||
|
|
03af00e26e | ||
|
|
92bd7c2d43 | ||
|
|
4d6cc381ae | ||
|
|
3f36a8b15e | ||
|
|
5a9b6bd98b | ||
|
|
b9e160eaa3 | ||
|
|
ba95853884 | ||
|
|
f157d4d43d | ||
|
|
a2c3130720 | ||
|
|
258622ec87 | ||
|
|
b4023a051c | ||
|
|
1cdbee1a42 | ||
|
|
feff5ff3f3 | ||
|
|
0507db6a6f | ||
|
|
9b473e415d | ||
|
|
47974074ee | ||
|
|
bc56ee54a3 | ||
|
|
046a02d83c | ||
|
|
57e559e67b | ||
|
|
10e3ce9a9f | ||
|
|
953fa534f4 | ||
|
|
c7982b9552 | ||
|
|
6e0011b165 | ||
|
|
a3c172624a | ||
|
|
3a81a712ff | ||
|
|
775f40cb75 | ||
|
|
5814bfc7e8 | ||
|
|
3f309298d8 | ||
|
|
4ef8fc8df3 | ||
|
|
a627276265 | ||
|
|
6e4155ccbb | ||
|
|
84ef147835 | ||
|
|
925bee2b0a | ||
|
|
680f2bb555 | ||
|
|
29920c5456 | ||
|
|
ace3bedbbc | ||
|
|
476db84e86 | ||
|
|
dc638c74b5 | ||
|
|
f04a2db4a5 | ||
|
|
dd6bd1cf11 | ||
|
|
4b1d5456cc | ||
|
|
4b85c14f00 | ||
|
|
9b33f39086 | ||
|
|
bebb9ca34b | ||
|
|
1dba07049c | ||
|
|
aae2d8ffc8 | ||
|
|
a387a52578 | ||
|
|
399b997fd0 | ||
|
|
cb907ea303 | ||
|
|
744d166f58 | ||
|
|
f3dd11e2c5 | ||
|
|
7f1c374e3d | ||
|
|
80aba48240 | ||
|
|
a8bca7681d | ||
|
|
01e918e776 | ||
|
|
6095577f47 | ||
|
|
06db967ee6 | ||
|
|
467ed586b1 | ||
|
|
74660bcaa1 | ||
|
|
d9a4f93cfa | ||
|
|
c6e4584f71 | ||
|
|
3a2dd7134f | ||
|
|
d9649edc3e | ||
|
|
31335deeea | ||
|
|
ae26d9a007 | ||
|
|
305d9dd55e | ||
|
|
9a9dc9bf1e | ||
|
|
311225a126 | ||
|
|
cabccf0858 | ||
|
|
9e8cc93082 | ||
|
|
57de863f79 | ||
|
|
00565ddc8f | ||
|
|
7d4dff0a37 | ||
|
|
1ed76fa091 | ||
|
|
114c215407 | ||
|
|
9bef65b9cb | ||
|
|
dc4d582898 | ||
|
|
8b32a26e80 | ||
|
|
422e2ddbab | ||
|
|
c5988adbbb | ||
|
|
2727e91c96 | ||
|
|
4304f5ceea | ||
|
|
1666a3e689 | ||
|
|
2f8d66664b | ||
|
|
7c5276b014 | ||
|
|
5231c027af | ||
|
|
3974279607 | ||
|
|
7ef68fbc76 | ||
|
|
1440e6bce9 | ||
|
|
b66827b0ff | ||
|
|
540c4f3ec0 | ||
|
|
9e1064979a | ||
|
|
5047ca0f41 | ||
|
|
5267eadc56 | ||
|
|
04246d35ad | ||
|
|
20c0ffb9b0 | ||
|
|
88db2af11b | ||
|
|
577e5b2db4 | ||
|
|
35e76bdd4d | ||
|
|
9766dcfad3 | ||
|
|
0e2f84c91d | ||
|
|
77806412fa | ||
|
|
737980c041 | ||
|
|
e86ea272ca | ||
|
|
284a73f41d | ||
|
|
5a4c27cf87 | ||
|
|
e22e081865 | ||
|
|
123cb25bf5 | ||
|
|
00eb59f083 | ||
|
|
19165133ae | ||
|
|
e1035ff54b | ||
|
|
ed80627ddd | ||
|
|
d380524f9d | ||
|
|
ca39fb38ad | ||
|
|
be1be80a0e | ||
|
|
868868163c | ||
|
|
a831f09fca | ||
|
|
b0b8c0e936 | ||
|
|
047fd7b7ad | ||
|
|
e6a61941df | ||
|
|
f4237e3f68 | ||
|
|
1f2e87ec09 | ||
|
|
519b19ae64 | ||
|
|
001cd411f2 | ||
|
|
eefd9a88bd | ||
|
|
88219b6aa0 | ||
|
|
4b5b985315 | ||
|
|
ef45c96ce8 | ||
|
|
6dfb24e6f1 | ||
|
|
49c89d1cec | ||
|
|
872aa7b829 | ||
|
|
4dbb8655ee | ||
|
|
e326c1dfd4 | ||
|
|
ab3acf1605 | ||
|
|
7668991d6c | ||
|
|
0f95c6c9b5 | ||
|
|
768ffdfb4b | ||
|
|
9a9637bfb7 | ||
|
|
2cbff93ab5 | ||
|
|
e42aaed0b1 | ||
|
|
4678764a03 | ||
|
|
4120015d78 | ||
|
|
5ecc6ead7d | ||
|
|
816fcd9203 | ||
|
|
6f444b1a33 | ||
|
|
94141e21db | ||
|
|
17c23ad417 | ||
|
|
ef5c513f1b | ||
|
|
60f78c8eeb |
@@ -1,7 +1,6 @@
|
||||
node_modules
|
||||
tmp
|
||||
application/config/email.php
|
||||
application/config/database.php
|
||||
*.patch
|
||||
patches/
|
||||
.idea/
|
||||
|
||||
47
.github/ISSUE_TEMPLATE.md
vendored
47
.github/ISSUE_TEMPLATE.md
vendored
@@ -1,27 +1,42 @@
|
||||
### New Feature or Enhacement
|
||||
### IMPORTANT IMPORTANT IMPORTANT
|
||||
|
||||
For new Features or Enhacements please remove all the template text and clearly write your proposal.
|
||||
1. Chose what you want to report between the sections "New Feature / Enhancement" and "Issue / Question / Bug".
|
||||
2. Remove just the one of the two sections you don't need
|
||||
3. Remove this section as it's just a guideline
|
||||
4. Fill in all the details as requested by the section you chose
|
||||
|
||||
If you remove the complete template when submitting a Bug your issue will be closed as we cannot help without basic information.
|
||||
|
||||
|
||||
### New Feature / Enhancement
|
||||
|
||||
*For New Features or Enhancements please clearly write your proposal.
|
||||
It's important to state whether you expect the community to implement it or you will contribute the work.
|
||||
Please bear in mind that we will implement new features only on the current code, there is no support for old versions.
|
||||
Please bear in mind that we will implement new features only on the current code, there is no support for older versions.*
|
||||
|
||||
|
||||
### Issue, Question or Bug
|
||||
### Issue / Question / Bug
|
||||
|
||||
Before submitting an issue please make sure you remove the first section of the template and you tick (add a x between the square brakets) and agree with all the following check boxes:
|
||||
Before submitting an issue please make sure you tick (add an x between the square brackets with no spaces) the following check boxes:
|
||||
|
||||
- [] Checked the current issues database and no similar issue was already discussed
|
||||
- [] Read the README, WHATS_NEW and UPGRADE
|
||||
- [] Read the FAQ (https://github.com/jekkos/opensourcepos#faq) for any known install and/or upgrade gotchas (in specific PHP has php5-gd, php-intl and sockets installed)
|
||||
- [] Reporting an issue of an unmodified OSPOS installation
|
||||
- [] Ran any database upgrade scripts (e.g. database/2.4_to_3.0.sql)
|
||||
- [] PHP version is at least 5.5 and not 7.x
|
||||
- [] Know the version of OSPOS and git commit hash (check the footer of your OSPOS) and will add to my issue report
|
||||
- [] Know the name and version of OS, Web server and MySQL and will add to my issue report
|
||||
|
||||
IMPORTANT: If you remove the template when submitting an issue your issue will be closed.
|
||||
- [] I'm reporting an issue of an unmodified OSPOS installation
|
||||
- [] I checked open and closed issues database and no similar issue was already discussed (please make sure you searched!)
|
||||
- [] I read the README, WHATS_NEW and UPGRADE
|
||||
- [] I read the FAQ (https://github.com/jekkos/opensourcepos#faq) for any known install and/or upgrade gotchas (in specific PHP has php-gd, php-intl, sockets and etc. installed)
|
||||
- [] I read the wiki
|
||||
- [] I ran any database upgrade scripts (e.g. database/2.4_to_3.0.sql), and migrating function
|
||||
- [] I'm aware the latest master could be a development version and therefore not stable
|
||||
- [] I know the version of OSPOS and git commit hash (check the footer of your OSPOS), the name and version of OS, Web server, PHP and MySQL and will add them to my issue report
|
||||
|
||||
### Installation information
|
||||
|
||||
- OSPOS version is:
|
||||
- OSPOS git commit hash is:
|
||||
- PHP version is: (e.g. 5.5, 5.6, 7.0, 7.1)
|
||||
- MySQL or MariaDB version is: (e.g. MySQL 5.5, MySQL 5.6, MySQL 5.7, MariaDB 10.0, MariaDB 10.1, MariaDB 10.2)
|
||||
- OS and version is: (e.g. CentOS 6.9, Ubuntu 16.4, Windows 10)
|
||||
- WebServer is: (e.g. Apache 2.2, Apache 2.4, Nginx 1.12, Nginx 1.13)
|
||||
- (If applicable) Installation package for the LAMP/LEMP stack is: (e.g. WAMP, XAMPP)
|
||||
|
||||
### Expected behaviour
|
||||
|
||||
@@ -29,4 +44,4 @@ IMPORTANT: If you remove the template when submitting an issue your issue will b
|
||||
### Actual behaviour
|
||||
|
||||
|
||||
### Steps to reproduce the issue
|
||||
### Steps to reproduce the issue
|
||||
|
||||
21
.gitignore
vendored
21
.gitignore
vendored
@@ -1,11 +1,15 @@
|
||||
node_modules
|
||||
public/bower_components
|
||||
tmp/
|
||||
bower_components
|
||||
public/bower_components
|
||||
tmp/
|
||||
tmp
|
||||
application/config/email.php
|
||||
application/config/database.php
|
||||
application/sessions/*
|
||||
application/logs/*
|
||||
application/uploads/*
|
||||
public/license/.licenses
|
||||
public/license/bower.LICENSES
|
||||
public/dist
|
||||
dist/
|
||||
docs/
|
||||
public/bower_components
|
||||
*.patch
|
||||
patches/
|
||||
.idea/
|
||||
@@ -15,12 +19,11 @@ git-svn-diff.py
|
||||
.buildpath
|
||||
.project
|
||||
.settings/*
|
||||
vendor/
|
||||
*.swp
|
||||
*.rej
|
||||
*.orig
|
||||
*~
|
||||
*.~
|
||||
*.log
|
||||
application/sessions/*
|
||||
public/license/.licenses
|
||||
vendor/mikey179
|
||||
.env
|
||||
|
||||
111
.htaccess
111
.htaccess
@@ -1,75 +1,66 @@
|
||||
# redirect to public page
|
||||
RewriteEngine On
|
||||
|
||||
# To redirect a subdomain to a subdir because of https not supporting wildcards
|
||||
# replace values between <> with your ones
|
||||
# RewriteCond %{HTTP_HOST} ^<OSPOS subdomain>\.<my web domain>\.com$ [OR]
|
||||
# RewriteCond %{HTTP_HOST} ^www\.<OSPOS subdomain>\.<my web domain>\.com$
|
||||
# RewriteRule ^/?$ "https\:\/\/www\.<my web domain>\.com\/<OSPOS path>" [R=301,L]
|
||||
|
||||
# To rewrite "domain.com -> www.domain.com" uncomment the following lines.
|
||||
# RewriteCond %{HTTPS} !=on
|
||||
# RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
|
||||
# RewriteCond %{HTTP_HOST} (.+)$ [NC]
|
||||
# RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
|
||||
|
||||
# Suppress index.php from OSPOS URL
|
||||
# Remember to set in application/config/config.php $config['index_page'] = '';
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
# if in web root
|
||||
RewriteRule ^(.*)$ index.php?/$1 [L]
|
||||
# if in subdir comment above line, uncomment below one and replace <OSPOS path> with your path
|
||||
# RewriteRule ^(.*)$ /<OSPOS path>/index.php?/$1 [L]
|
||||
RewriteCond %{REQUEST_URI} !^/public$
|
||||
RewriteRule ^(.*)/$ /public/ [R=301,L]
|
||||
|
||||
# disable directory browsing
|
||||
# For security reasons, Option all cannot be overridden.
|
||||
#Options All -Indexes
|
||||
Options +ExecCGI +Includes +IncludesNOEXEC +SymLinksIfOwnerMatch -Indexes
|
||||
|
||||
# prevent folder listing
|
||||
IndexIgnore *
|
||||
|
||||
# secure htaccess file
|
||||
<Files .htaccess>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
</Files>
|
||||
# Apache 2.4
|
||||
<IfModule authz_core_module>
|
||||
# secure htaccess file
|
||||
<Files .htaccess>
|
||||
Require all denied
|
||||
</Files>
|
||||
|
||||
# prevent access to PHP error log
|
||||
<Files error_log>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy all
|
||||
</Files>
|
||||
# prevent access to PHP error log
|
||||
<Files error_log>
|
||||
Require all denied
|
||||
</Files>
|
||||
|
||||
# prevent access to COPYING
|
||||
<Files COPYING>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy all
|
||||
</Files>
|
||||
# prevent access to LICENSE
|
||||
<Files LICENSE>
|
||||
Require all denied
|
||||
</Files>
|
||||
|
||||
# prevent access to csv and txt files
|
||||
<FilesMatch "\.(csv|txt)$">
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy all
|
||||
</FilesMatch>
|
||||
|
||||
# control access to generate_languages.php
|
||||
<Files generate_languages.php>
|
||||
Order deny,allow
|
||||
Deny from all
|
||||
|
||||
Allow from 127.0.0.1
|
||||
|
||||
# My IP(s)
|
||||
# Allow from xxx.xxx.xxx.xxx
|
||||
</Files>
|
||||
|
||||
<IfModule mod_expires.c>
|
||||
<FilesMatch "\.(jpe?g|png|gif|js|css)$">
|
||||
ExpiresActive On
|
||||
ExpiresDefault "access plus 1 week"
|
||||
# prevent access to csv, txt and md files
|
||||
<FilesMatch "\.(csv|txt|md|yml|json|lock)$">
|
||||
Require all denied
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
|
||||
# Apache 2.2
|
||||
<IfModule !authz_core_module>
|
||||
# secure htaccess file
|
||||
<Files .htaccess>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy all
|
||||
</Files>
|
||||
|
||||
# prevent access to PHP error log
|
||||
<Files error_log>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy all
|
||||
</Files>
|
||||
|
||||
# prevent access to LICENSE
|
||||
<Files LICENSE>
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy all
|
||||
</Files>
|
||||
|
||||
# prevent access to csv, txt and md files
|
||||
<FilesMatch "\.(csv|txt|md|yml|json|lock)$">
|
||||
Order allow,deny
|
||||
Deny from all
|
||||
Satisfy all
|
||||
</FilesMatch>
|
||||
</IfModule>
|
||||
|
||||
27
.travis.yml
27
.travis.yml
@@ -1,21 +1,32 @@
|
||||
sudo: true # Required to install packages
|
||||
sudo: true
|
||||
|
||||
branches:
|
||||
except:
|
||||
- weblate
|
||||
|
||||
services:
|
||||
services:
|
||||
- docker
|
||||
before_install:
|
||||
- curl -L https://github.com/docker/compose/releases/download/1.7.1/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
|
||||
- git clone https://github.com/bcit-ci/codeigniter3-translations dist/ci-translations && sudo cp -r dist/ci-translations/language/* vendor/codeigniter/framework/system/language
|
||||
- docker run --rm -it -v $(pwd):/app -w /app digitallyseamless/nodejs-bower-grunt sh -c "npm install && bower install && grunt package"
|
||||
- docker-compose build
|
||||
- docker-compose up -d
|
||||
env:
|
||||
env:
|
||||
- TAG=$(echo ${TRAVIS_BRANCH} | sed s/feature\\///)
|
||||
after_success:
|
||||
-
|
||||
- '[ -n ${DOCKER_USERNAME} ] && docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD" && docker tag opensourcepos_php "jekkos/opensourcepos:$TAG" && docker tag opensourcepos_sqlscript jekkos/opensourcepos:sqlscript && docker push "jekkos/opensourcepos:$TAG" && docker push jekkos/opensourcepos:sqlscript'
|
||||
|
||||
'[ -n ${DOCKER_USERNAME} ] && docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"
|
||||
&& docker tag opensourcepos_php "jekkos/opensourcepos:$TAG" && docker tag opensourcepos_sqlscript
|
||||
jekkos/opensourcepos:sqlscript && docker push "jekkos/opensourcepos:$TAG" && docker
|
||||
push jekkos/opensourcepos:sqlscript'
|
||||
deploy:
|
||||
provider: bintray
|
||||
file: deployment.json
|
||||
user: jekkos
|
||||
on:
|
||||
all_branches: true
|
||||
key:
|
||||
secure: NGzLiwBZ4A6zO9AqUsVeht29A7UZejO/LKEJntQMdzYaBXD6Ao3zXpS3bPN3UwU/YTNdcm3I7DemAL2ypAkCxcdzfp842eeTlFMDuzUiD5MxrQyWeZnbFxyeN4bJgXOnH/93eXxoIg0qT7ORVzwHrrA6vOqfxB1Nq/DAV2MpK/0=
|
||||
|
||||
15
Dockerfile
15
Dockerfile
@@ -1,24 +1,19 @@
|
||||
FROM php:5-apache
|
||||
FROM php:7.0.15-apache
|
||||
MAINTAINER jekkos
|
||||
RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
|
||||
php5-apcu \
|
||||
libicu-dev \
|
||||
libgd-dev \
|
||||
sendmail
|
||||
libmcrypt-dev
|
||||
|
||||
RUN a2enmod rewrite
|
||||
RUN docker-php-ext-install mysql mysqli bcmath intl gd sockets mbstring
|
||||
RUN docker-php-ext-install mysqli bcmath intl gd sockets mbstring mcrypt
|
||||
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 775 /app/public/uploads
|
||||
RUN chmod 755 /app/public/uploads && chown -R www-data:www-data /app/public /app/application
|
||||
|
||||
RUN cp application/config/database.php.tmpl application/config/database.php && \
|
||||
sed -i -e "s/\(localhost\)/web/g" test/ospos.js && \
|
||||
sed -i -e "s/\(user.*\?=.\).*\(.\)$/\1getenv('MYSQL_USERNAME')\2/g" application/config/database.php && \
|
||||
sed -i -e "s/\(password.*\?=.\).*\(.\)$/\1getenv('MYSQL_PASSWORD')\2/g" application/config/database.php && \
|
||||
sed -i -e "s/\(database.*\?=.\).*\(.\)$/\1getenv('MYSQL_DB_NAME')\2/g" application/config/database.php && \
|
||||
sed -i -e "s/\(hostname.*\?=.\).*\(.\)$/\1getenv('MYSQL_HOST_NAME')\2/g" application/config/database.php
|
||||
RUN [ ! -f test/ospos.js ] || sed -i -e "s/\(localhost\)/web/g" test/ospos.js
|
||||
|
||||
71
Gruntfile.js
71
Gruntfile.js
@@ -23,27 +23,22 @@ module.exports = function(grunt) {
|
||||
options: {
|
||||
report: false
|
||||
},
|
||||
targetdistjqueryui: {
|
||||
options: {
|
||||
srcPrefix: 'public/bower_components/jquery-ui',
|
||||
destPrefix: 'public/dist'
|
||||
},
|
||||
files: {
|
||||
'jquery-ui': 'themes/base/jquery-ui.min.css'
|
||||
}
|
||||
},
|
||||
targetdistbootswatch: {
|
||||
options: {
|
||||
srcPrefix: 'public/bower_components/bootswatch',
|
||||
destPrefix: 'public/dist/bootswatch'
|
||||
destPrefix: 'public/dist'
|
||||
},
|
||||
files: {
|
||||
'cerulean/bootstrap.min.css': 'cerulean/bootstrap.min.css',
|
||||
'cosmo/bootstrap.min.css': 'cosmo/bootstrap.min.css',
|
||||
'cyborg/bootstrap.min.css': 'cyborg/bootstrap.min.css',
|
||||
'darkly/bootstrap.min.css': 'darkly/bootstrap.min.css',
|
||||
'flatly/bootstrap.min.css': 'flatly/bootstrap.min.css',
|
||||
'journal/bootstrap.min.css': 'journal/bootstrap.min.css',
|
||||
'paper/bootstrap.min.css': 'paper/bootstrap.min.css',
|
||||
'readable/bootstrap.min.css': 'readable/bootstrap.min.css',
|
||||
'sandstone/bootstrap.min.css': 'sandstone/bootstrap.min.css',
|
||||
'slate/bootstrap.min.css': 'slate/bootstrap.min.css',
|
||||
'spacelab/bootstrap.min.css': 'spacelab/bootstrap.min.css',
|
||||
'superhero/bootstrap.min.css': 'superhero/bootstrap.min.css',
|
||||
'united/bootstrap.min.css': 'united/bootstrap.min.css',
|
||||
'yeti/bootstrap.min.css': 'yeti/bootstrap.min.css',
|
||||
'fonts': 'fonts'
|
||||
bootswatch: '*/'
|
||||
}
|
||||
},
|
||||
targetlicense: {
|
||||
@@ -53,12 +48,12 @@ module.exports = function(grunt) {
|
||||
files: {
|
||||
'public/license': 'LICENSE'
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
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/css/style.css']
|
||||
'public/dist/<%= pkg.name %>.min.css': ['tmp/opensourcepos_bower.css', 'public/css/*.css', '!public/css/login.css', '!public/css/invoice_email.css', '!public/css/barcode_font.css']
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -121,7 +116,8 @@ module.exports = function(grunt) {
|
||||
closeTag: '<!-- end mincss template tags -->',
|
||||
ignorePath: '../../../public/'
|
||||
},
|
||||
src: ['public/dist/*.css', '!public/dist/login.css', '!public/dist/invoice_email.css', '!public/dist/barcode_font.css'],
|
||||
// jquery-ui must be first or at least before opensourcepos.min.css
|
||||
src: ['public/dist/jquery-ui/*.css', 'public/dist/*.css'],
|
||||
dest: 'application/views/partial/header.php',
|
||||
},
|
||||
css_login: {
|
||||
@@ -131,7 +127,7 @@ module.exports = function(grunt) {
|
||||
closeTag: '<!-- end css template tags -->',
|
||||
ignorePath: '../../public/'
|
||||
},
|
||||
src: ['public/dist/login.css'],
|
||||
src: ['public/css/login.css'],
|
||||
dest: 'application/views/login.php'
|
||||
},
|
||||
js: {
|
||||
@@ -195,8 +191,8 @@ module.exports = function(grunt) {
|
||||
// Target-specific options go here.
|
||||
directory: 'public/bower_components',
|
||||
output: 'public/license/bower.LICENSES'
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
'bower-licensechecker': {
|
||||
options: {
|
||||
@@ -217,13 +213,40 @@ module.exports = function(grunt) {
|
||||
noGood: true,
|
||||
}
|
||||
}
|
||||
},
|
||||
apigen: {
|
||||
generate:{
|
||||
options: {
|
||||
apigenPath: 'vendor/bin/',
|
||||
source: 'application',
|
||||
destination: 'docs'
|
||||
}
|
||||
}
|
||||
},
|
||||
compress: {
|
||||
main: {
|
||||
options: {
|
||||
mode: 'zip',
|
||||
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']}
|
||||
]
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
require('load-grunt-tasks')(grunt);
|
||||
grunt.loadNpmTasks('grunt-mocha-webdriver');
|
||||
|
||||
grunt.loadNpmTasks('grunt-composer');
|
||||
grunt.loadNpmTasks('grunt-apigen');
|
||||
grunt.loadNpmTasks('grunt-contrib-compress');
|
||||
|
||||
grunt.registerTask('default', ['wiredep', 'bower_concat', 'bowercopy', 'concat', 'uglify', 'cssmin', 'tags', 'cachebreaker']);
|
||||
grunt.registerTask('update', ['composer:update', 'bower:update']);
|
||||
grunt.registerTask('genlicense', ['clean:license', 'license', 'bower-licensechecker']);
|
||||
grunt.registerTask('package', ['default', 'compress']);
|
||||
grunt.registerTask('packages', ['composer:update']);
|
||||
grunt.registerTask('gendocs', ['apigen:generate']);
|
||||
|
||||
};
|
||||
|
||||
15
LICENSE
15
LICENSE
@@ -5,11 +5,18 @@ Copyright (c) 2012 Alain
|
||||
Copyright (c) 2013 Rob Garrison
|
||||
Copyright (c) 2013 Parq
|
||||
Copyright (c) 2013 Ramel
|
||||
Copyright (c) 2014-2016 jekkos
|
||||
Copyright (c) 2015-2016 FrancescoUK (aka daN4cat)
|
||||
Copyright (c) 2013-2017 jekkos
|
||||
Copyright (c) 2015-2017 FrancescoUK (aka daN4cat)
|
||||
Copyright (c) 2015 Aamir Shahzad (aka asakpke), RoshanTech.com
|
||||
Copyright (c) 2015 Toni Haryanto (aka yllumi)
|
||||
Copyright (c) 2016 Ramkrishna Mondal (aka RamkrishnaMondal)
|
||||
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 Steve Ireland
|
||||
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 odiea
|
||||
|
||||
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
|
||||
@@ -32,4 +39,4 @@ 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.
|
||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
91
README.md
91
README.md
@@ -5,31 +5,39 @@
|
||||
[](https://badge.fury.io/gh/jekkos%2Fopensourcepos)
|
||||
[](http://weblate.jpeelaer.net/engage/ospos/?utm_source=widget)
|
||||
|
||||
|
||||
Introduction
|
||||
------------
|
||||
|
||||
Open Source Point of Sale is a web based point of sale system.
|
||||
The main features are:
|
||||
* Stock management
|
||||
* Stock management (Items and Kits)
|
||||
* VAT, customer and multi tiers taxation
|
||||
* Sale register with transactions logging
|
||||
* Receipt and invoice printing and emailing
|
||||
* Quotation and invoicing
|
||||
* Receipt and invoice printing and/or emailing
|
||||
* Barcode generation and printing
|
||||
* Suppliers and Customers database
|
||||
* Multiuser with permission control
|
||||
* Reporting
|
||||
* Gift card
|
||||
* Receivings
|
||||
* Barcode generation and printing
|
||||
* Messaging
|
||||
* Giftcard
|
||||
* Rewards
|
||||
* Restaurant tables
|
||||
* Messaging (SMS)
|
||||
* Multilanguage
|
||||
* Different UI themes
|
||||
* Selectable Boostrap (Bootswatch) based UI theme
|
||||
* Mailchimp integration
|
||||
* reCAPTCHA to protect login page from brute force attacks
|
||||
* Reporting on sales, orders, inventory status
|
||||
|
||||
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 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 version 3.0.0 is a complete overhaul of the original software.
|
||||
The latest 3.x version is a complete overhaul of the original software.
|
||||
It is now based on Bootstrap 3.x using Bootswatch themes, and still uses CodeIgniter 3.x as framework.
|
||||
It also has improved functionality and security.
|
||||
|
||||
Deployed to a Cloud it can be defined as a SaaS (Software as as Service) type of solution.
|
||||
Deployed to a Cloud it's a SaaS (Software as a Service) solution.
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
@@ -58,36 +66,48 @@ In short you are free to use the software but you cannot claim any property on i
|
||||
|
||||
Any person or company found breaching the license agreement will be chased up.
|
||||
|
||||
|
||||
Keep the Machine Running
|
||||
------------------------
|
||||
|
||||
If you like the project, and you are making money out of it on a daily basis, then consider buying me a coffee so I can keep adding features.
|
||||
|
||||
[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=MUN6AEG7NY6H8)
|
||||
|
||||
|
||||
Server Requirements
|
||||
-------------------
|
||||
PHP version 5.5 or newer is recommended but PHP 7.x is not fully supported yet.
|
||||
MySQL 5.5 or 5.6 are fine but MySQL 5.7 is not supported yet.
|
||||
|
||||
PHP version 5.6 or newer is recommended (PHP 7.x is supported). Please note that PHP needs to have `php-gd`, `php-bcmath`, `php-intl`, `php-sockets`, `php-mcrypt` 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.
|
||||
|
||||
Apache 2.2 and 2.4 are supported. Also Nginx has been proven to work fine, see [wiki page here](https://github.com/jekkos/opensourcepos/wiki/Local-Deployment-using-LEMP)
|
||||
|
||||
Raspberry PI based installations proved to work, see [wiki page here](https://github.com/jekkos/opensourcepos/wiki/Installing-on-Raspberry-PI---Orange-PI-(Headless-OSPOS))
|
||||
|
||||
For Windows based installations please read [the wiki](https://github.com/jekkos/opensourcepos/wiki) and also existing closed issues as this topic has been covered well in all the variants and issues.
|
||||
|
||||
|
||||
Local install
|
||||
-------------
|
||||
1. Create/locate a new mysql database to install open source point of sale into
|
||||
2. Execute the file database/database.sql to create the tables needed
|
||||
3. unzip and upload Open Source Point of Sale files to web server
|
||||
4. Copy application/config/database.php.tmpl to application/config/database.php
|
||||
5. Modify application/config/database.php to connect to your database
|
||||
|
||||
1. Dowload the latest [stable release](https://github.com/jekkos/opensourcepos/releases) from github or [unstable build](https://bintray.com/jekkos/opensourcepos/opensourcepos/view/files?sort=updated&order=asc#files) from bintray
|
||||
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
|
||||
5. Modify application/config/database.php and modify credentials if needed to connect to your database
|
||||
6. Modify application/config/config.php encryption key with your own
|
||||
7. Go to your point of sale install public dir via the browser
|
||||
8. LOGIN using
|
||||
* username: admin
|
||||
* password: pointofsale
|
||||
9. Enjoy
|
||||
10. Oops an issue? Please read the FAQ first thing :-)
|
||||
|
||||
P.S.: For more info about a local install based on Raspberry PI please read our wiki
|
||||
10. Oops an issue? Please make sure you read the FAQ, wiki page and you checked open and closed issue on GitHub. PHP display_errors is disabled by default. Create an application/config/.env file from the .env.example to enable it in a development environment.
|
||||
|
||||
Local install using Docker
|
||||
--------------------------
|
||||
|
||||
From now on ospos can be deployed using Docker on Linux, Mac or Windows. 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, but will require more overhead on windows. Please refer to the docker documentation for instructions on how to set it up on your platform.
|
||||
|
||||
To build and run the image, issue following commands in a terminal with docker installed
|
||||
@@ -95,13 +115,17 @@ To build and run the image, issue following commands in a terminal with docker i
|
||||
docker-compose build
|
||||
docker-compose up
|
||||
|
||||
|
||||
Cloud install
|
||||
-------------
|
||||
|
||||
A quick option would be to install directly to [Digitalocean](https://m.do.co/c/ac38c262507b) using their preconfigured LAMP stack.
|
||||
Create a DO account first, add a droplet with preconfigured LAMP and follow the instructions for Local Install below. You will be running a provisioned VPS within minutes.
|
||||
|
||||
|
||||
Cloud install using Docker
|
||||
--------------------------
|
||||
|
||||
If you want to run a quick demo of ospos or run it permanently in the cloud, then we
|
||||
suggest using Docker cloud together with the DigitalOcean hosting platform. This way all the
|
||||
configuration is done automatically and the install will just work.
|
||||
@@ -122,19 +146,20 @@ month of uptime on the platform. A full setup will only take about 2 minutes by
|
||||
|
||||
More info [on maintaining a docker](https://github.com/jekkos/opensourcepos/wiki/Docker-cloud-maintenance) install can be found on the wiki
|
||||
|
||||
|
||||
Reporting Bugs
|
||||
--------------
|
||||
Since OSPOS 3.0.0 is a version under development, please make sure you always run the latest 2.4_to_3.0.sql database upgrade script.
|
||||
Please DO NOT post issues if you have not done that before running OSPOS 3.0.
|
||||
Please also make sure you have updated all the files from latest master.
|
||||
|
||||
If you are taking a release candidate code please make sure you always run the latest database upgrade script and you took the latest code from master.
|
||||
Please DO NOT post issues if you have not done those step.
|
||||
|
||||
Bug reports must follow this schema:
|
||||
|
||||
1. Ospos **version string with git commit hash** (see ospos footer)
|
||||
2. OS name and version running your Web Server (e.g. Linux Ubuntu 15.0)
|
||||
2. OS name and version running your Web Server (e.g. Linux Ubuntu 16.04)
|
||||
3. Web Server name and version (e.g. Apache 2.4)
|
||||
4. Database name and version (e.g. =< MySQL 5.6)
|
||||
5. PHP version (e.g. PHP 5.5)
|
||||
4. Database name and version (e.g. MySQL 5.6)
|
||||
5. PHP version (e.g. PHP 5.6)
|
||||
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)
|
||||
@@ -143,20 +168,20 @@ Bug reports must follow this schema:
|
||||
If above information is not provided in full, your issue will be tagged as pending.
|
||||
If missing information is not provided within a week we will close your issue.
|
||||
|
||||
|
||||
FAQ
|
||||
---
|
||||
* If a blank page (HTTP status 500) shows after search completion or receipt generation, then double check php5-gd presence in your php installation. On windows check in php.ini whether the lib is installed. On Ubuntu issue `sudo apt-get install php5-gd`. Also have a look at the Dockerfile for a complete list of recommended packages.
|
||||
|
||||
* If sales and receiving views don't show properly, please make sure BCMath lib (php-bcmath) is installed. On windows check php.ini and make sure php_bcmath extension is not commented out
|
||||
* If a blank page (HTTP status 500) shows after search completion or receipt generation, then double check `php5-gd` presence in your php installation. On windows check in php.ini whether the lib is installed. On Ubuntu issue `sudo apt-get install php5-gd`. Also have a look at the Dockerfile for a complete list of recommended packages.
|
||||
|
||||
* If the following error is seen in sales module `Message: Class 'NumberFormatter' not found` then you don't have `php5-intl` extension installed. Please check the [wiki](https://github.com/jekkos/opensourcepos/wiki/Localisation-support#php5-intl-extension-installation) to resolve this issue on your platform.
|
||||
* If sales and receiving views don't show properly, please make sure BCMath lib (`php-bcmath`) is installed. On windows check php.ini and make sure php_bcmath extension is not commented out
|
||||
|
||||
* If you are getting the error `Message: Can't use method return value in write context` that means that you are probably using PHP7 which is not completely supported yet. Check your hosting configuration to verify whether you have a supported PHP version installed
|
||||
* If the following error is seen in sales module `Message: Class 'NumberFormatter' not found` then you don't have `php5-intl` extension installed. Please check the [wiki](https://github.com/jekkos/opensourcepos/wiki/Localisation-support#php5-intl-extension-installation) to resolve this issue on your platform. If you use WAMP, please read [issue #949](https://github.com/jekkos/opensourcepos/issues/949)
|
||||
|
||||
* If you read errors containing messages with Socket word in it, please make sure you have installed PHP Sockets support (e.g. go to PHP.ini and make sure all the needed modules are not commented out. This means php5-gd, php-intl and php-sockets. Restart the web server)
|
||||
|
||||
* If you get various errors at item creation, opening views or reports, or having issues at login please make sure you are not using MySQL5.7 as it's not supported yet
|
||||
* If you read errors containing messages with Socket word in it, please make sure you have installed PHP Sockets support (e.g. go to PHP.ini and make sure all the needed modules are not commented out. This means `php5-gd`, `php-intl` and `php-sockets`. Restart the web server)
|
||||
|
||||
* If you installed your OSPOS under a web server subdir, please edit public/.htaccess and go to the lines with comment `if in web root` and `if in subdir comment above line, uncomment below one and replace <OSPOS path> with your path` and follow the instruction on the second comment line. If you face more issues please read [issue #920](https://github.com/jekkos/opensourcepos/issues/920) for more help
|
||||
|
||||
* 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 you have problems with the encryption support or you get an error please make sure `php5-mcrypt` is installed
|
||||
|
||||
12
UPGRADE.txt
12
UPGRADE.txt
@@ -4,11 +4,13 @@ How to Upgrade
|
||||
2. Make sure you have a copy of application/config/config.php and application/config/database.php
|
||||
3. Remove all directories
|
||||
4. Install the new OSPOS
|
||||
5. Run the database upgrade scripts from database/ (check which ones you need according to the version you are upgrading from)
|
||||
5. Run the database upgrade scripts from database/ dir (check which ones you need according to the version you are upgrading from)
|
||||
6. Take the saved old config.php and upgrade the new config.php with any additional changes you made in the old.
|
||||
Take time to understand if new config rules require some changes (e.g. encryption keys)
|
||||
7. Copy application/config/database.php.tmpl to application/config/database.php
|
||||
8. Take the saved old database.php and change the new database.php to contain all the configuration you had in the old setup.
|
||||
7. Take the saved old database.php and change the new database.php to contain all the configuration you had in the old setup.
|
||||
Please try not to use the old layout, use the new one and just copy the content of the config variables
|
||||
9. Once new code is in place, database is updated and config files are sorted you are good to start the new OSPOS
|
||||
10. If any issue please check FAQ and/or GitHub issues as somebody else might have had your problem already or post a question
|
||||
8. Restore the content of the old uploads/ folder into public/uploads/ one
|
||||
9. Once the new code is in place, database is updated and config files are sorted you are good to start the new OSPOS
|
||||
10. Once logged in in OSPOS go to Migrate (see Migrate button after Store Config) and run the Migrate script
|
||||
11. Now you can use OSPOS
|
||||
12. If any issue please check FAQ and/or GitHub issues as somebody else might have had your problem already or post a question
|
||||
|
||||
@@ -1,3 +1,56 @@
|
||||
Version 3.1.0
|
||||
-----------
|
||||
+ MySQL 5.7 and PHP 7.x support
|
||||
+ Advanced Tax support with customer tax categories and etc,
|
||||
+ Better HORECA use case support with Dinner Table sale tagging
|
||||
+ Customer Rewards support
|
||||
+ Added quote support and better invoice support
|
||||
+ Added integration with Mailchimp to connect Customer list with Mailchimp list
|
||||
+ Prevent inserting two customers with same email address
|
||||
+ Customer total spending and stats
|
||||
+ Added reCAPTCHA to Login page to increase protection from Brute Force attacks
|
||||
+ Added due payment for credit sale support
|
||||
+ Gifcard numbering with two options: Series and Random
|
||||
+ Extended Item Kits functionality
|
||||
+ Employee allowed to change their own password clicking their name on top bar
|
||||
+ Cash rounding support, extended decimals
|
||||
+ Reworked Item Pictures and file name and storing
|
||||
+ Financial year start date and selection from date range pickers
|
||||
+ Date time range filters can be date & time or date only
|
||||
+ Added two new Bootswatch themes
|
||||
+ Receipts font size support
|
||||
+ Fix automatically people's name first capital letter, emails in lower case only
|
||||
+ Fixes to Receiving
|
||||
+ Various amendments to database script updates from older versions
|
||||
+ Added dotenv support
|
||||
+ Updates to language translations (split English to American English and British English)
|
||||
+ Various Dockers support improvements
|
||||
+ Minor bugfixes
|
||||
|
||||
Version 3.0.2
|
||||
-----------
|
||||
+ Fixed error when performing scans multiple times in a row
|
||||
+ Fixed summary reports
|
||||
+ Protect Employee privacy printing just the first letter of the family name
|
||||
+ Updates to language translations
|
||||
+ Various Dockers support improvements
|
||||
+ Minor bugfixes
|
||||
|
||||
Version 3.0.1
|
||||
-----------
|
||||
+ *CodeIgniter 3.1.2 Upgrade*
|
||||
+ *Substantial database performance improvements*
|
||||
+ *Improved security: email and sms passwords encryption, removed phpinfo.php*
|
||||
+ *Set code to be production and not development in index.php*
|
||||
+ *Reports improvements, fixed table sorting, tax calculation and made profit to be net profit*
|
||||
+ Better Apache 2.4 support in .htaccess
|
||||
+ Updates to language translations
|
||||
+ Fixed excel template download links
|
||||
+ Fixed employee name in Sale receipt and invoice reprinting
|
||||
+ Fixed 2.3.2_to_2.3.3.sql database upgrade script mistake
|
||||
+ Fixed phppos to ospos database migration script
|
||||
+ Minor bugfixes and some general code clean up
|
||||
|
||||
Version 3.0.0
|
||||
-----------
|
||||
+ *CodeIgniter 3.1 Upgrade*
|
||||
|
||||
7
application/config/.env.example
Normal file
7
application/config/.env.example
Normal file
@@ -0,0 +1,7 @@
|
||||
CI_ENV="development"
|
||||
|
||||
#Database Settings
|
||||
MYSQL_HOST_NAME="localhost"
|
||||
MYSQL_USERNAME=""
|
||||
MYSQL_PASSWORD=""
|
||||
MYSQL_DB_NAME=""
|
||||
@@ -58,7 +58,7 @@ $autoload['packages'] = array();
|
||||
|
|
||||
| $autoload['libraries'] = array('user_agent' => 'ua');
|
||||
*/
|
||||
$autoload['libraries'] = array('database', 'form_validation', 'session', 'user_agent', 'pagination');
|
||||
$autoload['libraries'] = array('database', 'form_validation', 'session', 'user_agent', 'pagination', 'encryption');
|
||||
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
@@ -132,4 +132,4 @@ $autoload['language'] = array();
|
||||
|
|
||||
| $autoload['model'] = array('first_model' => 'first');
|
||||
*/
|
||||
$autoload['model'] = array('Appconfig', 'Person', 'Customer', 'Employee', 'Module', 'Item', 'Item_taxes', 'Sale', 'Sale_suspended', 'Supplier', 'Inventory', 'Receiving', 'Giftcard', 'Item_kit', 'Item_kit_items', 'Stock_location', 'Item_quantity');
|
||||
$autoload['model'] = array('Appconfig', 'Person', 'Customer', 'Employee', 'Module', 'Item', 'Item_taxes', 'Sale', 'Supplier', 'Inventory', 'Receiving', 'Giftcard', 'Item_kit', 'Item_kit_items', 'Stock_location', 'Item_quantity', 'Dinner_table', 'Customer_rewards', 'Rewards', 'Tax');
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|
|
||||
|
|
||||
*/
|
||||
$config['application_version'] = '3.0.0';
|
||||
$config['application_version'] = '3.1.0';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -19,7 +19,7 @@ $config['application_version'] = '3.0.0';
|
||||
|
|
||||
|
|
||||
*/
|
||||
$config['commit_sha1'] = '$Id$';
|
||||
$config['commit_sha1'] = '$Id $';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -33,6 +33,16 @@ $config['commit_sha1'] = '$Id$';
|
||||
*/
|
||||
$config['ospos_xss_clean'] = TRUE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Enable database query logging hook
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Logs are stored in application/logs
|
||||
|
|
||||
*/
|
||||
$config['db_log_enabled'] = FALSE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Base Site URL
|
||||
@@ -348,7 +358,7 @@ $config['cache_query_string'] = FALSE;
|
||||
| https://codeigniter.com/user_guide/libraries/encryption.html
|
||||
|
|
||||
*/
|
||||
$config['encryption_key'] = '';
|
||||
$config['encryption_key'] = getenv('ENCRYPTION_KEY') ? getenv('ENCRYPTION_KEY') : '';
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -501,6 +511,7 @@ $config['csrf_exclude_uris'] = array();
|
||||
*/
|
||||
$config['compress_output'] = FALSE;
|
||||
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Master Time Reference
|
||||
|
||||
@@ -75,12 +75,12 @@ $query_builder = TRUE;
|
||||
|
||||
$db['default'] = array(
|
||||
'dsn' => '',
|
||||
'hostname' => 'localhost',
|
||||
'username' => '',
|
||||
'password' => '',
|
||||
'database' => '',
|
||||
'hostname' => !empty(getenv('MYSQL_HOST_NAME')) ? getenv('MYSQL_HOST_NAME') : 'localhost',
|
||||
'username' => !empty(getenv('MYSQL_USERNAME')) ? getenv('MYSQL_USERNAME') : 'admin',
|
||||
'password' => !empty(getenv('MYSQL_PASSWORD')) ? getenv('MYSQL_PASSWORD') : 'pointofsale',
|
||||
'database' => !empty(getenv('MYSQL_DB_NAME')) ? getenv('MYSQL_DB_NAME') : 'ospos',
|
||||
'dbdriver' => 'mysqli',
|
||||
'dbprefix' => '',
|
||||
'dbprefix' => 'ospos_',
|
||||
'pconnect' => FALSE,
|
||||
'db_debug' => (ENVIRONMENT !== 'production'),
|
||||
'cache_on' => FALSE,
|
||||
@@ -93,4 +93,4 @@ $db['default'] = array(
|
||||
'stricton' => FALSE,
|
||||
'failover' => array(),
|
||||
'save_queries' => TRUE
|
||||
);
|
||||
);
|
||||
@@ -1,96 +0,0 @@
|
||||
<?php
|
||||
defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
|
||||
/*
|
||||
| -------------------------------------------------------------------
|
||||
| DATABASE CONNECTIVITY SETTINGS
|
||||
| -------------------------------------------------------------------
|
||||
| This file will contain the settings needed to access your database.
|
||||
|
|
||||
| For complete instructions please consult the 'Database Connection'
|
||||
| page of the User Guide.
|
||||
|
|
||||
| -------------------------------------------------------------------
|
||||
| EXPLANATION OF VARIABLES
|
||||
| -------------------------------------------------------------------
|
||||
|
|
||||
| ['dsn'] The full DSN string describe a connection to the database.
|
||||
| ['hostname'] The hostname of your database server.
|
||||
| ['username'] The username used to connect to the database
|
||||
| ['password'] The password used to connect to the database
|
||||
| ['database'] The name of the database you want to connect to
|
||||
| ['dbdriver'] The database driver. e.g.: mysqli.
|
||||
| Currently supported:
|
||||
| cubrid, ibase, mssql, mysql, mysqli, oci8,
|
||||
| odbc, pdo, postgre, sqlite, sqlite3, sqlsrv
|
||||
| ['dbprefix'] You can add an optional prefix, which will be added
|
||||
| to the table name when using the Query Builder class
|
||||
| ['pconnect'] TRUE/FALSE - Whether to use a persistent connection
|
||||
| ['db_debug'] TRUE/FALSE - Whether database errors should be displayed.
|
||||
| ['cache_on'] TRUE/FALSE - Enables/disables query caching
|
||||
| ['cachedir'] The path to the folder where cache files should be stored
|
||||
| ['char_set'] The character set used in communicating with the database
|
||||
| ['dbcollat'] The character collation used in communicating with the database
|
||||
| NOTE: For MySQL and MySQLi databases, this setting is only used
|
||||
| as a backup if your server is running PHP < 5.2.3 or MySQL < 5.0.7
|
||||
| (and in table creation queries made with DB Forge).
|
||||
| There is an incompatibility in PHP with mysql_real_escape_string() which
|
||||
| can make your site vulnerable to SQL injection if you are using a
|
||||
| multi-byte character set and are running versions lower than these.
|
||||
| Sites using Latin-1 or UTF-8 database character set and collation are unaffected.
|
||||
| ['swap_pre'] A default table prefix that should be swapped with the dbprefix
|
||||
| ['encrypt'] Whether or not to use an encrypted connection.
|
||||
|
|
||||
| 'mysql' (deprecated), 'sqlsrv' and 'pdo/sqlsrv' drivers accept TRUE/FALSE
|
||||
| 'mysqli' and 'pdo/mysql' drivers accept an array with the following options:
|
||||
|
|
||||
| 'ssl_key' - Path to the private key file
|
||||
| 'ssl_cert' - Path to the public key certificate file
|
||||
| 'ssl_ca' - Path to the certificate authority file
|
||||
| 'ssl_capath' - Path to a directory containing trusted CA certificats in PEM format
|
||||
| 'ssl_cipher' - List of *allowed* ciphers to be used for the encryption, separated by colons (':')
|
||||
| 'ssl_verify' - TRUE/FALSE; Whether verify the server certificate or not ('mysqli' only)
|
||||
|
|
||||
| ['compress'] Whether or not to use client compression (MySQL only)
|
||||
| ['stricton'] TRUE/FALSE - forces 'Strict Mode' connections
|
||||
| - good for ensuring strict SQL while developing
|
||||
| ['ssl_options'] Used to set various SSL options that can be used when making SSL connections.
|
||||
| ['failover'] array - A array with 0 or more data for connections if the main should fail.
|
||||
| ['save_queries'] TRUE/FALSE - Whether to "save" all executed queries.
|
||||
| NOTE: Disabling this will also effectively disable both
|
||||
| $this->db->last_query() and profiling of DB queries.
|
||||
| When you run a query, with this setting set to TRUE (default),
|
||||
| CodeIgniter will store the SQL statement for debugging purposes.
|
||||
| However, this may cause high memory usage, especially if you run
|
||||
| a lot of SQL queries ... disable this to avoid that problem.
|
||||
|
|
||||
| The $active_group variable lets you choose which connection group to
|
||||
| make active. By default there is only one group (the 'default' group).
|
||||
|
|
||||
| The $query_builder variables lets you determine whether or not to load
|
||||
| the query builder class.
|
||||
*/
|
||||
$active_group = 'default';
|
||||
$query_builder = TRUE;
|
||||
|
||||
$db['default'] = array(
|
||||
'dsn' => '',
|
||||
'hostname' => 'localhost',
|
||||
'username' => '',
|
||||
'password' => '',
|
||||
'database' => '',
|
||||
'dbdriver' => 'mysqli',
|
||||
'dbprefix' => 'ospos_',
|
||||
'pconnect' => FALSE,
|
||||
'db_debug' => (ENVIRONMENT !== 'production'),
|
||||
'cache_on' => FALSE,
|
||||
'cachedir' => '',
|
||||
'char_set' => 'utf8',
|
||||
'dbcollat' => 'utf8_general_ci',
|
||||
'swap_pre' => '',
|
||||
'encrypt' => FALSE,
|
||||
'compress' => FALSE,
|
||||
'stricton' => FALSE,
|
||||
'failover' => array(),
|
||||
'save_queries' => TRUE
|
||||
);
|
||||
@@ -25,3 +25,20 @@ $hook['post_controller_constructor'][] = array(
|
||||
'filepath' => 'hooks'
|
||||
);
|
||||
|
||||
// 'post_controller' indicated execution of hooks after controller is finished
|
||||
$hook['post_controller'] = array(
|
||||
'class' => '',
|
||||
'function' => 'db_log_queries',
|
||||
'filename' => 'db_log.php',
|
||||
'filepath' => 'hooks'
|
||||
);
|
||||
|
||||
$hook['pre_system'] = function() {
|
||||
$config_path = APPPATH . 'config/';
|
||||
try {
|
||||
$dotenv = new Dotenv\Dotenv($config_path);
|
||||
$dotenv->overload();
|
||||
} catch(Exception $e) {
|
||||
// continue, .env file not present
|
||||
}
|
||||
};
|
||||
@@ -11,7 +11,7 @@ defined('BASEPATH') OR exit('No direct script access allowed');
|
||||
| and disable it back when you're done.
|
||||
|
|
||||
*/
|
||||
$config['migration_enabled'] = FALSE;
|
||||
$config['migration_enabled'] = TRUE;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
@@ -69,7 +69,7 @@ $config['migration_auto_latest'] = FALSE;
|
||||
| be upgraded / downgraded to.
|
||||
|
|
||||
*/
|
||||
$config['migration_version'] = 0;
|
||||
$config['migration_version'] = 20170502221500;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -1,14 +1,15 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
require_once("Secure_Controller.php");
|
||||
|
||||
class Config extends Secure_Controller
|
||||
class Config extends Secure_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('config');
|
||||
|
||||
$this->load->library('barcode_lib');
|
||||
$this->load->library('sale_lib');
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -80,22 +81,22 @@ class Config extends Secure_Controller
|
||||
$license[$i]['text'] = '';
|
||||
|
||||
$file = file_get_contents('license/composer.LICENSES');
|
||||
$array = json_decode($file, true);
|
||||
$array = json_decode($file, TRUE);
|
||||
|
||||
foreach($array as $key => $val)
|
||||
{
|
||||
if(is_array($val) && $key == 'dependencies')
|
||||
{
|
||||
{
|
||||
foreach($val as $key1 => $val1)
|
||||
{
|
||||
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)
|
||||
@@ -120,7 +121,7 @@ class Config extends Secure_Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$license[$i]['text'] = $this->xss_clean($license[$i]['text']);
|
||||
}
|
||||
|
||||
@@ -132,14 +133,14 @@ class Config extends Secure_Controller
|
||||
$license[$i]['text'] = '';
|
||||
|
||||
$file = file_get_contents('license/bower.LICENSES');
|
||||
$array = json_decode($file, true);
|
||||
$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))
|
||||
@@ -162,13 +163,16 @@ class Config extends Secure_Controller
|
||||
$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();
|
||||
@@ -180,28 +184,69 @@ class Config extends Secure_Controller
|
||||
{
|
||||
if($dirinfo->isDir() && !$dirinfo->isDot() && $dirinfo->getFileName() != 'fonts')
|
||||
{
|
||||
$themes[$dirinfo->getFileName()] = $dirinfo->getFileName();
|
||||
$file = $this->xss_clean($dirinfo->getFileName());
|
||||
$themes[$file] = $file;
|
||||
}
|
||||
}
|
||||
|
||||
asort($themes);
|
||||
|
||||
return $themes;
|
||||
}
|
||||
|
||||
|
||||
public function index()
|
||||
{
|
||||
$data['stock_locations'] = $this->Stock_location->get_all()->result_array();
|
||||
$data['dinner_tables'] = $this->Dinner_table->get_all()->result_array();
|
||||
$data['tax_categories'] = $this->Tax->get_all_tax_categories()->result_array();
|
||||
$data['customer_rewards'] = $this->Customer_rewards->get_all()->result_array();
|
||||
$data['support_barcode'] = $this->barcode_lib->get_list_barcodes();
|
||||
$data['logo_exists'] = $this->Appconfig->get('company_logo') != '';
|
||||
|
||||
$data['logo_exists'] = $this->config->item('company_logo') != '';
|
||||
$data['line_sequence_options'] = $this->sale_lib->get_line_sequence_options();
|
||||
$data['register_mode_options'] = $this->sale_lib->get_register_mode_options();
|
||||
$data['rounding_options'] = Rounding_mode::get_rounding_options();
|
||||
$data['tax_codes'] = $this->get_tax_code_options();
|
||||
|
||||
$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();
|
||||
if($this->_check_encryption())
|
||||
{
|
||||
$data['mailchimp']['api_key'] = $this->encryption->decrypt($this->config->item('mailchimp_api_key'));
|
||||
$data['mailchimp']['list_id'] = $this->encryption->decrypt($this->config->item('mailchimp_list_id'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$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 get_tax_code_options()
|
||||
{
|
||||
$tax_codes = $this->Tax->get_all_tax_codes()->result_array();
|
||||
$tax_code_options = array();
|
||||
foreach($tax_codes as $tax_code)
|
||||
{
|
||||
$a = $tax_code['tax_code'];
|
||||
$b = $tax_code['tax_code_name'];
|
||||
$tax_code_options[$a] = $b;
|
||||
}
|
||||
return $tax_code_options;
|
||||
}
|
||||
|
||||
|
||||
public function save_info()
|
||||
{
|
||||
$upload_success = $this->_handle_logo_upload();
|
||||
@@ -213,41 +258,44 @@ class Config extends Secure_Controller
|
||||
'phone' => $this->input->post('phone'),
|
||||
'email' => $this->input->post('email'),
|
||||
'fax' => $this->input->post('fax'),
|
||||
'website' => $this->input->post('website'),
|
||||
'website' => $this->input->post('website'),
|
||||
'return_policy' => $this->input->post('return_policy')
|
||||
);
|
||||
|
||||
if (!empty($upload_data['orig_name']))
|
||||
|
||||
if(!empty($upload_data['orig_name']))
|
||||
{
|
||||
// XSS file image sanity check
|
||||
if ($this->xss_clean($upload_data['raw_name'], TRUE) === TRUE)
|
||||
if($this->xss_clean($upload_data['raw_name'], TRUE) === TRUE)
|
||||
{
|
||||
$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));
|
||||
echo json_encode(array(
|
||||
'success' => $success,
|
||||
'message' => $message
|
||||
));
|
||||
}
|
||||
|
||||
|
||||
public function save_general()
|
||||
{
|
||||
$batch_save_data = array(
|
||||
'theme' => $this->input->post('theme'),
|
||||
'default_tax_1_rate' => parse_decimals($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_name' => $this->input->post('default_tax_2_name'),
|
||||
'tax_included' => $this->input->post('tax_included') != NULL,
|
||||
'default_sales_discount' => $this->input->post('default_sales_discount'),
|
||||
'receiving_calculate_average_price' => $this->input->post('receiving_calculate_average_price') != NULL,
|
||||
'lines_per_page' => $this->input->post('lines_per_page'),
|
||||
'default_sales_discount' => $this->input->post('default_sales_discount'),
|
||||
'notify_horizontal_position' => $this->input->post('notify_horizontal_position'),
|
||||
'notify_vertical_position' => $this->input->post('notify_vertical_position'),
|
||||
'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'),
|
||||
'giftcard_number' => $this->input->post('giftcard_number'),
|
||||
'statistics' => $this->input->post('statistics') != NULL,
|
||||
'custom1_name' => $this->input->post('custom1_name'),
|
||||
'custom2_name' => $this->input->post('custom2_name'),
|
||||
'custom3_name' => $this->input->post('custom3_name'),
|
||||
@@ -257,14 +305,16 @@ class Config extends Secure_Controller
|
||||
'custom7_name' => $this->input->post('custom7_name'),
|
||||
'custom8_name' => $this->input->post('custom8_name'),
|
||||
'custom9_name' => $this->input->post('custom9_name'),
|
||||
'custom10_name' => $this->input->post('custom10_name'),
|
||||
'statistics' => $this->input->post('statistics') != NULL,
|
||||
'custom10_name' => $this->input->post('custom10_name')
|
||||
);
|
||||
|
||||
|
||||
$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')));
|
||||
echo json_encode(array(
|
||||
'success' => $success,
|
||||
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
|
||||
));
|
||||
}
|
||||
|
||||
public function check_number_locale()
|
||||
@@ -272,7 +322,7 @@ class Config extends Secure_Controller
|
||||
$number_locale = $this->input->post('number_locale');
|
||||
$fmt = new \NumberFormatter($number_locale, \NumberFormatter::CURRENCY);
|
||||
$currency_symbol = empty($this->input->post('currency_symbol')) ? $fmt->getSymbol(\NumberFormatter::CURRENCY_SYMBOL) : $this->input->post('currency_symbol');
|
||||
if ($this->input->post('thousands_separator') == "false")
|
||||
if($this->input->post('thousands_separator') == 'false')
|
||||
{
|
||||
$fmt->setAttribute(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL, '');
|
||||
}
|
||||
@@ -297,28 +347,42 @@ class Config extends Secure_Controller
|
||||
'dateformat' => $this->input->post('dateformat'),
|
||||
'timeformat' => $this->input->post('timeformat'),
|
||||
'thousands_separator' => $this->input->post('thousands_separator'),
|
||||
'number_locale' => $this->input->post('number_locale'),
|
||||
'number_locale' => $this->input->post('number_locale'),
|
||||
'currency_decimals' => $this->input->post('currency_decimals'),
|
||||
'tax_decimals' => $this->input->post('tax_decimals'),
|
||||
'quantity_decimals' => $this->input->post('quantity_decimals'),
|
||||
'country_codes' => $this->input->post('country_codes'),
|
||||
'payment_options_order' => $this->input->post('payment_options_order')
|
||||
'payment_options_order' => $this->input->post('payment_options_order'),
|
||||
'date_or_time_format' => $this->input->post('date_or_time_format'),
|
||||
'cash_decimals' => $this->input->post('cash_decimals'),
|
||||
'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')));
|
||||
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'),
|
||||
'smtp_host' => $this->input->post('smtp_host'),
|
||||
'smtp_user' => $this->input->post('smtp_user'),
|
||||
'smtp_pass' => $this->input->post('smtp_pass'),
|
||||
'smtp_pass' => $password,
|
||||
'smtp_port' => $this->input->post('smtp_port'),
|
||||
'smtp_timeout' => $this->input->post('smtp_timeout'),
|
||||
'smtp_crypto' => $this->input->post('smtp_crypto')
|
||||
@@ -327,58 +391,163 @@ 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')));
|
||||
echo json_encode(array(
|
||||
'success' => $success,
|
||||
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
|
||||
));
|
||||
}
|
||||
|
||||
public function save_message()
|
||||
{
|
||||
$batch_save_data = array(
|
||||
$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' => $this->input->post('msg_pwd'),
|
||||
'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')));
|
||||
echo json_encode(array(
|
||||
'success' => $success,
|
||||
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
|
||||
));
|
||||
}
|
||||
|
||||
public function stock_locations()
|
||||
|
||||
/*
|
||||
* 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']))
|
||||
{
|
||||
foreach($lists['lists'] as $list)
|
||||
{
|
||||
$list = $this->xss_clean($list);
|
||||
$result[$list['id']] = $list['name'] . ' [' . $list['stats']['member_count'] . ']';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
/*
|
||||
AJAX call from mailchimp config form to fetch the Mailchimp lists when a valid API key is inserted
|
||||
*/
|
||||
public function ajax_check_mailchimp_api_key()
|
||||
{
|
||||
// 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->load->library('sale_lib');
|
||||
$this->sale_lib->clear_sale_location();
|
||||
$this->sale_lib->clear_table();
|
||||
$this->sale_lib->clear_all();
|
||||
$this->load->library('receiving_lib');
|
||||
$this->receiving_lib->clear_stock_source();
|
||||
$this->receiving_lib->clear_stock_destination();
|
||||
$this->receiving_lib->clear_all();
|
||||
}
|
||||
|
||||
public function save_locations()
|
||||
|
||||
public function save_locations()
|
||||
{
|
||||
$this->db->trans_start();
|
||||
|
||||
$deleted_locations = $this->Stock_location->get_allowed_locations();
|
||||
|
||||
$not_to_delete = array();
|
||||
foreach($this->input->post() as $key => $value)
|
||||
{
|
||||
if (strstr($key, 'stock_location'))
|
||||
if(strstr($key, 'stock_location'))
|
||||
{
|
||||
$location_id = preg_replace("/.*?_(\d+)$/", "$1", $key);
|
||||
unset($deleted_locations[$location_id]);
|
||||
$not_to_delete[] = $location_id;
|
||||
// save or update
|
||||
$location_data = array('location_name' => $value);
|
||||
if ($this->Stock_location->save($location_data, $location_id))
|
||||
if($this->Stock_location->save($location_data, $location_id))
|
||||
{
|
||||
$this->_clear_session_state();
|
||||
}
|
||||
@@ -386,21 +555,226 @@ class Config extends Secure_Controller
|
||||
}
|
||||
|
||||
// all locations not available in post will be deleted now
|
||||
foreach ($deleted_locations as $location_id => $location_name)
|
||||
$deleted_locations = $this->Stock_location->get_all()->result_array();
|
||||
|
||||
foreach($deleted_locations as $location => $location_data)
|
||||
{
|
||||
$this->Stock_location->delete($location_id);
|
||||
if(!in_array($location_data['location_id'], $not_to_delete))
|
||||
{
|
||||
$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')));
|
||||
|
||||
echo json_encode(array(
|
||||
'success' => $success,
|
||||
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
|
||||
));
|
||||
}
|
||||
|
||||
public function save_barcode()
|
||||
{
|
||||
$batch_save_data = array(
|
||||
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();
|
||||
foreach($this->input->post() as $key => $value)
|
||||
{
|
||||
if(strstr($key, 'dinner_table') && $key != 'dinner_table_enable')
|
||||
{
|
||||
$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))
|
||||
{
|
||||
$this->_clear_session_state();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 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))
|
||||
{
|
||||
$this->Dinner_table->delete($table['dinner_table_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_tax()
|
||||
{
|
||||
$this->db->trans_start();
|
||||
|
||||
$customer_sales_tax_support = $this->input->post('customer_sales_tax_support') != NULL;
|
||||
|
||||
$batch_save_data = array(
|
||||
'default_tax_1_rate' => parse_decimals($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_name' => $this->input->post('default_tax_2_name'),
|
||||
'tax_included' => $this->input->post('tax_included') != NULL,
|
||||
'customer_sales_tax_support' => $customer_sales_tax_support,
|
||||
'default_origin_tax_code' => $this->input->post('default_origin_tax_code')
|
||||
);
|
||||
|
||||
$success = $this->Appconfig->batch_save($batch_save_data) ? TRUE : FALSE;
|
||||
$delete_rejected = FALSE;
|
||||
|
||||
if($customer_sales_tax_support)
|
||||
{
|
||||
$array_save = array();
|
||||
foreach($this->input->post() as $key => $value)
|
||||
{
|
||||
if(strstr($key, 'tax_category'))
|
||||
{
|
||||
$tax_category_id = preg_replace("/.*?_(\d+)$/", "$1", $key);
|
||||
$array_save[$tax_category_id]['tax_category'] = $value;
|
||||
}
|
||||
elseif(strstr($key, 'tax_group_sequence'))
|
||||
{
|
||||
$tax_category_id = preg_replace("/.*?_(\d+)$/", "$1", $key);
|
||||
$array_save[$tax_category_id]['tax_group_sequence'] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
$not_to_delete = array();
|
||||
if(!empty($array_save))
|
||||
{
|
||||
foreach($array_save as $key => $value)
|
||||
{
|
||||
// save or update
|
||||
$category_data = array('tax_category' => $value['tax_category'], 'tax_group_sequence' => $value['tax_group_sequence']);
|
||||
$this->Tax->save_tax_category($category_data, $key);
|
||||
$not_to_delete[] = $key;
|
||||
}
|
||||
}
|
||||
|
||||
// all categories not available in post will be deleted now
|
||||
$deleted_categories = $this->Tax->get_all_tax_categories()->result_array();
|
||||
|
||||
foreach($deleted_categories as $tax_category => $category)
|
||||
{
|
||||
if(!in_array($category['tax_category_id'], $not_to_delete))
|
||||
{
|
||||
$usg1 = $this->Tax->get_tax_category_usage($category['tax_category_id']);
|
||||
$usg2 = $this->Item->get_tax_category_usage($category['tax_category_id']);
|
||||
if(($usg1 + $usg2) == 0)
|
||||
{
|
||||
$this->Tax->delete_tax_category($category['tax_category_id']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$delete_rejected = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->trans_complete();
|
||||
|
||||
$success &= $this->db->trans_status();
|
||||
|
||||
$message = "";
|
||||
if($success && $delete_rejected)
|
||||
{
|
||||
$message = $this->lang->line('config_tax_category_used');
|
||||
$success = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
$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();
|
||||
$array_save = array();
|
||||
foreach($this->input->post() as $key => $value)
|
||||
{
|
||||
if(strstr($key, 'customer_reward') && $key != 'customer_reward_enable')
|
||||
{
|
||||
$customer_reward_id = preg_replace("/.*?_(\d+)$/", "$1", $key);
|
||||
$not_to_delete[] = $customer_reward_id;
|
||||
$array_save[$customer_reward_id]['package_name'] = $value;
|
||||
}
|
||||
elseif(strstr($key, 'reward_points'))
|
||||
{
|
||||
$customer_reward_id = preg_replace("/.*?_(\d+)$/", "$1", $key);
|
||||
$array_save[$customer_reward_id]['points_percent'] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
if(!empty($array_save))
|
||||
{
|
||||
foreach($array_save as $key => $value)
|
||||
{
|
||||
// save or update
|
||||
$package_data = array('package_name' => $value['package_name'], 'points_percent' => $value['points_percent']);
|
||||
$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))
|
||||
{
|
||||
$this->Customer_rewards->delete($reward_category['package_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_barcode()
|
||||
{
|
||||
$batch_save_data = array(
|
||||
'barcode_type' => $this->input->post('barcode_type'),
|
||||
'barcode_quality' => $this->input->post('barcode_quality'),
|
||||
'barcode_width' => $this->input->post('barcode_width'),
|
||||
@@ -414,19 +788,25 @@ class Config extends Secure_Controller
|
||||
'barcode_page_width' => $this->input->post('barcode_page_width'),
|
||||
'barcode_page_cellspacing' => $this->input->post('barcode_page_cellspacing'),
|
||||
'barcode_generate_if_empty' => $this->input->post('barcode_generate_if_empty') != NULL,
|
||||
'barcode_content' => $this->input->post('barcode_content')
|
||||
);
|
||||
|
||||
$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 (
|
||||
'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 (
|
||||
'receipt_template' => $this->input->post('receipt_template'),
|
||||
'receipt_font_size' => $this->input->post('receipt_font_size'),
|
||||
'receipt_show_company_name' => $this->input->post('receipt_show_company_name') != NULL,
|
||||
'receipt_show_taxes' => $this->input->post('receipt_show_taxes') != NULL,
|
||||
'receipt_show_total_discount' => $this->input->post('receipt_show_total_discount') != NULL,
|
||||
'receipt_show_description' => $this->input->post('receipt_show_description') != NULL,
|
||||
@@ -440,80 +820,153 @@ class Config extends Secure_Controller
|
||||
'print_right_margin' => $this->input->post('print_right_margin')
|
||||
);
|
||||
|
||||
$result = $this->Appconfig->batch_save($batch_save_data);
|
||||
$success = $result ? TRUE : FALSE;
|
||||
$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')));
|
||||
}
|
||||
echo json_encode(array(
|
||||
'success' => $success,
|
||||
'message' => $this->lang->line('config_saved_' . ($success ? '' : 'un') . 'successfully')
|
||||
));
|
||||
}
|
||||
|
||||
public function save_invoice()
|
||||
{
|
||||
$batch_save_data = array (
|
||||
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'),
|
||||
'invoice_default_comments' => $this->input->post('invoice_default_comments'),
|
||||
'invoice_email_message' => $this->input->post('invoice_email_message')
|
||||
'invoice_email_message' => $this->input->post('invoice_email_message'),
|
||||
'line_sequence' => $this->input->post('line_sequence'),
|
||||
'last_used_invoice_number' =>$this->input->post('last_used_invoice_number'),
|
||||
'last_used_quote_number' =>$this->input->post('last_used_quote_number')
|
||||
);
|
||||
|
||||
$result = $this->Appconfig->batch_save($batch_save_data);
|
||||
$success = $result ? TRUE : FALSE;
|
||||
$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')));
|
||||
}
|
||||
// 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)
|
||||
{
|
||||
if($this->config->item('invoice_enable') == '1')
|
||||
{
|
||||
$this->sale_lib->set_mode($batch_save_data['default_register_mode']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$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',
|
||||
'max_size' => '1024',
|
||||
'max_width' => '800',
|
||||
'max_height' => '680',
|
||||
'file_name' => 'company_logo');
|
||||
$this->load->library('upload', $config);
|
||||
$this->upload->do_upload('company_logo');
|
||||
private function _handle_logo_upload()
|
||||
{
|
||||
$this->load->helper('directory');
|
||||
|
||||
return strlen($this->upload->display_errors()) == 0 || !strcmp($this->upload->display_errors(), '<p>'.$this->lang->line('upload_no_file_selected').'</p>');
|
||||
}
|
||||
|
||||
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();
|
||||
// load upload library
|
||||
$config = array('upload_path' => './uploads/',
|
||||
'allowed_types' => 'gif|jpg|png',
|
||||
'max_size' => '1024',
|
||||
'max_width' => '800',
|
||||
'max_height' => '680',
|
||||
'file_name' => 'company_logo');
|
||||
$this->load->library('upload', $config);
|
||||
$this->upload->do_upload('company_logo');
|
||||
|
||||
$prefs = array(
|
||||
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);
|
||||
|
||||
// Write the new config.php file
|
||||
$handle = fopen($config_path, 'w+');
|
||||
|
||||
// Verify file permissions
|
||||
if(is_writable($config_path))
|
||||
{
|
||||
// Write the file
|
||||
$result = (fwrite($handle, $config) === FALSE) ? FALSE : TRUE;
|
||||
}
|
||||
|
||||
fclose($handle);
|
||||
|
||||
// Chmod the file
|
||||
@chmod($config_path, 0444);
|
||||
|
||||
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');
|
||||
while(ob_get_level())
|
||||
{
|
||||
ob_end_clean();
|
||||
}
|
||||
);
|
||||
|
||||
force_download($file_name, $backup);
|
||||
}
|
||||
else
|
||||
{
|
||||
redirect('no_access/config');
|
||||
}
|
||||
}
|
||||
$backup = $this->dbutil->backup($prefs);
|
||||
|
||||
$file_name = 'ospos-' . date("Y-m-d-H-i-s") .'.zip';
|
||||
$save = 'uploads/' . $file_name;
|
||||
$this->load->helper('download');
|
||||
while(ob_get_level())
|
||||
{
|
||||
ob_end_clean();
|
||||
}
|
||||
|
||||
force_download($file_name, $backup);
|
||||
}
|
||||
else
|
||||
{
|
||||
redirect('no_access/config');
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -4,18 +4,52 @@ require_once("Persons.php");
|
||||
|
||||
class Customers extends Persons
|
||||
{
|
||||
private $_list_id;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('customers');
|
||||
|
||||
$this->load->library('mailchimp_lib');
|
||||
|
||||
$CI =& get_instance();
|
||||
|
||||
$this->_list_id = $CI->encryption->decrypt($CI->Appconfig->get('mailchimp_list_id'));
|
||||
}
|
||||
|
||||
|
||||
public function index()
|
||||
{
|
||||
$data['table_headers'] = $this->xss_clean(get_people_manage_table_headers());
|
||||
$data['table_headers'] = $this->xss_clean(get_customer_manage_table_headers());
|
||||
|
||||
$this->load->view('people/manage', $data);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Gets one row for a customer manage table. This is called using AJAX to update one row.
|
||||
*/
|
||||
public function get_row($row_id)
|
||||
{
|
||||
$person = $this->Customer->get_info($row_id);
|
||||
|
||||
// retrieve the total amount the customer spent so far together with min, max and average values
|
||||
$stats = $this->Customer->get_stats($person->person_id);
|
||||
if(empty($stats))
|
||||
{
|
||||
//create object with empty properties.
|
||||
$stats = new stdClass;
|
||||
$stats->total = 0;
|
||||
$stats->min = 0;
|
||||
$stats->max = 0;
|
||||
$stats->average = 0;
|
||||
$stats->avg_discount = 0;
|
||||
$stats->quantity = 0;
|
||||
}
|
||||
|
||||
$data_row = $this->xss_clean(get_customer_data_row($person, $stats, $this));
|
||||
|
||||
echo json_encode($data_row);
|
||||
}
|
||||
|
||||
/*
|
||||
Returns customer table data rows. This will be called with AJAX.
|
||||
*/
|
||||
@@ -33,14 +67,28 @@ class Customers extends Persons
|
||||
$data_rows = array();
|
||||
foreach($customers->result() as $person)
|
||||
{
|
||||
$data_rows[] = get_person_data_row($person, $this);
|
||||
// retrieve the total amount the customer spent so far together with min, max and average values
|
||||
$stats = $this->Customer->get_stats($person->person_id);
|
||||
if(empty($stats))
|
||||
{
|
||||
//create object with empty properties.
|
||||
$stats = new stdClass;
|
||||
$stats->total = 0;
|
||||
$stats->min = 0;
|
||||
$stats->max = 0;
|
||||
$stats->average = 0;
|
||||
$stats->avg_discount = 0;
|
||||
$stats->quantity = 0;
|
||||
}
|
||||
|
||||
$data_rows[] = get_customer_data_row($person, $stats, $this);
|
||||
}
|
||||
|
||||
$data_rows = $this->xss_clean($data_rows);
|
||||
|
||||
echo json_encode(array('total' => $total_rows, 'rows' => $data_rows));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Gives search suggestions based on what is being searched for
|
||||
*/
|
||||
@@ -57,34 +105,125 @@ class Customers extends Persons
|
||||
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Loads the customer edit form
|
||||
*/
|
||||
public function view($customer_id = -1)
|
||||
{
|
||||
$customer_sales_tax_support = $this->config->item('customer_sales_tax_support');
|
||||
|
||||
$info = $this->Customer->get_info($customer_id);
|
||||
foreach(get_object_vars($info) as $property => $value)
|
||||
{
|
||||
$info->$property = $this->xss_clean($value);
|
||||
}
|
||||
$data['person_info'] = $info;
|
||||
$data['sales_tax_code_label'] = $info->sales_tax_code . ' ' . $this->Tax->get_info($info->sales_tax_code)->tax_code_name;
|
||||
$packages = array('' => $this->lang->line('items_none'));
|
||||
foreach($this->Customer_rewards->get_all()->result_array() as $row)
|
||||
{
|
||||
$packages[$this->xss_clean($row['package_id'])] = $this->xss_clean($row['package_name']);
|
||||
}
|
||||
$data['packages'] = $packages;
|
||||
$data['selected_package'] = $info->package_id;
|
||||
|
||||
$data['total'] = $this->xss_clean($this->Customer->get_totals($customer_id)->total);
|
||||
if ($customer_sales_tax_support == '1')
|
||||
{
|
||||
$data['customer_sales_tax_enabled'] = TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
$data['customer_sales_tax_enabled'] = FALSE;
|
||||
}
|
||||
|
||||
// retrieve the total amount the customer spent so far together with min, max and average values
|
||||
$stats = $this->Customer->get_stats($customer_id);
|
||||
if(!empty($stats))
|
||||
{
|
||||
foreach(get_object_vars($stats) as $property => $value)
|
||||
{
|
||||
$info->$property = $this->xss_clean($value);
|
||||
}
|
||||
$data['stats'] = $stats;
|
||||
}
|
||||
|
||||
// retrieve the info from Mailchimp only if there is an email address assigned
|
||||
if(!empty($info->email))
|
||||
{
|
||||
// collect mailchimp customer info
|
||||
if(($mailchimp_info = $this->mailchimp_lib->getMemberInfo($this->_list_id, $info->email)) !== FALSE)
|
||||
{
|
||||
$data['mailchimp_info'] = $this->xss_clean($mailchimp_info);
|
||||
|
||||
// collect customer mailchimp emails activities (stats)
|
||||
if(($activities = $this->mailchimp_lib->getMemberActivity($this->_list_id, $info->email)) !== FALSE)
|
||||
{
|
||||
if(array_key_exists('activity', $activities))
|
||||
{
|
||||
$open = 0;
|
||||
$unopen = 0;
|
||||
$click = 0;
|
||||
$total = 0;
|
||||
$lastopen = '';
|
||||
|
||||
foreach($activities['activity'] as $activity)
|
||||
{
|
||||
if($activity['action'] == 'sent')
|
||||
{
|
||||
++$unopen;
|
||||
}
|
||||
elseif($activity['action'] == 'open')
|
||||
{
|
||||
if(empty($lastopen))
|
||||
{
|
||||
$lastopen = substr($activity['timestamp'], 0, 10);
|
||||
}
|
||||
++$open;
|
||||
}
|
||||
elseif($activity['action'] == 'click')
|
||||
{
|
||||
if(empty($lastopen))
|
||||
{
|
||||
$lastopen = substr($activity['timestamp'], 0, 10);
|
||||
}
|
||||
++$click;
|
||||
}
|
||||
|
||||
++$total;
|
||||
}
|
||||
|
||||
$data['mailchimp_activity']['total'] = $total;
|
||||
$data['mailchimp_activity']['open'] = $open;
|
||||
$data['mailchimp_activity']['unopen'] = $unopen;
|
||||
$data['mailchimp_activity']['click'] = $click;
|
||||
$data['mailchimp_activity']['lastopen'] = $lastopen;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->load->view("customers/form", $data);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Inserts/updates a customer
|
||||
*/
|
||||
public function save($customer_id = -1)
|
||||
{
|
||||
$first_name = $this->xss_clean($this->input->post('first_name'));
|
||||
$last_name = $this->xss_clean($this->input->post('last_name'));
|
||||
$email = $this->xss_clean(strtolower($this->input->post('email')));
|
||||
|
||||
// format first and last name properly
|
||||
$first_name = $this->nameize($first_name);
|
||||
$last_name = $this->nameize($last_name);
|
||||
|
||||
$person_data = array(
|
||||
'first_name' => $this->input->post('first_name'),
|
||||
'last_name' => $this->input->post('last_name'),
|
||||
'first_name' => $first_name,
|
||||
'last_name' => $last_name,
|
||||
'gender' => $this->input->post('gender'),
|
||||
'email' => $this->input->post('email'),
|
||||
'email' => $email,
|
||||
'phone_number' => $this->input->post('phone_number'),
|
||||
'address_1' => $this->input->post('address_1'),
|
||||
'address_2' => $this->input->post('address_2'),
|
||||
@@ -94,57 +233,90 @@ class Customers extends Persons
|
||||
'country' => $this->input->post('country'),
|
||||
'comments' => $this->input->post('comments')
|
||||
);
|
||||
|
||||
$customer_data = array(
|
||||
'account_number' => $this->input->post('account_number') == '' ? NULL : $this->input->post('account_number'),
|
||||
'company_name' => $this->input->post('company_name') == '' ? NULL : $this->input->post('company_name'),
|
||||
'discount_percent' => $this->input->post('discount_percent') == '' ? 0.00 : $this->input->post('discount_percent'),
|
||||
'package_id' => $this->input->post('package_id') == '' ? NULL : $this->input->post('package_id'),
|
||||
'taxable' => $this->input->post('taxable') != NULL
|
||||
);
|
||||
|
||||
$tax_code = $this->input->post('sales_tax_code');
|
||||
if(!isset($tax_code))
|
||||
{
|
||||
$customer_data['sales_tax_code'] = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$customer_data['sales_tax_code'] = $tax_code;
|
||||
}
|
||||
|
||||
if($this->Customer->save_customer($person_data, $customer_data, $customer_id))
|
||||
{
|
||||
$person_data = $this->xss_clean($person_data);
|
||||
$customer_data = $this->xss_clean($customer_data);
|
||||
|
||||
//New customer
|
||||
// save customer to Mailchimp selected list
|
||||
$this->mailchimp_lib->addOrUpdateMember($this->_list_id, $email, $first_name, $last_name, $this->input->post('mailchimp_status'), array('vip' => $this->input->post('mailchimp_vip') != NULL));
|
||||
|
||||
// New customer
|
||||
if($customer_id == -1)
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('customers_successful_adding').' '.
|
||||
$person_data['first_name'].' '.$person_data['last_name'], 'id' => $customer_data['person_id']));
|
||||
echo json_encode(array('success' => TRUE,
|
||||
'message' => $this->lang->line('customers_successful_adding') . ' ' . $first_name . ' ' . $last_name,
|
||||
'id' => $this->xss_clean($customer_data['person_id'])));
|
||||
}
|
||||
else //Existing customer
|
||||
else // Existing customer
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('customers_successful_updating').' '.
|
||||
$person_data['first_name'].' '.$person_data['last_name'], 'id' => $customer_id));
|
||||
echo json_encode(array('success' => TRUE,
|
||||
'message' => $this->lang->line('customers_successful_updating') . ' ' . $first_name . ' ' . $last_name,
|
||||
'id' => $customer_id));
|
||||
}
|
||||
}
|
||||
else//failure
|
||||
else // Failure
|
||||
{
|
||||
$person_data = $this->xss_clean($person_data);
|
||||
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('customers_error_adding_updating').' '.
|
||||
$person_data['first_name'].' '.$person_data['last_name'], 'id' => -1));
|
||||
echo json_encode(array('success' => FALSE,
|
||||
'message' => $this->lang->line('customers_error_adding_updating') . ' ' . $first_name . ' ' . $last_name,
|
||||
'id' => -1));
|
||||
}
|
||||
}
|
||||
|
||||
public function check_account_number()
|
||||
|
||||
/*
|
||||
AJAX call to verify if an email address already exists
|
||||
*/
|
||||
public function ajax_check_email()
|
||||
{
|
||||
$exists = $this->Customer->account_number_exists($this->input->post('account_number'), $this->input->post('person_id'));
|
||||
$exists = $this->Customer->check_email_exists(strtolower($this->input->post('email')), $this->input->post('person_id'));
|
||||
|
||||
echo !$exists ? 'true' : 'false';
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
AJAX call to verify if an account number already exists
|
||||
*/
|
||||
public function ajax_check_account_number()
|
||||
{
|
||||
$exists = $this->Customer->check_account_number_exists($this->input->post('account_number'), $this->input->post('person_id'));
|
||||
|
||||
echo !$exists ? 'true' : 'false';
|
||||
}
|
||||
|
||||
/*
|
||||
This deletes customers from the customers table
|
||||
*/
|
||||
public function delete()
|
||||
{
|
||||
$customers_to_delete = $this->xss_clean($this->input->post('ids'));
|
||||
$customers_to_delete = $this->input->post('ids');
|
||||
$customers_info = $this->Customer->get_multiple_info($customers_to_delete);
|
||||
|
||||
if($this->Customer->delete_list($customers_to_delete))
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('customers_successful_deleted').' '.
|
||||
count($customers_to_delete).' '.$this->lang->line('customers_one_or_multiple')));
|
||||
foreach($customers_info->result() as $info)
|
||||
{
|
||||
// remove customer from Mailchimp selected list
|
||||
$this->mailchimp_lib->removeMember($this->_list_id, $info->email);
|
||||
}
|
||||
|
||||
echo json_encode(array('success' => TRUE,
|
||||
'message' => $this->lang->line('customers_successful_deleted') . ' ' . count($customers_to_delete) . ' ' . $this->lang->line('customers_one_or_multiple')));
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -153,15 +325,15 @@ class Customers extends Persons
|
||||
}
|
||||
|
||||
/*
|
||||
Customer import from excel spreadsheet
|
||||
Customers import from excel spreadsheet
|
||||
*/
|
||||
public function excel()
|
||||
{
|
||||
$name = 'import_customers.csv';
|
||||
$data = file_get_contents($name);
|
||||
$data = file_get_contents('../' . $name);
|
||||
force_download($name, $data);
|
||||
}
|
||||
|
||||
|
||||
public function excel_import()
|
||||
{
|
||||
$this->load->view('customers/form_excel_import', NULL);
|
||||
@@ -177,24 +349,25 @@ class Customers extends Persons
|
||||
{
|
||||
if(($handle = fopen($_FILES['file_path']['tmp_name'], 'r')) !== FALSE)
|
||||
{
|
||||
// Skip the first row as it's the table description
|
||||
// Skip the first row as it's the table description
|
||||
fgetcsv($handle);
|
||||
$i = 1;
|
||||
|
||||
$failCodes = array();
|
||||
|
||||
while(($data = fgetcsv($handle)) !== FALSE)
|
||||
while(($data = fgetcsv($handle)) !== FALSE)
|
||||
{
|
||||
// XSS file data sanity check
|
||||
$data = $this->xss_clean($data);
|
||||
|
||||
if(sizeof($data) >= 15)
|
||||
{
|
||||
$email = strtolower($data[3]);
|
||||
$person_data = array(
|
||||
'first_name' => $data[0],
|
||||
'last_name' => $data[1],
|
||||
'gender' => $data[2],
|
||||
'email' => $data[3],
|
||||
'email' => $email,
|
||||
'phone_number' => $data[4],
|
||||
'address_1' => $data[5],
|
||||
'address_2' => $data[6],
|
||||
@@ -204,38 +377,49 @@ class Customers extends Persons
|
||||
'country' => $data[10],
|
||||
'comments' => $data[11]
|
||||
);
|
||||
|
||||
|
||||
$customer_data = array(
|
||||
'company_name' => $data[12],
|
||||
'discount_percent' => $data[14],
|
||||
'taxable' => $data[15] == '' ? 0 : 1
|
||||
);
|
||||
|
||||
$account_number = $data[13];
|
||||
$invalidated = FALSE;
|
||||
if($account_number != '')
|
||||
|
||||
// don't duplicate people with same email
|
||||
$invalidated = $this->Customer->check_email_exists($email);
|
||||
|
||||
if($account_number != '')
|
||||
{
|
||||
$customer_data['account_number'] = $account_number;
|
||||
$invalidated = $this->Customer->account_number_exists($account_number);
|
||||
$invalidated &= $this->Customer->check_account_number_exists($account_number);
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$invalidated = TRUE;
|
||||
}
|
||||
|
||||
if($invalidated || !$this->Customer->save_customer($person_data, $customer_data))
|
||||
{
|
||||
if($invalidated)
|
||||
{
|
||||
$failCodes[] = $i;
|
||||
}
|
||||
|
||||
elseif($this->Customer->save_customer($person_data, $customer_data))
|
||||
{
|
||||
// save customer to Mailchimp selected list
|
||||
$this->mailchimp_lib->addOrUpdateMember($this->_list_id, $person_data['email'], $person_data['first_name'], '', $person_data['last_name']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$failCodes[] = $i;
|
||||
}
|
||||
|
||||
++$i;
|
||||
}
|
||||
|
||||
|
||||
if(count($failCodes) > 0)
|
||||
{
|
||||
$message = $this->lang->line('customers_excel_import_partially_failed') . ' (' . count($failCodes) . '): ' . implode(', ', $failCodes);
|
||||
|
||||
|
||||
echo json_encode(array('success' => FALSE, 'message' => $message));
|
||||
}
|
||||
else
|
||||
@@ -243,11 +427,11 @@ class Customers extends Persons
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('customers_excel_import_success')));
|
||||
}
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('customers_excel_import_nodata_wrongformat')));
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('customers_excel_import_nodata_wrongformat')));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -8,14 +8,7 @@ class Employees extends Persons
|
||||
{
|
||||
parent::__construct('employees');
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$data['table_headers'] = $this->xss_clean(get_people_manage_table_headers());
|
||||
|
||||
$this->load->view('people/manage', $data);
|
||||
}
|
||||
|
||||
/*
|
||||
Returns employee table data rows. This will be called with AJAX.
|
||||
*/
|
||||
@@ -40,7 +33,7 @@ class Employees extends Persons
|
||||
|
||||
echo json_encode(array('total' => $total_rows, 'rows' => $data_rows));
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Gives search suggestions based on what is being searched for
|
||||
*/
|
||||
@@ -50,7 +43,7 @@ class Employees extends Persons
|
||||
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Loads the employee edit form
|
||||
*/
|
||||
@@ -68,7 +61,7 @@ class Employees extends Persons
|
||||
{
|
||||
$module->module_id = $this->xss_clean($module->module_id);
|
||||
$module->grant = $this->xss_clean($this->Employee->has_grant($module->module_id, $person_info->person_id));
|
||||
|
||||
|
||||
$modules[] = $module;
|
||||
}
|
||||
$data['all_modules'] = $modules;
|
||||
@@ -79,75 +72,108 @@ class Employees extends Persons
|
||||
$permission->module_id = $this->xss_clean($permission->module_id);
|
||||
$permission->permission_id = $this->xss_clean($permission->permission_id);
|
||||
$permission->grant = $this->xss_clean($this->Employee->has_grant($permission->permission_id, $person_info->person_id));
|
||||
|
||||
|
||||
$permissions[] = $permission;
|
||||
}
|
||||
$data['all_subpermissions'] = $permissions;
|
||||
|
||||
$this->load->view("employees/form", $data);
|
||||
$this->load->view('employees/form', $data);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Inserts/updates an employee
|
||||
*/
|
||||
public function save($employee_id = -1)
|
||||
{
|
||||
$person_data = array(
|
||||
'first_name' => $this->input->post('first_name'),
|
||||
'last_name' => $this->input->post('last_name'),
|
||||
'gender' => $this->input->post('gender'),
|
||||
'email' => $this->input->post('email'),
|
||||
'phone_number' => $this->input->post('phone_number'),
|
||||
'address_1' => $this->input->post('address_1'),
|
||||
'address_2' => $this->input->post('address_2'),
|
||||
'city' => $this->input->post('city'),
|
||||
'state' => $this->input->post('state'),
|
||||
'zip' => $this->input->post('zip'),
|
||||
'country' => $this->input->post('country'),
|
||||
'comments' => $this->input->post('comments'),
|
||||
);
|
||||
$grants_data = $this->input->post('grants') != NULL ? $this->input->post('grants') : array();
|
||||
|
||||
//Password has been changed OR first time password set
|
||||
if($this->input->post('password') != '')
|
||||
if($this->input->post('current_password') != '')
|
||||
{
|
||||
$employee_data = array(
|
||||
'username' => $this->input->post('username'),
|
||||
'password' => password_hash($this->input->post('password'), PASSWORD_DEFAULT),
|
||||
'hash_version' => 2
|
||||
if($this->Employee->check_password($this->input->post('username'), $this->input->post('current_password')))
|
||||
{
|
||||
$employee_data = array(
|
||||
'username' => $this->input->post('username'),
|
||||
'password' => password_hash($this->input->post('password'), PASSWORD_DEFAULT),
|
||||
'hash_version' => 2
|
||||
);
|
||||
|
||||
if($this->Employee->change_password($employee_data, $employee_id))
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('employees_successful_change_password'), 'id' => $employee_id));
|
||||
}
|
||||
else//failure
|
||||
{
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('employees_unsuccessful_change_password'), 'id' => -1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('employees_current_password_invalid'), 'id' => -1));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$first_name = $this->xss_clean($this->input->post('first_name'));
|
||||
$last_name = $this->xss_clean($this->input->post('last_name'));
|
||||
$email = $this->xss_clean(strtolower($this->input->post('email')));
|
||||
|
||||
// format first and last name properly
|
||||
$first_name = $this->nameize($first_name);
|
||||
$last_name = $this->nameize($last_name);
|
||||
|
||||
$person_data = array(
|
||||
'first_name' => $first_name,
|
||||
'last_name' => $last_name,
|
||||
'gender' => $this->input->post('gender'),
|
||||
'email' => $email,
|
||||
'phone_number' => $this->input->post('phone_number'),
|
||||
'address_1' => $this->input->post('address_1'),
|
||||
'address_2' => $this->input->post('address_2'),
|
||||
'city' => $this->input->post('city'),
|
||||
'state' => $this->input->post('state'),
|
||||
'zip' => $this->input->post('zip'),
|
||||
'country' => $this->input->post('country'),
|
||||
'comments' => $this->input->post('comments'),
|
||||
);
|
||||
}
|
||||
else //Password not changed
|
||||
{
|
||||
$employee_data = array('username' => $this->input->post('username'));
|
||||
}
|
||||
|
||||
if($this->Employee->save_employee($person_data, $employee_data, $grants_data, $employee_id))
|
||||
{
|
||||
$person_data = $this->xss_clean($person_data);
|
||||
$employee_data = $this->xss_clean($employee_data);
|
||||
$grants_data = $this->input->post('grants') != NULL ? $this->input->post('grants') : array();
|
||||
|
||||
//New employee
|
||||
if($employee_id == -1)
|
||||
//Password has been changed OR first time password set
|
||||
if($this->input->post('password') != '')
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('employees_successful_adding').' '.
|
||||
$person_data['first_name'].' '.$person_data['last_name'], 'id' => $employee_data['person_id']));
|
||||
$employee_data = array(
|
||||
'username' => $this->input->post('username'),
|
||||
'password' => password_hash($this->input->post('password'), PASSWORD_DEFAULT),
|
||||
'hash_version' => 2
|
||||
);
|
||||
}
|
||||
else //Existing employee
|
||||
else //Password not changed
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('employees_successful_updating').' '.
|
||||
$person_data['first_name'].' '.$person_data['last_name'], 'id' => $employee_id));
|
||||
$employee_data = array('username' => $this->input->post('username'));
|
||||
}
|
||||
}
|
||||
else//failure
|
||||
{
|
||||
$person_data = $this->xss_clean($person_data);
|
||||
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('employees_error_adding_updating').' '.
|
||||
$person_data['first_name'].' '.$person_data['last_name'], 'id' => -1));
|
||||
if($this->Employee->save_employee($person_data, $employee_data, $grants_data, $employee_id))
|
||||
{
|
||||
// New employee
|
||||
if($employee_id == -1)
|
||||
{
|
||||
echo json_encode(array('success' => TRUE,
|
||||
'message' => $this->lang->line('employees_successful_adding') . ' ' . $first_name . ' ' . $last_name,
|
||||
'id' => $this->xss_clean($employee_data['person_id'])));
|
||||
}
|
||||
else // Existing employee
|
||||
{
|
||||
echo json_encode(array('success' => TRUE,
|
||||
'message' => $this->lang->line('employees_successful_updating') . ' ' . $first_name . ' ' . $last_name,
|
||||
'id' => $employee_id));
|
||||
}
|
||||
}
|
||||
else // Failure
|
||||
{
|
||||
echo json_encode(array('success' => FALSE,
|
||||
'message' => $this->lang->line('employees_error_adding_updating') . ' ' . $first_name . ' ' . $last_name,
|
||||
'id' => -1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
This deletes employees from the employees table
|
||||
*/
|
||||
@@ -157,13 +183,28 @@ class Employees extends Persons
|
||||
|
||||
if($this->Employee->delete_list($employees_to_delete))
|
||||
{
|
||||
echo json_encode(array('success' => TRUE,'message' => $this->lang->line('employees_successful_deleted').' '.
|
||||
count($employees_to_delete).' '.$this->lang->line('employees_one_or_multiple')));
|
||||
echo json_encode(array('success' => TRUE,'message' => $this->lang->line('employees_successful_deleted') . ' ' .
|
||||
count($employees_to_delete) . ' ' . $this->lang->line('employees_one_or_multiple')));
|
||||
}
|
||||
else
|
||||
{
|
||||
echo json_encode(array('success' => FALSE,'message' => $this->lang->line('employees_cannot_be_deleted')));
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('employees_cannot_be_deleted')));
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Loads the change password form
|
||||
*/
|
||||
public function change_password($employee_id = -1)
|
||||
{
|
||||
$person_info = $this->Employee->get_info($employee_id);
|
||||
foreach(get_object_vars($person_info) as $property => $value)
|
||||
{
|
||||
$person_info->$property = $this->xss_clean($value);
|
||||
}
|
||||
$data['person_info'] = $person_info;
|
||||
|
||||
$this->load->view('employees/form_change_password', $data);
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -44,6 +44,14 @@ class Giftcards extends Secure_Controller
|
||||
/*
|
||||
Gives search suggestions based on what is being searched for
|
||||
*/
|
||||
|
||||
public function suggest()
|
||||
{
|
||||
$suggestions = $this->xss_clean($this->Giftcard->get_search_suggestions($this->input->get('term'), TRUE));
|
||||
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
public function suggest_search()
|
||||
{
|
||||
$suggestions = $this->xss_clean($this->Giftcard->get_search_suggestions($this->input->post('term')));
|
||||
@@ -63,10 +71,17 @@ class Giftcards extends Secure_Controller
|
||||
$giftcard_info = $this->Giftcard->get_info($giftcard_id);
|
||||
|
||||
$data['selected_person_name'] = ($giftcard_id > 0 && isset($giftcard_info->person_id)) ? $giftcard_info->first_name . ' ' . $giftcard_info->last_name : '';
|
||||
$data['selected_person_id'] = $giftcard_info->person_id;
|
||||
$data['giftcard_number'] = $giftcard_id > 0 ? $giftcard_info->giftcard_number : $this->Giftcard->get_max_number()->giftcard_number + 1;
|
||||
$data['giftcard_id'] = $giftcard_id;
|
||||
$data['giftcard_value'] = $giftcard_info->value;
|
||||
$data['selected_person_id'] = $giftcard_info->person_id;
|
||||
if($this->config->item('giftcard_number') == "random")
|
||||
{
|
||||
$data['giftcard_number'] = $giftcard_id > 0 ? $giftcard_info->giftcard_number : '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$data['giftcard_number'] = $giftcard_id > 0 ? $giftcard_info->giftcard_number : $this->Giftcard->get_max_number()->giftcard_number + 1;
|
||||
}
|
||||
$data['giftcard_id'] = $giftcard_id;
|
||||
$data['giftcard_value'] = $giftcard_info->value;
|
||||
|
||||
$data = $this->xss_clean($data);
|
||||
|
||||
@@ -75,9 +90,16 @@ class Giftcards extends Secure_Controller
|
||||
|
||||
public function save($giftcard_id = -1)
|
||||
{
|
||||
$giftcard_number = $this->input->post('giftcard_number');
|
||||
|
||||
if($giftcard_id == -1 && trim($giftcard_number) == '')
|
||||
{
|
||||
$giftcard_number = $this->Giftcard->generate_unique_giftcard_name($this->input->post('value'));
|
||||
}
|
||||
|
||||
$giftcard_data = array(
|
||||
'record_time' => date('Y-m-d H:i:s'),
|
||||
'giftcard_number' => $this->input->post('giftcard_number'),
|
||||
'giftcard_number' => $giftcard_number,
|
||||
'value' => parse_decimals($this->input->post('value')),
|
||||
'person_id' => $this->input->post('person_id') == '' ? NULL : $this->input->post('person_id')
|
||||
);
|
||||
@@ -89,12 +111,12 @@ class Giftcards extends Secure_Controller
|
||||
//New giftcard
|
||||
if($giftcard_id == -1)
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_adding').' '.
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_adding') . ' ' .
|
||||
$giftcard_data['giftcard_number'], 'id' => $giftcard_data['giftcard_id']));
|
||||
}
|
||||
else //Existing giftcard
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_updating').' '.
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_updating') . ' ' .
|
||||
$giftcard_data['giftcard_number'], 'id' => $giftcard_id));
|
||||
}
|
||||
}
|
||||
@@ -102,7 +124,7 @@ class Giftcards extends Secure_Controller
|
||||
{
|
||||
$giftcard_data = $this->xss_clean($giftcard_data);
|
||||
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('giftcards_error_adding_updating').' '.
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('giftcards_error_adding_updating') . ' ' .
|
||||
$giftcard_data['giftcard_number'], 'id' => -1));
|
||||
}
|
||||
}
|
||||
@@ -113,7 +135,7 @@ class Giftcards extends Secure_Controller
|
||||
|
||||
if($this->Giftcard->delete_list($giftcards_to_delete))
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_deleted').' '.
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('giftcards_successful_deleted') . ' ' .
|
||||
count($giftcards_to_delete).' '.$this->lang->line('giftcards_one_or_multiple')));
|
||||
}
|
||||
else
|
||||
|
||||
@@ -4,11 +4,6 @@ require_once("Secure_Controller.php");
|
||||
|
||||
class Home extends Secure_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('home');
|
||||
@@ -16,14 +11,9 @@ class Home extends Secure_Controller
|
||||
|
||||
public function logout()
|
||||
{
|
||||
$this->track_page('logout', 'logout');
|
||||
|
||||
$this->Employee->logout();
|
||||
|
||||
if($this->config->item('statistics') == TRUE)
|
||||
{
|
||||
$this->load->library('tracking_lib');
|
||||
|
||||
$this->tracking_lib->track_page('logout', 'logout');
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -84,23 +84,36 @@ class Item_kits extends Secure_Controller
|
||||
public function view($item_kit_id = -1)
|
||||
{
|
||||
$info = $this->Item_kit->get_info($item_kit_id);
|
||||
|
||||
if($item_kit_id == -1)
|
||||
{
|
||||
$info->price_option = '0';
|
||||
$info->print_option = PRINT_ALL;
|
||||
$info->kit_item_id = 0;
|
||||
}
|
||||
foreach(get_object_vars($info) as $property => $value)
|
||||
{
|
||||
$info->$property = $this->xss_clean($value);
|
||||
}
|
||||
|
||||
$data['item_kit_info'] = $info;
|
||||
|
||||
|
||||
$items = array();
|
||||
foreach($this->Item_kit_items->get_info($item_kit_id) as $item_kit_item)
|
||||
{
|
||||
$item['kit_sequence'] = $this->xss_clean($item_kit_item['kit_sequence']);
|
||||
$item['name'] = $this->xss_clean($this->Item->get_info($item_kit_item['item_id'])->name);
|
||||
$item['item_id'] = $this->xss_clean($item_kit_item['item_id']);
|
||||
$item['quantity'] = $this->xss_clean($item_kit_item['quantity']);
|
||||
|
||||
|
||||
$items[] = $item;
|
||||
}
|
||||
|
||||
$data['item_kit_items'] = $items;
|
||||
|
||||
$data['selected_kit_item_id'] = $info->kit_item_id;
|
||||
$data['selected_kit_item'] = ($item_kit_id > 0 && isset($info->kit_item_id)) ? $info->item_name : '';
|
||||
|
||||
$this->load->view("item_kits/form", $data);
|
||||
}
|
||||
|
||||
@@ -108,36 +121,54 @@ class Item_kits extends Secure_Controller
|
||||
{
|
||||
$item_kit_data = array(
|
||||
'name' => $this->input->post('name'),
|
||||
'item_id' => $this->input->post('kit_item_id'),
|
||||
'kit_discount_percent' => $this->input->post('kit_discount_percent'),
|
||||
'price_option' => $this->input->post('price_option'),
|
||||
'print_option' => $this->input->post('print_option'),
|
||||
'description' => $this->input->post('description')
|
||||
);
|
||||
|
||||
if($this->Item_kit->save($item_kit_data, $item_kit_id))
|
||||
{
|
||||
$success = TRUE;
|
||||
$new_item = FALSE;
|
||||
//New item kit
|
||||
if ($item_kit_id == -1)
|
||||
{
|
||||
$item_kit_id = $item_kit_data['item_kit_id'];
|
||||
$new_item = TRUE;
|
||||
}
|
||||
|
||||
if($this->input->post('item_kit_item') != NULL)
|
||||
if($this->input->post('item_kit_qty') != NULL)
|
||||
{
|
||||
$item_kit_items = array();
|
||||
foreach($this->input->post('item_kit_item') as $item_id => $quantity)
|
||||
foreach($this->input->post('item_kit_qty') as $item_id => $quantity)
|
||||
{
|
||||
$seq = $this->input->post('item_kit_seq[' . $item_id . ']');
|
||||
$item_kit_items[] = array(
|
||||
'item_id' => $item_id,
|
||||
'quantity' => $quantity
|
||||
'quantity' => $quantity,
|
||||
'kit_sequence' => $seq
|
||||
);
|
||||
}
|
||||
|
||||
$success = $this->Item_kit_items->save($item_kit_items, $item_kit_id);
|
||||
}
|
||||
|
||||
$success = $this->Item_kit_items->save($item_kit_items, $item_kit_id);
|
||||
|
||||
$item_kit_data = $this->xss_clean($item_kit_data);
|
||||
|
||||
echo json_encode(array('success' => $success,
|
||||
'message' => $this->lang->line('item_kits_successful_adding').' '.$item_kit_data['name'], 'id' => $item_kit_id));
|
||||
if($new_item)
|
||||
{
|
||||
echo json_encode(array('success' => $success,
|
||||
'message' => $this->lang->line('item_kits_successful_adding').' '.$item_kit_data['name'], 'id' => $item_kit_id));
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
echo json_encode(array('success' => $success,
|
||||
'message' => $this->lang->line('item_kits_successful_updating').' '.$item_kit_data['name'], 'id' => $item_kit_id));
|
||||
}
|
||||
}
|
||||
else//failure
|
||||
{
|
||||
@@ -182,7 +213,7 @@ class Item_kits extends Secure_Controller
|
||||
}
|
||||
|
||||
$data['items'] = $result;
|
||||
$barcode_config = $this->barcode_lib->get_barcode_config();
|
||||
$barcode_config = $this->barcode_lib->get_barcode_config();
|
||||
// in case the selected barcode type is not Code39 or Code128 we set by default Code128
|
||||
// the rationale for this is that EAN codes cannot have strings as seed, so 'KIT ' is not allowed
|
||||
if($barcode_config['barcode_type'] != 'Code39' && $barcode_config['barcode_type'] != 'Code128')
|
||||
@@ -195,4 +226,4 @@ class Item_kits extends Secure_Controller
|
||||
$this->load->view("barcodes/barcode_sheet", $data);
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -57,27 +57,36 @@ class Items extends Secure_Controller
|
||||
$filters = array_merge($filters, $filledup);
|
||||
|
||||
$items = $this->Item->search($search, $filters, $limit, $offset, $sort, $order);
|
||||
|
||||
$total_rows = $this->Item->get_found_rows($search, $filters);
|
||||
|
||||
$data_rows = array();
|
||||
foreach($items->result() as $item)
|
||||
{
|
||||
$data_rows[] = $this->xss_clean(get_item_data_row($item, $this));
|
||||
if($item->pic_filename!='')
|
||||
{
|
||||
$this->_update_pic_filename($item);
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode(array('total' => $total_rows, 'rows' => $data_rows));
|
||||
}
|
||||
|
||||
public function pic_thumb($pic_id)
|
||||
public function pic_thumb($pic_filename)
|
||||
{
|
||||
$this->load->helper('file');
|
||||
$this->load->library('image_lib');
|
||||
$base_path = './uploads/item_pics/' . $pic_id;
|
||||
$images = glob($base_path . '.*');
|
||||
|
||||
// in this context, $pic_filename always has .ext
|
||||
$ext = pathinfo($pic_filename, PATHINFO_EXTENSION);
|
||||
$images = glob('./uploads/item_pics/' . $pic_filename);
|
||||
|
||||
// make sure we pick only the file name, without extension
|
||||
$base_path = './uploads/item_pics/' . pathinfo($pic_filename, PATHINFO_FILENAME);
|
||||
if(sizeof($images) > 0)
|
||||
{
|
||||
$image_path = $images[0];
|
||||
$ext = pathinfo($image_path, PATHINFO_EXTENSION);
|
||||
$thumb_path = $base_path . $this->image_lib->thumb_marker . '.' . $ext;
|
||||
if(sizeof($images) < 2)
|
||||
{
|
||||
@@ -87,8 +96,8 @@ class Items extends Secure_Controller
|
||||
$config['create_thumb'] = TRUE;
|
||||
$config['width'] = 52;
|
||||
$config['height'] = 32;
|
||||
$this->image_lib->initialize($config);
|
||||
$image = $this->image_lib->resize();
|
||||
$this->image_lib->initialize($config);
|
||||
$image = $this->image_lib->resize();
|
||||
$thumb_path = $this->image_lib->full_dst_path;
|
||||
}
|
||||
$this->output->set_content_type(get_mime_by_extension($thumb_path));
|
||||
@@ -115,6 +124,14 @@ class Items extends Secure_Controller
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
public function suggest_kits()
|
||||
{
|
||||
$suggestions = $this->xss_clean($this->Item->get_kit_search_suggestions($this->input->post_get('term'),
|
||||
array('search_custom' => FALSE, 'is_deleted' => FALSE), TRUE));
|
||||
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
/*
|
||||
Gives search suggestions based on what is being searched for
|
||||
*/
|
||||
@@ -163,6 +180,7 @@ class Items extends Secure_Controller
|
||||
$data['item_tax_info'] = $this->xss_clean($this->Item_taxes->get_info($item_id));
|
||||
$data['default_tax_1_rate'] = '';
|
||||
$data['default_tax_2_rate'] = '';
|
||||
$data['item_kits_enabled'] = $this->Employee->has_grant('item_kits', $this->Employee->get_logged_in_employee_info()->person_id);
|
||||
|
||||
$item_info = $this->Item->get_info($item_id);
|
||||
foreach(get_object_vars($item_info) as $property => $value)
|
||||
@@ -172,11 +190,14 @@ class Items extends Secure_Controller
|
||||
|
||||
if($item_id == -1)
|
||||
{
|
||||
$data['default_tax_1_rate'] = $this->Appconfig->get('default_tax_1_rate');
|
||||
$data['default_tax_2_rate'] = $this->Appconfig->get('default_tax_2_rate');
|
||||
|
||||
$item_info->receiving_quantity = 0;
|
||||
$item_info->reorder_level = 0;
|
||||
$data['default_tax_1_rate'] = $this->config->item('default_tax_1_rate');
|
||||
$data['default_tax_2_rate'] = $this->config->item('default_tax_2_rate');
|
||||
|
||||
$item_info->receiving_quantity = 1;
|
||||
$item_info->reorder_level = 1;
|
||||
$item_info->item_type = ITEM; // standard
|
||||
$item_info->stock_type = HAS_STOCK;
|
||||
$item_info->tax_category_id = 1; // Standard
|
||||
}
|
||||
|
||||
$data['item_info'] = $item_info;
|
||||
@@ -189,24 +210,52 @@ class Items extends Secure_Controller
|
||||
$data['suppliers'] = $suppliers;
|
||||
$data['selected_supplier'] = $item_info->supplier_id;
|
||||
|
||||
$data['logo_exists'] = $item_info->pic_id != '';
|
||||
$images = glob('./uploads/item_pics/' . $item_info->pic_id . '.*');
|
||||
$data['image_path'] = sizeof($images) > 0 ? base_url($images[0]) : '';
|
||||
$customer_sales_tax_support = $this->config->item('customer_sales_tax_support');
|
||||
if($customer_sales_tax_support == '1')
|
||||
{
|
||||
$data['customer_sales_tax_enabled'] = TRUE;
|
||||
$tax_categories = array();
|
||||
foreach($this->Tax->get_all_tax_categories()->result_array() as $row)
|
||||
{
|
||||
$tax_categories[$this->xss_clean($row['tax_category_id'])] = $this->xss_clean($row['tax_category']);
|
||||
}
|
||||
$data['tax_categories'] = $tax_categories;
|
||||
$data['selected_tax_category'] = $item_info->tax_category_id;
|
||||
}
|
||||
else
|
||||
{
|
||||
$data['customer_sales_tax_enabled'] = FALSE;
|
||||
$data['tax_categories'] = array();
|
||||
$data['selected_tax_category'] = '';
|
||||
}
|
||||
|
||||
$data['logo_exists'] = $item_info->pic_filename != '';
|
||||
$ext = pathinfo($item_info->pic_filename, PATHINFO_EXTENSION);
|
||||
if($ext == '')
|
||||
{
|
||||
// if file extension is not found guess it (legacy)
|
||||
$images = glob('./uploads/item_pics/' . $item_info->pic_filename . '.*');
|
||||
}
|
||||
else
|
||||
{
|
||||
// else just pick that file
|
||||
$images = glob('./uploads/item_pics/' . $item_info->pic_filename);
|
||||
}
|
||||
$data['image_path'] = sizeof($images) > 0 ? base_url($images[0]) : '';
|
||||
$stock_locations = $this->Stock_location->get_undeleted_all()->result_array();
|
||||
foreach($stock_locations as $location)
|
||||
{
|
||||
foreach($stock_locations as $location)
|
||||
{
|
||||
$location = $this->xss_clean($location);
|
||||
|
||||
$quantity = $this->xss_clean($this->Item_quantity->get_item_quantity($item_id, $location['location_id'])->quantity);
|
||||
$quantity = ($item_id == -1) ? 0 : $quantity;
|
||||
$location_array[$location['location_id']] = array('location_name' => $location['location_name'], 'quantity' => $quantity);
|
||||
$data['stock_locations'] = $location_array;
|
||||
}
|
||||
}
|
||||
|
||||
$this->load->view('items/form', $data);
|
||||
}
|
||||
|
||||
|
||||
public function inventory($item_id = -1)
|
||||
{
|
||||
$item_info = $this->Item->get_info($item_id);
|
||||
@@ -216,16 +265,16 @@ class Items extends Secure_Controller
|
||||
}
|
||||
$data['item_info'] = $item_info;
|
||||
|
||||
$data['stock_locations'] = array();
|
||||
$stock_locations = $this->Stock_location->get_undeleted_all()->result_array();
|
||||
foreach($stock_locations as $location)
|
||||
{
|
||||
$data['stock_locations'] = array();
|
||||
$stock_locations = $this->Stock_location->get_undeleted_all()->result_array();
|
||||
foreach($stock_locations as $location)
|
||||
{
|
||||
$location = $this->xss_clean($location);
|
||||
$quantity = $this->xss_clean($this->Item_quantity->get_item_quantity($item_id, $location['location_id'])->quantity);
|
||||
|
||||
$data['stock_locations'][$location['location_id']] = $location['location_name'];
|
||||
$data['item_quantities'][$location['location_id']] = $quantity;
|
||||
}
|
||||
$data['stock_locations'][$location['location_id']] = $location['location_name'];
|
||||
$data['item_quantities'][$location['location_id']] = $quantity;
|
||||
}
|
||||
|
||||
$this->load->view('items/form_inventory', $data);
|
||||
}
|
||||
@@ -239,16 +288,16 @@ class Items extends Secure_Controller
|
||||
}
|
||||
$data['item_info'] = $item_info;
|
||||
|
||||
$data['stock_locations'] = array();
|
||||
$stock_locations = $this->Stock_location->get_undeleted_all()->result_array();
|
||||
foreach($stock_locations as $location)
|
||||
{
|
||||
$data['stock_locations'] = array();
|
||||
$stock_locations = $this->Stock_location->get_undeleted_all()->result_array();
|
||||
foreach($stock_locations as $location)
|
||||
{
|
||||
$location = $this->xss_clean($location);
|
||||
$quantity = $this->xss_clean($this->Item_quantity->get_item_quantity($item_id, $location['location_id'])->quantity);
|
||||
|
||||
$data['stock_locations'][$location['location_id']] = $location['location_name'];
|
||||
$data['item_quantities'][$location['location_id']] = $quantity;
|
||||
}
|
||||
$data['stock_locations'][$location['location_id']] = $location['location_name'];
|
||||
$data['item_quantities'][$location['location_id']] = $quantity;
|
||||
}
|
||||
|
||||
$this->load->view('items/form_count_details', $data);
|
||||
}
|
||||
@@ -268,8 +317,8 @@ class Items extends Secure_Controller
|
||||
{
|
||||
$item = $this->xss_clean($item);
|
||||
|
||||
// update the UPC/EAN/ISBN field if empty / NULL with the newly generated barcode
|
||||
if(empty($item['item_number']) && $this->Appconfig->get('barcode_generate_if_empty'))
|
||||
// update the barcode field if empty / NULL with the newly generated barcode
|
||||
if(empty($item['item_number']) && $this->config->item('barcode_generate_if_empty'))
|
||||
{
|
||||
// get the newly generated barcode
|
||||
$barcode_instance = Barcode_lib::barcode_instance($item, $config);
|
||||
@@ -277,7 +326,7 @@ class Items extends Secure_Controller
|
||||
|
||||
$save_item = array('item_number' => $item['item_number']);
|
||||
|
||||
// update the item in the database in order to save the UPC/EAN/ISBN field
|
||||
// update the item in the database in order to save the barcode field
|
||||
$this->Item->save($save_item, $item['item_id']);
|
||||
}
|
||||
}
|
||||
@@ -320,6 +369,8 @@ class Items extends Secure_Controller
|
||||
'name' => $this->input->post('name'),
|
||||
'description' => $this->input->post('description'),
|
||||
'category' => $this->input->post('category'),
|
||||
'item_type' => $this->input->post('item_type'),
|
||||
'stock_type' => $this->input->post('stock_type'),
|
||||
'supplier_id' => $this->input->post('supplier_id') == '' ? NULL : $this->input->post('supplier_id'),
|
||||
'item_number' => $this->input->post('item_number') == '' ? NULL : $this->input->post('item_number'),
|
||||
'cost_price' => parse_decimals($this->input->post('cost_price')),
|
||||
@@ -340,13 +391,23 @@ class Items extends Secure_Controller
|
||||
'custom9' => $this->input->post('custom9') == NULL ? '' : $this->input->post('custom9'),
|
||||
'custom10' => $this->input->post('custom10') == NULL ? '' : $this->input->post('custom10')
|
||||
);
|
||||
|
||||
$x = $this->input->post('tax_category_id');
|
||||
if(!isset($x))
|
||||
{
|
||||
$item_data['tax_category_id'] = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$item_data['tax_category_id'] = $this->input->post('tax_category_id');
|
||||
}
|
||||
|
||||
if(!empty($upload_data['orig_name']))
|
||||
{
|
||||
// XSS file image sanity check
|
||||
if($this->xss_clean($upload_data['raw_name'], TRUE) === TRUE)
|
||||
{
|
||||
$item_data['pic_id'] = $upload_data['raw_name'];
|
||||
$item_data['pic_filename'] = $upload_data['raw_name'];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -377,45 +438,45 @@ class Items extends Secure_Controller
|
||||
}
|
||||
}
|
||||
$success &= $this->Item_taxes->save($items_taxes_data, $item_id);
|
||||
|
||||
//Save item quantity
|
||||
$stock_locations = $this->Stock_location->get_undeleted_all()->result_array();
|
||||
foreach($stock_locations as $location)
|
||||
{
|
||||
$updated_quantity = parse_decimals($this->input->post('quantity_' . $location['location_id']));
|
||||
$location_detail = array('item_id' => $item_id,
|
||||
'location_id' => $location['location_id'],
|
||||
'quantity' => $updated_quantity);
|
||||
$item_quantity = $this->Item_quantity->get_item_quantity($item_id, $location['location_id']);
|
||||
if($item_quantity->quantity != $updated_quantity || $new_item)
|
||||
{
|
||||
$success &= $this->Item_quantity->save($location_detail, $item_id, $location['location_id']);
|
||||
|
||||
$inv_data = array(
|
||||
'trans_date' => date('Y-m-d H:i:s'),
|
||||
'trans_items' => $item_id,
|
||||
'trans_user' => $employee_id,
|
||||
'trans_location' => $location['location_id'],
|
||||
'trans_comment' => $this->lang->line('items_manually_editing_of_quantity'),
|
||||
'trans_inventory' => $updated_quantity - $item_quantity->quantity
|
||||
);
|
||||
|
||||
$success &= $this->Inventory->insert($inv_data);
|
||||
}
|
||||
}
|
||||
//Save item quantity
|
||||
$stock_locations = $this->Stock_location->get_undeleted_all()->result_array();
|
||||
foreach($stock_locations as $location)
|
||||
{
|
||||
$updated_quantity = parse_decimals($this->input->post('quantity_' . $location['location_id']));
|
||||
$location_detail = array('item_id' => $item_id,
|
||||
'location_id' => $location['location_id'],
|
||||
'quantity' => $updated_quantity);
|
||||
$item_quantity = $this->Item_quantity->get_item_quantity($item_id, $location['location_id']);
|
||||
if($item_quantity->quantity != $updated_quantity || $new_item)
|
||||
{
|
||||
$success &= $this->Item_quantity->save($location_detail, $item_id, $location['location_id']);
|
||||
|
||||
$inv_data = array(
|
||||
'trans_date' => date('Y-m-d H:i:s'),
|
||||
'trans_items' => $item_id,
|
||||
'trans_user' => $employee_id,
|
||||
'trans_location' => $location['location_id'],
|
||||
'trans_comment' => $this->lang->line('items_manually_editing_of_quantity'),
|
||||
'trans_inventory' => $updated_quantity - $item_quantity->quantity
|
||||
);
|
||||
|
||||
$success &= $this->Inventory->insert($inv_data);
|
||||
}
|
||||
}
|
||||
|
||||
if($success && $upload_success)
|
||||
{
|
||||
$message = $this->xss_clean($this->lang->line('items_successful_' . ($new_item ? 'adding' : 'updating')) . ' ' . $item_data['name']);
|
||||
{
|
||||
$message = $this->xss_clean($this->lang->line('items_successful_' . ($new_item ? 'adding' : 'updating')) . ' ' . $item_data['name']);
|
||||
|
||||
echo json_encode(array('success' => TRUE, 'message' => $message, 'id' => $item_id));
|
||||
}
|
||||
else
|
||||
{
|
||||
$message = $this->xss_clean($upload_success ? $this->lang->line('items_error_adding_updating') . ' ' . $item_data['name'] : strip_tags($this->upload->display_errors()));
|
||||
echo json_encode(array('success' => TRUE, 'message' => $message, 'id' => $item_id));
|
||||
}
|
||||
else
|
||||
{
|
||||
$message = $this->xss_clean($upload_success ? $this->lang->line('items_error_adding_updating') . ' ' . $item_data['name'] : strip_tags($this->upload->display_errors()));
|
||||
|
||||
echo json_encode(array('success' => FALSE, 'message' => $message, 'id' => $item_id));
|
||||
}
|
||||
echo json_encode(array('success' => FALSE, 'message' => $message, 'id' => $item_id));
|
||||
}
|
||||
}
|
||||
else//failure
|
||||
{
|
||||
@@ -430,30 +491,43 @@ class Items extends Secure_Controller
|
||||
$exists = $this->Item->item_number_exists($this->input->post('item_number'), $this->input->post('item_id'));
|
||||
echo !$exists ? 'true' : 'false';
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
If adding a new item check to see if an item kit with the same name as the item already exists.
|
||||
*/
|
||||
public function check_kit_exists()
|
||||
{
|
||||
if ($this->input->post('item_number') === -1)
|
||||
{
|
||||
$exists = $this->Item_kit->item_kit_exists_for_name($this->input->post('name'));
|
||||
}
|
||||
else
|
||||
{
|
||||
$exists = FALSE;
|
||||
}
|
||||
echo !$exists ? 'true' : 'false';
|
||||
}
|
||||
|
||||
private function _handle_image_upload()
|
||||
{
|
||||
$this->load->helper('directory');
|
||||
|
||||
$map = directory_map('./uploads/item_pics/', 1);
|
||||
|
||||
/* Let files be uploaded with their original name */
|
||||
|
||||
// load upload library
|
||||
$config = array('upload_path' => './uploads/item_pics/',
|
||||
'allowed_types' => 'gif|jpg|png',
|
||||
'max_size' => '100',
|
||||
'max_width' => '640',
|
||||
'max_height' => '480',
|
||||
'file_name' => sizeof($map) + 1
|
||||
'max_height' => '480'
|
||||
);
|
||||
$this->load->library('upload', $config);
|
||||
$this->upload->do_upload('item_image');
|
||||
$this->upload->do_upload('item_image');
|
||||
|
||||
return strlen($this->upload->display_errors()) == 0 || !strcmp($this->upload->display_errors(), '<p>'.$this->lang->line('upload_no_file_selected').'</p>');
|
||||
}
|
||||
|
||||
public function remove_logo($item_id)
|
||||
{
|
||||
$item_data = array('pic_id' => NULL);
|
||||
$item_data = array('pic_filename' => NULL);
|
||||
$result = $this->Item->save($item_data, $item_id);
|
||||
|
||||
echo json_encode(array('success' => $result));
|
||||
@@ -463,7 +537,7 @@ class Items extends Secure_Controller
|
||||
{
|
||||
$employee_id = $this->Employee->get_logged_in_employee_info()->person_id;
|
||||
$cur_item_info = $this->Item->get_info($item_id);
|
||||
$location_id = $this->input->post('stock_location');
|
||||
$location_id = $this->input->post('stock_location');
|
||||
$inv_data = array(
|
||||
'trans_date' => date('Y-m-d H:i:s'),
|
||||
'trans_items' => $item_id,
|
||||
@@ -560,11 +634,14 @@ class Items extends Secure_Controller
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('items_cannot_be_deleted')));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Items import from excel spreadsheet
|
||||
*/
|
||||
public function excel()
|
||||
{
|
||||
$name = 'import_items.csv';
|
||||
$data = file_get_contents($name);
|
||||
$data = file_get_contents('../' . $name);
|
||||
force_download($name, $data);
|
||||
}
|
||||
|
||||
@@ -573,133 +650,146 @@ class Items extends Secure_Controller
|
||||
$this->load->view('items/form_excel_import', NULL);
|
||||
}
|
||||
|
||||
public function do_excel_import()
|
||||
{
|
||||
if($_FILES['file_path']['error'] != UPLOAD_ERR_OK)
|
||||
{
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('items_excel_import_failed')));
|
||||
}
|
||||
else
|
||||
public function do_excel_import()
|
||||
{
|
||||
if($_FILES['file_path']['error'] != UPLOAD_ERR_OK)
|
||||
{
|
||||
if(($handle = fopen($_FILES['file_path']['tmp_name'], 'r')) !== FALSE)
|
||||
{
|
||||
// Skip the first row as it's the table description
|
||||
fgetcsv($handle);
|
||||
$i = 1;
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('items_excel_import_failed')));
|
||||
}
|
||||
else
|
||||
{
|
||||
if(($handle = fopen($_FILES['file_path']['tmp_name'], 'r')) !== FALSE)
|
||||
{
|
||||
// Skip the first row as it's the table description
|
||||
fgetcsv($handle);
|
||||
$i = 1;
|
||||
|
||||
$failCodes = array();
|
||||
|
||||
while(($data = fgetcsv($handle)) !== FALSE)
|
||||
{
|
||||
while(($data = fgetcsv($handle)) !== FALSE)
|
||||
{
|
||||
// XSS file data sanity check
|
||||
$data = $this->xss_clean($data);
|
||||
|
||||
/* haven't touched this so old templates will work, or so I guess... */
|
||||
if(sizeof($data) >= 23)
|
||||
{
|
||||
$item_data = array(
|
||||
'name' => $data[1],
|
||||
'description' => $data[11],
|
||||
'category' => $data[2],
|
||||
'cost_price' => $data[4],
|
||||
'unit_price' => $data[5],
|
||||
'reorder_level' => $data[10],
|
||||
'supplier_id' => $this->Supplier->exists($data[3]) ? $data[3] : NULL,
|
||||
'allow_alt_description' => $data[12] != '' ? '1' : '0',
|
||||
'is_serialized' => $data[13] != '' ? '1' : '0',
|
||||
'custom1' => $data[14],
|
||||
'custom2' => $data[15],
|
||||
'custom3' => $data[16],
|
||||
'custom4' => $data[17],
|
||||
'custom5' => $data[18],
|
||||
'custom6' => $data[19],
|
||||
'custom7' => $data[20],
|
||||
'custom8' => $data[21],
|
||||
'custom9' => $data[22],
|
||||
'custom10' => $data[23]
|
||||
);
|
||||
$item_number = $data[0];
|
||||
$invalidated = FALSE;
|
||||
if($item_number != '')
|
||||
{
|
||||
$item_data['item_number'] = $item_number;
|
||||
$invalidated = $this->Item->item_number_exists($item_number);
|
||||
}
|
||||
$item_data = array(
|
||||
'name' => $data[1],
|
||||
'description' => $data[11],
|
||||
'category' => $data[2],
|
||||
'cost_price' => $data[4],
|
||||
'unit_price' => $data[5],
|
||||
'reorder_level' => $data[10],
|
||||
'supplier_id' => $this->Supplier->exists($data[3]) ? $data[3] : NULL,
|
||||
'allow_alt_description' => $data[12] != '' ? '1' : '0',
|
||||
'is_serialized' => $data[13] != '' ? '1' : '0',
|
||||
'custom1' => $data[14],
|
||||
'custom2' => $data[15],
|
||||
'custom3' => $data[16],
|
||||
'custom4' => $data[17],
|
||||
'custom5' => $data[18],
|
||||
'custom6' => $data[19],
|
||||
'custom7' => $data[20],
|
||||
'custom8' => $data[21],
|
||||
'custom9' => $data[22],
|
||||
'custom10' => $data[23]
|
||||
);
|
||||
|
||||
/* we could do something like this, however, the effectiveness of
|
||||
this is rather limited, since for now, you have to upload files manually
|
||||
into that directory, so you really can do whatever you want, this probably
|
||||
needs further discussion */
|
||||
|
||||
$pic_file = $data[24];
|
||||
/*if(strcmp('.htaccess', $pic_file)==0) {
|
||||
$pic_file='';
|
||||
}*/
|
||||
$item_data['pic_filename'] = $pic_file;
|
||||
|
||||
$item_number = $data[0];
|
||||
$invalidated = FALSE;
|
||||
if($item_number != '')
|
||||
{
|
||||
$item_data['item_number'] = $item_number;
|
||||
$invalidated = $this->Item->item_number_exists($item_number);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
$invalidated = TRUE;
|
||||
}
|
||||
|
||||
if(!$invalidated && $this->Item->save($item_data))
|
||||
{
|
||||
$items_taxes_data = NULL;
|
||||
//tax 1
|
||||
if(is_numeric($data[7]) && $data[6] != '')
|
||||
{
|
||||
$items_taxes_data[] = array('name' => $data[6], 'percent' => $data[7] );
|
||||
}
|
||||
if(!$invalidated && $this->Item->save($item_data))
|
||||
{
|
||||
$items_taxes_data = NULL;
|
||||
//tax 1
|
||||
if(is_numeric($data[7]) && $data[6] != '')
|
||||
{
|
||||
$items_taxes_data[] = array('name' => $data[6], 'percent' => $data[7] );
|
||||
}
|
||||
|
||||
//tax 2
|
||||
if(is_numeric($data[9]) && $data[8] != '')
|
||||
{
|
||||
$items_taxes_data[] = array('name' => $data[8], 'percent' => $data[9] );
|
||||
}
|
||||
//tax 2
|
||||
if(is_numeric($data[9]) && $data[8] != '')
|
||||
{
|
||||
$items_taxes_data[] = array('name' => $data[8], 'percent' => $data[9] );
|
||||
}
|
||||
|
||||
// save tax values
|
||||
if(count($items_taxes_data) > 0)
|
||||
{
|
||||
$this->Item_taxes->save($items_taxes_data, $item_data['item_id']);
|
||||
}
|
||||
// save tax values
|
||||
if(count($items_taxes_data) > 0)
|
||||
{
|
||||
$this->Item_taxes->save($items_taxes_data, $item_data['item_id']);
|
||||
}
|
||||
|
||||
// quantities & inventory Info
|
||||
$employee_id = $this->Employee->get_logged_in_employee_info()->person_id;
|
||||
$emp_info = $this->Employee->get_info($employee_id);
|
||||
$comment ='Qty CSV Imported';
|
||||
// quantities & inventory Info
|
||||
$employee_id = $this->Employee->get_logged_in_employee_info()->person_id;
|
||||
$emp_info = $this->Employee->get_info($employee_id);
|
||||
$comment ='Qty CSV Imported';
|
||||
|
||||
$cols = count($data);
|
||||
$cols = count($data);
|
||||
|
||||
// array to store information if location got a quantity
|
||||
$allowed_locations = $this->Stock_location->get_allowed_locations();
|
||||
for ($col = 24; $col < $cols; $col = $col + 2)
|
||||
{
|
||||
$location_id = $data[$col];
|
||||
if(array_key_exists($location_id, $allowed_locations))
|
||||
{
|
||||
$item_quantity_data = array(
|
||||
'item_id' => $item_data['item_id'],
|
||||
'location_id' => $location_id,
|
||||
'quantity' => $data[$col + 1],
|
||||
);
|
||||
$this->Item_quantity->save($item_quantity_data, $item_data['item_id'], $location_id);
|
||||
// array to store information if location got a quantity
|
||||
$allowed_locations = $this->Stock_location->get_allowed_locations();
|
||||
for ($col = 25; $col < $cols; $col = $col + 2)
|
||||
{
|
||||
$location_id = $data[$col];
|
||||
if(array_key_exists($location_id, $allowed_locations))
|
||||
{
|
||||
$item_quantity_data = array(
|
||||
'item_id' => $item_data['item_id'],
|
||||
'location_id' => $location_id,
|
||||
'quantity' => $data[$col + 1],
|
||||
);
|
||||
$this->Item_quantity->save($item_quantity_data, $item_data['item_id'], $location_id);
|
||||
|
||||
$excel_data = array(
|
||||
'trans_items' => $item_data['item_id'],
|
||||
'trans_user' => $employee_id,
|
||||
'trans_comment' => $comment,
|
||||
'trans_location' => $data[$col],
|
||||
'trans_inventory' => $data[$col + 1]
|
||||
);
|
||||
$excel_data = array(
|
||||
'trans_items' => $item_data['item_id'],
|
||||
'trans_user' => $employee_id,
|
||||
'trans_comment' => $comment,
|
||||
'trans_location' => $data[$col],
|
||||
'trans_inventory' => $data[$col + 1]
|
||||
);
|
||||
|
||||
$this->Inventory->insert($excel_data);
|
||||
unset($allowed_locations[$location_id]);
|
||||
}
|
||||
}
|
||||
$this->Inventory->insert($excel_data);
|
||||
unset($allowed_locations[$location_id]);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* now iterate through the array and check for which location_id no entry into item_quantities was made yet
|
||||
* those get an entry with quantity as 0.
|
||||
* unfortunately a bit duplicate code from above...
|
||||
*/
|
||||
foreach($allowed_locations as $location_id => $location_name)
|
||||
{
|
||||
$item_quantity_data = array(
|
||||
'item_id' => $item_data['item_id'],
|
||||
'location_id' => $location_id,
|
||||
'quantity' => 0,
|
||||
);
|
||||
$this->Item_quantity->save($item_quantity_data, $item_data['item_id'], $data[$col]);
|
||||
/*
|
||||
* now iterate through the array and check for which location_id no entry into item_quantities was made yet
|
||||
* those get an entry with quantity as 0.
|
||||
* unfortunately a bit duplicate code from above...
|
||||
*/
|
||||
foreach($allowed_locations as $location_id => $location_name)
|
||||
{
|
||||
$item_quantity_data = array(
|
||||
'item_id' => $item_data['item_id'],
|
||||
'location_id' => $location_id,
|
||||
'quantity' => 0,
|
||||
);
|
||||
$this->Item_quantity->save($item_quantity_data, $item_data['item_id'], $data[$col]);
|
||||
|
||||
$excel_data = array(
|
||||
$excel_data = array(
|
||||
'trans_items' => $item_data['item_id'],
|
||||
'trans_user' => $employee_id,
|
||||
'trans_comment' => $comment,
|
||||
@@ -707,16 +797,16 @@ class Items extends Secure_Controller
|
||||
'trans_inventory' => 0
|
||||
);
|
||||
|
||||
$this->Inventory->insert($excel_data);
|
||||
}
|
||||
}
|
||||
else //insert or update item failure
|
||||
{
|
||||
$failCodes[] = $i;
|
||||
}
|
||||
$this->Inventory->insert($excel_data);
|
||||
}
|
||||
}
|
||||
else //insert or update item failure
|
||||
{
|
||||
$failCodes[] = $i;
|
||||
}
|
||||
|
||||
++$i;
|
||||
}
|
||||
}
|
||||
|
||||
if(count($failCodes) > 0)
|
||||
{
|
||||
@@ -731,9 +821,35 @@ class Items extends Secure_Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('items_excel_import_nodata_wrongformat')));
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('items_excel_import_nodata_wrongformat')));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Guess whether file extension is not in the table field,
|
||||
* if it isn't, then it's an old-format (formerly pic_id) field,
|
||||
* so we guess the right filename and update the table
|
||||
* @param $item the item to update
|
||||
*/
|
||||
private function _update_pic_filename($item)
|
||||
{
|
||||
$filename = pathinfo($item->pic_filename, PATHINFO_FILENAME);
|
||||
if($filename=='')
|
||||
{
|
||||
// if the field is empty there's nothing to check
|
||||
return;
|
||||
}
|
||||
|
||||
$ext = pathinfo($item->pic_filename, PATHINFO_EXTENSION);
|
||||
if ($ext == '') {
|
||||
$images = glob('./uploads/item_pics/' . $item->pic_filename . '.*');
|
||||
if (sizeof($images) > 0) {
|
||||
$new_pic_filename = pathinfo($images[0], PATHINFO_BASENAME);
|
||||
$item_data = array('pic_filename' => $new_pic_filename);
|
||||
$this->Item->save($item_data, $item->item_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class Login extends CI_Controller
|
||||
class Login extends CI_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
if($this->Employee->is_logged_in())
|
||||
@@ -15,32 +10,39 @@ class Login extends CI_Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->form_validation->set_rules('username', 'lang:login_undername', 'callback_login_check');
|
||||
$this->form_validation->set_error_delimiters('<div class="error">', '</div>');
|
||||
|
||||
|
||||
$this->form_validation->set_rules('username', 'lang:login_username', 'required|callback_login_check');
|
||||
|
||||
if($this->config->item('gcaptcha_enable'))
|
||||
{
|
||||
$this->form_validation->set_rules('g-recaptcha-response', 'lang:login_gcaptcha', 'required|callback_gcaptcha_check');
|
||||
}
|
||||
|
||||
if($this->form_validation->run() == FALSE)
|
||||
{
|
||||
$this->load->view('login');
|
||||
}
|
||||
else
|
||||
{
|
||||
if($this->config->item('statistics') == TRUE)
|
||||
if($this->config->item('statistics'))
|
||||
{
|
||||
$this->load->library('tracking_lib');
|
||||
|
||||
//$login_info = $this->config->item('website') . ' | ' . $this->config->item('base_url') ;
|
||||
$this->tracking_lib->track_page('login', 'login'/*, $login_info*/);
|
||||
|
||||
$this->tracking_lib->track_page('login', 'login');
|
||||
|
||||
$this->tracking_lib->track_event('Stats', 'Theme', $this->config->item('theme'));
|
||||
$this->tracking_lib->track_event('Stats', 'Language', $this->config->item('language'));
|
||||
$this->tracking_lib->track_event('Stats', 'Timezone', $this->config->item('timezone'));
|
||||
$this->tracking_lib->track_event('Stats', 'Currency', $this->config->item('currency_symbol'));
|
||||
$this->tracking_lib->track_event('Stats', 'Customer Sales Tax Support', $this->config->item('customer_sales_tax_support'));
|
||||
$this->tracking_lib->track_event('Stats', 'Tax Included', $this->config->item('tax_included'));
|
||||
$this->tracking_lib->track_event('Stats', 'Thousands Separator', $this->config->item('thousands_separator'));
|
||||
$this->tracking_lib->track_event('Stats', 'Currency Decimals', $this->config->item('currency_decimals'));
|
||||
$this->tracking_lib->track_event('Stats', 'Tax Decimals', $this->config->item('tax_decimals'));
|
||||
$this->tracking_lib->track_event('Stats', 'Quantity Decimals', $this->config->item('quantity_decimals'));
|
||||
$this->tracking_lib->track_event('Stats', 'Invoice Enable', $this->config->item('invoice_enable'));
|
||||
$this->tracking_lib->track_event('Stats', 'Date or Time Format', $this->config->item('date_or_time_format'));
|
||||
}
|
||||
|
||||
redirect('home');
|
||||
@@ -52,9 +54,9 @@ class Login extends CI_Controller
|
||||
{
|
||||
$password = $this->input->post('password');
|
||||
|
||||
if($this->_security_check($username, $password))
|
||||
if(!$this->_installation_check())
|
||||
{
|
||||
$this->form_validation->set_message('login_check', 'Security check failure');
|
||||
$this->form_validation->set_message('login_check', $this->lang->line('login_invalid_installation'));
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -66,12 +68,57 @@ class Login extends CI_Controller
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
private function _security_check($username, $password)
|
||||
|
||||
public function gcaptcha_check($recaptchaResponse)
|
||||
{
|
||||
return preg_match('~\b(Copyright|(c)|<7C>|All rights reserved|Developed|Crafted|Implemented|Made|Powered|Code|Design|unblockUI|blockUI|blockOverlay)\b~i', file_get_contents(APPPATH . 'views/partial/footer.php'));
|
||||
$url = 'https://www.google.com/recaptcha/api/siteverify?secret=' . $this->config->item('gcaptcha_secret_key') . '&response=' . $recaptchaResponse . '&remoteip=' . $this->input->ip_address();
|
||||
|
||||
$ch = curl_init();
|
||||
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
|
||||
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
|
||||
curl_setopt($ch, CURLOPT_URL, $url);
|
||||
$result = curl_exec($ch);
|
||||
curl_close($ch);
|
||||
|
||||
$status = json_decode($result, TRUE);
|
||||
|
||||
if(empty($status['success']))
|
||||
{
|
||||
$this->form_validation->set_message('gcaptcha_check', $this->lang->line('login_invalid_gcaptcha'));
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
private function _installation_check()
|
||||
{
|
||||
// get PHP extensions and check that the required ones are installed
|
||||
$extensions = implode(', ', get_loaded_extensions());
|
||||
$keys = array('bcmath', 'intl', 'gd', 'sockets', 'mcrypt');
|
||||
$pattern = '/';
|
||||
foreach($keys as $key)
|
||||
{
|
||||
$pattern .= '(?=.*\b' . preg_quote($key, '/') . '\b)';
|
||||
}
|
||||
$pattern .= '/i';
|
||||
$result = preg_match($pattern, $extensions);
|
||||
|
||||
if(!$result)
|
||||
{
|
||||
error_log('Check your php.ini');
|
||||
error_log('PHP installed extensions: ' . $extensions);
|
||||
error_log('PHP required extensions: ' . implode(', ', $keys));
|
||||
}
|
||||
else
|
||||
{
|
||||
$result = preg_match('~\b(Copyright|(c)|©|All rights reserved|Developed|Crafted|Implemented|Made|Powered|Code|Design|unblockUI|blockUI|blockOverlay|hide|opacity)\b~i', file_get_contents(APPPATH . 'views/partial/footer.php')) != TRUE;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
31
application/controllers/Migrate.php
Normal file
31
application/controllers/Migrate.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
require_once("Secure_Controller.php");
|
||||
|
||||
class Migrate extends Secure_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('migrate');
|
||||
|
||||
$this->load->library('migration');
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$this->load->view('migrate/manage');
|
||||
}
|
||||
|
||||
public function perform_migration()
|
||||
{
|
||||
if( ! $this->migration->latest())
|
||||
{
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('migrate_failed - ' . $this->migration->error_string())));
|
||||
}
|
||||
else
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('migrate_success')));
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -2,11 +2,6 @@
|
||||
|
||||
class No_Access extends CI_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
public function index($module_id = '', $permission_id = '')
|
||||
{
|
||||
$data['module_name'] = $this->Module->get_module_name($module_id);
|
||||
@@ -17,4 +12,4 @@ class No_Access extends CI_Controller
|
||||
$this->load->view('no_access', $data);
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -6,9 +6,16 @@ abstract class Persons extends Secure_Controller
|
||||
{
|
||||
public function __construct($module_id = NULL)
|
||||
{
|
||||
parent::__construct($module_id);
|
||||
parent::__construct($module_id);
|
||||
}
|
||||
|
||||
|
||||
public function index()
|
||||
{
|
||||
$data['table_headers'] = $this->xss_clean(get_people_manage_table_headers());
|
||||
|
||||
$this->load->view('people/manage', $data);
|
||||
}
|
||||
|
||||
/*
|
||||
Gives search suggestions based on what is being searched for
|
||||
*/
|
||||
@@ -18,7 +25,7 @@ abstract class Persons extends Secure_Controller
|
||||
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Gets one row for a person manage table. This is called using AJAX to update one row.
|
||||
*/
|
||||
@@ -28,5 +35,21 @@ abstract class Persons extends Secure_Controller
|
||||
|
||||
echo json_encode($data_row);
|
||||
}
|
||||
|
||||
/*
|
||||
Capitalize segments of a name, and put the rest into lower case.
|
||||
You can pass the characters you want to use as delimiters as exceptions.
|
||||
The function supports UTF-8 string.
|
||||
|
||||
Example:
|
||||
i.e. <?php echo nameize("john o'grady-smith"); ?>
|
||||
|
||||
returns John O'Grady-Smith
|
||||
*/
|
||||
|
||||
protected function nameize($string)
|
||||
{
|
||||
return str_name_case($string);
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -27,6 +27,16 @@ class Receivings extends Secure_Controller
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
public function stock_item_search()
|
||||
{
|
||||
$suggestions = $this->Item->get_stock_search_suggestions($this->input->get('term'), array('search_custom' => FALSE, 'is_deleted' => FALSE), TRUE);
|
||||
$suggestions = array_merge($suggestions, $this->Item_kit->get_search_suggestions($this->input->get('term')));
|
||||
|
||||
$suggestions = $this->xss_clean($suggestions);
|
||||
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
public function select_supplier()
|
||||
{
|
||||
$supplier_id = $this->input->post('supplier');
|
||||
@@ -80,14 +90,15 @@ class Receivings extends Secure_Controller
|
||||
|
||||
$mode = $this->receiving_lib->get_mode();
|
||||
$item_id_or_number_or_item_kit_or_receipt = $this->input->post('item');
|
||||
$quantity = ($mode == 'receive' || $mode == 'requisition') ? 1 : -1;
|
||||
$this->barcode_lib->parse_barcode_fields($quantity, $item_id_or_number_or_item_kit_or_receipt);
|
||||
$quantity = ($mode == 'receive' || $mode == 'requisition') ? $quantity : -$quantity;
|
||||
$item_location = $this->receiving_lib->get_stock_source();
|
||||
|
||||
if($mode == 'return' && $this->receiving_lib->is_valid_receipt($item_id_or_number_or_item_kit_or_receipt))
|
||||
if($mode == 'return' && $this->Receiving->is_valid_receipt($item_id_or_number_or_item_kit_or_receipt))
|
||||
{
|
||||
$this->receiving_lib->return_entire_receiving($item_id_or_number_or_item_kit_or_receipt);
|
||||
}
|
||||
elseif($this->receiving_lib->is_valid_item_kit($item_id_or_number_or_item_kit_or_receipt))
|
||||
elseif($this->Item_kit->is_valid_item_kit($item_id_or_number_or_item_kit_or_receipt))
|
||||
{
|
||||
$this->receiving_lib->add_item_kit($item_id_or_number_or_item_kit_or_receipt, $item_location);
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -19,7 +19,7 @@ class Secure_Controller extends CI_Controller
|
||||
}
|
||||
|
||||
$this->track_page($module_id, $module_id);
|
||||
|
||||
|
||||
$logged_in_employee_info = $model->get_logged_in_employee_info();
|
||||
if(!$model->has_module_grant($module_id, $logged_in_employee_info->person_id) ||
|
||||
(isset($submodule_id) && !$model->has_module_grant($submodule_id, $logged_in_employee_info->person_id)))
|
||||
@@ -55,7 +55,7 @@ class Secure_Controller extends CI_Controller
|
||||
|
||||
protected function track_page($path, $page)
|
||||
{
|
||||
if($this->config->item('statistics') == TRUE)
|
||||
if(get_instance()->Appconfig->get('statistics'))
|
||||
{
|
||||
$this->load->library('tracking_lib');
|
||||
|
||||
@@ -71,7 +71,7 @@ class Secure_Controller extends CI_Controller
|
||||
|
||||
protected function track_event($category, $action, $label, $value = NULL)
|
||||
{
|
||||
if($this->config->item('statistics') == TRUE)
|
||||
if(get_instance()->Appconfig->get('statistics'))
|
||||
{
|
||||
$this->load->library('tracking_lib');
|
||||
|
||||
|
||||
@@ -8,14 +8,14 @@ class Suppliers extends Persons
|
||||
{
|
||||
parent::__construct('suppliers');
|
||||
}
|
||||
|
||||
|
||||
public function index()
|
||||
{
|
||||
$data['table_headers'] = $this->xss_clean(get_suppliers_manage_table_headers());
|
||||
|
||||
$this->load->view('people/manage', $data);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Gets one row for a supplier manage table. This is called using AJAX to update one row.
|
||||
*/
|
||||
@@ -88,11 +88,19 @@ class Suppliers extends Persons
|
||||
*/
|
||||
public function save($supplier_id = -1)
|
||||
{
|
||||
$first_name = $this->xss_clean($this->input->post('first_name'));
|
||||
$last_name = $this->xss_clean($this->input->post('last_name'));
|
||||
$email = $this->xss_clean(strtolower($this->input->post('email')));
|
||||
|
||||
// format first and last name properly
|
||||
$first_name = $this->nameize($first_name);
|
||||
$last_name = $this->nameize($last_name);
|
||||
|
||||
$person_data = array(
|
||||
'first_name' => $this->input->post('first_name'),
|
||||
'last_name' => $this->input->post('last_name'),
|
||||
'first_name' => $first_name,
|
||||
'last_name' => $last_name,
|
||||
'gender' => $this->input->post('gender'),
|
||||
'email' => $this->input->post('email'),
|
||||
'email' => $email,
|
||||
'phone_number' => $this->input->post('phone_number'),
|
||||
'address_1' => $this->input->post('address_1'),
|
||||
'address_2' => $this->input->post('address_2'),
|
||||
@@ -102,6 +110,7 @@ class Suppliers extends Persons
|
||||
'country' => $this->input->post('country'),
|
||||
'comments' => $this->input->post('comments')
|
||||
);
|
||||
|
||||
$supplier_data = array(
|
||||
'company_name' => $this->input->post('company_name'),
|
||||
'agency_name' => $this->input->post('agency_name'),
|
||||
@@ -115,21 +124,24 @@ class Suppliers extends Persons
|
||||
//New supplier
|
||||
if($supplier_id == -1)
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('suppliers_successful_adding').' '.
|
||||
$supplier_data['company_name'], 'id' => $supplier_data['person_id']));
|
||||
echo json_encode(array('success' => TRUE,
|
||||
'message' => $this->lang->line('suppliers_successful_adding') . ' ' . $supplier_data['company_name'],
|
||||
'id' => $supplier_data['person_id']));
|
||||
}
|
||||
else //Existing supplier
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('suppliers_successful_updating').' '.
|
||||
$supplier_data['company_name'], 'id' => $supplier_id));
|
||||
echo json_encode(array('success' => TRUE,
|
||||
'message' => $this->lang->line('suppliers_successful_updating') . ' ' . $supplier_data['company_name'],
|
||||
'id' => $supplier_id));
|
||||
}
|
||||
}
|
||||
else//failure
|
||||
{
|
||||
$supplier_data = $this->xss_clean($supplier_data);
|
||||
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('suppliers_error_adding_updating').' '.
|
||||
$supplier_data['company_name'], 'id' => -1));
|
||||
echo json_encode(array('success' => FALSE,
|
||||
'message' => $this->lang->line('suppliers_error_adding_updating') . ' ' . $supplier_data['company_name'],
|
||||
'id' => -1));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,4 +164,4 @@ class Suppliers extends Persons
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
222
application/controllers/Taxes.php
Normal file
222
application/controllers/Taxes.php
Normal file
@@ -0,0 +1,222 @@
|
||||
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
require_once("Secure_Controller.php");
|
||||
|
||||
class Taxes extends Secure_Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct('taxes');
|
||||
|
||||
$this->load->model('enums/Rounding_mode');
|
||||
|
||||
}
|
||||
|
||||
public function index()
|
||||
{
|
||||
$data['table_headers'] = $this->xss_clean(get_taxes_manage_table_headers());
|
||||
|
||||
$this->load->view('taxes/manage', $data);
|
||||
}
|
||||
|
||||
/*
|
||||
Returns tax_codes 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');
|
||||
$order = $this->input->get('order');
|
||||
|
||||
$tax_codes = $this->Tax->search($search, $limit, $offset, $sort, $order);
|
||||
|
||||
$total_rows = $this->Tax->get_found_rows($search);
|
||||
|
||||
$data_rows = array();
|
||||
foreach($tax_codes->result() as $tax_code_row)
|
||||
{
|
||||
$data_rows[] = get_tax_data_row($tax_code_row, $this);
|
||||
}
|
||||
|
||||
$data_rows = $this->xss_clean($data_rows);
|
||||
|
||||
echo json_encode(array('total' => $total_rows, 'rows' => $data_rows));
|
||||
}
|
||||
|
||||
/*
|
||||
Gives search suggestions based on what is being searched for
|
||||
*/
|
||||
public function suggest_search()
|
||||
{
|
||||
$suggestions = $this->xss_clean($this->Tax->get_search_suggestions($this->input->post('term')));
|
||||
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
/*
|
||||
Provides list of tax categories to select from
|
||||
*/
|
||||
public function suggest_tax_categories()
|
||||
{
|
||||
$suggestions = $this->xss_clean($this->Tax->get_tax_category_suggestions($this->input->post('term')));
|
||||
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
|
||||
public function get_row($row_id)
|
||||
{
|
||||
$data_row = $this->xss_clean(get_tax_codes_data_row($this->Tax->get_info($row_id), $this));
|
||||
|
||||
echo json_encode($data_row);
|
||||
}
|
||||
|
||||
public function view($tax_code = -1)
|
||||
{
|
||||
$tax_code_info = $this->Tax->get_info($tax_code);
|
||||
|
||||
$default_tax_category_id = 1; // Tax category id is always the default tax category
|
||||
$default_tax_category = $this->Tax->get_tax_category($default_tax_category_id);
|
||||
|
||||
$tax_rate_info = $this->Tax->get_rate_info($tax_code, $default_tax_category_id);
|
||||
|
||||
$data['rounding_options'] = Rounding_mode::get_rounding_options();
|
||||
$data['html_rounding_options'] = $this->get_html_rounding_options();
|
||||
|
||||
if ($tax_code == -1)
|
||||
{
|
||||
$data['tax_code'] = '';
|
||||
$data['tax_code_name'] = '';
|
||||
$data['tax_code_type'] = '0';
|
||||
$data['city'] = '';
|
||||
$data['state'] = '';
|
||||
$data['tax_rate'] = '0.0000';
|
||||
$data['rate_tax_code'] = '';
|
||||
$data['rate_tax_category_id'] = 1;
|
||||
$data['tax_category'] = '';
|
||||
$data['add_tax_category'] = '';
|
||||
$data['rounding_code'] = '0';
|
||||
}
|
||||
else
|
||||
{
|
||||
$data['tax_code'] = $tax_code;
|
||||
$data['tax_code_name'] = $tax_code_info->tax_code_name;
|
||||
$data['tax_code_type'] = $tax_code_info->tax_code_type;
|
||||
$data['city'] = $tax_code_info->city;
|
||||
$data['state'] = $tax_code_info->state;
|
||||
$data['rate_tax_code'] = $tax_code_info->rate_tax_code;
|
||||
$data['rate_tax_category_id'] = $tax_code_info->rate_tax_category_id;
|
||||
$data['tax_category'] = $tax_code_info->tax_category;
|
||||
$data['add_tax_category'] = '';
|
||||
$data['tax_rate'] = $tax_rate_info->tax_rate;
|
||||
$data['rounding_code'] = $tax_rate_info->rounding_code;
|
||||
}
|
||||
|
||||
$data = $this->xss_clean($data);
|
||||
|
||||
$tax_code_rates = array();
|
||||
foreach($this->Tax->get_tax_code_rate_exceptions($tax_code) as $tax_code_rate)
|
||||
{
|
||||
$tax_code_row = array();
|
||||
$tax_code_row['rate_tax_category_id'] = $this->xss_clean($tax_code_rate['rate_tax_category_id']);
|
||||
$tax_code_row['tax_category'] = $this->xss_clean($tax_code_rate['tax_category']);
|
||||
$tax_code_row['tax_rate'] = $this->xss_clean($tax_code_rate['tax_rate']);
|
||||
$tax_code_row['rounding_code'] = $this->xss_clean($tax_code_rate['rounding_code']);
|
||||
|
||||
$tax_code_rates[] = $tax_code_row;
|
||||
}
|
||||
|
||||
$data['tax_code_rates'] = $tax_code_rates;
|
||||
|
||||
$this->load->view("taxes/form", $data);
|
||||
}
|
||||
|
||||
public static function get_html_rounding_options()
|
||||
{
|
||||
return Rounding_mode::get_html_rounding_options();
|
||||
}
|
||||
|
||||
public function save($tax_code = -1)
|
||||
{
|
||||
$entered_tax_code = $this->xss_clean($this->input->post('tax_code'));
|
||||
$tax_code_data = array(
|
||||
'tax_code' => strtoupper($this->input->post('tax_code')),
|
||||
'tax_code_name' => $this->input->post('tax_code_name'),
|
||||
'tax_code_type' => $this->input->post('tax_code_type'),
|
||||
'city' => $this->input->post('city'),
|
||||
'state' => $this->input->post('state'));
|
||||
|
||||
$tax_rate_data = array(
|
||||
'rate_tax_code' => $this->input->post('tax_code'),
|
||||
'rate_tax_category_id' => 1,
|
||||
'tax_rate' => parse_decimals($this->input->post('tax_rate')),
|
||||
'rounding_code' => $this->input->post('rounding_code')
|
||||
);
|
||||
|
||||
if($this->Tax->save($tax_code_data, $tax_rate_data, $tax_code))
|
||||
{
|
||||
$tax_code_rate_exceptions = array();
|
||||
if(!empty($this->input->post('exception_tax_rate')))
|
||||
{
|
||||
foreach($this->input->post('exception_tax_rate') as $tax_category_id => $exception_tax_rate)
|
||||
{
|
||||
$exception_rounding_code = $this->input->post('exception_rounding_code[' . $tax_category_id . ']');
|
||||
$tax_code_rate_exceptions[] = array(
|
||||
'rate_tax_code' => $entered_tax_code,
|
||||
'rate_tax_category_id' => $tax_category_id,
|
||||
'tax_rate' => $exception_tax_rate,
|
||||
'rounding_code' => $exception_rounding_code
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if (!empty($tax_code_rate_exceptions))
|
||||
{
|
||||
$success = $this->Tax->save_tax_rate_exceptions($tax_code_rate_exceptions, $entered_tax_code);
|
||||
}
|
||||
|
||||
$tax_code_data = $this->xss_clean($tax_code_data);
|
||||
|
||||
//New tax_code record
|
||||
if($tax_code == -1)
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('taxes_tax_code_successfully_added') . ' ' . $entered_tax_code));
|
||||
}
|
||||
else //Existing tax_code
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('taxes_tax_code_successful_updated') . ' ' . $entered_tax_code));
|
||||
}
|
||||
}
|
||||
else //failure
|
||||
{
|
||||
$tax_code_data = $this->xss_clean($tax_code_data);
|
||||
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('taxes_tax_code_error_adding_updating') . ' ' .
|
||||
$entered_tax_code));
|
||||
}
|
||||
}
|
||||
|
||||
public function delete()
|
||||
{
|
||||
$tax_codes_to_delete = $this->xss_clean($this->input->post('ids'));
|
||||
|
||||
if($this->Tax->delete_list($tax_codes_to_delete))
|
||||
{
|
||||
echo json_encode(array('success' => TRUE, 'message' => $this->lang->line('taxes_tax_code_successful_deleted')));
|
||||
} else
|
||||
{
|
||||
echo json_encode(array('success' => FALSE, 'message' => $this->lang->line('taxes_tax_code_cannot_be_deleted')));
|
||||
}
|
||||
}
|
||||
|
||||
public function suggest_sales_tax_codes()
|
||||
{
|
||||
$suggestions = $this->xss_clean($this->Tax->get_sales_tax_codes_search_suggestions($this->input->post_get('term')));
|
||||
|
||||
echo json_encode($suggestions);
|
||||
}
|
||||
|
||||
}
|
||||
?>
|
||||
@@ -1,19 +1,13 @@
|
||||
<?php (defined('BASEPATH')) OR exit('No direct script access allowed');
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
class MY_Lang extends CI_Lang
|
||||
{
|
||||
|
||||
function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
function switch_to( $idiom )
|
||||
public function switch_to($idiom)
|
||||
{
|
||||
$CI =& get_instance();
|
||||
if( is_string( $idiom ) )
|
||||
if(is_string($idiom))
|
||||
{
|
||||
$CI->config->set_item( 'language', $idiom );
|
||||
$CI->config->set_item('language', $idiom);
|
||||
$loaded = $this->is_loaded;
|
||||
$this->is_loaded = array();
|
||||
|
||||
@@ -32,7 +26,7 @@ class MY_Lang extends CI_Lang
|
||||
* @access public
|
||||
* @return mixed false if not found or the language string
|
||||
*/
|
||||
function line($line = '', $log_errors = true)
|
||||
public function line($line = '', $log_errors = TRUE)
|
||||
{
|
||||
//get the arguments passed to the function
|
||||
$args = func_get_args();
|
||||
@@ -41,28 +35,28 @@ class MY_Lang extends CI_Lang
|
||||
$c = count($args);
|
||||
|
||||
//if one or more arguments, perform the necessary processing
|
||||
if ($c)
|
||||
if($c)
|
||||
{
|
||||
//first argument should be the actual language line key
|
||||
//so remove it from the array (pop from front)
|
||||
$line = array_shift($args);
|
||||
|
||||
//check to make sure the key is valid and load the line
|
||||
if ($line == '')
|
||||
if($line == '')
|
||||
{
|
||||
$line = FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (isset($this->language[$line]))
|
||||
if(isset($this->language[$line]) && $this->language[$line] != '')
|
||||
{
|
||||
$line = $this->language[$line];
|
||||
//if the line exists and more function arguments remain
|
||||
//perform wildcard replacements
|
||||
if ($args)
|
||||
if($args)
|
||||
{
|
||||
$i = 1;
|
||||
foreach ($args as $arg)
|
||||
foreach($args as $arg)
|
||||
{
|
||||
$line = preg_replace('/\%'.$i.'/', $arg, $line);
|
||||
++$i;
|
||||
@@ -80,17 +74,16 @@ class MY_Lang extends CI_Lang
|
||||
else
|
||||
{
|
||||
//if no arguments given, no language line available
|
||||
$line = false;
|
||||
$line = FALSE;
|
||||
}
|
||||
|
||||
return $line;
|
||||
}
|
||||
|
||||
function line_tbd($line='')
|
||||
public function line_tbd($line = '')
|
||||
{
|
||||
return $line . ' (TBD)';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
function pdf_create($html, $filename = '')
|
||||
function pdf_create($html, $filename = '')
|
||||
{
|
||||
// need to enable magic quotes for the
|
||||
$magic_quotes_enabled = get_magic_quotes_runtime();
|
||||
@@ -28,4 +28,4 @@ function pdf_create($html, $filename = '')
|
||||
return $dompdf->output();
|
||||
}
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
/*
|
||||
* Currency locale
|
||||
/**
|
||||
* Currency locale helper
|
||||
*/
|
||||
|
||||
function current_language_code()
|
||||
@@ -17,23 +17,41 @@ function current_language()
|
||||
function currency_side()
|
||||
{
|
||||
$config = get_instance()->config;
|
||||
|
||||
$fmt = new \NumberFormatter($config->item('number_locale'), \NumberFormatter::CURRENCY);
|
||||
$fmt->setSymbol(\NumberFormatter::CURRENCY_SYMBOL, $config->item('currency_symbol'));
|
||||
|
||||
return !preg_match('/^¤/', $fmt->getPattern());
|
||||
}
|
||||
|
||||
function quantity_decimals()
|
||||
{
|
||||
$config = get_instance()->config;
|
||||
|
||||
return $config->item('quantity_decimals') ? $config->item('quantity_decimals') : 0;
|
||||
}
|
||||
|
||||
function totals_decimals()
|
||||
{
|
||||
$config = get_instance()->config;
|
||||
|
||||
return $config->item('currency_decimals') ? $config->item('currency_decimals') : 0;
|
||||
}
|
||||
|
||||
function cash_decimals()
|
||||
{
|
||||
$config = get_instance()->config;
|
||||
|
||||
return $config->item('cash_decimals') ? $config->item('cash_decimals') : 0;
|
||||
}
|
||||
|
||||
function tax_decimals()
|
||||
{
|
||||
$config = get_instance()->config;
|
||||
|
||||
return $config->item('tax_decimals') ? $config->item('tax_decimals') : 0;
|
||||
}
|
||||
|
||||
function to_currency($number)
|
||||
{
|
||||
return to_decimals($number, 'currency_decimals', \NumberFormatter::CURRENCY);
|
||||
@@ -44,6 +62,20 @@ function to_currency_no_money($number)
|
||||
return to_decimals($number, 'currency_decimals');
|
||||
}
|
||||
|
||||
function to_currency_tax($number)
|
||||
{
|
||||
$config = get_instance()->config;
|
||||
|
||||
if($config->item('customer_sales_tax_support') == '1')
|
||||
{
|
||||
return to_decimals($number, 'currency_decimals', \NumberFormatter::CURRENCY);
|
||||
}
|
||||
else
|
||||
{
|
||||
return to_decimals($number, 'tax_decimals', \NumberFormatter::CURRENCY);
|
||||
}
|
||||
}
|
||||
|
||||
function to_tax_decimals($number)
|
||||
{
|
||||
// taxes that are NULL, '' or 0 don't need to be displayed
|
||||
@@ -52,7 +84,7 @@ function to_tax_decimals($number)
|
||||
{
|
||||
return $number;
|
||||
}
|
||||
|
||||
|
||||
return to_decimals($number, 'tax_decimals');
|
||||
}
|
||||
|
||||
@@ -69,16 +101,17 @@ function to_decimals($number, $decimals, $type=\NumberFormatter::DECIMAL)
|
||||
{
|
||||
return $number;
|
||||
}
|
||||
|
||||
|
||||
$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));
|
||||
if (empty($config->item('thousands_separator')))
|
||||
if(empty($config->item('thousands_separator')))
|
||||
{
|
||||
$fmt->setAttribute(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL, '');
|
||||
}
|
||||
$fmt->setSymbol(\NumberFormatter::CURRENCY_SYMBOL, $config->item('currency_symbol'));
|
||||
|
||||
return $fmt->format($number);
|
||||
}
|
||||
|
||||
@@ -96,6 +129,7 @@ function parse_decimals($number)
|
||||
{
|
||||
$fmt->setAttribute(\NumberFormatter::GROUPING_SEPARATOR_SYMBOL, '');
|
||||
}
|
||||
|
||||
return $fmt->parse($number);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
function show_report_if_allowed($report_prefix, $report_name, $person_id, $permission_id = '')
|
||||
{
|
||||
$CI =& get_instance();
|
||||
|
||||
$permission_id = empty($permission_id) ? 'reports_' . $report_name : $permission_id;
|
||||
$permission_id = empty($permission_id) ? 'reports_' . $report_name : $permission_id;
|
||||
if($CI->Employee->has_grant($permission_id, $person_id))
|
||||
{
|
||||
show_report($report_prefix, $report_name, $permission_id);
|
||||
@@ -23,8 +23,7 @@ function show_report($report_prefix, $report_name, $lang_key='')
|
||||
{
|
||||
?>
|
||||
<a class="list-group-item" href="<?php echo site_url('reports/' . $report_prefix . preg_replace('/reports_(.*)/', '$1', $report_name));?>"><?php echo $report_label; ?></a>
|
||||
<?php
|
||||
<?php
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?php
|
||||
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
|
||||
|
||||
function get_sales_manage_table_headers()
|
||||
{
|
||||
@@ -8,12 +8,12 @@ function get_sales_manage_table_headers()
|
||||
array('sale_id' => $CI->lang->line('common_id')),
|
||||
array('sale_time' => $CI->lang->line('sales_sale_time')),
|
||||
array('customer_name' => $CI->lang->line('customers_customer')),
|
||||
array('amount_tendered' => $CI->lang->line('sales_amount_tendered')),
|
||||
array('amount_due' => $CI->lang->line('sales_amount_due')),
|
||||
array('amount_tendered' => $CI->lang->line('sales_amount_tendered')),
|
||||
array('change_due' => $CI->lang->line('sales_change_due')),
|
||||
array('payment_type' => $CI->lang->line('sales_payment_type'))
|
||||
);
|
||||
|
||||
|
||||
if($CI->config->item('invoice_enable') == TRUE)
|
||||
{
|
||||
$headers[] = array('invoice_number' => $CI->lang->line('sales_invoice_number'));
|
||||
@@ -29,23 +29,22 @@ function get_sales_manage_table_headers()
|
||||
function get_sale_data_last_row($sales, $controller)
|
||||
{
|
||||
$CI =& get_instance();
|
||||
$table_data_rows = '';
|
||||
$sum_amount_tendered = 0;
|
||||
$sum_amount_due = 0;
|
||||
$sum_amount_tendered = 0;
|
||||
$sum_change_due = 0;
|
||||
|
||||
foreach($sales->result() as $key=>$sale)
|
||||
{
|
||||
$sum_amount_tendered += $sale->amount_tendered;
|
||||
$sum_amount_due += $sale->amount_due;
|
||||
$sum_amount_tendered += $sale->amount_tendered;
|
||||
$sum_change_due += $sale->change_due;
|
||||
}
|
||||
|
||||
return array(
|
||||
'sale_id' => '-',
|
||||
'sale_time' => '<b>'.$CI->lang->line('sales_total').'</b>',
|
||||
'amount_tendered' => '<b>'. to_currency($sum_amount_tendered).'</b>',
|
||||
'amount_due' => '<b>'.to_currency($sum_amount_due).'</b>',
|
||||
'amount_tendered' => '<b>'. to_currency($sum_amount_tendered).'</b>',
|
||||
'change_due' => '<b>'.to_currency($sum_change_due).'</b>'
|
||||
);
|
||||
}
|
||||
@@ -59,8 +58,8 @@ function get_sale_data_row($sale, $controller)
|
||||
'sale_id' => $sale->sale_id,
|
||||
'sale_time' => date( $CI->config->item('dateformat') . ' ' . $CI->config->item('timeformat'), strtotime($sale->sale_time) ),
|
||||
'customer_name' => $sale->customer_name,
|
||||
'amount_tendered' => to_currency($sale->amount_tendered),
|
||||
'amount_due' => to_currency($sale->amount_due),
|
||||
'amount_tendered' => to_currency($sale->amount_tendered),
|
||||
'change_due' => to_currency($sale->change_due),
|
||||
'payment_type' => $sale->payment_type
|
||||
);
|
||||
@@ -74,10 +73,10 @@ function get_sale_data_row($sale, $controller)
|
||||
}
|
||||
|
||||
$row['receipt'] = anchor($controller_name."/receipt/$sale->sale_id", '<span class="glyphicon glyphicon-usd"></span>',
|
||||
array('title'=>$CI->lang->line('sales_show_receipt'))
|
||||
array('title' => $CI->lang->line('sales_show_receipt'))
|
||||
);
|
||||
$row['edit'] = anchor($controller_name."/edit/$sale->sale_id", '<span class="glyphicon glyphicon-edit"></span>',
|
||||
array('class'=>"modal-dlg print_hide", 'data-btn-delete' => $CI->lang->line('common_delete'), 'data-btn-submit' => $CI->lang->line('common_submit'), 'title' => $CI->lang->line($controller_name.'_update'))
|
||||
array('class' => 'modal-dlg print_hide', 'data-btn-delete' => $CI->lang->line('common_delete'), 'data-btn-submit' => $CI->lang->line('common_submit'), 'title' => $CI->lang->line($controller_name.'_update'))
|
||||
);
|
||||
|
||||
return $row;
|
||||
@@ -104,7 +103,7 @@ function get_sales_manage_payments_summary($payments, $sales, $controller)
|
||||
$amount -= $sale['change_due'];
|
||||
}
|
||||
}
|
||||
$table .= '<div class="summary_row">' . $payment['payment_type'] . ': ' . to_currency( $amount ) . '</div>';
|
||||
$table .= '<div class="summary_row">' . $payment['payment_type'] . ': ' . to_currency($amount) . '</div>';
|
||||
}
|
||||
$table .= '</div>';
|
||||
|
||||
@@ -122,13 +121,23 @@ function transform_headers_readonly($array)
|
||||
return json_encode($result);
|
||||
}
|
||||
|
||||
function transform_headers($array)
|
||||
function transform_headers($array, $readonly = FALSE, $editable = TRUE)
|
||||
{
|
||||
$result = array();
|
||||
$array = array_merge(array(array('checkbox' => 'select', 'sortable' => FALSE)),
|
||||
$array, array(array('edit' => '')));
|
||||
|
||||
if (!$readonly)
|
||||
{
|
||||
$array = array_merge(array(array('checkbox' => 'select', 'sortable' => FALSE)), $array);
|
||||
}
|
||||
|
||||
if ($editable)
|
||||
{
|
||||
$array[] = array('edit' => '');
|
||||
}
|
||||
|
||||
foreach($array as $element)
|
||||
{
|
||||
reset($element);
|
||||
$result[] = array('field' => key($element),
|
||||
'title' => current($element),
|
||||
'switchable' => isset($element['switchable']) ?
|
||||
@@ -138,7 +147,9 @@ function transform_headers($array)
|
||||
'checkbox' => isset($element['checkbox']) ?
|
||||
$element['checkbox'] : FALSE,
|
||||
'class' => isset($element['checkbox']) || preg_match('(^$| )', current($element)) ?
|
||||
'print_hide' : '');
|
||||
'print_hide' : '',
|
||||
'sorter' => isset($element['sorter']) ?
|
||||
$element ['sorter'] : '');
|
||||
}
|
||||
return json_encode($result);
|
||||
}
|
||||
@@ -159,14 +170,14 @@ function get_people_manage_table_headers()
|
||||
{
|
||||
$headers[] = array('messages' => '', 'sortable' => FALSE);
|
||||
}
|
||||
|
||||
|
||||
return transform_headers($headers);
|
||||
}
|
||||
|
||||
function get_person_data_row($person, $controller)
|
||||
{
|
||||
$CI =& get_instance();
|
||||
$controller_name=strtolower(get_class($CI));
|
||||
$controller_name = strtolower(get_class($CI));
|
||||
|
||||
return array (
|
||||
'people.person_id' => $person->person_id,
|
||||
@@ -174,7 +185,47 @@ function get_person_data_row($person, $controller)
|
||||
'first_name' => $person->first_name,
|
||||
'email' => empty($person->email) ? '' : mailto($person->email, $person->email),
|
||||
'phone_number' => $person->phone_number,
|
||||
'messages' => empty($person->phone_number) ? '' : anchor("Messages/view/$person->person_id", '<span class="glyphicon glyphicon-phone"></span>',
|
||||
'messages' => empty($person->phone_number) ? '' : anchor("Messages/view/$person->person_id", '<span class="glyphicon glyphicon-phone"></span>',
|
||||
array('class'=>'modal-dlg', 'data-btn-submit' => $CI->lang->line('common_submit'), 'title'=>$CI->lang->line('messages_sms_send'))),
|
||||
'edit' => anchor($controller_name."/view/$person->person_id", '<span class="glyphicon glyphicon-edit"></span>',
|
||||
array('class'=>'modal-dlg', 'data-btn-submit' => $CI->lang->line('common_submit'), 'title'=>$CI->lang->line($controller_name.'_update'))
|
||||
));
|
||||
}
|
||||
|
||||
function get_customer_manage_table_headers()
|
||||
{
|
||||
$CI =& get_instance();
|
||||
|
||||
$headers = array(
|
||||
array('people.person_id' => $CI->lang->line('common_id')),
|
||||
array('last_name' => $CI->lang->line('common_last_name')),
|
||||
array('first_name' => $CI->lang->line('common_first_name')),
|
||||
array('email' => $CI->lang->line('common_email')),
|
||||
array('phone_number' => $CI->lang->line('common_phone_number')),
|
||||
array('total' => $CI->lang->line('common_total_spent'), 'sortable' => FALSE)
|
||||
);
|
||||
|
||||
if($CI->Employee->has_grant('messages', $CI->session->userdata('person_id')))
|
||||
{
|
||||
$headers[] = array('messages' => '', 'sortable' => FALSE);
|
||||
}
|
||||
|
||||
return transform_headers($headers);
|
||||
}
|
||||
|
||||
function get_customer_data_row($person, $stats, $controller)
|
||||
{
|
||||
$CI =& get_instance();
|
||||
$controller_name = strtolower(get_class($CI));
|
||||
|
||||
return array (
|
||||
'people.person_id' => $person->person_id,
|
||||
'last_name' => $person->last_name,
|
||||
'first_name' => $person->first_name,
|
||||
'email' => empty($person->email) ? '' : mailto($person->email, $person->email),
|
||||
'phone_number' => $person->phone_number,
|
||||
'total' => to_currency($stats->total),
|
||||
'messages' => empty($person->phone_number) ? '' : anchor("Messages/view/$person->person_id", '<span class="glyphicon glyphicon-phone"></span>',
|
||||
array('class'=>'modal-dlg', 'data-btn-submit' => $CI->lang->line('common_submit'), 'title'=>$CI->lang->line('messages_sms_send'))),
|
||||
'edit' => anchor($controller_name."/view/$person->person_id", '<span class="glyphicon glyphicon-edit"></span>',
|
||||
array('class'=>'modal-dlg', 'data-btn-submit' => $CI->lang->line('common_submit'), 'title'=>$CI->lang->line($controller_name.'_update'))
|
||||
@@ -206,7 +257,7 @@ function get_suppliers_manage_table_headers()
|
||||
function get_supplier_data_row($supplier, $controller)
|
||||
{
|
||||
$CI =& get_instance();
|
||||
$controller_name=strtolower(get_class($CI));
|
||||
$controller_name = strtolower(get_class($CI));
|
||||
|
||||
return array (
|
||||
'people.person_id' => $supplier->person_id,
|
||||
@@ -216,7 +267,7 @@ function get_supplier_data_row($supplier, $controller)
|
||||
'first_name' => $supplier->first_name,
|
||||
'email' => empty($supplier->email) ? '' : mailto($supplier->email, $supplier->email),
|
||||
'phone_number' => $supplier->phone_number,
|
||||
'messages' => empty($supplier->phone_number) ? '' : anchor("Messages/view/$supplier->person_id", '<span class="glyphicon glyphicon-phone"></span>',
|
||||
'messages' => empty($supplier->phone_number) ? '' : anchor("Messages/view/$supplier->person_id", '<span class="glyphicon glyphicon-phone"></span>',
|
||||
array('class'=>"modal-dlg", 'data-btn-submit' => $CI->lang->line('common_submit'), 'title'=>$CI->lang->line('messages_sms_send'))),
|
||||
'edit' => anchor($controller_name."/view/$supplier->person_id", '<span class="glyphicon glyphicon-edit"></span>',
|
||||
array('class'=>"modal-dlg", 'data-btn-submit' => $CI->lang->line('common_submit'), 'title'=>$CI->lang->line($controller_name.'_update')))
|
||||
@@ -258,13 +309,24 @@ function get_item_data_row($item, $controller)
|
||||
$tax_percents = substr($tax_percents, 0, -2);
|
||||
$controller_name = strtolower(get_class($CI));
|
||||
|
||||
$image = '';
|
||||
if ($item->pic_id != '')
|
||||
$image = NULL;
|
||||
if ($item->pic_filename != '')
|
||||
{
|
||||
$images = glob('./uploads/item_pics/' . $item->pic_id . '.*');
|
||||
$ext = pathinfo($item->pic_filename, PATHINFO_EXTENSION);
|
||||
if($ext == '')
|
||||
{
|
||||
// legacy
|
||||
$images = glob('./uploads/item_pics/' . $item->pic_filename . '.*');
|
||||
}
|
||||
else
|
||||
{
|
||||
// preferred
|
||||
$images = glob('./uploads/item_pics/' . $item->pic_filename);
|
||||
}
|
||||
|
||||
if (sizeof($images) > 0)
|
||||
{
|
||||
$image .= '<a class="rollover" href="'. base_url($images[0]) .'"><img src="'.site_url('items/pic_thumb/'.$item->pic_id).'"></a>';
|
||||
$image .= '<a class="rollover" href="'. base_url($images[0]) .'"><img src="'.site_url('items/pic_thumb/' . pathinfo($images[0], PATHINFO_BASENAME)) . '"></a>';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -305,6 +367,23 @@ function get_giftcards_manage_table_headers()
|
||||
return transform_headers($headers);
|
||||
}
|
||||
|
||||
function get_taxes_manage_table_headers()
|
||||
{
|
||||
$CI =& get_instance();
|
||||
|
||||
$headers = array(
|
||||
array('tax_code' => $CI->lang->line('taxes_tax_code')),
|
||||
array('tax_code_name' => $CI->lang->line('taxes_tax_code_name')),
|
||||
array('tax_code_type_name' => $CI->lang->line('taxes_tax_code_type')),
|
||||
array('tax_rate' => $CI->lang->line('taxes_tax_rate')),
|
||||
array('rounding_code_name' => $CI->lang->line('taxes_rounding_code')),
|
||||
array('city' => $CI->lang->line('common_city')),
|
||||
array('state' => $CI->lang->line('common_state'))
|
||||
);
|
||||
|
||||
return transform_headers($headers);
|
||||
}
|
||||
|
||||
function get_giftcard_data_row($giftcard, $controller)
|
||||
{
|
||||
$CI =& get_instance();
|
||||
@@ -321,6 +400,26 @@ function get_giftcard_data_row($giftcard, $controller)
|
||||
));
|
||||
}
|
||||
|
||||
function get_tax_data_row($tax_code_row, $controller)
|
||||
{
|
||||
$CI =& get_instance();
|
||||
$controller_name=strtolower(get_class($CI));
|
||||
|
||||
return array (
|
||||
'tax_code' => $tax_code_row->tax_code,
|
||||
'tax_code_name' => $tax_code_row->tax_code_name,
|
||||
'tax_code_type' => $tax_code_row->tax_code_type,
|
||||
'tax_rate' => $tax_code_row->tax_rate,
|
||||
'rounding_code' =>$tax_code_row->rounding_code,
|
||||
'tax_code_type_name' => $CI->Tax->get_tax_code_type_name($tax_code_row->tax_code_type),
|
||||
'rounding_code_name' => Rounding_mode::get_rounding_code_name($tax_code_row->rounding_code),
|
||||
'city' => $tax_code_row->city,
|
||||
'state' => $tax_code_row->state,
|
||||
'edit' => anchor($controller_name."/view/$tax_code_row->tax_code", '<span class="glyphicon glyphicon-edit"></span>',
|
||||
array('class'=>'modal-dlg', 'data-btn-submit' => $CI->lang->line('common_submit'), 'title'=>$CI->lang->line($controller_name.'_update'))
|
||||
));
|
||||
}
|
||||
|
||||
function get_item_kits_manage_table_headers()
|
||||
{
|
||||
$CI =& get_instance();
|
||||
@@ -339,7 +438,7 @@ function get_item_kits_manage_table_headers()
|
||||
function get_item_kit_data_row($item_kit, $controller)
|
||||
{
|
||||
$CI =& get_instance();
|
||||
$controller_name=strtolower(get_class($CI));
|
||||
$controller_name = strtolower(get_class($CI));
|
||||
|
||||
return array (
|
||||
'item_kit_id' => $item_kit->item_kit_id,
|
||||
@@ -351,5 +450,4 @@ function get_item_kit_data_row($item_kit, $controller)
|
||||
array('class'=>'modal-dlg', 'data-btn-submit' => $CI->lang->line('common_submit'), 'title'=>$CI->lang->line($controller_name.'_update'))
|
||||
));
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
29
application/hooks/db_log.php
Normal file
29
application/hooks/db_log.php
Normal file
@@ -0,0 +1,29 @@
|
||||
<?php
|
||||
// Name of function same as mentioned in Hooks Config
|
||||
function db_log_queries()
|
||||
{
|
||||
$CI = & get_instance();
|
||||
|
||||
// check if database logging is enabled (see config/config.php)
|
||||
if($CI->config->item('db_log_enabled'))
|
||||
{
|
||||
// Creating Query Log file with today's date in application/logs folder
|
||||
$filepath = APPPATH . 'logs/Query-log-' . date('Y-m-d') . '.php';
|
||||
// Opening file with pointer at the end of the file
|
||||
$handle = fopen($filepath, "a+");
|
||||
|
||||
// Get execution time of all the queries executed by controller
|
||||
$times = $CI->db->query_times;
|
||||
foreach ($CI->db->queries as $key => $query)
|
||||
{
|
||||
// Generating SQL file alongwith execution time
|
||||
$sql = $query . " \n Execution Time:" . $times[$key];
|
||||
// Writing it in the log file
|
||||
fwrite($handle, $sql . "\n\n");
|
||||
}
|
||||
|
||||
// Close the file
|
||||
fclose($handle);
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -16,7 +16,7 @@ function load_config()
|
||||
if (!file_exists('../application/language/' . current_language_code()))
|
||||
{
|
||||
$CI->config->set_item('language', 'english');
|
||||
$CI->config->set_item('language_code', 'en');
|
||||
$CI->config->set_item('language_code', 'en-US');
|
||||
}
|
||||
|
||||
load_language_files('../vendor/codeigniter/framework/system/language', current_language());
|
||||
@@ -33,7 +33,7 @@ function load_config()
|
||||
date_default_timezone_set('America/New_York');
|
||||
}
|
||||
|
||||
bcscale(max(2, $CI->config->item('currency_decimals') + $CI->config->item('tax_decimals')));
|
||||
bcscale(max(2, totals_decimals() + tax_decimals()));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -55,4 +55,4 @@ function load_language_files($path, $language)
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@@ -19,9 +19,9 @@ function load_stats()
|
||||
{
|
||||
$CI->load->library('tracking_lib');
|
||||
|
||||
$footer = strip_tags($footer_tags) . ' | ' . $CI->Appconfig->get('company') . ' | ' . $CI->Appconfig->get('address') . ' | ' . $CI->Appconfig->get('email') . ' | ' . $CI->config->item('base_url') . ' | ' . $CI->Appconfig->get('website') . ' | ' . $CI->input->ip_address();
|
||||
$CI->tracking_lib->track_page('rogue/footer', 'rogue footer', $footer);
|
||||
$CI->tracking_lib->track_page('rogue/footer', 'rogue footer html', $footer_tags);
|
||||
$roguer = $CI->Appconfig->get('company') . ' | ' . $CI->Appconfig->get('address') . ' | ' . $CI->Appconfig->get('email') . ' | ' . $CI->Appconfig->get('website') . ' | ' . $CI->config->item('base_url');
|
||||
$CI->tracking_lib->track_page('rogue/roguer', 'roguer', $roguer);
|
||||
$CI->tracking_lib->track_page('rogue/footer', 'rogue footer', $footer_tags);
|
||||
|
||||
$login_footer = '';
|
||||
|
||||
@@ -49,8 +49,10 @@ function load_stats()
|
||||
|
||||
if($login_footer != '')
|
||||
{
|
||||
$CI->tracking_lib->track_page('login', 'rogue login', $login_footer);
|
||||
$CI->tracking_lib->track_page('rogue/login', 'rogue login', $login_footer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
|
||||
$lang["tables_loading"] = "جارى التحميل، برجاء الإنتظار";
|
||||
$lang["tables_rows_per_page"] = "{0} صف بالصفحة";
|
||||
$lang["tables_page_from_to"] = "عرض {0} إلى {1} من {2} صفوف";
|
||||
$lang["tables_hide_show_pagination"] = "عرض/إخفاء أرقام الصفحات";
|
||||
$lang["tables_refresh"] = "إعادة تحميل";
|
||||
$lang["tables_toggle"] = "تغيير";
|
||||
$lang["tables_columns"] = "أعمدة";
|
||||
$lang["tables_all"] = "الجميع";
|
||||
$lang["tables_columns"] = "أعمدة";
|
||||
$lang["tables_hide_show_pagination"] = "عرض/إخفاء أرقام الصفحات";
|
||||
$lang["tables_loading"] = "جارى التحميل، برجاء الإنتظار";
|
||||
$lang["tables_page_from_to"] = "عرض {0} إلى {1} من {2} صفوف";
|
||||
$lang["tables_refresh"] = "إعادة تحميل";
|
||||
$lang["tables_rows_per_page"] = "{0} صف بالصفحة";
|
||||
$lang["tables_toggle"] = "تغيير";
|
||||
|
||||
@@ -10,11 +10,14 @@ $lang["common_confirm_search"] = "لقد قمت اختيار أكتر من سج
|
||||
$lang["common_country"] = "البلد";
|
||||
$lang["common_date"] = "التاريخ";
|
||||
$lang["common_delete"] = "حذف";
|
||||
$lang["common_print"] = "طباعة";
|
||||
$lang["common_det"] = "تفاصيل";
|
||||
$lang["common_download_import_template"] = "تنزيل قالب الاستيراد من اكسل (CSV)";
|
||||
$lang["common_edit"] = "تحرير";
|
||||
$lang["common_email"] = "بريد إلكتروني";
|
||||
$lang["common_email_invalid_format"] = "شكل البريد الإلكتروني غير صحيح";
|
||||
$lang["common_export_excel"] = "تصدير إلى اكسل";
|
||||
$lang["common_export_excel_no"] = "لا";
|
||||
$lang["common_export_excel_yes"] = "نعم";
|
||||
$lang["common_fields_required_message"] = "الحقول التي بالأحمر مطلوبة";
|
||||
$lang["common_first_name"] = "الاسم الأول";
|
||||
$lang["common_first_name_required"] = "الاسم الأول مطلوب";
|
||||
@@ -22,6 +25,13 @@ $lang["common_first_page"] = "الأول";
|
||||
$lang["common_gender"] = "النوع";
|
||||
$lang["common_gender_female"] = "أنثى";
|
||||
$lang["common_gender_male"] = "ذكر";
|
||||
$lang["common_id"] = "كود";
|
||||
$lang["common_import"] = "استيراد";
|
||||
$lang["common_import_change_file"] = "تغيير";
|
||||
$lang["common_import_excel"] = "استيراد من اكسل";
|
||||
$lang["common_import_full_path"] = "المسار الكامل لملف اكسل مطلوب";
|
||||
$lang["common_import_remove_file"] = "إزالة";
|
||||
$lang["common_import_select_file"] = "اختار ملف";
|
||||
$lang["common_inv"] = "المخزن";
|
||||
$lang["common_last_name"] = "الاسم الأخير";
|
||||
$lang["common_last_name_required"] = "الاسم الأخير مطلوب";
|
||||
@@ -38,28 +48,20 @@ $lang["common_phone_number_required"] = "رقم التليفون مطلوب";
|
||||
$lang["common_please_visit_my"] = "برجاء زيارة";
|
||||
$lang["common_powered_by"] = "مدعوم بواسطة";
|
||||
$lang["common_price"] = "السعر";
|
||||
$lang["common_print"] = "طباعة";
|
||||
$lang["common_remove"] = "إزالة";
|
||||
$lang["common_required"] = "مطلوب";
|
||||
$lang["common_return_policy"] = "سياسة الاسترجاع";
|
||||
$lang["common_search"] = "بحث";
|
||||
$lang["common_search_options"] = "خيارات البحث";
|
||||
$lang["common_searched_for"] = "بحث عن";
|
||||
$lang["common_state"] = "المحافظة";
|
||||
$lang["common_submit"] = "حفظ";
|
||||
$lang["common_total_spent"] = "";
|
||||
$lang["common_unknown"] = "";
|
||||
$lang["common_view_recent_sales"] = "عرض أحدث المبيعات";
|
||||
$lang["common_website"] = "الموقع الإلكترونى";
|
||||
$lang["common_welcome"] = "مرحباً";
|
||||
$lang["common_welcome_message"] = "مرحباً فى OSPOS برجاء إختيار أى قسم للبدء";
|
||||
$lang["common_you_are_using_ospos"] = "أنت تستخدم إصدار Open Source Point Of Sale ";
|
||||
$lang["common_zip"] = "الرقم البريدى";
|
||||
$lang["common_import"] = "استيراد";
|
||||
$lang["common_download_import_template"] = "تنزيل قالب الاستيراد من اكسل (CSV)";
|
||||
$lang["common_import_excel"] = "استيراد من اكسل";
|
||||
$lang["common_import_full_path"] = "المسار الكامل لملف اكسل مطلوب";
|
||||
$lang["common_import_select_file"] = "اختار ملف";
|
||||
$lang["common_import_change_file"] = "تغيير";
|
||||
$lang["common_import_remove_file"] = "إزالة";
|
||||
$lang["common_export_excel"] = "تصدير إلى اكسل";
|
||||
$lang["common_export_excel_yes"] = "نعم";
|
||||
$lang["common_export_excel_no"] = "لا";
|
||||
$lang["common_required"] = "مطلوب";
|
||||
$lang["common_id"] = "كود";
|
||||
|
||||
@@ -11,6 +11,8 @@ $lang["config_barcode_configuration"] = "اعدادات الباركود";
|
||||
$lang["config_barcode_content"] = "محتويات الباركود";
|
||||
$lang["config_barcode_first_row"] = "الصف 1";
|
||||
$lang["config_barcode_font"] = "الخط";
|
||||
$lang["config_barcode_formats"] = "";
|
||||
$lang["config_barcode_generate_if_empty"] = "توليد اذا كان الباركود فارغ";
|
||||
$lang["config_barcode_height"] = "الارتفاع (px)";
|
||||
$lang["config_barcode_id"] = "كود/اسم الصنف";
|
||||
$lang["config_barcode_info"] = "معلومات اعدادات الباركود";
|
||||
@@ -26,22 +28,25 @@ $lang["config_barcode_second_row"] = "الصف 2";
|
||||
$lang["config_barcode_third_row"] = "الصف 3";
|
||||
$lang["config_barcode_type"] = "نوعية الباركود";
|
||||
$lang["config_barcode_width"] = "العرض (px)";
|
||||
$lang["config_barcode_generate_if_empty"] = "توليد اذا كان الباركود فارغ";
|
||||
$lang["config_bottom"] = "الأسفل";
|
||||
$lang["config_cash_decimals"] = "";
|
||||
$lang["config_cash_decimals_tooltip"] = "";
|
||||
$lang["config_cash_rounding"] = "";
|
||||
$lang["config_center"] = "الوسط";
|
||||
$lang["config_comma"] = "فاصلة";
|
||||
$lang["config_company"] = "اسم الشركة";
|
||||
$lang["config_company_logo"] = "شعار الشركة";
|
||||
$lang["config_company_select_image"] = "اختار صورة";
|
||||
$lang["config_company_change_image"] = "تغيير الصورة";
|
||||
$lang["config_company_logo"] = "شعار الشركة";
|
||||
$lang["config_company_remove_image"] = "إزالة الصورة";
|
||||
$lang["config_company_required"] = "اسم الشركة مطلوب";
|
||||
$lang["config_company_select_image"] = "اختار صورة";
|
||||
$lang["config_company_website_url"] = "الموقع الإلكترونى للشركة غير صحيح";
|
||||
$lang["config_comma"] = "فاصلة";
|
||||
$lang["config_country_codes"] = "أكواد الدولة";
|
||||
$lang["config_country_codes_tooltip"] = "قائمة مفصولة بفاصلة لاسماء الدول للبحث";
|
||||
$lang["config_currency_symbol"] = "رمز العملة";
|
||||
$lang["config_currency_decimals"] = "العلامة العشرية للعملة";
|
||||
$lang["config_currency_symbol"] = "رمز العملة";
|
||||
$lang["config_custom1"] = "حقل مخصص 1";
|
||||
$lang["config_custom10"] = "حقل مخصص 10";
|
||||
$lang["config_custom2"] = "حقل مخصص 2";
|
||||
$lang["config_custom3"] = "حقل مخصص 3";
|
||||
$lang["config_custom4"] = "حقل مخصص 4";
|
||||
@@ -50,7 +55,13 @@ $lang["config_custom6"] = "حقل مخصص 6";
|
||||
$lang["config_custom7"] = "حقل مخصص 7";
|
||||
$lang["config_custom8"] = "حقل مخصص 8";
|
||||
$lang["config_custom9"] = "حقل مخصص 9";
|
||||
$lang["config_custom10"] = "حقل مخصص 10";
|
||||
$lang["config_customer_reward"] = "";
|
||||
$lang["config_customer_reward_duplicate"] = "";
|
||||
$lang["config_customer_reward_enable"] = "";
|
||||
$lang["config_customer_reward_invalid_chars"] = "";
|
||||
$lang["config_customer_reward_required"] = "";
|
||||
$lang["config_customer_sales_tax_support"] = "";
|
||||
$lang["config_date_or_time_format"] = "";
|
||||
$lang["config_datetimeformat"] = "شكل الوقت و التاريخ";
|
||||
$lang["config_decimal_point"] = "العلامة العشرية";
|
||||
$lang["config_default_barcode_font_size_number"] = "الحجم الافتراضي لخط الباركود لابد أن يكون رقم";
|
||||
@@ -67,42 +78,74 @@ $lang["config_default_barcode_quality_number"] = "الجودة الافتراض
|
||||
$lang["config_default_barcode_quality_required"] = "الجودة الافتراضية للباركود مطلوبة";
|
||||
$lang["config_default_barcode_width_number"] = "العرض الافتراضي للباركود لابد ان يكون رقم";
|
||||
$lang["config_default_barcode_width_required"] = "العرض الافتراضي للباركود مطلوب";
|
||||
$lang["config_default_origin_tax_code"] = "";
|
||||
$lang["config_default_sales_discount"] = "نسبة الخصم الافتراضية %";
|
||||
$lang["config_default_sales_discount_number"] = "نسبة الخصم الافتراضية لابد ان تكون رقم";
|
||||
$lang["config_default_sales_discount_required"] = "نسبة الخصم الافتراضية مطلوبة";
|
||||
$lang["config_default_tax_name_number"] = "";
|
||||
$lang["config_default_tax_name_required"] = "اسم الضريبة الافتراضية مطلوب";
|
||||
$lang["config_default_tax_rate"] = "معدل الضريبة الافتراضي %";
|
||||
$lang["config_default_tax_rate_1"] = "معدل الضريبة 1";
|
||||
$lang["config_default_tax_rate_2"] = "معدل الضريبة 2";
|
||||
$lang["config_default_tax_rate_number"] = "معدل الضريبة الافتراضي يجب أن يكون رقم";
|
||||
$lang["config_default_tax_rate_required"] = "معدل الضريبة الافتراضي مطلوب";
|
||||
$lang["config_default_tax_name_required"] = "اسم الضريبة الافتراضية مطلوب";
|
||||
$lang["config_dinner_table"] = "";
|
||||
$lang["config_dinner_table_duplicate"] = "";
|
||||
$lang["config_dinner_table_enable"] = "";
|
||||
$lang["config_dinner_table_invalid_chars"] = "";
|
||||
$lang["config_dinner_table_required"] = "";
|
||||
$lang["config_dot"] = "نقطة";
|
||||
$lang["config_email"] = "البريد الإلكتروني";
|
||||
$lang["config_email_configuration"] = "إعدادات البريد الإلكتروني";
|
||||
$lang["config_email_protocol"] = "بروتوكول";
|
||||
$lang["config_email_mailpath"] = "مسار ارسال البريد";
|
||||
$lang["config_email_smtp_host"] = "خادم SMTP";
|
||||
$lang["config_email_smtp_port"] = "رقم منفذ SMTP";
|
||||
$lang["config_email_protocol"] = "بروتوكول";
|
||||
$lang["config_email_smtp_crypto"] = "تشفير SMTP";
|
||||
$lang["config_email_smtp_host"] = "خادم SMTP";
|
||||
$lang["config_email_smtp_pass"] = "كلمة سر SMTP";
|
||||
$lang["config_email_smtp_port"] = "رقم منفذ SMTP";
|
||||
$lang["config_email_smtp_timeout"] = "وقت فشل المحاولة (ثوانى) لـ SMTP";
|
||||
$lang["config_email_smtp_user"] = "اسم مستخدم SMTP";
|
||||
$lang["config_email_smtp_pass"] = "كلمة سر SMTP";
|
||||
$lang["config_fax"] = "الفاكس";
|
||||
$lang["config_financial_year"] = "";
|
||||
$lang["config_financial_year_apr"] = "";
|
||||
$lang["config_financial_year_aug"] = "";
|
||||
$lang["config_financial_year_dec"] = "";
|
||||
$lang["config_financial_year_feb"] = "";
|
||||
$lang["config_financial_year_jan"] = "";
|
||||
$lang["config_financial_year_jul"] = "";
|
||||
$lang["config_financial_year_jun"] = "";
|
||||
$lang["config_financial_year_mar"] = "";
|
||||
$lang["config_financial_year_may"] = "";
|
||||
$lang["config_financial_year_nov"] = "";
|
||||
$lang["config_financial_year_oct"] = "";
|
||||
$lang["config_financial_year_sep"] = "";
|
||||
$lang["config_gcaptcha_enable"] = "";
|
||||
$lang["config_gcaptcha_secret_key"] = "";
|
||||
$lang["config_gcaptcha_secret_key_required"] = "";
|
||||
$lang["config_gcaptcha_site_key"] = "";
|
||||
$lang["config_gcaptcha_site_key_required"] = "";
|
||||
$lang["config_gcaptcha_tooltip"] = "";
|
||||
$lang["config_general"] = "عام";
|
||||
$lang["config_general_configuration"] = "إعدادات عامة";
|
||||
$lang["config_giftcard_number"] = "";
|
||||
$lang["config_giftcard_random"] = "";
|
||||
$lang["config_giftcard_series"] = "";
|
||||
$lang["config_info"] = "معلومات";
|
||||
$lang["config_info_configuration"] = "معلومات الشركة";
|
||||
$lang["config_invoice"] = "الفاتورة";
|
||||
$lang["config_invoice_configuration"] = "إعدادات طباعة الفاتورة";
|
||||
$lang["config_invoice_default_comments"] = "التعليق الافتراضي على الفاتورة";
|
||||
$lang["config_invoice_enable"] = "تفعيل الفوترة";
|
||||
$lang["config_invoice_email_message"] = "قالب البريد الإلكتروني للفاتورة";
|
||||
$lang["config_invoice_enable"] = "تفعيل الفوترة";
|
||||
$lang["config_invoice_printer"] = "طابعة الفواتير";
|
||||
$lang["config_jsprintsetup_required"] = "تحذير! هذه الخاصية غير المفعلة سوف تعمل فقط مع وجود الاضافة jsPrintSetup على متصفح فايرفوكس. حفظ على أى حال؟";
|
||||
$lang["config_language"] = "اللغة";
|
||||
$lang["config_last_used_invoice_number"] = "اخر رقم مستخدم للفاتورة";
|
||||
$lang["config_last_used_quote_number"] = "اخر رقم مستخدم لعرض الاسعار";
|
||||
$lang["config_left"] = "يسار";
|
||||
$lang["config_license"] = "الرخصة";
|
||||
$lang["config_license_configuration"] = "نص الرخصة";
|
||||
$lang["config_line_sequence"] = "تسلسل خطي";
|
||||
$lang["config_lines_per_page"] = "عدد السطور فى الصفحة";
|
||||
$lang["config_lines_per_page_number"] = "عدد السطور فى الصفحة يجب أن يكون رقم";
|
||||
$lang["config_lines_per_page_required"] = "عدد السطور فى الصفحة مطلوب";
|
||||
@@ -113,19 +156,30 @@ $lang["config_location"] = "المخزون";
|
||||
$lang["config_location_configuration"] = "أماكن المخزون";
|
||||
$lang["config_location_info"] = "معلومات تهيئة الأماكن";
|
||||
$lang["config_logout"] = "هل تريد عمل نسخة إحتياطية قبل الخروج؟ اضغط [نعم] لعمل النسخة أو [الغاء] للخروج";
|
||||
$lang["config_mailchimp"] = "mailchimp ميل تشامب";
|
||||
$lang["config_mailchimp_api_key"] = "mailchimp مفتاح";
|
||||
$lang["config_mailchimp_configuration"] = "إعدادات mailchimp";
|
||||
$lang["config_mailchimp_key_successfully"] = "نجاح";
|
||||
$lang["config_mailchimp_key_unsuccessfully"] = "فشل";
|
||||
$lang["config_mailchimp_lists"] = "mailchimp قوائم";
|
||||
$lang["config_mailchimp_tooltip"] = "";
|
||||
$lang["config_message"] = "الرسائل";
|
||||
$lang["config_message_configuration"] = "إعدادات الرسائل";
|
||||
$lang["config_msg_msg"] = "الرسائل النصية المحفوظة";
|
||||
$lang["config_msg_msg_placeholder"] = "إذا أردت إستخدام قالب للرسائل القصيرة احفظه هنا. عدا ذلك أترك هذا الحقل فارغ";
|
||||
$lang["config_msg_uid"] = "SMS-API اسم المستخدم لـ";
|
||||
$lang["config_msg_uid_required"] = "مطلوب SMS-API اسم المستخدم لـ";
|
||||
$lang["config_msg_pwd"] = "SMS-API كلمة السر لـ";
|
||||
$lang["config_msg_pwd_required"] = "مطلوب SMS-API كلمة السر لـ";
|
||||
$lang["config_msg_src"] = "SMS-API كود المرسل لـ";
|
||||
$lang["config_msg_src_required"] = "مطلوب SMS-API كود المرسل لـ";
|
||||
$lang["config_msg_uid"] = "SMS-API اسم المستخدم لـ";
|
||||
$lang["config_msg_uid_required"] = "مطلوب SMS-API اسم المستخدم لـ";
|
||||
$lang["config_none"] = "لايوجد";
|
||||
$lang["config_notify_alignment"] = "مكان عرض رسائل المعلومات";
|
||||
$lang["config_number_format"] = "شكل الرقم";
|
||||
$lang["config_number_locale"] = "التهيئة الاقليمية";
|
||||
$lang["config_number_locale_invalid"] = "التهيئة الإقليمية المختارة غير صحية، راجع الرابط الموجود فى الملاحظة لاختيار تهيئة مناسبة";
|
||||
$lang["config_number_locale_required"] = "رقم التهيئة الإقليمية مطلوب";
|
||||
$lang["config_number_locale_tooltip"] = "إيجاد تهيئة إقليمية مناسبة عبر الرابط";
|
||||
$lang["config_payment_options_order"] = "ترتيب خيارات الدفع";
|
||||
$lang["config_phone"] = "هاتف الشركة";
|
||||
$lang["config_phone_required"] = "هاتف الشركة مطلوب";
|
||||
@@ -147,38 +201,47 @@ $lang["config_print_top_margin_required"] = "الهامش العلوى مطلو
|
||||
$lang["config_quantity_decimals"] = "العلامة العشرية للكمية";
|
||||
$lang["config_receipt"] = "الإيصال";
|
||||
$lang["config_receipt_configuration"] = "إعدادات طباعة الايصالات";
|
||||
$lang["config_receipt_default"] = "افتراضى";
|
||||
$lang["config_receipt_font_size"] = "";
|
||||
$lang["config_receipt_font_size_number"] = "";
|
||||
$lang["config_receipt_font_size_required"] = "";
|
||||
$lang["config_receipt_info"] = "معلومات تهيئة الإيصالات";
|
||||
$lang["config_receipt_printer"] = "طابعة تذاكر";
|
||||
$lang["config_receipt_show_taxes"] = "عرض الضرائب";
|
||||
$lang["config_receipt_show_total_discount"] = "عرض إجمالى الخصم";
|
||||
$lang["config_receipt_short"] = "مختصر";
|
||||
$lang["config_receipt_show_company_name"] = "عرض اسم الشركة";
|
||||
$lang["config_receipt_show_description"] = "عرض الوصف";
|
||||
$lang["config_receipt_show_serialnumber"] = "عرض الرقم المسلسل";
|
||||
$lang["config_receipt_show_taxes"] = "عرض الضرائب";
|
||||
$lang["config_receipt_show_total_discount"] = "عرض إجمالى الخصم";
|
||||
$lang["config_receipt_template"] = "قالب الايصال";
|
||||
$lang["config_receipt_default"] = "افتراضى";
|
||||
$lang["config_receipt_short"] = "مختصر";
|
||||
$lang["config_receiving_calculate_average_price"] = "حساب متوسط سعر الأصناف المستلمة";
|
||||
$lang["config_recv_invoice_format"] = "شكل فاتورة الإستلام";
|
||||
$lang["config_register_mode_default"] = "نمط التسجيل الافتراضي";
|
||||
$lang["config_return_policy_required"] = "سياسة الإسترجاع مطلوب";
|
||||
$lang["config_reward"] = "المكافاة";
|
||||
$lang["config_reward_configuration"] = "اعدادات المكافاة";
|
||||
$lang["config_right"] = "يمين";
|
||||
$lang["config_sales_invoice_format"] = "شكل فاتورة البيع";
|
||||
$lang["config_sales_quote_format"] = "شكل فاتورة عرض الاسعار";
|
||||
$lang["config_saved_successfully"] = "تم حفظ التهيئة بنجاح";
|
||||
$lang["config_saved_unsuccessfully"] = "لم يتم حفظ التهيئة بنجاح";
|
||||
$lang["config_statistics"] = "Send statistics";
|
||||
$lang["config_statistics_tooltip"] = "Send statistics for development and feature improvement purposes";
|
||||
$lang["config_statistics"] = "إرسال اﻹحصائيات";
|
||||
$lang["config_statistics_tooltip"] = "إرسال اﻹحصائيات ﻷغراض التطوير و التحسين";
|
||||
$lang["config_stock_location"] = "مكان المخزون";
|
||||
$lang["config_stock_location_duplicate"] = "من فضلك إستخدم اسم مكان غير مكرر";
|
||||
$lang["config_stock_location_invalid_chars"] = "مكان المخزون لايمكن أن يحتوى على '_'";
|
||||
$lang["config_stock_location_required"] = "مكان المخزون مطلوب";
|
||||
$lang["config_table"] = "جدول";
|
||||
$lang["config_table_configuration"] = "اعدادات الجدول";
|
||||
$lang["config_takings_printer"] = "طابعة الإيراد";
|
||||
$lang["config_tax"] = "الضريبة";
|
||||
$lang["config_tax_category"] = "تصنيف الضريبة";
|
||||
$lang["config_tax_category_used"] = "";
|
||||
$lang["config_tax_configuration"] = "إعدادات الضريبة";
|
||||
$lang["config_tax_decimals"] = "العلامة العشرية للضريبة";
|
||||
$lang["config_tax_included"] = "شامل الضريبة";
|
||||
$lang["config_theme"] = "السمة";
|
||||
$lang["config_thousands_separator"] = "فاصل الاف";
|
||||
$lang["config_timezone"] = "المنطقة الزمنية";
|
||||
$lang["config_top"] = "علوى";
|
||||
$lang["config_website"] = "موقع الشركة";
|
||||
$lang["config_number_locale"] = "التهيئة الاقليمية";
|
||||
$lang["config_return_policy_required"] = "سياسة الإسترجاع مطلوب";
|
||||
$lang["config_number_locale_required"] = "رقم التهيئة الإقليمية مطلوب";
|
||||
$lang["config_number_locale_invalid"] = "التهيئة الإقليمية المختارة غير صحية، راجع الرابط الموجود فى الملاحظة لاختيار تهيئة مناسبة";
|
||||
$lang["config_number_locale_tooltip"] = "إيجاد تهيئة إقليمية مناسبة عبر الرابط";
|
||||
$lang["config_theme"] = "السمة";
|
||||
|
||||
@@ -2,23 +2,44 @@
|
||||
|
||||
$lang["customers_account_number"] = "رقم الحساب";
|
||||
$lang["customers_account_number_duplicate"] = "رقم الحساب هذا موجود فى قاعدة البيانات من قبل";
|
||||
$lang["customers_available_points"] = "";
|
||||
$lang["customers_average"] = "";
|
||||
$lang["customers_avg_discount"] = "";
|
||||
$lang["customers_basic_information"] = "";
|
||||
$lang["customers_cannot_be_deleted"] = "لايمكن حذف هؤلاء العملاء، أحدهم/كلهم مرتبط/مرتبطين بمبيعات";
|
||||
$lang["customers_company_name"] = "اسم الشركة";
|
||||
$lang["customers_confirm_delete"] = "هل تريد حذف هؤلاء العملاء حقاً؟";
|
||||
$lang["customers_customer"] = "العميل";
|
||||
$lang["customers_discount"] = "نسبة الخصم";
|
||||
$lang["customers_email_duplicate"] = "";
|
||||
$lang["customers_error_adding_updating"] = "خطاء فى إضافة أو تحديث العميل";
|
||||
$lang["customers_excel_import_failed"] = "فشل الإستيراد من اكسل";
|
||||
$lang["customers_excel_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية";
|
||||
$lang["customers_excel_import_partially_failed"] = "تم استيراد معظم العملاء. البعض لم يتم استيرادهم ، وهذه هى القائمة";
|
||||
$lang["customers_excel_import_success"] = "تم استيراد العملاء بنجاح";
|
||||
$lang["customers_import_items_excel"] = "استيراد العملا ء من ورقة عمل اكسل";
|
||||
$lang["customers_mailchimp_activity_click"] = "";
|
||||
$lang["customers_mailchimp_activity_lastopen"] = "";
|
||||
$lang["customers_mailchimp_activity_open"] = "";
|
||||
$lang["customers_mailchimp_activity_total"] = "";
|
||||
$lang["customers_mailchimp_activity_unopen"] = "";
|
||||
$lang["customers_mailchimp_email_client"] = "";
|
||||
$lang["customers_mailchimp_info"] = "";
|
||||
$lang["customers_mailchimp_member_rating"] = "";
|
||||
$lang["customers_mailchimp_status"] = "";
|
||||
$lang["customers_mailchimp_vip"] = "";
|
||||
$lang["customers_max"] = "";
|
||||
$lang["customers_min"] = "";
|
||||
$lang["customers_new"] = "عميل جديد";
|
||||
$lang["customers_none_selected"] = "لم تختار عملاء للحذف";
|
||||
$lang["customers_one_or_multiple"] = "عميل/عملاء";
|
||||
$lang["customers_quantity"] = "";
|
||||
$lang["customers_stats_info"] = "";
|
||||
$lang["customers_successful_adding"] = "لقد أضفت عميل بنجاح";
|
||||
$lang["customers_successful_deleted"] = "لقد قمت بالحذف بنجاح";
|
||||
$lang["customers_successful_updating"] = "لقد قمت بتحديث بيانات العميل بنجاح";
|
||||
$lang["customers_tax_code"] = "";
|
||||
$lang["customers_taxable"] = "خاضع للضريبة";
|
||||
$lang["customers_total"] = "المجموع";
|
||||
$lang["customers_update"] = "تحديث بيانات عميل";
|
||||
$lang["customers_import_items_excel"] = "استيراد العملا ء من ورقة عمل اكسل";
|
||||
$lang["customers_excel_import_failed"] = "فشل الإستيراد من اكسل";
|
||||
$lang["customers_excel_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية";
|
||||
$lang["customers_excel_import_success"] = "تم استيراد العملاء بنجاح";
|
||||
$lang["customers_excel_import_partially_failed"] = "تم استيراد معظم العملاء. البعض لم يتم استيرادهم ، وهذه هى القائمة";
|
||||
$lang["rewards_package"] = "";
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
<?php
|
||||
|
||||
$lang["datepicker_today"] = "اليوم";
|
||||
$lang["datepicker_weekstart"] = "0";
|
||||
$lang["datepicker_all_time"] = "جميع الأوقات";
|
||||
$lang["datepicker_last_7"] = "أخر سبعة أيام";
|
||||
$lang["datepicker_last_30"] = "أخر 30 يوم";
|
||||
$lang["datepicker_last_month"] = "أخر شهر";
|
||||
$lang["datepicker_last_year"] = "السنة الماضية";
|
||||
$lang["datepicker_this_month"] = "هذا الشهر";
|
||||
$lang["datepicker_this_month_last_year"] = "نفس الشهر من العام الماضي";
|
||||
$lang["datepicker_same_month_to_today"] = "هذا الشهر حتى اليوم";
|
||||
$lang["datepicker_same_month_to_same_day_last_year"] = "نفس الشهر حتى اليوم من السنة الماضية";
|
||||
$lang["datepicker_this_year"] = "السنة الحالية";
|
||||
$lang["datepicker_today_last_year"] = "نفس اليوم من السنة الماضية";
|
||||
$lang["datepicker_yesterday"] = "أمس";
|
||||
$lang["datepicker_apply"] = "تطبيق";
|
||||
$lang["datepicker_cancel"] = "إلغاء";
|
||||
$lang["datepicker_from"] = "من";
|
||||
$lang["datepicker_to"] = "إلى";
|
||||
$lang["datepicker_custom"] = "مخصص";
|
||||
$lang["datepicker_from"] = "من";
|
||||
$lang["datepicker_last_30"] = "أخر 30 يوم";
|
||||
$lang["datepicker_last_7"] = "أخر سبعة أيام";
|
||||
$lang["datepicker_last_financial_year"] = "";
|
||||
$lang["datepicker_last_month"] = "أخر شهر";
|
||||
$lang["datepicker_last_year"] = "السنة الماضية";
|
||||
$lang["datepicker_same_month_last_year"] = "نفس الشهر من العام الماضي";
|
||||
$lang["datepicker_same_month_to_same_day_last_year"] = "نفس الشهر حتى اليوم من السنة الماضية";
|
||||
$lang["datepicker_this_financial_year"] = "";
|
||||
$lang["datepicker_this_month"] = "هذا الشهر";
|
||||
$lang["datepicker_this_year"] = "السنة الحالية";
|
||||
$lang["datepicker_to"] = "إلى";
|
||||
$lang["datepicker_today"] = "اليوم";
|
||||
$lang["datepicker_today_last_year"] = "نفس اليوم من السنة الماضية";
|
||||
$lang["datepicker_weekstart"] = "0";
|
||||
$lang["datepicker_yesterday"] = "أمس";
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
|
||||
$lang["employees_basic_information"] = "المعلومات الأساسية للموظف";
|
||||
$lang["employees_cannot_be_deleted"] = "لايمكن حذف الموظفين ، واحد أو أكثر من المظفين قام بإجراء مبيعات :)";
|
||||
$lang["employees_change_password"] = "";
|
||||
$lang["employees_confirm_delete"] = "هل أنت متأكد أنك تريد حذف الموظفين المختارين؟";
|
||||
$lang["employees_current_password"] = "";
|
||||
$lang["employees_current_password_invalid"] = "";
|
||||
$lang["employees_employee"] = "موظف";
|
||||
$lang["employees_error_adding_updating"] = "خطاء فى إضافة/تعديل موظف";
|
||||
$lang["employees_error_deleting_demo_admin"] = "لايمكن حذف المستخدم admin الخاص بنسخة العرض";
|
||||
@@ -14,15 +17,18 @@ $lang["employees_one_or_multiple"] = "موظف/موظفين";
|
||||
$lang["employees_password"] = "كلمة السر";
|
||||
$lang["employees_password_minlength"] = "كلمة السر يجب أن تكون 8 حروف على الأقل";
|
||||
$lang["employees_password_must_match"] = "كلمتى السر لا تتطابقان";
|
||||
$lang["employees_password_not_must_match"] = "";
|
||||
$lang["employees_password_required"] = "كلمة السر مطلوبة";
|
||||
$lang["employees_permission_desc"] = "قم بإضافة الصلاحيات بلإختيار من الأسفل";
|
||||
$lang["employees_permission_info"] = "اذونات المستخدمين";
|
||||
$lang["employees_repeat_password"] = "كلمة السر مرة اخرى";
|
||||
$lang["employees_subpermission_required"] = "يجب إختيار صلاحية واحدة على الأقل لكل قسم";
|
||||
$lang["employees_successful_adding"] = "لقد تم إضافة الموظف بنجاح";
|
||||
$lang["employees_successful_change_password"] = "";
|
||||
$lang["employees_successful_deleted"] = "لقد تم حذف الموظف بنجاح";
|
||||
$lang["employees_successful_updating"] = "لقد تم تحديث بيانات الموظف بنجاح";
|
||||
$lang["employees_unsuccessful_change_password"] = "";
|
||||
$lang["employees_update"] = "تحديث بيانات موظف";
|
||||
$lang["employees_username"] = "اسم المستخدم";
|
||||
$lang["employees_username_minlength"] = "اسم المستخدم يجب أن يكون 5 حروف على الأقل";
|
||||
$lang["employees_username_required"] = "اسم المستخدم مطلوب";
|
||||
$lang["employees_subpermission_required"] = "يجب إختيار صلاحية واحدة على الأقل لكل قسم";
|
||||
|
||||
9
application/language/ar-EG/enum_lang.php
Normal file
9
application/language/ar-EG/enum_lang.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
$lang["enum_half_down"] = "";
|
||||
$lang["enum_half_even"] = "";
|
||||
$lang["enum_half_five"] = "";
|
||||
$lang["enum_half_odd"] = "";
|
||||
$lang["enum_half_up"] = "";
|
||||
$lang["enum_round_down"] = "";
|
||||
$lang["enum_round_up"] = "";
|
||||
18
application/language/ar-EG/form_validation_lang.php
Normal file
18
application/language/ar-EG/form_validation_lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
$lang["alpha_dash"] = "";
|
||||
$lang["alpha_numeric"] = "";
|
||||
$lang["exact_length"] = "";
|
||||
$lang["greater_than"] = "";
|
||||
$lang["is_natural"] = "";
|
||||
$lang["is_natural_no_zero"] = "";
|
||||
$lang["is_numeric"] = "";
|
||||
$lang["is_unique"] = "";
|
||||
$lang["less_than"] = "";
|
||||
$lang["max_length"] = "";
|
||||
$lang["min_length"] = "";
|
||||
$lang["regex_match"] = "";
|
||||
$lang["valid_email"] = "";
|
||||
$lang["valid_emails"] = "";
|
||||
$lang["valid_ip"] = "";
|
||||
$lang["valid_url"] = "";
|
||||
@@ -3,10 +3,10 @@
|
||||
$lang["giftcards_add_minus"] = "المخزن المضاف أو المطروح منه";
|
||||
$lang["giftcards_allow_alt_description"] = "السماح بوصف بديل";
|
||||
$lang["giftcards_amazon"] = "Amazon";
|
||||
$lang["giftcards_remaining_balance"] = "كارت الهدية %1 القيمة المتبقية منه %2!";
|
||||
$lang["giftcards_bulk_edit"] = "تحرير جماعى";
|
||||
$lang["giftcards_cannot_be_deleted"] = "لايمكن حذف بطاقات الهدية المختارة، واحد أو أكثر منها لديه مبيعات";
|
||||
$lang["giftcards_cannot_find_giftcard"] = "لايمكن إيجاد معلومات حول كارت الهدية";
|
||||
$lang["giftcards_cannot_use"] = "Giftcard %1 cannot be used for this sale. Invalid Customer!";
|
||||
$lang["giftcards_card_value"] = "القيمة";
|
||||
$lang["giftcards_category"] = "الفئة";
|
||||
$lang["giftcards_change_all_to_allow_alt_desc"] = "السماح بوصف بديل للكل";
|
||||
@@ -47,6 +47,7 @@ $lang["giftcards_one_or_multiple"] = "بطاقة/بطاقات الهدية";
|
||||
$lang["giftcards_person_id"] = "العميل";
|
||||
$lang["giftcards_quantity"] = "الكمية";
|
||||
$lang["giftcards_quantity_required"] = "الكمية مطلوبة";
|
||||
$lang["giftcards_remaining_balance"] = "كارت الهدية %1 القيمة المتبقية منه %2!";
|
||||
$lang["giftcards_reorder_level"] = "نقطة إعادة الطلب";
|
||||
$lang["giftcards_retrive_giftcard_info"] = "إسترجاع بيانات بطاقة هدية";
|
||||
$lang["giftcards_sales_tax_1"] = "ضريبة المبيعات";
|
||||
|
||||
@@ -1,20 +1,30 @@
|
||||
<?php
|
||||
|
||||
$lang["item_kits_add_item"] = "إضافة مجموعة";
|
||||
$lang["item_kits_all"] = "";
|
||||
$lang["item_kits_cannot_be_deleted"] = "لايمكن حذف مجموعة/مجموعات";
|
||||
$lang["item_kits_confirm_delete"] = "هل أنت متأكد أنك تريد حذف المجموعة؟";
|
||||
$lang["item_kits_description"] = "وصف المجموعة";
|
||||
$lang["item_kits_discount_percent"] = "";
|
||||
$lang["item_kits_error_adding_updating"] = "خطاء فى إضافة/تحديث المجموعة";
|
||||
$lang["item_kits_find_kit_item"] = "";
|
||||
$lang["item_kits_info"] = "معلومات المجموعة";
|
||||
$lang["item_kits_item"] = "صنف";
|
||||
$lang["item_kits_items"] = "أصناف";
|
||||
$lang["item_kits_kit"] = "كود المجموعة";
|
||||
$lang["item_kits_kit_and_components"] = "";
|
||||
$lang["item_kits_kit_and_stock"] = "";
|
||||
$lang["item_kits_kit_only"] = "";
|
||||
$lang["item_kits_name"] = "اسم المجموعة";
|
||||
$lang["item_kits_new"] = "مجموعة جديده";
|
||||
$lang["item_kits_no_item_kits_to_display"] = "لاتوجد مجموعات لعرضها";
|
||||
$lang["item_kits_none_selected"] = "لم تقم بإختيار مجموعات";
|
||||
$lang["item_kits_one_or_multiple"] = "مجموعة/مجموعات";
|
||||
$lang["item_kits_price_option"] = "";
|
||||
$lang["item_kits_priced_only"] = "";
|
||||
$lang["item_kits_print_option"] = "";
|
||||
$lang["item_kits_quantity"] = "الكمية";
|
||||
$lang["item_kits_sequence"] = "";
|
||||
$lang["item_kits_successful_adding"] = "لقد تم إضافة المجموعة بنجاح";
|
||||
$lang["item_kits_successful_deleted"] = "لقد تم حذف المجموعة بنجاح";
|
||||
$lang["item_kits_successful_updating"] = "لقد تم تحديث بيانات المجموعة بنجاح";
|
||||
|
||||
@@ -14,6 +14,7 @@ $lang["items_change_all_to_allow_alt_desc"] = "السماح بوصف بديل ل
|
||||
$lang["items_change_all_to_not_allow_allow_desc"] = "عدم السماح بوصف بديل للجميع";
|
||||
$lang["items_change_all_to_serialized"] = "تغير الجميع لمتسلسل";
|
||||
$lang["items_change_all_to_unserialized"] = "تغيير الجميع لغير متسلسل";
|
||||
$lang["items_change_image"] = "تغيير الصورة";
|
||||
$lang["items_confirm_bulk_edit"] = "هل أنت متأكد انك تريد تحرير كل الأصناف المختارة؟";
|
||||
$lang["items_confirm_bulk_edit_wipe_taxes"] = "سوف يتم مسح معلومات الضرائب لجميع الأصناف";
|
||||
$lang["items_confirm_delete"] = "هل أنت متأكد انك تريد حذف كل الأصناف المختارة؟";
|
||||
@@ -27,24 +28,31 @@ $lang["items_details_count"] = "حركة الصنف";
|
||||
$lang["items_do_nothing"] = "لاتفعل شئ";
|
||||
$lang["items_edit_fields_you_want_to_update"] = "قم بتحديث الحقول المراد تحديثها لكل الأصناف المختارة";
|
||||
$lang["items_edit_multiple_items"] = "تحريد مجموعة اصناف";
|
||||
$lang["items_empty_upc_items"] = "تفريغ اصناف UPC";
|
||||
$lang["items_error_adding_updating"] = "خطاء فى إضافة/تحديث صنف";
|
||||
$lang["items_error_updating_multiple"] = "خطاء فى تحديث بيانات أصناف";
|
||||
$lang["items_excel_import_failed"] = "فشل الإستيراد من اكسل";
|
||||
$lang["items_excel_import_nodata_wrongformat"] = "الملف الذى رفعته إما فارغ أو أنه مختلف البنية";
|
||||
$lang["items_excel_import_success"] = "تم استيراد الأصناف بنجاح";
|
||||
$lang["items_excel_import_partially_failed"] = "تم استيراد معظم الأصناف. البعض لم يتم استيرادهم ، وهذه هى القائمة";
|
||||
$lang["items_excel_import_success"] = "تم استيراد الأصناف بنجاح";
|
||||
$lang["items_generate_barcodes"] = "توليد أكواد الباركود";
|
||||
$lang["items_image"] = "صورة";
|
||||
$lang["items_import_items_excel"] = "استيراد من اكسل";
|
||||
$lang["items_info_provided_by"] = "المعلومات مقدمة بواسطة";
|
||||
$lang["items_inventory"] = "المخزن";
|
||||
$lang["items_inventory_comments"] = "تعليقات";
|
||||
$lang["items_inventory_data_tracking"] = "";
|
||||
$lang["items_inventory_date"] = "";
|
||||
$lang["items_inventory_employee"] = "";
|
||||
$lang["items_inventory_in_out_quantity"] = "";
|
||||
$lang["items_inventory_remarks"] = "";
|
||||
$lang["items_is_deleted"] = "حذفت";
|
||||
$lang["items_is_serialized"] = "الصنف له رقم مسلسل";
|
||||
$lang["items_item"] = "صنف";
|
||||
$lang["items_item_number"] = "الباركود UPC/EAN/ISBN";
|
||||
$lang["items_item_number_duplicate"] = "رقم الصنف موجود فى قاعدة البيانات من قبل";
|
||||
$lang["items_kit"] = "";
|
||||
$lang["items_location"] = "مكان";
|
||||
$lang["items_empty_upc_items"] = "تفريغ اصناف UPC";
|
||||
$lang["items_low_inventory_items"] = "الأصناف التى لا يوجد لها مخزون";
|
||||
$lang["items_manually_editing_of_quantity"] = "تحرير الكمية يدوياً";
|
||||
$lang["items_name"] = "اسم الصنف";
|
||||
@@ -54,6 +62,7 @@ $lang["items_no_description_items"] = "الأصناف التى بلا وصف";
|
||||
$lang["items_no_items_to_display"] = "لايوجد أصناف لعرضها";
|
||||
$lang["items_none"] = "لاشىء";
|
||||
$lang["items_none_selected"] = "لم تختار أى أصناف لتحريرها";
|
||||
$lang["items_nonstock"] = "";
|
||||
$lang["items_number_information"] = "رقم الصنف";
|
||||
$lang["items_number_required"] = "مطلوب UPC/EAN/ISBN رقم الباركود ";
|
||||
$lang["items_one_or_multiple"] = "صنف/أصناف";
|
||||
@@ -61,15 +70,21 @@ $lang["items_quantity"] = "الكمية";
|
||||
$lang["items_quantity_number"] = "الكمية يجب أن تكون رقم";
|
||||
$lang["items_quantity_required"] = "الكمية مطلوبة";
|
||||
$lang["items_receiving_quantity"] = "الكمية المستلمة";
|
||||
$lang["items_remove_image"] = "ازالة الصورة";
|
||||
$lang["items_reorder_level"] = "نقطة إعادة الطلب";
|
||||
$lang["items_reorder_level_number"] = "نقطة إعادة الطلب يجب أن تكون رقم";
|
||||
$lang["items_reorder_level_required"] = "نقطة إعادة الطلب مطلوبة";
|
||||
$lang["items_retrive_item_info"] = "استرجاع بيانات الصنف";
|
||||
$lang["items_sales_tax_1"] = "ضريبة المبيعات";
|
||||
$lang["items_sales_tax_2"] = "ضريبة المبيعات 2";
|
||||
$lang["items_search_custom_items"] = "بحث الحقول المخصصة";
|
||||
$lang["items_search_attributes"] = "بحث الحقول المخصصة";
|
||||
$lang["items_search_custom_items"] = "";
|
||||
$lang["items_select_image"] = "اختار صورة";
|
||||
$lang["items_serialized_items"] = "أصناف مسلسلة";
|
||||
$lang["items_standard"] = "";
|
||||
$lang["items_stock"] = "";
|
||||
$lang["items_stock_location"] = "مكان المخزون";
|
||||
$lang["items_stock_type"] = "";
|
||||
$lang["items_successful_adding"] = "لقد تم إضافة صنف بنجاح";
|
||||
$lang["items_successful_bulk_edit"] = "لقد تم تحديث بيانات صنف/أصناف بنجاح";
|
||||
$lang["items_successful_deleted"] = "لقد تم الحذف بنجاح";
|
||||
@@ -80,13 +95,10 @@ $lang["items_tax_2"] = "الضريبة 2";
|
||||
$lang["items_tax_percent"] = "نسبة الضريبة";
|
||||
$lang["items_tax_percent_required"] = "نسبة الضريبة مطلوبة";
|
||||
$lang["items_tax_percents"] = "نسبة/نسب الضريبة";
|
||||
$lang["items_type"] = "";
|
||||
$lang["items_unit_price"] = "السعر";
|
||||
$lang["items_unit_price_number"] = "السعر يجب أن يكون رقم";
|
||||
$lang["items_unit_price_required"] = "السعر مطلوب";
|
||||
$lang["items_upc_database"] = "UPC قاعدة بيانات";
|
||||
$lang["items_update"] = "تحديث بيانات صنف";
|
||||
$lang["items_use_inventory_menu"] = "استخدام تحديث المخزن";
|
||||
$lang["items_import_items_excel"] = "استيراد من اكسل";
|
||||
$lang["items_select_image"] = "اختار صورة";
|
||||
$lang["items_change_image"] = "تغيير الصورة";
|
||||
$lang["items_remove_image"] = "ازالة الصورة";
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<?php
|
||||
|
||||
$lang["login_gcaptcha"] = "";
|
||||
$lang["login_go"] = "البدء";
|
||||
$lang["login_invalid_gcaptcha"] = "";
|
||||
$lang["login_invalid_installation"] = "";
|
||||
$lang["login_invalid_username_and_password"] = "اسم مستخدم/كلمة سر غير صحيح";
|
||||
$lang["login_login"] = "دخول";
|
||||
$lang["login_password"] = "كلمة السر";
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<?php
|
||||
|
||||
$lang["messages_sms_send"] = "إرسال SMS";
|
||||
$lang["messages_first_name"] = "الإسم الأول";
|
||||
$lang["messages_last_name"] = "الأسم الأخير";
|
||||
$lang["messages_phone"] = "رقم المحمول";
|
||||
$lang["messages_phone_placeholder"] = "رقم/أرقام المحمول هنا...";
|
||||
$lang["messages_phone_number_required"] = "رقم المحمول مطلوب";
|
||||
$lang["messages_message"] = "الرسالة";
|
||||
$lang["messages_message_placeholder"] = "رسالتك هنا...";
|
||||
$lang["messages_message_required"] = "الرسالة مطلوبة";
|
||||
$lang["messages_multiple_phones"] = " فى حالة إرسال الرسالة لأكثر من شخص قم بفصل الأرقام بعلامة الفاصلة";
|
||||
$lang["messages_phone"] = "رقم المحمول";
|
||||
$lang["messages_phone_number_required"] = "رقم المحمول مطلوب";
|
||||
$lang["messages_phone_placeholder"] = "رقم/أرقام المحمول هنا...";
|
||||
$lang["messages_sms_send"] = "إرسال SMS";
|
||||
$lang["messages_successfully_sent"] = "تم إرسال الرسالة بنجاح إلى: ";
|
||||
$lang["messages_unsuccessfully_sent"] = "لم يتم إرسال الرسالة بنجاح إلى: ";
|
||||
|
||||
7
application/language/ar-EG/migrate_lang.php
Normal file
7
application/language/ar-EG/migrate_lang.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
$lang["migrate_backup"] = "";
|
||||
$lang["migrate_failed"] = "";
|
||||
$lang["migrate_info"] = "";
|
||||
$lang["migrate_start"] = "";
|
||||
$lang["migrate_success"] = "";
|
||||
@@ -13,6 +13,10 @@ $lang["module_item_kits"] = "مجموعات الأصناف";
|
||||
$lang["module_item_kits_desc"] = "إضافة، تحديث ، بحث و حذف مجموعات الأصناف";
|
||||
$lang["module_items"] = "الأصناف";
|
||||
$lang["module_items_desc"] = "إضافة، تحديث ، بحث و حذف الأصناف";
|
||||
$lang["module_messages"] = "الرسائل";
|
||||
$lang["module_messages_desc"] = "إرسال رسائل للعملاء ، الموردين او الموظفين";
|
||||
$lang["module_migrate"] = "";
|
||||
$lang["module_migrate_desc"] = "";
|
||||
$lang["module_receivings"] = "استلام الأصناف";
|
||||
$lang["module_receivings_desc"] = "معالجة أوامر الشراء و استلام الأصناف";
|
||||
$lang["module_reports"] = "التقارير";
|
||||
@@ -21,5 +25,5 @@ $lang["module_sales"] = "المبيعات";
|
||||
$lang["module_sales_desc"] = "معالجة المبيعات و المرتجعات";
|
||||
$lang["module_suppliers"] = "الموردين";
|
||||
$lang["module_suppliers_desc"] = "إضافة، تحديث ، بحث و حذف مجموعات الموردين";
|
||||
$lang["module_messages"] = "الرسائل";
|
||||
$lang["module_messages_desc"] = "إرسال رسائل للعملاء ، الموردين او الموظفين";
|
||||
$lang["module_taxes"] = "";
|
||||
$lang["module_taxes_desc"] = "";
|
||||
|
||||
@@ -1,17 +1,16 @@
|
||||
<?php
|
||||
|
||||
$lang["receivings_transaction_failed"] = "حركات الإستلام فشلت";
|
||||
$lang["receivings_cancel_receiving"] = "إلغاء";
|
||||
$lang["receivings_cannot_be_deleted"] = "لايمكن حذف الإستلام/الإستلامات";
|
||||
$lang["receivings_comments"] = "تعليقات";
|
||||
$lang["receivings_complete_receiving"] = "إنهاء";
|
||||
$lang["receivings_confirm_cancel_receiving"] = "هل أنت متاكد أنك تريد إلغاء هذا الإستلام؟ سيتم حذف كل الأصناف.";
|
||||
$lang["receivings_confirm_delete"] = "هل أنت متاكد أنك تريد حذف هذا الإستلام؟ سيتم حذف كل الأصناف. لايمكن التراجع بعد الحذف";
|
||||
$lang["receivings_confirm_finish_receiving"] = "هل أنت متاكد أنك تريد تنفيذ هذا الإستلام؟ لايمكن التراجع بعد الإرسال";
|
||||
$lang["receivings_cost"] = "التكلفة";
|
||||
$lang["receivings_date"] = "تاريخ الإستلام";
|
||||
$lang["receivings_date_required"] = "يجب إدخال تاريخ صحيح";
|
||||
$lang["receivings_date_type"] = "التاريخ مطلوب";
|
||||
$lang["receivings_confirm_delete"] = "هل أنت متاكد أنك تريد حذف هذا الإستلام؟ سيتم حذف كل الأصناف. لايمكن التراجع بعد الحذف";
|
||||
$lang["receivings_delete_entire_sale"] = "حذف عملية البيع بالكامل";
|
||||
$lang["receivings_discount"] = "نسبة الخصم";
|
||||
$lang["receivings_edit"] = "تحرير";
|
||||
@@ -22,7 +21,6 @@ $lang["receivings_error_requisition"] = "غير قادر على تحريك ال
|
||||
$lang["receivings_find_or_scan_item"] = "بحث/مسح باركود صنف";
|
||||
$lang["receivings_find_or_scan_item_or_receipt"] = "بحث/مسح باركود صنف أو إيصال";
|
||||
$lang["receivings_id"] = "كود الإستلام";
|
||||
$lang["receivings_reference"] = "رقم المرجع";
|
||||
$lang["receivings_item_name"] = "اسم الصنف";
|
||||
$lang["receivings_mode"] = "وضع الإستلام";
|
||||
$lang["receivings_new_supplier"] = "مورد جديد";
|
||||
@@ -32,6 +30,7 @@ $lang["receivings_quantity"] = "الكمية";
|
||||
$lang["receivings_receipt"] = "إيصال إستلام";
|
||||
$lang["receivings_receipt_number"] = "كود الإستلام";
|
||||
$lang["receivings_receiving"] = "إستلام";
|
||||
$lang["receivings_reference"] = "رقم المرجع";
|
||||
$lang["receivings_register"] = "استلام الأصناف";
|
||||
$lang["receivings_requisition"] = "طلب شراء";
|
||||
$lang["receivings_return"] = "إرتجاع لمورد";
|
||||
@@ -43,10 +42,11 @@ $lang["receivings_stock_source"] = "مصدر المخزون";
|
||||
$lang["receivings_successfully_deleted"] = "لقد تم الحذف";
|
||||
$lang["receivings_successfully_updated"] = "لقد تم التحديث";
|
||||
$lang["receivings_supplier"] = "المورد";
|
||||
$lang["receivings_supplier_email"] = "البريد الإلكتروني";
|
||||
$lang["receivings_supplier_address"] = "العنوان";
|
||||
$lang["receivings_supplier_email"] = "البريد الإلكتروني";
|
||||
$lang["receivings_supplier_location"] = "المكان";
|
||||
$lang["receivings_total"] = "الإجمالى";
|
||||
$lang["receivings_transaction_failed"] = "حركات الإستلام فشلت";
|
||||
$lang["receivings_unable_to_add_item"] = "غير قادر على إضافة صنف للإستلام";
|
||||
$lang["receivings_unsuccessfully_updated"] = "لم يتم تحديث الإستلام بنجاح";
|
||||
$lang["receivings_update"] = "تحديث";
|
||||
|
||||
@@ -5,6 +5,8 @@ $lang["reports_categories"] = "التصنيفات";
|
||||
$lang["reports_categories_summary_report"] = "تقرير ملخص التصنيفات";
|
||||
$lang["reports_category"] = "تصنيف";
|
||||
$lang["reports_comments"] = "التعليقات";
|
||||
$lang["reports_cost"] = "التكلفة";
|
||||
$lang["reports_cost_price"] = "سعر التكلفة";
|
||||
$lang["reports_count"] = "عدد";
|
||||
$lang["reports_customer"] = "عميل";
|
||||
$lang["reports_customers"] = "عملاء";
|
||||
@@ -20,6 +22,7 @@ $lang["reports_discount"] = "الخصم";
|
||||
$lang["reports_discount_percent"] = "نسبة الخصم";
|
||||
$lang["reports_discounts"] = "الخصومات";
|
||||
$lang["reports_discounts_summary_report"] = "تقرير ملخص الخصومات";
|
||||
$lang["reports_earned"] = "";
|
||||
$lang["reports_employee"] = "موظف";
|
||||
$lang["reports_employees"] = "الموظفين";
|
||||
$lang["reports_employees_summary_report"] = "تقرير ملخص الموظفين";
|
||||
@@ -31,6 +34,7 @@ $lang["reports_inventory_reports"] = "تقارير المخزن";
|
||||
$lang["reports_inventory_summary"] = "ملخص المخزن";
|
||||
$lang["reports_inventory_summary_report"] = "تقرير ملخص المخزن";
|
||||
$lang["reports_item"] = "صنف";
|
||||
$lang["reports_item_count"] = "تصفية عداد الصنف";
|
||||
$lang["reports_item_name"] = "اسم الصنف";
|
||||
$lang["reports_item_number"] = "رقم الصنف";
|
||||
$lang["reports_items"] = "الأصناف";
|
||||
@@ -39,14 +43,16 @@ $lang["reports_items_received"] = "الأصناف مستلمة";
|
||||
$lang["reports_items_summary_report"] = "تقرير ملخص الأصناف";
|
||||
$lang["reports_low_inventory"] = "النواقص";
|
||||
$lang["reports_low_inventory_report"] = "تقرير نواقص المخزون";
|
||||
$lang["reports_more_than_zero"] = "أكثر من صفر";
|
||||
$lang["reports_name"] = "الاسم";
|
||||
$lang["reports_no_reports_to_display"] = "لايوجد أصناف لعرضها";
|
||||
$lang["reports_payment_type"] = "طريقة الدفع";
|
||||
$lang["reports_payments"] = "المدفوعات";
|
||||
$lang["reports_payments_summary_report"] = "ملخص المدفوعات";
|
||||
$lang["reports_profit"] = "الربح";
|
||||
$lang["reports_cost"] = "التكلفة";
|
||||
$lang["reports_quantity"] = "الكمية المشتراه";
|
||||
$lang["reports_quantity_purchased"] = "المستلم";
|
||||
$lang["reports_quotes"] = "";
|
||||
$lang["reports_received_by"] = "مستلمة بواسطة";
|
||||
$lang["reports_receiving_id"] = "كود الاستلام";
|
||||
$lang["reports_receiving_type"] = "نوع الاستلام";
|
||||
@@ -75,6 +81,7 @@ $lang["reports_serial_number"] = "مسلسل";
|
||||
$lang["reports_sold_by"] = "البائع";
|
||||
$lang["reports_sold_to"] = "مباع الى";
|
||||
$lang["reports_stock_location"] = "مكان المخزون";
|
||||
$lang["reports_sub_total_value"] = "المجموع الفرعى";
|
||||
$lang["reports_subtotal"] = "المجموع الفرعى";
|
||||
$lang["reports_summary_reports"] = "تقارير ملخصة";
|
||||
$lang["reports_supplied_by"] = "مورده بواسطة";
|
||||
@@ -86,12 +93,8 @@ $lang["reports_tax_percent"] = "نسبة الضريبة";
|
||||
$lang["reports_taxes"] = "الضرائب";
|
||||
$lang["reports_taxes_summary_report"] = "تقرير ملخص الضرائب";
|
||||
$lang["reports_total"] = "الإجمالى";
|
||||
$lang["reports_type"] = "النوع";
|
||||
$lang["reports_item_count"] = "تصفية عداد الصنف";
|
||||
$lang["reports_cost_price"] = "سعر التكلفة";
|
||||
$lang["reports_unit_price"] = "السعر";
|
||||
$lang["reports_sub_total_value"] = "المجموع الفرعى";
|
||||
$lang["reports_total_inventory_value"] = "إجمالى قيمة المخزن";
|
||||
$lang["reports_type"] = "النوع";
|
||||
$lang["reports_unit_price"] = "السعر";
|
||||
$lang["reports_used"] = "";
|
||||
$lang["reports_zero_and_less"] = "صفر و أقل";
|
||||
$lang["reports_more_than_zero"] = "أكثر من صفر";
|
||||
$lang["reports_no_reports_to_display"] = "لايوجد أصناف لعرضها";
|
||||
|
||||
@@ -1,13 +1,18 @@
|
||||
<?php
|
||||
|
||||
$lang["customers_available_points"] = "";
|
||||
$lang["rewards_package"] = "";
|
||||
$lang["rewards_remaining_balance"] = "";
|
||||
$lang["sales_add_payment"] = "إضافة دفع";
|
||||
$lang["sales_amount_due"] = "المبلغ المطلوب";
|
||||
$lang["sales_amount_tendered"] = "المبلغ المدفوع";
|
||||
$lang["sales_cancel_sale"] = "الغاء عملية البيع";
|
||||
$lang["sales_cash"] = "نقدى";
|
||||
$lang["sales_cash_filter"] = "نقدى";
|
||||
$lang["sales_change_due"] = "الباقى";
|
||||
$lang["sales_check"] = "شيك";
|
||||
$lang["sales_check_balance"] = "تذكير بموعد الشيك";
|
||||
$lang["sales_check_filter"] = "";
|
||||
$lang["sales_comment"] = "تعليق";
|
||||
$lang["sales_comments"] = "تعليقات";
|
||||
$lang["sales_complete_sale"] = "إتمام البيع";
|
||||
@@ -15,12 +20,14 @@ $lang["sales_confirm_cancel_sale"] = "هل أنت متأكد من الغاء ع
|
||||
$lang["sales_confirm_delete"] = "هل تريد حذف عمليات البيع المختارة؟";
|
||||
$lang["sales_credit"] = "بطاقة إئتمانية";
|
||||
$lang["sales_customer"] = "العميل";
|
||||
$lang["sales_customer_email"] = "البريد الإلكترونى";
|
||||
$lang["sales_customer_address"] = "العنوان";
|
||||
$lang["sales_customer_location"] = "المكان";
|
||||
$lang["sales_customer_discount"] = "الخصم";
|
||||
$lang["sales_customer_email"] = "البريد الإلكترونى";
|
||||
$lang["sales_customer_location"] = "المكان";
|
||||
$lang["sales_customer_mailchimp_status"] = "";
|
||||
$lang["sales_customer_total"] = "المجموع";
|
||||
$lang["sales_date"] = "تاريخ البيع";
|
||||
$lang["sales_date_range"] = "الفترة الزمنية";
|
||||
$lang["sales_date_required"] = "يجب إدخال تاريخ صحيح";
|
||||
$lang["sales_date_type"] = "التاريخ مطلوب";
|
||||
$lang["sales_debit"] = "بطاقة خصم";
|
||||
@@ -29,27 +36,31 @@ $lang["sales_delete_entire_sale"] = "حذف عملية البيع بالكامل
|
||||
$lang["sales_delete_successful"] = "لقد تم حذف عملية البيع بنجاح";
|
||||
$lang["sales_delete_unsuccessful"] = "لقد فشل حذف عملية البيع";
|
||||
$lang["sales_description_abbrv"] = "الوصف";
|
||||
$lang["sales_discard_quote"] = "";
|
||||
$lang["sales_discount"] = "خصم %";
|
||||
$lang["sales_discount_included"] = "% خصم";
|
||||
$lang["sales_discount"] = "الخصم";
|
||||
$lang["sales_discount_short"] = "%";
|
||||
$lang["sales_due"] = "";
|
||||
$lang["sales_due_filter"] = "";
|
||||
$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_giftcard"] = "بطاقة هدية";
|
||||
$lang["sales_giftcard_balance"] = "رصيد بطاقة الهدية";
|
||||
$lang["sales_giftcard_number"] = "رقم بطاقة الهدية";
|
||||
$lang["sales_group_by_category"] = "";
|
||||
$lang["sales_group_by_type"] = "";
|
||||
$lang["sales_id"] = "كود عملية البيع";
|
||||
$lang["sales_invoice"] = "فاتورة";
|
||||
$lang["sales_invoice_confirm"] = "هذه الفاتورة سوف ترسل إلى";
|
||||
$lang["sales_invoice_enable"] = "إنشاء فاتورة";
|
||||
$lang["sales_invoice_filter"] = "الفواتير";
|
||||
$lang["sales_cash_filter"] = "نقدى";
|
||||
$lang["sales_invoice_no_email"] = "هذا العميل ليس لدية بريد الكترونى صالح";
|
||||
$lang["sales_invoice_number"] = "فاتورة رقم #";
|
||||
$lang["sales_invoice_number_duplicate"] = "من فضلك أدخل رقم فاتورة غير مكرر";
|
||||
@@ -69,8 +80,8 @@ $lang["sales_no_description"] = "لايوجد";
|
||||
$lang["sales_no_filter"] = "الكل";
|
||||
$lang["sales_no_items_in_cart"] = "لايوجد أصناف فى السلة";
|
||||
$lang["sales_no_sales_to_display"] = "لاتوجد عمليات بيع لعرضها";
|
||||
$lang["sales_none_selected"] = "لم تقم بإختيار أى عمليات بيع لحذفها";
|
||||
$lang["sales_one_or_multiple"] = "عمليات بيع";
|
||||
$lang["sales_takings"] = "الإيراد";
|
||||
$lang["sales_payment"] = "طريقة الدفع";
|
||||
$lang["sales_payment_amount"] = "المبلغ";
|
||||
$lang["sales_payment_not_cover_total"] = "المبلغ المدفوع لايغطى المبلغ الإجمالى";
|
||||
@@ -79,8 +90,12 @@ $lang["sales_payments_total"] = "إجمالى المدفوعات";
|
||||
$lang["sales_price"] = "السعر";
|
||||
$lang["sales_print_after_sale"] = "اطبع بعد عملية البيع";
|
||||
$lang["sales_quantity"] = "الكمية";
|
||||
$lang["sales_quantity_less_than_zero"] = "تحذير! الكمية المطلوبة غير كافية، بإمكانك إتمام عملية البيع ، لكن تحقق من مخزنك.";
|
||||
$lang["sales_quantity_less_than_reorder_level"] = "إيصال البيع";
|
||||
$lang["sales_quantity_less_than_zero"] = "تحذير! الكمية المطلوبة غير كافية، بإمكانك إتمام عملية البيع ، لكن تحقق من مخزنك.";
|
||||
$lang["sales_quote"] = "";
|
||||
$lang["sales_quote_number"] = "";
|
||||
$lang["sales_quote_sent"] = "";
|
||||
$lang["sales_quote_unsent"] = "";
|
||||
$lang["sales_receipt"] = "عملية بيع #";
|
||||
$lang["sales_receipt_number"] = "إيصال بيع";
|
||||
$lang["sales_receipt_sent"] = "تم إرسال الإيصال إلى";
|
||||
@@ -88,11 +103,16 @@ $lang["sales_receipt_unsent"] = "فشل إرسال الإيصال إلى";
|
||||
$lang["sales_register"] = "مسجل المبيعات";
|
||||
$lang["sales_remove_customer"] = "حذف عميل";
|
||||
$lang["sales_return"] = "إرتجاع";
|
||||
$lang["sales_rewards"] = "";
|
||||
$lang["sales_rewards_balance"] = "";
|
||||
$lang["sales_sale"] = "بيع";
|
||||
$lang["sales_sale_by_invoice"] = "";
|
||||
$lang["sales_sale_for_customer"] = "العميل: ";
|
||||
$lang["sales_sale_time"] = "الوقت";
|
||||
$lang["sales_sales_tax"] = "";
|
||||
$lang["sales_select_customer"] = "اختيار عميل (اختيارى)";
|
||||
$lang["sales_send_invoice"] = "إرسال الفاتورة";
|
||||
$lang["sales_send_quote"] = "";
|
||||
$lang["sales_send_receipt"] = "إرسال إيصال";
|
||||
$lang["sales_serial"] = "مسلسل";
|
||||
$lang["sales_show_invoice"] = "عرض الفاتورة";
|
||||
@@ -107,6 +127,8 @@ $lang["sales_successfully_updated"] = "لقد تم تحديث بيانات عم
|
||||
$lang["sales_suspend_sale"] = "تعليق عملية البيع";
|
||||
$lang["sales_suspended_sale_id"] = "كود عملية البيع";
|
||||
$lang["sales_suspended_sales"] = "المبيعات المعلقة";
|
||||
$lang["sales_table"] = "";
|
||||
$lang["sales_takings"] = "الإيراد";
|
||||
$lang["sales_tax"] = "ضريبة";
|
||||
$lang["sales_tax_percent"] = "ضريبة %";
|
||||
$lang["sales_total"] = "المجموع";
|
||||
@@ -119,5 +141,3 @@ $lang["sales_unsuccessfully_updated"] = "فشل عملية تحديث عملية
|
||||
$lang["sales_unsuspend"] = "إلغاء تعليق";
|
||||
$lang["sales_unsuspend_and_delete"] = "إلغاء تعليق وحذف";
|
||||
$lang["sales_update"] = "تحديث";
|
||||
$lang["sales_date_range"] = "الفترة الزمنية";
|
||||
$lang["sales_none_selected"] = "لم تقم بإختيار أى عمليات بيع لحذفها";
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
|
||||
$lang["suppliers_account_number"] = "حساب رقم#";
|
||||
$lang["suppliers_agency_name"] = "اسم الوكالة";
|
||||
$lang["suppliers_cannot_be_deleted"] = "لايمكن حذف المورد/الموردين لوجود مبيعات مرتبطة بهم";
|
||||
$lang["suppliers_company_name"] = "اسم الشركة";
|
||||
$lang["suppliers_company_name_required"] = "اسم الشركة مطلوب";
|
||||
$lang["suppliers_agency_name"] = "اسم الوكالة";
|
||||
$lang["suppliers_confirm_delete"] = "هل تريد حقا حذف هؤلاء الموردين؟";
|
||||
$lang["suppliers_error_adding_updating"] = "خطاء فى إضافة/تحديث المورد";
|
||||
$lang["suppliers_new"] = "مورد جديد";
|
||||
|
||||
31
application/language/ar-EG/taxes_lang.php
Normal file
31
application/language/ar-EG/taxes_lang.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
$lang["taxes_add_exception"] = "";
|
||||
$lang["taxes_confirm_delete"] = "";
|
||||
$lang["taxes_default_tax_category"] = "";
|
||||
$lang["taxes_error_adding_updating"] = "";
|
||||
$lang["taxes_new"] = "";
|
||||
$lang["taxes_no_taxes_to_display"] = "";
|
||||
$lang["taxes_round_half_down"] = "";
|
||||
$lang["taxes_round_half_even"] = "";
|
||||
$lang["taxes_round_half_odd"] = "";
|
||||
$lang["taxes_round_half_up"] = "";
|
||||
$lang["taxes_rounding_code"] = "";
|
||||
$lang["taxes_sales_tax"] = "";
|
||||
$lang["taxes_sales_tax_by_invoice"] = "";
|
||||
$lang["taxes_successful_deleted"] = "";
|
||||
$lang["taxes_tax_category"] = "";
|
||||
$lang["taxes_tax_code"] = "";
|
||||
$lang["taxes_tax_code_cannot_be_deleted"] = "";
|
||||
$lang["taxes_tax_code_name"] = "";
|
||||
$lang["taxes_tax_code_required"] = "";
|
||||
$lang["taxes_tax_code_successful_deleted"] = "";
|
||||
$lang["taxes_tax_code_successful_updated"] = "";
|
||||
$lang["taxes_tax_code_successful_updating"] = "";
|
||||
$lang["taxes_tax_code_successfully_added"] = "";
|
||||
$lang["taxes_tax_code_type"] = "";
|
||||
$lang["taxes_tax_rate"] = "";
|
||||
$lang["taxes_tax_rate_numeric"] = "";
|
||||
$lang["taxes_tax_rate_required"] = "";
|
||||
$lang["taxes_update"] = "";
|
||||
$lang["taxes_vat_tax"] = "";
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
|
||||
$lang["tables_loading"] = "Loading, please wait...";
|
||||
$lang["tables_rows_per_page"] = "{0} rows per page";
|
||||
$lang["tables_page_from_to"] = "Showing {0} to {1} of {2} rows";
|
||||
$lang["tables_hide_show_pagination"] = "Hide/Show pagination";
|
||||
$lang["tables_refresh"] = "Refresh";
|
||||
$lang["tables_toggle"] = "Toggle";
|
||||
$lang["tables_columns"] = "Columns";
|
||||
$lang["tables_all"] = "All";
|
||||
$lang["tables_columns"] = "Columns";
|
||||
$lang["tables_hide_show_pagination"] = "Hide/Show pagination";
|
||||
$lang["tables_loading"] = "Loading, please wait...";
|
||||
$lang["tables_page_from_to"] = "Showing {0} to {1} of {2} rows";
|
||||
$lang["tables_refresh"] = "Refresh";
|
||||
$lang["tables_rows_per_page"] = "{0} rows per page";
|
||||
$lang["tables_toggle"] = "Toggle";
|
||||
@@ -10,11 +10,14 @@ $lang["common_confirm_search"] = "You have selected one or more rows, these will
|
||||
$lang["common_country"] = "Country";
|
||||
$lang["common_date"] = "Date";
|
||||
$lang["common_delete"] = "Delete";
|
||||
$lang["common_print"] = "Print";
|
||||
$lang["common_det"] = "details";
|
||||
$lang["common_download_import_template"] = "Download Import Excel Template (CSV)";
|
||||
$lang["common_edit"] = "edit";
|
||||
$lang["common_email"] = "Email";
|
||||
$lang["common_email_invalid_format"] = "The email address is not in the proper format";
|
||||
$lang["common_export_excel"] = "Excel Export";
|
||||
$lang["common_export_excel_no"] = "No";
|
||||
$lang["common_export_excel_yes"] = "Yes";
|
||||
$lang["common_fields_required_message"] = "Fields in red are required";
|
||||
$lang["common_first_name"] = "First Name";
|
||||
$lang["common_first_name_required"] = "The first name is a required field.";
|
||||
@@ -22,6 +25,13 @@ $lang["common_first_page"] = "First";
|
||||
$lang["common_gender"] = "Gender";
|
||||
$lang["common_gender_female"] = "F";
|
||||
$lang["common_gender_male"] = "M";
|
||||
$lang["common_id"] = "Id";
|
||||
$lang["common_import"] = "Import";
|
||||
$lang["common_import_change_file"] = "Change";
|
||||
$lang["common_import_excel"] = "Excel Import";
|
||||
$lang["common_import_full_path"] = "Full path to excel file required";
|
||||
$lang["common_import_remove_file"] = "Remove";
|
||||
$lang["common_import_select_file"] = "Select file";
|
||||
$lang["common_inv"] = "inv";
|
||||
$lang["common_last_name"] = "Last Name";
|
||||
$lang["common_last_name_required"] = "The last name is a required field";
|
||||
@@ -38,28 +48,20 @@ $lang["common_phone_number_required"] = "";
|
||||
$lang["common_please_visit_my"] = "Please visit my";
|
||||
$lang["common_powered_by"] = "Powered by";
|
||||
$lang["common_price"] = "Price";
|
||||
$lang["common_print"] = "Print";
|
||||
$lang["common_remove"] = "Remove";
|
||||
$lang["common_required"] = "Required";
|
||||
$lang["common_return_policy"] = "Return Policy";
|
||||
$lang["common_search"] = "Search";
|
||||
$lang["common_search_options"] = "Search options";
|
||||
$lang["common_searched_for"] = "Searched for";
|
||||
$lang["common_state"] = "State";
|
||||
$lang["common_submit"] = "Submit";
|
||||
$lang["common_total_spent"] = "Total Spent";
|
||||
$lang["common_unknown"] = "Unknown";
|
||||
$lang["common_view_recent_sales"] = "View Recent Sales";
|
||||
$lang["common_website"] = "website";
|
||||
$lang["common_welcome"] = "Welcome";
|
||||
$lang["common_welcome_message"] = "Welcome to OSPOS, click a module below to get started!";
|
||||
$lang["common_you_are_using_ospos"] = "You are using Open Source Point Of Sale Version";
|
||||
$lang["common_zip"] = "Zip";
|
||||
$lang["common_import"] = "Import";
|
||||
$lang["common_download_import_template"] = "Download Import Excel Template (CSV)";
|
||||
$lang["common_import_excel"] = "Excel Import";
|
||||
$lang["common_import_full_path"] = "Full path to excel file required";
|
||||
$lang["common_import_select_file"] = "Select file";
|
||||
$lang["common_import_change_file"] = "Change";
|
||||
$lang["common_import_remove_file"] = "Remove";
|
||||
$lang["common_export_excel"] = "Excel Export";
|
||||
$lang["common_export_excel_yes"] = "Yes";
|
||||
$lang["common_export_excel_no"] = "No";
|
||||
$lang["common_required"] = "Required";
|
||||
$lang["common_id"] = "Id";
|
||||
@@ -11,12 +11,14 @@ $lang["config_barcode_configuration"] = "Barcode Configuration";
|
||||
$lang["config_barcode_content"] = "Barcode Content";
|
||||
$lang["config_barcode_first_row"] = "Row 1";
|
||||
$lang["config_barcode_font"] = "Font";
|
||||
$lang["config_barcode_formats"] = "Input Formats";
|
||||
$lang["config_barcode_generate_if_empty"] = "Generate if empty";
|
||||
$lang["config_barcode_height"] = "Height (px)";
|
||||
$lang["config_barcode_id"] = "Item Id/Name";
|
||||
$lang["config_barcode_info"] = "Barcode Configuration Information";
|
||||
$lang["config_barcode_layout"] = "Barcode Layout";
|
||||
$lang["config_barcode_name"] = "Name";
|
||||
$lang["config_barcode_number"] = "UPC/EAN/ISBN";
|
||||
$lang["config_barcode_number"] = "Barcode";
|
||||
$lang["config_barcode_number_in_row"] = "Number in row";
|
||||
$lang["config_barcode_page_cellspacing"] = "Display page cellspacing";
|
||||
$lang["config_barcode_page_width"] = "Display page width";
|
||||
@@ -26,22 +28,25 @@ $lang["config_barcode_second_row"] = "Row 2";
|
||||
$lang["config_barcode_third_row"] = "Row 3";
|
||||
$lang["config_barcode_type"] = "Barcode Type";
|
||||
$lang["config_barcode_width"] = "Width (px)";
|
||||
$lang["config_barcode_generate_if_empty"] = "Generate if empty";
|
||||
$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_center"] = "Center";
|
||||
$lang["config_comma"] = "comma";
|
||||
$lang["config_company"] = "Company Name";
|
||||
$lang["config_company_logo"] = "Company Logo";
|
||||
$lang["config_company_select_image"] = "Select Image";
|
||||
$lang["config_company_change_image"] = "Change Image";
|
||||
$lang["config_company_logo"] = "Company Logo";
|
||||
$lang["config_company_remove_image"] = "Remove Image";
|
||||
$lang["config_company_required"] = "Company name is a required field";
|
||||
$lang["config_company_select_image"] = "Select Image";
|
||||
$lang["config_company_website_url"] = "Company website is not a valid URL (http://...)";
|
||||
$lang["config_comma"] = "comma";
|
||||
$lang["config_country_codes"] = "Country Codes";
|
||||
$lang["config_country_codes_tooltip"] = "Comma separated list of country codes for nominatim address lookup.";
|
||||
$lang["config_currency_symbol"] = "Currency Symbol";
|
||||
$lang["config_currency_decimals"] = "Currency Decimals";
|
||||
$lang["config_currency_symbol"] = "Currency Symbol";
|
||||
$lang["config_custom1"] = "Custom Field 1";
|
||||
$lang["config_custom10"] = "Custom Field 10";
|
||||
$lang["config_custom2"] = "Custom Field 2";
|
||||
$lang["config_custom3"] = "Custom Field 3";
|
||||
$lang["config_custom4"] = "Custom Field 4";
|
||||
@@ -50,14 +55,20 @@ $lang["config_custom6"] = "Custom Field 6";
|
||||
$lang["config_custom7"] = "Custom Field 7";
|
||||
$lang["config_custom8"] = "Custom Field 8";
|
||||
$lang["config_custom9"] = "Custom Field 9";
|
||||
$lang["config_custom10"] = "Custom Field 10";
|
||||
$lang["config_datetimeformat"] = "Date and Time format";
|
||||
$lang["config_customer_reward"] = "Reward";
|
||||
$lang["config_customer_reward_duplicate"] = "Please use an unique reward name";
|
||||
$lang["config_customer_reward_enable"] = "Enable Customer Rewards";
|
||||
$lang["config_customer_reward_invalid_chars"] = "The reward name can not contain '_'";
|
||||
$lang["config_customer_reward_required"] = "Reward is a required field";
|
||||
$lang["config_customer_sales_tax_support"] = "Customer Sales Tax Support";
|
||||
$lang["config_date_or_time_format"] = "Date and Time Filter";
|
||||
$lang["config_datetimeformat"] = "Date and Time Format";
|
||||
$lang["config_decimal_point"] = "Decimal Point";
|
||||
$lang["config_default_barcode_font_size_number"] = "The default barcode font size must be a number";
|
||||
$lang["config_default_barcode_font_size_required"] = "The default barcode font size is a required field";
|
||||
$lang["config_default_barcode_height_number"] = "The default barcode height must be a number";
|
||||
$lang["config_default_barcode_height_number"] = "The default barcode height must be a number";
|
||||
$lang["config_default_barcode_height_required"] = "The default barcode height is a required field";
|
||||
$lang["config_default_barcode_num_in_row_number"] = "The default barcode num in row must be a number";
|
||||
$lang["config_default_barcode_num_in_row_number"] = "The default barcode number in row must be a number";
|
||||
$lang["config_default_barcode_num_in_row_required"] = "The default barcode num in row is a required field";
|
||||
$lang["config_default_barcode_page_cellspacing_number"] = "The default barcode page cellspacing must be a number";
|
||||
$lang["config_default_barcode_page_cellspacing_required"] = "The default barcode page cellspacing is a required field";
|
||||
@@ -67,42 +78,74 @@ $lang["config_default_barcode_quality_number"] = "The default barcode quality mu
|
||||
$lang["config_default_barcode_quality_required"] = "The default barcode quality is a required field";
|
||||
$lang["config_default_barcode_width_number"] = "The default barcode width must be a number";
|
||||
$lang["config_default_barcode_width_required"] = "The default barcode width is a required field";
|
||||
$lang["config_default_origin_tax_code"] = "Default Origin Tax Code";
|
||||
$lang["config_default_sales_discount"] = "Default Sales Discount %";
|
||||
$lang["config_default_sales_discount_number"] = "The default sales discount must be a number";
|
||||
$lang["config_default_sales_discount_required"] = "The default sales discount is a required field";
|
||||
$lang["config_default_tax_name_number"] = "The default tax name must be a string";
|
||||
$lang["config_default_tax_name_required"] = "The default tax name is a required field";
|
||||
$lang["config_default_tax_rate"] = "Default Tax Rate %";
|
||||
$lang["config_default_tax_rate_1"] = "Tax 1 Rate";
|
||||
$lang["config_default_tax_rate_2"] = "Tax 2 Rate";
|
||||
$lang["config_default_tax_rate_number"] = "The default tax rate must be a number";
|
||||
$lang["config_default_tax_rate_required"] = "The default tax rate is a required field";
|
||||
$lang["config_default_tax_name_required"] = "The default tax name is a required field";
|
||||
$lang["config_dinner_table"] = "Table";
|
||||
$lang["config_dinner_table_duplicate"] = "Please use an unique table name";
|
||||
$lang["config_dinner_table_enable"] = "Enable Dinner Tables";
|
||||
$lang["config_dinner_table_invalid_chars"] = "The table name can not contain '_'";
|
||||
$lang["config_dinner_table_required"] = "Table is a required field";
|
||||
$lang["config_dot"] = "dot";
|
||||
$lang["config_email"] = "Email";
|
||||
$lang["config_email_configuration"] = "Email Configuration";
|
||||
$lang["config_email_protocol"] = "Protocol";
|
||||
$lang["config_email_mailpath"] = "Path to Sendmail";
|
||||
$lang["config_email_smtp_host"] = "SMTP Server";
|
||||
$lang["config_email_smtp_port"] = "SMTP Port";
|
||||
$lang["config_email_protocol"] = "Protocol";
|
||||
$lang["config_email_smtp_crypto"] = "SMTP Encryption";
|
||||
$lang["config_email_smtp_host"] = "SMTP Server";
|
||||
$lang["config_email_smtp_pass"] = "SMTP Password";
|
||||
$lang["config_email_smtp_port"] = "SMTP Port";
|
||||
$lang["config_email_smtp_timeout"] = "SMTP Timeout (s)";
|
||||
$lang["config_email_smtp_user"] = "SMTP Username";
|
||||
$lang["config_email_smtp_pass"] = "SMTP Password";
|
||||
$lang["config_fax"] = "Fax";
|
||||
$lang["config_financial_year"] = "Financial Year Start";
|
||||
$lang["config_financial_year_apr"] = "1st of April";
|
||||
$lang["config_financial_year_aug"] = "1st of August";
|
||||
$lang["config_financial_year_dec"] = "1st of December";
|
||||
$lang["config_financial_year_feb"] = "1st of February";
|
||||
$lang["config_financial_year_jan"] = "1st of January";
|
||||
$lang["config_financial_year_jul"] = "1st of July";
|
||||
$lang["config_financial_year_jun"] = "1st of June";
|
||||
$lang["config_financial_year_mar"] = "1st of March";
|
||||
$lang["config_financial_year_may"] = "1st of May";
|
||||
$lang["config_financial_year_nov"] = "1st of November";
|
||||
$lang["config_financial_year_oct"] = "1st of October";
|
||||
$lang["config_financial_year_sep"] = "1st of September";
|
||||
$lang["config_gcaptcha_enable"] = "Login Page reCAPTCHA";
|
||||
$lang["config_gcaptcha_secret_key"] = "reCAPTCHA Secret Key";
|
||||
$lang["config_gcaptcha_secret_key_required"] = "reCAPTCHA Secret Key is a required field";
|
||||
$lang["config_gcaptcha_site_key"] = "reCAPTCHA Site Key";
|
||||
$lang["config_gcaptcha_site_key_required"] = "reCAPTCHA Site Key is a required field";
|
||||
$lang["config_gcaptcha_tooltip"] = "Protect the Login page with Google reCAPTCHA, click the icon for an API key pair";
|
||||
$lang["config_general"] = "General";
|
||||
$lang["config_general_configuration"] = "General Configuration";
|
||||
$lang["config_giftcard_number"] = "Gift Card Number";
|
||||
$lang["config_giftcard_random"] = "Generate Random";
|
||||
$lang["config_giftcard_series"] = "Generate in Series";
|
||||
$lang["config_info"] = "Information";
|
||||
$lang["config_info_configuration"] = "Store Information";
|
||||
$lang["config_invoice"] = "Invoice";
|
||||
$lang["config_invoice_configuration"] = "Invoice Print Settings";
|
||||
$lang["config_invoice_default_comments"] = "Default Invoice Comments";
|
||||
$lang["config_invoice_enable"] = "Enable Invoicing";
|
||||
$lang["config_invoice_email_message"] = "Invoice Email Template";
|
||||
$lang["config_invoice_enable"] = "Enable Invoicing";
|
||||
$lang["config_invoice_printer"] = "Invoice Printer";
|
||||
$lang["config_jsprintsetup_required"] = "Warning! This disabled functionality will only work if you have the FireFox jsPrintSetup addon installed. Save anyway?";
|
||||
$lang["config_language"] = "Language";
|
||||
$lang["config_last_used_invoice_number"] = "Last Used Invoice Number";
|
||||
$lang["config_last_used_quote_number"] = "Last Used Quote Number";
|
||||
$lang["config_left"] = "Left";
|
||||
$lang["config_license"] = "License";
|
||||
$lang["config_license_configuration"] = "License Statement";
|
||||
$lang["config_line_sequence"] = "Line Sequence";
|
||||
$lang["config_lines_per_page"] = "Lines Per Page";
|
||||
$lang["config_lines_per_page_number"] = "";
|
||||
$lang["config_lines_per_page_required"] = "The lines per page is a required field";
|
||||
@@ -113,19 +156,30 @@ $lang["config_location"] = "Stock";
|
||||
$lang["config_location_configuration"] = "Stock Locations";
|
||||
$lang["config_location_info"] = "Location Configuration Information";
|
||||
$lang["config_logout"] = "Don't you want to make a backup before logging out? Click [OK] to backup, [Cancel] to logout";
|
||||
$lang["config_mailchimp"] = "Mailchimp";
|
||||
$lang["config_mailchimp_api_key"] = "Mailchimp API Key";
|
||||
$lang["config_mailchimp_configuration"] = "Mailchimp Configuration";
|
||||
$lang["config_mailchimp_key_successfully"] = "Valid API Key";
|
||||
$lang["config_mailchimp_key_unsuccessfully"] = "Invalid API Key";
|
||||
$lang["config_mailchimp_lists"] = "Mailchimp List(s)";
|
||||
$lang["config_mailchimp_tooltip"] = "Click the icon for an API key";
|
||||
$lang["config_message"] = "Message";
|
||||
$lang["config_message_configuration"] = "Message Configuration";
|
||||
$lang["config_msg_msg"] = "Saved Text Message";
|
||||
$lang["config_msg_msg_placeholder"] = "If you wish to use a SMS template save your message here. Otherwise leave the box blank.";
|
||||
$lang["config_msg_uid"] = "SMS-API Username";
|
||||
$lang["config_msg_uid_required"] = "SMS-API Username is a required field";
|
||||
$lang["config_msg_pwd"] = "SMS-API Password";
|
||||
$lang["config_msg_pwd_required"] = "SMS-API Password is a required field";
|
||||
$lang["config_msg_src"] = "SMS-API Sender ID";
|
||||
$lang["config_msg_src_required"] = "SMS-API Sender ID is a required field";
|
||||
$lang["config_msg_uid"] = "SMS-API Username";
|
||||
$lang["config_msg_uid_required"] = "SMS-API Username is a required field";
|
||||
$lang["config_none"] = "none";
|
||||
$lang["config_notify_alignment"] = "Notification Popup Position";
|
||||
$lang["config_number_format"] = "Number Format";
|
||||
$lang["config_number_locale"] = "Localisation";
|
||||
$lang["config_number_locale_invalid"] = "The entered locale is invalid. Check the link in the tooltip to find a sensible value";
|
||||
$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_payment_options_order"] = "Payment Options Order";
|
||||
$lang["config_phone"] = "Company Phone";
|
||||
$lang["config_phone_required"] = "Company phone is a required field";
|
||||
@@ -147,38 +201,47 @@ $lang["config_print_top_margin_required"] = "The default top margin is a require
|
||||
$lang["config_quantity_decimals"] = "Quantity Decimals";
|
||||
$lang["config_receipt"] = "Receipt";
|
||||
$lang["config_receipt_configuration"] = "Receipt Print Settings";
|
||||
$lang["config_receipt_default"] = "Default";
|
||||
$lang["config_receipt_font_size"] = "Font Size";
|
||||
$lang["config_receipt_font_size_number"] = "The font size must be a number";
|
||||
$lang["config_receipt_font_size_required"] = "The font size is a required field";
|
||||
$lang["config_receipt_info"] = "Receipt Configuration Information";
|
||||
$lang["config_receipt_printer"] = "Ticket Printer";
|
||||
$lang["config_receipt_show_taxes"] = "Show Taxes";
|
||||
$lang["config_receipt_show_total_discount"] = "Show Total Discount";
|
||||
$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_taxes"] = "Show Taxes";
|
||||
$lang["config_receipt_show_total_discount"] = "Show Total Discount";
|
||||
$lang["config_receipt_template"] = "Receipt Template";
|
||||
$lang["config_receipt_default"] = "Default";
|
||||
$lang["config_receipt_short"] = "Short";
|
||||
$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_return_policy_required"] = "Return policy is a required field";
|
||||
$lang["config_reward"] = "Reward";
|
||||
$lang["config_reward_configuration"] = "Reward Configuration";
|
||||
$lang["config_right"] = "Right";
|
||||
$lang["config_sales_invoice_format"] = "Sales Invoice Format";
|
||||
$lang["config_sales_quote_format"] = "Sales Quote Format";
|
||||
$lang["config_saved_successfully"] = "Configuration saved successfully";
|
||||
$lang["config_saved_unsuccessfully"] = "Configuration saved unsuccessfully";
|
||||
$lang["config_statistics"] = "Send statistics";
|
||||
$lang["config_statistics"] = "Send Statistics";
|
||||
$lang["config_statistics_tooltip"] = "Send statistics for development and feature improvement purposes";
|
||||
$lang["config_stock_location"] = "Stock location";
|
||||
$lang["config_stock_location_duplicate"] = "Please use an unique location name";
|
||||
$lang["config_stock_location_invalid_chars"] = "The stock location name can not contain '_'";
|
||||
$lang["config_stock_location_required"] = "Stock location is a required field";
|
||||
$lang["config_table"] = "Table";
|
||||
$lang["config_table_configuration"] = "Table Configuration";
|
||||
$lang["config_takings_printer"] = "Takings Printer";
|
||||
$lang["config_tax"] = "Tax";
|
||||
$lang["config_tax_category"] = "Tax Category";
|
||||
$lang["config_tax_category_used"] = "Tax category cannot be deleted because it is being used.";
|
||||
$lang["config_tax_configuration"] = "Tax Configuration";
|
||||
$lang["config_tax_decimals"] = "Tax Decimals";
|
||||
$lang["config_tax_included"] = "Tax Included";
|
||||
$lang["config_theme"] = "Theme";
|
||||
$lang["config_thousands_separator"] = "Thousands Separator";
|
||||
$lang["config_timezone"] = "Timezone";
|
||||
$lang["config_top"] = "Top";
|
||||
$lang["config_website"] = "Website";
|
||||
$lang["config_number_locale"] = "Localisation";
|
||||
$lang["config_return_policy_required"] = "Return policy is a required field";
|
||||
$lang["config_number_locale_required"] = "Number Locale is a required field";
|
||||
$lang["config_number_locale_invalid"] = "The entered locale is invalid. Check the link in the tooltip to find a sensible value";
|
||||
$lang["config_number_locale_tooltip"] = "Find a suitable locale through this link";
|
||||
$lang["config_theme"] = "Theme";
|
||||
@@ -2,23 +2,44 @@
|
||||
|
||||
$lang["customers_account_number"] = "Account #";
|
||||
$lang["customers_account_number_duplicate"] = "This account number is already present in the database";
|
||||
$lang["customers_available_points"] = "Available Points";
|
||||
$lang["customers_average"] = "Average spent";
|
||||
$lang["customers_avg_discount"] = "Average discount";
|
||||
$lang["customers_basic_information"] = "Information";
|
||||
$lang["customers_cannot_be_deleted"] = "Could not deleted selected customers, one or more of the selected customers has sales.";
|
||||
$lang["customers_company_name"] = "Company";
|
||||
$lang["customers_confirm_delete"] = "Are you sure you want to delete the selected customers?";
|
||||
$lang["customers_customer"] = "Customer";
|
||||
$lang["customers_discount"] = "Discount";
|
||||
$lang["customers_email_duplicate"] = "The email address is already present in the database";
|
||||
$lang["customers_error_adding_updating"] = "Error adding/updating customer";
|
||||
$lang["customers_excel_import_failed"] = "Excel import failed";
|
||||
$lang["customers_excel_import_nodata_wrongformat"] = "Your uploaded file has no data or wrong format";
|
||||
$lang["customers_excel_import_partially_failed"] = "Most Customers imported. But some were not, here is the list";
|
||||
$lang["customers_excel_import_success"] = "Import of Customers successful";
|
||||
$lang["customers_import_items_excel"] = "Import customers from Excel sheet";
|
||||
$lang["customers_mailchimp_activity_click"] = "Email click";
|
||||
$lang["customers_mailchimp_activity_lastopen"] = "Last open email";
|
||||
$lang["customers_mailchimp_activity_open"] = "Email open";
|
||||
$lang["customers_mailchimp_activity_total"] = "Email sent";
|
||||
$lang["customers_mailchimp_activity_unopen"] = "Email unopen";
|
||||
$lang["customers_mailchimp_email_client"] = "Email client";
|
||||
$lang["customers_mailchimp_info"] = "Mailchimp";
|
||||
$lang["customers_mailchimp_member_rating"] = "Rating";
|
||||
$lang["customers_mailchimp_status"] = "Status";
|
||||
$lang["customers_mailchimp_vip"] = "VIP";
|
||||
$lang["customers_max"] = "Max spent";
|
||||
$lang["customers_min"] = "Min spent";
|
||||
$lang["customers_new"] = "New Customer";
|
||||
$lang["customers_none_selected"] = "You have not selected any customers to delete";
|
||||
$lang["customers_one_or_multiple"] = "customer(s)";
|
||||
$lang["customers_quantity"] = "Quantity";
|
||||
$lang["customers_stats_info"] = "Stats";
|
||||
$lang["customers_successful_adding"] = "You have successfully added customer";
|
||||
$lang["customers_successful_deleted"] = "You have successfully deleted";
|
||||
$lang["customers_successful_updating"] = "You have successfully updated customer";
|
||||
$lang["customers_tax_code"] = "Tax Code";
|
||||
$lang["customers_taxable"] = "Taxable";
|
||||
$lang["customers_total"] = "Total";
|
||||
$lang["customers_total"] = "Total spent";
|
||||
$lang["customers_update"] = "Update Customer";
|
||||
$lang["customers_import_items_excel"] = "Import customers from Excel sheet";
|
||||
$lang["customers_excel_import_failed"] = "Excel import failed";
|
||||
$lang["customers_excel_import_nodata_wrongformat"] = "Your uploaded file has no data or wrong format";
|
||||
$lang["customers_excel_import_success"] = "Import of Customers successful";
|
||||
$lang["customers_excel_import_partially_failed"] = "Most Customers imported. But some were not, here is the list";
|
||||
$lang["rewards_package"] = "Rewards Package";
|
||||
@@ -1,21 +1,22 @@
|
||||
<?php
|
||||
|
||||
$lang["datepicker_today"] = "Today";
|
||||
$lang["datepicker_weekstart"] = "0";
|
||||
$lang["datepicker_all_time"] = "All Time";
|
||||
$lang["datepicker_last_7"] = "Last 7 Days";
|
||||
$lang["datepicker_last_30"] = "Last 30 Days";
|
||||
$lang["datepicker_last_month"] = "Last Month";
|
||||
$lang["datepicker_last_year"] = "Last Year";
|
||||
$lang["datepicker_this_month"] = "This Month";
|
||||
$lang["datepicker_this_month_last_year"] = "Same Month Last Year";
|
||||
$lang["datepicker_same_month_to_today"] = "This Month To Today";
|
||||
$lang["datepicker_same_month_to_same_day_last_year"] = "Same Month To Same Day Last Year";
|
||||
$lang["datepicker_this_year"] = "This Year";
|
||||
$lang["datepicker_today_last_year"] = "Today Last Year";
|
||||
$lang["datepicker_yesterday"] = "Yesterday";
|
||||
$lang["datepicker_apply"] = "Apply";
|
||||
$lang["datepicker_cancel"] = "Cancel";
|
||||
$lang["datepicker_from"] = "From";
|
||||
$lang["datepicker_to"] = "To";
|
||||
$lang["datepicker_custom"] = "Custom";
|
||||
$lang["datepicker_from"] = "From";
|
||||
$lang["datepicker_last_30"] = "Last 30 Days";
|
||||
$lang["datepicker_last_7"] = "Last 7 Days";
|
||||
$lang["datepicker_last_financial_year"] = "Last Financial Year";
|
||||
$lang["datepicker_last_month"] = "Last Month";
|
||||
$lang["datepicker_last_year"] = "Last Year";
|
||||
$lang["datepicker_same_month_last_year"] = "Same Month Last Year";
|
||||
$lang["datepicker_same_month_to_same_day_last_year"] = "Same Month To Same Day Last Year";
|
||||
$lang["datepicker_this_financial_year"] = "This Financial Year";
|
||||
$lang["datepicker_this_month"] = "This Month";
|
||||
$lang["datepicker_this_year"] = "This Year";
|
||||
$lang["datepicker_to"] = "To";
|
||||
$lang["datepicker_today"] = "Today";
|
||||
$lang["datepicker_today_last_year"] = "Today Last Year";
|
||||
$lang["datepicker_weekstart"] = "0";
|
||||
$lang["datepicker_yesterday"] = "Yesterday";
|
||||
@@ -2,7 +2,10 @@
|
||||
|
||||
$lang["employees_basic_information"] = "Information";
|
||||
$lang["employees_cannot_be_deleted"] = "Could not deleted selected employees, one or more of the employees has processed sales or you are trying to delete yourself :)";
|
||||
$lang["employees_change_password"] = "Change Password";
|
||||
$lang["employees_confirm_delete"] = "Are you sure you want to delete the selected employees?";
|
||||
$lang["employees_current_password"] = "Current Password";
|
||||
$lang["employees_current_password_invalid"] = "Invalid Current Password";
|
||||
$lang["employees_employee"] = "Employee";
|
||||
$lang["employees_error_adding_updating"] = "Error adding/updating employee";
|
||||
$lang["employees_error_deleting_demo_admin"] = "You can not delete the demo admin user";
|
||||
@@ -14,15 +17,18 @@ $lang["employees_one_or_multiple"] = "employee(s)";
|
||||
$lang["employees_password"] = "Password";
|
||||
$lang["employees_password_minlength"] = "Passwords must be at least 8 characters";
|
||||
$lang["employees_password_must_match"] = "Passwords do not match";
|
||||
$lang["employees_password_not_must_match"] = "Current password and new password should not be the same";
|
||||
$lang["employees_password_required"] = "Password is required";
|
||||
$lang["employees_permission_desc"] = "Check the boxes below to grant access to modules";
|
||||
$lang["employees_permission_info"] = "Permissions";
|
||||
$lang["employees_repeat_password"] = "Password Again";
|
||||
$lang["employees_subpermission_required"] = "Add at least one grant for each module";
|
||||
$lang["employees_successful_adding"] = "You have successfully added employee";
|
||||
$lang["employees_successful_change_password"] = "Password successfully changed";
|
||||
$lang["employees_successful_deleted"] = "You have successfully deleted";
|
||||
$lang["employees_successful_updating"] = "You have successfully updated employee";
|
||||
$lang["employees_unsuccessful_change_password"] = "Password unsuccessfully changed";
|
||||
$lang["employees_update"] = "Update Employee";
|
||||
$lang["employees_username"] = "Username";
|
||||
$lang["employees_username_minlength"] = "The username must be at least 5 characters";
|
||||
$lang["employees_username_required"] = "Username is a required field";
|
||||
$lang["employees_subpermission_required"] = "Add at least one grant for each module";
|
||||
9
application/language/az-AZ/enum_lang.php
Normal file
9
application/language/az-AZ/enum_lang.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
$lang["enum_half_down"] = "Half Down";
|
||||
$lang["enum_half_even"] = "Half Even";
|
||||
$lang["enum_half_five"] = "Half Five";
|
||||
$lang["enum_half_odd"] = "Half Odd";
|
||||
$lang["enum_half_up"] = "Half Up";
|
||||
$lang["enum_round_down"] = "Round Down";
|
||||
$lang["enum_round_up"] = "Round Up";
|
||||
18
application/language/az-AZ/form_validation_lang.php
Normal file
18
application/language/az-AZ/form_validation_lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
$lang["alpha_dash"] = "";
|
||||
$lang["alpha_numeric"] = "";
|
||||
$lang["exact_length"] = "";
|
||||
$lang["greater_than"] = "";
|
||||
$lang["is_natural"] = "";
|
||||
$lang["is_natural_no_zero"] = "";
|
||||
$lang["is_numeric"] = "";
|
||||
$lang["is_unique"] = "";
|
||||
$lang["less_than"] = "";
|
||||
$lang["max_length"] = "";
|
||||
$lang["min_length"] = "";
|
||||
$lang["regex_match"] = "";
|
||||
$lang["valid_email"] = "";
|
||||
$lang["valid_emails"] = "";
|
||||
$lang["valid_ip"] = "";
|
||||
$lang["valid_url"] = "";
|
||||
@@ -3,10 +3,10 @@
|
||||
$lang["giftcards_add_minus"] = "Inventory to add/subtract";
|
||||
$lang["giftcards_allow_alt_description"] = "Allow Alt Description";
|
||||
$lang["giftcards_amazon"] = "Amazon";
|
||||
$lang["giftcards_remaining_balance"] = "Giftcard %1 remaining value is %2!";
|
||||
$lang["giftcards_bulk_edit"] = "Bulk Edit";
|
||||
$lang["giftcards_cannot_be_deleted"] = "Could not deleted selected giftcards, one or more of the selected giftcards has sales.";
|
||||
$lang["giftcards_cannot_find_giftcard"] = "Cannot find any information about giftcard";
|
||||
$lang["giftcards_cannot_use"] = "Giftcard %1 cannot be used for this sale. Invalid Customer!";
|
||||
$lang["giftcards_card_value"] = "Value";
|
||||
$lang["giftcards_category"] = "Category";
|
||||
$lang["giftcards_change_all_to_allow_alt_desc"] = "Allow Alt Desc For All";
|
||||
@@ -47,6 +47,7 @@ $lang["giftcards_one_or_multiple"] = "giftcard(s)";
|
||||
$lang["giftcards_person_id"] = "Customer";
|
||||
$lang["giftcards_quantity"] = "Quantity";
|
||||
$lang["giftcards_quantity_required"] = "Quantity is a required field. Please Close ( X ) to cancel";
|
||||
$lang["giftcards_remaining_balance"] = "Giftcard %1 remaining value is %2!";
|
||||
$lang["giftcards_reorder_level"] = "Reorder Level";
|
||||
$lang["giftcards_retrive_giftcard_info"] = "Retrieve Giftcard Info";
|
||||
$lang["giftcards_sales_tax_1"] = "Sales Tax";
|
||||
@@ -62,7 +63,7 @@ $lang["giftcards_tax_2"] = "Tax 2";
|
||||
$lang["giftcards_tax_percent"] = "Tax Percent";
|
||||
$lang["giftcards_tax_percents"] = "Tax Percent(s)";
|
||||
$lang["giftcards_unit_price"] = "Unit Price";
|
||||
$lang["giftcards_upc_database"] = "UPC Database";
|
||||
$lang["giftcards_upc_database"] = "Barcode Database";
|
||||
$lang["giftcards_update"] = "Update Giftcard";
|
||||
$lang["giftcards_use_inventory_menu"] = "Use Inv. Menu";
|
||||
$lang["giftcards_value"] = "Giftcard Value must be a number";
|
||||
@@ -1,20 +1,30 @@
|
||||
<?php
|
||||
|
||||
$lang["item_kits_add_item"] = "Add Item";
|
||||
$lang["item_kits_all"] = "All";
|
||||
$lang["item_kits_cannot_be_deleted"] = "Could not delete item kit(s)";
|
||||
$lang["item_kits_confirm_delete"] = "Are you sure you want to delete the selected item kits?";
|
||||
$lang["item_kits_description"] = "Item Kit Description";
|
||||
$lang["item_kits_discount_percent"] = "Discount Percent";
|
||||
$lang["item_kits_error_adding_updating"] = "Error adding/updating Item Kit";
|
||||
$lang["item_kits_find_kit_item"] = "Kit Item";
|
||||
$lang["item_kits_info"] = "Item Kit Info";
|
||||
$lang["item_kits_item"] = "Item";
|
||||
$lang["item_kits_items"] = "Items";
|
||||
$lang["item_kits_kit"] = "Kit Id";
|
||||
$lang["item_kits_kit_and_components"] = "Kit and Components";
|
||||
$lang["item_kits_kit_and_stock"] = "Kit and Stock";
|
||||
$lang["item_kits_kit_only"] = "Kit Only";
|
||||
$lang["item_kits_name"] = "Item Kit Name";
|
||||
$lang["item_kits_new"] = "New Item Kit";
|
||||
$lang["item_kits_no_item_kits_to_display"] = "No item kits to display";
|
||||
$lang["item_kits_none_selected"] = "You have not selected any item kits";
|
||||
$lang["item_kits_one_or_multiple"] = "Item Kit(s)";
|
||||
$lang["item_kits_price_option"] = "Price Option";
|
||||
$lang["item_kits_priced_only"] = "Priced Only";
|
||||
$lang["item_kits_print_option"] = "Print Option";
|
||||
$lang["item_kits_quantity"] = "Quantity";
|
||||
$lang["item_kits_sequence"] = "Sequence";
|
||||
$lang["item_kits_successful_adding"] = "You have successfully added Item Kit";
|
||||
$lang["item_kits_successful_deleted"] = "You have successfully deleted";
|
||||
$lang["item_kits_successful_updating"] = "You have successfully updated Item Kit";
|
||||
@@ -10,10 +10,11 @@ $lang["items_cannot_be_deleted"] = "Could not deleted selected items, one or mor
|
||||
$lang["items_cannot_find_item"] = "Cannot find any information about item";
|
||||
$lang["items_category"] = "Category";
|
||||
$lang["items_category_required"] = "Category is a required field";
|
||||
$lang["items_change_all_to_allow_alt_desc"] = " Allow Alt Desc For All";
|
||||
$lang["items_change_all_to_allow_alt_desc"] = "Allow Alt Desc For All";
|
||||
$lang["items_change_all_to_not_allow_allow_desc"] = "Not Allow Alt Desc For All";
|
||||
$lang["items_change_all_to_serialized"] = "Change All To Serialized";
|
||||
$lang["items_change_all_to_unserialized"] = "Change All To Unserialized";
|
||||
$lang["items_change_image"] = "Change Image";
|
||||
$lang["items_confirm_bulk_edit"] = "Are you sure you want to edit all the items selected?";
|
||||
$lang["items_confirm_bulk_edit_wipe_taxes"] = "All item tax information will be replaced!";
|
||||
$lang["items_confirm_delete"] = "Are you sure you want to delete the selected items?";
|
||||
@@ -27,24 +28,31 @@ $lang["items_details_count"] = "Inventory Count Details";
|
||||
$lang["items_do_nothing"] = "Do Nothing";
|
||||
$lang["items_edit_fields_you_want_to_update"] = "Edit the fields you want to edit for ALL selected items";
|
||||
$lang["items_edit_multiple_items"] = "Editing Multiple Items";
|
||||
$lang["items_empty_upc_items"] = "Empty Barcode Items";
|
||||
$lang["items_error_adding_updating"] = "Error adding/updating item";
|
||||
$lang["items_error_updating_multiple"] = "Error updating items";
|
||||
$lang["items_excel_import_failed"] = "Excel import failed";
|
||||
$lang["items_excel_import_nodata_wrongformat"] = "Your uploaded file has no data or wrong format";
|
||||
$lang["items_excel_import_success"] = "Import of Items successful";
|
||||
$lang["items_excel_import_partially_failed"] = "Most Items imported. But some were not, here is the list";
|
||||
$lang["items_excel_import_success"] = "Import of Items successful";
|
||||
$lang["items_generate_barcodes"] = "Generate Barcodes";
|
||||
$lang["items_image"] = "Avatar";
|
||||
$lang["items_import_items_excel"] = "Import items from Excel sheet";
|
||||
$lang["items_info_provided_by"] = "Info provided by";
|
||||
$lang["items_inventory"] = "Inventory";
|
||||
$lang["items_inventory_comments"] = "Comments";
|
||||
$lang["items_inventory_data_tracking"] = "Inventory Data Tracking";
|
||||
$lang["items_inventory_date"] = "Date";
|
||||
$lang["items_inventory_employee"] = "Employee";
|
||||
$lang["items_inventory_in_out_quantity"] = "In/Out Qty";
|
||||
$lang["items_inventory_remarks"] = "Remarks";
|
||||
$lang["items_is_deleted"] = "Deleted";
|
||||
$lang["items_is_serialized"] = "Item has Serial Number";
|
||||
$lang["items_item"] = "Item";
|
||||
$lang["items_item_number"] = "UPC/EAN/ISBN";
|
||||
$lang["items_item_number"] = "Barcode";
|
||||
$lang["items_item_number_duplicate"] = "The item number is already present in the database";
|
||||
$lang["items_kit"] = "Kit";
|
||||
$lang["items_location"] = "Location";
|
||||
$lang["items_empty_upc_items"] = "Empty UPC Items";
|
||||
$lang["items_low_inventory_items"] = "Out Of Stock Items";
|
||||
$lang["items_manually_editing_of_quantity"] = "Manual Edit of Quantity";
|
||||
$lang["items_name"] = "Item Name";
|
||||
@@ -54,22 +62,29 @@ $lang["items_no_description_items"] = "No Description Items";
|
||||
$lang["items_no_items_to_display"] = "No Items to display";
|
||||
$lang["items_none"] = "None";
|
||||
$lang["items_none_selected"] = "You have not selected any items to edit";
|
||||
$lang["items_nonstock"] = "Non stocked";
|
||||
$lang["items_number_information"] = "Item Number";
|
||||
$lang["items_number_required"] = "UPC/EAN/ISBN is a required field";
|
||||
$lang["items_number_required"] = "Barcode is a required field";
|
||||
$lang["items_one_or_multiple"] = "item(s)";
|
||||
$lang["items_quantity"] = "Quantity";
|
||||
$lang["items_quantity_number"] = "Quantity must be a number";
|
||||
$lang["items_quantity_required"] = "Quantity is a required field";
|
||||
$lang["items_receiving_quantity"] = "Receiving quantity";
|
||||
$lang["items_remove_image"] = "Remove Image";
|
||||
$lang["items_reorder_level"] = "Reorder Level";
|
||||
$lang["items_reorder_level_number"] = "Reorder level must be a number";
|
||||
$lang["items_reorder_level_required"] = "Reorder level is a required field";
|
||||
$lang["items_retrive_item_info"] = "Retrive Item Info";
|
||||
$lang["items_sales_tax_1"] = "Sales Tax";
|
||||
$lang["items_sales_tax_2"] = "Sales Tax 2";
|
||||
$lang["items_search_custom_items"] = "Search Custom Fields";
|
||||
$lang["items_search_attributes"] = "Search Attributes";
|
||||
$lang["items_search_custom_items"] = "Search Custom Items";
|
||||
$lang["items_select_image"] = "Select Image";
|
||||
$lang["items_serialized_items"] = "Serialized Items";
|
||||
$lang["items_standard"] = "Standard";
|
||||
$lang["items_stock"] = "Stock";
|
||||
$lang["items_stock_location"] = "Stock location";
|
||||
$lang["items_stock_type"] = "Stock Type";
|
||||
$lang["items_successful_adding"] = "You have successfully added item";
|
||||
$lang["items_successful_bulk_edit"] = "You have successfully updated the selected items";
|
||||
$lang["items_successful_deleted"] = "You have successfully deleted";
|
||||
@@ -80,13 +95,10 @@ $lang["items_tax_2"] = "Tax 2";
|
||||
$lang["items_tax_percent"] = "Tax Percent";
|
||||
$lang["items_tax_percent_required"] = "Tax Percent is a required field";
|
||||
$lang["items_tax_percents"] = "Tax Percent(s)";
|
||||
$lang["items_type"] = "Item Type";
|
||||
$lang["items_unit_price"] = "Retail Price";
|
||||
$lang["items_unit_price_number"] = "Unit price must be a number";
|
||||
$lang["items_unit_price_required"] = "Retail Price is a required field";
|
||||
$lang["items_upc_database"] = "UPC Database";
|
||||
$lang["items_upc_database"] = "Barcode Database";
|
||||
$lang["items_update"] = "Update Item";
|
||||
$lang["items_use_inventory_menu"] = "Use Inv. Menu";
|
||||
$lang["items_import_items_excel"] = "Import items from Excel sheet";
|
||||
$lang["items_select_image"] = "Select Image";
|
||||
$lang["items_change_image"] = "Change Image";
|
||||
$lang["items_remove_image"] = "Remove Image";
|
||||
10
application/language/az-AZ/login_lang.php
Normal file
10
application/language/az-AZ/login_lang.php
Normal file
@@ -0,0 +1,10 @@
|
||||
<?php
|
||||
|
||||
$lang["login_gcaptcha"] = "I'm not a robot";
|
||||
$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";
|
||||
$lang["login_invalid_username_and_password"] = "Invalid username or password";
|
||||
$lang["login_login"] = "Login";
|
||||
$lang["login_password"] = "Password";
|
||||
$lang["login_username"] = "Username";
|
||||
@@ -1,14 +1,14 @@
|
||||
<?php
|
||||
|
||||
$lang["messages_sms_send"] = "Send SMS";
|
||||
$lang["messages_first_name"] = "First name";
|
||||
$lang["messages_last_name"] = "Last name";
|
||||
$lang["messages_phone"] = "Phone number";
|
||||
$lang["messages_phone_placeholder"] = "Mobile Number(s) here...";
|
||||
$lang["messages_phone_number_required"] = "Phone number required";
|
||||
$lang["messages_message"] = "Message";
|
||||
$lang["messages_message_placeholder"] = "Your Message here...";
|
||||
$lang["messages_message_required"] = "Message required";
|
||||
$lang["messages_multiple_phones"] = "(In case of multiple recipients, enter mobile numbers separated by commas)";
|
||||
$lang["messages_phone"] = "Phone number";
|
||||
$lang["messages_phone_number_required"] = "Phone number required";
|
||||
$lang["messages_phone_placeholder"] = "Mobile Number(s) here...";
|
||||
$lang["messages_sms_send"] = "Send SMS";
|
||||
$lang["messages_successfully_sent"] = "Message successfully sent to: ";
|
||||
$lang["messages_unsuccessfully_sent"] = "Message unsuccessfully sent to: ";
|
||||
7
application/language/az-AZ/migrate_lang.php
Normal file
7
application/language/az-AZ/migrate_lang.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
$lang["migrate_backup"] = "Be sure to back up your database before applying any database upgrades.";
|
||||
$lang["migrate_failed"] = "The migration did not complete.";
|
||||
$lang["migrate_info"] = "Click on Start Migration only if you are ready to apply all database changes and data upgrades to your database";
|
||||
$lang["migrate_start"] = "Start Migration ";
|
||||
$lang["migrate_success"] = "Migration completed successfully";
|
||||
@@ -13,6 +13,10 @@ $lang["module_item_kits"] = "Item Kits";
|
||||
$lang["module_item_kits_desc"] = "Add, Update, Delete and Search Item Kits";
|
||||
$lang["module_items"] = "Items";
|
||||
$lang["module_items_desc"] = "Add, Update, Delete, and Search items";
|
||||
$lang["module_messages"] = "Messages";
|
||||
$lang["module_messages_desc"] = "Send Messages to Customers, Suppliers, Employees et al.";
|
||||
$lang["module_migrate"] = "Migrate";
|
||||
$lang["module_migrate_desc"] = "Update the OSPOS Database";
|
||||
$lang["module_receivings"] = "Receivings";
|
||||
$lang["module_receivings_desc"] = "Process Purchase orders";
|
||||
$lang["module_reports"] = "Reports";
|
||||
@@ -21,5 +25,5 @@ $lang["module_sales"] = "Sales";
|
||||
$lang["module_sales_desc"] = "Process sales and returns";
|
||||
$lang["module_suppliers"] = "Suppliers";
|
||||
$lang["module_suppliers_desc"] = "Add, Update, Delete, and Search suppliers";
|
||||
$lang["module_messages"] = "Messages";
|
||||
$lang["module_messages_desc"] = "Send Messages to Customers, Suppliers, Employees et al.";
|
||||
$lang["module_taxes"] = "Taxes";
|
||||
$lang["module_taxes_desc"] = "Configure sales taxes";
|
||||
@@ -1,17 +1,16 @@
|
||||
<?php
|
||||
|
||||
$lang["receivings_transaction_failed"] = "Receivings Transactions Failed";
|
||||
$lang["receivings_cancel_receiving"] = "Cancel";
|
||||
$lang["receivings_cannot_be_deleted"] = "Receiving(s) could not be deleted";
|
||||
$lang["receivings_comments"] = "Comments";
|
||||
$lang["receivings_complete_receiving"] = "Finish";
|
||||
$lang["receivings_confirm_cancel_receiving"] = "Are you sure you want to clear this receiving? All items will cleared.";
|
||||
$lang["receivings_confirm_delete"] = "Are you sure you want to delete this receiving, this action cannot be undone";
|
||||
$lang["receivings_confirm_finish_receiving"] = "Are you sure you want to submit this receiving? This cannot be undone.";
|
||||
$lang["receivings_cost"] = "Cost";
|
||||
$lang["receivings_date"] = "Receiving Date";
|
||||
$lang["receivings_date_required"] = "A correct date needs to be filled in";
|
||||
$lang["receivings_date_type"] = "Date field is required";
|
||||
$lang["receivings_confirm_delete"] = "Are you sure you want to delete this receiving, this action cannot be undone";
|
||||
$lang["receivings_delete_entire_sale"] = "Delete entire sale";
|
||||
$lang["receivings_discount"] = "Disc %";
|
||||
$lang["receivings_edit"] = "Edit";
|
||||
@@ -22,7 +21,6 @@ $lang["receivings_error_requisition"] = "Unable to move inventory from and to th
|
||||
$lang["receivings_find_or_scan_item"] = "Find/Scan Item";
|
||||
$lang["receivings_find_or_scan_item_or_receipt"] = "Find/Scan Item OR Receipt";
|
||||
$lang["receivings_id"] = "Receiving ID";
|
||||
$lang["receivings_reference"] = "Reference";
|
||||
$lang["receivings_item_name"] = "Item Name";
|
||||
$lang["receivings_mode"] = "Receiving Mode";
|
||||
$lang["receivings_new_supplier"] = "New Supplier";
|
||||
@@ -32,6 +30,7 @@ $lang["receivings_quantity"] = "Qty.";
|
||||
$lang["receivings_receipt"] = "Receivings Receipt";
|
||||
$lang["receivings_receipt_number"] = "Receiving #";
|
||||
$lang["receivings_receiving"] = "Receive";
|
||||
$lang["receivings_reference"] = "Reference";
|
||||
$lang["receivings_register"] = "Items Receiving";
|
||||
$lang["receivings_requisition"] = "Requisition";
|
||||
$lang["receivings_return"] = "Return";
|
||||
@@ -43,10 +42,11 @@ $lang["receivings_stock_source"] = "Stock source";
|
||||
$lang["receivings_successfully_deleted"] = "You have successfully deleted";
|
||||
$lang["receivings_successfully_updated"] = "Receiving successfully updated";
|
||||
$lang["receivings_supplier"] = "Supplier";
|
||||
$lang["receivings_supplier_email"] = "Email";
|
||||
$lang["receivings_supplier_address"] = "Address";
|
||||
$lang["receivings_supplier_email"] = "Email";
|
||||
$lang["receivings_supplier_location"] = "Location";
|
||||
$lang["receivings_total"] = "Total";
|
||||
$lang["receivings_transaction_failed"] = "Receivings Transactions Failed";
|
||||
$lang["receivings_unable_to_add_item"] = "Unable to add item to receiving";
|
||||
$lang["receivings_unsuccessfully_updated"] = "Receiving unsuccessfully updated";
|
||||
$lang["receivings_update"] = "Update";
|
||||
@@ -5,6 +5,8 @@ $lang["reports_categories"] = "Categories";
|
||||
$lang["reports_categories_summary_report"] = "Categories Summary Report";
|
||||
$lang["reports_category"] = "Category";
|
||||
$lang["reports_comments"] = "Comments";
|
||||
$lang["reports_cost"] = "Cost";
|
||||
$lang["reports_cost_price"] = "Cost Price";
|
||||
$lang["reports_count"] = "Count";
|
||||
$lang["reports_customer"] = "Customer";
|
||||
$lang["reports_customers"] = "Customers";
|
||||
@@ -20,6 +22,7 @@ $lang["reports_discount"] = "Discount";
|
||||
$lang["reports_discount_percent"] = "Discount Percent";
|
||||
$lang["reports_discounts"] = "Discounts";
|
||||
$lang["reports_discounts_summary_report"] = "Discounts Summary Report";
|
||||
$lang["reports_earned"] = "Points Earned";
|
||||
$lang["reports_employee"] = "Employee";
|
||||
$lang["reports_employees"] = "Employees";
|
||||
$lang["reports_employees_summary_report"] = "Employees Summary Report";
|
||||
@@ -31,6 +34,7 @@ $lang["reports_inventory_reports"] = "Inventory Reports";
|
||||
$lang["reports_inventory_summary"] = "Inventory Summary";
|
||||
$lang["reports_inventory_summary_report"] = "Inventory Summary Report";
|
||||
$lang["reports_item"] = "Item";
|
||||
$lang["reports_item_count"] = "Filter Item Count";
|
||||
$lang["reports_item_name"] = "Item Name";
|
||||
$lang["reports_item_number"] = "Item Number";
|
||||
$lang["reports_items"] = "Items";
|
||||
@@ -39,14 +43,16 @@ $lang["reports_items_received"] = "Items Received";
|
||||
$lang["reports_items_summary_report"] = "Items Summary Report";
|
||||
$lang["reports_low_inventory"] = "";
|
||||
$lang["reports_low_inventory_report"] = "";
|
||||
$lang["reports_more_than_zero"] = "More than zero";
|
||||
$lang["reports_name"] = "Name";
|
||||
$lang["reports_no_reports_to_display"] = "No Items to display";
|
||||
$lang["reports_payment_type"] = "Payment Type";
|
||||
$lang["reports_payments"] = "Payments";
|
||||
$lang["reports_payments_summary_report"] = "Payments Summary Report";
|
||||
$lang["reports_profit"] = "Profit";
|
||||
$lang["reports_cost"] = "Cost";
|
||||
$lang["reports_quantity"] = "Quantity";
|
||||
$lang["reports_quantity_purchased"] = "Quantity Purchased";
|
||||
$lang["reports_quotes"] = "Quotes";
|
||||
$lang["reports_received_by"] = "Received By";
|
||||
$lang["reports_receiving_id"] = "Receiving ID";
|
||||
$lang["reports_receiving_type"] = "Receiving Type";
|
||||
@@ -75,6 +81,7 @@ $lang["reports_serial_number"] = "Serial #";
|
||||
$lang["reports_sold_by"] = "Sold By";
|
||||
$lang["reports_sold_to"] = "Sold To";
|
||||
$lang["reports_stock_location"] = "Stock Location";
|
||||
$lang["reports_sub_total_value"] = "Sub Total";
|
||||
$lang["reports_subtotal"] = "Subtotal";
|
||||
$lang["reports_summary_reports"] = "Summary Reports";
|
||||
$lang["reports_supplied_by"] = "Supplied by";
|
||||
@@ -86,12 +93,8 @@ $lang["reports_tax_percent"] = "Tax Percent";
|
||||
$lang["reports_taxes"] = "Taxes";
|
||||
$lang["reports_taxes_summary_report"] = "Taxes Summary Report";
|
||||
$lang["reports_total"] = "Total";
|
||||
$lang["reports_type"] = "Type";
|
||||
$lang["reports_item_count"] = "Filter Item Count";
|
||||
$lang["reports_cost_price"] = "Cost Price";
|
||||
$lang["reports_unit_price"] = "Retail Price";
|
||||
$lang["reports_sub_total_value"] = "Sub Total";
|
||||
$lang["reports_total_inventory_value"] = "Total Inventory Value";
|
||||
$lang["reports_type"] = "Type";
|
||||
$lang["reports_unit_price"] = "Retail Price";
|
||||
$lang["reports_used"] = "Points Used";
|
||||
$lang["reports_zero_and_less"] = "Zero and less";
|
||||
$lang["reports_more_than_zero"] = "More than zero";
|
||||
$lang["reports_no_reports_to_display"] = "No Items to display";
|
||||
@@ -1,13 +1,18 @@
|
||||
<?php
|
||||
|
||||
$lang["customers_available_points"] = "Available Points";
|
||||
$lang["rewards_package"] = "Rewards";
|
||||
$lang["rewards_remaining_balance"] = "Reward Points remaining value is ";
|
||||
$lang["sales_add_payment"] = "Add Payment";
|
||||
$lang["sales_amount_due"] = "Amount Due";
|
||||
$lang["sales_amount_tendered"] = "Amount Tendered";
|
||||
$lang["sales_cancel_sale"] = "Cancel";
|
||||
$lang["sales_cash"] = "Cash";
|
||||
$lang["sales_cash_filter"] = "Cash";
|
||||
$lang["sales_change_due"] = "Change Due";
|
||||
$lang["sales_check"] = "Check";
|
||||
$lang["sales_check_balance"] = "Check remainder";
|
||||
$lang["sales_check_filter"] = "Check";
|
||||
$lang["sales_comment"] = "Comment";
|
||||
$lang["sales_comments"] = "Comments";
|
||||
$lang["sales_complete_sale"] = "Complete";
|
||||
@@ -15,12 +20,14 @@ $lang["sales_confirm_cancel_sale"] = "Are you sure you want to clear this sale?
|
||||
$lang["sales_confirm_delete"] = "Are you sure you want to delete the selected sales?";
|
||||
$lang["sales_credit"] = "Credit Card";
|
||||
$lang["sales_customer"] = "Name";
|
||||
$lang["sales_customer_email"] = "Email";
|
||||
$lang["sales_customer_address"] = "Address";
|
||||
$lang["sales_customer_location"] = "Location";
|
||||
$lang["sales_customer_discount"] = "Discount";
|
||||
$lang["sales_customer_email"] = "Email";
|
||||
$lang["sales_customer_location"] = "Location";
|
||||
$lang["sales_customer_mailchimp_status"] = "Mailchimp status";
|
||||
$lang["sales_customer_total"] = "Total";
|
||||
$lang["sales_date"] = "Sale Date";
|
||||
$lang["sales_date_range"] = "Date Range";
|
||||
$lang["sales_date_required"] = "A correct date needs to be filled in";
|
||||
$lang["sales_date_type"] = "Date field is required";
|
||||
$lang["sales_debit"] = "Debit Card";
|
||||
@@ -29,27 +36,31 @@ $lang["sales_delete_entire_sale"] = "Delete entire sale";
|
||||
$lang["sales_delete_successful"] = "You have successfully deleted a sale";
|
||||
$lang["sales_delete_unsuccessful"] = "You have unsuccessfully deleted a sale";
|
||||
$lang["sales_description_abbrv"] = "Desc";
|
||||
$lang["sales_discard_quote"] = "Discard";
|
||||
$lang["sales_discount"] = "Disc %";
|
||||
$lang["sales_discount_included"] = "% Discount";
|
||||
$lang["sales_discount"] = "Discount";
|
||||
$lang["sales_discount_short"] = "%";
|
||||
$lang["sales_due"] = "Due";
|
||||
$lang["sales_due_filter"] = "Due";
|
||||
$lang["sales_edit"] = "Edit";
|
||||
$lang["sales_edit_item"] = "Edit Item";
|
||||
$lang["sales_edit_sale"] = "Edit Sale";
|
||||
$lang["sales_email_receipt"] = "Email Receipt";
|
||||
$lang["sales_employee"] = "Employee";
|
||||
$lang["sales_entry"] = "Entry";
|
||||
$lang["sales_error_editing_item"] = "Error editing item";
|
||||
$lang["sales_find_or_scan_item"] = "Find/Scan Item";
|
||||
$lang["sales_find_or_scan_item_or_receipt"] = "Find/Scan Item OR Receipt";
|
||||
$lang["sales_giftcard"] = "Gift Card";
|
||||
$lang["sales_giftcard_balance"] = "Giftcard Balance";
|
||||
$lang["sales_giftcard_number"] = "Gift Card Number";
|
||||
$lang["sales_group_by_category"] = "Group by Category";
|
||||
$lang["sales_group_by_type"] = "Group by Type";
|
||||
$lang["sales_id"] = "Sale ID";
|
||||
$lang["sales_invoice"] = "Invoice";
|
||||
$lang["sales_invoice_confirm"] = "This invoice will be sent to";
|
||||
$lang["sales_invoice_enable"] = "Create Invoice";
|
||||
$lang["sales_invoice_filter"] = "Invoices";
|
||||
$lang["sales_cash_filter"] = "Cash";
|
||||
$lang["sales_invoice_no_email"] = "This customer does not have a valid email address";
|
||||
$lang["sales_invoice_number"] = "Invoice #";
|
||||
$lang["sales_invoice_number_duplicate"] = "Please enter an unique invoice number";
|
||||
@@ -69,8 +80,8 @@ $lang["sales_no_description"] = "None";
|
||||
$lang["sales_no_filter"] = "All";
|
||||
$lang["sales_no_items_in_cart"] = "There are no items in the cart";
|
||||
$lang["sales_no_sales_to_display"] = "No sales to display";
|
||||
$lang["sales_none_selected"] = "You have not selected any sales to delete";
|
||||
$lang["sales_one_or_multiple"] = "sale(s)";
|
||||
$lang["sales_takings"] = "Takings";
|
||||
$lang["sales_payment"] = "Payment Type";
|
||||
$lang["sales_payment_amount"] = "Amount";
|
||||
$lang["sales_payment_not_cover_total"] = "Payment Amount does not cover Total";
|
||||
@@ -79,8 +90,12 @@ $lang["sales_payments_total"] = "Payments Total";
|
||||
$lang["sales_price"] = "Price";
|
||||
$lang["sales_print_after_sale"] = "Print after sale";
|
||||
$lang["sales_quantity"] = "Qty.";
|
||||
$lang["sales_quantity_less_than_zero"] = "Warning, Desired Quantity is Insufficient. You can still process the sale, but check your inventory";
|
||||
$lang["sales_quantity_less_than_reorder_level"] = "Warning, Desired Quantity is below reorder level";
|
||||
$lang["sales_quantity_less_than_zero"] = "Warning, Desired Quantity is Insufficient. You can still process the sale, but check your inventory";
|
||||
$lang["sales_quote"] = "Quote";
|
||||
$lang["sales_quote_number"] = "Quote Number";
|
||||
$lang["sales_quote_sent"] = "Quote sent to";
|
||||
$lang["sales_quote_unsent"] = "Quote failed to be sent to";
|
||||
$lang["sales_receipt"] = "Sales Receipt";
|
||||
$lang["sales_receipt_number"] = "Sale #";
|
||||
$lang["sales_receipt_sent"] = "Receipt sent to";
|
||||
@@ -88,17 +103,22 @@ $lang["sales_receipt_unsent"] = "Receipt failed to be sent to";
|
||||
$lang["sales_register"] = "Sales Register";
|
||||
$lang["sales_remove_customer"] = "Remove Customer";
|
||||
$lang["sales_return"] = "Return";
|
||||
$lang["sales_rewards"] = "Reward Points";
|
||||
$lang["sales_rewards_balance"] = "Reward Points Balance";
|
||||
$lang["sales_sale"] = "Sale";
|
||||
$lang["sales_sale_by_invoice"] = "Sale by Invoice";
|
||||
$lang["sales_sale_for_customer"] = "Customer:";
|
||||
$lang["sales_sale_time"] = "Time";
|
||||
$lang["sales_sales_tax"] = "Sales Tax";
|
||||
$lang["sales_select_customer"] = "Select Customer (Optional)";
|
||||
$lang["sales_send_invoice"] = "Send Invoice";
|
||||
$lang["sales_send_quote"] = "Send Quote";
|
||||
$lang["sales_send_receipt"] = "Send Receipt";
|
||||
$lang["sales_serial"] = "Serial";
|
||||
$lang["sales_show_invoice"] = "Show Invoice";
|
||||
$lang["sales_show_receipt"] = "Show Receipt";
|
||||
$lang["sales_start_typing_customer_name"] = "Start Typing customer's name...";
|
||||
$lang["sales_start_typing_item_name"] = "Start Typing item's name or scan barcode...";
|
||||
$lang["sales_start_typing_customer_name"] = "Start typing customer's details...";
|
||||
$lang["sales_start_typing_item_name"] = "Start typing item's name or scan barcode...";
|
||||
$lang["sales_stock_location"] = "Stock location";
|
||||
$lang["sales_sub_total"] = "Sub Total";
|
||||
$lang["sales_successfully_deleted"] = "You have successfully deleted";
|
||||
@@ -107,6 +127,8 @@ $lang["sales_successfully_updated"] = "Sale successfully updated";
|
||||
$lang["sales_suspend_sale"] = "Suspend";
|
||||
$lang["sales_suspended_sale_id"] = "ID";
|
||||
$lang["sales_suspended_sales"] = "Suspended";
|
||||
$lang["sales_table"] = "Table";
|
||||
$lang["sales_takings"] = "Takings";
|
||||
$lang["sales_tax"] = "Tax";
|
||||
$lang["sales_tax_percent"] = "Tax %";
|
||||
$lang["sales_total"] = "Total";
|
||||
@@ -117,7 +139,5 @@ $lang["sales_unsuccessfully_deleted"] = "Sale(s) could not be deleted";
|
||||
$lang["sales_unsuccessfully_suspended_sale"] = "Your sale has been unsuccessfully suspended";
|
||||
$lang["sales_unsuccessfully_updated"] = "Sale unsuccessfully updated";
|
||||
$lang["sales_unsuspend"] = "Unsuspend";
|
||||
$lang["sales_unsuspend_and_delete"] = "";
|
||||
$lang["sales_unsuspend_and_delete"] = "Action";
|
||||
$lang["sales_update"] = "Update";
|
||||
$lang["sales_date_range"] = "Date Range";
|
||||
$lang["sales_none_selected"] = "You have not selected any sales to delete";
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
|
||||
$lang["suppliers_account_number"] = "Account #";
|
||||
$lang["suppliers_agency_name"] = "Agency Name";
|
||||
$lang["suppliers_cannot_be_deleted"] = "Could not deleted selected suppliers, one or more of the selected suppliers has sales.";
|
||||
$lang["suppliers_company_name"] = "Company Name";
|
||||
$lang["suppliers_company_name_required"] = "Company Name is a required field";
|
||||
$lang["suppliers_agency_name"] = "Agency Name";
|
||||
$lang["suppliers_confirm_delete"] = "Are you sure you want to delete the selected suppliers?";
|
||||
$lang["suppliers_error_adding_updating"] = "Error adding/updating supplier";
|
||||
$lang["suppliers_new"] = "New Supplier";
|
||||
31
application/language/az-AZ/taxes_lang.php
Normal file
31
application/language/az-AZ/taxes_lang.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
$lang["taxes_add_exception"] = "Add Exception";
|
||||
$lang["taxes_confirm_delete"] = "Confirm deletion of tax code";
|
||||
$lang["taxes_default_tax_category"] = "Default Tax Category";
|
||||
$lang["taxes_error_adding_updating"] = "Error adding/updating tax code";
|
||||
$lang["taxes_new"] = "New Tax Code";
|
||||
$lang["taxes_no_taxes_to_display"] = "No taxes code available to display";
|
||||
$lang["taxes_round_half_down"] = "Half Down";
|
||||
$lang["taxes_round_half_even"] = "Half Even";
|
||||
$lang["taxes_round_half_odd"] = "Half Odd";
|
||||
$lang["taxes_round_half_up"] = "Half Up";
|
||||
$lang["taxes_rounding_code"] = "Rounding Code";
|
||||
$lang["taxes_sales_tax"] = "Sales Tax";
|
||||
$lang["taxes_sales_tax_by_invoice"] = "Sales Tax by Invoice";
|
||||
$lang["taxes_successful_deleted"] = "You have successfully deleted";
|
||||
$lang["taxes_tax_category"] = "Tax Category";
|
||||
$lang["taxes_tax_code"] = "Tax Code";
|
||||
$lang["taxes_tax_code_cannot_be_deleted"] = "Could not delete selected tax code";
|
||||
$lang["taxes_tax_code_name"] = "Tax Code Name";
|
||||
$lang["taxes_tax_code_required"] = "Tax code is a required field";
|
||||
$lang["taxes_tax_code_successful_deleted"] = "You have successfully deleted tax code";
|
||||
$lang["taxes_tax_code_successful_updated"] = "You have successfully updated";
|
||||
$lang["taxes_tax_code_successful_updating"] = "You have successfully updated tax code";
|
||||
$lang["taxes_tax_code_successfully_added"] = "You have successfully added";
|
||||
$lang["taxes_tax_code_type"] = "Tax Code Type";
|
||||
$lang["taxes_tax_rate"] = "Tax Rate";
|
||||
$lang["taxes_tax_rate_numeric"] = "Tax rate must be a number";
|
||||
$lang["taxes_tax_rate_required"] = "Tax rate is a required field";
|
||||
$lang["taxes_update"] = "Update Sales Category Tax";
|
||||
$lang["taxes_vat_tax"] = "VAT Tax";
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
|
||||
$lang["tables_loading"] = "Lade, bitte warten...";
|
||||
$lang["tables_rows_per_page"] = "{0} Einträge pro Seite";
|
||||
$lang["tables_page_from_to"] = "Zeige {0} bis {1} von {2} Zeile(n)";
|
||||
$lang["tables_hide_show_pagination"] = "Hide/Show pagination";
|
||||
$lang["tables_refresh"] = "Refresh";
|
||||
$lang["tables_toggle"] = "Umschalten";
|
||||
$lang["tables_columns"] = "Spalten";
|
||||
$lang["tables_all"] = "All";
|
||||
$lang["tables_columns"] = "Spalten";
|
||||
$lang["tables_hide_show_pagination"] = "Hide/Show pagination";
|
||||
$lang["tables_loading"] = "Lade, bitte warten...";
|
||||
$lang["tables_page_from_to"] = "Zeige {0} bis {1} von {2} Zeile(n)";
|
||||
$lang["tables_refresh"] = "Refresh";
|
||||
$lang["tables_rows_per_page"] = "{0} Einträge pro Seite";
|
||||
$lang["tables_toggle"] = "Umschalten";
|
||||
|
||||
@@ -10,11 +10,14 @@ $lang["common_confirm_search"] = "Sie haben einen oder mehrere Zeilen gewählt.
|
||||
$lang["common_country"] = "Land";
|
||||
$lang["common_date"] = "Datum";
|
||||
$lang["common_delete"] = "Löschen";
|
||||
$lang["common_print"] = "Drucken";
|
||||
$lang["common_det"] = "Details";
|
||||
$lang["common_download_import_template"] = "Download Import Excel Voralge (CSV)";
|
||||
$lang["common_edit"] = "Ändern";
|
||||
$lang["common_email"] = "Email";
|
||||
$lang["common_email_invalid_format"] = "Das Email Format ist nicht korrekt";
|
||||
$lang["common_export_excel"] = "Excel Export";
|
||||
$lang["common_export_excel_no"] = "No";
|
||||
$lang["common_export_excel_yes"] = "Yes";
|
||||
$lang["common_fields_required_message"] = "Die Felder in rot sind erforderlich";
|
||||
$lang["common_first_name"] = "Vorname";
|
||||
$lang["common_first_name_required"] = "Vorname ist erforderlich";
|
||||
@@ -22,6 +25,13 @@ $lang["common_first_page"] = "Erste";
|
||||
$lang["common_gender"] = "Geschlecht";
|
||||
$lang["common_gender_female"] = "F";
|
||||
$lang["common_gender_male"] = "M";
|
||||
$lang["common_id"] = "Id";
|
||||
$lang["common_import"] = "Import";
|
||||
$lang["common_import_change_file"] = "Change";
|
||||
$lang["common_import_excel"] = "Excel Import";
|
||||
$lang["common_import_full_path"] = "Voller Dateipfad zum Excel File notwendig";
|
||||
$lang["common_import_remove_file"] = "Remove";
|
||||
$lang["common_import_select_file"] = "Select file";
|
||||
$lang["common_inv"] = "Lag";
|
||||
$lang["common_last_name"] = "Nachname";
|
||||
$lang["common_last_name_required"] = "Nachname ist erforderlich";
|
||||
@@ -38,28 +48,20 @@ $lang["common_phone_number_required"] = "Telefon ist erforderlich";
|
||||
$lang["common_please_visit_my"] = "Bitte beuschen Sie ";
|
||||
$lang["common_powered_by"] = "Powered by";
|
||||
$lang["common_price"] = "Preis";
|
||||
$lang["common_print"] = "Drucken";
|
||||
$lang["common_remove"] = "Annulieren";
|
||||
$lang["common_required"] = "Erforderlich";
|
||||
$lang["common_return_policy"] = "Rücknahmepolitik";
|
||||
$lang["common_search"] = "Suche";
|
||||
$lang["common_search_options"] = "Suchkriterien";
|
||||
$lang["common_searched_for"] = "Gescuht nach";
|
||||
$lang["common_state"] = "BL/Kanton";
|
||||
$lang["common_submit"] = "Senden";
|
||||
$lang["common_total_spent"] = "";
|
||||
$lang["common_unknown"] = "";
|
||||
$lang["common_view_recent_sales"] = "Letzte Verkäufe";
|
||||
$lang["common_website"] = "Website";
|
||||
$lang["common_welcome"] = "Willkommen";
|
||||
$lang["common_welcome_message"] = "Willkommen bei OSPOS, zum Beginnen auf ein Modul klicken";
|
||||
$lang["common_you_are_using_ospos"] = "Sie verwenden Open Source Point Of Sale Version";
|
||||
$lang["common_zip"] = "PLZ";
|
||||
$lang["common_import"] = "Import";
|
||||
$lang["common_download_import_template"] = "Download Import Excel Voralge (CSV)";
|
||||
$lang["common_import_excel"] = "Excel Import";
|
||||
$lang["common_import_full_path"] = "Voller Dateipfad zum Excel File notwendig";
|
||||
$lang["common_import_select_file"] = "Select file";
|
||||
$lang["common_import_change_file"] = "Change";
|
||||
$lang["common_import_remove_file"] = "Remove";
|
||||
$lang["common_export_excel"] = "Excel Export";
|
||||
$lang["common_export_excel_yes"] = "Yes";
|
||||
$lang["common_export_excel_no"] = "No";
|
||||
$lang["common_required"] = "Erforderlich";
|
||||
$lang["common_id"] = "Id";
|
||||
|
||||
@@ -11,6 +11,8 @@ $lang["config_barcode_configuration"] = "Barcodes";
|
||||
$lang["config_barcode_content"] = "Barcode Inhalt";
|
||||
$lang["config_barcode_first_row"] = "Erste Zeile";
|
||||
$lang["config_barcode_font"] = "Schrift";
|
||||
$lang["config_barcode_formats"] = "";
|
||||
$lang["config_barcode_generate_if_empty"] = "Generiere Barcode wenn leer";
|
||||
$lang["config_barcode_height"] = "Höhe";
|
||||
$lang["config_barcode_id"] = "Artikel-Nr/Name";
|
||||
$lang["config_barcode_info"] = "Barcode Einstellung";
|
||||
@@ -26,22 +28,25 @@ $lang["config_barcode_second_row"] = "Zeile 2";
|
||||
$lang["config_barcode_third_row"] = "Zeile 3";
|
||||
$lang["config_barcode_type"] = "Barcode Typ";
|
||||
$lang["config_barcode_width"] = "Breite (px)";
|
||||
$lang["config_barcode_generate_if_empty"] = "Generiere Barcode wenn leer";
|
||||
$lang["config_bottom"] = "Bottom";
|
||||
$lang["config_cash_decimals"] = "";
|
||||
$lang["config_cash_decimals_tooltip"] = "";
|
||||
$lang["config_cash_rounding"] = "";
|
||||
$lang["config_center"] = "Center";
|
||||
$lang["config_comma"] = "comma";
|
||||
$lang["config_company"] = "Firmenname";
|
||||
$lang["config_company_logo"] = "Logo";
|
||||
$lang["config_company_select_image"] = "Select Image";
|
||||
$lang["config_company_change_image"] = "Change Image";
|
||||
$lang["config_company_logo"] = "Logo";
|
||||
$lang["config_company_remove_image"] = "Remove Image";
|
||||
$lang["config_company_required"] = "Firmenname ist erforderlich";
|
||||
$lang["config_company_select_image"] = "Select Image";
|
||||
$lang["config_company_website_url"] = "Webseite ist nicht in korrektem Format";
|
||||
$lang["config_comma"] = "comma";
|
||||
$lang["config_country_codes"] = "Country Codes";
|
||||
$lang["config_country_codes_tooltip"] = "Comma separated list of country codes for nominatim address lookup.";
|
||||
$lang["config_currency_symbol"] = "Währungssymbol";
|
||||
$lang["config_currency_decimals"] = "Currency Decimals";
|
||||
$lang["config_currency_symbol"] = "Währungssymbol";
|
||||
$lang["config_custom1"] = "Zusatzfeld 1";
|
||||
$lang["config_custom10"] = "Zusatzfeld 10";
|
||||
$lang["config_custom2"] = "Zusatzfeld 2";
|
||||
$lang["config_custom3"] = "Zusatzfeld 3";
|
||||
$lang["config_custom4"] = "Zusatzfeld 4";
|
||||
@@ -50,7 +55,13 @@ $lang["config_custom6"] = "Zusatzfeld 6";
|
||||
$lang["config_custom7"] = "Zusatzfeld 7";
|
||||
$lang["config_custom8"] = "Zusatzfeld 8";
|
||||
$lang["config_custom9"] = "Zusatzfeld 9";
|
||||
$lang["config_custom10"] = "Zusatzfeld 10";
|
||||
$lang["config_customer_reward"] = "";
|
||||
$lang["config_customer_reward_duplicate"] = "";
|
||||
$lang["config_customer_reward_enable"] = "";
|
||||
$lang["config_customer_reward_invalid_chars"] = "";
|
||||
$lang["config_customer_reward_required"] = "";
|
||||
$lang["config_customer_sales_tax_support"] = "";
|
||||
$lang["config_date_or_time_format"] = "";
|
||||
$lang["config_datetimeformat"] = "Datum und Zeit";
|
||||
$lang["config_decimal_point"] = "Dezimaltrennzeichen";
|
||||
$lang["config_default_barcode_font_size_number"] = "Die Barcode Schriftgrösse muss eine Zahl sein";
|
||||
@@ -67,42 +78,74 @@ $lang["config_default_barcode_quality_number"] = "Die Barcode Qualität muss ein
|
||||
$lang["config_default_barcode_quality_required"] = "Die Barcode Qualität ist erforderlich";
|
||||
$lang["config_default_barcode_width_number"] = "Die Barcode Breite muss eine Zahl sein";
|
||||
$lang["config_default_barcode_width_required"] = "Die Barcode Breite ist erforderlich";
|
||||
$lang["config_default_origin_tax_code"] = "";
|
||||
$lang["config_default_sales_discount"] = "Standard Verkaufsrabatt";
|
||||
$lang["config_default_sales_discount_number"] = "Der Standard Verkaufsrabatt muss eine Zahl sein";
|
||||
$lang["config_default_sales_discount_required"] = "Der Standard Verkaufsrabatt ist erforderlich";
|
||||
$lang["config_default_tax_name_number"] = "";
|
||||
$lang["config_default_tax_name_required"] = "The default tax name is a required field";
|
||||
$lang["config_default_tax_rate"] = "MWSt %";
|
||||
$lang["config_default_tax_rate_1"] = "MWSt 1";
|
||||
$lang["config_default_tax_rate_2"] = "MWSt 2";
|
||||
$lang["config_default_tax_rate_number"] = "MWSt Rate";
|
||||
$lang["config_default_tax_rate_required"] = "MWSt ist erforderlich";
|
||||
$lang["config_default_tax_name_required"] = "The default tax name is a required field";
|
||||
$lang["config_dinner_table"] = "";
|
||||
$lang["config_dinner_table_duplicate"] = "";
|
||||
$lang["config_dinner_table_enable"] = "";
|
||||
$lang["config_dinner_table_invalid_chars"] = "";
|
||||
$lang["config_dinner_table_required"] = "";
|
||||
$lang["config_dot"] = "dot";
|
||||
$lang["config_email"] = "Email";
|
||||
$lang["config_email_configuration"] = "Email Configuration";
|
||||
$lang["config_email_protocol"] = "Protocol";
|
||||
$lang["config_email_mailpath"] = "Path to Sendmail";
|
||||
$lang["config_email_smtp_host"] = "SMTP Server";
|
||||
$lang["config_email_smtp_port"] = "SMTP Port";
|
||||
$lang["config_email_protocol"] = "Protocol";
|
||||
$lang["config_email_smtp_crypto"] = "SMTP Encryption";
|
||||
$lang["config_email_smtp_host"] = "SMTP Server";
|
||||
$lang["config_email_smtp_pass"] = "SMTP Password";
|
||||
$lang["config_email_smtp_port"] = "SMTP Port";
|
||||
$lang["config_email_smtp_timeout"] = "SMTP Timeout (s)";
|
||||
$lang["config_email_smtp_user"] = "SMTP Username";
|
||||
$lang["config_email_smtp_pass"] = "SMTP Password";
|
||||
$lang["config_fax"] = "Fax";
|
||||
$lang["config_financial_year"] = "";
|
||||
$lang["config_financial_year_apr"] = "";
|
||||
$lang["config_financial_year_aug"] = "";
|
||||
$lang["config_financial_year_dec"] = "";
|
||||
$lang["config_financial_year_feb"] = "";
|
||||
$lang["config_financial_year_jan"] = "";
|
||||
$lang["config_financial_year_jul"] = "";
|
||||
$lang["config_financial_year_jun"] = "";
|
||||
$lang["config_financial_year_mar"] = "";
|
||||
$lang["config_financial_year_may"] = "";
|
||||
$lang["config_financial_year_nov"] = "";
|
||||
$lang["config_financial_year_oct"] = "";
|
||||
$lang["config_financial_year_sep"] = "";
|
||||
$lang["config_gcaptcha_enable"] = "";
|
||||
$lang["config_gcaptcha_secret_key"] = "";
|
||||
$lang["config_gcaptcha_secret_key_required"] = "";
|
||||
$lang["config_gcaptcha_site_key"] = "";
|
||||
$lang["config_gcaptcha_site_key_required"] = "";
|
||||
$lang["config_gcaptcha_tooltip"] = "";
|
||||
$lang["config_general"] = "Einstellungen";
|
||||
$lang["config_general_configuration"] = "Einstellungen";
|
||||
$lang["config_giftcard_number"] = "";
|
||||
$lang["config_giftcard_random"] = "";
|
||||
$lang["config_giftcard_series"] = "";
|
||||
$lang["config_info"] = "Instellungen";
|
||||
$lang["config_info_configuration"] = "Instellungen";
|
||||
$lang["config_invoice"] = "Rechnungs";
|
||||
$lang["config_invoice_configuration"] = "Druckereinstellungen";
|
||||
$lang["config_invoice_default_comments"] = "Rechnungskommentar";
|
||||
$lang["config_invoice_enable"] = "Enable Invoicing";
|
||||
$lang["config_invoice_email_message"] = "Rechnungsvorlage (Email)";
|
||||
$lang["config_invoice_enable"] = "Enable Invoicing";
|
||||
$lang["config_invoice_printer"] = "Rechnungsdrucker";
|
||||
$lang["config_jsprintsetup_required"] = "Warnung! Diese Funktion ist nur funktionsfähig";
|
||||
$lang["config_language"] = "Sprache";
|
||||
$lang["config_last_used_invoice_number"] = "";
|
||||
$lang["config_last_used_quote_number"] = "";
|
||||
$lang["config_left"] = "Left";
|
||||
$lang["config_license"] = "License";
|
||||
$lang["config_license_configuration"] = "License Statement";
|
||||
$lang["config_line_sequence"] = "";
|
||||
$lang["config_lines_per_page"] = "Zeilen pro Seite";
|
||||
$lang["config_lines_per_page_number"] = "Zeilen pro Seite muss eine Zahl sein";
|
||||
$lang["config_lines_per_page_required"] = "Zeilen pro Seite ist erforderlich";
|
||||
@@ -113,19 +156,30 @@ $lang["config_location"] = "Lagerort";
|
||||
$lang["config_location_configuration"] = "Lagerort";
|
||||
$lang["config_location_info"] = "Lagerort-Information";
|
||||
$lang["config_logout"] = "Wollen Sie eine Sicherung machen vor dem Beenden? Klicke [OK] für Sicherung";
|
||||
$lang["config_mailchimp"] = "";
|
||||
$lang["config_mailchimp_api_key"] = "";
|
||||
$lang["config_mailchimp_configuration"] = "";
|
||||
$lang["config_mailchimp_key_successfully"] = "";
|
||||
$lang["config_mailchimp_key_unsuccessfully"] = "";
|
||||
$lang["config_mailchimp_lists"] = "";
|
||||
$lang["config_mailchimp_tooltip"] = "";
|
||||
$lang["config_message"] = "Message";
|
||||
$lang["config_message_configuration"] = "Message Configuration";
|
||||
$lang["config_msg_msg"] = "Saved Text Message";
|
||||
$lang["config_msg_msg_placeholder"] = "If you wish to use a SMS template save your message here. Otherwise leave the box blank.";
|
||||
$lang["config_msg_uid"] = "SMS-API Username";
|
||||
$lang["config_msg_uid_required"] = "SMS-API Username is a required field";
|
||||
$lang["config_msg_pwd"] = "SMS-API Password";
|
||||
$lang["config_msg_pwd_required"] = "SMS-API Password is a required field";
|
||||
$lang["config_msg_src"] = "SMS-API Sender ID";
|
||||
$lang["config_msg_src_required"] = "SMS-API Sender ID is a required field";
|
||||
$lang["config_msg_uid"] = "SMS-API Username";
|
||||
$lang["config_msg_uid_required"] = "SMS-API Username is a required field";
|
||||
$lang["config_none"] = "none";
|
||||
$lang["config_notify_alignment"] = "Notification Popup Position";
|
||||
$lang["config_number_format"] = "Zahlenformat";
|
||||
$lang["config_number_locale"] = "Länderkonfiguration";
|
||||
$lang["config_number_locale_invalid"] = "Die eingegebene Lokale ist falsch. Bitte sehen Sie sich den Link tim Tooltip an um einen korrekten Wert zu finden";
|
||||
$lang["config_number_locale_required"] = "Localennummer ist ein Pflichtfeld";
|
||||
$lang["config_number_locale_tooltip"] = "Finden Sie eine korrekte Lokale über diesen Link";
|
||||
$lang["config_payment_options_order"] = "Payment Options Order";
|
||||
$lang["config_phone"] = "Telefon";
|
||||
$lang["config_phone_required"] = "Telefon ist erforderlich";
|
||||
@@ -147,20 +201,28 @@ $lang["config_print_top_margin_required"] = "Rand oben ist erforderlich";
|
||||
$lang["config_quantity_decimals"] = "Quantity Decimals";
|
||||
$lang["config_receipt"] = "Eingang";
|
||||
$lang["config_receipt_configuration"] = "Druckereinstellungen";
|
||||
$lang["config_receipt_default"] = "Default";
|
||||
$lang["config_receipt_font_size"] = "";
|
||||
$lang["config_receipt_font_size_number"] = "";
|
||||
$lang["config_receipt_font_size_required"] = "";
|
||||
$lang["config_receipt_info"] = "Quittungsinformation";
|
||||
$lang["config_receipt_printer"] = "Quittungsdrucker";
|
||||
$lang["config_receipt_show_taxes"] = "Zeige MWSt";
|
||||
$lang["config_receipt_show_total_discount"] = "Zeige Gesamtrabatt";
|
||||
$lang["config_receipt_short"] = "Short";
|
||||
$lang["config_receipt_show_company_name"] = "";
|
||||
$lang["config_receipt_show_description"] = "Show Description";
|
||||
$lang["config_receipt_show_serialnumber"] = "Show Serial Number";
|
||||
$lang["config_receipt_show_taxes"] = "Zeige MWSt";
|
||||
$lang["config_receipt_show_total_discount"] = "Zeige Gesamtrabatt";
|
||||
$lang["config_receipt_template"] = "Receipt Template";
|
||||
$lang["config_receipt_default"] = "Default";
|
||||
$lang["config_receipt_short"] = "Short";
|
||||
$lang["config_receiving_calculate_average_price"] = "Berechne Durchschnittseinkaufspreis";
|
||||
$lang["config_recv_invoice_format"] = "Format Eingangsrechnung";
|
||||
$lang["config_register_mode_default"] = "";
|
||||
$lang["config_return_policy_required"] = "Rücknahmepolitik erforderlich";
|
||||
$lang["config_reward"] = "";
|
||||
$lang["config_reward_configuration"] = "";
|
||||
$lang["config_right"] = "Right";
|
||||
$lang["config_sales_invoice_format"] = "Format Verkaufsrechnung";
|
||||
$lang["config_sales_quote_format"] = "";
|
||||
$lang["config_saved_successfully"] = "Einstellungen erfolgreich gesichert";
|
||||
$lang["config_saved_unsuccessfully"] = "Einstellungen konnten nicht gesichert werden";
|
||||
$lang["config_statistics"] = "Send statistics";
|
||||
@@ -169,16 +231,17 @@ $lang["config_stock_location"] = "Lagerort";
|
||||
$lang["config_stock_location_duplicate"] = "Bitte verwenden Sie einen eindeutigen Lagerort";
|
||||
$lang["config_stock_location_invalid_chars"] = "Der Lagerort kann keine Unterstriche enthalten";
|
||||
$lang["config_stock_location_required"] = "Lagerort Nummer ist erforderlich";
|
||||
$lang["config_table"] = "";
|
||||
$lang["config_table_configuration"] = "";
|
||||
$lang["config_takings_printer"] = "Takings Printer";
|
||||
$lang["config_tax"] = "";
|
||||
$lang["config_tax_category"] = "";
|
||||
$lang["config_tax_category_used"] = "";
|
||||
$lang["config_tax_configuration"] = "";
|
||||
$lang["config_tax_decimals"] = "Tax Decimals";
|
||||
$lang["config_tax_included"] = "MWSt inbegriffen";
|
||||
$lang["config_theme"] = "Design";
|
||||
$lang["config_thousands_separator"] = "Tausendertrennzeichen";
|
||||
$lang["config_timezone"] = "Zeitzone";
|
||||
$lang["config_top"] = "Top";
|
||||
$lang["config_website"] = "Website";
|
||||
$lang["config_number_locale"] = "Länderkonfiguration";
|
||||
$lang["config_return_policy_required"] = "Rücknahmepolitik erforderlich";
|
||||
$lang["config_number_locale_required"] = "Localennummer ist ein Pflichtfeld";
|
||||
$lang["config_number_locale_invalid"] = "Die eingegebene Lokale ist falsch. Bitte sehen Sie sich den Link tim Tooltip an um einen korrekten Wert zu finden";
|
||||
$lang["config_number_locale_tooltip"] = "Finden Sie eine korrekte Lokale über diesen Link";
|
||||
$lang["config_theme"] = "Design";
|
||||
|
||||
@@ -2,23 +2,44 @@
|
||||
|
||||
$lang["customers_account_number"] = "Konto-Nr.";
|
||||
$lang["customers_account_number_duplicate"] = "Diese Konto-Nr. existiert bereits";
|
||||
$lang["customers_available_points"] = "";
|
||||
$lang["customers_average"] = "";
|
||||
$lang["customers_avg_discount"] = "";
|
||||
$lang["customers_basic_information"] = "";
|
||||
$lang["customers_cannot_be_deleted"] = "Kunde kann nicht gelöscht werden, ein oder mehrere Kunden weisen Verkäufe auf";
|
||||
$lang["customers_company_name"] = "Firmenname";
|
||||
$lang["customers_confirm_delete"] = "Wollen Sie die gewählten Kunden wirklich löschen?";
|
||||
$lang["customers_customer"] = "Kunde";
|
||||
$lang["customers_discount"] = "Discount";
|
||||
$lang["customers_email_duplicate"] = "";
|
||||
$lang["customers_error_adding_updating"] = "Fehler beim Hinzufügen/Ändern";
|
||||
$lang["customers_excel_import_failed"] = "Excel Import fehlerhaft";
|
||||
$lang["customers_excel_import_nodata_wrongformat"] = "Your uploaded file has no data or wrong format";
|
||||
$lang["customers_excel_import_partially_failed"] = "Most Customers imported. But some were not, here is the list";
|
||||
$lang["customers_excel_import_success"] = "Import of Customers successful";
|
||||
$lang["customers_import_items_excel"] = "Importiere Kunden via Excel";
|
||||
$lang["customers_mailchimp_activity_click"] = "";
|
||||
$lang["customers_mailchimp_activity_lastopen"] = "";
|
||||
$lang["customers_mailchimp_activity_open"] = "";
|
||||
$lang["customers_mailchimp_activity_total"] = "";
|
||||
$lang["customers_mailchimp_activity_unopen"] = "";
|
||||
$lang["customers_mailchimp_email_client"] = "";
|
||||
$lang["customers_mailchimp_info"] = "";
|
||||
$lang["customers_mailchimp_member_rating"] = "";
|
||||
$lang["customers_mailchimp_status"] = "";
|
||||
$lang["customers_mailchimp_vip"] = "";
|
||||
$lang["customers_max"] = "";
|
||||
$lang["customers_min"] = "";
|
||||
$lang["customers_new"] = "Neuer Kunde";
|
||||
$lang["customers_none_selected"] = "Sie haben keinen Kunde zum Löschen gewählt";
|
||||
$lang["customers_one_or_multiple"] = "Kunde(n)";
|
||||
$lang["customers_quantity"] = "";
|
||||
$lang["customers_stats_info"] = "";
|
||||
$lang["customers_successful_adding"] = "Kunde erfolgreich hinzugefügt";
|
||||
$lang["customers_successful_deleted"] = "Löschung erfolgreich";
|
||||
$lang["customers_successful_updating"] = "Änderung erfolgreich";
|
||||
$lang["customers_tax_code"] = "";
|
||||
$lang["customers_taxable"] = "Steuerpflichtig";
|
||||
$lang["customers_total"] = "Total";
|
||||
$lang["customers_update"] = "Kunde ändern";
|
||||
$lang["customers_import_items_excel"] = "Importiere Kunden via Excel";
|
||||
$lang["customers_excel_import_failed"] = "Excel Import fehlerhaft";
|
||||
$lang["customers_excel_import_nodata_wrongformat"] = "Your uploaded file has no data or wrong format";
|
||||
$lang["customers_excel_import_success"] = "Import of Customers successful";
|
||||
$lang["customers_excel_import_partially_failed"] = "Most Customers imported. But some were not, here is the list";
|
||||
$lang["rewards_package"] = "";
|
||||
|
||||
@@ -1,21 +1,22 @@
|
||||
<?php
|
||||
|
||||
$lang["datepicker_today"] = "Heute";
|
||||
$lang["datepicker_weekstart"] = "1";
|
||||
$lang["datepicker_all_time"] = "Von Beginn weg";
|
||||
$lang["datepicker_last_7"] = "Letzte 7 Tage";
|
||||
$lang["datepicker_last_30"] = "Letzte 30 Tage";
|
||||
$lang["datepicker_last_month"] = "Letzter Monat";
|
||||
$lang["datepicker_last_year"] = "Letztes Jahr";
|
||||
$lang["datepicker_this_month"] = "Dieser Monat";
|
||||
$lang["datepicker_this_month_last_year"] = "Dieser Monat letzten Jahres";
|
||||
$lang["datepicker_same_month_to_today"] = "Dieser Monat bis heute";
|
||||
$lang["datepicker_same_month_to_same_day_last_year"] = "Dieser Monat bis Heute letzten Jahres";
|
||||
$lang["datepicker_this_year"] = "Dieses Jahr";
|
||||
$lang["datepicker_today_last_year"] = "Heute letzten Jahres";
|
||||
$lang["datepicker_yesterday"] = "Gestern";
|
||||
$lang["datepicker_apply"] = "Apply";
|
||||
$lang["datepicker_cancel"] = "Cancel";
|
||||
$lang["datepicker_from"] = "From";
|
||||
$lang["datepicker_to"] = "To";
|
||||
$lang["datepicker_custom"] = "Custom";
|
||||
$lang["datepicker_from"] = "From";
|
||||
$lang["datepicker_last_30"] = "Letzte 30 Tage";
|
||||
$lang["datepicker_last_7"] = "Letzte 7 Tage";
|
||||
$lang["datepicker_last_financial_year"] = "";
|
||||
$lang["datepicker_last_month"] = "Letzter Monat";
|
||||
$lang["datepicker_last_year"] = "Letztes Jahr";
|
||||
$lang["datepicker_same_month_last_year"] = "Dieser Monat letzten Jahres";
|
||||
$lang["datepicker_same_month_to_same_day_last_year"] = "Dieser Monat bis Heute letzten Jahres";
|
||||
$lang["datepicker_this_financial_year"] = "";
|
||||
$lang["datepicker_this_month"] = "Dieser Monat";
|
||||
$lang["datepicker_this_year"] = "Dieses Jahr";
|
||||
$lang["datepicker_to"] = "To";
|
||||
$lang["datepicker_today"] = "Heute";
|
||||
$lang["datepicker_today_last_year"] = "Heute letzten Jahres";
|
||||
$lang["datepicker_weekstart"] = "1";
|
||||
$lang["datepicker_yesterday"] = "Gestern";
|
||||
|
||||
@@ -2,7 +2,10 @@
|
||||
|
||||
$lang["employees_basic_information"] = "Mitarbeiter-Information";
|
||||
$lang["employees_cannot_be_deleted"] = "Konnte gewählten Mitarbeiter nicht löschen, einer oder mehrere weisen Verkäufe aus.";
|
||||
$lang["employees_change_password"] = "";
|
||||
$lang["employees_confirm_delete"] = "Wollen Sie diesen Mitarbeiter wirklich löschen?";
|
||||
$lang["employees_current_password"] = "";
|
||||
$lang["employees_current_password_invalid"] = "";
|
||||
$lang["employees_employee"] = "Mitarbeiter";
|
||||
$lang["employees_error_adding_updating"] = "Fehler beim Hinzufügen/Ändern";
|
||||
$lang["employees_error_deleting_demo_admin"] = "Sie können den Admin nicht löschen";
|
||||
@@ -14,15 +17,18 @@ $lang["employees_one_or_multiple"] = "Mitarbeiter";
|
||||
$lang["employees_password"] = "Passwort";
|
||||
$lang["employees_password_minlength"] = "Passwort muss mindestens 8 Zeichen lang sein";
|
||||
$lang["employees_password_must_match"] = "Passwörter passen nicht überein";
|
||||
$lang["employees_password_not_must_match"] = "";
|
||||
$lang["employees_password_required"] = "Passwort ist erforderlich";
|
||||
$lang["employees_permission_desc"] = "Klicken Sie unten, um die jeweiligen Zugangsrechte zu aktivieren";
|
||||
$lang["employees_permission_info"] = "Mitarbeiter Zugangsrechte";
|
||||
$lang["employees_repeat_password"] = "Wiederhole Passwort";
|
||||
$lang["employees_subpermission_required"] = "Fügen Sie mindestens ein Zugangsrecht pro Modul hinzu";
|
||||
$lang["employees_successful_adding"] = "Hinzufügen erfolgreich";
|
||||
$lang["employees_successful_change_password"] = "";
|
||||
$lang["employees_successful_deleted"] = "Löschung erfolgreich";
|
||||
$lang["employees_successful_updating"] = "Änderung erfolgreich";
|
||||
$lang["employees_unsuccessful_change_password"] = "";
|
||||
$lang["employees_update"] = "Mitarbeiter ändern";
|
||||
$lang["employees_username"] = "Benutzername";
|
||||
$lang["employees_username_minlength"] = "Benutzername muss mindestens 5 Zeichen lang sein";
|
||||
$lang["employees_username_required"] = "Benutzername ist erforderlich";
|
||||
$lang["employees_subpermission_required"] = "Fügen Sie mindestens ein Zugangsrecht pro Modul hinzu";
|
||||
|
||||
9
application/language/de-CH/enum_lang.php
Normal file
9
application/language/de-CH/enum_lang.php
Normal file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
$lang["enum_half_down"] = "";
|
||||
$lang["enum_half_even"] = "";
|
||||
$lang["enum_half_five"] = "";
|
||||
$lang["enum_half_odd"] = "";
|
||||
$lang["enum_half_up"] = "";
|
||||
$lang["enum_round_down"] = "";
|
||||
$lang["enum_round_up"] = "";
|
||||
18
application/language/de-CH/form_validation_lang.php
Normal file
18
application/language/de-CH/form_validation_lang.php
Normal file
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
$lang["alpha_dash"] = "";
|
||||
$lang["alpha_numeric"] = "";
|
||||
$lang["exact_length"] = "";
|
||||
$lang["greater_than"] = "";
|
||||
$lang["is_natural"] = "";
|
||||
$lang["is_natural_no_zero"] = "";
|
||||
$lang["is_numeric"] = "";
|
||||
$lang["is_unique"] = "";
|
||||
$lang["less_than"] = "";
|
||||
$lang["max_length"] = "";
|
||||
$lang["min_length"] = "";
|
||||
$lang["regex_match"] = "";
|
||||
$lang["valid_email"] = "";
|
||||
$lang["valid_emails"] = "";
|
||||
$lang["valid_ip"] = "";
|
||||
$lang["valid_url"] = "";
|
||||
@@ -3,10 +3,10 @@
|
||||
$lang["giftcards_add_minus"] = "Bestandsänderung";
|
||||
$lang["giftcards_allow_alt_description"] = "Erlaube Alternative Bezeichnung";
|
||||
$lang["giftcards_amazon"] = "Amazon";
|
||||
$lang["giftcards_remaining_balance"] = "Restwert von Gutschein %1 ist %2!";
|
||||
$lang["giftcards_bulk_edit"] = "Sammeländerung";
|
||||
$lang["giftcards_cannot_be_deleted"] = "Konnte gewählte Gutscheine nicht löschen, einer oder mehrere weisen Verkäufe auf";
|
||||
$lang["giftcards_cannot_find_giftcard"] = "Konnte keinen Gutschein finden";
|
||||
$lang["giftcards_cannot_use"] = "Giftcard %1 cannot be used for this sale. Invalid Customer!";
|
||||
$lang["giftcards_card_value"] = "Wert";
|
||||
$lang["giftcards_category"] = "Kategorie";
|
||||
$lang["giftcards_change_all_to_allow_alt_desc"] = "Erlaube Alt. Bez. für ALLE";
|
||||
@@ -47,6 +47,7 @@ $lang["giftcards_one_or_multiple"] = "Gutschein(e)";
|
||||
$lang["giftcards_person_id"] = "Kunde";
|
||||
$lang["giftcards_quantity"] = "Menge";
|
||||
$lang["giftcards_quantity_required"] = "Menge ist erforderlich";
|
||||
$lang["giftcards_remaining_balance"] = "Restwert von Gutschein %1 ist %2!";
|
||||
$lang["giftcards_reorder_level"] = "Mindestbestand";
|
||||
$lang["giftcards_retrive_giftcard_info"] = "Gutschein Information";
|
||||
$lang["giftcards_sales_tax_1"] = "Umsatzsteuer 1";
|
||||
|
||||
@@ -1,20 +1,30 @@
|
||||
<?php
|
||||
|
||||
$lang["item_kits_add_item"] = "Neuer Artikel";
|
||||
$lang["item_kits_all"] = "";
|
||||
$lang["item_kits_cannot_be_deleted"] = "Konnte Artikel-Set(s) nicht löschen";
|
||||
$lang["item_kits_confirm_delete"] = "Wollen Sie die gewählten Artikel-Sets wirklich löschen?";
|
||||
$lang["item_kits_description"] = "Beschreibung Artikel-Set";
|
||||
$lang["item_kits_discount_percent"] = "";
|
||||
$lang["item_kits_error_adding_updating"] = "Fehler beim Hinzufügen/Ändern";
|
||||
$lang["item_kits_find_kit_item"] = "";
|
||||
$lang["item_kits_info"] = "Artikel-Set Information";
|
||||
$lang["item_kits_item"] = "Artikel";
|
||||
$lang["item_kits_items"] = "Artikel";
|
||||
$lang["item_kits_kit"] = "Set-ID";
|
||||
$lang["item_kits_kit_and_components"] = "";
|
||||
$lang["item_kits_kit_and_stock"] = "";
|
||||
$lang["item_kits_kit_only"] = "";
|
||||
$lang["item_kits_name"] = "Name";
|
||||
$lang["item_kits_new"] = "Neues Artikel-Set";
|
||||
$lang["item_kits_no_item_kits_to_display"] = "Keine Artikel-Sets zum Anzeigen";
|
||||
$lang["item_kits_none_selected"] = "Sie haben keine Artikel-Sets ausgewählt";
|
||||
$lang["item_kits_one_or_multiple"] = "Artikel-Set(s)";
|
||||
$lang["item_kits_price_option"] = "";
|
||||
$lang["item_kits_priced_only"] = "";
|
||||
$lang["item_kits_print_option"] = "";
|
||||
$lang["item_kits_quantity"] = "Menge";
|
||||
$lang["item_kits_sequence"] = "";
|
||||
$lang["item_kits_successful_adding"] = "Artikel-Set erfolgreich hinzugefügt";
|
||||
$lang["item_kits_successful_deleted"] = "Löschung erfolgreich";
|
||||
$lang["item_kits_successful_updating"] = "Änderung erfolgreich";
|
||||
|
||||
@@ -14,6 +14,7 @@ $lang["items_change_all_to_allow_alt_desc"] = "Ändere alle zu Erlaube Alt. Bez.
|
||||
$lang["items_change_all_to_not_allow_allow_desc"] = "Ändere alle zu NICHT Erlaube Alt. Bez.";
|
||||
$lang["items_change_all_to_serialized"] = "Ändere alle zu serialisiert";
|
||||
$lang["items_change_all_to_unserialized"] = "Ändere alle zu nicht serialisiert";
|
||||
$lang["items_change_image"] = "Change Image";
|
||||
$lang["items_confirm_bulk_edit"] = "Wollen Sie alle gewählten Artikel ändern?";
|
||||
$lang["items_confirm_bulk_edit_wipe_taxes"] = "All item tax information will be replaced!";
|
||||
$lang["items_confirm_delete"] = "Wollen Sie alle gewählten Artikel löschen?";
|
||||
@@ -27,24 +28,31 @@ $lang["items_details_count"] = "Lagerbestandsdetails";
|
||||
$lang["items_do_nothing"] = "Tue nichts";
|
||||
$lang["items_edit_fields_you_want_to_update"] = "Ändern Sie die Felder für ALLE gewählten Artikel?";
|
||||
$lang["items_edit_multiple_items"] = "Sammeländerung";
|
||||
$lang["items_empty_upc_items"] = "Leere UPC Artikel";
|
||||
$lang["items_error_adding_updating"] = "Fehler beim Hinzufügen/Ändern";
|
||||
$lang["items_error_updating_multiple"] = "Fehler beim Ändern";
|
||||
$lang["items_excel_import_failed"] = "Excel Import fehlerhaft";
|
||||
$lang["items_excel_import_nodata_wrongformat"] = "Your uploaded file has no data or wrong format";
|
||||
$lang["items_excel_import_success"] = "Import of Items successful";
|
||||
$lang["items_excel_import_partially_failed"] = "Most Items imported. But some were not, here is the list";
|
||||
$lang["items_excel_import_success"] = "Import of Items successful";
|
||||
$lang["items_generate_barcodes"] = "Generiere Barcodes";
|
||||
$lang["items_image"] = "Bild";
|
||||
$lang["items_import_items_excel"] = "Importiere Artikel mit Excel Datei";
|
||||
$lang["items_info_provided_by"] = "Info provided by";
|
||||
$lang["items_inventory"] = "Lagerbestand";
|
||||
$lang["items_inventory_comments"] = "Bemerkungen";
|
||||
$lang["items_inventory_data_tracking"] = "";
|
||||
$lang["items_inventory_date"] = "";
|
||||
$lang["items_inventory_employee"] = "";
|
||||
$lang["items_inventory_in_out_quantity"] = "";
|
||||
$lang["items_inventory_remarks"] = "";
|
||||
$lang["items_is_deleted"] = "Gelöscht";
|
||||
$lang["items_is_serialized"] = "Artikel hat Serien-Nr.";
|
||||
$lang["items_item"] = "Artikel";
|
||||
$lang["items_item_number"] = "UPC/EAN/ISBN";
|
||||
$lang["items_item_number_duplicate"] = "Die Artikelnummer existiert bereits in der Datenbank";
|
||||
$lang["items_kit"] = "";
|
||||
$lang["items_location"] = "Ort";
|
||||
$lang["items_empty_upc_items"] = "Leere UPC Artikel";
|
||||
$lang["items_low_inventory_items"] = "nicht am Lager";
|
||||
$lang["items_manually_editing_of_quantity"] = "Manuelle Bestandesänderung";
|
||||
$lang["items_name"] = "Artikelname";
|
||||
@@ -54,6 +62,7 @@ $lang["items_no_description_items"] = "Artikel ohne Bezeichnung";
|
||||
$lang["items_no_items_to_display"] = "Keine Artikel zum Anzeigen";
|
||||
$lang["items_none"] = "Nichts";
|
||||
$lang["items_none_selected"] = "Sie haben keine Artikel zum Ändern gewählt";
|
||||
$lang["items_nonstock"] = "";
|
||||
$lang["items_number_information"] = "Artikelnummer";
|
||||
$lang["items_number_required"] = "UPC/EAN/ISBN ist erforderlich";
|
||||
$lang["items_one_or_multiple"] = "Artikel";
|
||||
@@ -61,15 +70,21 @@ $lang["items_quantity"] = "Menge";
|
||||
$lang["items_quantity_number"] = "Menge muss eine Zahl sein";
|
||||
$lang["items_quantity_required"] = "Menge ist erforderlich";
|
||||
$lang["items_receiving_quantity"] = "Eingangsmenge";
|
||||
$lang["items_remove_image"] = "Remove Image";
|
||||
$lang["items_reorder_level"] = "Mindestbestand";
|
||||
$lang["items_reorder_level_number"] = "Mindestbestand muss eine Zahl sein";
|
||||
$lang["items_reorder_level_required"] = "Mindestbestand ist erforderlich";
|
||||
$lang["items_retrive_item_info"] = "Artikelinformation";
|
||||
$lang["items_sales_tax_1"] = "Umsatzsteuer 1";
|
||||
$lang["items_sales_tax_2"] = "Umsatzsteuer 2";
|
||||
$lang["items_search_custom_items"] = "Suche in Zusatzfeldern";
|
||||
$lang["items_search_attributes"] = "Suche in Zusatzfeldern";
|
||||
$lang["items_search_custom_items"] = "";
|
||||
$lang["items_select_image"] = "Select Image";
|
||||
$lang["items_serialized_items"] = "Serialisierte Artikel";
|
||||
$lang["items_standard"] = "";
|
||||
$lang["items_stock"] = "";
|
||||
$lang["items_stock_location"] = "Lagerort";
|
||||
$lang["items_stock_type"] = "";
|
||||
$lang["items_successful_adding"] = "Artikel erfolgreich hinzugefügt";
|
||||
$lang["items_successful_bulk_edit"] = "Die gewählten Artikel wurden erforlgreich geändert";
|
||||
$lang["items_successful_deleted"] = "Löschung erfolgreich";
|
||||
@@ -80,13 +95,10 @@ $lang["items_tax_2"] = "MWSt 2";
|
||||
$lang["items_tax_percent"] = "MWSt %";
|
||||
$lang["items_tax_percent_required"] = "MWSt % ist erforderlich";
|
||||
$lang["items_tax_percents"] = "Steuerprozent(e)";
|
||||
$lang["items_type"] = "";
|
||||
$lang["items_unit_price"] = "Preis";
|
||||
$lang["items_unit_price_number"] = "Preis muss eine Zahl sein";
|
||||
$lang["items_unit_price_required"] = "Preis ist erforderlich";
|
||||
$lang["items_upc_database"] = "UPC Datenbank";
|
||||
$lang["items_update"] = "Ändere Artikel";
|
||||
$lang["items_use_inventory_menu"] = "Verwende Bestandesmenu";
|
||||
$lang["items_import_items_excel"] = "Importiere Artikel mit Excel Datei";
|
||||
$lang["items_select_image"] = "Select Image";
|
||||
$lang["items_change_image"] = "Change Image";
|
||||
$lang["items_remove_image"] = "Remove Image";
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
<?php
|
||||
|
||||
$lang["login_gcaptcha"] = "";
|
||||
$lang["login_go"] = "Start";
|
||||
$lang["login_invalid_gcaptcha"] = "";
|
||||
$lang["login_invalid_installation"] = "";
|
||||
$lang["login_invalid_username_and_password"] = "Ungültiger Benutzername/Passwort";
|
||||
$lang["login_login"] = "Login";
|
||||
$lang["login_password"] = "Passwort";
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
<?php
|
||||
|
||||
$lang["messages_sms_send"] = "Send SMS";
|
||||
$lang["messages_first_name"] = "First name";
|
||||
$lang["messages_last_name"] = "Last name";
|
||||
$lang["messages_phone"] = "Phone number";
|
||||
$lang["messages_phone_placeholder"] = "Mobile Number(s) here...";
|
||||
$lang["messages_phone_number_required"] = "Phone number required";
|
||||
$lang["messages_message"] = "Message";
|
||||
$lang["messages_message_placeholder"] = "Your Message here...";
|
||||
$lang["messages_message_required"] = "Message required";
|
||||
$lang["messages_multiple_phones"] = "(In case of multiple recipients, enter mobile numbers separated by commas)";
|
||||
$lang["messages_phone"] = "Phone number";
|
||||
$lang["messages_phone_number_required"] = "Phone number required";
|
||||
$lang["messages_phone_placeholder"] = "Mobile Number(s) here...";
|
||||
$lang["messages_sms_send"] = "Send SMS";
|
||||
$lang["messages_successfully_sent"] = "Message successfully sent to: ";
|
||||
$lang["messages_unsuccessfully_sent"] = "Message unsuccessfully sent to: ";
|
||||
|
||||
7
application/language/de-CH/migrate_lang.php
Normal file
7
application/language/de-CH/migrate_lang.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
$lang["migrate_backup"] = "";
|
||||
$lang["migrate_failed"] = "";
|
||||
$lang["migrate_info"] = "";
|
||||
$lang["migrate_start"] = "";
|
||||
$lang["migrate_success"] = "";
|
||||
@@ -13,6 +13,10 @@ $lang["module_item_kits"] = "Artikel-Sets";
|
||||
$lang["module_item_kits_desc"] = "Hinzufügen, Ändern, Löschen und Suchen";
|
||||
$lang["module_items"] = "Artikel";
|
||||
$lang["module_items_desc"] = "Hinzufügen, Ändern, Löschen und Suchen";
|
||||
$lang["module_messages"] = "Messages";
|
||||
$lang["module_messages_desc"] = "Send Messages to Customers, Suppliers, Employees et al.";
|
||||
$lang["module_migrate"] = "";
|
||||
$lang["module_migrate_desc"] = "";
|
||||
$lang["module_receivings"] = "Eingänge";
|
||||
$lang["module_receivings_desc"] = "Hinzufügen, Ändern, Löschen und Suchen";
|
||||
$lang["module_reports"] = "Berichte";
|
||||
@@ -21,5 +25,5 @@ $lang["module_sales"] = "Verkauf";
|
||||
$lang["module_sales_desc"] = "Hinzufügen, Ändern, Löschen und Suchen";
|
||||
$lang["module_suppliers"] = "Lieferanten";
|
||||
$lang["module_suppliers_desc"] = "Hinzufügen, Ändern, Löschen und Suchen";
|
||||
$lang["module_messages"] = "Messages";
|
||||
$lang["module_messages_desc"] = "Send Messages to Customers, Suppliers, Employees et al.";
|
||||
$lang["module_taxes"] = "";
|
||||
$lang["module_taxes_desc"] = "";
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user